initial commit
353
html/sf/sf_admin/css/main.css
Executable file
@ -0,0 +1,353 @@
|
||||
#sf_admin_container ul, #sf_admin_container ol, #sf_admin_container li, #sf_admin_container h1, #sf_admin_container h2, #sf_admin_container h3, #sf_admin_container h4, #sf_admin_container h5, #sf_admin_container h6, #sf_admin_container pre, #sf_admin_container form, #sf_admin_container body, #sf_admin_container html, #sf_admin_container p, #sf_admin_container blockquote, #sf_admin_container fieldset, #sf_admin_container input { margin: 0; padding: 0; }
|
||||
#sf_admin_container a img,:link img,:visited img { border: none; }
|
||||
|
||||
#sf_admin_container a:link, #sf_admin_container a:visited
|
||||
{
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#sf_admin_container a:hover
|
||||
{
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#sf_admin_container td
|
||||
{
|
||||
margin: 0;
|
||||
padding: 20px;
|
||||
font-family: Arial, sans-serif;
|
||||
font-size: 11px;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
#sf_admin_container p
|
||||
{
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
#sf_admin_container #sf_admin_bar
|
||||
{
|
||||
margin-top: 8px;
|
||||
position: absolute;
|
||||
right: 20px;
|
||||
width: 250px;
|
||||
}
|
||||
|
||||
#sf_admin_container #sf_admin_content
|
||||
{
|
||||
margin-right: 270px;
|
||||
}
|
||||
|
||||
#sf_admin_container h1
|
||||
{
|
||||
margin: 8px 0;
|
||||
padding: 3px;
|
||||
padding-left: 0px;
|
||||
color: #555;
|
||||
font-family: "Trebuchet MS", Arial, Verdana, sans-serif;
|
||||
font-size: 25px;
|
||||
}
|
||||
|
||||
#sf_admin_container fieldset h2
|
||||
{
|
||||
padding: 3px;
|
||||
color: #333;
|
||||
background-color: #ccf;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
#sf_admin_container input, #sf_admin_container textarea, #sf_admin_container select
|
||||
{
|
||||
padding: 3px;
|
||||
font-family: Arial, sans-serif;
|
||||
font-size: 11px;
|
||||
border: 1px solid #ddd;
|
||||
vertical-align:middle;
|
||||
}
|
||||
|
||||
#sf_admin_container label
|
||||
{
|
||||
display: block;
|
||||
padding: 0 1em 3px 0;
|
||||
float: left;
|
||||
text-align: left;
|
||||
width: 8em;
|
||||
color: #666;
|
||||
font-weight: normal !important;
|
||||
}
|
||||
|
||||
#sf_admin_container label.required
|
||||
{
|
||||
color: #333 !important;
|
||||
font-weight: bold !important;
|
||||
}
|
||||
|
||||
#sf_admin_container .sf_admin_filters input[type="checkbox"] + label
|
||||
{
|
||||
display: inline;
|
||||
float: none;
|
||||
}
|
||||
|
||||
#sf_admin_container .save-ok
|
||||
{
|
||||
margin-bottom: 10px;
|
||||
border: 1px solid #73B65A;
|
||||
}
|
||||
|
||||
#sf_admin_container .save-ok h2
|
||||
{
|
||||
margin: 0 !important;
|
||||
padding: 5px 20px 5px 25px;
|
||||
font-size: 11px;
|
||||
color: #fff;
|
||||
background: #73B65A url(/sf/sf_admin/images/ok.png) no-repeat 5px 2px;
|
||||
}
|
||||
|
||||
#sf_admin_container .form-row
|
||||
{
|
||||
clear: both;
|
||||
padding: 10px;
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
|
||||
#sf_admin_container .form-row .content
|
||||
{
|
||||
padding-left: 9em;
|
||||
}
|
||||
|
||||
#sf_admin_container .form-errors
|
||||
{
|
||||
margin-bottom: 10px;
|
||||
border: 1px solid #f33;
|
||||
background-color: #ffc;
|
||||
}
|
||||
|
||||
#sf_admin_container .form-errors h2
|
||||
{
|
||||
padding: 5px 20px 5px 25px;
|
||||
font-size: 11px;
|
||||
color: #fff;
|
||||
background: #f33 url(/sf/sf_admin/images/error.png) no-repeat 5px 2px;
|
||||
}
|
||||
|
||||
#sf_admin_container .form-errors dl
|
||||
{
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
#sf_admin_container .form-errors dt
|
||||
{
|
||||
font-weight: bold;
|
||||
float: left;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
#sf_admin_container .form-errors dd
|
||||
{
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#sf_admin_container .form-error
|
||||
{
|
||||
color: #f33;
|
||||
}
|
||||
|
||||
#sf_admin_container .form-error input, #sf_admin_container .form-error select, #sf_admin_container .form-error textarea
|
||||
{
|
||||
border: 1px solid #f33;
|
||||
}
|
||||
|
||||
#sf_admin_container fieldset
|
||||
{
|
||||
margin-bottom: 3px;
|
||||
border: 1px solid #ddd;
|
||||
border-bottom: 0px;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
#sf_admin_container fieldset.collapsed * { display:none; }
|
||||
#sf_admin_container fieldset.collapsed h2, #sf_admin_container fieldset.collapsed { display:block !important; }
|
||||
#sf_admin_container fieldset.collapsed .collapse-toggle { display: inline !important; }
|
||||
#sf_admin_container fieldset.collapse h2 a.collapse-toggle { color:#ffc; }
|
||||
#sf_admin_container fieldset.collapse h2 a.collapse-toggle:hover { text-decoration:underline; }
|
||||
|
||||
#sf_admin_container .float-left
|
||||
{
|
||||
float: left;
|
||||
}
|
||||
|
||||
#sf_admin_container .float-right
|
||||
{
|
||||
float: right;
|
||||
}
|
||||
|
||||
#sf_admin_container ul.sf_admin_td_actions
|
||||
{
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
#sf_admin_container ul.sf_admin_td_actions li
|
||||
{
|
||||
list-style-type: none;
|
||||
display: inline;
|
||||
}
|
||||
|
||||
#sf_admin_container ul.sf_admin_actions
|
||||
{
|
||||
margin: 10px 0;
|
||||
list-style-type: none;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
#sf_admin_container ul.sf_admin_actions a
|
||||
{
|
||||
color: #333;
|
||||
}
|
||||
|
||||
#sf_admin_container ul.sf_admin_actions li
|
||||
{
|
||||
list-style-type: none;
|
||||
display: inline;
|
||||
}
|
||||
|
||||
#sf_admin_container ul.sf_admin_actions input
|
||||
{
|
||||
padding: 3px 3px 3px 20px;
|
||||
color: #333;
|
||||
font-size: 11px;
|
||||
font-family: Arial, sans-serif;
|
||||
border: 0px;
|
||||
border-right: 4px solid #999;
|
||||
background-color: #ffc;
|
||||
cursor: hand;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#sf_admin_container .sf_admin_action_create
|
||||
{
|
||||
background: url(/sf/sf_admin/images/add.png) no-repeat 3px 2px;
|
||||
border-right: 4px solid #73B65A !important;
|
||||
}
|
||||
|
||||
#sf_admin_container .sf_admin_action_save
|
||||
{
|
||||
background: url(/sf/sf_admin/images/save.png) no-repeat 3px 2px;
|
||||
border-right: 4px solid #73B65A !important;
|
||||
}
|
||||
|
||||
#sf_admin_container .sf_admin_action_save_and_add
|
||||
{
|
||||
background: url(/sf/sf_admin/images/save.png) no-repeat 3px 2px;
|
||||
border-right: 4px solid #73B65A !important;
|
||||
}
|
||||
|
||||
#sf_admin_container .sf_admin_action_save_and_list
|
||||
{
|
||||
background: url(/sf/sf_admin/images/save.png) no-repeat 3px 2px;
|
||||
border-right: 4px solid #73B65A !important;
|
||||
}
|
||||
|
||||
#sf_admin_container .sf_admin_action_delete
|
||||
{
|
||||
background: url(/sf/sf_admin/images/delete.png) no-repeat 3px 2px;
|
||||
border-right: 4px solid #E75C58 !important;
|
||||
}
|
||||
|
||||
#sf_admin_container .sf_admin_action_cancel
|
||||
{
|
||||
background: url(/sf/sf_admin/images/cancel.png) no-repeat 3px 2px;
|
||||
border-right: 4px solid #E75C58 !important;
|
||||
}
|
||||
|
||||
#sf_admin_container .sf_admin_action_filter
|
||||
{
|
||||
background: url(/sf/sf_admin/images/filter.png) no-repeat 3px 2px;
|
||||
border-right: 4px solid #66f !important;
|
||||
}
|
||||
|
||||
#sf_admin_container .sf_admin_action_reset_filter
|
||||
{
|
||||
background: url(/sf/sf_admin/images/reset.png) no-repeat 3px 2px;
|
||||
border-right: 4px solid #E75C58 !important;
|
||||
}
|
||||
|
||||
#sf_admin_container .sf_admin_action_list
|
||||
{
|
||||
background: url(/sf/sf_admin/images/list.png) no-repeat 3px 2px;
|
||||
border-right: 4px solid #66f !important;
|
||||
}
|
||||
|
||||
#sf_admin_container .sf_admin_default_action
|
||||
{
|
||||
background-color: #fc6 !important;
|
||||
font-weight: bold !important;
|
||||
}
|
||||
|
||||
#sf_admin_container .sf_admin_list
|
||||
{
|
||||
width: 100%;
|
||||
border: 1px solid #ddd;
|
||||
border-bottom: 0px;
|
||||
border-right: 0px;
|
||||
}
|
||||
|
||||
#sf_admin_container .sf_admin_list th
|
||||
{
|
||||
padding: 2px;
|
||||
background-color: #ccf;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#sf_admin_container .sf_admin_list th a
|
||||
{
|
||||
color: #333;
|
||||
}
|
||||
|
||||
#sf_admin_container .sf_admin_list td
|
||||
{
|
||||
padding: 3px;
|
||||
border-bottom: 1px solid #ddd;
|
||||
border-right: 1px solid #ddd;
|
||||
}
|
||||
|
||||
#sf_admin_container .sf_admin_filters li
|
||||
{
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
#sf_admin_container .sf_admin_row_0 td
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#sf_admin_container .sf_admin_row_1 td
|
||||
{
|
||||
background-color: #eef;
|
||||
}
|
||||
|
||||
#sf_admin_container .sf_admin_edit_help
|
||||
{
|
||||
color: #aaa;
|
||||
}
|
||||
|
||||
#sf_admin_container .mceEditor td
|
||||
{
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
#sf_admin_container select.sf_admin_multiple, #sf_admin_container select.sf_admin_multiple-selected
|
||||
{
|
||||
width: 12em;
|
||||
}
|
||||
|
||||
#sf_admin_container ul.sf_admin_checklist li
|
||||
{
|
||||
list-style: none;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
|
||||
#sf_admin_container ul.sf_admin_checklist li label
|
||||
{
|
||||
display: inline;
|
||||
float: none;
|
||||
}
|
BIN
html/sf/sf_admin/images/add.png
Executable file
After Width: | Height: | Size: 847 B |
BIN
html/sf/sf_admin/images/cancel.png
Executable file
After Width: | Height: | Size: 853 B |
BIN
html/sf/sf_admin/images/date.png
Executable file
After Width: | Height: | Size: 775 B |
BIN
html/sf/sf_admin/images/default_icon.png
Executable file
After Width: | Height: | Size: 501 B |
BIN
html/sf/sf_admin/images/delete.png
Executable file
After Width: | Height: | Size: 846 B |
BIN
html/sf/sf_admin/images/delete_icon.png
Executable file
After Width: | Height: | Size: 649 B |
BIN
html/sf/sf_admin/images/edit.png
Executable file
After Width: | Height: | Size: 728 B |
BIN
html/sf/sf_admin/images/edit_icon.png
Executable file
After Width: | Height: | Size: 728 B |
BIN
html/sf/sf_admin/images/error.png
Executable file
After Width: | Height: | Size: 737 B |
BIN
html/sf/sf_admin/images/filter.png
Executable file
After Width: | Height: | Size: 703 B |
BIN
html/sf/sf_admin/images/first.png
Executable file
After Width: | Height: | Size: 599 B |
BIN
html/sf/sf_admin/images/help.png
Executable file
After Width: | Height: | Size: 900 B |
BIN
html/sf/sf_admin/images/last.png
Executable file
After Width: | Height: | Size: 607 B |
BIN
html/sf/sf_admin/images/list.png
Executable file
After Width: | Height: | Size: 531 B |
BIN
html/sf/sf_admin/images/next.png
Executable file
After Width: | Height: | Size: 469 B |
BIN
html/sf/sf_admin/images/ok.png
Executable file
After Width: | Height: | Size: 917 B |
BIN
html/sf/sf_admin/images/previous.png
Executable file
After Width: | Height: | Size: 466 B |
BIN
html/sf/sf_admin/images/reset.png
Executable file
After Width: | Height: | Size: 691 B |
BIN
html/sf/sf_admin/images/save.png
Executable file
After Width: | Height: | Size: 917 B |
BIN
html/sf/sf_admin/images/tick.png
Executable file
After Width: | Height: | Size: 537 B |
87
html/sf/sf_admin/js/collapse.js
Executable file
@ -0,0 +1,87 @@
|
||||
// django javascript file
|
||||
|
||||
// Finds all fieldsets with class="collapse", collapses them, and gives each
|
||||
// one a "show" link that uncollapses it. The "show" link becomes a "hide"
|
||||
// link when the fieldset is visible.
|
||||
|
||||
function findForm(node) {
|
||||
// returns the node of the form containing the given node
|
||||
if (node.tagName.toLowerCase() != 'form') {
|
||||
return findForm(node.parentNode);
|
||||
}
|
||||
return node;
|
||||
}
|
||||
|
||||
var CollapsedFieldsets = {
|
||||
collapse_re: /\bcollapse\b/, // Class of fieldsets that should be dealt with.
|
||||
collapsed_re: /\bcollapsed\b/, // Class that fieldsets get when they're hidden.
|
||||
collapsed_class: 'collapsed',
|
||||
init: function() {
|
||||
var fieldsets = document.getElementsByTagName('fieldset');
|
||||
var collapsed_seen = false;
|
||||
for (var i = 0, fs; fs = fieldsets[i]; i++) {
|
||||
// Collapse this fieldset if it has the correct class, and if it
|
||||
// doesn't have any errors. (Collapsing shouldn't apply in the case
|
||||
// of error messages.)
|
||||
if (fs.className.match(CollapsedFieldsets.collapse_re) && !CollapsedFieldsets.fieldset_has_errors(fs)) {
|
||||
collapsed_seen = true;
|
||||
// Give it an additional class, used by CSS to hide it.
|
||||
fs.className += ' ' + CollapsedFieldsets.collapsed_class;
|
||||
// (<a id="fieldsetcollapser3" class="collapse-toggle" href="#">show</a>)
|
||||
var collapse_link = document.createElement('a');
|
||||
collapse_link.className = 'collapse-toggle';
|
||||
collapse_link.id = 'fieldsetcollapser' + i;
|
||||
collapse_link.onclick = new Function('CollapsedFieldsets.show('+i+'); return false;');
|
||||
collapse_link.href = '#';
|
||||
collapse_link.innerHTML = 'show';
|
||||
var h2 = fs.getElementsByTagName('h2')[0];
|
||||
h2.appendChild(document.createTextNode(' ['));
|
||||
h2.appendChild(collapse_link);
|
||||
h2.appendChild(document.createTextNode(']'));
|
||||
}
|
||||
}
|
||||
if (collapsed_seen) {
|
||||
// Expand all collapsed fieldsets when form is submitted.
|
||||
Event.observe(findForm(document.getElementsByTagName('fieldset')[0]), 'submit', function() { CollapsedFieldsets.uncollapse_all(); }, false);
|
||||
}
|
||||
},
|
||||
fieldset_has_errors: function(fs) {
|
||||
// Returns true if any fields in the fieldset have validation errors.
|
||||
var divs = fs.getElementsByTagName('div');
|
||||
for (var i=0; i<divs.length; i++) {
|
||||
if (divs[i].className.match(/\bform-error\b/)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
show: function(fieldset_index) {
|
||||
var fs = document.getElementsByTagName('fieldset')[fieldset_index];
|
||||
// Remove the class name that causes the "display: none".
|
||||
fs.className = fs.className.replace(CollapsedFieldsets.collapsed_re, '');
|
||||
// Toggle the "show" link to a "hide" link
|
||||
var collapse_link = document.getElementById('fieldsetcollapser' + fieldset_index);
|
||||
collapse_link.onclick = new Function('CollapsedFieldsets.hide('+fieldset_index+'); return false;');
|
||||
collapse_link.innerHTML = 'hide';
|
||||
},
|
||||
hide: function(fieldset_index) {
|
||||
var fs = document.getElementsByTagName('fieldset')[fieldset_index];
|
||||
// Add the class name that causes the "display: none".
|
||||
fs.className += ' ' + CollapsedFieldsets.collapsed_class;
|
||||
// Toggle the "hide" link to a "show" link
|
||||
var collapse_link = document.getElementById('fieldsetcollapser' + fieldset_index);
|
||||
collapse_link.onclick = new Function('CollapsedFieldsets.show('+fieldset_index+'); return false;');
|
||||
collapse_link.innerHTML = 'show';
|
||||
},
|
||||
|
||||
uncollapse_all: function() {
|
||||
var fieldsets = document.getElementsByTagName('fieldset');
|
||||
for (var i=0; i<fieldsets.length; i++) {
|
||||
if (fieldsets[i].className.match(CollapsedFieldsets.collapsed_re)) {
|
||||
CollapsedFieldsets.show(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Event.observe(window, 'load', CollapsedFieldsets.init, false);
|
35
html/sf/sf_admin/js/double_list.js
Executable file
@ -0,0 +1,35 @@
|
||||
|
||||
function double_list_move(src, dest)
|
||||
{
|
||||
for (var i = 0; i < src.options.length; i++)
|
||||
{
|
||||
if (src.options[i].selected)
|
||||
{
|
||||
dest.options[dest.length] = new Option(src.options[i].text, src.options[i].value);
|
||||
src.options[i] = null;
|
||||
--i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function double_list_submit()
|
||||
{
|
||||
var form = $('sf_admin_edit_form');
|
||||
var element;
|
||||
|
||||
// find multiple selects with name beginning 'associated_' and select all their options
|
||||
for (var i = 0; i < form.elements.length; i++)
|
||||
{
|
||||
element = form.elements[i];
|
||||
if (element.type == 'select-multiple')
|
||||
{
|
||||
if (element.className == 'sf_admin_multiple-selected')
|
||||
{
|
||||
for (var j = 0; j < element.options.length; j++)
|
||||
{
|
||||
element.options[j].selected = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|