diff --git a/media/css/base.css b/media/css/base.css new file mode 100644 index 0000000000..2a91c1d6f3 --- /dev/null +++ b/media/css/base.css @@ -0,0 +1,3 @@ +@import url('global.css'); +@import url('changelists.css'); + diff --git a/media/css/changelists.css b/media/css/changelists.css new file mode 100644 index 0000000000..197b5b66d2 --- /dev/null +++ b/media/css/changelists.css @@ -0,0 +1,59 @@ +/* + ______________________________ + WORLD ONLINE PUBLISHING SYSTEM + Admin Changelist Styles + + Extends global.css + + by World Online, Copyright 2004 + + 645 New Hampshire + Lawrence, KS 66044 + + webmaster@ljworld.com + +*/ + +#changelist {position:relative; width:100%;} +#changelist table {width:100%;} +.change-list .filtered table { border-right:1px solid #ddd; } +.change-list .filtered {min-height:400px; _height:400px;} +.change-list .filtered {background:white url(../img/admin/changelist-bg.gif) top right repeat-y !important;} +.change-list .filtered table, .filtered .paginator, .filtered #toolbar, .filtered div.xfull {margin-right:160px !important; width:auto !important; } +.change-list .filtered table tbody th {padding-right:10px;} +#changelist .toplinks {border-bottom:1px solid #ccc !important;} +#changelist .paginator { color:#666; border-top:1px solid #eee; border-bottom:1px solid #eee; background:white url(../img/admin/nav-bg.gif) 0 180% repeat-x; overflow:hidden;} +.change-list .filtered .paginator { border-right:1px solid #ddd; } + +/* CHANGELIST TABLES */ + +#changelist table thead th {white-space:nowrap;} +#changelist table tbody td {border-left: 1px solid #ddd;} +#changelist table tfoot {color: #666;} + +/* TOOLBAR */ + +#changelist #toolbar {padding:3px; border-bottom:1px solid #ddd; background:#e1e1e1 url(../img/admin/nav-bg.gif) top left repeat-x; color:#666;} +#changelist #toolbar form input {font-size:11px; padding:1px 2px;} +#changelist #toolbar form #searchbar {padding:2px;} +#changelist #changelist-search img {vertical-align:middle;} + +/* FILTER COLUMN */ + +#changelist-filter {position:absolute; top:0; right:0; z-index:1000; width:160px; border-left:1px solid #ddd; background:#efefef; margin:0;} +#changelist-filter h2 {font-size:11px; padding:2px 5px; border-bottom:1px solid #ddd;} +#changelist-filter h3 {font-size:12px; margin-bottom:0;} +#changelist-filter ul {padding-left:0;margin-left:10px;_margin-right:-10px;} +#changelist-filter li {list-style-type:none; margin-left:0; padding-left:0;} +#changelist-filter a {color:#999;} +#changelist-filter a:hover {color:#036;} +#changelist-filter li.selected {border-left:5px solid #ccc; padding-left:5px;margin-left:-10px;} +#changelist-filter li.selected a {color:#5b80b2 !important;} + +/* DATE DRILLDOWN */ + +.change-list ul.toplinks {display:block; background:white url(../img/admin/nav-bg-reverse.gif) 0 -10px repeat-x; border-top:1px solid white; float:left; padding:0 !important; margin:0 !important; width:100%;} +.change-list ul.toplinks li {float: left; width: 9em; padding:3px 6px; font-weight: bold; list-style-type:none;} +.change-list ul.toplinks .date-back a {color:#999;} +.change-list ul.toplinks .date-back a:hover {color:#036;} + diff --git a/media/css/global.css b/media/css/global.css new file mode 100644 index 0000000000..4d60bc6b01 --- /dev/null +++ b/media/css/global.css @@ -0,0 +1,398 @@ +/* + ______________________________ + DJANGO + Admin Master Styles + + Extends base.css + + by World Online + Copyright 2004-2005 + + 645 New Hampshire + Lawrence, KS 66044 + + webmaster@ljworld.com + + ______________________________ + SITE DIMENSIONS + + Site Width: 768px + Content Width: 750px + Main Column: 580px + Sidebar: 220px + + ______________________________ + COLORS + + Blue #5b80b2 + Dark Blue #036 + +*/ + +body { margin:0; padding:0; font-family:"Lucida Grande","Bitstream Vera Sans",Verdana,Arial,sans-serif; color:#333; } + +/* LINKS */ + +a:link, a:visited { color: #5b80b2; text-decoration:none; } +a:hover { color: #036; } +a img { border:none; } + +/* GLOBAL DEFAULTS */ + +p, ol, ul, dl { margin:.2em 0 .8em 0; font-size:12px; } +p { padding:0; line-height:140%; } + +h1,h2,h3,h4,h5 { font-weight:bold; } +h1 { font-size:18px; color:#666; padding:0 6px 0 0; margin:0 0 .2em 0; } +h2 { font-size:16px; margin:1em 0 .5em 0; } +h2.subhead { font-weight:normal;margin-top:0; } +h3 { font-size:14px; margin:.8em 0 .3em 0; color:#666; font-weight:bold; } +h4 { font-size:12px; margin:1em 0 .8em 0; padding-bottom:3px; } +h5 { font-size:10px; margin:1.5em 0 .5em 0; color:#666; text-transform:uppercase; letter-spacing:1px; } + +ul li { list-style-type:square; padding:1px 0; } +ul.plainlist { margin-left:0 !important; } +ul.plainlist li { list-style-type:none; } +li ul { margin-bottom:0; } +li, dt, dd { font-size:11px; line-height:14px; } +dt { font-weight:bold; margin-top:4px; } +dd { margin-left:0; } + +form { margin:0; padding:0; } +fieldset { margin:0; padding:0; } + +blockquote { font-size:11px; color:#777; margin-left:2px; padding-left:10px; border-left:5px solid #ddd; } +code, pre { font-family:"Bitstream Vera Sans Mono", Monaco, "Courier New", Courier, monospace; background:inherit; color:#666; font-size:11px; } +pre.literal-block { margin:10px; background:#eee; padding:6px 8px; } +code strong { color:#930; } +hr { clear:both; color:#eee; background-color:#eee; height:1px; border:none; margin:0; padding:0; font-size:1px; line-height:1px; } + +/* PAGE STRUCTURE */ + +#container { position:relative; width:100%; min-width:720px; } +#header { text-align:left; min-height:55px; _height:55px; } +#content { margin:10px 15px; } +#content-main { float:left; } +#content-related { float:right; } +#footer { clear:both; padding:10px; } + +/* COLUMN TYPES */ +/* + colM = Main | M | + colMS = Main, Sidebar | M |S| + colSM = Sidebar, Main |S| M | + flex = single-column, liquid width + superwide = single-column, extra-wide fixed width +*/ +.colMS, .colM, .colSM, .colM #content-main, .colM #content-main .xfull { width:758px; } /* master site width for fixed-width pages */ +.colMS #content-main, .colSM #content-main, .colMS #content-main .xfull, .colSM #content-main .xfull { width:519px; } /* main column width for 2-column pages */ +.colMS #content-related, .colSM #content-related, .colSMS #content-related { width:220px; } /* sidebar column width */ +.colSM #content-related { float:left; } .colSM #content-main { float:right; } /* swaps left and right columns */ +.colSMS #content-main { width:298px; } +.popup .colM { width:95%; } +.popup #content-main, .flex #content-main, .flex .xfull { width:100% !important; } /* main column width for liquid-width pages */ +.popup .flex #content-main, .popup .colM #content-main { width:100% !important; } +.subcol { float:left; width:46%; margin-right:15px; } + +/* WIDTHS */ + +.x50 { width:50px; } +.x75 { width:75px; } +.x100 { width:100px; } +.x150 { width:150px; } +.x200 { width:200px; } +.x250 { width:250px; } +.x300 { width:300px; } +.x400 { width:400px; } +.x500 { width:500px; } + +/* HEADER */ + +#header { background:#417690; color:#ffc; } +#header a:link, #header a:visited { color:white; } +#header a:hover { text-decoration:underline; } +#branding { float:left; width:480px; } +#branding h1 /* client name */ { padding:8px 0 0 10px; margin:0; font-size:18px; font-weight:normal; color:#f4f379; } +#branding h2 /* site name */ { font-size:14px; padding:0 0 8px 10px; margin:0; font-weight:normal; color:#ffc; } +#user-tools { font-size:11px; padding:8px 8px 0 5px; text-align:right; } + + +/* SIDEBAR */ + +#content-related h3 { font-size:12px; color:#666; margin-bottom:3px; } +#content-related h4 { font-size:11px; } + +/* TABLES */ + +table { border-collapse:collapse; border-color:#ccc; } +td, th { font-size:11px; line-height:13px; border-bottom:1px solid #eee; vertical-align:top; padding:5px; font-family:"Lucida Grande", Verdana, Arial, sans-serif; } +th { text-align:left; font-size:12px; } +thead th { font-weight:bold; color:#666; padding:2px 5px; font-size:11px; background:#e1e1e1 url(../img/admin/nav-bg.gif) top left repeat-x; border-left:1px solid #ddd; border-bottom:1px solid #ddd; } +thead th:first-child { border-left:none !important; } +.superwide table th, .superwide table td, .superwide table input, .superwide table select { font-size:10px; } +.module table { border-collapse: collapse; } +thead th.optional { font-weight:normal !important; } +#home-page table.module tr:hover { background:#EDF3FE; } +fieldset table { border-right:1px solid #eee; } +tr.row-label td { font-size:9px; padding-top:2px; padding-bottom:0; border-bottom:none; color:#666; margin-top:-1px; } +tr.alt { background:#f6f6f6; } +.row1 { background:#EDF3FE; } +.row2 { background:white; } +table#change-history { width:100%; } +table#change-history tbody th { width:16em; } + +/* TABLE SORTING */ + +thead th a:link, thead th a:visited { color:#666; display:block; } +table thead th.sorted { background-position:bottom left !important; } +table thead th.sorted a { padding-right:13px; } +table thead th.ascending a { background:url(../img/admin/arrow-down.gif) right .4em no-repeat; } +table thead th.descending a { background:url(../img/admin/arrow-up.gif) right .4em no-repeat; } + +/* MODULES */ + +.module { border:1px solid #ccc; margin-bottom:5px; background:white; } +.module p, .module ul, .module h3, .module h4, .module dl, .module pre { padding-left:10px; padding-right:10px; } +.module blockquote { margin-left:12px; } +.module ul, .module ol { margin-left:1.5em; } +.module h2, .module caption { margin:0; padding:2px 5px 3px 5px; font-size:11px; text-align:left; font-weight:bold; color:#666; } +.module caption { border:1px solid #ccc; border-bottom:none; } +.module h2, .module caption { background:#7CA0C7 url(../img/admin/default-bg.gif) top left repeat-x; color:white; } +.module h3 { margin-top:.6em; } +#content-related .module h2 { background:#eee url(../img/admin/nav-bg.gif) bottom left repeat-x; color:#666; } +#content-main .verbose .actionlist { float:right; font-size:10px; width:17em; position:relative; top:-1.6em; margin:0 8px; } +.dashboard .module table { width:100%; } + +/* RECENT ACTIONS MODULE */ + +.module ul.actionlist { margin-left:0; } +ul.actionlist li { list-style-type:none; } + +/* FORM DEFAULTS */ + +input, textarea, select { margin:2px 0; padding:2px 3px; vertical-align:middle; border:1px solid #ccc; font-family:"Lucida Grande", Verdana, Arial, sans-serif; font-weight:normal; font-size:11px; } +textarea { vertical-align:top !important; } +input[type=checkbox], input[type=radio] { border:none; } + +/* FORM BUTTONS */ + +input[type=submit], input[type=button], .submit-row input { background:white url(../img/admin/nav-bg.gif) bottom repeat-x; } +input[type=submit]:active, input[type=button]:active { background-image:url(../img/admin/nav-bg-reverse.gif); background-position:top; } +input[type=submit].default, .submit-row input.default { border:2px solid #5b80b2; padding:3px; background:white url(../img/admin/default-bg.gif) bottom repeat-x; font-weight:bold; color:white; } +input[type=submit].default:active { background-image:url(../img/admin/default-bg-reverse.gif); background-position:top; } +.submit-row { padding:5px 7px; text-align:right; background:#ffc; border:1px solid #ccc; margin:5px 0; } +.submit-row input { margin:0 0 0 5px; } + +/* FORM ROWS */ + +.form-row { clear:both; padding:8px 12px; font-size:11px; } +html>body .form-row { border-bottom:1px solid #eee; } +.form-row:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } +.form-row img, .form-row input { vertical-align:middle; } +form .form-row p { padding-left:0; font-size:11px; } + +/* FORM LABELS */ + +form h4 { margin:0 !important; padding:0 !important; border:none !important; } +label { font-weight:normal !important; color:#666; font-size:12px; } +label.inline { margin-left:20px; } +.required label, label.required { font-weight:bold !important; color:#333 !important; } + +/* RADIO BUTTONS */ + +form ul.radiolist li { list-style-type:none; } +form ul.radiolist label { float:none; display:inline; } +form ul.inline { margin-left:0; padding:0; } +form ul.inline li { float:left; padding-right:7px; } + +/* ALIGNED FIELDSETS */ + +.aligned label { display:block; padding:0 1em 3px 0; float:left; text-align:left; width:8em; } +.aligned label.inline { display:inline; float:none; } +.colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField { width:350px; } +form .aligned p, form .aligned ul { margin-left:7em; padding-left:30px; } +form .aligned table p { margin-left:0; padding-left:0; } +form .aligned p.help { padding-left:38px; } +.aligned .vCheckboxLabel { float:none !important; display:inline; } +.colM .aligned .vLargeTextField, colM .aligned .vXMLLargeTextField { width:610px; } +.checkbox-row p.help { margin-left:0; padding-left:0 !important; } + +/* WIDE FIELDSETS */ + +.wide label { width:15em !important; } +form .wide p { margin-left:15em; } +form .wide p.help { padding-left:38px; } +.colM fieldset.wide .vLargeTextField, .colM fieldset.wide .vXMLLargeTextField { width:450px; } + +/* COLLAPSED FIELDSETS */ + +fieldset.collapsed * { display:none; } +fieldset.collapsed h2, fieldset.collapsed .collapse-toggle { display:block !important; } +fieldset.collapsed h2 { background-image:url(../img/admin/nav-bg.gif); background-position:bottom left; color:#999; } +fieldset.collapsed .collapse-toggle { padding:3px 5px !important; background:#efefef; } +fieldset.collapsed .collapse-toggle a { display:inline !important; } + +/* MESSAGES & ERRORS */ + +ul.messagelist { padding:0 0 5px 0; margin:0; } +ul.messagelist li { font-size:12px; display:block; padding:4px 5px 4px 25px; margin:0 0 3px 0; border-bottom:1px solid #ddd; color:#666; background:#ffc url(../img/admin/icon_success.gif) 5px .3em no-repeat; } +.errornote { font-size:12px !important; display:block; padding:4px 5px 4px 25px; margin:0 0 3px 0; border:1px solid red; color:red;background:#ffc url(../img/admin/icon_error.gif) 5px .3em no-repeat; } +ul.errorlist { margin:0 !important; padding:0 !important; } +.errorlist li { font-size:12px !important; display:block; padding:4px 5px 4px 25px; margin:0 0 3px 0; border:1px solid red; color:white; background:red url(../img/admin/icon_alert.gif) 5px .3em no-repeat; } +td ul.errorlist { margin:0 !important; padding:0 !important; } +td ul.errorlist li { margin:0 !important; } +.error { background:#ffc; } +.error input, .error select { border:1px solid red; } + +/* ACTION ICONS */ + +.addlink { padding-left:12px; background:url(../img/admin/icon_addlink.gif) 0 .2em no-repeat; } +.changelink { padding-left:12px; background:url(../img/admin/icon_changelink.gif) 0 .2em no-repeat; } +.deletelink { padding-left:12px; background:url(../img/admin/icon_deletelink.gif) 0 50% no-repeat; } +a.deletelink:link, a.deletelink:visited { color:#CC3434; } +a.deletelink:hover { color:#993333; } + +/* OBJECT TOOLS */ + +.object-tools { font-size:10px; font-weight:bold; font-family:Arial,Helvetica,sans-serif; padding-left:0; margin-bottom:5px; float:right; position:relative; margin-top:-2.4em; margin-bottom:-2em; } +.form-row .object-tools { margin-top:0; margin-bottom:0; } +.object-tools li { display:block; float:left; background:url(../img/admin/tool-left.gif) 0 0 no-repeat; padding:0 0 0 8px; margin-left:2px; height:16px; } +.object-tools li:hover { background:url(../img/admin/tool-left_over.gif) 0 0 no-repeat; } +.object-tools a:link, .object-tools a:visited { display:block; float:left; color:white; padding:.1em 14px .1em 8px; height:14px; background:#999 url(../img/admin/tool-right.gif) 100% 0 no-repeat; } +.object-tools a:hover, .object-tools li:hover a { background:#5b80b2 url(../img/admin/tool-right_over.gif) 100% 0 no-repeat; } +.object-tools a.viewsitelink, .object-tools a.golink { background:#999 url(../img/admin/tooltag-arrowright.gif) top right no-repeat; padding-right:28px; } +.object-tools a.viewsitelink:hover, .object-tools a.golink:hover { background:#5b80b2 url(../img/admin/tooltag-arrowright_over.gif) top right no-repeat; } +.object-tools a.addlink { background:#999 url(../img/admin/tooltag-add.gif) top right no-repeat; padding-right:28px; } +.object-tools a.addlink:hover { background:#5b80b2 url(../img/admin/tooltag-add_over.gif) top right no-repeat; } + +/* INLINE CONTROLS */ + +#inline-controls { font-weight:bold; font-size:12px; } +#inline-specific-controls { margin-left:6px; padding:0 8px; border-left:6px solid #ccc; } + +/* BREADCRUMBS */ + +p.breadcrumbs { font-size:11px; color:#ccc;text-align:left; } /* old breadcrumbs style */ +div.breadcrumbs { background:white url(../img/admin/nav-bg-reverse.gif) 0 -10px repeat-x; padding:2px 8px 3px 8px; font-size:11px; color:#999; border-top:1px solid white; border-bottom:1px solid #ccc; text-align:left; } + +/* SELECTOR (FILTER INTERFACE) */ + +.selector { width:580px; float:left; } +.selector select { width:270px; height:170px; } +.selector-available, .selector-chosen { float:left; width:270px; text-align:center; margin-bottom:5px; } +.selector-available h2, .selector-chosen h2 { border:1px solid #ccc; } +.selector .selector-available h2 { background:white url(../img/admin/nav-bg.gif) bottom left repeat-x; color:#666; } +.selector .selector-filter { background:white; border:1px solid #ccc; border-width:0 1px; padding:3px; color:#999; font-size:10px; margin:0; text-align:left; } +.selector .selector-chosen .selector-filter { padding:4px 5px; } +.selector .selector-available input { width:230px; } +.selector ul.selector-chooser { float:left; width:22px; height:50px; background:url(../img/admin/chooser-bg.gif) top center no-repeat; margin:13% 3px 0 3px; padding:0; } +.selector-chooser li { margin:0; padding:3px; list-style-type:none; } +.selector select { margin-bottom:5px; margin-top:0; } +.selector-add, .selector-remove { width:16px; height:16px; display:block; text-indent:-3000px; } +.selector-add { background:url(../img/admin/selector-add.gif) top center no-repeat; margin-bottom:2px; } +.selector-remove { background:url(../img/admin/selector-remove.gif) top center no-repeat; } +a.selector-chooseall, a.selector-clearall { display:block; width:6em; text-align:left; margin-left:auto; margin-right:auto; font-weight:bold; color:#666; padding:3px 0 3px 18px; } +a.selector-chooseall:hover, a.selector-clearall:hover { color:#036; } +a.selector-chooseall { width:7em; background:url(../img/admin/selector-addall.gif) left center no-repeat; } +a.selector-clearall { background:url(../img/admin/selector-removeall.gif) left center no-repeat; } + +/* Stacked selectors for long items */ + +.stacked { float:left; width:500px; } +.stacked select { width:480px; height:100px; } +.stacked .selector-available, .stacked .selector-chosen { width:480px; } +.stacked .selector-available { margin-bottom:0; } +.stacked .selector-available input { width:442px; } +.stacked ul.selector-chooser { height:22px; width:50px; margin:0 0 3px 40%; background:url(../img/admin/chooser_stacked-bg.gif) top center no-repeat; } +.stacked .selector-chooser li { float:left; padding:3px 3px 3px 5px; } +.stacked .selector-chooseall, .stacked .selector-clearall { display:none; } +.stacked .selector-add { background-image:url(../img/admin/selector_stacked-add.gif); } +.stacked .selector-remove { background-image:url(../img/admin/selector_stacked-remove.gif); } + +/* DATE AND TIME */ + +p.datetime { line-height:20px; margin:0; padding:0; color:#666; font-size:11px; font-weight:bold; } +.datetime span { font-size:11px; font-weight:normal; white-space:nowrap; } +.vDateField { margin-left:4px; } +table p.datetime { font-size:10px; margin-left:0; padding-left:0; } + +/* FILE UPLOADS */ + +p.file-upload { line-height:20px; margin:0; padding:0; color:#666; font-size:11px; font-weight:bold; } +.file-upload a { font-weight:normal; } +.file-upload .deletelink { margin-left:5px; } + +/* CALENDARS & CLOCKS */ + +.calendarbox, .clockbox { margin:5px auto; width: 10em; text-align: center; background:white; position:relative; } +.clockbox { width:6em; } +.calendar { margin:0; padding: 0; } +.calendar table { margin: 0; padding: 0; border-collapse:collapse; background:white; width:99%; } +.calendar caption, .calendarbox h2 { margin: 0; font-size:11px; text-align:center; border-top:none; } +.calendar th { font-size:10px; color:#666; padding:2px 3px; text-align:center; background:#e1e1e1 url(../img/admin/nav-bg.gif) 0 50% repeat-x; border-bottom:1px solid #ddd; } +.calendar td { font-size:11px; text-align: center; padding: 0; border-top:1px solid #eee; border-bottom:none; } +.calendar td.selected a { background: #C9DBED; } +.calendar td.nonday { background:#efefef; } +.calendar td.today a { background:#ffc; } +.calendar td a, .timelist a { display: block; font-weight:bold; padding:4px; text-decoration: none; color:#444; } +.calendar td a:hover, .timelist a:hover { background: #5b80b2; color:white; } +.calendar td a:active, .timelist a:active { background: #036; color:white; } +.calendarnav { font-size:10px; text-align: center; color:#ccc; margin:0; padding:1px 3px; } +.calendarnav a:link, #calendarnav a:visited, #calendarnav a:hover { color: #999; } +.calendar-shortcuts { background:white; font-size:10px; line-height:11px; border-top:1px solid #eee; padding:3px 0 4px; color:#ccc; } +.calendarbox .calendarnav-previous, .calendarbox .calendarnav-next { display:block; position:absolute; font-weight:bold; font-size:12px; background:#C9DBED url(../img/admin/default-bg.gif) bottom left repeat-x; padding:1px 4px 2px 4px; color:white; } +.calendarnav-previous:hover, .calendarnav-next:hover { background:#036; } +.calendarnav-previous { top:0; left:0; } +.calendarnav-next { top:0; right:0; } +.calendar-cancel { margin:0 !important; padding:0; font-size:10px; background:#e1e1e1 url(../img/admin/nav-bg.gif) 0 50% repeat-x; border-top:1px solid #ddd; } +.calendar-cancel a { padding:2px; color:#999; } +ul.timelist, .timelist li { list-style-type:none; margin:0; padding:0; } +.timelist a { padding:2px; } + +/* OLD ORDERING WIDGET */ + +ul#orderthese { padding:0; margin:0; list-style-type:none; } +ul#orderthese li { list-style-type:none; display:block; padding:0; margin:6px 0; width:214px; background:#f6f6f6; white-space:nowrap; overflow:hidden; } +ul#orderthese li span { display:block; border:1px solid #e7e7e7; background:transparent url(../img/admin/nav-bg-grabber.gif) top left repeat-y; font-size:10px !important; padding:4px 6px 4px 12px; } +ul#orderthese span:hover { background-color:#efefef; } + +/* PAGINATOR */ + +.paginator { font-size:11px; padding-top:10px; padding-bottom:10px; line-height:22px; margin:0; border-top:1px solid #ddd; } +.paginator a:link, .paginator a:visited { padding:2px 6px; border:solid 1px #ccc; background:white; text-decoration:none; } +.paginator a.showall { padding:0 !important; border:none !important; } +.paginator a.showall:hover { color:#036 !important; background:transparent !important; } +.paginator .end { border-width:2px !important; margin-right:6px; } +.paginator .this-page { padding:2px 6px; font-weight:bold; font-size:13px; vertical-align:top; } +.paginator a:hover { color:white; background:#5b80b2; border-color:#036; } + +/* TEXT STYLES & MODIFIERS */ + +.small { font-size:11px; } +.tiny { font-size:10px; } +p.tiny { margin-top:-2px; } +.mini { font-size:9px; } +p.mini { margin-top:-3px; } +.help, p.help { font-size:10px !important; color:#999; } +p img, h1 img, h2 img, h3 img, h4 img, td img { vertical-align:middle; } +.quiet, a.quiet:link, a.quiet:visited { color:#999 !important;font-weight:normal !important; } +.quiet strong { font-weight:bold !important; } +.float-right { float:right; } +.float-left { float:left; } +.clear { clear:both; } +.align-left { text-align:left; } +.align-right { text-align:right; } +.example { margin:10px 0; padding:5px 10px; background:#efefef; } +.nowrap { white-space:nowrap; } + +/* CUSTOM FORM FIELDS */ + +.vSelectMultipleField { vertical-align:top !important; } +.vCheckboxField { border:none; } +.vDateField, .vTimeField { margin-right:2px; } +.vFileUploadField { border:none; } +.vURLField { width:380px; } +.vLargeTextField, .vXMLLargeTextField { width:480px; } +.colM .vLargeTextField, .colM .vXMLLargeTextField { width:720px; } +body.core-flatfile #id_content { height: 400px; } +.module table .vPositiveSmallIntegerField { width: 22px; } diff --git a/media/img/calendar.gif b/media/img/calendar.gif new file mode 100644 index 0000000000..7587b305a4 Binary files /dev/null and b/media/img/calendar.gif differ diff --git a/media/img/changelist-bg.gif b/media/img/changelist-bg.gif new file mode 100644 index 0000000000..7f4699470a Binary files /dev/null and b/media/img/changelist-bg.gif differ diff --git a/media/img/chooser-bg.gif b/media/img/chooser-bg.gif new file mode 100644 index 0000000000..30e83c2518 Binary files /dev/null and b/media/img/chooser-bg.gif differ diff --git a/media/img/chooser_stacked-bg.gif b/media/img/chooser_stacked-bg.gif new file mode 100644 index 0000000000..5d104b6d98 Binary files /dev/null and b/media/img/chooser_stacked-bg.gif differ diff --git a/media/img/default-bg-reverse.gif b/media/img/default-bg-reverse.gif new file mode 100644 index 0000000000..0873281e51 Binary files /dev/null and b/media/img/default-bg-reverse.gif differ diff --git a/media/img/default-bg.gif b/media/img/default-bg.gif new file mode 100644 index 0000000000..003aeca59f Binary files /dev/null and b/media/img/default-bg.gif differ diff --git a/media/img/icon-no.gif b/media/img/icon-no.gif new file mode 100644 index 0000000000..1b4ee58145 Binary files /dev/null and b/media/img/icon-no.gif differ diff --git a/media/img/icon-yes.gif b/media/img/icon-yes.gif new file mode 100644 index 0000000000..7399282740 Binary files /dev/null and b/media/img/icon-yes.gif differ diff --git a/media/img/icon_addlink.gif b/media/img/icon_addlink.gif new file mode 100644 index 0000000000..ee70e1adba Binary files /dev/null and b/media/img/icon_addlink.gif differ diff --git a/media/img/icon_alert.gif b/media/img/icon_alert.gif new file mode 100644 index 0000000000..a1dde26254 Binary files /dev/null and b/media/img/icon_alert.gif differ diff --git a/media/img/icon_calendar.gif b/media/img/icon_calendar.gif new file mode 100644 index 0000000000..7587b305a4 Binary files /dev/null and b/media/img/icon_calendar.gif differ diff --git a/media/img/icon_changelink.gif b/media/img/icon_changelink.gif new file mode 100644 index 0000000000..e1b9afde65 Binary files /dev/null and b/media/img/icon_changelink.gif differ diff --git a/media/img/icon_clock.gif b/media/img/icon_clock.gif new file mode 100644 index 0000000000..ff2d57e0a3 Binary files /dev/null and b/media/img/icon_clock.gif differ diff --git a/media/img/icon_deletelink.gif b/media/img/icon_deletelink.gif new file mode 100644 index 0000000000..72523e3a3b Binary files /dev/null and b/media/img/icon_deletelink.gif differ diff --git a/media/img/icon_error.gif b/media/img/icon_error.gif new file mode 100644 index 0000000000..3730a00b26 Binary files /dev/null and b/media/img/icon_error.gif differ diff --git a/media/img/icon_searchbox.gif b/media/img/icon_searchbox.gif new file mode 100644 index 0000000000..161713660f Binary files /dev/null and b/media/img/icon_searchbox.gif differ diff --git a/media/img/icon_success.gif b/media/img/icon_success.gif new file mode 100644 index 0000000000..02dd381d2f Binary files /dev/null and b/media/img/icon_success.gif differ diff --git a/media/img/nav-bg-grabber.gif b/media/img/nav-bg-grabber.gif new file mode 100644 index 0000000000..0a784fa769 Binary files /dev/null and b/media/img/nav-bg-grabber.gif differ diff --git a/media/img/nav-bg-grabber2.gif b/media/img/nav-bg-grabber2.gif new file mode 100644 index 0000000000..5b5c5b6e0e Binary files /dev/null and b/media/img/nav-bg-grabber2.gif differ diff --git a/media/img/nav-bg-reverse.gif b/media/img/nav-bg-reverse.gif new file mode 100644 index 0000000000..f11029f90f Binary files /dev/null and b/media/img/nav-bg-reverse.gif differ diff --git a/media/img/nav-bg.gif b/media/img/nav-bg.gif new file mode 100644 index 0000000000..f8402b809d Binary files /dev/null and b/media/img/nav-bg.gif differ diff --git a/media/img/selector-add.gif b/media/img/selector-add.gif new file mode 100644 index 0000000000..50132d1c43 Binary files /dev/null and b/media/img/selector-add.gif differ diff --git a/media/img/selector-addall.gif b/media/img/selector-addall.gif new file mode 100644 index 0000000000..d6e7c639bb Binary files /dev/null and b/media/img/selector-addall.gif differ diff --git a/media/img/selector-remove.gif b/media/img/selector-remove.gif new file mode 100644 index 0000000000..2b9b0a2ac3 Binary files /dev/null and b/media/img/selector-remove.gif differ diff --git a/media/img/selector-removeall.gif b/media/img/selector-removeall.gif new file mode 100644 index 0000000000..5a4421926d Binary files /dev/null and b/media/img/selector-removeall.gif differ diff --git a/media/img/selector-search.gif b/media/img/selector-search.gif new file mode 100644 index 0000000000..6d5f4c7492 Binary files /dev/null and b/media/img/selector-search.gif differ diff --git a/media/img/selector_stacked-add.gif b/media/img/selector_stacked-add.gif new file mode 100644 index 0000000000..7426169652 Binary files /dev/null and b/media/img/selector_stacked-add.gif differ diff --git a/media/img/selector_stacked-remove.gif b/media/img/selector_stacked-remove.gif new file mode 100644 index 0000000000..60412cee19 Binary files /dev/null and b/media/img/selector_stacked-remove.gif differ diff --git a/media/img/tool-left.gif b/media/img/tool-left.gif new file mode 100644 index 0000000000..011490ff3a Binary files /dev/null and b/media/img/tool-left.gif differ diff --git a/media/img/tool-left_over.gif b/media/img/tool-left_over.gif new file mode 100644 index 0000000000..937e07bb1a Binary files /dev/null and b/media/img/tool-left_over.gif differ diff --git a/media/img/tool-right.gif b/media/img/tool-right.gif new file mode 100644 index 0000000000..cdc140cc59 Binary files /dev/null and b/media/img/tool-right.gif differ diff --git a/media/img/tool-right_over.gif b/media/img/tool-right_over.gif new file mode 100644 index 0000000000..4db977e838 Binary files /dev/null and b/media/img/tool-right_over.gif differ diff --git a/media/img/tooltag-add.gif b/media/img/tooltag-add.gif new file mode 100644 index 0000000000..8b53d49ae5 Binary files /dev/null and b/media/img/tooltag-add.gif differ diff --git a/media/img/tooltag-add_over.gif b/media/img/tooltag-add_over.gif new file mode 100644 index 0000000000..bfc52f10de Binary files /dev/null and b/media/img/tooltag-add_over.gif differ diff --git a/media/img/tooltag-arrowright.gif b/media/img/tooltag-arrowright.gif new file mode 100644 index 0000000000..cdaaae77ed Binary files /dev/null and b/media/img/tooltag-arrowright.gif differ diff --git a/media/img/tooltag-arrowright_over.gif b/media/img/tooltag-arrowright_over.gif new file mode 100644 index 0000000000..7163189604 Binary files /dev/null and b/media/img/tooltag-arrowright_over.gif differ diff --git a/media/js/SelectBox.js b/media/js/SelectBox.js new file mode 100644 index 0000000000..48ec0a5e4b --- /dev/null +++ b/media/js/SelectBox.js @@ -0,0 +1,110 @@ +var SelectBox = { + cache: new Object(), + init: function(id) { + var box = document.getElementById(id); + var node; + SelectBox.cache[id] = new Array(); + var cache = SelectBox.cache[id]; + for (var i = 0; (node = box.options[i]); i++) { + cache.push({ value: node.value, text: node.text, displayed: 1 }); + } + }, + redisplay: function(id) { + // Repopulate HTML select box from cache + var box = document.getElementById(id); + box.options.length = 0; // clear all options + for (var i = 0, j = SelectBox.cache[id].length; i < j; i++) { + var node = SelectBox.cache[id][i]; + if (node.displayed) { + box.options[box.options.length] = new Option(node.text, node.value, false, false); + } + } + }, + filter: function(id, text) { + // Redisplay the HTML select box, displaying only the choices containing ALL + // the words in text. (It's an AND search.) + var tokens = text.toLowerCase().split(/\s+/); + var node, token; + for (var i = 0; (node = SelectBox.cache[id][i]); i++) { + node.displayed = 1; + for (var j = 0; (token = tokens[j]); j++) { + if (node.text.toLowerCase().indexOf(token) == -1) { + node.displayed = 0; + } + } + } + SelectBox.redisplay(id); + }, + delete_from_cache: function(id, value) { + var node, delete_index = null; + for (var i = 0; (node = SelectBox.cache[id][i]); i++) { + if (node.value == value) { + delete_index = i; + break; + } + } + var j = SelectBox.cache[id].length - 1; + for (var i = delete_index; i < j; i++) { + SelectBox.cache[id][i] = SelectBox.cache[id][i+1]; + } + SelectBox.cache[id].length--; + }, + add_to_cache: function(id, option) { + SelectBox.cache[id].push({ value: option.value, text: option.text, displayed: 1 }); +// SelectBox.sort(id) // Commented out for performance. Can this be deleted? + }, + cache_contains: function(id, value) { + // Check if an item is contained in the cache + var node; + for (var i = 0; (node = SelectBox.cache[id][i]); i++) { + if (node.value == value) { + return true; + } + } + return false; + }, + move: function(from, to) { + var from_box = document.getElementById(from); + var to_box = document.getElementById(to); + var option; + for (var i = 0; (option = from_box.options[i]); i++) { + if (option.selected && SelectBox.cache_contains(from, option.value)) { + SelectBox.add_to_cache(to, { value: option.value, text: option.text, displayed: 1 }); + SelectBox.delete_from_cache(from, option.value); + } + } + SelectBox.redisplay(from); + SelectBox.redisplay(to); + }, + move_all: function(from, to) { + var from_box = document.getElementById(from); + var to_box = document.getElementById(to); + var option; + for (var i = 0; (option = from_box.options[i]); i++) { + SelectBox.add_to_cache(to, { value: option.value, text: option.text, displayed: 1 }); + SelectBox.delete_from_cache(from, option.value); + } + SelectBox.redisplay(from); + SelectBox.redisplay(to); + }, + sort: function(id) { + SelectBox.cache[id].sort( function(a, b) { + a = a.text.toLowerCase(); + b = b.text.toLowerCase(); + try { + if (a > b) return 1; + if (a < b) return -1; + } + catch (e) { + // silently fail on IE 'unknown' exception + } + return 0; + } ); + }, + select_all: function(id) { + var box = document.getElementById(id); + for (var i = 0; i < box.options.length; i++) { + box.options[i].selected = 'selected'; + } + } +} diff --git a/media/js/SelectFilter.js b/media/js/SelectFilter.js new file mode 100644 index 0000000000..0501920608 --- /dev/null +++ b/media/js/SelectFilter.js @@ -0,0 +1,81 @@ +/* +SelectFilter - Turns a multiple-select box into a filter interface. + +Requires SelectBox.js and addevent.js. +*/ + +function findForm(node) { + // returns the node of the form containing the given node + if (node.tagName.toLowerCase() != 'form') { + return findForm(node.parentNode); + } + return node; +} + +var SelectFilter = { + init: function(field_id) { + var from_box = document.getElementById(field_id); + from_box.id += '_from'; // change its ID + // Create the INPUT input box + var input_box = document.createElement('input'); + input_box.id = field_id + '_input'; + input_box.setAttribute('type', 'text'); + from_box.parentNode.insertBefore(input_box, from_box); + from_box.parentNode.insertBefore(document.createElement('br'), input_box.nextSibling); + // Create the TO box + var to_box = document.createElement('select'); + to_box.id = field_id + '_to'; + to_box.setAttribute('multiple', 'multiple'); + to_box.setAttribute('size', from_box.size); + from_box.parentNode.insertBefore(to_box, from_box.nextSibling); + to_box.setAttribute('name', from_box.getAttribute('name')); + from_box.setAttribute('name', from_box.getAttribute('name') + '_old'); + // Give the filters a CSS hook + from_box.setAttribute('class', 'filtered'); + to_box.setAttribute('class', 'filtered'); + // Set up the JavaScript event handlers for the select box filter interface + addEvent(input_box, 'keyup', function(e) { SelectFilter.filter_key_up(e, field_id); }); + addEvent(input_box, 'keydown', function(e) { SelectFilter.filter_key_down(e, field_id); }); + addEvent(from_box, 'dblclick', function() { SelectBox.move(field_id + '_from', field_id + '_to'); }); + addEvent(from_box, 'focus', function() { input_box.focus(); }); + addEvent(to_box, 'dblclick', function() { SelectBox.move(field_id + '_to', field_id + '_from'); }); + addEvent(findForm(from_box), 'submit', function() { SelectBox.select_all(field_id + '_to'); }); + SelectBox.init(field_id + '_from'); + SelectBox.init(field_id + '_to'); + // Move selected from_box options to to_box + SelectBox.move(field_id + '_from', field_id + '_to'); + }, + filter_key_up: function(event, field_id) { + from = document.getElementById(field_id + '_from'); + // don't submit form if user pressed Enter + if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) { + from.selectedIndex = 0; + SelectBox.move(field_id + '_from', field_id + '_to'); + from.selectedIndex = 0; + return false; + } + var temp = from.selectedIndex; + SelectBox.filter(field_id + '_from', document.getElementById(field_id + '_input').value); + from.selectedIndex = temp; + return true; + }, + filter_key_down: function(event, field_id) { + from = document.getElementById(field_id + '_from'); + // right arrow -- move across + if ((event.which && event.which == 39) || (event.keyCode && event.keyCode == 39)) { + var old_index = from.selectedIndex; + SelectBox.move(field_id + '_from', field_id + '_to'); + from.selectedIndex = (old_index == from.length) ? from.length - 1 : old_index; + return false; + } + // down arrow -- wrap around + if ((event.which && event.which == 40) || (event.keyCode && event.keyCode == 40)) { + from.selectedIndex = (from.length == from.selectedIndex + 1) ? 0 : from.selectedIndex + 1; + } + // up arrow -- wrap around + if ((event.which && event.which == 38) || (event.keyCode && event.keyCode == 38)) { + from.selectedIndex = (from.selectedIndex == 0) ? from.length - 1 : from.selectedIndex - 1; + } + return true; + } +} diff --git a/media/js/SelectFilter2.js b/media/js/SelectFilter2.js new file mode 100644 index 0000000000..2607a62667 --- /dev/null +++ b/media/js/SelectFilter2.js @@ -0,0 +1,129 @@ +/* +SelectFilter2 - Turns a multiple-select box into a filter interface. + +Different than SelectFilter because this is coupled to the admin framework. + +Requires SelectBox.js and addevent.js. +*/ + +// quickElement(tagType, parentReference, textInChildNode, [, attribute, attributeValue ...]); +function quickElement() { + var obj = document.createElement(arguments[0]); + if (arguments[2] != '' && arguments[2] != null) { + var textNode = document.createTextNode(arguments[2]); + obj.appendChild(textNode); + } + var len = arguments.length; + for (var i = 3; i < len; i += 2) { + obj.setAttribute(arguments[i], arguments[i+1]); + } + arguments[1].appendChild(obj); + return obj; +} + +function findForm(node) { + // returns the node of the form containing the given node + if (node.tagName.toLowerCase() != 'form') { + return findForm(node.parentNode); + } + return node; +} + +var SelectFilter = { + init: function(field_id, field_name, is_stacked) { + var from_box = document.getElementById(field_id); + from_box.id += '_from'; // change its ID + from_box.className = 'filtered'; + + // Remove

, because it just gets in the way. + var ps = from_box.parentNode.getElementsByTagName('p'); + for (var i=0; i or

+ var selector_div = quickElement('div', from_box.parentNode); + selector_div.className = is_stacked ? 'selector stacked' : 'selector'; + + //
+ var selector_available = quickElement('div', selector_div, ''); + selector_available.className = 'selector-available'; + quickElement('h2', selector_available, 'Available ' + field_name); + var filter_p = quickElement('p', selector_available, ''); + filter_p.className = 'selector-filter'; + quickElement('img', filter_p, '', 'src', 'http://media.ljworld.com/img/admin/selector-search.gif'); + filter_p.appendChild(document.createTextNode(' ')); + var filter_input = quickElement('input', filter_p, '', 'type', 'text'); + filter_input.id = field_id + '_input'; + selector_available.appendChild(from_box); + var choose_all = quickElement('a', selector_available, 'Choose all', 'href', 'javascript: (function(){ SelectBox.move_all("' + field_id + '_from", "' + field_id + '_to"); })()'); + choose_all.className = 'selector-chooseall'; + + //