new static files.
Signed-off-by: rscnt <rascnt@gmail.com>
							
								
								
									
										847
									
								
								static/admin/css/base.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,847 @@ | ||||||
|  | /* | ||||||
|  |     DJANGO Admin styles | ||||||
|  | */ | ||||||
|  | 
 | ||||||
|  | body { | ||||||
|  |     margin: 0; | ||||||
|  |     padding: 0; | ||||||
|  |     font-size: 12px; | ||||||
|  |     font-family: "Lucida Grande","DejaVu Sans","Bitstream Vera Sans",Verdana,Arial,sans-serif; | ||||||
|  |     color: #333; | ||||||
|  |     background: #fff; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* LINKS */ | ||||||
|  | 
 | ||||||
|  | a:link, a:visited { | ||||||
|  |     color: #5b80b2; | ||||||
|  |     text-decoration: none; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | a:hover { | ||||||
|  |     color: #036; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | a img { | ||||||
|  |     border: none; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | a.section:link, a.section:visited { | ||||||
|  |     color: #fff; | ||||||
|  |     text-decoration: none; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* GLOBAL DEFAULTS */ | ||||||
|  | 
 | ||||||
|  | p, ol, ul, dl { | ||||||
|  |     margin: .2em 0 .8em 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 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; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* 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; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | img.help-tooltip { | ||||||
|  |     cursor: help; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 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; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* 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; | ||||||
|  |     font-weight: bold; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | thead th, | ||||||
|  | tfoot td { | ||||||
|  |     color: #666; | ||||||
|  |     padding: 2px 5px; | ||||||
|  |     font-size: 11px; | ||||||
|  |     background: #e1e1e1 url(../img/nav-bg.gif) top left repeat-x; | ||||||
|  |     border-left: 1px solid #ddd; | ||||||
|  |     border-bottom: 1px solid #ddd; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | tfoot td { | ||||||
|  |     border-bottom: none; | ||||||
|  |     border-top: 1px solid #ddd; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | thead th:first-child, | ||||||
|  | tfoot td:first-child { | ||||||
|  |     border-left: none !important; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | thead th.optional { | ||||||
|  |     font-weight: normal !important; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 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: #fff; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* SORTABLE TABLES */ | ||||||
|  | 
 | ||||||
|  | thead th { | ||||||
|  |     padding: 2px 5px; | ||||||
|  |     line-height: normal; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | thead th a:link, thead th a:visited { | ||||||
|  |     color: #666; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | thead th.sorted { | ||||||
|  |     background: #c5c5c5 url(../img/nav-bg-selected.gif) top left repeat-x; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | thead th.sorted .text { | ||||||
|  |     padding-right: 42px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | table thead th .text span { | ||||||
|  |     padding: 2px 5px; | ||||||
|  |     display:block; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | table thead th .text a { | ||||||
|  |     display: block; | ||||||
|  |     cursor: pointer; | ||||||
|  |     padding: 2px 5px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | table thead th.sortable:hover { | ||||||
|  |     background: #fff url(../img/nav-bg-reverse.gif) 0 -5px repeat-x; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | thead th.sorted a.sortremove { | ||||||
|  |     visibility: hidden; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | table thead th.sorted:hover a.sortremove { | ||||||
|  |     visibility: visible; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | table thead th.sorted .sortoptions { | ||||||
|  |     display: block; | ||||||
|  |     padding: 4px 5px 0 5px; | ||||||
|  |     float: right; | ||||||
|  |     text-align: right; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | table thead th.sorted .sortpriority { | ||||||
|  |     font-size: .8em; | ||||||
|  |     min-width: 12px; | ||||||
|  |     text-align: center; | ||||||
|  |     vertical-align: top; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | table thead th.sorted .sortoptions a { | ||||||
|  |     width: 14px; | ||||||
|  |     height: 12px; | ||||||
|  |     display: inline-block; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | table thead th.sorted .sortoptions a.sortremove { | ||||||
|  |     background: url(../img/sorting-icons.gif) -4px -5px no-repeat; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | table thead th.sorted .sortoptions a.sortremove:hover { | ||||||
|  |     background: url(../img/sorting-icons.gif) -4px -27px no-repeat; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | table thead th.sorted .sortoptions a.ascending { | ||||||
|  |     background: url(../img/sorting-icons.gif) -5px -50px no-repeat; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | table thead th.sorted .sortoptions a.ascending:hover { | ||||||
|  |     background: url(../img/sorting-icons.gif) -5px -72px no-repeat; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | table thead th.sorted .sortoptions a.descending { | ||||||
|  |     background: url(../img/sorting-icons.gif) -5px -94px no-repeat; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | table thead th.sorted .sortoptions a.descending:hover { | ||||||
|  |     background: url(../img/sorting-icons.gif) -5px -115px no-repeat; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* ORDERABLE TABLES */ | ||||||
|  | 
 | ||||||
|  | table.orderable tbody tr td:hover { | ||||||
|  |     cursor: move; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | table.orderable tbody tr td:first-child { | ||||||
|  |     padding-left: 14px; | ||||||
|  |     background-image: url(../img/nav-bg-grabber.gif); | ||||||
|  |     background-repeat: repeat-y; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | table.orderable-initalized .order-cell, body>tr>td.order-cell { | ||||||
|  |     display: none; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* FORM DEFAULTS */ | ||||||
|  | 
 | ||||||
|  | input, textarea, select, .form-row p { | ||||||
|  |     margin: 2px 0; | ||||||
|  |     padding: 2px 3px; | ||||||
|  |     vertical-align: middle; | ||||||
|  |     font-family: "Lucida Grande", Verdana, Arial, sans-serif; | ||||||
|  |     font-weight: normal; | ||||||
|  |     font-size: 11px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | textarea { | ||||||
|  |     vertical-align: top !important; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | input[type=text], input[type=password], input[type=email], input[type=url], input[type=number], | ||||||
|  | textarea, select, .vTextField { | ||||||
|  |     border: 1px solid #ccc; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* FORM BUTTONS */ | ||||||
|  | 
 | ||||||
|  | .button, input[type=submit], input[type=button], .submit-row input { | ||||||
|  |     background: #fff url(../img/nav-bg.gif) bottom repeat-x; | ||||||
|  |     padding: 3px 5px; | ||||||
|  |     color: black; | ||||||
|  |     border: 1px solid #bbb; | ||||||
|  |     border-color: #ddd #aaa #aaa #ddd; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .button:active, input[type=submit]:active, input[type=button]:active { | ||||||
|  |     background-image: url(../img/nav-bg-reverse.gif); | ||||||
|  |     background-position: top; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .button[disabled], input[type=submit][disabled], input[type=button][disabled] { | ||||||
|  |     background-image: url(../img/nav-bg.gif); | ||||||
|  |     background-position: bottom; | ||||||
|  |     opacity: 0.4; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .button.default, input[type=submit].default, .submit-row input.default { | ||||||
|  |     border: 2px solid #5b80b2; | ||||||
|  |     background: #7CA0C7 url(../img/default-bg.gif) bottom repeat-x; | ||||||
|  |     font-weight: bold; | ||||||
|  |     color: #fff; | ||||||
|  |     float: right; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .button.default:active, input[type=submit].default:active { | ||||||
|  |     background-image: url(../img/default-bg-reverse.gif); | ||||||
|  |     background-position: top; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .button[disabled].default, input[type=submit][disabled].default, input[type=button][disabled].default { | ||||||
|  |     background-image: url(../img/default-bg.gif); | ||||||
|  |     background-position: bottom; | ||||||
|  |     opacity: 0.4; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* MODULES */ | ||||||
|  | 
 | ||||||
|  | .module { | ||||||
|  |     border: 1px solid #ccc; | ||||||
|  |     margin-bottom: 5px; | ||||||
|  |     background: #fff; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .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 h3 { | ||||||
|  |     margin-top: .6em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .module h2, .module caption, .inline-group h2 { | ||||||
|  |     margin: 0; | ||||||
|  |     padding: 2px 5px 3px 5px; | ||||||
|  |     font-size: 11px; | ||||||
|  |     text-align: left; | ||||||
|  |     font-weight: bold; | ||||||
|  |     background: #7CA0C7 url(../img/default-bg.gif) top left repeat-x; | ||||||
|  |     color: #fff; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .module table { | ||||||
|  |     border-collapse: collapse; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* MESSAGES & ERRORS */ | ||||||
|  | 
 | ||||||
|  | ul.messagelist { | ||||||
|  |     padding: 0; | ||||||
|  |     margin: 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ul.messagelist li { | ||||||
|  |     font-size: 12px; | ||||||
|  |     font-weight: bold; | ||||||
|  |     display: block; | ||||||
|  |     padding: 5px 5px 4px 25px; | ||||||
|  |     margin: 0 0 3px 0; | ||||||
|  |     border-bottom: 1px solid #ddd; | ||||||
|  |     color: #666; | ||||||
|  |     background: #dfd url(../img/icon_success.gif) 5px .3em no-repeat; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ul.messagelist li.warning { | ||||||
|  |     background: #ffc url(../img/icon_alert.gif) 5px .3em no-repeat; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ul.messagelist li.error { | ||||||
|  |     background: #ffefef url(../img/icon_error.gif) 5px .3em no-repeat; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .errornote { | ||||||
|  |     font-size: 12px !important; | ||||||
|  |     font-weight: bold; | ||||||
|  |     display: block; | ||||||
|  |     padding: 5px 5px 4px 25px; | ||||||
|  |     margin: 0 0 3px 0; | ||||||
|  |     border: 1px solid #c22; | ||||||
|  |     color: #c11; | ||||||
|  |     background: #ffefef url(../img/icon_error.gif) 5px .38em no-repeat; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .errornote, ul.errorlist { | ||||||
|  |     border-radius: 1px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ul.errorlist { | ||||||
|  |     margin: 0 0 4px !important; | ||||||
|  |     padding: 0 !important; | ||||||
|  |     color: #fff; | ||||||
|  |     background: #c11; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ul.errorlist li { | ||||||
|  |     font-size: 12px !important; | ||||||
|  |     display: block; | ||||||
|  |     padding: 5px 5px 4px 7px; | ||||||
|  |     margin: 3px 0 0 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ul.errorlist li:first-child { | ||||||
|  |     margin-top: 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ul.errorlist li a { | ||||||
|  |     color: #fff; | ||||||
|  |     text-decoration: underline; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | td ul.errorlist { | ||||||
|  |     margin: 0 !important; | ||||||
|  |     padding: 0 !important; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | td ul.errorlist li { | ||||||
|  |     margin: 0 !important; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .errors, .form-row.errors { | ||||||
|  |     background: #ffefef; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .form-row.errors { | ||||||
|  |     border: 1px solid #c22; | ||||||
|  |     margin: -1px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .errors input, .errors select, .errors textarea { | ||||||
|  |     border: 1px solid #c11; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | div.system-message { | ||||||
|  |     background: #ffc; | ||||||
|  |     margin: 10px; | ||||||
|  |     padding: 6px 8px; | ||||||
|  |     font-size: .8em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | div.system-message p.system-message-title { | ||||||
|  |     padding: 4px 5px 4px 25px; | ||||||
|  |     margin: 0; | ||||||
|  |     color: #c11; | ||||||
|  |     background: #ffefef url(../img/icon_error.gif) 5px .3em no-repeat; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .description { | ||||||
|  |     font-size: 12px; | ||||||
|  |     padding: 5px 0 0 12px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* BREADCRUMBS */ | ||||||
|  | 
 | ||||||
|  | div.breadcrumbs { | ||||||
|  |     background: #fff url(../img/nav-bg-reverse.gif) 0 -10px repeat-x; | ||||||
|  |     padding: 2px 8px 3px 8px; | ||||||
|  |     font-size: 11px; | ||||||
|  |     color: #999; | ||||||
|  |     border-top: 1px solid #fff; | ||||||
|  |     border-bottom: 1px solid #ddd; | ||||||
|  |     text-align: left; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* ACTION ICONS */ | ||||||
|  | 
 | ||||||
|  | .addlink { | ||||||
|  |     padding-left: 12px; | ||||||
|  |     background: url(../img/icon_addlink.gif) 0 .2em no-repeat; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .changelink { | ||||||
|  |     padding-left: 12px; | ||||||
|  |     background: url(../img/icon_changelink.gif) 0 .2em no-repeat; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .deletelink { | ||||||
|  |     padding-left: 12px; | ||||||
|  |     background: url(../img/icon_deletelink.gif) 0 .25em 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; | ||||||
|  |     float: right; | ||||||
|  |     position: relative; | ||||||
|  |     margin-top: -2.4em; | ||||||
|  |     margin-bottom: -2em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .form-row .object-tools { | ||||||
|  |     margin-top: 5px; | ||||||
|  |     margin-bottom: 5px; | ||||||
|  |     float: none; | ||||||
|  |     height: 2em; | ||||||
|  |     padding-left: 3.5em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .object-tools li { | ||||||
|  |     display: block; | ||||||
|  |     float: left; | ||||||
|  |     margin-left: 5px; | ||||||
|  |     height: 16px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .object-tools a { | ||||||
|  |     border-radius: 15px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .object-tools a:link, .object-tools a:visited { | ||||||
|  |     display: block; | ||||||
|  |     float: left; | ||||||
|  |     color: #fff; | ||||||
|  |     padding: .2em 10px; | ||||||
|  |     background: #999; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .object-tools a:hover, .object-tools li:hover a { | ||||||
|  |     background-color: #5b80b2; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .object-tools a.viewsitelink, .object-tools a.golink { | ||||||
|  |     background: #999 url(../img/tooltag-arrowright.png) 95% center no-repeat; | ||||||
|  |     padding-right: 26px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .object-tools a.addlink { | ||||||
|  |     background: #999 url(../img/tooltag-add.png) 95% center no-repeat; | ||||||
|  |     padding-right: 26px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* OBJECT HISTORY */ | ||||||
|  | 
 | ||||||
|  | table#change-history { | ||||||
|  |     width: 100%; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | table#change-history tbody th { | ||||||
|  |     width: 16em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* PAGE STRUCTURE */ | ||||||
|  | 
 | ||||||
|  | #container { | ||||||
|  |     position: relative; | ||||||
|  |     width: 100%; | ||||||
|  |     min-width: 760px; | ||||||
|  |     padding: 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #content { | ||||||
|  |     margin: 10px 15px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #content-main { | ||||||
|  |     float: left; | ||||||
|  |     width: 100%; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #content-related { | ||||||
|  |     float: right; | ||||||
|  |     width: 18em; | ||||||
|  |     position: relative; | ||||||
|  |     margin-right: -19em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #footer { | ||||||
|  |     clear: both; | ||||||
|  |     padding: 10px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* COLUMN TYPES */ | ||||||
|  | 
 | ||||||
|  | .colMS { | ||||||
|  |     margin-right: 20em !important; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .colSM { | ||||||
|  |     margin-left: 20em !important; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .colSM #content-related { | ||||||
|  |     float: left; | ||||||
|  |     margin-right: 0; | ||||||
|  |     margin-left: -19em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .colSM #content-main { | ||||||
|  |     float: right; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .popup .colM { | ||||||
|  |     width: 95%; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .subcol { | ||||||
|  |     float: left; | ||||||
|  |     width: 46%; | ||||||
|  |     margin-right: 15px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .dashboard #content { | ||||||
|  |     width: 500px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* HEADER */ | ||||||
|  | 
 | ||||||
|  | #header { | ||||||
|  |     width: 100%; | ||||||
|  |     background: #417690; | ||||||
|  |     color: #ffc; | ||||||
|  |     overflow: hidden; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #header a:link, #header a:visited { | ||||||
|  |     color: #fff; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #header a:hover { | ||||||
|  |     text-decoration: underline; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #branding { | ||||||
|  |     float: left; | ||||||
|  | } | ||||||
|  | #branding h1 { | ||||||
|  |     padding: 0 10px; | ||||||
|  |     font-size: 18px; | ||||||
|  |     margin: 8px 0; | ||||||
|  |     font-weight: normal; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #branding h1, #branding h1 a:link, #branding h1 a:visited { | ||||||
|  |     color: #f4f379; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #branding h2 { | ||||||
|  |     padding: 0 10px; | ||||||
|  |     font-size: 14px; | ||||||
|  |     margin: -8px 0 8px 0; | ||||||
|  |     font-weight: normal; | ||||||
|  |     color: #ffc; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #branding a:hover { | ||||||
|  |     text-decoration: none; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #user-tools { | ||||||
|  |     float: right; | ||||||
|  |     padding: 1.2em 10px; | ||||||
|  |     font-size: 11px; | ||||||
|  |     text-align: right; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* SIDEBAR */ | ||||||
|  | 
 | ||||||
|  | #content-related h3 { | ||||||
|  |     font-size: 12px; | ||||||
|  |     color: #666; | ||||||
|  |     margin-bottom: 3px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #content-related h4 { | ||||||
|  |     font-size: 11px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #content-related .module h2 { | ||||||
|  |     background: #eee url(../img/nav-bg.gif) bottom left repeat-x; | ||||||
|  |     color: #666; | ||||||
|  | } | ||||||
							
								
								
									
										293
									
								
								static/admin/css/changelists.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,293 @@ | ||||||
|  | /* CHANGELISTS */ | ||||||
|  | 
 | ||||||
|  | #changelist { | ||||||
|  |     position: relative; | ||||||
|  |     width: 100%; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #changelist table { | ||||||
|  |     width: 100%; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .change-list .hiddenfields { display:none; } | ||||||
|  | 
 | ||||||
|  | .change-list .filtered table { | ||||||
|  |     border-right: 1px solid #ddd; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .change-list .filtered { | ||||||
|  |     min-height: 400px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .change-list .filtered { | ||||||
|  |     background: white url(../img/changelist-bg.gif) top right repeat-y !important; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .change-list .filtered .results, .change-list .filtered .paginator, .filtered #toolbar, .filtered div.xfull { | ||||||
|  |     margin-right: 160px !important; | ||||||
|  |     width: auto !important; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .change-list .filtered table tbody th { | ||||||
|  |     padding-right: 1em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #changelist-form .results { | ||||||
|  |   overflow-x: auto; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #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/nav-bg.gif) 0 180% repeat-x; | ||||||
|  |     overflow: hidden; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .change-list .filtered .paginator { | ||||||
|  |     border-right: 1px solid #ddd; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* CHANGELIST TABLES */ | ||||||
|  | 
 | ||||||
|  | #changelist table thead th { | ||||||
|  |     padding: 0; | ||||||
|  |     white-space: nowrap; | ||||||
|  |     vertical-align: middle; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #changelist table thead th.action-checkbox-column { | ||||||
|  |     width: 1.5em; | ||||||
|  |     text-align: center; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #changelist table tbody td, #changelist table tbody th { | ||||||
|  |     border-left: 1px solid #ddd; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #changelist table tbody td:first-child, #changelist table tbody th:first-child { | ||||||
|  |     border-left: 0; | ||||||
|  |     border-right: 1px solid #ddd; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #changelist table tbody td.action-checkbox { | ||||||
|  |     text-align:center; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #changelist table tfoot { | ||||||
|  |     color: #666; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* TOOLBAR */ | ||||||
|  | 
 | ||||||
|  | #changelist #toolbar { | ||||||
|  |     padding: 3px; | ||||||
|  |     border-bottom: 1px solid #ddd; | ||||||
|  |     background: #e1e1e1 url(../img/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; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #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/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 { | ||||||
|  |     padding: 3px 6px; | ||||||
|  |     font-weight: bold; | ||||||
|  |     list-style-type: none; | ||||||
|  |     display: inline-block; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .change-list ul.toplinks .date-back a { | ||||||
|  |     color: #999; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .change-list ul.toplinks .date-back a:hover { | ||||||
|  |     color: #036; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* 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; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* ACTIONS */ | ||||||
|  | 
 | ||||||
|  | .filtered .actions { | ||||||
|  |     margin-right: 160px !important; | ||||||
|  |     border-right: 1px solid #ddd; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #changelist table input { | ||||||
|  |     margin: 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #changelist table tbody tr.selected { | ||||||
|  |     background-color: #FFFFCC; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #changelist .actions { | ||||||
|  |     color: #999; | ||||||
|  |     padding: 3px; | ||||||
|  |     border-top: 1px solid #fff; | ||||||
|  |     border-bottom: 1px solid #ddd; | ||||||
|  |     background: white url(../img/nav-bg-reverse.gif) 0 -10px repeat-x; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #changelist .actions.selected { | ||||||
|  |     background: #fffccf; | ||||||
|  |     border-top: 1px solid #fffee8; | ||||||
|  |     border-bottom: 1px solid #edecd6; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #changelist .actions span.all, | ||||||
|  | #changelist .actions span.action-counter, | ||||||
|  | #changelist .actions span.clear, | ||||||
|  | #changelist .actions span.question { | ||||||
|  |     font-size: 11px; | ||||||
|  |     margin: 0 0.5em; | ||||||
|  |     display: none; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #changelist .actions:last-child { | ||||||
|  |     border-bottom: none; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #changelist .actions select { | ||||||
|  |     border: 1px solid #aaa; | ||||||
|  |     margin-left: 0.5em; | ||||||
|  |     padding: 1px 2px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #changelist .actions label { | ||||||
|  |     font-size: 11px; | ||||||
|  |     margin-left: 0.5em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #changelist #action-toggle { | ||||||
|  |     display: none; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #changelist .actions .button { | ||||||
|  |     font-size: 11px; | ||||||
|  |     padding: 1px 2px; | ||||||
|  | } | ||||||
							
								
								
									
										30
									
								
								static/admin/css/dashboard.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,30 @@ | ||||||
|  | /* DASHBOARD */ | ||||||
|  | 
 | ||||||
|  | .dashboard .module table th { | ||||||
|  |     width: 100%; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .dashboard .module table td { | ||||||
|  |     white-space: nowrap; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .dashboard .module table td a { | ||||||
|  |     display: block; | ||||||
|  |     padding-right: .6em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* RECENT ACTIONS MODULE */ | ||||||
|  | 
 | ||||||
|  | .module ul.actionlist { | ||||||
|  |     margin-left: 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ul.actionlist li { | ||||||
|  |     list-style-type: none; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ul.actionlist li { | ||||||
|  |     overflow: hidden; | ||||||
|  |     text-overflow: ellipsis; | ||||||
|  |     -o-text-overflow: ellipsis; | ||||||
|  | } | ||||||
							
								
								
									
										376
									
								
								static/admin/css/forms.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,376 @@ | ||||||
|  | @import url('widgets.css'); | ||||||
|  | 
 | ||||||
|  | /* FORM ROWS */ | ||||||
|  | 
 | ||||||
|  | .form-row { | ||||||
|  |     overflow: hidden; | ||||||
|  |     padding: 8px 12px; | ||||||
|  |     font-size: 11px; | ||||||
|  |     border-bottom: 1px solid #eee; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .form-row img, .form-row input { | ||||||
|  |     vertical-align: middle; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | form .form-row p { | ||||||
|  |     padding-left: 0; | ||||||
|  |     font-size: 11px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .hidden { | ||||||
|  |     display: none; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* FORM LABELS */ | ||||||
|  | 
 | ||||||
|  | form h4 { | ||||||
|  |     margin: 0 !important; | ||||||
|  |     padding: 0 !important; | ||||||
|  |     border: none !important; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | label { | ||||||
|  |     font-weight: normal !important; | ||||||
|  |     color: #666; | ||||||
|  |     font-size: 12px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .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: 3px 10px 0 0; | ||||||
|  |     float: left; | ||||||
|  |     width: 8em; | ||||||
|  |     word-wrap: break-word; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .aligned ul label { | ||||||
|  |     display: inline; | ||||||
|  |     float: none; | ||||||
|  |     width: auto; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .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; | ||||||
|  |     padding-left: 4px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField { | ||||||
|  |     width: 610px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .checkbox-row p.help { | ||||||
|  |     margin-left: 0; | ||||||
|  |     padding-left: 0 !important; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | fieldset .field-box { | ||||||
|  |     float: left; | ||||||
|  |     margin-right: 20px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* 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 { | ||||||
|  |     display: block !important; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | fieldset.collapsed h2 { | ||||||
|  |     background-image: url(../img/nav-bg.gif); | ||||||
|  |     background-position: bottom left; | ||||||
|  |     color: #999; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | fieldset.collapsed .collapse-toggle { | ||||||
|  |     background: transparent; | ||||||
|  |     display: inline !important; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* MONOSPACE TEXTAREAS */ | ||||||
|  | 
 | ||||||
|  | fieldset.monospace textarea { | ||||||
|  |     font-family: "Bitstream Vera Sans Mono",Monaco,"Courier New",Courier,monospace; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* SUBMIT ROW */ | ||||||
|  | 
 | ||||||
|  | .submit-row { | ||||||
|  |     padding: 5px 7px; | ||||||
|  |     text-align: right; | ||||||
|  |     background: white url(../img/nav-bg.gif) 0 100% repeat-x; | ||||||
|  |     border: 1px solid #ccc; | ||||||
|  |     margin: 5px 0; | ||||||
|  |     overflow: hidden; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | body.popup .submit-row { | ||||||
|  |     overflow: auto; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .submit-row input { | ||||||
|  |     margin: 0 0 0 5px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .submit-row p { | ||||||
|  |     margin: 0.3em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .submit-row p.deletelink-box { | ||||||
|  |     float: left; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .submit-row .deletelink { | ||||||
|  |     background: url(../img/icon_deletelink.gif) 0 50% no-repeat; | ||||||
|  |     padding-left: 14px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* CUSTOM FORM FIELDS */ | ||||||
|  | 
 | ||||||
|  | .vSelectMultipleField { | ||||||
|  |     vertical-align: top !important; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .vCheckboxField { | ||||||
|  |     border: none; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .vDateField, .vTimeField { | ||||||
|  |     margin-right: 2px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .vDateField { | ||||||
|  |     min-width: 6.85em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .vTimeField { | ||||||
|  |     min-width: 4.7em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .vURLField { | ||||||
|  |     width: 30em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .vLargeTextField, .vXMLLargeTextField { | ||||||
|  |     width: 48em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .flatpages-flatpage #id_content { | ||||||
|  |     height: 40.2em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .module table .vPositiveSmallIntegerField { | ||||||
|  |     width: 2.2em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .vTextField { | ||||||
|  |     width: 20em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .vIntegerField { | ||||||
|  |     width: 5em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .vBigIntegerField { | ||||||
|  |     width: 10em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .vForeignKeyRawIdAdminField { | ||||||
|  |     width: 5em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* INLINES */ | ||||||
|  | 
 | ||||||
|  | .inline-group { | ||||||
|  |     padding: 0; | ||||||
|  |     border: 1px solid #ccc; | ||||||
|  |     margin: 10px 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .inline-group .aligned label { | ||||||
|  |     width: 8em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .inline-related { | ||||||
|  |     position: relative; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .inline-related h3 { | ||||||
|  |     margin: 0; | ||||||
|  |     color: #666; | ||||||
|  |     padding: 3px 5px; | ||||||
|  |     font-size: 11px; | ||||||
|  |     background: #e1e1e1 url(../img/nav-bg.gif) top left repeat-x; | ||||||
|  |     border-bottom: 1px solid #ddd; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .inline-related h3 span.delete { | ||||||
|  |     float: right; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .inline-related h3 span.delete label { | ||||||
|  |     margin-left: 2px; | ||||||
|  |     font-size: 11px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .inline-related fieldset { | ||||||
|  |     margin: 0; | ||||||
|  |     background: #fff; | ||||||
|  |     border: none; | ||||||
|  |     width: 100%; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .inline-related fieldset.module h3 { | ||||||
|  |     margin: 0; | ||||||
|  |     padding: 2px 5px 3px 5px; | ||||||
|  |     font-size: 11px; | ||||||
|  |     text-align: left; | ||||||
|  |     font-weight: bold; | ||||||
|  |     background: #bcd; | ||||||
|  |     color: #fff; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .inline-group .tabular fieldset.module { | ||||||
|  |     border: none; | ||||||
|  |     border-bottom: 1px solid #ddd; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .inline-related.tabular fieldset.module table { | ||||||
|  |     width: 100%; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .last-related fieldset { | ||||||
|  |     border: none; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .inline-group .tabular tr.has_original td { | ||||||
|  |     padding-top: 2em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .inline-group .tabular tr td.original { | ||||||
|  |     padding: 2px 0 0 0; | ||||||
|  |     width: 0; | ||||||
|  |     _position: relative; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .inline-group .tabular th.original { | ||||||
|  |     width: 0px; | ||||||
|  |     padding: 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .inline-group .tabular td.original p { | ||||||
|  |     position: absolute; | ||||||
|  |     left: 0; | ||||||
|  |     height: 1.1em; | ||||||
|  |     padding: 2px 7px; | ||||||
|  |     overflow: hidden; | ||||||
|  |     font-size: 9px; | ||||||
|  |     font-weight: bold; | ||||||
|  |     color: #666; | ||||||
|  |     _width: 700px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .inline-group ul.tools { | ||||||
|  |     padding: 0; | ||||||
|  |     margin: 0; | ||||||
|  |     list-style: none; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .inline-group ul.tools li { | ||||||
|  |     display: inline; | ||||||
|  |     padding: 0 5px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .inline-group div.add-row, | ||||||
|  | .inline-group .tabular tr.add-row td { | ||||||
|  |     color: #666; | ||||||
|  |     padding: 3px 5px; | ||||||
|  |     border-bottom: 1px solid #ddd; | ||||||
|  |     background: #e1e1e1 url(../img/nav-bg.gif) top left repeat-x; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .inline-group .tabular tr.add-row td { | ||||||
|  |     padding: 4px 5px 3px; | ||||||
|  |     border-bottom: none; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .inline-group ul.tools a.add, | ||||||
|  | .inline-group div.add-row a, | ||||||
|  | .inline-group .tabular tr.add-row td a { | ||||||
|  |     background: url(../img/icon_addlink.gif) 0 50% no-repeat; | ||||||
|  |     padding-left: 14px; | ||||||
|  |     font-size: 11px; | ||||||
|  |     outline: 0; /* Remove dotted border around link */ | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .empty-form { | ||||||
|  |     display: none; | ||||||
|  | } | ||||||
							
								
								
									
										63
									
								
								static/admin/css/ie.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,63 @@ | ||||||
|  | /* IE 6 & 7 */ | ||||||
|  | 
 | ||||||
|  | /* Proper fixed width for dashboard in IE6 */ | ||||||
|  | 
 | ||||||
|  | .dashboard #content { | ||||||
|  |     *width: 768px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .dashboard #content-main { | ||||||
|  |     *width: 535px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* IE 6 ONLY */ | ||||||
|  | 
 | ||||||
|  | /* Keep header from flowing off the page */ | ||||||
|  | 
 | ||||||
|  | #container { | ||||||
|  |     _position: static; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* Put the right sidebars back on the page */ | ||||||
|  | 
 | ||||||
|  | .colMS #content-related { | ||||||
|  |     _margin-right: 0; | ||||||
|  |     _margin-left: 10px; | ||||||
|  |     _position: static; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* Put the left sidebars back on the page */ | ||||||
|  | 
 | ||||||
|  | .colSM #content-related { | ||||||
|  |     _margin-right: 10px; | ||||||
|  |     _margin-left: -115px; | ||||||
|  |     _position: static; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .form-row { | ||||||
|  |     _height: 1%; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* Fix right margin for changelist filters in IE6 */ | ||||||
|  | 
 | ||||||
|  | #changelist-filter ul { | ||||||
|  |     _margin-right: -10px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* IE ignores min-height, but treats height as if it were min-height */ | ||||||
|  | 
 | ||||||
|  | .change-list .filtered { | ||||||
|  |     _height: 400px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* IE doesn't know alpha transparency in PNGs */ | ||||||
|  | 
 | ||||||
|  | .inline-deletelink { | ||||||
|  |     background: transparent url(../img/inline-delete-8bit.png) no-repeat; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* IE7 doesn't support inline-block */ | ||||||
|  | .change-list ul.toplinks li { | ||||||
|  |     zoom: 1; | ||||||
|  |     *display: inline; | ||||||
|  | } | ||||||
							
								
								
									
										60
									
								
								static/admin/css/login.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,60 @@ | ||||||
|  | /* LOGIN FORM */ | ||||||
|  | 
 | ||||||
|  | body.login { | ||||||
|  |     background: #eee; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .login #container { | ||||||
|  |     background: white; | ||||||
|  |     border: 1px solid #ccc; | ||||||
|  |     width: 28em; | ||||||
|  |     min-width: 300px; | ||||||
|  |     margin-left: auto; | ||||||
|  |     margin-right: auto; | ||||||
|  |     margin-top: 100px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .login #content-main { | ||||||
|  |     width: 100%; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .login form { | ||||||
|  |     margin-top: 1em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .login .form-row { | ||||||
|  |     padding: 4px 0; | ||||||
|  |     float: left; | ||||||
|  |     width: 100%; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .login .form-row label { | ||||||
|  |     padding-right: 0.5em; | ||||||
|  |     line-height: 2em; | ||||||
|  |     font-size: 1em; | ||||||
|  |     clear: both; | ||||||
|  |     color: #333; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .login .form-row #id_username, .login .form-row #id_password { | ||||||
|  |     clear: both; | ||||||
|  |     padding: 6px; | ||||||
|  |     width: 100%; | ||||||
|  |     -webkit-box-sizing: border-box; | ||||||
|  |        -moz-box-sizing: border-box; | ||||||
|  |             box-sizing: border-box; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .login span.help { | ||||||
|  |     font-size: 10px; | ||||||
|  |     display: block; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .login .submit-row { | ||||||
|  |     clear: both; | ||||||
|  |     padding: 1em 0 0 9.4em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .login .password-reset-link { | ||||||
|  |     text-align: center; | ||||||
|  | } | ||||||
							
								
								
									
										250
									
								
								static/admin/css/rtl.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,250 @@ | ||||||
|  | body { | ||||||
|  |     direction: rtl; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* LOGIN */ | ||||||
|  | 
 | ||||||
|  | .login .form-row { | ||||||
|  |     float: right; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .login .form-row label { | ||||||
|  |     float: right; | ||||||
|  |     padding-left: 0.5em; | ||||||
|  |     padding-right: 0; | ||||||
|  |     text-align: left; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .login .submit-row { | ||||||
|  |     clear: both; | ||||||
|  |     padding: 1em 9.4em 0 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* GLOBAL */ | ||||||
|  | 
 | ||||||
|  | th { | ||||||
|  |     text-align: right; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .module h2, .module caption { | ||||||
|  |     text-align: right; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .addlink, .changelink { | ||||||
|  |     padding-left: 0px; | ||||||
|  |     padding-right: 12px; | ||||||
|  |     background-position: 100% 0.2em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .deletelink { | ||||||
|  |     padding-left: 0px; | ||||||
|  |     padding-right: 12px; | ||||||
|  |     background-position: 100% 0.25em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .object-tools { | ||||||
|  |     float: left; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | thead th:first-child, | ||||||
|  | tfoot td:first-child { | ||||||
|  |     border-left: 1px solid #ddd !important; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* LAYOUT */ | ||||||
|  | 
 | ||||||
|  | #user-tools { | ||||||
|  |     right: auto; | ||||||
|  |     left: 0; | ||||||
|  |     text-align: left; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | div.breadcrumbs { | ||||||
|  |     text-align: right; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #content-main { | ||||||
|  |     float: right; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #content-related { | ||||||
|  |     float: left; | ||||||
|  |     margin-left: -19em; | ||||||
|  |     margin-right: auto; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .colMS { | ||||||
|  |     margin-left: 20em !important; | ||||||
|  |     margin-right: 10px !important; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* SORTABLE TABLES */ | ||||||
|  | 
 | ||||||
|  | table thead th.sorted .sortoptions { | ||||||
|  |    float: left; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | thead th.sorted .text { | ||||||
|  | 	padding-right: 0; | ||||||
|  | 	padding-left: 42px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* dashboard styles */ | ||||||
|  | 
 | ||||||
|  | .dashboard .module table td a { | ||||||
|  |     padding-left: .6em; | ||||||
|  |     padding-right: 12px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* changelists styles */ | ||||||
|  | 
 | ||||||
|  | .change-list .filtered { | ||||||
|  |     background: white url(../img/changelist-bg_rtl.gif) top left repeat-y !important; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .change-list .filtered table { | ||||||
|  |     border-left: 1px solid #ddd; | ||||||
|  |     border-right: 0px none; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #changelist-filter { | ||||||
|  |     right: auto; | ||||||
|  |     left: 0; | ||||||
|  |     border-left: 0px none; | ||||||
|  |     border-right: 1px solid #ddd; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .change-list .filtered .results, .change-list .filtered .paginator, .filtered #toolbar, .filtered div.xfull { | ||||||
|  |     margin-right: 0px !important; | ||||||
|  |     margin-left: 160px !important; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #changelist-filter li.selected { | ||||||
|  |     border-left: 0px none; | ||||||
|  |     padding-left: 0px; | ||||||
|  |     margin-left: 0; | ||||||
|  |     border-right: 5px solid #ccc; | ||||||
|  |     padding-right: 5px; | ||||||
|  |     margin-right: -10px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .filtered .actions { | ||||||
|  |     border-left:1px solid #DDDDDD; | ||||||
|  |     margin-left:160px !important; | ||||||
|  |     border-right: 0 none; | ||||||
|  |     margin-right:0 !important; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #changelist table tbody td:first-child, #changelist table tbody th:first-child { | ||||||
|  |     border-right: 0; | ||||||
|  |     border-left: 1px solid #ddd; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* FORMS */ | ||||||
|  | 
 | ||||||
|  | .aligned label { | ||||||
|  |     padding: 0 0 3px 1em; | ||||||
|  |     float: right; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .submit-row { | ||||||
|  |     text-align: left | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .submit-row p.deletelink-box { | ||||||
|  |     float: right; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .submit-row .deletelink { | ||||||
|  |     background: url(../img/icon_deletelink.gif) 0 50% no-repeat; | ||||||
|  |     padding-right: 14px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .vDateField, .vTimeField { | ||||||
|  |     margin-left: 2px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | form ul.inline li { | ||||||
|  |     float: right; | ||||||
|  |     padding-right: 0; | ||||||
|  |     padding-left: 7px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | input[type=submit].default, .submit-row input.default { | ||||||
|  |     float: left; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | fieldset .field-box { | ||||||
|  |     float: right; | ||||||
|  |     margin-left: 20px; | ||||||
|  |     margin-right: 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .errorlist li { | ||||||
|  |     background-position: 100% .3em; | ||||||
|  |     padding: 4px 25px 4px 5px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .errornote { | ||||||
|  |     background-position: 100% .3em; | ||||||
|  |     padding: 4px 25px 4px 5px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* WIDGETS */ | ||||||
|  | 
 | ||||||
|  | .calendarnav-previous { | ||||||
|  |     top: 0; | ||||||
|  |     left: auto; | ||||||
|  |     right: 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .calendarnav-next { | ||||||
|  |     top: 0; | ||||||
|  |     right: auto; | ||||||
|  |     left: 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .calendar caption, .calendarbox h2 { | ||||||
|  |     text-align: center; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .selector { | ||||||
|  |     float: right; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .selector .selector-filter { | ||||||
|  |     text-align: right; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .inline-deletelink { | ||||||
|  |     float: left; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* MISC */ | ||||||
|  | 
 | ||||||
|  | .inline-related h2, .inline-group h2 { | ||||||
|  |     text-align: right | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .inline-related h3 span.delete { | ||||||
|  |     padding-right: 20px; | ||||||
|  |     padding-left: inherit; | ||||||
|  |     left: 10px; | ||||||
|  |     right: inherit; | ||||||
|  |     float:left; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .inline-related h3 span.delete label { | ||||||
|  |     margin-left: inherit; | ||||||
|  |     margin-right: 2px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* IE7 specific bug fixes */ | ||||||
|  | 
 | ||||||
|  | div.colM { | ||||||
|  |     position: relative; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .submit-row input { | ||||||
|  |     float: left; | ||||||
|  | } | ||||||
							
								
								
									
										578
									
								
								static/admin/css/widgets.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,578 @@ | ||||||
|  | /* SELECTOR (FILTER INTERFACE) */ | ||||||
|  | 
 | ||||||
|  | .selector { | ||||||
|  |     width: 840px; | ||||||
|  |     float: left; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .selector select { | ||||||
|  |     width: 400px; | ||||||
|  |     height: 17.2em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .selector-available, .selector-chosen { | ||||||
|  |     float: left; | ||||||
|  |     width: 400px; | ||||||
|  |     text-align: center; | ||||||
|  |     margin-bottom: 5px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .selector-chosen select { | ||||||
|  |     border-top: none; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .selector-available h2, .selector-chosen h2 { | ||||||
|  |     border: 1px solid #ccc; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .selector .selector-available h2 { | ||||||
|  |     background: white url(../img/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-filter label, | ||||||
|  | .inline-group .aligned .selector .selector-filter label { | ||||||
|  |     width: 16px; | ||||||
|  |     padding: 2px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .selector .selector-available input { | ||||||
|  |     width: 360px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .selector ul.selector-chooser { | ||||||
|  |     float: left; | ||||||
|  |     width: 22px; | ||||||
|  |     background-color: #eee; | ||||||
|  |     border-radius: 10px; | ||||||
|  |     margin: 10em 5px 0 5px; | ||||||
|  |     padding: 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .selector-chooser li { | ||||||
|  |     margin: 0; | ||||||
|  |     padding: 3px; | ||||||
|  |     list-style-type: none; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .selector select { | ||||||
|  |     margin-bottom: 10px; | ||||||
|  |     margin-top: 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .selector-add, .selector-remove { | ||||||
|  |     width: 16px; | ||||||
|  |     height: 16px; | ||||||
|  |     display: block; | ||||||
|  |     text-indent: -3000px; | ||||||
|  |     overflow: hidden; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .selector-add { | ||||||
|  |     background: url(../img/selector-icons.gif) 0 -161px no-repeat; | ||||||
|  |     cursor: default; | ||||||
|  |     margin-bottom: 2px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .active.selector-add { | ||||||
|  |     background: url(../img/selector-icons.gif) 0 -187px no-repeat; | ||||||
|  |     cursor: pointer; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .selector-remove { | ||||||
|  |     background: url(../img/selector-icons.gif) 0 -109px no-repeat; | ||||||
|  |     cursor: default; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .active.selector-remove { | ||||||
|  |     background: url(../img/selector-icons.gif) 0 -135px no-repeat; | ||||||
|  |     cursor: pointer; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | a.selector-chooseall, a.selector-clearall { | ||||||
|  |     display: inline-block; | ||||||
|  |     text-align: left; | ||||||
|  |     margin-left: auto; | ||||||
|  |     margin-right: auto; | ||||||
|  |     font-weight: bold; | ||||||
|  |     color: #666; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | a.selector-chooseall { | ||||||
|  |     padding: 3px 18px 3px 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | a.selector-clearall { | ||||||
|  |     padding: 3px 0 3px 18px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | a.active.selector-chooseall:hover, a.active.selector-clearall:hover { | ||||||
|  |     color: #036; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | a.selector-chooseall { | ||||||
|  |     background: url(../img/selector-icons.gif) right -263px no-repeat; | ||||||
|  |     cursor: default; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | a.active.selector-chooseall { | ||||||
|  |     background: url(../img/selector-icons.gif) right -289px no-repeat; | ||||||
|  |     cursor: pointer; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | a.selector-clearall { | ||||||
|  |     background: url(../img/selector-icons.gif) left -211px no-repeat; | ||||||
|  |     cursor: default; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | a.active.selector-clearall { | ||||||
|  |     background: url(../img/selector-icons.gif) left -237px no-repeat; | ||||||
|  |     cursor: pointer; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* STACKED SELECTORS */ | ||||||
|  | 
 | ||||||
|  | .stacked { | ||||||
|  |     float: left; | ||||||
|  |     width: 500px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .stacked select { | ||||||
|  |     width: 480px; | ||||||
|  |     height: 10.1em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .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-color: #eee; | ||||||
|  |     border-radius: 10px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .stacked .selector-chooser li { | ||||||
|  |     float: left; | ||||||
|  |     padding: 3px 3px 3px 5px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .stacked .selector-chooseall, .stacked .selector-clearall { | ||||||
|  |     display: none; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .stacked .selector-add { | ||||||
|  |     background: url(../img/selector-icons.gif) 0 -57px no-repeat; | ||||||
|  |     cursor: default; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .stacked .active.selector-add { | ||||||
|  |     background: url(../img/selector-icons.gif) 0 -83px no-repeat; | ||||||
|  |     cursor: pointer; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .stacked .selector-remove { | ||||||
|  |     background: url(../img/selector-icons.gif) 0 -5px no-repeat; | ||||||
|  |     cursor: default; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .stacked .active.selector-remove { | ||||||
|  |     background: url(../img/selector-icons.gif) 0 -31px no-repeat; | ||||||
|  |     cursor: pointer; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* 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; | ||||||
|  |     color: #ccc; | ||||||
|  |     font-weight: normal; | ||||||
|  |     white-space: nowrap; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | table p.datetime { | ||||||
|  |     font-size: 10px; | ||||||
|  |     margin-left: 0; | ||||||
|  |     padding-left: 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* URL */ | ||||||
|  | 
 | ||||||
|  | p.url { | ||||||
|  |     line-height: 20px; | ||||||
|  |     margin: 0; | ||||||
|  |     padding: 0; | ||||||
|  |     color: #666; | ||||||
|  |     font-size: 11px; | ||||||
|  |     font-weight: bold; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .url a { | ||||||
|  |     font-weight: normal; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* 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; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | span.clearable-file-input label { | ||||||
|  |     color: #333; | ||||||
|  |     font-size: 11px; | ||||||
|  |     display: inline; | ||||||
|  |     float: none; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* CALENDARS & CLOCKS */ | ||||||
|  | 
 | ||||||
|  | .calendarbox, .clockbox { | ||||||
|  |     margin: 5px auto; | ||||||
|  |     font-size: 11px; | ||||||
|  |     width: 16em; | ||||||
|  |     text-align: center; | ||||||
|  |     background: white; | ||||||
|  |     position: relative; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .clockbox { | ||||||
|  |     width: auto; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .calendar { | ||||||
|  |     margin: 0; | ||||||
|  |     padding: 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .calendar table { | ||||||
|  |     margin: 0; | ||||||
|  |     padding: 0; | ||||||
|  |     border-collapse: collapse; | ||||||
|  |     background: white; | ||||||
|  |     width: 100%; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .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/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/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 !important; | ||||||
|  |     font-size: 10px; | ||||||
|  |     background: #e1e1e1 url(../img/nav-bg.gif) 0 50% repeat-x; | ||||||
|  |     border-top: 1px solid #ddd; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .calendar-cancel:hover { | ||||||
|  |     background: #e1e1e1 url(../img/nav-bg-reverse.gif) 0 50% repeat-x; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .calendar-cancel a { | ||||||
|  |     color: black; | ||||||
|  |     display: block; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ul.timelist, .timelist li { | ||||||
|  |     list-style-type: none; | ||||||
|  |     margin: 0; | ||||||
|  |     padding: 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .timelist a { | ||||||
|  |     padding: 2px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* INLINE ORDERER */ | ||||||
|  | 
 | ||||||
|  | ul.orderer { | ||||||
|  |     position: relative; | ||||||
|  |     padding: 0 !important; | ||||||
|  |     margin: 0 !important; | ||||||
|  |     list-style-type: none; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ul.orderer li { | ||||||
|  |     list-style-type: none; | ||||||
|  |     display: block; | ||||||
|  |     padding: 0; | ||||||
|  |     margin: 0; | ||||||
|  |     border: 1px solid #bbb; | ||||||
|  |     border-width: 0 1px 1px 0; | ||||||
|  |     white-space: nowrap; | ||||||
|  |     overflow: hidden; | ||||||
|  |     background: #e2e2e2 url(../img/nav-bg-grabber.gif) repeat-y; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ul.orderer li:hover { | ||||||
|  |     cursor: move; | ||||||
|  |     background-color: #ddd; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ul.orderer li a.selector { | ||||||
|  |     margin-left: 12px; | ||||||
|  |     overflow: hidden; | ||||||
|  |     width: 83%; | ||||||
|  |     font-size: 10px !important; | ||||||
|  |     padding: 0.6em 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ul.orderer li a:link, ul.orderer li a:visited { | ||||||
|  |     color: #333; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ul.orderer li .inline-deletelink { | ||||||
|  |     position: absolute; | ||||||
|  |     right: 4px; | ||||||
|  |     margin-top: 0.6em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ul.orderer li.selected { | ||||||
|  |     background-color: #f8f8f8; | ||||||
|  |     border-right-color: #f8f8f8; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ul.orderer li.deleted { | ||||||
|  |     background: #bbb url(../img/deleted-overlay.gif); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ul.orderer li.deleted a:link, ul.orderer li.deleted a:visited { | ||||||
|  |     color: #888; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ul.orderer li.deleted .inline-deletelink { | ||||||
|  |     background-image: url(../img/inline-restore.png); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ul.orderer li.deleted:hover, ul.orderer li.deleted a.selector:hover { | ||||||
|  |     cursor: default; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* EDIT INLINE */ | ||||||
|  | 
 | ||||||
|  | .inline-deletelink { | ||||||
|  |     float: right; | ||||||
|  |     text-indent: -9999px; | ||||||
|  |     background: transparent url(../img/inline-delete.png) no-repeat; | ||||||
|  |     width: 15px; | ||||||
|  |     height: 15px; | ||||||
|  |     border: 0px none; | ||||||
|  |     outline: 0; /* Remove dotted border around link */ | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .inline-deletelink:hover { | ||||||
|  |     background-position: -15px 0; | ||||||
|  |     cursor: pointer; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .editinline button.addlink { | ||||||
|  |     border: 0px none; | ||||||
|  |     color: #5b80b2; | ||||||
|  |     font-size: 100%; | ||||||
|  |     cursor: pointer; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .editinline button.addlink:hover { | ||||||
|  |     color: #036; | ||||||
|  |     cursor: pointer; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .editinline table .help { | ||||||
|  |     text-align: right; | ||||||
|  |     float: right; | ||||||
|  |     padding-left: 2em; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .editinline tfoot .addlink { | ||||||
|  |     white-space: nowrap; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .editinline table thead th:last-child { | ||||||
|  |     border-left: none; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .editinline tr.deleted { | ||||||
|  |     background: #ddd url(../img/deleted-overlay.gif); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .editinline tr.deleted .inline-deletelink { | ||||||
|  |     background-image: url(../img/inline-restore.png); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .editinline tr.deleted td:hover { | ||||||
|  |     cursor: default; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .editinline tr.deleted td:first-child { | ||||||
|  |     background-image: none !important; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* EDIT INLINE - STACKED */ | ||||||
|  | 
 | ||||||
|  | .editinline-stacked { | ||||||
|  |     min-width: 758px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .editinline-stacked .inline-object { | ||||||
|  |     margin-left: 210px; | ||||||
|  |     background: white; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .editinline-stacked .inline-source { | ||||||
|  |     float: left; | ||||||
|  |     width: 200px; | ||||||
|  |     background: #f8f8f8; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .editinline-stacked .inline-splitter { | ||||||
|  |     float: left; | ||||||
|  |     width: 9px; | ||||||
|  |     background: #f8f8f8 url(../img/inline-splitter-bg.gif) 50% 50% no-repeat; | ||||||
|  |     border-right: 1px solid #ccc; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .editinline-stacked .controls { | ||||||
|  |     clear: both; | ||||||
|  |     background: #e1e1e1 url(../img/nav-bg.gif) top left repeat-x; | ||||||
|  |     padding: 3px 4px; | ||||||
|  |     font-size: 11px; | ||||||
|  |     border-top: 1px solid #ddd; | ||||||
|  | } | ||||||
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/changelist-bg.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 50 B | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/changelist-bg_rtl.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 75 B | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/default-bg-reverse.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 835 B | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/default-bg.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 836 B | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/deleted-overlay.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 45 B | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/gis/move_vertex_off.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 711 B | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/gis/move_vertex_on.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 506 B | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/icon-no.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 176 B | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/icon-unknown.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 130 B | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/icon-yes.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.3 KiB | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/icon_addlink.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.2 KiB | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/icon_alert.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 145 B | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/icon_calendar.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.4 KiB | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/icon_changelink.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.2 KiB | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/icon_clock.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.2 KiB | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/icon_deletelink.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.2 KiB | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/icon_error.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 319 B | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/icon_searchbox.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.1 KiB | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/icon_success.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 341 B | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/inline-delete-8bit.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 395 B | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/inline-delete.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 707 B | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/inline-restore-8bit.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 363 B | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/inline-restore.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 557 B | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/inline-splitter-bg.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 94 B | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/nav-bg-grabber.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 116 B | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/nav-bg-reverse.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 178 B | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/nav-bg-selected.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 265 B | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/nav-bg.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 265 B | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/selector-icons.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 4.3 KiB | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/selector-search.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.2 KiB | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/sorting-icons.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 369 B | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/tooltag-add.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 119 B | 
							
								
								
									
										
											BIN
										
									
								
								static/admin/img/tooltag-arrowright.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 200 B | 
							
								
								
									
										20
									
								
								static/admin/js/LICENSE-JQUERY.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,20 @@ | ||||||
|  | Copyright (c) 2010 John Resig, http://jquery.com/ | ||||||
|  |   | ||||||
|  | Permission is hereby granted, free of charge, to any person obtaining | ||||||
|  | a copy of this software and associated documentation files (the | ||||||
|  | "Software"), to deal in the Software without restriction, including | ||||||
|  | without limitation the rights to use, copy, modify, merge, publish, | ||||||
|  | distribute, sublicense, and/or sell copies of the Software, and to | ||||||
|  | permit persons to whom the Software is furnished to do so, subject to | ||||||
|  | the following conditions: | ||||||
|  |   | ||||||
|  | The above copyright notice and this permission notice shall be | ||||||
|  | included in all copies or substantial portions of the Software. | ||||||
|  |   | ||||||
|  | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||||||
|  | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||||||
|  | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||||||
|  | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE | ||||||
|  | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | ||||||
|  | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | ||||||
|  | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||||
							
								
								
									
										114
									
								
								static/admin/js/SelectBox.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,114 @@ | ||||||
|  | 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) { | ||||||
|  |                 var new_option = new Option(node.text, node.value, false, false); | ||||||
|  |                 // Shows a tooltip when hovering over the option
 | ||||||
|  |                 new_option.setAttribute("title", node.text); | ||||||
|  |                 box.options[box.options.length] = new_option; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  |     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}); | ||||||
|  |     }, | ||||||
|  |     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++) { | ||||||
|  |             if (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); | ||||||
|  |     }, | ||||||
|  |     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'; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										161
									
								
								static/admin/js/SelectFilter2.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,161 @@ | ||||||
|  | /* | ||||||
|  | SelectFilter2 - Turns a multiple-select box into a filter interface. | ||||||
|  | 
 | ||||||
|  | Requires core.js, SelectBox.js and addevent.js. | ||||||
|  | */ | ||||||
|  | (function($) { | ||||||
|  | function findForm(node) { | ||||||
|  |     // returns the node of the form containing the given node
 | ||||||
|  |     if (node.tagName.toLowerCase() != 'form') { | ||||||
|  |         return findForm(node.parentNode); | ||||||
|  |     } | ||||||
|  |     return node; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | window.SelectFilter = { | ||||||
|  |     init: function(field_id, field_name, is_stacked, admin_static_prefix) { | ||||||
|  |         if (field_id.match(/__prefix__/)){ | ||||||
|  |             // Don't initialize on empty forms.
 | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  |         var from_box = document.getElementById(field_id); | ||||||
|  |         from_box.id += '_from'; // change its ID
 | ||||||
|  |         from_box.className = 'filtered'; | ||||||
|  | 
 | ||||||
|  |         var ps = from_box.parentNode.getElementsByTagName('p'); | ||||||
|  |         for (var i=0; i<ps.length; i++) { | ||||||
|  |             if (ps[i].className.indexOf("info") != -1) { | ||||||
|  |                 // Remove <p class="info">, because it just gets in the way.
 | ||||||
|  |                 from_box.parentNode.removeChild(ps[i]); | ||||||
|  |             } else if (ps[i].className.indexOf("help") != -1) { | ||||||
|  |                 // Move help text up to the top so it isn't below the select
 | ||||||
|  |                 // boxes or wrapped off on the side to the right of the add
 | ||||||
|  |                 // button:
 | ||||||
|  |                 from_box.parentNode.insertBefore(ps[i], from_box.parentNode.firstChild); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // <div class="selector"> or <div class="selector stacked">
 | ||||||
|  |         var selector_div = quickElement('div', from_box.parentNode); | ||||||
|  |         selector_div.className = is_stacked ? 'selector stacked' : 'selector'; | ||||||
|  | 
 | ||||||
|  |         // <div class="selector-available">
 | ||||||
|  |         var selector_available = quickElement('div', selector_div); | ||||||
|  |         selector_available.className = 'selector-available'; | ||||||
|  |         var title_available = quickElement('h2', selector_available, interpolate(gettext('Available %s') + ' ', [field_name])); | ||||||
|  |         quickElement('img', title_available, '', 'src', admin_static_prefix + 'img/icon-unknown.gif', 'width', '10', 'height', '10', 'class', 'help help-tooltip', 'title', interpolate(gettext('This is the list of available %s. You may choose some by selecting them in the box below and then clicking the "Choose" arrow between the two boxes.'), [field_name])); | ||||||
|  | 
 | ||||||
|  |         var filter_p = quickElement('p', selector_available, '', 'id', field_id + '_filter'); | ||||||
|  |         filter_p.className = 'selector-filter'; | ||||||
|  | 
 | ||||||
|  |         var search_filter_label = quickElement('label', filter_p, '', 'for', field_id + "_input"); | ||||||
|  | 
 | ||||||
|  |         var search_selector_img = quickElement('img', search_filter_label, '', 'src', admin_static_prefix + 'img/selector-search.gif', 'class', 'help-tooltip', 'alt', '', 'title', interpolate(gettext("Type into this box to filter down the list of available %s."), [field_name])); | ||||||
|  | 
 | ||||||
|  |         filter_p.appendChild(document.createTextNode(' ')); | ||||||
|  | 
 | ||||||
|  |         var filter_input = quickElement('input', filter_p, '', 'type', 'text', 'placeholder', gettext("Filter")); | ||||||
|  |         filter_input.id = field_id + '_input'; | ||||||
|  | 
 | ||||||
|  |         selector_available.appendChild(from_box); | ||||||
|  |         var choose_all = quickElement('a', selector_available, gettext('Choose all'), 'title', interpolate(gettext('Click to choose all %s at once.'), [field_name]), 'href', 'javascript: (function(){ SelectBox.move_all("' + field_id + '_from", "' + field_id + '_to"); SelectFilter.refresh_icons("' + field_id + '");})()', 'id', field_id + '_add_all_link'); | ||||||
|  |         choose_all.className = 'selector-chooseall'; | ||||||
|  | 
 | ||||||
|  |         // <ul class="selector-chooser">
 | ||||||
|  |         var selector_chooser = quickElement('ul', selector_div); | ||||||
|  |         selector_chooser.className = 'selector-chooser'; | ||||||
|  |         var add_link = quickElement('a', quickElement('li', selector_chooser), gettext('Choose'), 'title', gettext('Choose'), 'href', 'javascript: (function(){ SelectBox.move("' + field_id + '_from","' + field_id + '_to"); SelectFilter.refresh_icons("' + field_id + '");})()', 'id', field_id + '_add_link'); | ||||||
|  |         add_link.className = 'selector-add'; | ||||||
|  |         var remove_link = quickElement('a', quickElement('li', selector_chooser), gettext('Remove'), 'title', gettext('Remove'), 'href', 'javascript: (function(){ SelectBox.move("' + field_id + '_to","' + field_id + '_from"); SelectFilter.refresh_icons("' + field_id + '");})()', 'id', field_id + '_remove_link'); | ||||||
|  |         remove_link.className = 'selector-remove'; | ||||||
|  | 
 | ||||||
|  |         // <div class="selector-chosen">
 | ||||||
|  |         var selector_chosen = quickElement('div', selector_div); | ||||||
|  |         selector_chosen.className = 'selector-chosen'; | ||||||
|  |         var title_chosen = quickElement('h2', selector_chosen, interpolate(gettext('Chosen %s') + ' ', [field_name])); | ||||||
|  |         quickElement('img', title_chosen, '', 'src', admin_static_prefix + 'img/icon-unknown.gif', 'width', '10', 'height', '10', 'class', 'help help-tooltip', 'title', interpolate(gettext('This is the list of chosen %s. You may remove some by selecting them in the box below and then clicking the "Remove" arrow between the two boxes.'), [field_name])); | ||||||
|  | 
 | ||||||
|  |         var to_box = quickElement('select', selector_chosen, '', 'id', field_id + '_to', 'multiple', 'multiple', 'size', from_box.size, 'name', from_box.getAttribute('name')); | ||||||
|  |         to_box.className = 'filtered'; | ||||||
|  |         var clear_all = quickElement('a', selector_chosen, gettext('Remove all'), 'title', interpolate(gettext('Click to remove all chosen %s at once.'), [field_name]), 'href', 'javascript: (function() { SelectBox.move_all("' + field_id + '_to", "' + field_id + '_from"); SelectFilter.refresh_icons("' + field_id + '");})()', 'id', field_id + '_remove_all_link'); | ||||||
|  |         clear_all.className = 'selector-clearall'; | ||||||
|  | 
 | ||||||
|  |         from_box.setAttribute('name', from_box.getAttribute('name') + '_old'); | ||||||
|  | 
 | ||||||
|  |         // Set up the JavaScript event handlers for the select box filter interface
 | ||||||
|  |         addEvent(filter_input, 'keyup', function(e) { SelectFilter.filter_key_up(e, field_id); }); | ||||||
|  |         addEvent(filter_input, 'keydown', function(e) { SelectFilter.filter_key_down(e, field_id); }); | ||||||
|  |         addEvent(from_box, 'change', function(e) { SelectFilter.refresh_icons(field_id) }); | ||||||
|  |         addEvent(to_box, 'change', function(e) { SelectFilter.refresh_icons(field_id) }); | ||||||
|  |         addEvent(from_box, 'dblclick', function() { SelectBox.move(field_id + '_from', field_id + '_to'); SelectFilter.refresh_icons(field_id); }); | ||||||
|  |         addEvent(to_box, 'dblclick', function() { SelectBox.move(field_id + '_to', field_id + '_from'); SelectFilter.refresh_icons(field_id); }); | ||||||
|  |         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'); | ||||||
|  | 
 | ||||||
|  |         if (!is_stacked) { | ||||||
|  |             // In horizontal mode, give the same height to the two boxes.
 | ||||||
|  |             var j_from_box = $(from_box); | ||||||
|  |             var j_to_box = $(to_box); | ||||||
|  |             var resize_filters = function() { j_to_box.height($(filter_p).outerHeight() + j_from_box.outerHeight()); } | ||||||
|  |             if (j_from_box.outerHeight() > 0) { | ||||||
|  |                 resize_filters(); // This fieldset is already open. Resize now.
 | ||||||
|  |             } else { | ||||||
|  |                 // This fieldset is probably collapsed. Wait for its 'show' event.
 | ||||||
|  |                 j_to_box.closest('fieldset').one('show.fieldset', resize_filters); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // Initial icon refresh
 | ||||||
|  |         SelectFilter.refresh_icons(field_id); | ||||||
|  |     }, | ||||||
|  |     refresh_icons: function(field_id) { | ||||||
|  |         var from = $('#' + field_id + '_from'); | ||||||
|  |         var to = $('#' + field_id + '_to'); | ||||||
|  |         var is_from_selected = from.find('option:selected').length > 0; | ||||||
|  |         var is_to_selected = to.find('option:selected').length > 0; | ||||||
|  |         // Active if at least one item is selected
 | ||||||
|  |         $('#' + field_id + '_add_link').toggleClass('active', is_from_selected); | ||||||
|  |         $('#' + field_id + '_remove_link').toggleClass('active', is_to_selected); | ||||||
|  |         // Active if the corresponding box isn't empty
 | ||||||
|  |         $('#' + field_id + '_add_all_link').toggleClass('active', from.find('option').length > 0); | ||||||
|  |         $('#' + field_id + '_remove_all_link').toggleClass('active', to.find('option').length > 0); | ||||||
|  |     }, | ||||||
|  |     filter_key_up: function(event, field_id) { | ||||||
|  |         var 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) { | ||||||
|  |         var 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; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | })(django.jQuery); | ||||||
							
								
								
									
										144
									
								
								static/admin/js/actions.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,144 @@ | ||||||
|  | (function($) { | ||||||
|  | 	var lastChecked; | ||||||
|  | 
 | ||||||
|  | 	$.fn.actions = function(opts) { | ||||||
|  | 		var options = $.extend({}, $.fn.actions.defaults, opts); | ||||||
|  | 		var actionCheckboxes = $(this); | ||||||
|  | 		var list_editable_changed = false; | ||||||
|  | 		var checker = function(checked) { | ||||||
|  | 			if (checked) { | ||||||
|  | 				showQuestion(); | ||||||
|  | 			} else { | ||||||
|  | 				reset(); | ||||||
|  | 			} | ||||||
|  | 			$(actionCheckboxes).prop("checked", checked) | ||||||
|  | 				.parent().parent().toggleClass(options.selectedClass, checked); | ||||||
|  | 		}, | ||||||
|  | 		updateCounter = function() { | ||||||
|  | 			var sel = $(actionCheckboxes).filter(":checked").length; | ||||||
|  | 			// _actions_icnt is defined in the generated HTML
 | ||||||
|  | 			// and contains the total amount of objects in the queryset
 | ||||||
|  | 			$(options.counterContainer).html(interpolate( | ||||||
|  | 			ngettext('%(sel)s of %(cnt)s selected', '%(sel)s of %(cnt)s selected', sel), { | ||||||
|  | 				sel: sel, | ||||||
|  | 				cnt: _actions_icnt | ||||||
|  | 			}, true)); | ||||||
|  | 			$(options.allToggle).prop("checked", function() { | ||||||
|  | 				var value; | ||||||
|  | 				if (sel == actionCheckboxes.length) { | ||||||
|  | 					value = true; | ||||||
|  | 					showQuestion(); | ||||||
|  | 				} else { | ||||||
|  | 					value = false; | ||||||
|  | 					clearAcross(); | ||||||
|  | 				} | ||||||
|  | 				return value; | ||||||
|  | 			}); | ||||||
|  | 		}, | ||||||
|  | 		showQuestion = function() { | ||||||
|  | 			$(options.acrossClears).hide(); | ||||||
|  | 			$(options.acrossQuestions).show(); | ||||||
|  | 			$(options.allContainer).hide(); | ||||||
|  | 		}, | ||||||
|  | 		showClear = function() { | ||||||
|  | 			$(options.acrossClears).show(); | ||||||
|  | 			$(options.acrossQuestions).hide(); | ||||||
|  | 			$(options.actionContainer).toggleClass(options.selectedClass); | ||||||
|  | 			$(options.allContainer).show(); | ||||||
|  | 			$(options.counterContainer).hide(); | ||||||
|  | 		}, | ||||||
|  | 		reset = function() { | ||||||
|  | 			$(options.acrossClears).hide(); | ||||||
|  | 			$(options.acrossQuestions).hide(); | ||||||
|  | 			$(options.allContainer).hide(); | ||||||
|  | 			$(options.counterContainer).show(); | ||||||
|  | 		}, | ||||||
|  | 		clearAcross = function() { | ||||||
|  | 			reset(); | ||||||
|  | 			$(options.acrossInput).val(0); | ||||||
|  | 			$(options.actionContainer).removeClass(options.selectedClass); | ||||||
|  | 		}; | ||||||
|  | 		// Show counter by default
 | ||||||
|  | 		$(options.counterContainer).show(); | ||||||
|  | 		// Check state of checkboxes and reinit state if needed
 | ||||||
|  | 		$(this).filter(":checked").each(function(i) { | ||||||
|  | 			$(this).parent().parent().toggleClass(options.selectedClass); | ||||||
|  | 			updateCounter(); | ||||||
|  | 			if ($(options.acrossInput).val() == 1) { | ||||||
|  | 				showClear(); | ||||||
|  | 			} | ||||||
|  | 		}); | ||||||
|  | 		$(options.allToggle).show().click(function() { | ||||||
|  | 			checker($(this).prop("checked")); | ||||||
|  | 			updateCounter(); | ||||||
|  | 		}); | ||||||
|  | 		$("a", options.acrossQuestions).click(function(event) { | ||||||
|  | 			event.preventDefault(); | ||||||
|  | 			$(options.acrossInput).val(1); | ||||||
|  | 			showClear(); | ||||||
|  | 		}); | ||||||
|  | 		$("a", options.acrossClears).click(function(event) { | ||||||
|  | 			event.preventDefault(); | ||||||
|  | 			$(options.allToggle).prop("checked", false); | ||||||
|  | 			clearAcross(); | ||||||
|  | 			checker(0); | ||||||
|  | 			updateCounter(); | ||||||
|  | 		}); | ||||||
|  | 		lastChecked = null; | ||||||
|  | 		$(actionCheckboxes).click(function(event) { | ||||||
|  | 			if (!event) { event = window.event; } | ||||||
|  | 			var target = event.target ? event.target : event.srcElement; | ||||||
|  | 			if (lastChecked && $.data(lastChecked) != $.data(target) && event.shiftKey === true) { | ||||||
|  | 				var inrange = false; | ||||||
|  | 				$(lastChecked).prop("checked", target.checked) | ||||||
|  | 					.parent().parent().toggleClass(options.selectedClass, target.checked); | ||||||
|  | 				$(actionCheckboxes).each(function() { | ||||||
|  | 					if ($.data(this) == $.data(lastChecked) || $.data(this) == $.data(target)) { | ||||||
|  | 						inrange = (inrange) ? false : true; | ||||||
|  | 					} | ||||||
|  | 					if (inrange) { | ||||||
|  | 						$(this).prop("checked", target.checked) | ||||||
|  | 							.parent().parent().toggleClass(options.selectedClass, target.checked); | ||||||
|  | 					} | ||||||
|  | 				}); | ||||||
|  | 			} | ||||||
|  | 			$(target).parent().parent().toggleClass(options.selectedClass, target.checked); | ||||||
|  | 			lastChecked = target; | ||||||
|  | 			updateCounter(); | ||||||
|  | 		}); | ||||||
|  | 		$('form#changelist-form table#result_list tr').find('td:gt(0) :input').change(function() { | ||||||
|  | 			list_editable_changed = true; | ||||||
|  | 		}); | ||||||
|  | 		$('form#changelist-form button[name="index"]').click(function(event) { | ||||||
|  | 			if (list_editable_changed) { | ||||||
|  | 				return confirm(gettext("You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost.")); | ||||||
|  | 			} | ||||||
|  | 		}); | ||||||
|  | 		$('form#changelist-form input[name="_save"]').click(function(event) { | ||||||
|  | 			var action_changed = false; | ||||||
|  | 			$('select option:selected', options.actionContainer).each(function() { | ||||||
|  | 				if ($(this).val()) { | ||||||
|  | 					action_changed = true; | ||||||
|  | 				} | ||||||
|  | 			}); | ||||||
|  | 			if (action_changed) { | ||||||
|  | 				if (list_editable_changed) { | ||||||
|  | 					return confirm(gettext("You have selected an action, but you haven't saved your changes to individual fields yet. Please click OK to save. You'll need to re-run the action.")); | ||||||
|  | 				} else { | ||||||
|  | 					return confirm(gettext("You have selected an action, and you haven't made any changes on individual fields. You're probably looking for the Go button rather than the Save button.")); | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 		}); | ||||||
|  | 	}; | ||||||
|  | 	/* Setup plugin defaults */ | ||||||
|  | 	$.fn.actions.defaults = { | ||||||
|  | 		actionContainer: "div.actions", | ||||||
|  | 		counterContainer: "span.action-counter", | ||||||
|  | 		allContainer: "div.actions span.all", | ||||||
|  | 		acrossInput: "div.actions input.select-across", | ||||||
|  | 		acrossQuestions: "div.actions span.question", | ||||||
|  | 		acrossClears: "div.actions span.clear", | ||||||
|  | 		allToggle: "#action-toggle", | ||||||
|  | 		selectedClass: "selected" | ||||||
|  | 	}; | ||||||
|  | })(django.jQuery); | ||||||
							
								
								
									
										6
									
								
								static/admin/js/actions.min.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,6 @@ | ||||||
|  | (function(a){var f;a.fn.actions=function(q){var b=a.extend({},a.fn.actions.defaults,q),g=a(this),e=!1,m=function(c){c?k():l();a(g).prop("checked",c).parent().parent().toggleClass(b.selectedClass,c)},h=function(){var c=a(g).filter(":checked").length;a(b.counterContainer).html(interpolate(ngettext("%(sel)s of %(cnt)s selected","%(sel)s of %(cnt)s selected",c),{sel:c,cnt:_actions_icnt},!0));a(b.allToggle).prop("checked",function(){var a;c==g.length?(a=!0,k()):(a=!1,n());return a})},k=function(){a(b.acrossClears).hide(); | ||||||
|  | a(b.acrossQuestions).show();a(b.allContainer).hide()},p=function(){a(b.acrossClears).show();a(b.acrossQuestions).hide();a(b.actionContainer).toggleClass(b.selectedClass);a(b.allContainer).show();a(b.counterContainer).hide()},l=function(){a(b.acrossClears).hide();a(b.acrossQuestions).hide();a(b.allContainer).hide();a(b.counterContainer).show()},n=function(){l();a(b.acrossInput).val(0);a(b.actionContainer).removeClass(b.selectedClass)};a(b.counterContainer).show();a(this).filter(":checked").each(function(c){a(this).parent().parent().toggleClass(b.selectedClass); | ||||||
|  | h();1==a(b.acrossInput).val()&&p()});a(b.allToggle).show().click(function(){m(a(this).prop("checked"));h()});a("a",b.acrossQuestions).click(function(c){c.preventDefault();a(b.acrossInput).val(1);p()});a("a",b.acrossClears).click(function(c){c.preventDefault();a(b.allToggle).prop("checked",!1);n();m(0);h()});f=null;a(g).click(function(c){c||(c=window.event);var d=c.target?c.target:c.srcElement;if(f&&a.data(f)!=a.data(d)&&!0===c.shiftKey){var e=!1;a(f).prop("checked",d.checked).parent().parent().toggleClass(b.selectedClass, | ||||||
|  | d.checked);a(g).each(function(){if(a.data(this)==a.data(f)||a.data(this)==a.data(d))e=e?!1:!0;e&&a(this).prop("checked",d.checked).parent().parent().toggleClass(b.selectedClass,d.checked)})}a(d).parent().parent().toggleClass(b.selectedClass,d.checked);f=d;h()});a("form#changelist-form table#result_list tr").find("td:gt(0) :input").change(function(){e=!0});a('form#changelist-form button[name="index"]').click(function(a){if(e)return confirm(gettext("You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost."))}); | ||||||
|  | a('form#changelist-form input[name="_save"]').click(function(c){var d=!1;a("select option:selected",b.actionContainer).each(function(){a(this).val()&&(d=!0)});if(d)return e?confirm(gettext("You have selected an action, but you haven't saved your changes to individual fields yet. Please click OK to save. You'll need to re-run the action.")):confirm(gettext("You have selected an action, and you haven't made any changes on individual fields. You're probably looking for the Go button rather than the Save button."))})}; | ||||||
|  | a.fn.actions.defaults={actionContainer:"div.actions",counterContainer:"span.action-counter",allContainer:"div.actions span.all",acrossInput:"div.actions input.select-across",acrossQuestions:"div.actions span.question",acrossClears:"div.actions span.clear",allToggle:"#action-toggle",selectedClass:"selected"}})(django.jQuery); | ||||||
							
								
								
									
										356
									
								
								static/admin/js/admin/DateTimeShortcuts.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,356 @@ | ||||||
|  | // Inserts shortcut buttons after all of the following:
 | ||||||
|  | //     <input type="text" class="vDateField">
 | ||||||
|  | //     <input type="text" class="vTimeField">
 | ||||||
|  | 
 | ||||||
|  | var DateTimeShortcuts = { | ||||||
|  |     calendars: [], | ||||||
|  |     calendarInputs: [], | ||||||
|  |     clockInputs: [], | ||||||
|  |     dismissClockFunc: [], | ||||||
|  |     dismissCalendarFunc: [], | ||||||
|  |     calendarDivName1: 'calendarbox', // name of calendar <div> that gets toggled
 | ||||||
|  |     calendarDivName2: 'calendarin',  // name of <div> that contains calendar
 | ||||||
|  |     calendarLinkName: 'calendarlink',// name of the link that is used to toggle
 | ||||||
|  |     clockDivName: 'clockbox',        // name of clock <div> that gets toggled
 | ||||||
|  |     clockLinkName: 'clocklink',      // name of the link that is used to toggle
 | ||||||
|  |     shortCutsClass: 'datetimeshortcuts', // class of the clock and cal shortcuts
 | ||||||
|  |     timezoneWarningClass: 'timezonewarning', // class of the warning for timezone mismatch
 | ||||||
|  |     timezoneOffset: 0, | ||||||
|  |     admin_media_prefix: '', | ||||||
|  |     init: function() { | ||||||
|  |         // Get admin_media_prefix by grabbing it off the window object. It's
 | ||||||
|  |         // set in the admin/base.html template, so if it's not there, someone's
 | ||||||
|  |         // overridden the template. In that case, we'll set a clearly-invalid
 | ||||||
|  |         // value in the hopes that someone will examine HTTP requests and see it.
 | ||||||
|  |         if (window.__admin_media_prefix__ != undefined) { | ||||||
|  |             DateTimeShortcuts.admin_media_prefix = window.__admin_media_prefix__; | ||||||
|  |         } else { | ||||||
|  |             DateTimeShortcuts.admin_media_prefix = '/missing-admin-media-prefix/'; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         if (window.__admin_utc_offset__ != undefined) { | ||||||
|  |             var serverOffset = window.__admin_utc_offset__; | ||||||
|  |             var localOffset = new Date().getTimezoneOffset() * -60; | ||||||
|  |             DateTimeShortcuts.timezoneOffset = localOffset - serverOffset; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         var inputs = document.getElementsByTagName('input'); | ||||||
|  |         for (i=0; i<inputs.length; i++) { | ||||||
|  |             var inp = inputs[i]; | ||||||
|  |             if (inp.getAttribute('type') == 'text' && inp.className.match(/vTimeField/)) { | ||||||
|  |                 DateTimeShortcuts.addClock(inp); | ||||||
|  |                 DateTimeShortcuts.addTimezoneWarning(inp); | ||||||
|  |             } | ||||||
|  |             else if (inp.getAttribute('type') == 'text' && inp.className.match(/vDateField/)) { | ||||||
|  |                 DateTimeShortcuts.addCalendar(inp); | ||||||
|  |                 DateTimeShortcuts.addTimezoneWarning(inp); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  |     // Return the current time while accounting for the server timezone.
 | ||||||
|  |     now: function() { | ||||||
|  |         if (window.__admin_utc_offset__ != undefined) { | ||||||
|  |             var serverOffset = window.__admin_utc_offset__; | ||||||
|  |             var localNow = new Date(); | ||||||
|  |             var localOffset = localNow.getTimezoneOffset() * -60; | ||||||
|  |             localNow.setTime(localNow.getTime() + 1000 * (serverOffset - localOffset)); | ||||||
|  |             return localNow; | ||||||
|  |         } else { | ||||||
|  |             return new Date(); | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  |     // Add a warning when the time zone in the browser and backend do not match.
 | ||||||
|  |     addTimezoneWarning: function(inp) { | ||||||
|  |         var $ = django.jQuery; | ||||||
|  |         var warningClass = DateTimeShortcuts.timezoneWarningClass; | ||||||
|  |         var timezoneOffset = DateTimeShortcuts.timezoneOffset / 3600; | ||||||
|  | 
 | ||||||
|  |         // Only warn if there is a time zone mismatch.
 | ||||||
|  |         if (!timezoneOffset) | ||||||
|  |             return; | ||||||
|  | 
 | ||||||
|  |         // Check if warning is already there.
 | ||||||
|  |         if ($(inp).siblings('.' + warningClass).length) | ||||||
|  |             return; | ||||||
|  | 
 | ||||||
|  |         var message; | ||||||
|  |         if (timezoneOffset > 0) { | ||||||
|  |             message = ngettext( | ||||||
|  |                 'Note: You are %s hour ahead of server time.', | ||||||
|  |                 'Note: You are %s hours ahead of server time.', | ||||||
|  |                 timezoneOffset | ||||||
|  |             ); | ||||||
|  |         } | ||||||
|  |         else { | ||||||
|  |             timezoneOffset *= -1 | ||||||
|  |             message = ngettext( | ||||||
|  |                 'Note: You are %s hour behind server time.', | ||||||
|  |                 'Note: You are %s hours behind server time.', | ||||||
|  |                 timezoneOffset | ||||||
|  |             ); | ||||||
|  |         } | ||||||
|  |         message = interpolate(message, [timezoneOffset]); | ||||||
|  | 
 | ||||||
|  |         var $warning = $('<span>'); | ||||||
|  |         $warning.attr('class', warningClass); | ||||||
|  |         $warning.text(message); | ||||||
|  | 
 | ||||||
|  |         $(inp).parent() | ||||||
|  |             .append($('<br>')) | ||||||
|  |             .append($warning) | ||||||
|  |     }, | ||||||
|  |     // Add clock widget to a given field
 | ||||||
|  |     addClock: function(inp) { | ||||||
|  |         var num = DateTimeShortcuts.clockInputs.length; | ||||||
|  |         DateTimeShortcuts.clockInputs[num] = inp; | ||||||
|  |         DateTimeShortcuts.dismissClockFunc[num] = function() { DateTimeShortcuts.dismissClock(num); return true; }; | ||||||
|  | 
 | ||||||
|  |         // Shortcut links (clock icon and "Now" link)
 | ||||||
|  |         var shortcuts_span = document.createElement('span'); | ||||||
|  |         shortcuts_span.className = DateTimeShortcuts.shortCutsClass; | ||||||
|  |         inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling); | ||||||
|  |         var now_link = document.createElement('a'); | ||||||
|  |         now_link.setAttribute('href', "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", -1);"); | ||||||
|  |         now_link.appendChild(document.createTextNode(gettext('Now'))); | ||||||
|  |         var clock_link = document.createElement('a'); | ||||||
|  |         clock_link.setAttribute('href', 'javascript:DateTimeShortcuts.openClock(' + num + ');'); | ||||||
|  |         clock_link.id = DateTimeShortcuts.clockLinkName + num; | ||||||
|  |         quickElement('img', clock_link, '', 'src', DateTimeShortcuts.admin_media_prefix + 'img/icon_clock.gif', 'alt', gettext('Clock')); | ||||||
|  |         shortcuts_span.appendChild(document.createTextNode('\240')); | ||||||
|  |         shortcuts_span.appendChild(now_link); | ||||||
|  |         shortcuts_span.appendChild(document.createTextNode('\240|\240')); | ||||||
|  |         shortcuts_span.appendChild(clock_link); | ||||||
|  | 
 | ||||||
|  |         // Create clock link div
 | ||||||
|  |         //
 | ||||||
|  |         // Markup looks like:
 | ||||||
|  |         // <div id="clockbox1" class="clockbox module">
 | ||||||
|  |         //     <h2>Choose a time</h2>
 | ||||||
|  |         //     <ul class="timelist">
 | ||||||
|  |         //         <li><a href="#">Now</a></li>
 | ||||||
|  |         //         <li><a href="#">Midnight</a></li>
 | ||||||
|  |         //         <li><a href="#">6 a.m.</a></li>
 | ||||||
|  |         //         <li><a href="#">Noon</a></li>
 | ||||||
|  |         //     </ul>
 | ||||||
|  |         //     <p class="calendar-cancel"><a href="#">Cancel</a></p>
 | ||||||
|  |         // </div>
 | ||||||
|  | 
 | ||||||
|  |         var clock_box = document.createElement('div'); | ||||||
|  |         clock_box.style.display = 'none'; | ||||||
|  |         clock_box.style.position = 'absolute'; | ||||||
|  |         clock_box.className = 'clockbox module'; | ||||||
|  |         clock_box.setAttribute('id', DateTimeShortcuts.clockDivName + num); | ||||||
|  |         document.body.appendChild(clock_box); | ||||||
|  |         addEvent(clock_box, 'click', cancelEventPropagation); | ||||||
|  | 
 | ||||||
|  |         quickElement('h2', clock_box, gettext('Choose a time')); | ||||||
|  |         var time_list = quickElement('ul', clock_box); | ||||||
|  |         time_list.className = 'timelist'; | ||||||
|  |         quickElement("a", quickElement("li", time_list), gettext("Now"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", -1);"); | ||||||
|  |         quickElement("a", quickElement("li", time_list), gettext("Midnight"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", 0);"); | ||||||
|  |         quickElement("a", quickElement("li", time_list), gettext("6 a.m."), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", 6);"); | ||||||
|  |         quickElement("a", quickElement("li", time_list), gettext("Noon"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", 12);"); | ||||||
|  | 
 | ||||||
|  |         var cancel_p = quickElement('p', clock_box); | ||||||
|  |         cancel_p.className = 'calendar-cancel'; | ||||||
|  |         quickElement('a', cancel_p, gettext('Cancel'), 'href', 'javascript:DateTimeShortcuts.dismissClock(' + num + ');'); | ||||||
|  |         django.jQuery(document).bind('keyup', function(event) { | ||||||
|  |             if (event.which == 27) { | ||||||
|  |                 // ESC key closes popup
 | ||||||
|  |                 DateTimeShortcuts.dismissClock(num); | ||||||
|  |                 event.preventDefault(); | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|  |     }, | ||||||
|  |     openClock: function(num) { | ||||||
|  |         var clock_box = document.getElementById(DateTimeShortcuts.clockDivName+num) | ||||||
|  |         var clock_link = document.getElementById(DateTimeShortcuts.clockLinkName+num) | ||||||
|  | 
 | ||||||
|  |         // Recalculate the clockbox position
 | ||||||
|  |         // is it left-to-right or right-to-left layout ?
 | ||||||
|  |         if (getStyle(document.body,'direction')!='rtl') { | ||||||
|  |             clock_box.style.left = findPosX(clock_link) + 17 + 'px'; | ||||||
|  |         } | ||||||
|  |         else { | ||||||
|  |             // since style's width is in em, it'd be tough to calculate
 | ||||||
|  |             // px value of it. let's use an estimated px for now
 | ||||||
|  |             // TODO: IE returns wrong value for findPosX when in rtl mode
 | ||||||
|  |             //       (it returns as it was left aligned), needs to be fixed.
 | ||||||
|  |             clock_box.style.left = findPosX(clock_link) - 110 + 'px'; | ||||||
|  |         } | ||||||
|  |         clock_box.style.top = Math.max(0, findPosY(clock_link) - 30) + 'px'; | ||||||
|  | 
 | ||||||
|  |         // Show the clock box
 | ||||||
|  |         clock_box.style.display = 'block'; | ||||||
|  |         addEvent(document, 'click', DateTimeShortcuts.dismissClockFunc[num]); | ||||||
|  |     }, | ||||||
|  |     dismissClock: function(num) { | ||||||
|  |        document.getElementById(DateTimeShortcuts.clockDivName + num).style.display = 'none'; | ||||||
|  |        removeEvent(document, 'click', DateTimeShortcuts.dismissClockFunc[num]); | ||||||
|  |     }, | ||||||
|  |     handleClockQuicklink: function(num, val) { | ||||||
|  |        var d; | ||||||
|  |        if (val == -1) { | ||||||
|  |            d = DateTimeShortcuts.now(); | ||||||
|  |        } | ||||||
|  |        else { | ||||||
|  |            d = new Date(1970, 1, 1, val, 0, 0, 0) | ||||||
|  |        } | ||||||
|  |        DateTimeShortcuts.clockInputs[num].value = d.strftime(get_format('TIME_INPUT_FORMATS')[0]); | ||||||
|  |        DateTimeShortcuts.clockInputs[num].focus(); | ||||||
|  |        DateTimeShortcuts.dismissClock(num); | ||||||
|  |     }, | ||||||
|  |     // Add calendar widget to a given field.
 | ||||||
|  |     addCalendar: function(inp) { | ||||||
|  |         var num = DateTimeShortcuts.calendars.length; | ||||||
|  | 
 | ||||||
|  |         DateTimeShortcuts.calendarInputs[num] = inp; | ||||||
|  |         DateTimeShortcuts.dismissCalendarFunc[num] = function() { DateTimeShortcuts.dismissCalendar(num); return true; }; | ||||||
|  | 
 | ||||||
|  |         // Shortcut links (calendar icon and "Today" link)
 | ||||||
|  |         var shortcuts_span = document.createElement('span'); | ||||||
|  |         shortcuts_span.className = DateTimeShortcuts.shortCutsClass; | ||||||
|  |         inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling); | ||||||
|  |         var today_link = document.createElement('a'); | ||||||
|  |         today_link.setAttribute('href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', 0);'); | ||||||
|  |         today_link.appendChild(document.createTextNode(gettext('Today'))); | ||||||
|  |         var cal_link = document.createElement('a'); | ||||||
|  |         cal_link.setAttribute('href', 'javascript:DateTimeShortcuts.openCalendar(' + num + ');'); | ||||||
|  |         cal_link.id = DateTimeShortcuts.calendarLinkName + num; | ||||||
|  |         quickElement('img', cal_link, '', 'src', DateTimeShortcuts.admin_media_prefix + 'img/icon_calendar.gif', 'alt', gettext('Calendar')); | ||||||
|  |         shortcuts_span.appendChild(document.createTextNode('\240')); | ||||||
|  |         shortcuts_span.appendChild(today_link); | ||||||
|  |         shortcuts_span.appendChild(document.createTextNode('\240|\240')); | ||||||
|  |         shortcuts_span.appendChild(cal_link); | ||||||
|  | 
 | ||||||
|  |         // Create calendarbox div.
 | ||||||
|  |         //
 | ||||||
|  |         // Markup looks like:
 | ||||||
|  |         //
 | ||||||
|  |         // <div id="calendarbox3" class="calendarbox module">
 | ||||||
|  |         //     <h2>
 | ||||||
|  |         //           <a href="#" class="link-previous">‹</a>
 | ||||||
|  |         //           <a href="#" class="link-next">›</a> February 2003
 | ||||||
|  |         //     </h2>
 | ||||||
|  |         //     <div class="calendar" id="calendarin3">
 | ||||||
|  |         //         <!-- (cal) -->
 | ||||||
|  |         //     </div>
 | ||||||
|  |         //     <div class="calendar-shortcuts">
 | ||||||
|  |         //          <a href="#">Yesterday</a> | <a href="#">Today</a> | <a href="#">Tomorrow</a>
 | ||||||
|  |         //     </div>
 | ||||||
|  |         //     <p class="calendar-cancel"><a href="#">Cancel</a></p>
 | ||||||
|  |         // </div>
 | ||||||
|  |         var cal_box = document.createElement('div'); | ||||||
|  |         cal_box.style.display = 'none'; | ||||||
|  |         cal_box.style.position = 'absolute'; | ||||||
|  |         cal_box.className = 'calendarbox module'; | ||||||
|  |         cal_box.setAttribute('id', DateTimeShortcuts.calendarDivName1 + num); | ||||||
|  |         document.body.appendChild(cal_box); | ||||||
|  |         addEvent(cal_box, 'click', cancelEventPropagation); | ||||||
|  | 
 | ||||||
|  |         // next-prev links
 | ||||||
|  |         var cal_nav = quickElement('div', cal_box); | ||||||
|  |         var cal_nav_prev = quickElement('a', cal_nav, '<', 'href', 'javascript:DateTimeShortcuts.drawPrev('+num+');'); | ||||||
|  |         cal_nav_prev.className = 'calendarnav-previous'; | ||||||
|  |         var cal_nav_next = quickElement('a', cal_nav, '>', 'href', 'javascript:DateTimeShortcuts.drawNext('+num+');'); | ||||||
|  |         cal_nav_next.className = 'calendarnav-next'; | ||||||
|  | 
 | ||||||
|  |         // main box
 | ||||||
|  |         var cal_main = quickElement('div', cal_box, '', 'id', DateTimeShortcuts.calendarDivName2 + num); | ||||||
|  |         cal_main.className = 'calendar'; | ||||||
|  |         DateTimeShortcuts.calendars[num] = new Calendar(DateTimeShortcuts.calendarDivName2 + num, DateTimeShortcuts.handleCalendarCallback(num)); | ||||||
|  |         DateTimeShortcuts.calendars[num].drawCurrent(); | ||||||
|  | 
 | ||||||
|  |         // calendar shortcuts
 | ||||||
|  |         var shortcuts = quickElement('div', cal_box); | ||||||
|  |         shortcuts.className = 'calendar-shortcuts'; | ||||||
|  |         quickElement('a', shortcuts, gettext('Yesterday'), 'href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', -1);'); | ||||||
|  |         shortcuts.appendChild(document.createTextNode('\240|\240')); | ||||||
|  |         quickElement('a', shortcuts, gettext('Today'), 'href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', 0);'); | ||||||
|  |         shortcuts.appendChild(document.createTextNode('\240|\240')); | ||||||
|  |         quickElement('a', shortcuts, gettext('Tomorrow'), 'href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', +1);'); | ||||||
|  | 
 | ||||||
|  |         // cancel bar
 | ||||||
|  |         var cancel_p = quickElement('p', cal_box); | ||||||
|  |         cancel_p.className = 'calendar-cancel'; | ||||||
|  |         quickElement('a', cancel_p, gettext('Cancel'), 'href', 'javascript:DateTimeShortcuts.dismissCalendar(' + num + ');'); | ||||||
|  |         django.jQuery(document).bind('keyup', function(event) { | ||||||
|  |             if (event.which == 27) { | ||||||
|  |                 // ESC key closes popup
 | ||||||
|  |                 DateTimeShortcuts.dismissCalendar(num); | ||||||
|  |                 event.preventDefault(); | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|  |     }, | ||||||
|  |     openCalendar: function(num) { | ||||||
|  |         var cal_box = document.getElementById(DateTimeShortcuts.calendarDivName1+num) | ||||||
|  |         var cal_link = document.getElementById(DateTimeShortcuts.calendarLinkName+num) | ||||||
|  |         var inp = DateTimeShortcuts.calendarInputs[num]; | ||||||
|  | 
 | ||||||
|  |         // Determine if the current value in the input has a valid date.
 | ||||||
|  |         // If so, draw the calendar with that date's year and month.
 | ||||||
|  |         if (inp.value) { | ||||||
|  |             var date_parts = inp.value.split('-'); | ||||||
|  |             var year = date_parts[0]; | ||||||
|  |             var month = parseFloat(date_parts[1]); | ||||||
|  |             var selected = new Date(inp.value); | ||||||
|  |             if (year.match(/\d\d\d\d/) && month >= 1 && month <= 12) { | ||||||
|  |                 DateTimeShortcuts.calendars[num].drawDate(month, year, selected); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // Recalculate the clockbox position
 | ||||||
|  |         // is it left-to-right or right-to-left layout ?
 | ||||||
|  |         if (getStyle(document.body,'direction')!='rtl') { | ||||||
|  |             cal_box.style.left = findPosX(cal_link) + 17 + 'px'; | ||||||
|  |         } | ||||||
|  |         else { | ||||||
|  |             // since style's width is in em, it'd be tough to calculate
 | ||||||
|  |             // px value of it. let's use an estimated px for now
 | ||||||
|  |             // TODO: IE returns wrong value for findPosX when in rtl mode
 | ||||||
|  |             //       (it returns as it was left aligned), needs to be fixed.
 | ||||||
|  |             cal_box.style.left = findPosX(cal_link) - 180 + 'px'; | ||||||
|  |         } | ||||||
|  |         cal_box.style.top = Math.max(0, findPosY(cal_link) - 75) + 'px'; | ||||||
|  | 
 | ||||||
|  |         cal_box.style.display = 'block'; | ||||||
|  |         addEvent(document, 'click', DateTimeShortcuts.dismissCalendarFunc[num]); | ||||||
|  |     }, | ||||||
|  |     dismissCalendar: function(num) { | ||||||
|  |         document.getElementById(DateTimeShortcuts.calendarDivName1+num).style.display = 'none'; | ||||||
|  |         removeEvent(document, 'click', DateTimeShortcuts.dismissCalendarFunc[num]); | ||||||
|  |     }, | ||||||
|  |     drawPrev: function(num) { | ||||||
|  |         DateTimeShortcuts.calendars[num].drawPreviousMonth(); | ||||||
|  |     }, | ||||||
|  |     drawNext: function(num) { | ||||||
|  |         DateTimeShortcuts.calendars[num].drawNextMonth(); | ||||||
|  |     }, | ||||||
|  |     handleCalendarCallback: function(num) { | ||||||
|  |         var format = get_format('DATE_INPUT_FORMATS')[0]; | ||||||
|  |         // the format needs to be escaped a little
 | ||||||
|  |         format = format.replace('\\', '\\\\'); | ||||||
|  |         format = format.replace('\r', '\\r'); | ||||||
|  |         format = format.replace('\n', '\\n'); | ||||||
|  |         format = format.replace('\t', '\\t'); | ||||||
|  |         format = format.replace("'", "\\'"); | ||||||
|  |         return ["function(y, m, d) { DateTimeShortcuts.calendarInputs[", | ||||||
|  |                num, | ||||||
|  |                "].value = new Date(y, m-1, d).strftime('", | ||||||
|  |                format, | ||||||
|  |                "');DateTimeShortcuts.calendarInputs[", | ||||||
|  |                num, | ||||||
|  |                "].focus();document.getElementById(DateTimeShortcuts.calendarDivName1+", | ||||||
|  |                num, | ||||||
|  |                ").style.display='none';}"].join(''); | ||||||
|  |     }, | ||||||
|  |     handleCalendarQuickLink: function(num, offset) { | ||||||
|  |        var d = DateTimeShortcuts.now(); | ||||||
|  |        d.setDate(d.getDate() + offset) | ||||||
|  |        DateTimeShortcuts.calendarInputs[num].value = d.strftime(get_format('DATE_INPUT_FORMATS')[0]); | ||||||
|  |        DateTimeShortcuts.calendarInputs[num].focus(); | ||||||
|  |        DateTimeShortcuts.dismissCalendar(num); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | addEvent(window, 'load', DateTimeShortcuts.init); | ||||||
							
								
								
									
										97
									
								
								static/admin/js/admin/RelatedObjectLookups.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,97 @@ | ||||||
|  | // Handles related-objects functionality: lookup link for raw_id_fields
 | ||||||
|  | // and Add Another links.
 | ||||||
|  | 
 | ||||||
|  | function html_unescape(text) { | ||||||
|  |     // Unescape a string that was escaped using django.utils.html.escape.
 | ||||||
|  |     text = text.replace(/</g, '<'); | ||||||
|  |     text = text.replace(/>/g, '>'); | ||||||
|  |     text = text.replace(/"/g, '"'); | ||||||
|  |     text = text.replace(/'/g, "'"); | ||||||
|  |     text = text.replace(/&/g, '&'); | ||||||
|  |     return text; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // IE doesn't accept periods or dashes in the window name, but the element IDs
 | ||||||
|  | // we use to generate popup window names may contain them, therefore we map them
 | ||||||
|  | // to allowed characters in a reversible way so that we can locate the correct
 | ||||||
|  | // element when the popup window is dismissed.
 | ||||||
|  | function id_to_windowname(text) { | ||||||
|  |     text = text.replace(/\./g, '__dot__'); | ||||||
|  |     text = text.replace(/\-/g, '__dash__'); | ||||||
|  |     return text; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function windowname_to_id(text) { | ||||||
|  |     text = text.replace(/__dot__/g, '.'); | ||||||
|  |     text = text.replace(/__dash__/g, '-'); | ||||||
|  |     return text; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function showRelatedObjectLookupPopup(triggeringLink) { | ||||||
|  |     var name = triggeringLink.id.replace(/^lookup_/, ''); | ||||||
|  |     name = id_to_windowname(name); | ||||||
|  |     var href; | ||||||
|  |     if (triggeringLink.href.search(/\?/) >= 0) { | ||||||
|  |         href = triggeringLink.href + '&_popup=1'; | ||||||
|  |     } else { | ||||||
|  |         href = triggeringLink.href + '?_popup=1'; | ||||||
|  |     } | ||||||
|  |     var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes'); | ||||||
|  |     win.focus(); | ||||||
|  |     return false; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function dismissRelatedLookupPopup(win, chosenId) { | ||||||
|  |     var name = windowname_to_id(win.name); | ||||||
|  |     var elem = document.getElementById(name); | ||||||
|  |     if (elem.className.indexOf('vManyToManyRawIdAdminField') != -1 && elem.value) { | ||||||
|  |         elem.value += ',' + chosenId; | ||||||
|  |     } else { | ||||||
|  |         document.getElementById(name).value = chosenId; | ||||||
|  |     } | ||||||
|  |     win.close(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function showAddAnotherPopup(triggeringLink) { | ||||||
|  |     var name = triggeringLink.id.replace(/^add_/, ''); | ||||||
|  |     name = id_to_windowname(name); | ||||||
|  |     var href = triggeringLink.href; | ||||||
|  |     if (href.indexOf('?') == -1) { | ||||||
|  |         href += '?_popup=1'; | ||||||
|  |     } else { | ||||||
|  |         href  += '&_popup=1'; | ||||||
|  |     } | ||||||
|  |     var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes'); | ||||||
|  |     win.focus(); | ||||||
|  |     return false; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function dismissAddAnotherPopup(win, newId, newRepr) { | ||||||
|  |     // newId and newRepr are expected to have previously been escaped by
 | ||||||
|  |     // django.utils.html.escape.
 | ||||||
|  |     newId = html_unescape(newId); | ||||||
|  |     newRepr = html_unescape(newRepr); | ||||||
|  |     var name = windowname_to_id(win.name); | ||||||
|  |     var elem = document.getElementById(name); | ||||||
|  |     var o; | ||||||
|  |     if (elem) { | ||||||
|  |         var elemName = elem.nodeName.toUpperCase(); | ||||||
|  |         if (elemName == 'SELECT') { | ||||||
|  |             o = new Option(newRepr, newId); | ||||||
|  |             elem.options[elem.options.length] = o; | ||||||
|  |             o.selected = true; | ||||||
|  |         } else if (elemName == 'INPUT') { | ||||||
|  |             if (elem.className.indexOf('vManyToManyRawIdAdminField') != -1 && elem.value) { | ||||||
|  |                 elem.value += ',' + newId; | ||||||
|  |             } else { | ||||||
|  |                 elem.value = newId; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } else { | ||||||
|  |         var toId = name + "_to"; | ||||||
|  |         o = new Option(newRepr, newId); | ||||||
|  |         SelectBox.add_to_cache(toId, o); | ||||||
|  |         SelectBox.redisplay(toId); | ||||||
|  |     } | ||||||
|  |     win.close(); | ||||||
|  | } | ||||||
							
								
								
									
										169
									
								
								static/admin/js/calendar.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,169 @@ | ||||||
|  | /* | ||||||
|  | calendar.js - Calendar functions by Adrian Holovaty | ||||||
|  | depends on core.js for utility functions like removeChildren or quickElement | ||||||
|  | */ | ||||||
|  | 
 | ||||||
|  | // CalendarNamespace -- Provides a collection of HTML calendar-related helper functions
 | ||||||
|  | var CalendarNamespace = { | ||||||
|  |     monthsOfYear: gettext('January February March April May June July August September October November December').split(' '), | ||||||
|  |     daysOfWeek: gettext('S M T W T F S').split(' '), | ||||||
|  |     firstDayOfWeek: parseInt(get_format('FIRST_DAY_OF_WEEK')), | ||||||
|  |     isLeapYear: function(year) { | ||||||
|  |         return (((year % 4)==0) && ((year % 100)!=0) || ((year % 400)==0)); | ||||||
|  |     }, | ||||||
|  |     getDaysInMonth: function(month,year) { | ||||||
|  |         var days; | ||||||
|  |         if (month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12) { | ||||||
|  |             days = 31; | ||||||
|  |         } | ||||||
|  |         else if (month==4 || month==6 || month==9 || month==11) { | ||||||
|  |             days = 30; | ||||||
|  |         } | ||||||
|  |         else if (month==2 && CalendarNamespace.isLeapYear(year)) { | ||||||
|  |             days = 29; | ||||||
|  |         } | ||||||
|  |         else { | ||||||
|  |             days = 28; | ||||||
|  |         } | ||||||
|  |         return days; | ||||||
|  |     }, | ||||||
|  |     draw: function(month, year, div_id, callback, selected) { // month = 1-12, year = 1-9999
 | ||||||
|  |         var today = new Date(); | ||||||
|  |         var todayDay = today.getDate(); | ||||||
|  |         var todayMonth = today.getMonth()+1; | ||||||
|  |         var todayYear = today.getFullYear(); | ||||||
|  |         var todayClass = ''; | ||||||
|  | 
 | ||||||
|  |         // Use UTC functions here because the date field does not contain time
 | ||||||
|  |         // and using the UTC function variants prevent the local time offset
 | ||||||
|  |         // from altering the date, specifically the day field.  For example:
 | ||||||
|  |         //
 | ||||||
|  |         // ```
 | ||||||
|  |         // var x = new Date('2013-10-02');
 | ||||||
|  |         // var day = x.getDate();
 | ||||||
|  |         // ```
 | ||||||
|  |         //
 | ||||||
|  |         // The day variable above will be 1 instead of 2 in, say, US Pacific time
 | ||||||
|  |         // zone.
 | ||||||
|  |         var isSelectedMonth = false; | ||||||
|  |         if (typeof selected != 'undefined') { | ||||||
|  |             isSelectedMonth = (selected.getUTCFullYear() == year && (selected.getUTCMonth()+1) == month); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         month = parseInt(month); | ||||||
|  |         year = parseInt(year); | ||||||
|  |         var calDiv = document.getElementById(div_id); | ||||||
|  |         removeChildren(calDiv); | ||||||
|  |         var calTable = document.createElement('table'); | ||||||
|  |         quickElement('caption', calTable, CalendarNamespace.monthsOfYear[month-1] + ' ' + year); | ||||||
|  |         var tableBody = quickElement('tbody', calTable); | ||||||
|  | 
 | ||||||
|  |         // Draw days-of-week header
 | ||||||
|  |         var tableRow = quickElement('tr', tableBody); | ||||||
|  |         for (var i = 0; i < 7; i++) { | ||||||
|  |             quickElement('th', tableRow, CalendarNamespace.daysOfWeek[(i + CalendarNamespace.firstDayOfWeek) % 7]); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         var startingPos = new Date(year, month-1, 1 - CalendarNamespace.firstDayOfWeek).getDay(); | ||||||
|  |         var days = CalendarNamespace.getDaysInMonth(month, year); | ||||||
|  | 
 | ||||||
|  |         // Draw blanks before first of month
 | ||||||
|  |         tableRow = quickElement('tr', tableBody); | ||||||
|  |         for (var i = 0; i < startingPos; i++) { | ||||||
|  |             var _cell = quickElement('td', tableRow, ' '); | ||||||
|  |             _cell.className = "nonday"; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // Draw days of month
 | ||||||
|  |         var currentDay = 1; | ||||||
|  |         for (var i = startingPos; currentDay <= days; i++) { | ||||||
|  |             if (i%7 == 0 && currentDay != 1) { | ||||||
|  |                 tableRow = quickElement('tr', tableBody); | ||||||
|  |             } | ||||||
|  |             if ((currentDay==todayDay) && (month==todayMonth) && (year==todayYear)) { | ||||||
|  |                 todayClass='today'; | ||||||
|  |             } else { | ||||||
|  |                 todayClass=''; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             // use UTC function; see above for explanation.
 | ||||||
|  |             if (isSelectedMonth && currentDay == selected.getUTCDate()) { | ||||||
|  |                 if (todayClass != '') todayClass += " "; | ||||||
|  |                 todayClass += "selected"; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             var cell = quickElement('td', tableRow, '', 'class', todayClass); | ||||||
|  | 
 | ||||||
|  |             quickElement('a', cell, currentDay, 'href', 'javascript:void(' + callback + '('+year+','+month+','+currentDay+'));'); | ||||||
|  |             currentDay++; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // Draw blanks after end of month (optional, but makes for valid code)
 | ||||||
|  |         while (tableRow.childNodes.length < 7) { | ||||||
|  |             var _cell = quickElement('td', tableRow, ' '); | ||||||
|  |             _cell.className = "nonday"; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         calDiv.appendChild(calTable); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Calendar -- A calendar instance
 | ||||||
|  | function Calendar(div_id, callback, selected) { | ||||||
|  |     // div_id (string) is the ID of the element in which the calendar will
 | ||||||
|  |     //     be displayed
 | ||||||
|  |     // callback (string) is the name of a JavaScript function that will be
 | ||||||
|  |     //     called with the parameters (year, month, day) when a day in the
 | ||||||
|  |     //     calendar is clicked
 | ||||||
|  |     this.div_id = div_id; | ||||||
|  |     this.callback = callback; | ||||||
|  |     this.today = new Date(); | ||||||
|  |     this.currentMonth = this.today.getMonth() + 1; | ||||||
|  |     this.currentYear = this.today.getFullYear(); | ||||||
|  |     if (typeof selected != 'undefined') { | ||||||
|  |         this.selected = selected; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | Calendar.prototype = { | ||||||
|  |     drawCurrent: function() { | ||||||
|  |         CalendarNamespace.draw(this.currentMonth, this.currentYear, this.div_id, this.callback, this.selected); | ||||||
|  |     }, | ||||||
|  |     drawDate: function(month, year, selected) { | ||||||
|  |         this.currentMonth = month; | ||||||
|  |         this.currentYear = year; | ||||||
|  | 
 | ||||||
|  |         if(selected) { | ||||||
|  |             this.selected = selected; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         this.drawCurrent(); | ||||||
|  |     }, | ||||||
|  |     drawPreviousMonth: function() { | ||||||
|  |         if (this.currentMonth == 1) { | ||||||
|  |             this.currentMonth = 12; | ||||||
|  |             this.currentYear--; | ||||||
|  |         } | ||||||
|  |         else { | ||||||
|  |             this.currentMonth--; | ||||||
|  |         } | ||||||
|  |         this.drawCurrent(); | ||||||
|  |     }, | ||||||
|  |     drawNextMonth: function() { | ||||||
|  |         if (this.currentMonth == 12) { | ||||||
|  |             this.currentMonth = 1; | ||||||
|  |             this.currentYear++; | ||||||
|  |         } | ||||||
|  |         else { | ||||||
|  |             this.currentMonth++; | ||||||
|  |         } | ||||||
|  |         this.drawCurrent(); | ||||||
|  |     }, | ||||||
|  |     drawPreviousYear: function() { | ||||||
|  |         this.currentYear--; | ||||||
|  |         this.drawCurrent(); | ||||||
|  |     }, | ||||||
|  |     drawNextYear: function() { | ||||||
|  |         this.currentYear++; | ||||||
|  |         this.drawCurrent(); | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										24
									
								
								static/admin/js/collapse.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,24 @@ | ||||||
|  | (function($) { | ||||||
|  | 	$(document).ready(function() { | ||||||
|  | 		// Add anchor tag for Show/Hide link
 | ||||||
|  | 		$("fieldset.collapse").each(function(i, elem) { | ||||||
|  | 			// Don't hide if fields in this fieldset have errors
 | ||||||
|  | 			if ($(elem).find("div.errors").length == 0) { | ||||||
|  | 				$(elem).addClass("collapsed").find("h2").first().append(' (<a id="fieldsetcollapser' + | ||||||
|  | 					i +'" class="collapse-toggle" href="#">' + gettext("Show") + | ||||||
|  | 					'</a>)'); | ||||||
|  | 			} | ||||||
|  | 		}); | ||||||
|  | 		// Add toggle to anchor tag
 | ||||||
|  | 		$("fieldset.collapse a.collapse-toggle").click(function(ev) { | ||||||
|  | 			if ($(this).closest("fieldset").hasClass("collapsed")) { | ||||||
|  | 				// Show
 | ||||||
|  | 				$(this).text(gettext("Hide")).closest("fieldset").removeClass("collapsed").trigger("show.fieldset", [$(this).attr("id")]); | ||||||
|  | 			} else { | ||||||
|  | 				// Hide
 | ||||||
|  | 				$(this).text(gettext("Show")).closest("fieldset").addClass("collapsed").trigger("hide.fieldset", [$(this).attr("id")]); | ||||||
|  | 			} | ||||||
|  | 			return false; | ||||||
|  | 		}); | ||||||
|  | 	}); | ||||||
|  | })(django.jQuery); | ||||||
							
								
								
									
										2
									
								
								static/admin/js/collapse.min.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,2 @@ | ||||||
|  | (function(a){a(document).ready(function(){a("fieldset.collapse").each(function(c,b){a(b).find("div.errors").length==0&&a(b).addClass("collapsed").find("h2").first().append(' (<a id="fieldsetcollapser'+c+'" class="collapse-toggle" href="#">'+gettext("Show")+"</a>)")});a("fieldset.collapse a.collapse-toggle").click(function(){a(this).closest("fieldset").hasClass("collapsed")?a(this).text(gettext("Hide")).closest("fieldset").removeClass("collapsed").trigger("show.fieldset",[a(this).attr("id")]):a(this).text(gettext("Show")).closest("fieldset").addClass("collapsed").trigger("hide.fieldset", | ||||||
|  | [a(this).attr("id")]);return false})})})(django.jQuery); | ||||||
							
								
								
									
										222
									
								
								static/admin/js/core.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,222 @@ | ||||||
|  | // Core javascript helper functions
 | ||||||
|  | 
 | ||||||
|  | // basic browser identification & version
 | ||||||
|  | var isOpera = (navigator.userAgent.indexOf("Opera")>=0) && parseFloat(navigator.appVersion); | ||||||
|  | var isIE = ((document.all) && (!isOpera)) && parseFloat(navigator.appVersion.split("MSIE ")[1].split(";")[0]); | ||||||
|  | 
 | ||||||
|  | // Cross-browser event handlers.
 | ||||||
|  | function addEvent(obj, evType, fn) { | ||||||
|  |     if (obj.addEventListener) { | ||||||
|  |         obj.addEventListener(evType, fn, false); | ||||||
|  |         return true; | ||||||
|  |     } else if (obj.attachEvent) { | ||||||
|  |         var r = obj.attachEvent("on" + evType, fn); | ||||||
|  |         return r; | ||||||
|  |     } else { | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function removeEvent(obj, evType, fn) { | ||||||
|  |     if (obj.removeEventListener) { | ||||||
|  |         obj.removeEventListener(evType, fn, false); | ||||||
|  |         return true; | ||||||
|  |     } else if (obj.detachEvent) { | ||||||
|  |         obj.detachEvent("on" + evType, fn); | ||||||
|  |         return true; | ||||||
|  |     } else { | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function cancelEventPropagation(e) { | ||||||
|  |     if (!e) e = window.event; | ||||||
|  |     e.cancelBubble = true; | ||||||
|  |     if (e.stopPropagation) e.stopPropagation(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // quickElement(tagType, parentReference [, textInChildNode, attribute, attributeValue ...]);
 | ||||||
|  | function quickElement() { | ||||||
|  |     var obj = document.createElement(arguments[0]); | ||||||
|  |     if (arguments[2]) { | ||||||
|  |         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; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // "a" is reference to an object
 | ||||||
|  | function removeChildren(a) { | ||||||
|  |     while (a.hasChildNodes()) a.removeChild(a.lastChild); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // ----------------------------------------------------------------------------
 | ||||||
|  | // Cross-browser xmlhttp object
 | ||||||
|  | // from http://jibbering.com/2002/4/httprequest.html
 | ||||||
|  | // ----------------------------------------------------------------------------
 | ||||||
|  | var xmlhttp; | ||||||
|  | /*@cc_on @*/ | ||||||
|  | /*@if (@_jscript_version >= 5) | ||||||
|  |     try { | ||||||
|  |         xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); | ||||||
|  |     } catch (e) { | ||||||
|  |         try { | ||||||
|  |             xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); | ||||||
|  |         } catch (E) { | ||||||
|  |             xmlhttp = false; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | @else | ||||||
|  |     xmlhttp = false; | ||||||
|  | @end @*/ | ||||||
|  | if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { | ||||||
|  |   xmlhttp = new XMLHttpRequest(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // ----------------------------------------------------------------------------
 | ||||||
|  | // Find-position functions by PPK
 | ||||||
|  | // See http://www.quirksmode.org/js/findpos.html
 | ||||||
|  | // ----------------------------------------------------------------------------
 | ||||||
|  | function findPosX(obj) { | ||||||
|  |     var curleft = 0; | ||||||
|  |     if (obj.offsetParent) { | ||||||
|  |         while (obj.offsetParent) { | ||||||
|  |             curleft += obj.offsetLeft - ((isOpera) ? 0 : obj.scrollLeft); | ||||||
|  |             obj = obj.offsetParent; | ||||||
|  |         } | ||||||
|  |         // IE offsetParent does not include the top-level
 | ||||||
|  |         if (isIE && obj.parentElement){ | ||||||
|  |             curleft += obj.offsetLeft - obj.scrollLeft; | ||||||
|  |         } | ||||||
|  |     } else if (obj.x) { | ||||||
|  |         curleft += obj.x; | ||||||
|  |     } | ||||||
|  |     return curleft; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function findPosY(obj) { | ||||||
|  |     var curtop = 0; | ||||||
|  |     if (obj.offsetParent) { | ||||||
|  |         while (obj.offsetParent) { | ||||||
|  |             curtop += obj.offsetTop - ((isOpera) ? 0 : obj.scrollTop); | ||||||
|  |             obj = obj.offsetParent; | ||||||
|  |         } | ||||||
|  |         // IE offsetParent does not include the top-level
 | ||||||
|  |         if (isIE && obj.parentElement){ | ||||||
|  |             curtop += obj.offsetTop - obj.scrollTop; | ||||||
|  |         } | ||||||
|  |     } else if (obj.y) { | ||||||
|  |         curtop += obj.y; | ||||||
|  |     } | ||||||
|  |     return curtop; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | //-----------------------------------------------------------------------------
 | ||||||
|  | // Date object extensions
 | ||||||
|  | // ----------------------------------------------------------------------------
 | ||||||
|  | 
 | ||||||
|  | Date.prototype.getTwelveHours = function() { | ||||||
|  |     hours = this.getHours(); | ||||||
|  |     if (hours == 0) { | ||||||
|  |         return 12; | ||||||
|  |     } | ||||||
|  |     else { | ||||||
|  |         return hours <= 12 ? hours : hours-12 | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | Date.prototype.getTwoDigitMonth = function() { | ||||||
|  |     return (this.getMonth() < 9) ? '0' + (this.getMonth()+1) : (this.getMonth()+1); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | Date.prototype.getTwoDigitDate = function() { | ||||||
|  |     return (this.getDate() < 10) ? '0' + this.getDate() : this.getDate(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | Date.prototype.getTwoDigitTwelveHour = function() { | ||||||
|  |     return (this.getTwelveHours() < 10) ? '0' + this.getTwelveHours() : this.getTwelveHours(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | Date.prototype.getTwoDigitHour = function() { | ||||||
|  |     return (this.getHours() < 10) ? '0' + this.getHours() : this.getHours(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | Date.prototype.getTwoDigitMinute = function() { | ||||||
|  |     return (this.getMinutes() < 10) ? '0' + this.getMinutes() : this.getMinutes(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | Date.prototype.getTwoDigitSecond = function() { | ||||||
|  |     return (this.getSeconds() < 10) ? '0' + this.getSeconds() : this.getSeconds(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | Date.prototype.getHourMinute = function() { | ||||||
|  |     return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | Date.prototype.getHourMinuteSecond = function() { | ||||||
|  |     return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute() + ':' + this.getTwoDigitSecond(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | Date.prototype.strftime = function(format) { | ||||||
|  |     var fields = { | ||||||
|  |         c: this.toString(), | ||||||
|  |         d: this.getTwoDigitDate(), | ||||||
|  |         H: this.getTwoDigitHour(), | ||||||
|  |         I: this.getTwoDigitTwelveHour(), | ||||||
|  |         m: this.getTwoDigitMonth(), | ||||||
|  |         M: this.getTwoDigitMinute(), | ||||||
|  |         p: (this.getHours() >= 12) ? 'PM' : 'AM', | ||||||
|  |         S: this.getTwoDigitSecond(), | ||||||
|  |         w: '0' + this.getDay(), | ||||||
|  |         x: this.toLocaleDateString(), | ||||||
|  |         X: this.toLocaleTimeString(), | ||||||
|  |         y: ('' + this.getFullYear()).substr(2, 4), | ||||||
|  |         Y: '' + this.getFullYear(), | ||||||
|  |         '%' : '%' | ||||||
|  |     }; | ||||||
|  |     var result = '', i = 0; | ||||||
|  |     while (i < format.length) { | ||||||
|  |         if (format.charAt(i) === '%') { | ||||||
|  |             result = result + fields[format.charAt(i + 1)]; | ||||||
|  |             ++i; | ||||||
|  |         } | ||||||
|  |         else { | ||||||
|  |             result = result + format.charAt(i); | ||||||
|  |         } | ||||||
|  |         ++i; | ||||||
|  |     } | ||||||
|  |     return result; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // ----------------------------------------------------------------------------
 | ||||||
|  | // String object extensions
 | ||||||
|  | // ----------------------------------------------------------------------------
 | ||||||
|  | String.prototype.pad_left = function(pad_length, pad_string) { | ||||||
|  |     var new_string = this; | ||||||
|  |     for (var i = 0; new_string.length < pad_length; i++) { | ||||||
|  |         new_string = pad_string + new_string; | ||||||
|  |     } | ||||||
|  |     return new_string; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // ----------------------------------------------------------------------------
 | ||||||
|  | // Get the computed style for and element
 | ||||||
|  | // ----------------------------------------------------------------------------
 | ||||||
|  | function getStyle(oElm, strCssRule){ | ||||||
|  |     var strValue = ""; | ||||||
|  |     if(document.defaultView && document.defaultView.getComputedStyle){ | ||||||
|  |         strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule); | ||||||
|  |     } | ||||||
|  |     else if(oElm.currentStyle){ | ||||||
|  |         strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){ | ||||||
|  |             return p1.toUpperCase(); | ||||||
|  |         }); | ||||||
|  |         strValue = oElm.currentStyle[strCssRule]; | ||||||
|  |     } | ||||||
|  |     return strValue; | ||||||
|  | } | ||||||
							
								
								
									
										272
									
								
								static/admin/js/inlines.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,272 @@ | ||||||
|  | /** | ||||||
|  |  * Django admin inlines | ||||||
|  |  * | ||||||
|  |  * Based on jQuery Formset 1.1 | ||||||
|  |  * @author Stanislaus Madueke (stan DOT madueke AT gmail DOT com) | ||||||
|  |  * @requires jQuery 1.2.6 or later | ||||||
|  |  * | ||||||
|  |  * Copyright (c) 2009, Stanislaus Madueke | ||||||
|  |  * All rights reserved. | ||||||
|  |  * | ||||||
|  |  * Spiced up with Code from Zain Memon's GSoC project 2009 | ||||||
|  |  * and modified for Django by Jannis Leidel, Travis Swicegood and Julien Phalip. | ||||||
|  |  * | ||||||
|  |  * Licensed under the New BSD License | ||||||
|  |  * See: http://www.opensource.org/licenses/bsd-license.php
 | ||||||
|  |  */ | ||||||
|  | (function($) { | ||||||
|  |   $.fn.formset = function(opts) { | ||||||
|  |     var options = $.extend({}, $.fn.formset.defaults, opts); | ||||||
|  |     var $this = $(this); | ||||||
|  |     var $parent = $this.parent(); | ||||||
|  |     var updateElementIndex = function(el, prefix, ndx) { | ||||||
|  |       var id_regex = new RegExp("(" + prefix + "-(\\d+|__prefix__))"); | ||||||
|  |       var replacement = prefix + "-" + ndx; | ||||||
|  |       if ($(el).prop("for")) { | ||||||
|  |         $(el).prop("for", $(el).prop("for").replace(id_regex, replacement)); | ||||||
|  |       } | ||||||
|  |       if (el.id) { | ||||||
|  |         el.id = el.id.replace(id_regex, replacement); | ||||||
|  |       } | ||||||
|  |       if (el.name) { | ||||||
|  |         el.name = el.name.replace(id_regex, replacement); | ||||||
|  |       } | ||||||
|  |     }; | ||||||
|  |     var totalForms = $("#id_" + options.prefix + "-TOTAL_FORMS").prop("autocomplete", "off"); | ||||||
|  |     var nextIndex = parseInt(totalForms.val(), 10); | ||||||
|  |     var maxForms = $("#id_" + options.prefix + "-MAX_NUM_FORMS").prop("autocomplete", "off"); | ||||||
|  |     // only show the add button if we are allowed to add more items,
 | ||||||
|  |         // note that max_num = None translates to a blank string.
 | ||||||
|  |     var showAddButton = maxForms.val() === '' || (maxForms.val()-totalForms.val()) > 0; | ||||||
|  |     $this.each(function(i) { | ||||||
|  |       $(this).not("." + options.emptyCssClass).addClass(options.formCssClass); | ||||||
|  |     }); | ||||||
|  |     if ($this.length && showAddButton) { | ||||||
|  |       var addButton; | ||||||
|  |       if ($this.prop("tagName") == "TR") { | ||||||
|  |         // If forms are laid out as table rows, insert the
 | ||||||
|  |         // "add" button in a new table row:
 | ||||||
|  |         var numCols = this.eq(-1).children().length; | ||||||
|  |         $parent.append('<tr class="' + options.addCssClass + '"><td colspan="' + numCols + '"><a href="javascript:void(0)">' + options.addText + "</a></tr>"); | ||||||
|  |         addButton = $parent.find("tr:last a"); | ||||||
|  |       } else { | ||||||
|  |         // Otherwise, insert it immediately after the last form:
 | ||||||
|  |         $this.filter(":last").after('<div class="' + options.addCssClass + '"><a href="javascript:void(0)">' + options.addText + "</a></div>"); | ||||||
|  |         addButton = $this.filter(":last").next().find("a"); | ||||||
|  |       } | ||||||
|  |       addButton.click(function(e) { | ||||||
|  |         e.preventDefault(); | ||||||
|  |         var totalForms = $("#id_" + options.prefix + "-TOTAL_FORMS"); | ||||||
|  |         var template = $("#" + options.prefix + "-empty"); | ||||||
|  |         var row = template.clone(true); | ||||||
|  |         row.removeClass(options.emptyCssClass) | ||||||
|  |           .addClass(options.formCssClass) | ||||||
|  |           .attr("id", options.prefix + "-" + nextIndex); | ||||||
|  |         if (row.is("tr")) { | ||||||
|  |           // If the forms are laid out in table rows, insert
 | ||||||
|  |           // the remove button into the last table cell:
 | ||||||
|  |           row.children(":last").append('<div><a class="' + options.deleteCssClass +'" href="javascript:void(0)">' + options.deleteText + "</a></div>"); | ||||||
|  |         } else if (row.is("ul") || row.is("ol")) { | ||||||
|  |           // If they're laid out as an ordered/unordered list,
 | ||||||
|  |           // insert an <li> after the last list item:
 | ||||||
|  |           row.append('<li><a class="' + options.deleteCssClass +'" href="javascript:void(0)">' + options.deleteText + "</a></li>"); | ||||||
|  |         } else { | ||||||
|  |           // Otherwise, just insert the remove button as the
 | ||||||
|  |           // last child element of the form's container:
 | ||||||
|  |           row.children(":first").append('<span><a class="' + options.deleteCssClass + '" href="javascript:void(0)">' + options.deleteText + "</a></span>"); | ||||||
|  |         } | ||||||
|  |         row.find("*").each(function() { | ||||||
|  |           updateElementIndex(this, options.prefix, totalForms.val()); | ||||||
|  |         }); | ||||||
|  |         // Insert the new form when it has been fully edited
 | ||||||
|  |         row.insertBefore($(template)); | ||||||
|  |         // Update number of total forms
 | ||||||
|  |         $(totalForms).val(parseInt(totalForms.val(), 10) + 1); | ||||||
|  |         nextIndex += 1; | ||||||
|  |         // Hide add button in case we've hit the max, except we want to add infinitely
 | ||||||
|  |         if ((maxForms.val() !== '') && (maxForms.val()-totalForms.val()) <= 0) { | ||||||
|  |           addButton.parent().hide(); | ||||||
|  |         } | ||||||
|  |         // The delete button of each row triggers a bunch of other things
 | ||||||
|  |         row.find("a." + options.deleteCssClass).click(function(e) { | ||||||
|  |           e.preventDefault(); | ||||||
|  |           // Remove the parent form containing this button:
 | ||||||
|  |           var row = $(this).parents("." + options.formCssClass); | ||||||
|  |           row.remove(); | ||||||
|  |           nextIndex -= 1; | ||||||
|  |           // If a post-delete callback was provided, call it with the deleted form:
 | ||||||
|  |           if (options.removed) { | ||||||
|  |             options.removed(row); | ||||||
|  |           } | ||||||
|  |           // Update the TOTAL_FORMS form count.
 | ||||||
|  |           var forms = $("." + options.formCssClass); | ||||||
|  |           $("#id_" + options.prefix + "-TOTAL_FORMS").val(forms.length); | ||||||
|  |           // Show add button again once we drop below max
 | ||||||
|  |           if ((maxForms.val() === '') || (maxForms.val()-forms.length) > 0) { | ||||||
|  |             addButton.parent().show(); | ||||||
|  |           } | ||||||
|  |           // Also, update names and ids for all remaining form controls
 | ||||||
|  |           // so they remain in sequence:
 | ||||||
|  |           for (var i=0, formCount=forms.length; i<formCount; i++) | ||||||
|  |           { | ||||||
|  |             updateElementIndex($(forms).get(i), options.prefix, i); | ||||||
|  |             $(forms.get(i)).find("*").each(function() { | ||||||
|  |               updateElementIndex(this, options.prefix, i); | ||||||
|  |             }); | ||||||
|  |           } | ||||||
|  |         }); | ||||||
|  |         // If a post-add callback was supplied, call it with the added form:
 | ||||||
|  |         if (options.added) { | ||||||
|  |           options.added(row); | ||||||
|  |         } | ||||||
|  |       }); | ||||||
|  |     } | ||||||
|  |     return this; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   /* Setup plugin defaults */ | ||||||
|  |   $.fn.formset.defaults = { | ||||||
|  |     prefix: "form",          // The form prefix for your django formset
 | ||||||
|  |     addText: "add another",      // Text for the add link
 | ||||||
|  |     deleteText: "remove",      // Text for the delete link
 | ||||||
|  |     addCssClass: "add-row",      // CSS class applied to the add link
 | ||||||
|  |     deleteCssClass: "delete-row",  // CSS class applied to the delete link
 | ||||||
|  |     emptyCssClass: "empty-row",    // CSS class applied to the empty row
 | ||||||
|  |     formCssClass: "dynamic-form",  // CSS class applied to each form in a formset
 | ||||||
|  |     added: null,          // Function called each time a new form is added
 | ||||||
|  |     removed: null          // Function called each time a form is deleted
 | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   // Tabular inlines ---------------------------------------------------------
 | ||||||
|  |   $.fn.tabularFormset = function(options) { | ||||||
|  |     var $rows = $(this); | ||||||
|  |     var alternatingRows = function(row) { | ||||||
|  |       $($rows.selector).not(".add-row").removeClass("row1 row2") | ||||||
|  |         .filter(":even").addClass("row1").end() | ||||||
|  |         .filter(":odd").addClass("row2"); | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     var reinitDateTimeShortCuts = function() { | ||||||
|  |       // Reinitialize the calendar and clock widgets by force
 | ||||||
|  |       if (typeof DateTimeShortcuts != "undefined") { | ||||||
|  |         $(".datetimeshortcuts").remove(); | ||||||
|  |         DateTimeShortcuts.init(); | ||||||
|  |       } | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     var updateSelectFilter = function() { | ||||||
|  |       // If any SelectFilter widgets are a part of the new form,
 | ||||||
|  |       // instantiate a new SelectFilter instance for it.
 | ||||||
|  |       if (typeof SelectFilter != 'undefined'){ | ||||||
|  |         $('.selectfilter').each(function(index, value){ | ||||||
|  |           var namearr = value.name.split('-'); | ||||||
|  |           SelectFilter.init(value.id, namearr[namearr.length-1], false, options.adminStaticPrefix ); | ||||||
|  |         }); | ||||||
|  |         $('.selectfilterstacked').each(function(index, value){ | ||||||
|  |           var namearr = value.name.split('-'); | ||||||
|  |           SelectFilter.init(value.id, namearr[namearr.length-1], true, options.adminStaticPrefix ); | ||||||
|  |         }); | ||||||
|  |       } | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     var initPrepopulatedFields = function(row) { | ||||||
|  |       row.find('.prepopulated_field').each(function() { | ||||||
|  |         var field = $(this), | ||||||
|  |             input = field.find('input, select, textarea'), | ||||||
|  |             dependency_list = input.data('dependency_list') || [], | ||||||
|  |             dependencies = []; | ||||||
|  |         $.each(dependency_list, function(i, field_name) { | ||||||
|  |           dependencies.push('#' + row.find('.field-' + field_name).find('input, select, textarea').attr('id')); | ||||||
|  |         }); | ||||||
|  |         if (dependencies.length) { | ||||||
|  |           input.prepopulate(dependencies, input.attr('maxlength')); | ||||||
|  |         } | ||||||
|  |       }); | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     $rows.formset({ | ||||||
|  |       prefix: options.prefix, | ||||||
|  |       addText: options.addText, | ||||||
|  |       formCssClass: "dynamic-" + options.prefix, | ||||||
|  |       deleteCssClass: "inline-deletelink", | ||||||
|  |       deleteText: options.deleteText, | ||||||
|  |       emptyCssClass: "empty-form", | ||||||
|  |       removed: alternatingRows, | ||||||
|  |       added: function(row) { | ||||||
|  |         initPrepopulatedFields(row); | ||||||
|  |         reinitDateTimeShortCuts(); | ||||||
|  |         updateSelectFilter(); | ||||||
|  |         alternatingRows(row); | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     return $rows; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   // Stacked inlines ---------------------------------------------------------
 | ||||||
|  |   $.fn.stackedFormset = function(options) { | ||||||
|  |     var $rows = $(this); | ||||||
|  |     var updateInlineLabel = function(row) { | ||||||
|  |       $($rows.selector).find(".inline_label").each(function(i) { | ||||||
|  |         var count = i + 1; | ||||||
|  |         $(this).html($(this).html().replace(/(#\d+)/g, "#" + count)); | ||||||
|  |       }); | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     var reinitDateTimeShortCuts = function() { | ||||||
|  |       // Reinitialize the calendar and clock widgets by force, yuck.
 | ||||||
|  |       if (typeof DateTimeShortcuts != "undefined") { | ||||||
|  |         $(".datetimeshortcuts").remove(); | ||||||
|  |         DateTimeShortcuts.init(); | ||||||
|  |       } | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     var updateSelectFilter = function() { | ||||||
|  |       // If any SelectFilter widgets were added, instantiate a new instance.
 | ||||||
|  |       if (typeof SelectFilter != "undefined"){ | ||||||
|  |         $(".selectfilter").each(function(index, value){ | ||||||
|  |           var namearr = value.name.split('-'); | ||||||
|  |           SelectFilter.init(value.id, namearr[namearr.length-1], false, options.adminStaticPrefix); | ||||||
|  |         }); | ||||||
|  |         $(".selectfilterstacked").each(function(index, value){ | ||||||
|  |           var namearr = value.name.split('-'); | ||||||
|  |           SelectFilter.init(value.id, namearr[namearr.length-1], true, options.adminStaticPrefix); | ||||||
|  |         }); | ||||||
|  |       } | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     var initPrepopulatedFields = function(row) { | ||||||
|  |       row.find('.prepopulated_field').each(function() { | ||||||
|  |         var field = $(this), | ||||||
|  |             input = field.find('input, select, textarea'), | ||||||
|  |             dependency_list = input.data('dependency_list') || [], | ||||||
|  |             dependencies = []; | ||||||
|  |         $.each(dependency_list, function(i, field_name) { | ||||||
|  |           dependencies.push('#' + row.find('.form-row .field-' + field_name).find('input, select, textarea').attr('id')); | ||||||
|  |         }); | ||||||
|  |         if (dependencies.length) { | ||||||
|  |           input.prepopulate(dependencies, input.attr('maxlength')); | ||||||
|  |         } | ||||||
|  |       }); | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     $rows.formset({ | ||||||
|  |       prefix: options.prefix, | ||||||
|  |       addText: options.addText, | ||||||
|  |       formCssClass: "dynamic-" + options.prefix, | ||||||
|  |       deleteCssClass: "inline-deletelink", | ||||||
|  |       deleteText: options.deleteText, | ||||||
|  |       emptyCssClass: "empty-form", | ||||||
|  |       removed: updateInlineLabel, | ||||||
|  |       added: (function(row) { | ||||||
|  |         initPrepopulatedFields(row); | ||||||
|  |         reinitDateTimeShortCuts(); | ||||||
|  |         updateSelectFilter(); | ||||||
|  |         updateInlineLabel(row); | ||||||
|  |       }) | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     return $rows; | ||||||
|  |   }; | ||||||
|  | })(django.jQuery); | ||||||
							
								
								
									
										9
									
								
								static/admin/js/inlines.min.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,9 @@ | ||||||
|  | (function(a){a.fn.formset=function(g){var b=a.extend({},a.fn.formset.defaults,g),i=a(this);g=i.parent();var m=function(e,k,h){var j=RegExp("("+k+"-(\\d+|__prefix__))");k=k+"-"+h;a(e).prop("for")&&a(e).prop("for",a(e).prop("for").replace(j,k));if(e.id)e.id=e.id.replace(j,k);if(e.name)e.name=e.name.replace(j,k)},l=a("#id_"+b.prefix+"-TOTAL_FORMS").prop("autocomplete","off"),d=parseInt(l.val(),10),c=a("#id_"+b.prefix+"-MAX_NUM_FORMS").prop("autocomplete","off");l=c.val()===""||c.val()-l.val()>0;i.each(function(){a(this).not("."+ | ||||||
|  | b.emptyCssClass).addClass(b.formCssClass)});if(i.length&&l){var f;if(i.prop("tagName")=="TR"){i=this.eq(-1).children().length;g.append('<tr class="'+b.addCssClass+'"><td colspan="'+i+'"><a href="javascript:void(0)">'+b.addText+"</a></tr>");f=g.find("tr:last a")}else{i.filter(":last").after('<div class="'+b.addCssClass+'"><a href="javascript:void(0)">'+b.addText+"</a></div>");f=i.filter(":last").next().find("a")}f.click(function(e){e.preventDefault();var k=a("#id_"+b.prefix+"-TOTAL_FORMS");e=a("#"+ | ||||||
|  | b.prefix+"-empty");var h=e.clone(true);h.removeClass(b.emptyCssClass).addClass(b.formCssClass).attr("id",b.prefix+"-"+d);if(h.is("tr"))h.children(":last").append('<div><a class="'+b.deleteCssClass+'" href="javascript:void(0)">'+b.deleteText+"</a></div>");else h.is("ul")||h.is("ol")?h.append('<li><a class="'+b.deleteCssClass+'" href="javascript:void(0)">'+b.deleteText+"</a></li>"):h.children(":first").append('<span><a class="'+b.deleteCssClass+'" href="javascript:void(0)">'+b.deleteText+"</a></span>"); | ||||||
|  | h.find("*").each(function(){m(this,b.prefix,k.val())});h.insertBefore(a(e));a(k).val(parseInt(k.val(),10)+1);d+=1;c.val()!==""&&c.val()-k.val()<=0&&f.parent().hide();h.find("a."+b.deleteCssClass).click(function(j){j.preventDefault();j=a(this).parents("."+b.formCssClass);j.remove();d-=1;b.removed&&b.removed(j);j=a("."+b.formCssClass);a("#id_"+b.prefix+"-TOTAL_FORMS").val(j.length);if(c.val()===""||c.val()-j.length>0)f.parent().show();for(var n=0,o=j.length;n<o;n++){m(a(j).get(n),b.prefix,n);a(j.get(n)).find("*").each(function(){m(this, | ||||||
|  | b.prefix,n)})}});b.added&&b.added(h)})}return this};a.fn.formset.defaults={prefix:"form",addText:"add another",deleteText:"remove",addCssClass:"add-row",deleteCssClass:"delete-row",emptyCssClass:"empty-row",formCssClass:"dynamic-form",added:null,removed:null};a.fn.tabularFormset=function(g){var b=a(this),i=function(){a(b.selector).not(".add-row").removeClass("row1 row2").filter(":even").addClass("row1").end().filter(":odd").addClass("row2")},m=function(){if(typeof SelectFilter!="undefined"){a(".selectfilter").each(function(d, | ||||||
|  | c){var f=c.name.split("-");SelectFilter.init(c.id,f[f.length-1],false,g.adminStaticPrefix)});a(".selectfilterstacked").each(function(d,c){var f=c.name.split("-");SelectFilter.init(c.id,f[f.length-1],true,g.adminStaticPrefix)})}},l=function(d){d.find(".prepopulated_field").each(function(){var c=a(this).find("input, select, textarea"),f=c.data("dependency_list")||[],e=[];a.each(f,function(k,h){e.push("#"+d.find(".field-"+h).find("input, select, textarea").attr("id"))});e.length&&c.prepopulate(e,c.attr("maxlength"))})}; | ||||||
|  | b.formset({prefix:g.prefix,addText:g.addText,formCssClass:"dynamic-"+g.prefix,deleteCssClass:"inline-deletelink",deleteText:g.deleteText,emptyCssClass:"empty-form",removed:i,added:function(d){l(d);if(typeof DateTimeShortcuts!="undefined"){a(".datetimeshortcuts").remove();DateTimeShortcuts.init()}m();i(d)}});return b};a.fn.stackedFormset=function(g){var b=a(this),i=function(){a(b.selector).find(".inline_label").each(function(d){d=d+1;a(this).html(a(this).html().replace(/(#\d+)/g,"#"+d))})},m=function(){if(typeof SelectFilter!= | ||||||
|  | "undefined"){a(".selectfilter").each(function(d,c){var f=c.name.split("-");SelectFilter.init(c.id,f[f.length-1],false,g.adminStaticPrefix)});a(".selectfilterstacked").each(function(d,c){var f=c.name.split("-");SelectFilter.init(c.id,f[f.length-1],true,g.adminStaticPrefix)})}},l=function(d){d.find(".prepopulated_field").each(function(){var c=a(this).find("input, select, textarea"),f=c.data("dependency_list")||[],e=[];a.each(f,function(k,h){e.push("#"+d.find(".form-row .field-"+h).find("input, select, textarea").attr("id"))}); | ||||||
|  | e.length&&c.prepopulate(e,c.attr("maxlength"))})};b.formset({prefix:g.prefix,addText:g.addText,formCssClass:"dynamic-"+g.prefix,deleteCssClass:"inline-deletelink",deleteText:g.deleteText,emptyCssClass:"empty-form",removed:i,added:function(d){l(d);if(typeof DateTimeShortcuts!="undefined"){a(".datetimeshortcuts").remove();DateTimeShortcuts.init()}m();i(d)}});return b}})(django.jQuery); | ||||||
							
								
								
									
										7
									
								
								static/admin/js/jquery.init.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,7 @@ | ||||||
|  | /* Puts the included jQuery into our own namespace using noConflict and passing | ||||||
|  |  * it 'true'. This ensures that the included jQuery doesn't pollute the global | ||||||
|  |  * namespace (i.e. this preserves pre-existing values for both window.$ and | ||||||
|  |  * window.jQuery). | ||||||
|  |  */ | ||||||
|  | var django = django || {}; | ||||||
|  | django.jQuery = jQuery.noConflict(true); | ||||||
							
								
								
									
										9597
									
								
								static/admin/js/jquery.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										5
									
								
								static/admin/js/jquery.min.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										39
									
								
								static/admin/js/prepopulate.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,39 @@ | ||||||
|  | (function($) { | ||||||
|  |     $.fn.prepopulate = function(dependencies, maxLength) { | ||||||
|  |         /* | ||||||
|  |             Depends on urlify.js | ||||||
|  |             Populates a selected field with the values of the dependent fields, | ||||||
|  |             URLifies and shortens the string. | ||||||
|  |             dependencies - array of dependent fields ids | ||||||
|  |             maxLength - maximum length of the URLify'd string | ||||||
|  |         */ | ||||||
|  |         return this.each(function() { | ||||||
|  |             var prepopulatedField = $(this); | ||||||
|  | 
 | ||||||
|  |             var populate = function () { | ||||||
|  |                 // Bail if the field's value has been changed by the user
 | ||||||
|  |                 if (prepopulatedField.data('_changed')) { | ||||||
|  |                     return; | ||||||
|  |                 } | ||||||
|  | 
 | ||||||
|  |                 var values = []; | ||||||
|  |                 $.each(dependencies, function(i, field) { | ||||||
|  |                     field = $(field); | ||||||
|  |                     if (field.val().length > 0) { | ||||||
|  |                         values.push(field.val()); | ||||||
|  |                     } | ||||||
|  |                 }); | ||||||
|  |                 prepopulatedField.val(URLify(values.join(' '), maxLength)); | ||||||
|  |             }; | ||||||
|  | 
 | ||||||
|  |             prepopulatedField.data('_changed', false); | ||||||
|  |             prepopulatedField.change(function() { | ||||||
|  |                 prepopulatedField.data('_changed', true); | ||||||
|  |             }); | ||||||
|  | 
 | ||||||
|  |             if (!prepopulatedField.val()) { | ||||||
|  |                 $(dependencies.join(',')).keyup(populate).change(populate).focus(populate); | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|  |     }; | ||||||
|  | })(django.jQuery); | ||||||
							
								
								
									
										1
									
								
								static/admin/js/prepopulate.min.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1 @@ | ||||||
|  | (function(b){b.fn.prepopulate=function(e,g){return this.each(function(){var a=b(this),d=function(){if(!a.data("_changed")){var f=[];b.each(e,function(h,c){c=b(c);c.val().length>0&&f.push(c.val())});a.val(URLify(f.join(" "),g))}};a.data("_changed",false);a.change(function(){a.data("_changed",true)});a.val()||b(e.join(",")).keyup(d).change(d).focus(d)})}})(django.jQuery); | ||||||
							
								
								
									
										94
									
								
								static/admin/js/timeparse.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,94 @@ | ||||||
|  | var timeParsePatterns = [ | ||||||
|  |     // 9
 | ||||||
|  |     {   re: /^\d{1,2}$/i, | ||||||
|  |         handler: function(bits) { | ||||||
|  |             if (bits[0].length == 1) { | ||||||
|  |                 return '0' + bits[0] + ':00'; | ||||||
|  |             } else { | ||||||
|  |                 return bits[0] + ':00'; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  |     // 13:00
 | ||||||
|  |     {   re: /^\d{2}[:.]\d{2}$/i, | ||||||
|  |         handler: function(bits) { | ||||||
|  |             return bits[0].replace('.', ':'); | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  |     // 9:00
 | ||||||
|  |     {   re: /^\d[:.]\d{2}$/i, | ||||||
|  |         handler: function(bits) { | ||||||
|  |             return '0' + bits[0].replace('.', ':'); | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  |     // 3 am / 3 a.m. / 3am
 | ||||||
|  |     {   re: /^(\d+)\s*([ap])(?:.?m.?)?$/i, | ||||||
|  |         handler: function(bits) { | ||||||
|  |             var hour = parseInt(bits[1]); | ||||||
|  |             if (hour == 12) { | ||||||
|  |                 hour = 0; | ||||||
|  |             } | ||||||
|  |             if (bits[2].toLowerCase() == 'p') { | ||||||
|  |                 if (hour == 12) { | ||||||
|  |                     hour = 0; | ||||||
|  |                 } | ||||||
|  |                 return (hour + 12) + ':00'; | ||||||
|  |             } else { | ||||||
|  |                 if (hour < 10) { | ||||||
|  |                     return '0' + hour + ':00'; | ||||||
|  |                 } else { | ||||||
|  |                     return hour + ':00'; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  |     // 3.30 am / 3:15 a.m. / 3.00am
 | ||||||
|  |     {   re: /^(\d+)[.:](\d{2})\s*([ap]).?m.?$/i, | ||||||
|  |         handler: function(bits) { | ||||||
|  |             var hour = parseInt(bits[1]); | ||||||
|  |             var mins = parseInt(bits[2]); | ||||||
|  |             if (mins < 10) { | ||||||
|  |                 mins = '0' + mins; | ||||||
|  |             } | ||||||
|  |             if (hour == 12) { | ||||||
|  |                 hour = 0; | ||||||
|  |             } | ||||||
|  |             if (bits[3].toLowerCase() == 'p') { | ||||||
|  |                 if (hour == 12) { | ||||||
|  |                     hour = 0; | ||||||
|  |                 } | ||||||
|  |                 return (hour + 12) + ':' + mins; | ||||||
|  |             } else { | ||||||
|  |                 if (hour < 10) { | ||||||
|  |                     return '0' + hour + ':' + mins; | ||||||
|  |                 } else { | ||||||
|  |                     return hour + ':' + mins; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  |     // noon
 | ||||||
|  |     {   re: /^no/i, | ||||||
|  |         handler: function(bits) { | ||||||
|  |             return '12:00'; | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  |     // midnight
 | ||||||
|  |     {   re: /^mid/i, | ||||||
|  |         handler: function(bits) { | ||||||
|  |             return '00:00'; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | ]; | ||||||
|  | 
 | ||||||
|  | function parseTimeString(s) { | ||||||
|  |     for (var i = 0; i < timeParsePatterns.length; i++) { | ||||||
|  |         var re = timeParsePatterns[i].re; | ||||||
|  |         var handler = timeParsePatterns[i].handler; | ||||||
|  |         var bits = re.exec(s); | ||||||
|  |         if (bits) { | ||||||
|  |             return handler(bits); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     return s; | ||||||
|  | } | ||||||
							
								
								
									
										147
									
								
								static/admin/js/urlify.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,147 @@ | ||||||
|  | var LATIN_MAP = { | ||||||
|  |     'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'A', 'Å': 'A', 'Æ': 'AE', 'Ç': | ||||||
|  |     'C', 'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'Ì': 'I', 'Í': 'I', 'Î': 'I', | ||||||
|  |     'Ï': 'I', 'Ð': 'D', 'Ñ': 'N', 'Ò': 'O', 'Ó': 'O', 'Ô': 'O', 'Õ': 'O', 'Ö': | ||||||
|  |     'O', 'Ő': 'O', 'Ø': 'O', 'Ù': 'U', 'Ú': 'U', 'Û': 'U', 'Ü': 'U', 'Ű': 'U', | ||||||
|  |     'Ý': 'Y', 'Þ': 'TH', 'Ÿ': 'Y', 'ß': 'ss', 'à':'a', 'á':'a', 'â': 'a', 'ã': | ||||||
|  |     'a', 'ä': 'a', 'å': 'a', 'æ': 'ae', 'ç': 'c', 'è': 'e', 'é': 'e', 'ê': 'e', | ||||||
|  |     'ë': 'e', 'ì': 'i', 'í': 'i', 'î': 'i', 'ï': 'i', 'ð': 'd', 'ñ': 'n', 'ò': | ||||||
|  |     'o', 'ó': 'o', 'ô': 'o', 'õ': 'o', 'ö': 'o', 'ő': 'o', 'ø': 'o', 'ù': 'u', | ||||||
|  |     'ú': 'u', 'û': 'u', 'ü': 'u', 'ű': 'u', 'ý': 'y', 'þ': 'th', 'ÿ': 'y' | ||||||
|  | }; | ||||||
|  | var LATIN_SYMBOLS_MAP = { | ||||||
|  |     '©':'(c)' | ||||||
|  | }; | ||||||
|  | var GREEK_MAP = { | ||||||
|  |     'α':'a', 'β':'b', 'γ':'g', 'δ':'d', 'ε':'e', 'ζ':'z', 'η':'h', 'θ':'8', | ||||||
|  |     'ι':'i', 'κ':'k', 'λ':'l', 'μ':'m', 'ν':'n', 'ξ':'3', 'ο':'o', 'π':'p', | ||||||
|  |     'ρ':'r', 'σ':'s', 'τ':'t', 'υ':'y', 'φ':'f', 'χ':'x', 'ψ':'ps', 'ω':'w', | ||||||
|  |     'ά':'a', 'έ':'e', 'ί':'i', 'ό':'o', 'ύ':'y', 'ή':'h', 'ώ':'w', 'ς':'s', | ||||||
|  |     'ϊ':'i', 'ΰ':'y', 'ϋ':'y', 'ΐ':'i', | ||||||
|  |     'Α':'A', 'Β':'B', 'Γ':'G', 'Δ':'D', 'Ε':'E', 'Ζ':'Z', 'Η':'H', 'Θ':'8', | ||||||
|  |     'Ι':'I', 'Κ':'K', 'Λ':'L', 'Μ':'M', 'Ν':'N', 'Ξ':'3', 'Ο':'O', 'Π':'P', | ||||||
|  |     'Ρ':'R', 'Σ':'S', 'Τ':'T', 'Υ':'Y', 'Φ':'F', 'Χ':'X', 'Ψ':'PS', 'Ω':'W', | ||||||
|  |     'Ά':'A', 'Έ':'E', 'Ί':'I', 'Ό':'O', 'Ύ':'Y', 'Ή':'H', 'Ώ':'W', 'Ϊ':'I', | ||||||
|  |     'Ϋ':'Y' | ||||||
|  | }; | ||||||
|  | var TURKISH_MAP = { | ||||||
|  |     'ş':'s', 'Ş':'S', 'ı':'i', 'İ':'I', 'ç':'c', 'Ç':'C', 'ü':'u', 'Ü':'U', | ||||||
|  |     'ö':'o', 'Ö':'O', 'ğ':'g', 'Ğ':'G' | ||||||
|  | }; | ||||||
|  | var RUSSIAN_MAP = { | ||||||
|  |     'а':'a', 'б':'b', 'в':'v', 'г':'g', 'д':'d', 'е':'e', 'ё':'yo', 'ж':'zh', | ||||||
|  |     'з':'z', 'и':'i', 'й':'j', 'к':'k', 'л':'l', 'м':'m', 'н':'n', 'о':'o', | ||||||
|  |     'п':'p', 'р':'r', 'с':'s', 'т':'t', 'у':'u', 'ф':'f', 'х':'h', 'ц':'c', | ||||||
|  |     'ч':'ch', 'ш':'sh', 'щ':'sh', 'ъ':'', 'ы':'y', 'ь':'', 'э':'e', 'ю':'yu', | ||||||
|  |     'я':'ya', | ||||||
|  |     'А':'A', 'Б':'B', 'В':'V', 'Г':'G', 'Д':'D', 'Е':'E', 'Ё':'Yo', 'Ж':'Zh', | ||||||
|  |     'З':'Z', 'И':'I', 'Й':'J', 'К':'K', 'Л':'L', 'М':'M', 'Н':'N', 'О':'O', | ||||||
|  |     'П':'P', 'Р':'R', 'С':'S', 'Т':'T', 'У':'U', 'Ф':'F', 'Х':'H', 'Ц':'C', | ||||||
|  |     'Ч':'Ch', 'Ш':'Sh', 'Щ':'Sh', 'Ъ':'', 'Ы':'Y', 'Ь':'', 'Э':'E', 'Ю':'Yu', | ||||||
|  |     'Я':'Ya' | ||||||
|  | }; | ||||||
|  | var UKRAINIAN_MAP = { | ||||||
|  |     'Є':'Ye', 'І':'I', 'Ї':'Yi', 'Ґ':'G', 'є':'ye', 'і':'i', 'ї':'yi', 'ґ':'g' | ||||||
|  | }; | ||||||
|  | var CZECH_MAP = { | ||||||
|  |     'č':'c', 'ď':'d', 'ě':'e', 'ň': 'n', 'ř':'r', 'š':'s', 'ť':'t', 'ů':'u', | ||||||
|  |     'ž':'z', 'Č':'C', 'Ď':'D', 'Ě':'E', 'Ň': 'N', 'Ř':'R', 'Š':'S', 'Ť':'T', | ||||||
|  |     'Ů':'U', 'Ž':'Z' | ||||||
|  | }; | ||||||
|  | var POLISH_MAP = { | ||||||
|  |     'ą':'a', 'ć':'c', 'ę':'e', 'ł':'l', 'ń':'n', 'ó':'o', 'ś':'s', 'ź':'z', | ||||||
|  |     'ż':'z', 'Ą':'A', 'Ć':'C', 'Ę':'E', 'Ł':'L', 'Ń':'N', 'Ó':'O', 'Ś':'S', | ||||||
|  |     'Ź':'Z', 'Ż':'Z' | ||||||
|  | }; | ||||||
|  | var LATVIAN_MAP = { | ||||||
|  |     'ā':'a', 'č':'c', 'ē':'e', 'ģ':'g', 'ī':'i', 'ķ':'k', 'ļ':'l', 'ņ':'n', | ||||||
|  |     'š':'s', 'ū':'u', 'ž':'z', 'Ā':'A', 'Č':'C', 'Ē':'E', 'Ģ':'G', 'Ī':'I', | ||||||
|  |     'Ķ':'K', 'Ļ':'L', 'Ņ':'N', 'Š':'S', 'Ū':'U', 'Ž':'Z' | ||||||
|  | }; | ||||||
|  | var ARABIC_MAP = { | ||||||
|  |     'أ':'a', 'ب':'b', 'ت':'t', 'ث': 'th', 'ج':'g', 'ح':'h', 'خ':'kh', 'د':'d', | ||||||
|  |     'ذ':'th', 'ر':'r', 'ز':'z', 'س':'s', 'ش':'sh', 'ص':'s', 'ض':'d', 'ط':'t', | ||||||
|  |     'ظ':'th', 'ع':'aa', 'غ':'gh', 'ف':'f', 'ق':'k', 'ك':'k', 'ل':'l', 'م':'m', | ||||||
|  |     'ن':'n', 'ه':'h', 'و':'o', 'ي':'y' | ||||||
|  | }; | ||||||
|  | var LITHUANIAN_MAP = { | ||||||
|  |     'ą':'a', 'č':'c', 'ę':'e', 'ė':'e', 'į':'i', 'š':'s', 'ų':'u', 'ū':'u', | ||||||
|  |     'ž':'z', | ||||||
|  |     'Ą':'A', 'Č':'C', 'Ę':'E', 'Ė':'E', 'Į':'I', 'Š':'S', 'Ų':'U', 'Ū':'U', | ||||||
|  |     'Ž':'Z' | ||||||
|  | }; | ||||||
|  | var SERBIAN_MAP = { | ||||||
|  |     'ђ':'dj', 'ј':'j', 'љ':'lj', 'њ':'nj', 'ћ':'c', 'џ':'dz', 'đ':'dj', | ||||||
|  |     'Ђ':'Dj', 'Ј':'j', 'Љ':'Lj', 'Њ':'Nj', 'Ћ':'C', 'Џ':'Dz', 'Đ':'Dj' | ||||||
|  | }; | ||||||
|  | var AZERBAIJANI_MAP = { | ||||||
|  |     'ç':'c', 'ə':'e', 'ğ':'g', 'ı':'i', 'ö':'o', 'ş':'s', 'ü':'u', | ||||||
|  |     'Ç':'C', 'Ə':'E', 'Ğ':'G', 'İ':'I', 'Ö':'O', 'Ş':'S', 'Ü':'U' | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | var ALL_DOWNCODE_MAPS = [ | ||||||
|  |     LATIN_MAP, | ||||||
|  |     LATIN_SYMBOLS_MAP, | ||||||
|  |     GREEK_MAP, | ||||||
|  |     TURKISH_MAP, | ||||||
|  |     RUSSIAN_MAP, | ||||||
|  |     UKRAINIAN_MAP, | ||||||
|  |     CZECH_MAP, | ||||||
|  |     POLISH_MAP, | ||||||
|  |     LATVIAN_MAP, | ||||||
|  |     ARABIC_MAP, | ||||||
|  |     LITHUANIAN_MAP, | ||||||
|  |     SERBIAN_MAP, | ||||||
|  |     AZERBAIJANI_MAP | ||||||
|  | ]; | ||||||
|  | 
 | ||||||
|  | var Downcoder = { | ||||||
|  |     'Initialize': function() { | ||||||
|  |         if (Downcoder.map) {  // already made
 | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  |         Downcoder.map = {}; | ||||||
|  |         Downcoder.chars = []; | ||||||
|  |         for (var i=0; i<ALL_DOWNCODE_MAPS.length; i++) { | ||||||
|  |             var lookup = ALL_DOWNCODE_MAPS[i]; | ||||||
|  |             for (var c in lookup) { | ||||||
|  |                 if (lookup.hasOwnProperty(c)) { | ||||||
|  |                     Downcoder.map[c] = lookup[c]; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         for (var k in Downcoder.map) { | ||||||
|  |             if (Downcoder.map.hasOwnProperty(k)) { | ||||||
|  |                 Downcoder.chars.push(k); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         Downcoder.regex = new RegExp(Downcoder.chars.join('|'), 'g'); | ||||||
|  |     } | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | function downcode(slug) { | ||||||
|  |     Downcoder.Initialize(); | ||||||
|  |     return slug.replace(Downcoder.regex, function(m) { | ||||||
|  |         return Downcoder.map[m]; | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | function URLify(s, num_chars) { | ||||||
|  |     // changes, e.g., "Petty theft" to "petty_theft"
 | ||||||
|  |     // remove all these words from the string before urlifying
 | ||||||
|  |     s = downcode(s); | ||||||
|  |     var removelist = [ | ||||||
|  |         "a", "an", "as", "at", "before", "but", "by", "for", "from", "is", | ||||||
|  |         "in", "into", "like", "of", "off", "on", "onto", "per", "since", | ||||||
|  |         "than", "the", "this", "that", "to", "up", "via", "with" | ||||||
|  |     ]; | ||||||
|  |     var r = new RegExp('\\b(' + removelist.join('|') + ')\\b', 'gi'); | ||||||
|  |     s = s.replace(r, ''); | ||||||
|  |     // if downcode doesn't hit, the char will be stripped here
 | ||||||
|  |     s = s.replace(/[^-\w\s]/g, '');  // remove unneeded chars
 | ||||||
|  |     s = s.replace(/^\s+|\s+$/g, ''); // trim leading/trailing spaces
 | ||||||
|  |     s = s.replace(/[-\s]+/g, '-');   // convert spaces to hyphens
 | ||||||
|  |     s = s.toLowerCase();             // convert to lowercase
 | ||||||
|  |     return s.substring(0, num_chars);// trim to first num_chars chars
 | ||||||
|  | } | ||||||
							
								
								
									
										7
									
								
								static/admin_enhancer/css/related-widget-wrapper.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,7 @@ | ||||||
|  | .related-widget-wrapper-link { | ||||||
|  | 	opacity: 0.3; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .related-widget-wrapper-link:link { | ||||||
|  | 	opacity: 1; | ||||||
|  | } | ||||||
							
								
								
									
										55
									
								
								static/admin_enhancer/js/related-widget-wrapper.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,55 @@ | ||||||
|  | django.jQuery(document).ready(function($){ | ||||||
|  |      | ||||||
|  |     window.dismissChangeRelatedPopup = function(win, objId, newRepr) { | ||||||
|  |         objId = html_unescape(objId); | ||||||
|  |         newRepr = html_unescape(newRepr); | ||||||
|  |         var id = windowname_to_id(win.name).replace(/^edit_/, ''), | ||||||
|  |             selects = $(interpolate('#%s, #%s_from, #%s_to', [id, id, id])); | ||||||
|  |         selects.find('option').each(function(){ | ||||||
|  |             if (this.value == objId) this.innerHTML = newRepr; | ||||||
|  |         }); | ||||||
|  |         win.close(); | ||||||
|  |     }; | ||||||
|  |      | ||||||
|  |     if (!dismissAddAnotherPopup.original) { | ||||||
|  |         var originalDismissAddAnotherPopup = dismissAddAnotherPopup; | ||||||
|  |         dismissAddAnotherPopup = function(win, newId, newRepr) { | ||||||
|  |             originalDismissAddAnotherPopup(win, newId, newRepr); | ||||||
|  |             newId = html_unescape(newId); | ||||||
|  |             newRepr = html_unescape(newRepr); | ||||||
|  |             $('#' + windowname_to_id(win.name)).trigger('change'); | ||||||
|  |         }; | ||||||
|  |         dismissAddAnotherPopup.original = originalDismissAddAnotherPopup; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     window.dismissDeleteRelatedPopup = function(win, objId) { | ||||||
|  |         objId = html_unescape(objId); | ||||||
|  |         var id = windowname_to_id(win.name).replace(/^delete_/, ''), | ||||||
|  |             selects = $(interpolate('#%s, #%s_from, #%s_to', [id, id, id])); | ||||||
|  |         selects.find('option').each(function(){ | ||||||
|  |             if (this.value == objId) $(this).remove(); | ||||||
|  |         }).trigger('change'); | ||||||
|  |         win.close(); | ||||||
|  |     }; | ||||||
|  |      | ||||||
|  | 	var relatedWidgetCSSSelector = '.related-widget-wrapper-change-link, .related-widget-wrapper-delete-link', | ||||||
|  |   		hrefTemplateAttr = 'data-href-template'; | ||||||
|  |    | ||||||
|  |     $('#container').delegate('.related-widget-wrapper', 'change', function(event){ | ||||||
|  |         var siblings = $(this).nextAll(relatedWidgetCSSSelector), | ||||||
|  |             value = event.target.value; | ||||||
|  |         if (!siblings.length) return; | ||||||
|  |         if (value) { | ||||||
|  | 	       siblings.each(function(){ | ||||||
|  | 		      var elm = $(this); | ||||||
|  | 		      elm.attr('href', elm.attr(hrefTemplateAttr).replace('__pk__', value)); | ||||||
|  | 	       }); | ||||||
|  |         } else siblings.removeAttr('href'); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  | 	$('#container').delegate('.related-widget-wrapper-link', 'click', function(event){ | ||||||
|  |     	if (this.href) { | ||||||
|  |     		return showAddAnotherPopup(this); | ||||||
|  |     	} else return false; | ||||||
|  |     }); | ||||||
|  | }); | ||||||
							
								
								
									
										96
									
								
								static/cms/PIE.htc
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,96 @@ | ||||||
|  | <!-- | ||||||
|  | PIE: CSS3 rendering for IE | ||||||
|  | Version 1.0beta5 | ||||||
|  | http://css3pie.com | ||||||
|  | Dual-licensed for use under the Apache License Version 2.0 or the General Public License (GPL) Version 2. | ||||||
|  | --> | ||||||
|  | <PUBLIC:COMPONENT lightWeight="true"> | ||||||
|  | <!-- saved from url=(0014)about:internet --> | ||||||
|  | <PUBLIC:ATTACH EVENT="oncontentready" FOR="element" ONEVENT="init()" /> | ||||||
|  | <PUBLIC:ATTACH EVENT="ondocumentready" FOR="element" ONEVENT="init()" /> | ||||||
|  | <PUBLIC:ATTACH EVENT="ondetach" FOR="element" ONEVENT="cleanup()" /> | ||||||
|  | 
 | ||||||
|  | <script type="text/javascript"> | ||||||
|  | var doc = element.document;var f=window.PIE; | ||||||
|  | if(!f){f=window.PIE={Q:"-pie-",nb:"Pie",La:"pie_",Ac:{TD:1,TH:1},cc:{TABLE:1,THEAD:1,TBODY:1,TFOOT:1,TR:1,INPUT:1,TEXTAREA:1,SELECT:1,OPTION:1,IMG:1,HR:1},fc:{A:1,INPUT:1,TEXTAREA:1,SELECT:1,BUTTON:1},Gd:{submit:1,button:1,reset:1},aa:function(){}};try{doc.execCommand("BackgroundImageCache",false,true)}catch(aa){}for(var X=4,Y=doc.createElement("div"),ca=Y.getElementsByTagName("i"),Z;Y.innerHTML="<!--[if gt IE "+ ++X+"]><i></i><![endif]--\>",ca[0];);f.V=X;if(X===6)f.Q=f.Q.replace(/^-/,"");f.Ba=doc.documentMode|| | ||||||
|  | f.V;Y.innerHTML='<v:shape adj="1"/>';Z=Y.firstChild;Z.style.behavior="url(#default#VML)";f.zc=typeof Z.adj==="object";(function(){var a,b=0,c={};f.p={Za:function(d){if(!a){a=doc.createDocumentFragment();a.namespaces.add("css3vml","urn:schemas-microsoft-com:vml")}return a.createElement("css3vml:"+d)},Aa:function(d){return d&&d._pieId||(d._pieId="_"+ ++b)},Eb:function(d){var e,g,i,j,h=arguments;e=1;for(g=h.length;e<g;e++){j=h[e];for(i in j)if(j.hasOwnProperty(i))d[i]=j[i]}return d},Rb:function(d,e, | ||||||
|  | g){var i=c[d],j,h;if(i)Object.prototype.toString.call(i)==="[object Array]"?i.push([e,g]):e.call(g,i);else{h=c[d]=[[e,g]];j=new Image;j.onload=function(){i=c[d]={i:j.width,f:j.height};for(var k=0,n=h.length;k<n;k++)h[k][0].call(h[k][1],i);j.onload=null};j.src=d}}}})();f.Na={gc:function(a,b,c,d){function e(){k=i>=90&&i<270?b:0;n=i<180?c:0;l=b-k;q=c-n}function g(){for(;i<0;)i+=360;i%=360}var i=d.ra;d=d.zb;var j,h,k,n,l,q,s,m;if(d){d=d.coords(a,b,c);j=d.x;h=d.y}if(i){i=i.jd();g();e();if(!d){j=k;h=n}d= | ||||||
|  | f.Na.tc(j,h,i,l,q);a=d[0];d=d[1]}else if(d){a=b-j;d=c-h}else{j=h=a=0;d=c}s=a-j;m=d-h;if(i===void 0){i=!s?m<0?90:270:!m?s<0?180:0:-Math.atan2(m,s)/Math.PI*180;g();e()}return{ra:i,xc:j,yc:h,td:a,ud:d,Vd:k,Wd:n,rd:l,sd:q,kd:s,ld:m,rc:f.Na.dc(j,h,a,d)}},tc:function(a,b,c,d,e){if(c===0||c===180)return[d,b];else if(c===90||c===270)return[a,e];else{c=Math.tan(-c*Math.PI/180);a=c*a-b;b=-1/c;d=b*d-e;e=b-c;return[(d-a)/e,(c*d-b*a)/e]}},dc:function(a,b,c,d){a=c-a;b=d-b;return Math.abs(a===0?b:b===0?a:Math.sqrt(a* | ||||||
|  | a+b*b))}};f.ea=function(){this.Gb=[];this.oc={}};f.ea.prototype={ba:function(a){var b=f.p.Aa(a),c=this.oc,d=this.Gb;if(!(b in c)){c[b]=d.length;d.push(a)}},Ha:function(a){a=f.p.Aa(a);var b=this.oc;if(a&&a in b){delete this.Gb[b[a]];delete b[a]}},wa:function(){for(var a=this.Gb,b=a.length;b--;)a[b]&&a[b]()}};f.Oa=new f.ea;f.Oa.Qd=function(){var a=this;if(!a.Rd){setInterval(function(){a.wa()},250);a.Rd=1}};(function(){function a(){f.K.wa();window.detachEvent("onunload",a);window.PIE=null}f.K=new f.ea; | ||||||
|  | window.attachEvent("onunload",a);f.K.sa=function(b,c,d){b.attachEvent(c,d);this.ba(function(){b.detachEvent(c,d)})}})();f.Qa=new f.ea;f.K.sa(window,"onresize",function(){f.Qa.wa()});(function(){function a(){f.mb.wa()}f.mb=new f.ea;f.K.sa(window,"onscroll",a);f.Qa.ba(a)})();(function(){function a(){c=f.kb.md()}function b(){if(c){for(var d=0,e=c.length;d<e;d++)f.attach(c[d]);c=0}}var c;f.K.sa(window,"onbeforeprint",a);f.K.sa(window,"onafterprint",b)})();f.lb=new f.ea;f.K.sa(doc,"onmouseup",function(){f.lb.wa()}); | ||||||
|  | f.ge=function(){function a(h){this.Y=h}var b=doc.createElement("length-calc"),c=doc.documentElement,d=b.style,e={},g=["mm","cm","in","pt","pc"],i=g.length,j={};d.position="absolute";d.top=d.left="-9999px";for(c.appendChild(b);i--;){b.style.width="100"+g[i];e[g[i]]=b.offsetWidth/100}c.removeChild(b);b.style.width="1em";a.prototype={Kb:/(px|em|ex|mm|cm|in|pt|pc|%)$/,ic:function(){var h=this.Id;if(h===void 0)h=this.Id=parseFloat(this.Y);return h},yb:function(){var h=this.$d;if(!h)h=this.$d=(h=this.Y.match(this.Kb))&& | ||||||
|  | h[0]||"px";return h},a:function(h,k){var n=this.ic(),l=this.yb();switch(l){case "px":return n;case "%":return n*(typeof k==="function"?k():k)/100;case "em":return n*this.xb(h);case "ex":return n*this.xb(h)/2;default:return n*e[l]}},xb:function(h){var k=h.currentStyle.fontSize,n,l;if(k.indexOf("px")>0)return parseFloat(k);else if(h.tagName in f.cc){l=this;n=h.parentNode;return f.n(k).a(n,function(){return l.xb(n)})}else{h.appendChild(b);k=b.offsetWidth;b.parentNode===h&&h.removeChild(b);return k}}}; | ||||||
|  | f.n=function(h){return j[h]||(j[h]=new a(h))};return a}();f.Ja=function(){function a(e){this.X=e}var b=f.n("50%"),c={top:1,center:1,bottom:1},d={left:1,center:1,right:1};a.prototype={zd:function(){if(!this.ac){var e=this.X,g=e.length,i=f.v,j=i.pa,h=f.n("0");j=j.ma;h=["left",h,"top",h];if(g===1){e.push(new i.ob(j,"center"));g++}if(g===2){j&(e[0].k|e[1].k)&&e[0].d in c&&e[1].d in d&&e.push(e.shift());if(e[0].k&j)if(e[0].d==="center")h[1]=b;else h[0]=e[0].d;else if(e[0].W())h[1]=f.n(e[0].d);if(e[1].k& | ||||||
|  | j)if(e[1].d==="center")h[3]=b;else h[2]=e[1].d;else if(e[1].W())h[3]=f.n(e[1].d)}this.ac=h}return this.ac},coords:function(e,g,i){var j=this.zd(),h=j[1].a(e,g);e=j[3].a(e,i);return{x:j[0]==="right"?g-h:h,y:j[2]==="bottom"?i-e:e}}};return a}();f.Ka=function(){function a(b,c){this.i=b;this.f=c}a.prototype={a:function(b,c,d,e,g){var i=this.i,j=this.f,h=c/d;e=e/g;if(i==="contain"){i=e>h?c:d*e;j=e>h?c/e:d}else if(i==="cover"){i=e<h?c:d*e;j=e<h?c/e:d}else if(i==="auto"){j=j==="auto"?g:j.a(b,d);i=j*e}else{i= | ||||||
|  | i.a(b,c);j=j==="auto"?i/e:j.a(b,d)}return{i:i,f:j}}};a.Kc=new a("auto","auto");return a}();f.Ec=function(){function a(b){this.Y=b}a.prototype={Kb:/[a-z]+$/i,yb:function(){return this.ad||(this.ad=this.Y.match(this.Kb)[0].toLowerCase())},jd:function(){var b=this.Vc,c;if(b===undefined){b=this.yb();c=parseFloat(this.Y,10);b=this.Vc=b==="deg"?c:b==="rad"?c/Math.PI*180:b==="grad"?c/400*360:b==="turn"?c*360:0}return b}};return a}();f.Jc=function(){function a(c){this.Y=c}var b={};a.Pd=/\s*rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d+|\d*\.\d+)\s*\)\s*/; | ||||||
|  | a.Fb={aliceblue:"F0F8FF",antiquewhite:"FAEBD7",aqua:"0FF",aquamarine:"7FFFD4",azure:"F0FFFF",beige:"F5F5DC",bisque:"FFE4C4",black:"000",blanchedalmond:"FFEBCD",blue:"00F",blueviolet:"8A2BE2",brown:"A52A2A",burlywood:"DEB887",cadetblue:"5F9EA0",chartreuse:"7FFF00",chocolate:"D2691E",coral:"FF7F50",cornflowerblue:"6495ED",cornsilk:"FFF8DC",crimson:"DC143C",cyan:"0FF",darkblue:"00008B",darkcyan:"008B8B",darkgoldenrod:"B8860B",darkgray:"A9A9A9",darkgreen:"006400",darkkhaki:"BDB76B",darkmagenta:"8B008B", | ||||||
|  | darkolivegreen:"556B2F",darkorange:"FF8C00",darkorchid:"9932CC",darkred:"8B0000",darksalmon:"E9967A",darkseagreen:"8FBC8F",darkslateblue:"483D8B",darkslategray:"2F4F4F",darkturquoise:"00CED1",darkviolet:"9400D3",deeppink:"FF1493",deepskyblue:"00BFFF",dimgray:"696969",dodgerblue:"1E90FF",firebrick:"B22222",floralwhite:"FFFAF0",forestgreen:"228B22",fuchsia:"F0F",gainsboro:"DCDCDC",ghostwhite:"F8F8FF",gold:"FFD700",goldenrod:"DAA520",gray:"808080",green:"008000",greenyellow:"ADFF2F",honeydew:"F0FFF0", | ||||||
|  | hotpink:"FF69B4",indianred:"CD5C5C",indigo:"4B0082",ivory:"FFFFF0",khaki:"F0E68C",lavender:"E6E6FA",lavenderblush:"FFF0F5",lawngreen:"7CFC00",lemonchiffon:"FFFACD",lightblue:"ADD8E6",lightcoral:"F08080",lightcyan:"E0FFFF",lightgoldenrodyellow:"FAFAD2",lightgreen:"90EE90",lightgrey:"D3D3D3",lightpink:"FFB6C1",lightsalmon:"FFA07A",lightseagreen:"20B2AA",lightskyblue:"87CEFA",lightslategray:"789",lightsteelblue:"B0C4DE",lightyellow:"FFFFE0",lime:"0F0",limegreen:"32CD32",linen:"FAF0E6",magenta:"F0F", | ||||||
|  | maroon:"800000",mediumauqamarine:"66CDAA",mediumblue:"0000CD",mediumorchid:"BA55D3",mediumpurple:"9370D8",mediumseagreen:"3CB371",mediumslateblue:"7B68EE",mediumspringgreen:"00FA9A",mediumturquoise:"48D1CC",mediumvioletred:"C71585",midnightblue:"191970",mintcream:"F5FFFA",mistyrose:"FFE4E1",moccasin:"FFE4B5",navajowhite:"FFDEAD",navy:"000080",oldlace:"FDF5E6",olive:"808000",olivedrab:"688E23",orange:"FFA500",orangered:"FF4500",orchid:"DA70D6",palegoldenrod:"EEE8AA",palegreen:"98FB98",paleturquoise:"AFEEEE", | ||||||
|  | palevioletred:"D87093",papayawhip:"FFEFD5",peachpuff:"FFDAB9",peru:"CD853F",pink:"FFC0CB",plum:"DDA0DD",powderblue:"B0E0E6",purple:"800080",red:"F00",rosybrown:"BC8F8F",royalblue:"4169E1",saddlebrown:"8B4513",salmon:"FA8072",sandybrown:"F4A460",seagreen:"2E8B57",seashell:"FFF5EE",sienna:"A0522D",silver:"C0C0C0",skyblue:"87CEEB",slateblue:"6A5ACD",slategray:"708090",snow:"FFFAFA",springgreen:"00FF7F",steelblue:"4682B4",tan:"D2B48C",teal:"008080",thistle:"D8BFD8",tomato:"FF6347",turquoise:"40E0D0", | ||||||
|  | violet:"EE82EE",wheat:"F5DEB3",white:"FFF",whitesmoke:"F5F5F5",yellow:"FF0",yellowgreen:"9ACD32"};a.prototype={parse:function(){if(!this.Ua){var c=this.Y,d;if(d=c.match(a.Pd)){this.Ua="rgb("+d[1]+","+d[2]+","+d[3]+")";this.Yb=parseFloat(d[4])}else{if((d=c.toLowerCase())in a.Fb)c="#"+a.Fb[d];this.Ua=c;this.Yb=c==="transparent"?0:1}}},T:function(c){this.parse();return this.Ua==="currentColor"?c.currentStyle.color:this.Ua},fa:function(){this.parse();return this.Yb}};f.ha=function(c){return b[c]||(b[c]= | ||||||
|  | new a(c))};return a}();f.v=function(){function a(c){this.$a=c;this.ch=0;this.X=[];this.Ga=0}var b=a.pa={Ia:1,Wb:2,B:4,Lc:8,Xb:16,ma:32,J:64,na:128,oa:256,Ra:512,Tc:1024,URL:2048};a.ob=function(c,d){this.k=c;this.d=d};a.ob.prototype={Ca:function(){return this.k&b.J||this.k&b.na&&this.d==="0"},W:function(){return this.Ca()||this.k&b.Ra}};a.prototype={ce:/\s/,Jd:/^[\+\-]?(\d*\.)?\d+/,url:/^url\(\s*("([^"]*)"|'([^']*)'|([!#$%&*-~]*))\s*\)/i,nc:/^\-?[_a-z][\w-]*/i,Xd:/^("([^"]*)"|'([^']*)')/,Bd:/^#([\da-f]{6}|[\da-f]{3})/i, | ||||||
|  | ae:{px:b.J,em:b.J,ex:b.J,mm:b.J,cm:b.J,"in":b.J,pt:b.J,pc:b.J,deg:b.Ia,rad:b.Ia,grad:b.Ia},fd:{rgb:1,rgba:1,hsl:1,hsla:1},next:function(c){function d(q,s){q=new a.ob(q,s);if(!c){k.X.push(q);k.Ga++}return q}function e(){k.Ga++;return null}var g,i,j,h,k=this;if(this.Ga<this.X.length)return this.X[this.Ga++];for(;this.ce.test(this.$a.charAt(this.ch));)this.ch++;if(this.ch>=this.$a.length)return e();i=this.ch;g=this.$a.substring(this.ch);j=g.charAt(0);switch(j){case "#":if(h=g.match(this.Bd)){this.ch+= | ||||||
|  | h[0].length;return d(b.B,h[0])}break;case '"':case "'":if(h=g.match(this.Xd)){this.ch+=h[0].length;return d(b.Tc,h[2]||h[3]||"")}break;case "/":case ",":this.ch++;return d(b.oa,j);case "u":if(h=g.match(this.url)){this.ch+=h[0].length;return d(b.URL,h[2]||h[3]||h[4]||"")}}if(h=g.match(this.Jd)){j=h[0];this.ch+=j.length;if(g.charAt(j.length)==="%"){this.ch++;return d(b.Ra,j+"%")}if(h=g.substring(j.length).match(this.nc)){j+=h[0];this.ch+=h[0].length;return d(this.ae[h[0].toLowerCase()]||b.Lc,j)}return d(b.na, | ||||||
|  | j)}if(h=g.match(this.nc)){j=h[0];this.ch+=j.length;if(j.toLowerCase()in f.Jc.Fb||j==="currentColor"||j==="transparent")return d(b.B,j);if(g.charAt(j.length)==="("){this.ch++;if(j.toLowerCase()in this.fd){g=function(q){return q&&q.k&b.na};h=function(q){return q&&q.k&(b.na|b.Ra)};var n=function(q,s){return q&&q.d===s},l=function(){return k.next(1)};if((j.charAt(0)==="r"?h(l()):g(l()))&&n(l(),",")&&h(l())&&n(l(),",")&&h(l())&&(j==="rgb"||j==="hsa"||n(l(),",")&&g(l()))&&n(l(),")"))return d(b.B,this.$a.substring(i, | ||||||
|  | this.ch));return e()}return d(b.Xb,j)}return d(b.ma,j)}this.ch++;return d(b.Wb,j)},D:function(){return this.X[this.Ga-- -2]},all:function(){for(;this.next(););return this.X},la:function(c,d){for(var e=[],g,i;g=this.next();){if(c(g)){i=true;this.D();break}e.push(g)}return d&&!i?null:e}};return a}();var da=function(a){this.e=a};da.prototype={Z:0,Nd:function(){var a=this.qb,b;return!a||(b=this.o())&&(a.x!==b.x||a.y!==b.y)},Sd:function(){var a=this.qb,b;return!a||(b=this.o())&&(a.i!==b.i||a.f!==b.f)}, | ||||||
|  | hc:function(){var a=this.e,b=a.getBoundingClientRect(),c=f.Ba===9;return{x:b.left,y:b.top,i:c?a.offsetWidth:b.right-b.left,f:c?a.offsetHeight:b.bottom-b.top}},o:function(){return this.Z?this.Va||(this.Va=this.hc()):this.hc()},Ad:function(){return!!this.qb},cb:function(){++this.Z},hb:function(){if(!--this.Z){if(this.Va)this.qb=this.Va;this.Va=null}}};(function(){function a(b){var c=f.p.Aa(b);return function(){if(this.Z){var d=this.$b||(this.$b={});return c in d?d[c]:(d[c]=b.call(this))}else return b.call(this)}} | ||||||
|  | f.C={Z:0,ja:function(b){function c(d){this.e=d;this.Zb=this.ia()}f.p.Eb(c.prototype,f.C,b);c.$c={};return c},j:function(){var b=this.ia(),c=this.constructor.$c;return b?b in c?c[b]:(c[b]=this.ka(b)):null},ia:a(function(){var b=this.e,c=this.constructor,d=b.style;b=b.currentStyle;var e=this.va,g=this.Fa,i=c.Yc||(c.Yc=f.Q+e);c=c.Zc||(c.Zc=f.nb+g.charAt(0).toUpperCase()+g.substring(1));return d[c]||b.getAttribute(i)||d[g]||b.getAttribute(e)}),h:a(function(){return!!this.j()}),G:a(function(){var b=this.ia(), | ||||||
|  | c=b!==this.Zb;this.Zb=b;return c}),ua:a,cb:function(){++this.Z},hb:function(){--this.Z||delete this.$b}}})();f.Sb=f.C.ja({va:f.Q+"background",Fa:f.nb+"Background",cd:{scroll:1,fixed:1,local:1},fb:{"repeat-x":1,"repeat-y":1,repeat:1,"no-repeat":1},sc:{"padding-box":1,"border-box":1,"content-box":1},Od:{top:1,right:1,bottom:1,left:1,center:1},Td:{contain:1,cover:1},eb:{Ma:"backgroundClip",B:"backgroundColor",da:"backgroundImage",Pa:"backgroundOrigin",R:"backgroundPosition",S:"backgroundRepeat",Sa:"backgroundSize"}, | ||||||
|  | ka:function(a){function b(v){return v&&v.W()||v.k&k&&v.d in m}function c(v){return v&&(v.W()&&f.n(v.d)||v.d==="auto"&&"auto")}var d=this.e.currentStyle,e,g,i,j=f.v.pa,h=j.oa,k=j.ma,n=j.B,l,q,s=0,m=this.Od,r,p,t={L:[]};if(this.wb()){e=new f.v(a);for(i={};g=e.next();){l=g.k;q=g.d;if(!i.N&&l&j.Xb&&q==="linear-gradient"){r={ca:[],N:q};for(p={};g=e.next();){l=g.k;q=g.d;if(l&j.Wb&&q===")"){p.color&&r.ca.push(p);r.ca.length>1&&f.p.Eb(i,r);break}if(l&n){if(r.ra||r.zb){g=e.D();if(g.k!==h)break;e.next()}p= | ||||||
|  | {color:f.ha(q)};g=e.next();if(g.W())p.db=f.n(g.d);else e.D()}else if(l&j.Ia&&!r.ra&&!p.color&&!r.ca.length)r.ra=new f.Ec(g.d);else if(b(g)&&!r.zb&&!p.color&&!r.ca.length){e.D();r.zb=new f.Ja(e.la(function(v){return!b(v)},false))}else if(l&h&&q===","){if(p.color){r.ca.push(p);p={}}}else break}}else if(!i.N&&l&j.URL){i.Ab=q;i.N="image"}else if(b(g)&&!i.$){e.D();i.$=new f.Ja(e.la(function(v){return!b(v)},false))}else if(l&k)if(q in this.fb&&!i.bb)i.bb=q;else if(q in this.sc&&!i.Wa){i.Wa=q;if((g=e.next())&& | ||||||
|  | g.k&k&&g.d in this.sc)i.ub=g.d;else{i.ub=q;e.D()}}else if(q in this.cd&&!i.bc)i.bc=q;else return null;else if(l&n&&!t.color)t.color=f.ha(q);else if(l&h&&q==="/"&&!i.Xa&&i.$){g=e.next();if(g.k&k&&g.d in this.Td)i.Xa=new f.Ka(g.d);else if(g=c(g)){l=c(e.next());if(!l){l=g;e.D()}i.Xa=new f.Ka(g,l)}else return null}else if(l&h&&q===","&&i.N){i.Hb=a.substring(s,e.ch-1);s=e.ch;t.L.push(i);i={}}else return null}if(i.N){i.Hb=a.substring(s);t.L.push(i)}}else this.Bc(f.Ba<9?function(){var v=this.eb,o=d[v.R+ | ||||||
|  | "X"],u=d[v.R+"Y"],x=d[v.da],y=d[v.B];if(y!=="transparent")t.color=f.ha(y);if(x!=="none")t.L=[{N:"image",Ab:(new f.v(x)).next().d,bb:d[v.S],$:new f.Ja((new f.v(o+" "+u)).all())}]}:function(){var v=this.eb,o=/\s*,\s*/,u=d[v.da].split(o),x=d[v.B],y,z,D,G,E,B;if(x!=="transparent")t.color=f.ha(x);if((G=u.length)&&u[0]!=="none"){x=d[v.S].split(o);y=d[v.R].split(o);z=d[v.Pa].split(o);D=d[v.Ma].split(o);v=d[v.Sa].split(o);t.L=[];for(o=0;o<G;o++)if((E=u[o])&&E!=="none"){B=v[o].split(" ");t.L.push({Hb:E+" "+ | ||||||
|  | x[o]+" "+y[o]+" / "+v[o]+" "+z[o]+" "+D[o],N:"image",Ab:(new f.v(E)).next().d,bb:x[o],$:new f.Ja((new f.v(y[o])).all()),Wa:z[o],ub:D[o],Xa:new f.Ka(B[0],B[1])})}}});return t.color||t.L[0]?t:null},Bc:function(a){var b=f.Ba>8,c=this.eb,d=this.e.runtimeStyle,e=d[c.da],g=d[c.B],i=d[c.S],j,h,k,n;if(e)d[c.da]="";if(g)d[c.B]="";if(i)d[c.S]="";if(b){j=d[c.Ma];h=d[c.Pa];n=d[c.R];k=d[c.Sa];if(j)d[c.Ma]="";if(h)d[c.Pa]="";if(n)d[c.R]="";if(k)d[c.Sa]=""}a=a.call(this);if(e)d[c.da]=e;if(g)d[c.B]=g;if(i)d[c.S]= | ||||||
|  | i;if(b){if(j)d[c.Ma]=j;if(h)d[c.Pa]=h;if(n)d[c.R]=n;if(k)d[c.Sa]=k}return a},ia:f.C.ua(function(){return this.wb()||this.Bc(function(){var a=this.e.currentStyle,b=this.eb;return a[b.B]+" "+a[b.da]+" "+a[b.S]+" "+a[b.R+"X"]+" "+a[b.R+"Y"]})}),wb:f.C.ua(function(){var a=this.e;return a.style[this.Fa]||a.currentStyle.getAttribute(this.va)}),qc:function(){var a=0;if(f.V<7){a=this.e;a=""+(a.style[f.nb+"PngFix"]||a.currentStyle.getAttribute(f.Q+"png-fix"))==="true"}return a},h:f.C.ua(function(){return(this.wb()|| | ||||||
|  | this.qc())&&!!this.j()})});f.Vb=f.C.ja({wc:["Top","Right","Bottom","Left"],Hd:{thin:"1px",medium:"3px",thick:"5px"},ka:function(){var a={},b={},c={},d=false,e=true,g=true,i=true;this.Cc(function(){for(var j=this.e.currentStyle,h=0,k,n,l,q,s,m,r;h<4;h++){l=this.wc[h];r=l.charAt(0).toLowerCase();k=b[r]=j["border"+l+"Style"];n=j["border"+l+"Color"];l=j["border"+l+"Width"];if(h>0){if(k!==q)g=false;if(n!==s)e=false;if(l!==m)i=false}q=k;s=n;m=l;c[r]=f.ha(n);l=a[r]=f.n(b[r]==="none"?"0":this.Hd[l]||l);if(l.a(this.e)> | ||||||
|  | 0)d=true}});return d?{I:a,Yd:b,gd:c,de:i,hd:e,Zd:g}:null},ia:f.C.ua(function(){var a=this.e,b=a.currentStyle,c;a.tagName in f.Ac&&a.offsetParent.currentStyle.borderCollapse==="collapse"||this.Cc(function(){c=b.borderWidth+"|"+b.borderStyle+"|"+b.borderColor});return c}),Cc:function(a){var b=this.e.runtimeStyle,c=b.borderWidth,d=b.borderColor;if(c)b.borderWidth="";if(d)b.borderColor="";a=a.call(this);if(c)b.borderWidth=c;if(d)b.borderColor=d;return a}});(function(){f.jb=f.C.ja({va:"border-radius", | ||||||
|  | Fa:"borderRadius",ka:function(b){var c=null,d,e,g,i,j=false;if(b){e=new f.v(b);var h=function(){for(var k=[],n;(g=e.next())&&g.W();){i=f.n(g.d);n=i.ic();if(n<0)return null;if(n>0)j=true;k.push(i)}return k.length>0&&k.length<5?{tl:k[0],tr:k[1]||k[0],br:k[2]||k[0],bl:k[3]||k[1]||k[0]}:null};if(b=h()){if(g){if(g.k&f.v.pa.oa&&g.d==="/")d=h()}else d=b;if(j&&b&&d)c={x:b,y:d}}}return c}});var a=f.n("0");a={tl:a,tr:a,br:a,bl:a};f.jb.Dc={x:a,y:a}})();f.Ub=f.C.ja({va:"border-image",Fa:"borderImage",fb:{stretch:1, | ||||||
|  | round:1,repeat:1,space:1},ka:function(a){var b=null,c,d,e,g,i,j,h=0,k=f.v.pa,n=k.ma,l=k.na,q=k.Ra;if(a){c=new f.v(a);b={};for(var s=function(p){return p&&p.k&k.oa&&p.d==="/"},m=function(p){return p&&p.k&n&&p.d==="fill"},r=function(){g=c.la(function(p){return!(p.k&(l|q))});if(m(c.next())&&!b.fill)b.fill=true;else c.D();if(s(c.next())){h++;i=c.la(function(p){return!p.W()&&!(p.k&n&&p.d==="auto")});if(s(c.next())){h++;j=c.la(function(p){return!p.Ca()})}}else c.D()};a=c.next();){d=a.k;e=a.d;if(d&(l|q)&& | ||||||
|  | !g){c.D();r()}else if(m(a)&&!b.fill){b.fill=true;r()}else if(d&n&&this.fb[e]&&!b.repeat){b.repeat={f:e};if(a=c.next())if(a.k&n&&this.fb[a.d])b.repeat.Ob=a.d;else c.D()}else if(d&k.URL&&!b.src)b.src=e;else return null}if(!b.src||!g||g.length<1||g.length>4||i&&i.length>4||h===1&&i.length<1||j&&j.length>4||h===2&&j.length<1)return null;if(!b.repeat)b.repeat={f:"stretch"};if(!b.repeat.Ob)b.repeat.Ob=b.repeat.f;a=function(p,t){return{t:t(p[0]),r:t(p[1]||p[0]),b:t(p[2]||p[0]),l:t(p[3]||p[1]||p[0])}};b.slice= | ||||||
|  | a(g,function(p){return f.n(p.k&l?p.d+"px":p.d)});if(i&&i[0])b.I=a(i,function(p){return p.W()?f.n(p.d):p.d});if(j&&j[0])b.Da=a(j,function(p){return p.Ca()?f.n(p.d):p.d})}return b}});f.Ic=f.C.ja({va:"box-shadow",Fa:"boxShadow",ka:function(a){var b,c=f.n,d=f.v.pa,e;if(a){e=new f.v(a);b={Da:[],Bb:[]};for(a=function(){for(var g,i,j,h,k,n;g=e.next();){j=g.d;i=g.k;if(i&d.oa&&j===",")break;else if(g.Ca()&&!k){e.D();k=e.la(function(l){return!l.Ca()})}else if(i&d.B&&!h)h=j;else if(i&d.ma&&j==="inset"&&!n)n= | ||||||
|  | true;else return false}g=k&&k.length;if(g>1&&g<5){(n?b.Bb:b.Da).push({ee:c(k[0].d),fe:c(k[1].d),blur:c(k[2]?k[2].d:"0"),Ud:c(k[3]?k[3].d:"0"),color:f.ha(h||"currentColor")});return true}return false};a(););}return b&&(b.Bb.length||b.Da.length)?b:null}});f.Uc=f.C.ja({ia:f.C.ua(function(){var a=this.e.currentStyle;return a.visibility+"|"+a.display}),ka:function(){var a=this.e,b=a.runtimeStyle;a=a.currentStyle;var c=b.visibility,d;b.visibility="";d=a.visibility;b.visibility=c;return{be:d!=="hidden", | ||||||
|  | nd:a.display!=="none"}},h:function(){return false}});f.u={P:function(a){function b(c,d,e,g){this.e=c;this.s=d;this.g=e;this.parent=g}f.p.Eb(b.prototype,f.u,a);return b},Cb:false,O:function(){return false},Ea:f.aa,Lb:function(){this.m();this.h()&&this.U()},ib:function(){this.Cb=true},Mb:function(){this.h()?this.U():this.m()},sb:function(a,b){this.vc(a);for(var c=this.qa||(this.qa=[]),d=a+1,e=c.length,g;d<e;d++)if(g=c[d])break;c[a]=b;this.H().insertBefore(b,g||null)},ya:function(a){var b=this.qa;return b&& | ||||||
|  | b[a]||null},vc:function(a){var b=this.ya(a),c=this.Ta;if(b&&c){c.removeChild(b);this.qa[a]=null}},za:function(a,b,c,d){var e=this.rb||(this.rb={}),g=e[a];if(!g){g=e[a]=f.p.Za("shape");if(b)g.appendChild(g[b]=f.p.Za(b));if(d){c=this.ya(d);if(!c){this.sb(d,doc.createElement("group"+d));c=this.ya(d)}}c.appendChild(g);a=g.style;a.position="absolute";a.left=a.top=0;a.behavior="url(#default#VML)"}return g},vb:function(a){var b=this.rb,c=b&&b[a];if(c){c.parentNode.removeChild(c);delete b[a]}return!!c},kc:function(a){var b= | ||||||
|  | this.e,c=this.s.o(),d=c.i,e=c.f,g,i,j,h,k,n;c=a.x.tl.a(b,d);g=a.y.tl.a(b,e);i=a.x.tr.a(b,d);j=a.y.tr.a(b,e);h=a.x.br.a(b,d);k=a.y.br.a(b,e);n=a.x.bl.a(b,d);a=a.y.bl.a(b,e);d=Math.min(d/(c+i),e/(j+k),d/(n+h),e/(g+a));if(d<1){c*=d;g*=d;i*=d;j*=d;h*=d;k*=d;n*=d;a*=d}return{x:{tl:c,tr:i,br:h,bl:n},y:{tl:g,tr:j,br:k,bl:a}}},xa:function(a,b,c){b=b||1;var d,e,g=this.s.o();e=g.i*b;g=g.f*b;var i=this.g.F,j=Math.floor,h=Math.ceil,k=a?a.Jb*b:0,n=a?a.Ib*b:0,l=a?a.tb*b:0;a=a?a.Db*b:0;var q,s,m,r,p;if(c||i.h()){d= | ||||||
|  | this.kc(c||i.j());c=d.x.tl*b;i=d.y.tl*b;q=d.x.tr*b;s=d.y.tr*b;m=d.x.br*b;r=d.y.br*b;p=d.x.bl*b;b=d.y.bl*b;e="m"+j(a)+","+j(i)+"qy"+j(c)+","+j(k)+"l"+h(e-q)+","+j(k)+"qx"+h(e-n)+","+j(s)+"l"+h(e-n)+","+h(g-r)+"qy"+h(e-m)+","+h(g-l)+"l"+j(p)+","+h(g-l)+"qx"+j(a)+","+h(g-b)+" x e"}else e="m"+j(a)+","+j(k)+"l"+h(e-n)+","+j(k)+"l"+h(e-n)+","+h(g-l)+"l"+j(a)+","+h(g-l)+"xe";return e},H:function(){var a=this.parent.ya(this.M),b;if(!a){a=doc.createElement(this.Ya);b=a.style;b.position="absolute";b.top=b.left= | ||||||
|  | 0;this.parent.sb(this.M,a)}return a},mc:function(){var a=this.e,b=a.currentStyle,c=a.runtimeStyle,d=a.tagName,e=f.V===6,g;if(e&&(d in f.cc||d==="FIELDSET")||d==="BUTTON"||d==="INPUT"&&a.type in f.Gd){c.borderWidth="";d=this.g.z.wc;for(g=d.length;g--;){e=d[g];c["padding"+e]="";c["padding"+e]=f.n(b["padding"+e]).a(a)+f.n(b["border"+e+"Width"]).a(a)+(f.V!==8&&g%2?1:0)}c.borderWidth=0}else if(e){if(a.childNodes.length!==1||a.firstChild.tagName!=="ie6-mask"){b=doc.createElement("ie6-mask");d=b.style;d.visibility= | ||||||
|  | "visible";for(d.zoom=1;d=a.firstChild;)b.appendChild(d);a.appendChild(b);c.visibility="hidden"}}else c.borderColor="transparent"},he:function(){},m:function(){this.parent.vc(this.M);delete this.rb;delete this.qa}};f.Rc=f.u.P({h:function(){var a=this.ed;for(var b in a)if(a.hasOwnProperty(b)&&a[b].h())return true;return false},O:function(){return this.g.Pb.G()},ib:function(){if(this.h()){var a=this.jc(),b=a,c;a=a.currentStyle;var d=a.position,e=this.H().style,g=0,i=0;i=this.s.o();if(d==="fixed"&&f.V> | ||||||
|  | 6){g=i.x;i=i.y;b=d}else{do b=b.offsetParent;while(b&&b.currentStyle.position==="static");if(b){c=b.getBoundingClientRect();b=b.currentStyle;g=i.x-c.left-(parseFloat(b.borderLeftWidth)||0);i=i.y-c.top-(parseFloat(b.borderTopWidth)||0)}else{b=doc.documentElement;g=i.x+b.scrollLeft-b.clientLeft;i=i.y+b.scrollTop-b.clientTop}b="absolute"}e.position=b;e.left=g;e.top=i;e.zIndex=d==="static"?-1:a.zIndex;this.Cb=true}},Mb:f.aa,Nb:function(){var a=this.g.Pb.j();this.H().style.display=a.be&&a.nd?"":"none"}, | ||||||
|  | Lb:function(){this.h()?this.Nb():this.m()},jc:function(){var a=this.e;return a.tagName in f.Ac?a.offsetParent:a},H:function(){var a=this.Ta,b;if(!a){b=this.jc();a=this.Ta=doc.createElement("css3-container");a.style.direction="ltr";this.Nb();b.parentNode.insertBefore(a,b)}return a},ab:f.aa,m:function(){var a=this.Ta,b;if(a&&(b=a.parentNode))b.removeChild(a);delete this.Ta;delete this.qa}});f.Fc=f.u.P({M:2,Ya:"background",O:function(){var a=this.g;return a.w.G()||a.F.G()},h:function(){var a=this.g; | ||||||
|  | return a.q.h()||a.F.h()||a.w.h()||a.ga.h()&&a.ga.j().Bb},U:function(){var a=this.s.o();if(a.i&&a.f){this.od();this.pd()}},od:function(){var a=this.g.w.j(),b=this.s.o(),c=this.e,d=a&&a.color,e,g;if(d&&d.fa()>0){this.lc();a=this.za("bgColor","fill",this.H(),1);e=b.i;b=b.f;a.stroked=false;a.coordsize=e*2+","+b*2;a.coordorigin="1,1";a.path=this.xa(null,2);g=a.style;g.width=e;g.height=b;a.fill.color=d.T(c);c=d.fa();if(c<1)a.fill.opacity=c}else this.vb("bgColor")},pd:function(){var a=this.g.w.j(),b=this.s.o(); | ||||||
|  | a=a&&a.L;var c,d,e,g,i;if(a){this.lc();d=b.i;e=b.f;for(i=a.length;i--;){b=a[i];c=this.za("bgImage"+i,"fill",this.H(),2);c.stroked=false;c.fill.type="tile";c.fillcolor="none";c.coordsize=d*2+","+e*2;c.coordorigin="1,1";c.path=this.xa(0,2);g=c.style;g.width=d;g.height=e;if(b.N==="linear-gradient")this.bd(c,b);else{c.fill.src=b.Ab;this.Md(c,i)}}}for(i=a?a.length:0;this.vb("bgImage"+i++););},Md:function(a,b){var c=this;f.p.Rb(a.fill.src,function(d){var e=c.e,g=c.s.o(),i=g.i;g=g.f;if(i&&g){var j=a.fill, | ||||||
|  | h=c.g,k=h.z.j(),n=k&&k.I;k=n?n.t.a(e):0;var l=n?n.r.a(e):0,q=n?n.b.a(e):0;n=n?n.l.a(e):0;h=h.w.j().L[b];e=h.$?h.$.coords(e,i-d.i-n-l,g-d.f-k-q):{x:0,y:0};h=h.bb;q=l=0;var s=i+1,m=g+1,r=f.V===8?0:1;n=Math.round(e.x)+n+0.5;k=Math.round(e.y)+k+0.5;j.position=n/i+","+k/g;if(h&&h!=="repeat"){if(h==="repeat-x"||h==="no-repeat"){l=k+1;m=k+d.f+r}if(h==="repeat-y"||h==="no-repeat"){q=n+1;s=n+d.i+r}a.style.clip="rect("+l+"px,"+s+"px,"+m+"px,"+q+"px)"}}})},bd:function(a,b){var c=this.e,d=this.s.o(),e=d.i,g= | ||||||
|  | d.f;a=a.fill;d=b.ca;var i=d.length,j=Math.PI,h=f.Na,k=h.tc,n=h.dc;b=h.gc(c,e,g,b);h=b.ra;var l=b.xc,q=b.yc,s=b.Vd,m=b.Wd,r=b.rd,p=b.sd,t=b.kd,v=b.ld;b=b.rc;e=h%90?Math.atan2(t*e/g,v)/j*180:h+90;e+=180;e%=360;r=k(s,m,h,r,p);g=n(s,m,r[0],r[1]);j=[];r=k(l,q,h,s,m);n=n(l,q,r[0],r[1])/g*100;k=[];for(h=0;h<i;h++)k.push(d[h].db?d[h].db.a(c,b):h===0?0:h===i-1?b:null);for(h=1;h<i;h++){if(k[h]===null){l=k[h-1];b=h;do q=k[++b];while(q===null);k[h]=l+(q-l)/(b-h+1)}k[h]=Math.max(k[h],k[h-1])}for(h=0;h<i;h++)j.push(n+ | ||||||
|  | k[h]/g*100+"% "+d[h].color.T(c));a.angle=e;a.type="gradient";a.method="sigma";a.color=d[0].color.T(c);a.color2=d[i-1].color.T(c);if(a.colors)a.colors.value=j.join(",");else a.colors=j.join(",")},lc:function(){var a=this.e.runtimeStyle;a.backgroundImage="url(about:blank)";a.backgroundColor="transparent"},m:function(){f.u.m.call(this);var a=this.e.runtimeStyle;a.backgroundImage=a.backgroundColor=""}});f.Gc=f.u.P({M:4,Ya:"border",O:function(){var a=this.g;return a.z.G()||a.F.G()},h:function(){var a= | ||||||
|  | this.g;return(a.F.h()||a.w.h())&&!a.q.h()&&a.z.h()},U:function(){var a=this.e,b=this.g.z.j(),c=this.s.o(),d=c.i;c=c.f;var e,g,i,j,h;if(b){this.mc();b=this.wd(2);j=0;for(h=b.length;j<h;j++){i=b[j];e=this.za("borderPiece"+j,i.stroke?"stroke":"fill",this.H());e.coordsize=d*2+","+c*2;e.coordorigin="1,1";e.path=i.path;g=e.style;g.width=d;g.height=c;e.filled=!!i.fill;e.stroked=!!i.stroke;if(i.stroke){e=e.stroke;e.weight=i.Qb+"px";e.color=i.color.T(a);e.dashstyle=i.stroke==="dashed"?"2 2":i.stroke==="dotted"? | ||||||
|  | "1 1":"solid";e.linestyle=i.stroke==="double"&&i.Qb>2?"ThinThin":"Single"}else e.fill.color=i.fill.T(a)}for(;this.vb("borderPiece"+j++););}},wd:function(a){var b=this.e,c,d,e,g=this.g.z,i=[],j,h,k,n,l=Math.round,q,s,m;if(g.h()){c=g.j();g=c.I;s=c.Yd;m=c.gd;if(c.de&&c.Zd&&c.hd){if(m.t.fa()>0){c=g.t.a(b);k=c/2;i.push({path:this.xa({Jb:k,Ib:k,tb:k,Db:k},a),stroke:s.t,color:m.t,Qb:c})}}else{a=a||1;c=this.s.o();d=c.i;e=c.f;c=l(g.t.a(b));k=l(g.r.a(b));n=l(g.b.a(b));b=l(g.l.a(b));var r={t:c,r:k,b:n,l:b}; | ||||||
|  | b=this.g.F;if(b.h())q=this.kc(b.j());j=Math.floor;h=Math.ceil;var p=function(o,u){return q?q[o][u]:0},t=function(o,u,x,y,z,D){var G=p("x",o),E=p("y",o),B=o.charAt(1)==="r";o=o.charAt(0)==="b";return G>0&&E>0?(D?"al":"ae")+(B?h(d-G):j(G))*a+","+(o?h(e-E):j(E))*a+","+(j(G)-u)*a+","+(j(E)-x)*a+","+y*65535+","+2949075*(z?1:-1):(D?"m":"l")+(B?d-u:u)*a+","+(o?e-x:x)*a},v=function(o,u,x,y){var z=o==="t"?j(p("x","tl"))*a+","+h(u)*a:o==="r"?h(d-u)*a+","+j(p("y","tr"))*a:o==="b"?h(d-p("x","br"))*a+","+j(e- | ||||||
|  | u)*a:j(u)*a+","+h(e-p("y","bl"))*a;o=o==="t"?h(d-p("x","tr"))*a+","+h(u)*a:o==="r"?h(d-u)*a+","+h(e-p("y","br"))*a:o==="b"?j(p("x","bl"))*a+","+j(e-u)*a:j(u)*a+","+j(p("y","tl"))*a;return x?(y?"m"+o:"")+"l"+z:(y?"m"+z:"")+"l"+o};b=function(o,u,x,y,z,D){var G=o==="l"||o==="r",E=r[o],B,A;if(E>0&&s[o]!=="none"&&m[o].fa()>0){B=r[G?o:u];u=r[G?u:o];A=r[G?o:x];x=r[G?x:o];if(s[o]==="dashed"||s[o]==="dotted"){i.push({path:t(y,B,u,D+45,0,1)+t(y,0,0,D,1,0),fill:m[o]});i.push({path:v(o,E/2,0,1),stroke:s[o],Qb:E, | ||||||
|  | color:m[o]});i.push({path:t(z,A,x,D,0,1)+t(z,0,0,D-45,1,0),fill:m[o]})}else i.push({path:t(y,B,u,D+45,0,1)+v(o,E,0,0)+t(z,A,x,D,0,0)+(s[o]==="double"&&E>2?t(z,A-j(A/3),x-j(x/3),D-45,1,0)+v(o,h(E/3*2),1,0)+t(y,B-j(B/3),u-j(u/3),D,1,0)+"x "+t(y,j(B/3),j(u/3),D+45,0,1)+v(o,j(E/3),1,0)+t(z,j(A/3),j(x/3),D,0,0):"")+t(z,0,0,D-45,1,0)+v(o,0,1,0)+t(y,0,0,D,1,0),fill:m[o]})}};b("t","l","r","tl","tr",90);b("r","t","b","tr","br",0);b("b","r","l","br","bl",-90);b("l","b","t","bl","tl",-180)}}return i},m:function(){if(this.ec|| | ||||||
|  | !this.g.q.h())this.e.runtimeStyle.borderColor="";f.u.m.call(this)}});f.Tb=f.u.P({M:5,Ld:["t","tr","r","br","b","bl","l","tl","c"],O:function(){return this.g.q.G()},h:function(){return this.g.q.h()},U:function(){this.H();var a=this.g.q.j(),b=this.g.z.j(),c=this.s.o(),d=this.e,e=this.uc;f.p.Rb(a.src,function(g){function i(v,o,u,x,y){v=e[v].style;var z=Math.max;v.width=z(o,0);v.height=z(u,0);v.left=x;v.top=y}function j(v,o,u){for(var x=0,y=v.length;x<y;x++)e[v[x]].imagedata[o]=u}var h=c.i,k=c.f,n=f.n("0"), | ||||||
|  | l=a.I||(b?b.I:{t:n,r:n,b:n,l:n});n=l.t.a(d);var q=l.r.a(d),s=l.b.a(d);l=l.l.a(d);var m=a.slice,r=m.t.a(d),p=m.r.a(d),t=m.b.a(d);m=m.l.a(d);i("tl",l,n,0,0);i("t",h-l-q,n,l,0);i("tr",q,n,h-q,0);i("r",q,k-n-s,h-q,n);i("br",q,s,h-q,k-s);i("b",h-l-q,s,l,k-s);i("bl",l,s,0,k-s);i("l",l,k-n-s,0,n);i("c",h-l-q,k-n-s,l,n);j(["tl","t","tr"],"cropBottom",(g.f-r)/g.f);j(["tl","l","bl"],"cropRight",(g.i-m)/g.i);j(["bl","b","br"],"cropTop",(g.f-t)/g.f);j(["tr","r","br"],"cropLeft",(g.i-p)/g.i);j(["l","r","c"],"cropTop", | ||||||
|  | r/g.f);j(["l","r","c"],"cropBottom",t/g.f);j(["t","b","c"],"cropLeft",m/g.i);j(["t","b","c"],"cropRight",p/g.i);e.c.style.display=a.fill?"":"none"},this)},H:function(){var a=this.parent.ya(this.M),b,c,d,e=this.Ld,g=e.length;if(!a){a=doc.createElement("border-image");b=a.style;b.position="absolute";this.uc={};for(d=0;d<g;d++){c=this.uc[e[d]]=f.p.Za("rect");c.appendChild(f.p.Za("imagedata"));b=c.style;b.behavior="url(#default#VML)";b.position="absolute";b.top=b.left=0;c.imagedata.src=this.g.q.j().src; | ||||||
|  | c.stroked=false;c.filled=false;a.appendChild(c)}this.parent.sb(this.M,a)}return a},Ea:function(){if(this.h()){var a=this.e,b=a.runtimeStyle,c=this.g.q.j().I;b.borderStyle="solid";if(c){b.borderTopWidth=c.t.a(a)+"px";b.borderRightWidth=c.r.a(a)+"px";b.borderBottomWidth=c.b.a(a)+"px";b.borderLeftWidth=c.l.a(a)+"px"}this.mc()}},m:function(){var a=this.e.runtimeStyle;a.borderStyle="";if(this.ec||!this.g.z.h())a.borderColor=a.borderWidth="";f.u.m.call(this)}});f.Hc=f.u.P({M:1,Ya:"outset-box-shadow",O:function(){var a= | ||||||
|  | this.g;return a.ga.G()||a.F.G()},h:function(){var a=this.g.ga;return a.h()&&a.j().Da[0]},U:function(){function a(B,A,L,N,H,I,F){B=b.za("shadow"+B+A,"fill",d,i-B);A=B.fill;B.coordsize=n*2+","+l*2;B.coordorigin="1,1";B.stroked=false;B.filled=true;A.color=H.T(c);if(I){A.type="gradienttitle";A.color2=A.color;A.opacity=0}B.path=F;p=B.style;p.left=L;p.top=N;p.width=n;p.height=l;return B}var b=this,c=this.e,d=this.H(),e=this.g,g=e.ga.j().Da;e=e.F.j();var i=g.length,j=i,h,k=this.s.o(),n=k.i,l=k.f;k=f.V=== | ||||||
|  | 8?1:0;for(var q=["tl","tr","br","bl"],s,m,r,p,t,v,o,u,x,y,z,D,G,E;j--;){m=g[j];t=m.ee.a(c);v=m.fe.a(c);h=m.Ud.a(c);o=m.blur.a(c);m=m.color;u=-h-o;if(!e&&o)e=f.jb.Dc;u=this.xa({Jb:u,Ib:u,tb:u,Db:u},2,e);if(o){x=(h+o)*2+n;y=(h+o)*2+l;z=o*2/x;D=o*2/y;if(o-h>n/2||o-h>l/2)for(h=4;h--;){s=q[h];G=s.charAt(0)==="b";E=s.charAt(1)==="r";s=a(j,s,t,v,m,o,u);r=s.fill;r.focusposition=(E?1-z:z)+","+(G?1-D:D);r.focussize="0,0";s.style.clip="rect("+((G?y/2:0)+k)+"px,"+(E?x:x/2)+"px,"+(G?y:y/2)+"px,"+((E?x/2:0)+k)+ | ||||||
|  | "px)"}else{s=a(j,"",t,v,m,o,u);r=s.fill;r.focusposition=z+","+D;r.focussize=1-z*2+","+(1-D*2)}}else{s=a(j,"",t,v,m,o,u);t=m.fa();if(t<1)s.fill.opacity=t}}}});f.Pc=f.u.P({M:6,Ya:"imgEl",O:function(){var a=this.g;return this.e.src!==this.Xc||a.F.G()},h:function(){var a=this.g;return a.F.h()||a.w.qc()},U:function(){this.Xc=i;this.Cd();var a=this.za("img","fill",this.H()),b=a.fill,c=this.s.o(),d=c.i;c=c.f;var e=this.g.z.j(),g=e&&e.I;e=this.e;var i=e.src,j=Math.round,h=e.currentStyle,k=f.n;if(!g||f.V< | ||||||
|  | 7){g=f.n("0");g={t:g,r:g,b:g,l:g}}a.stroked=false;b.type="frame";b.src=i;b.position=(d?0.5/d:0)+","+(c?0.5/c:0);a.coordsize=d*2+","+c*2;a.coordorigin="1,1";a.path=this.xa({Jb:j(g.t.a(e)+k(h.paddingTop).a(e)),Ib:j(g.r.a(e)+k(h.paddingRight).a(e)),tb:j(g.b.a(e)+k(h.paddingBottom).a(e)),Db:j(g.l.a(e)+k(h.paddingLeft).a(e))},2);a=a.style;a.width=d;a.height=c},Cd:function(){this.e.runtimeStyle.filter="alpha(opacity=0)"},m:function(){f.u.m.call(this);this.e.runtimeStyle.filter=""}});f.Oc=f.u.P({ib:f.aa, | ||||||
|  | Mb:f.aa,Nb:f.aa,Lb:f.aa,Kd:/^,+|,+$/g,Fd:/,+/g,gb:function(a,b){(this.pb||(this.pb=[]))[a]=b||void 0},ab:function(){var a=this.pb,b;if(a&&(b=a.join(",").replace(this.Kd,"").replace(this.Fd,","))!==this.Wc)this.Wc=this.e.runtimeStyle.background=b},m:function(){this.e.runtimeStyle.background="";delete this.pb}});f.Mc=f.u.P({ta:1,O:function(){return this.g.w.G()},h:function(){var a=this.g;return a.w.h()||a.q.h()},U:function(){var a=this.g.w.j(),b,c,d=0,e,g;if(a){b=[];if(c=a.L)for(;e=c[d++];)if(e.N=== | ||||||
|  | "linear-gradient"){g=this.vd(e.Wa);g=(e.Xa||f.Ka.Kc).a(this.e,g.i,g.f,g.i,g.f);b.push("url(data:image/svg+xml,"+escape(this.xd(e,g.i,g.f))+") "+this.dd(e.$)+" / "+g.i+"px "+g.f+"px "+(e.bc||"")+" "+(e.Wa||"")+" "+(e.ub||""))}else b.push(e.Hb);a.color&&b.push(a.color.Y);this.parent.gb(this.ta,b.join(","))}},dd:function(a){return a?a.X.map(function(b){return b.d}).join(" "):"0 0"},vd:function(a){var b=this.e,c=this.s.o(),d=c.i;c=c.f;var e;if(a!=="border-box")if((e=this.g.z.j())&&(e=e.I)){d-=e.l.a(b)+ | ||||||
|  | e.l.a(b);c-=e.t.a(b)+e.b.a(b)}if(a==="content-box"){a=f.n;e=b.currentStyle;d-=a(e.paddingLeft).a(b)+a(e.paddingRight).a(b);c-=a(e.paddingTop).a(b)+a(e.paddingBottom).a(b)}return{i:d,f:c}},xd:function(a,b,c){var d=this.e,e=a.ca,g=e.length,i=f.Na.gc(d,b,c,a);a=i.xc;var j=i.yc,h=i.td,k=i.ud;i=i.rc;var n,l,q,s,m;n=[];for(l=0;l<g;l++)n.push(e[l].db?e[l].db.a(d,i):l===0?0:l===g-1?i:null);for(l=1;l<g;l++)if(n[l]===null){s=n[l-1];q=l;do m=n[++q];while(m===null);n[l]=s+(m-s)/(q-l+1)}b=['<svg width="'+b+'" height="'+ | ||||||
|  | c+'" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="g" gradientUnits="userSpaceOnUse" x1="'+a/b*100+'%" y1="'+j/c*100+'%" x2="'+h/b*100+'%" y2="'+k/c*100+'%">'];for(l=0;l<g;l++)b.push('<stop offset="'+n[l]/i+'" stop-color="'+e[l].color.T(d)+'" stop-opacity="'+e[l].color.fa()+'"/>');b.push('</linearGradient></defs><rect width="100%" height="100%" fill="url(#g)"/></svg>');return b.join("")},m:function(){this.parent.gb(this.ta)}});f.Nc=f.u.P({S:"repeat",Sc:"stretch",Qc:"round",ta:0,O:function(){return this.g.q.G()}, | ||||||
|  | h:function(){return this.g.q.h()},U:function(){var a=this,b=a.g.q.j(),c=a.g.z.j(),d=a.s.o(),e=b.repeat,g=e.f,i=e.Ob,j=a.e,h=0;f.p.Rb(b.src,function(k){function n(R,S,U,V,W,T,w,C,K,O){J.push('<pattern patternUnits="userSpaceOnUse" id="pattern'+Q+'" x="'+(g===p?R+U/2-K/2:R)+'" y="'+(i===p?S+V/2-O/2:S)+'" width="'+K+'" height="'+O+'"><svg width="'+K+'" height="'+O+'" viewBox="'+W+" "+T+" "+w+" "+C+'" preserveAspectRatio="none"><image xlink:href="'+r+'" x="0" y="0" width="'+s+'" height="'+m+'" /></svg></pattern>'); | ||||||
|  | P.push('<rect x="'+R+'" y="'+S+'" width="'+U+'" height="'+V+'" fill="url(#pattern'+Q+')" />');Q++}var l=d.i,q=d.f,s=k.i,m=k.f,r=a.Dd(b.src,s,m),p=a.S,t=a.Sc;k=a.Qc;var v=Math.ceil,o=f.n("0"),u=b.I||(c?c.I:{t:o,r:o,b:o,l:o});o=u.t.a(j);var x=u.r.a(j),y=u.b.a(j);u=u.l.a(j);var z=b.slice,D=z.t.a(j),G=z.r.a(j),E=z.b.a(j);z=z.l.a(j);var B=l-u-x,A=q-o-y,L=s-z-G,N=m-D-E,H=g===t?B:L*o/D,I=i===t?A:N*x/G,F=g===t?B:L*y/E;t=i===t?A:N*u/z;var J=[],P=[],Q=0;if(g===k){H-=(H-(B%H||H))/v(B/H);F-=(F-(B%F||F))/v(B/ | ||||||
|  | F)}if(i===k){I-=(I-(A%I||I))/v(A/I);t-=(t-(A%t||t))/v(A/t)}k=['<svg width="'+l+'" height="'+q+'" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">'];n(0,0,u,o,0,0,z,D,u,o);n(u,0,B,o,z,0,L,D,H,o);n(l-x,0,x,o,s-G,0,G,D,x,o);n(0,o,u,A,0,D,z,N,u,t);if(b.fill)n(u,o,B,A,z,D,L,N,H||F||L,t||I||N);n(l-x,o,x,A,s-G,D,G,N,x,I);n(0,q-y,u,y,0,m-E,z,E,u,y);n(u,q-y,B,y,z,m-E,L,E,F,y);n(l-x,q-y,x,y,s-G,m-E,G,E,x,y);k.push("<defs>"+J.join("\n")+"</defs>"+P.join("\n")+"</svg>");a.parent.gb(a.ta, | ||||||
|  | "url(data:image/svg+xml,"+escape(k.join(""))+") no-repeat border-box border-box");h&&a.parent.ab()},a);h=1},Dd:function(){var a={};return function(b,c,d){var e=a[b],g;if(!e){e=new Image;g=doc.createElement("canvas");e.src=b;g.width=c;g.height=d;g.getContext("2d").drawImage(e,0,0);e=a[b]=g.toDataURL()}return e}}(),Ea:f.Tb.prototype.Ea,m:function(){var a=this.e.runtimeStyle;this.parent.gb(this.ta);a.borderColor=a.borderStyle=a.borderWidth=""}});f.kb=function(){function a(m,r){m.className+=" "+r}function b(m){var r= | ||||||
|  | s.slice.call(arguments,1),p=r.length;setTimeout(function(){for(;p--;)a(m,r[p])},0)}function c(m){var r=s.slice.call(arguments,1),p=r.length;setTimeout(function(){for(;p--;){var t=r[p];t=q[t]||(q[t]=new RegExp("\\b"+t+"\\b","g"));m.className=m.className.replace(t,"")}},0)}function d(m){function r(){if(!R){var w,C,K=f.Ba,O=m.currentStyle,M=O.getAttribute(g)==="true";T=O.getAttribute(i);T=K>7?T!=="false":T==="true";if(!Q){Q=1;m.runtimeStyle.zoom=1;O=m;for(var ba=1;O=O.previousSibling;)if(O.nodeType=== | ||||||
|  | 1){ba=0;break}ba&&a(m,n)}F.cb();if(M&&(C=F.o())&&(w=doc.documentElement||doc.body)&&(C.y>w.clientHeight||C.x>w.clientWidth||C.y+C.f<0||C.x+C.i<0)){if(!V){V=1;f.mb.ba(r)}}else{R=1;V=Q=0;f.mb.Ha(r);if(K===9){J={w:new f.Sb(m),q:new f.Ub(m),z:new f.Vb(m)};P=[J.w,J.q];I=new f.Oc(m,F,J);w=[new f.Mc(m,F,J,I),new f.Nc(m,F,J,I)]}else{J={w:new f.Sb(m),z:new f.Vb(m),q:new f.Ub(m),F:new f.jb(m),ga:new f.Ic(m),Pb:new f.Uc(m)};P=[J.w,J.z,J.q,J.F,J.ga,J.Pb];I=new f.Rc(m,F,J);w=[new f.Hc(m,F,J,I),new f.Fc(m,F,J, | ||||||
|  | I),new f.Gc(m,F,J,I),new f.Tb(m,F,J,I)];m.tagName==="IMG"&&w.push(new f.Pc(m,F,J,I));I.ed=w}H=[I].concat(w);if(w=m.currentStyle.getAttribute(f.Q+"watch-ancestors")){w=parseInt(w,10);C=0;for(M=m.parentNode;M&&(w==="NaN"||C++<w);){A(M,"onpropertychange",G);A(M,"onmouseenter",o);A(M,"onmouseleave",u);A(M,"onmousedown",x);if(M.tagName in f.fc){A(M,"onfocus",z);A(M,"onblur",D)}M=M.parentNode}}if(T){f.Oa.ba(t);f.Oa.Qd()}t(1)}if(!S){S=1;K<9&&A(m,"onmove",p);A(m,"onresize",p);A(m,"onpropertychange",v);A(m, | ||||||
|  | "onmouseenter",o);A(m,"onmouseleave",u);A(m,"onmousedown",x);if(m.tagName in f.fc){A(m,"onfocus",z);A(m,"onblur",D)}f.Qa.ba(p);f.K.ba(L)}F.hb()}}function p(){F&&F.Ad()&&t()}function t(w){if(!W)if(R){var C,K=H.length;E();for(C=0;C<K;C++)H[C].Ea();if(w||F.Nd())for(C=0;C<K;C++)H[C].ib();if(w||F.Sd())for(C=0;C<K;C++)H[C].Mb();I.ab();B()}else Q||r()}function v(){var w,C=H.length,K;w=event;if(!W&&!(w&&w.propertyName in l))if(R){E();for(w=0;w<C;w++)H[w].Ea();for(w=0;w<C;w++){K=H[w];K.Cb||K.ib();K.O()&&K.Lb()}I.ab(); | ||||||
|  | B()}else Q||r()}function o(){b(m,j)}function u(){c(m,j,h)}function x(){b(m,h);f.lb.ba(y)}function y(){c(m,h);f.lb.Ha(y)}function z(){b(m,k)}function D(){c(m,k)}function G(){var w=event.propertyName;if(w==="className"||w==="id")v()}function E(){F.cb();for(var w=P.length;w--;)P[w].cb()}function B(){for(var w=P.length;w--;)P[w].hb();F.hb()}function A(w,C,K){w.attachEvent(C,K);U.push([w,C,K])}function L(){if(S){for(var w=U.length,C;w--;){C=U[w];C[0].detachEvent(C[1],C[2])}f.K.Ha(L);S=0;U=[]}}function N(){if(!W){var w, | ||||||
|  | C;L();W=1;if(H){w=0;for(C=H.length;w<C;w++){H[w].ec=1;H[w].m()}}T&&f.Oa.Ha(t);f.Qa.Ha(t);H=F=J=P=m=null}}var H,I,F=new da(m),J,P,Q,R,S,U=[],V,W,T;this.Ed=r;this.update=t;this.m=N;this.qd=m}var e={},g=f.Q+"lazy-init",i=f.Q+"poll",j=f.La+"hover",h=f.La+"active",k=f.La+"focus",n=f.La+"first-child",l={background:1,bgColor:1,display:1},q={},s=[];d.yd=function(m){var r=f.p.Aa(m);return e[r]||(e[r]=new d(m))};d.m=function(m){m=f.p.Aa(m);var r=e[m];if(r){r.m();delete e[m]}};d.md=function(){var m=[],r;if(e){for(var p in e)if(e.hasOwnProperty(p)){r= | ||||||
|  | e[p];m.push(r.qd);r.m()}e={}}return m};return d}();f.supportsVML=f.zc;f.attach=function(a){f.Ba<10&&f.zc&&f.kb.yd(a).Ed()};f.detach=function(a){f.kb.m(a)}}; | ||||||
|  | var $=element;function init(){var a=window.PIE;a&&doc.media!=="print"&&a.attach($)}function cleanup(){var a=window.PIE;if(a){a.detach($);$=0}}$.readyState==="complete"&&init(); | ||||||
|  | </script> | ||||||
|  | </PUBLIC:COMPONENT> | ||||||
							
								
								
									
										27
									
								
								static/cms/config.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,27 @@ | ||||||
|  | # Require any additional compass plugins here. | ||||||
|  | 
 | ||||||
|  | # Set this to the root of your project when deployed: | ||||||
|  | http_path = "" # use if other than / | ||||||
|  | sass_dir = "sass" | ||||||
|  | css_dir = "css" | ||||||
|  | images_dir = "images" | ||||||
|  | javascripts_dir = "js" | ||||||
|  | 
 | ||||||
|  | # be: :production or :development | ||||||
|  | environment = :production | ||||||
|  | 
 | ||||||
|  | # You can select your preferred output style here (can be overridden via the command line): | ||||||
|  | # output_style = :expanded or :nested or :compact or :compressed | ||||||
|  | output_style = (environment == :production) ? :compressed : :nested | ||||||
|  | 
 | ||||||
|  | # To enable relative paths to assets via compass helper functions. Uncomment: | ||||||
|  | # relative_assets = true | ||||||
|  | 
 | ||||||
|  | # To disable debugging comments that display the original location of your selectors. Uncomment: | ||||||
|  | line_comments = false | ||||||
|  | 
 | ||||||
|  | # If you prefer the indented syntax, you might want to regenerate this | ||||||
|  | # project again passing --syntax sass, or you can uncomment this: | ||||||
|  | # preferred_syntax = :sass | ||||||
|  | # and then run: | ||||||
|  | # sass-convert -R --from scss --to sass sass scss && rm -rf sass && mv scss sass | ||||||
							
								
								
									
										19
									
								
								static/cms/css/cms.base.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										3
									
								
								static/cms/css/cms.pagetree.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										3
									
								
								static/cms/css/cms.toolbar.modal.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,3 @@ | ||||||
|  | /*! | ||||||
|  |  * @copyright:	https://github.com/divio/django-cms | ||||||
|  |  */#content>h2:first-child{display:none}#content{margin:10px 10px 0}#content .module{padding:10px}#container{padding-top:0}#footer{display:none}#cke_id_body{border:1px solid #e6e6e6 !important}#cke_id_body .cke_top,#cke_id_body .cke_bottom{background:#fafafa !important;border-color:#e6e6e6 !important;-moz-box-shadow:none !important;-webkit-box-shadow:none !important;box-shadow:none !important}.errornote{margin:0 !important} | ||||||
							
								
								
									
										3
									
								
								static/cms/css/cms.toolbar.sideframe.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,3 @@ | ||||||
|  | /*! | ||||||
|  |  * @copyright:	https://github.com/divio/django-cms | ||||||
|  |  */#header{display:none}#container{padding-top:30px}.cms_debug #container{padding-top:35px}#container .breadcrumbs{display:block;background:#666 !important}#content{padding-top:10px}#content h1:first-child{margin-top:0}.change-form #content{margin-top:0}.submit-row{padding:10px 10px 5px !important}.submit-row input.default,.object-tools .addlink{font-weight:200 !important;padding:5px 12px !important;margin-bottom:5px !important;border:1px solid #0e72ec !important;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzBlOTdlYyIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzBlNzJlYyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==') !important;background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #0e97ec),color-stop(100%, #0e72ec)) !important;background-image:-moz-linear-gradient(top, #0e97ec,#0e72ec) !important;background-image:-webkit-linear-gradient(top, #0e97ec,#0e72ec) !important;background-image:linear-gradient(to bottom, #0e97ec,#0e72ec) !important;-moz-box-shadow:inset #6accf6 0px 1px 0px;-webkit-box-shadow:inset #6accf6 0px 1px 0px;box-shadow:inset #6accf6 0px 1px 0px}.submit-row input.default:hover,.submit-row input.default:active,.submit-row input.default:focus,.object-tools .addlink:hover,.object-tools .addlink:active,.object-tools .addlink:focus{background:#0e72ec !important;-moz-box-shadow:none !important;-webkit-box-shadow:none !important;box-shadow:none !important}.submit-row input.default:active,.submit-row input.default:focus,.object-tools .addlink:active,.object-tools .addlink:focus{background:#0b5bbc !important}.object-tools .recoverlink,.submit-row input{font-weight:200 !important;padding:5px 12px !important;margin-bottom:5px !important;border:1px solid #e6e6e6 !important;-moz-box-shadow:none !important;-webkit-box-shadow:none !important;box-shadow:none !important} | ||||||
							
								
								
									
										
											BIN
										
									
								
								static/cms/images/sitemap-li-bg.jpg
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 7.6 KiB | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/flv.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 384 B | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/gif.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 621 B | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/html.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 285 B | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/java.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 650 B | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/jpg.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 621 B | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/mp3.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 388 B | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/ods.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 749 B | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/odt.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 702 B | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/pdf.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 208 B | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/php.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 296 B | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/png.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 621 B | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/swf.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 279 B | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/tgz.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 548 B | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/ttf.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 648 B | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/txt.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 276 B | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/txt.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 654 B | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/wav.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 407 B | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/filetypes/zip.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 548 B | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/plugins/file.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 758 B | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/plugins/get_flash_player.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.7 KiB | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/plugins/image.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 969 B | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/plugins/link.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.7 KiB | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/icons/plugins/snippet.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1,017 B | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/loader.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 5.1 KiB | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/loader@2x.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 11 KiB | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/logo-white.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 3.9 KiB | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/logo-white@2x.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 7.3 KiB | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/pagetree/sprite.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 6.8 KiB | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/pagetree/tree-li-drag.gif
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 200 B | 
							
								
								
									
										
											BIN
										
									
								
								static/cms/img/toolbar/pattern.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 938 B |