Added new backend template files (smartified core tpls and 2k11 admin tpls as well as related assets).
118
templates/2k11/admin/category_selector.js
Normal file
@ -0,0 +1,118 @@
|
||||
function toggle_extended(setCookie) {
|
||||
var textarea = document.getElementById('serendipity[extended]');
|
||||
var button = document.getElementById('option_extended');
|
||||
var tools = document.getElementById('tools_extended');
|
||||
if ( textarea.style.display == 'none' ) {
|
||||
textarea.style.display = '';
|
||||
tools.style.display = '';
|
||||
button.src = minus_img;
|
||||
if (setCookie == true) {
|
||||
document.cookie = 'serendipity[toggle_extended]=true;';
|
||||
}
|
||||
} else {
|
||||
textarea.style.display = 'none';
|
||||
tools.style.display = 'none';
|
||||
button.src = plus_img;
|
||||
if (setCookie == true) {
|
||||
document.cookie = 'serendipity[toggle_extended]=;';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function showItem(id) {
|
||||
var selected = 0;
|
||||
if (typeof(id) == 'undefined' || typeof(id) == 'object') {
|
||||
id = 'categoryselector';
|
||||
}
|
||||
|
||||
if (document.getElementById) {
|
||||
el = document.getElementById(id);
|
||||
if (selector_toggle[id] && selector_toggle[id] == 'off') {
|
||||
selector_restore[id] = new Array();
|
||||
selector_toggle[id] = 'on';
|
||||
|
||||
/* Hack to make sure that when the single dropdown is shown, don't have multiple selections */
|
||||
last = 0;
|
||||
|
||||
for (i=0; i < el.options.length; i++) {
|
||||
if (el.options[i].selected == true) {
|
||||
selected++;
|
||||
last = i;
|
||||
selector_restore[id][last] = 'on';
|
||||
}
|
||||
|
||||
if (selected > 1) {
|
||||
/* If there is more than one selected, we reset all those to false
|
||||
This is because otherwise the label will say 'No Category', but the categories will still be selected */
|
||||
for (j=0; j < el.options.length; j++) {
|
||||
/* Save selection in array to later restore them */
|
||||
if (el.options[j].selected == true) {
|
||||
el.options[j].selected = false;
|
||||
selector_restore[id][j] = 'on';
|
||||
last = j;
|
||||
} else {
|
||||
selector_restore[id][j] = false;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
el.selectedIndex = null;
|
||||
if (last > 0) {
|
||||
el.selectedIndex = last;
|
||||
}
|
||||
|
||||
el.size = 1;
|
||||
|
||||
/* Show a normal dropdown */
|
||||
if (el.multiple) {
|
||||
el.multiple = false;
|
||||
}
|
||||
|
||||
document.getElementById('option_' + id).src = plus_img;
|
||||
} else {
|
||||
selector_store[id] = el.size;
|
||||
if (selector_store[id] == 0) {
|
||||
selector_store[id] = 5;
|
||||
}
|
||||
|
||||
last = 0;
|
||||
if (el.selectedIndex > 0) {
|
||||
if (!selector_restore[id]) {
|
||||
selector_restore[id] = new Array();
|
||||
}
|
||||
|
||||
for (j=0; j < el.options.length; j++) {
|
||||
/* Save selection in array to later restore them */
|
||||
if (el.options[j].selected == true) {
|
||||
selector_restore[id][j] = 'on';
|
||||
last = j;
|
||||
}
|
||||
}
|
||||
}
|
||||
el.selectedIndex = -1;
|
||||
el.size = cat_count;
|
||||
selector_toggle[id] = 'off';
|
||||
|
||||
/* Show multiple items */
|
||||
el.multiple = true;
|
||||
|
||||
/* Restore previously selected items? */
|
||||
last = 0;
|
||||
for (i = 0; i < el.options.length; i++) {
|
||||
if (selector_restore && selector_restore[id] && selector_restore[id][i] && selector_restore[id][i] == 'on') {
|
||||
val = el.options[i].value;
|
||||
if (el.options[i].selected != true) {
|
||||
el.options[i].selected = true;
|
||||
last = i;
|
||||
// [TODO] IE Bug: Don't ask me why, but this restoring only works in Internet Explorer if you put this:
|
||||
// alert('it doesnt matter what, just the alert is important');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
document.getElementById('option_' + id).src = minus_img;
|
||||
}
|
||||
}
|
||||
}
|
135
templates/2k11/admin/entries.tpl
Normal file
@ -0,0 +1,135 @@
|
||||
{* HTML5: Yes *}
|
||||
{* jQuery: No *}
|
||||
|
||||
{if $entry_vars.errMsg}
|
||||
<span class="msg_error">{$entry_vars.errMsg}</span>
|
||||
{/if}
|
||||
<form id="serendipityEntry" name="serendipityEntry" {$entry_vars.entry.entry_form} action="{$entry_vars.targetURL}" method="post">
|
||||
{$entry_vars.hidden}
|
||||
<div class="form_field">
|
||||
<label for="entryTitle">{$CONST.TITLE}:</label>
|
||||
<input id="entryTitle" name="serendipity[title]" type="text" value="{$entry_vars.entry.title|@escape}">
|
||||
</div>
|
||||
{if $entry_vars.allowDateManipulation}
|
||||
<div class="form_field">
|
||||
<input name="serendipity[chk_timestamp]" type="hidden" value="{$entry_vars.timestamp}">
|
||||
{* TODO: this should be input[type=datetime] *}
|
||||
<label for="serendipityNewTimestamp">{$CONST.DATE}:</label>
|
||||
<input id="serendipityNewTimestamp" name="serendipity[new_timestamp]" type="text" value="{$entry_vars.timestamp|@formatTime:DATE_FORMAT_2:true:false:true}">
|
||||
<a id="reset_timestamp" href="#" onclick="document.getElementById('serendipityNewTimestamp').value = '{$entry_vars.reset_timestamp|@formatTime:DATE_FORMAT_2:true:false:true}'; return false;" title="{$CONST.RESET_DATE_DESC}">{$CONST.RESET_DATE}</a>
|
||||
</div>
|
||||
{/if}
|
||||
<div class="form_select">
|
||||
{* BUG: doesn't work the way it used to (collapsed multiselect) *}
|
||||
<label for="categoryselector">{$CONST.CATEGORY}:</label>
|
||||
<select id="categoryselector" name="serendipity[categories][]" multiple="multiple">
|
||||
<option value="0">{$CONST.NO_CATEGORY}</option>
|
||||
{foreach from=$entry_vars.category_options item="entry_cat"}
|
||||
<option value="{$entry_cat.categoryid}"{if $entry_cat.is_selected} selected="selected"{/if}>{$entry_cat.depth_pad}{$entry_cat.category_name}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form_select">
|
||||
<label for="entry_status" class="visuallyhidden">Entry status</label> {* i18n *}
|
||||
<select id="entry_status" name="serendipity[isdraft]">
|
||||
{if $entry_vars.serendipityRightPublish}
|
||||
<option value="false"{if $entry_vars.draft_mode == 'publish'} selected="selected"{/if}>{$CONST.PUBLISH}</option>
|
||||
{/if}
|
||||
<option value="true"{if $entry_vars.draft_mode == 'draft'} selected="selected"{/if}>{$CONST.DRAFT}</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form_area">
|
||||
<label for="serendipity[body]">{$CONST.ENTRY_BODY}</label>
|
||||
{if NOT $entry_vars.wysiwyg}
|
||||
<div id="tools_entry">
|
||||
{* This whole button bar should be replaced by something external, which maybe even
|
||||
"reacts" to installed markup plugins. I.e. if a blog uses Markdown, the button for
|
||||
italic should not insert an em element but the appropriate Markdown formatting. *}
|
||||
<script>
|
||||
{if $entry_vars.wysiwyg_advanced}
|
||||
{if $iso2br}document.write('<input type="button" name="insX" value="NoBR" accesskey="x" onclick="wrapSelection(document.forms[\'serendipityEntry\'][\'serendipity[body]\'],\'<nl>\',\'</nl>\')">');{/if}
|
||||
document.write('<input type="button" name="insI" value="I" accesskey="i" onclick="wrapSelection(document.forms[\'serendipityEntry\'][\'serendipity[body]\'],\'<em>\',\'</em>\')">');
|
||||
document.write('<input type="button" name="insB" value="B" accesskey="b" onclick="wrapSelection(document.forms[\'serendipityEntry\'][\'serendipity[body]\'],\'<strong>\',\'</strong>\')">');
|
||||
document.write('<input type="button" name="insU" value="U" accesskey="u" onclick="wrapSelection(document.forms[\'serendipityEntry\'][\'serendipity[body]\'],\'<u>\',\'</u>\')">');
|
||||
document.write('<input type="button" name="insQ" value="{$CONST.QUOTE}" accesskey="q" onclick="wrapSelection(document.forms[\'serendipityEntry\'][\'serendipity[body]\'],\'<blockquote>\',\'</blockquote>\')">');
|
||||
document.write('<input type="button" name="insJ" value="img" accesskey="j" onclick="wrapInsImage(document.forms[\'serendipityEntry\'][\'serendipity[body]\'])">');
|
||||
document.write('<input type="button" name="insImage" value="{$CONST.MEDIA}" onclick="window.open(\'serendipity_admin_image_selector.php?serendipity[textarea]=body\', \'ImageSel\', \'width=800,height=600,toolbar=no,scrollbars=1,scrollbars,resize=1,resizable=1\');">');
|
||||
document.write('<input type="button" name="insURL" value="URL" accesskey="l" onclick="wrapSelectionWithLink(document.forms[\'serendipityEntry\'][\'serendipity[body]\'])">');
|
||||
{else}
|
||||
{if $iso2br}document.write('<input type="button" value="NoBR" onclick="serendipity_insBasic(document.forms[\'serendipityEntry\'][\'serendipity[body]\'], \'x\')">');{/if}
|
||||
document.write('<input type="button" value="B" onclick="serendipity_insBasic(document.forms[\'serendipityEntry\'][\'serendipity[body]\'], \'b\')">');
|
||||
document.write('<input type="button" value="U" onclick="serendipity_insBasic(document.forms[\'serendipityEntry\'][\'serendipity[body]\'], \'u\')">');
|
||||
document.write('<input type="button" value="I" onclick="serendipity_insBasic(document.forms[\'serendipityEntry\'][\'serendipity[body]\'], \'i\')">');
|
||||
document.write('<input type="button" value="<img>" onclick="serendipity_insImage(document.forms[\'serendipityEntry\'][\'serendipity[body]\'])">');
|
||||
document.write('<input type="button" value="{$CONST.MEDIA}" onclick="window.open(\'serendipity_admin_image_selector.php?serendipity[textarea]=body\', \'ImageSel\', \'width=800,height=600,toolbar=no\');">');
|
||||
document.write('<input type="button" value="Link" onclick="serendipity_insLink(document.forms[\'serendipityEntry\'][\'serendipity[body]\'])">');
|
||||
{/if}
|
||||
</script>
|
||||
</div>
|
||||
{/if}
|
||||
{serendipity_hookPlugin hook="backend_entry_toolbar_body" data=$entry_data.entry hookAll="true"}
|
||||
<textarea id="serendipity[body]" name="serendipity[body]" rows="20">{$entry_vars.entry.body|@escape}</textarea>
|
||||
</div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="form_check">
|
||||
<input id="checkbox_allow_comments" name="serendipity[allow_comments]" type="checkbox" value="true"{if $entry_vars.allow_comments} checked="checked"{/if}><label for="checkbox_allow_comments">{$CONST.COMMENTS_ENABLE}</label>
|
||||
</div>
|
||||
|
||||
<div class="form_check">
|
||||
<input id="checkbox_moderate_comments" name="serendipity[moderate_comments]" type="checkbox" value="true"{if $entry_vars.moderate_comments} checked="checked"{/if}><label for="checkbox_moderate_comments">{$CONST.COMMENTS_MODERATE}</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form_buttons">
|
||||
<input type="submit" accesskey="p" value="{$CONST.PREVIEW}" onclick="document.forms['serendipityEntry'].elements['serendipity[preview]'].value='true';">
|
||||
<input type="submit" accesskey="s" value="{$CONST.SAVE}"onclick="return checkSave();">
|
||||
</div>
|
||||
|
||||
<div class="form_area">
|
||||
<label for="serendipity[extended]">{$CONST.EXTENDED_BODY}</label>
|
||||
{if NOT $entry_vars.wysiwyg}
|
||||
<div id="tools_extended">
|
||||
{if $entry_vars.wysiwyg_advanced}
|
||||
{if $iso2br}<input name="insX" type="button" value="NoBR" accesskey="x" onclick="wrapSelection(document.forms['serendipityEntry']['serendipity[extended]'],'<nl>','</nl>')">{/if}
|
||||
<input name="insI" type="button" accesskey="i" value="I" onclick="wrapSelection(document.forms['serendipityEntry']['serendipity[extended]'],'<em>','</em>')">
|
||||
<input name="insB" type="button" accesskey="b" value="B" onclick="wrapSelection(document.forms['serendipityEntry']['serendipity[extended]'],'<strong>','</strong>')">
|
||||
<input name="insU" type="button" accesskey="u" value="U" onclick="wrapSelection(document.forms['serendipityEntry']['serendipity[extended]'],'<u>','</u>')">
|
||||
<input name="insQ" type="button" accesskey="q" value="{$CONST.QUOTE}" onclick="wrapSelection(document.forms['serendipityEntry']['serendipity[extended]'],'<blockquote>','</blockquote>')">
|
||||
<input name="insJ" type="button" accesskey="j" value="img" onclick="wrapInsImage(document.forms['serendipityEntry']['serendipity[extended]'])">
|
||||
<input name="insImage" type="button" value="{$CONST.MEDIA}" onclick="window.open('serendipity_admin_image_selector.php?serendipity[textarea]=extended', 'ImageSel', 'width=800,height=600,toolbar=no,scrollbars=1,scrollbars,resize=1,resizable=1');">
|
||||
<input name="insURL" type="button" accesskey="l" value="URL" onclick="wrapSelectionWithLink(document.forms['serendipityEntry']['serendipity[extended]'])">
|
||||
{else}
|
||||
{if $iso2br}<input type="button" value="NoBR" onclick="serendipity_insBasic(document.forms['serendipityEntry']['serendipity[extended]'], 'x')">{/if}
|
||||
<input type="button" value="B" onclick="serendipity_insBasic(document.forms['serendipityEntry']['serendipity[extended]'], 'b')">
|
||||
<input type="button" value="U" onclick="serendipity_insBasic(document.forms['serendipityEntry']['serendipity[extended]'], 'u')">
|
||||
<input type="button" value="I" onclick="serendipity_insBasic(document.forms['serendipityEntry']['serendipity[extended]'], 'i')">
|
||||
<input type="button" value="<img>" onclick="serendipity_insImage(document.forms['serendipityEntry']['serendipity[extended]'])">
|
||||
<input type="button" value="{$CONST.MEDIA}" onclick="window.open('serendipity_admin_image_selector.php?serendipity[textarea]=extended', 'ImageSel', 'width=800,height=600,toolbar=no');">
|
||||
<input type="button" value="Link" onclick="serendipity_insLink(document.forms['serendipityEntry']['serendipity[extended]'])">
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
{serendipity_hookPlugin hook="backend_entry_toolbar_extended" data=$entry_data.entry hookAll="true"}
|
||||
<textarea id="serendipity[extended]" name="serendipity[extended]" rows="20">{$entry_vars.entry.extended|@escape}</textarea>
|
||||
</div>
|
||||
|
||||
<fieldset>
|
||||
<legend><span>{$CONST.ADVANCED_OPTIONS}</span></legend>
|
||||
{$entry_vars.entry|@serendipity_refhookPlugin:'backend_display'}
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
{if $entry_vars.show_wysiwyg}
|
||||
<script>toggle_extended();</script>
|
||||
{/if}
|
||||
{if $entry_vars.wysiwyg}
|
||||
{foreach from=$entry_vars.wysiwyg_blocks item="wysiwyg_block_item" key="wysiwyg_block_jsname"}
|
||||
{$wysiwyg_block_item|emit_htmlarea_code:$wysiwyg_block_jsname}
|
||||
{/foreach}
|
||||
{$entry_vars.wysiwyg_blocks|@serendipity_refhookPlugin:'backend_wysiwyg_finish'}
|
||||
{/if}
|
||||
<script src="serendipity_define.js.php"></script>
|
||||
<script src="serendipity_editor.js"></script>
|
BIN
templates/2k11/admin/img/accept.png
Normal file
After Width: | Height: | Size: 883 B |
BIN
templates/2k11/admin/img/admin_msg_error.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
templates/2k11/admin/img/admin_msg_note.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
templates/2k11/admin/img/admin_msg_success.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
templates/2k11/admin/img/background.jpg
Normal file
After Width: | Height: | Size: 6.8 KiB |
BIN
templates/2k11/admin/img/banner_background.png
Normal file
After Width: | Height: | Size: 6.3 KiB |
BIN
templates/2k11/admin/img/big_delete.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
templates/2k11/admin/img/big_rename.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
templates/2k11/admin/img/big_resize.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
templates/2k11/admin/img/big_rotate_ccw.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
templates/2k11/admin/img/big_rotate_cw.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
templates/2k11/admin/img/big_zoom.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
templates/2k11/admin/img/button_background.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
templates/2k11/admin/img/clock.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
templates/2k11/admin/img/clock_future.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
templates/2k11/admin/img/configure.png
Normal file
After Width: | Height: | Size: 980 B |
BIN
templates/2k11/admin/img/delete.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
templates/2k11/admin/img/downarrow.png
Normal file
After Width: | Height: | Size: 808 B |
BIN
templates/2k11/admin/img/edit.png
Normal file
After Width: | Height: | Size: 857 B |
BIN
templates/2k11/admin/img/folder.png
Normal file
After Width: | Height: | Size: 702 B |
BIN
templates/2k11/admin/img/grablet.gif
Normal file
After Width: | Height: | Size: 102 B |
BIN
templates/2k11/admin/img/grablet_over.gif
Normal file
After Width: | Height: | Size: 102 B |
BIN
templates/2k11/admin/img/imgedit_area.gif
Normal file
After Width: | Height: | Size: 797 B |
BIN
templates/2k11/admin/img/imgedit_orientation.gif
Normal file
After Width: | Height: | Size: 191 B |
BIN
templates/2k11/admin/img/imgedit_slider.gif
Normal file
After Width: | Height: | Size: 79 B |
BIN
templates/2k11/admin/img/imgedit_varea.gif
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
templates/2k11/admin/img/infobar_background.png
Normal file
After Width: | Height: | Size: 252 B |
BIN
templates/2k11/admin/img/install.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
templates/2k11/admin/img/install_now.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
templates/2k11/admin/img/install_now_spartacus.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
templates/2k11/admin/img/install_template.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
templates/2k11/admin/img/menu_background.png
Normal file
After Width: | Height: | Size: 700 B |
BIN
templates/2k11/admin/img/menuheader_background.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
templates/2k11/admin/img/menuitem.png
Normal file
After Width: | Height: | Size: 708 B |
BIN
templates/2k11/admin/img/mime_unknown.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
templates/2k11/admin/img/next.png
Normal file
After Width: | Height: | Size: 781 B |
BIN
templates/2k11/admin/img/previous.png
Normal file
After Width: | Height: | Size: 777 B |
BIN
templates/2k11/admin/img/rotate.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
templates/2k11/admin/img/thumbnail.png
Normal file
After Width: | Height: | Size: 922 B |
BIN
templates/2k11/admin/img/unconfigure.png
Normal file
After Width: | Height: | Size: 997 B |
BIN
templates/2k11/admin/img/uparrow.png
Normal file
After Width: | Height: | Size: 781 B |
BIN
templates/2k11/admin/img/upgrade_now.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
templates/2k11/admin/img/user_admin.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
templates/2k11/admin/img/user_chief.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
templates/2k11/admin/img/user_editor.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
templates/2k11/admin/img/zoom.png
Normal file
After Width: | Height: | Size: 813 B |
173
templates/2k11/admin/imgedit.css
Normal file
@ -0,0 +1,173 @@
|
||||
#zoomslider {
|
||||
position: relative;
|
||||
display: block;
|
||||
width: 10px; /* If you change the width of this, also change the JavaScript variable "slider_width"!!! */
|
||||
height: 100px;
|
||||
border: 1px solid yellow;
|
||||
background-color: yellow;
|
||||
color: black;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
text-align: center;
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
#zoombutton {
|
||||
position: absolute;
|
||||
display: inline;
|
||||
background-color: red;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
border: 0px;
|
||||
cursor: move;
|
||||
z-index: 4;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.smallcaps {
|
||||
font-family: Verdana;
|
||||
font-size: 7pt;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.nospace {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
.button {
|
||||
border: 1px solid gray;
|
||||
font-family: Verdana;
|
||||
font-size: 7pt;
|
||||
color: white;
|
||||
background-color: #303030;
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
.specialbutton {
|
||||
border: 1px solid gray;
|
||||
font-family: Verdana;
|
||||
font-size: 8pt;
|
||||
color: white;
|
||||
background-color: red;
|
||||
padding: 3px;
|
||||
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
.small {
|
||||
width: 25px;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.center {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.center span {
|
||||
position: relative;
|
||||
top: -5px;
|
||||
}
|
||||
|
||||
#imgedit {
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
top: 25px;
|
||||
margin: 15px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
#outer {
|
||||
display: block;
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
#backdrop {
|
||||
display: block;
|
||||
position: absolute;
|
||||
z-index: 2;
|
||||
filter:progid:DXImageTransform.Microsoft.Alpha(opacity=55);
|
||||
-moz-opacity: 0.55;
|
||||
}
|
||||
|
||||
#overlay {
|
||||
position: absolute;
|
||||
display: block;
|
||||
z-index: 3;
|
||||
cursor: move;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#harea {
|
||||
position: absolute;
|
||||
display: block;
|
||||
z-index: 4;
|
||||
}
|
||||
|
||||
#varea {
|
||||
position: absolute;
|
||||
display: block;
|
||||
z-index: 4;
|
||||
}
|
||||
|
||||
#zoom {
|
||||
display: block;
|
||||
float: left;
|
||||
height: 140px;
|
||||
border: 1px solid red;
|
||||
vertical-align: middle;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
text-align: center;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
#scaletext {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
|
||||
#cropimage {
|
||||
overflow: hidden;
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 1px;
|
||||
}
|
||||
|
||||
.info {
|
||||
display: block;
|
||||
position: relative;
|
||||
border: 1px solid black;
|
||||
color: black;
|
||||
background-color: #A0A0A0;
|
||||
margin: 20px;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
legend {
|
||||
background-color: #A0A0A0;
|
||||
font-family: Verdana;
|
||||
font-size: 12pt;
|
||||
font-weight: bold;
|
||||
-moz-border-radius-topleft: 10px;
|
||||
-moz-border-radius-topright: 10px;
|
||||
border-left: 1px solid black;
|
||||
border-right: 1px solid black;
|
||||
padding: 3px;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.error {
|
||||
color: red;
|
||||
}
|
||||
|
||||
code {
|
||||
color: white;
|
||||
font-size: 8pt;
|
||||
}
|
||||
|
189
templates/2k11/admin/index.tpl
Normal file
@ -0,0 +1,189 @@
|
||||
{* HTML5: Yes *}
|
||||
{* jQuery: No *}
|
||||
|
||||
<!doctype html>
|
||||
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="{$lang}"> <![endif]-->
|
||||
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8" lang="{$lang}"> <![endif]-->
|
||||
<!--[if IE 8]> <html class="no-js lt-ie9" lang="{$lang}"> <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="{$lang}"> <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="{$CONST.LANG_CHARSET}">
|
||||
<title>{if $admin_vars.title}{$admin_vars.title} | {/if}{$CONST.SERENDIPITY_ADMIN_SUITE}</title>
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="{$admin_vars.css_file}">
|
||||
<link rel="stylesheet" href="{$admin_vars.admin_css_file}">
|
||||
<script src="{serendipity_getFile file='admin/js/modernizr-2.6.2.min.js'}"></script>
|
||||
<script src="{serendipity_getFile file='admin/header_spawn.js'}"></script>
|
||||
{if $admin_vars.admin_installed}
|
||||
{serendipity_hookPlugin hook="backend_header" hookAll="true"}
|
||||
{/if}
|
||||
</head>
|
||||
<body id="serendipity_admin_page" onload="spawn()">
|
||||
{if NOT $admin_vars.no_banner}
|
||||
<header id="top">
|
||||
<div class="clearfix">
|
||||
{if $admin_vars.admin_installed}
|
||||
<div id="banner">
|
||||
<h1><span class="visuallyhidden">{$CONST.SERENDIPITY_ADMIN_SUITE}: </span>{$blogTitle}</h1>
|
||||
{if $admin_vars.is_logged_in}
|
||||
<a href="{$serendipityBaseURL}">{$CONST.BACK_TO_BLOG}</a>
|
||||
{/if}
|
||||
{else}
|
||||
<h1>{$CONST.SERENDIPITY_INSTALLATION}</h1>
|
||||
{/if}
|
||||
</div>
|
||||
{if $admin_vars.is_logged_in}
|
||||
<nav id="user_menu">
|
||||
<h2>{$admin_vars.self_info}</h2>
|
||||
|
||||
<ul>
|
||||
<li><a href="serendipity_admin.php?serendipity[adminModule]=logout">{$CONST.LOGOUT}</a></li>
|
||||
<li><a href="serendipity_admin.php">{$CONST.ADMIN_FRONTPAGE}</a></li>
|
||||
{if 'personalConfiguration'|checkPermission}
|
||||
<li><a href="serendipity_admin.php?serendipity[adminModule]=personal">{$CONST.PERSONAL_SETTINGS}</a></li>
|
||||
{/if}
|
||||
</ul>
|
||||
</nav>
|
||||
{/if}
|
||||
</div>
|
||||
</header>
|
||||
{/if}
|
||||
<div id="main" class="clearfix">
|
||||
{if NOT $admin_vars.is_logged_in}
|
||||
{$admin_vars.out|@serendipity_refhookPlugin:'backend_login_page'}
|
||||
{* <div id="login_container"> *}
|
||||
{* <h2>{$CONST.WELCOME_TO_ADMIN}</h2> *}
|
||||
{$admin_vars.out.header}
|
||||
{if $admin_vars.post_action != '' AND NOT $admin_vars.is_logged_in}
|
||||
<span class="msg_error">{$CONST.WRONG_USERNAME_OR_PASSWORD}</span>
|
||||
{/if}
|
||||
<form id="login" class="clearfix" action="serendipity_admin.php" method="post">
|
||||
<input type="hidden" name="serendipity[action]" value="admin">
|
||||
<fieldset>
|
||||
<legend class="visuallyhidden"><span>{$CONST.PLEASE_ENTER_CREDENTIALS}</span></legend>
|
||||
|
||||
<div class="form_field">
|
||||
<label for="login_uid">{$CONST.USERNAME}</label>
|
||||
<input id="login_uid" name="serendipity[user]" type="text">
|
||||
</div>
|
||||
|
||||
<div class="form_field">
|
||||
<label for="login_pwd">{$CONST.PASSWORD}</label>
|
||||
<input id="login_pwd" name="serendipity[pass]" type="password">
|
||||
</div>
|
||||
|
||||
<div class="form_check">
|
||||
<input id="login_auto" name="serendipity[auto]" type="checkbox"><label for="login_auto">{$CONST.AUTOMATIC_LOGIN}</label>
|
||||
</div>
|
||||
|
||||
<input id="login_send" name="submit" type="submit" value="{$CONST.LOGIN}">
|
||||
</fieldset>
|
||||
{$admin_vars.out.table}
|
||||
</form>
|
||||
<a id="back_to_blog" href="{$serendipityBaseURL}">{$CONST.BACK_TO_BLOG}</a>
|
||||
{$admin_vars.out.footer}
|
||||
{* </div> *}
|
||||
{else}
|
||||
<div id="content" class="clearfix">
|
||||
{$admin_vars.main_content}
|
||||
</div>
|
||||
{if NOT $admin_vars.no_sidebar}
|
||||
<nav id="main_menu">
|
||||
<h2 class="visuallyhidden">Main menu</h2> {* i18n *}
|
||||
|
||||
<ul>
|
||||
{if 'adminEntries'|checkPermission OR 'adminEntriesPlugins'|checkPermission}
|
||||
<li><h3>{$CONST.ADMIN_ENTRIES}</h3>
|
||||
<ul>
|
||||
{if 'adminEntries'|checkPermission}
|
||||
<li><a href="serendipity_admin.php?serendipity[adminModule]=entries&serendipity[adminAction]=new">{$CONST.NEW_ENTRY}</a></li>
|
||||
<li><a href="serendipity_admin.php?serendipity[adminModule]=entries&serendipity[adminAction]=editSelect">{$CONST.EDIT_ENTRIES}</a></li>
|
||||
{/if}
|
||||
{if 'adminComments'|checkPermission}
|
||||
<li><a href="serendipity_admin.php?serendipity[adminModule]=comments">{$CONST.COMMENTS}</a></li>
|
||||
{/if}
|
||||
{if 'adminCategories'|checkPermission}
|
||||
<li><a href="serendipity_admin.php?serendipity[adminModule]=category&serendipity[adminAction]=view">{$CONST.CATEGORIES}</a></li>
|
||||
{/if}
|
||||
{if 'adminEntries'|checkPermission OR 'adminEntriesPlugins'|checkPermission}
|
||||
{if $admin_vars.no_create !== true}
|
||||
{serendipity_hookPlugin hook="backend_sidebar_entries" hookAll="true"}
|
||||
{/if}
|
||||
{/if}
|
||||
</ul>
|
||||
</li>
|
||||
{/if}
|
||||
{if 'adminImages'|checkPermission}
|
||||
<li><h3>{$CONST.MEDIA}</h3>
|
||||
<ul>
|
||||
{if 'adminImagesAdd'|checkPermission}
|
||||
<li><a href="serendipity_admin.php?serendipity[adminModule]=media&serendipity[adminAction]=addSelect">{$CONST.ADD_MEDIA}</a></li>
|
||||
{/if}
|
||||
{if 'adminImagesView'|checkPermission}
|
||||
<li><a href="serendipity_admin.php?serendipity[adminModule]=media">{$CONST.MEDIA_LIBRARY}</a></li>
|
||||
{/if}
|
||||
{if 'adminImagesDirectories'|checkPermission}
|
||||
<li><a href="serendipity_admin.php?serendipity[adminModule]=media&serendipity[adminAction]=directorySelect">{$CONST.MANAGE_DIRECTORIES}</a></li>
|
||||
{/if}
|
||||
{if 'adminImagesSync'|checkPermission}
|
||||
<li><a href="serendipity_admin.php?serendipity[adminModule]=media&serendipity[adminAction]=sync" onclick="return confirm('{$CONST.WARNING_THIS_BLAHBLAH}');">{$CONST.CREATE_THUMBS}</a></li>
|
||||
{/if}
|
||||
{if $admin_vars.no_create !== true}
|
||||
{serendipity_hookPlugin hook="backend_sidebar_entries_images" hookAll="true"}
|
||||
{/if}
|
||||
</ul>
|
||||
</li>
|
||||
{/if}
|
||||
{if 'adminTemplates'|checkPermission OR 'adminPlugins'|checkPermission}
|
||||
<li><h3>{$CONST.APPEARANCE}</h3>
|
||||
<ul>
|
||||
{if 'adminTemplates'|checkPermission}
|
||||
<li><a href="serendipity_admin.php?serendipity[adminModule]=templates">{$CONST.MANAGE_STYLES}</a></li>
|
||||
{/if}
|
||||
{if 'adminPlugins'|checkPermission}
|
||||
<li><a href="serendipity_admin.php?serendipity[adminModule]=plugins">{$CONST.CONFIGURE_PLUGINS}</a></li>
|
||||
{/if}
|
||||
{if $admin_vars.no_create !== true}
|
||||
{serendipity_hookPlugin hook="backend_sidebar_admin_appearance" hookAll="true"}
|
||||
{/if}
|
||||
</ul>
|
||||
</li>
|
||||
{/if}
|
||||
{if 'adminUsersGroups'|checkPermission OR 'adminImport'|checkPermission OR 'siteConfiguration'|checkPermission OR 'blogConfiguration'|checkPermission OR 'adminUsers'|checkPermission}
|
||||
<li><h3>{$CONST.ADMIN}</h3>
|
||||
<ul>
|
||||
{if 'siteConfiguration'|checkPermission OR 'blogConfiguration'|checkPermission}
|
||||
<li><a href="serendipity_admin.php?serendipity[adminModule]=configuration">{$CONST.CONFIGURATION}</a></li>
|
||||
{/if}
|
||||
{if 'adminUsers'|checkPermission}
|
||||
<li><a href="serendipity_admin.php?serendipity[adminModule]=users">{$CONST.MANAGE_USERS}</a></li>
|
||||
{/if}
|
||||
{if 'adminUsersGroups'|checkPermission}
|
||||
<li><a href="serendipity_admin.php?serendipity[adminModule]=groups">{$CONST.MANAGE_GROUPS}</a></li>
|
||||
{/if}
|
||||
{if 'adminImport'|checkPermission}
|
||||
<li><a href="serendipity_admin.php?serendipity[adminModule]=import">{$CONST.IMPORT_ENTRIES}</a></li>
|
||||
<li><a href="serendipity_admin.php?serendipity[adminModule]=export">{$CONST.EXPORT_ENTRIES}</a></li>
|
||||
{/if}
|
||||
{if 'siteConfiguration'|checkPermission || 'blogConfiguration'|checkPermission}
|
||||
<li><a href="serendipity_admin.php?serendipity[adminModule]=integrity">{$CONST.INTEGRITY}</a></li>
|
||||
{/if}
|
||||
{if $admin_vars.no_create !== true}
|
||||
{serendipity_hookPlugin hook="backend_sidebar_admin" hookAll="true"}
|
||||
{/if}
|
||||
</ul>
|
||||
</li>
|
||||
{/if}
|
||||
</ul>
|
||||
</nav>
|
||||
{/if}
|
||||
{/if}
|
||||
</div>
|
||||
{if NOT $admin_vars.no_footer}
|
||||
<footer id="meta">
|
||||
<small>{$admin_vars.version_info}</small>
|
||||
</footer>
|
||||
{/if}
|
||||
<script src="{serendipity_getFile file='admin/js/2k11.admin.js'}"></script>
|
||||
</body>
|
||||
</html>
|
1
templates/2k11/admin/js/2k11.admin.js
Normal file
@ -0,0 +1 @@
|
||||
jQuery(document).ready(function($) { });
|
501
templates/2k11/admin/js/boxsizing.htc
Normal file
@ -0,0 +1,501 @@
|
||||
/**
|
||||
* box-sizing Polyfill
|
||||
*
|
||||
* A polyfill for box-sizing: border-box for IE6 & IE7.
|
||||
*
|
||||
* JScript
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* See <http://www.gnu.org/licenses/lgpl-3.0.txt>
|
||||
*
|
||||
* @category JScript
|
||||
* @package box-sizing-polyfill
|
||||
* @author Christian Schepp Schaefer <schaepp@gmx.de> <http://twitter.com/derSchepp>
|
||||
* @copyright 2012 Christian Schepp Schaefer
|
||||
* @license http://www.gnu.org/copyleft/lesser.html The GNU LESSER GENERAL PUBLIC LICENSE, Version 3.0
|
||||
* @link http://github.com/Schepp/box-sizing-polyfill
|
||||
*
|
||||
* PREFACE:
|
||||
*
|
||||
* This box-sizing polyfill is based on previous work done by Erik Arvidsson,
|
||||
* which he published in 2002 on http://webfx.eae.net/dhtml/boxsizing/boxsizing.html.
|
||||
*
|
||||
* USAGE:
|
||||
*
|
||||
* Add the behavior/HTC after every `box-sizing: border-box;` that you assign:
|
||||
*
|
||||
* box-sizing: border-box;
|
||||
* *behavior: url(/scripts/boxsizing.htc);`
|
||||
*
|
||||
* Prefix the `behavior` property with a star, like seen above, so it will only be seen by
|
||||
* IE6 & IE7, not by IE8+ who already implement box-sizing.
|
||||
*
|
||||
* The URL to the HTC file must be relative to your HTML(!) document, not relative to your CSS.
|
||||
* That's why I'd advise you to use absolute paths like in the example.
|
||||
*
|
||||
*/
|
||||
<component lightWeight="true">
|
||||
<attach event="onpropertychange" onevent="checkPropertyChange()" />
|
||||
<attach event="ondetach" onevent="restore()" />
|
||||
<attach event="onresize" for="window" onevent="update()" />
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
|
||||
var viewportwidth = (typeof window.innerWidth != 'undefined' ? window.innerWidth : element.document.documentElement.clientWidth);
|
||||
|
||||
// Shortcut for the document object
|
||||
var doc = element.document;
|
||||
|
||||
// Buffer for multiple resize events
|
||||
var resizetimeout = null;
|
||||
|
||||
// Don't apply box-sizing to certain elements
|
||||
var apply = false;
|
||||
switch(element.nodeName){
|
||||
case '#comment':
|
||||
case 'HTML':
|
||||
case 'HEAD':
|
||||
case 'TITLE':
|
||||
case 'SCRIPT':
|
||||
case 'STYLE':
|
||||
case 'LINK':
|
||||
case 'META':
|
||||
break;
|
||||
|
||||
default:
|
||||
apply = true;
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
* update gets called during resize events, then waits until there are no further resize events, and finally triggers a recalculation
|
||||
*/
|
||||
function update(){
|
||||
if(resizetimeout !== null){
|
||||
window.clearTimeout(resizetimeout);
|
||||
}
|
||||
resizetimeout = window.setTimeout(function(){
|
||||
restore();
|
||||
init();
|
||||
resizetimeout = null;
|
||||
},100);
|
||||
}
|
||||
|
||||
/*
|
||||
* restore gets called when the behavior is being detached (see event binding at the top),
|
||||
* resets everything like it was before applying the behavior
|
||||
*/
|
||||
function restore(){
|
||||
if(apply){
|
||||
try{
|
||||
element.runtimeStyle.removeAttribute("width");
|
||||
element.runtimeStyle.removeAttribute("height");
|
||||
}
|
||||
catch(e){}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* init gets called once at the start and then never again,
|
||||
* triggers box-sizing calculations and updates width and height
|
||||
*/
|
||||
function init(){
|
||||
if(apply){
|
||||
updateBorderBoxWidth();
|
||||
updateBorderBoxHeight();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* checkPropertyChange gets called as soon as an element property changes
|
||||
* (see event binding at the top), it then checks if any property influencing its
|
||||
* dimensions was changed and if yes recalculates width and height
|
||||
*/
|
||||
function checkPropertyChange(){
|
||||
if(apply){
|
||||
var pn = event.propertyName;
|
||||
if(pn === "style.boxSizing" && element.style.boxSizing === ""){
|
||||
element.style.removeAttribute("boxSizing");
|
||||
element.runtimeStyle.removeAttribute("boxSizing");
|
||||
element.runtimeStyle.removeAttribute("width");
|
||||
element.runtimeStyle.removeAttribute("height");
|
||||
}
|
||||
switch (pn){
|
||||
case "style.width":
|
||||
case "style.minWidth":
|
||||
case "style.maxWidth":
|
||||
case "style.borderLeftWidth":
|
||||
case "style.borderLeftStyle":
|
||||
case "style.borderRightWidth":
|
||||
case "style.borderRightStyle":
|
||||
case "style.paddingLeft":
|
||||
case "style.paddingRight":
|
||||
updateBorderBoxWidth();
|
||||
break;
|
||||
|
||||
case "style.height":
|
||||
case "style.minHeight":
|
||||
case "style.maxHeight":
|
||||
case "style.borderTopWidth":
|
||||
case "style.borderTopStyle":
|
||||
case "style.borderBottomWidth":
|
||||
case "style.borderBottomStyle":
|
||||
case "style.paddingTop":
|
||||
case "style.paddingBottom":
|
||||
updateBorderBoxHeight();
|
||||
break;
|
||||
|
||||
case "className":
|
||||
case "style.boxSizing":
|
||||
updateBorderBoxWidth();
|
||||
updateBorderBoxHeight();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Helper function, taken from Dean Edward's IE7 framework,
|
||||
* added by Schepp on 12.06.2010.
|
||||
* http://code.google.com/p/ie7-js/
|
||||
*
|
||||
* Allows us to convert from relative to pixel-values.
|
||||
*/
|
||||
function getPixelValue(value){
|
||||
var PIXEL = /^\d+(px)?$/i;
|
||||
if (PIXEL.test(value)) return parseInt(value);
|
||||
var style = element.style.left;
|
||||
var runtimeStyle = element.runtimeStyle.left;
|
||||
element.runtimeStyle.left = element.currentStyle.left;
|
||||
element.style.left = value || 0;
|
||||
value = parseInt(element.style.pixelLeft);
|
||||
element.style.left = style;
|
||||
element.runtimeStyle.left = runtimeStyle;
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
function getPixelWidth(object, value){
|
||||
// For Pixel Values
|
||||
var PIXEL = /^\d+(px)?$/i;
|
||||
if (PIXEL.test(value)) return parseInt(value);
|
||||
|
||||
// For Percentage Values
|
||||
var PERCENT = /^[\d\.]+%$/i;
|
||||
if (PERCENT.test(value)){
|
||||
try{
|
||||
var parentPaddingLeft = getPixelWidth(object.parentElement,object.parentElement.currentStyle.paddingLeft);
|
||||
var parentPaddingRight = getPixelWidth(object.parentElement,object.parentElement.currentStyle.paddingRight);
|
||||
var parentBorderLeft = getPixelWidth(object.parentElement,object.parentElement.currentStyle.borderLeft);
|
||||
var parentBorderRight = getPixelWidth(object.parentElement,object.parentElement.currentStyle.borderRight);
|
||||
|
||||
//var parentWidth = getPixelWidth(object.parentElement,(object.parentElement.currentStyle.width != "auto" ? object.parentElement.currentStyle.width : "100%"));
|
||||
var parentWidth = object.parentElement.offsetWidth - parentPaddingLeft - parentPaddingRight - parentBorderLeft - parentBorderRight;
|
||||
var value = (parseFloat(value) / 100) * parentWidth;
|
||||
}
|
||||
catch(e){
|
||||
var value = (parseFloat(value) / 100) * element.document.documentElement.clientWidth;
|
||||
}
|
||||
return parseInt(value);
|
||||
}
|
||||
|
||||
// For EM Values
|
||||
var style = object.style.left;
|
||||
var runtimeStyle = object.runtimeStyle.left;
|
||||
object.runtimeStyle.left = object.currentStyle.left;
|
||||
object.style.left = value || 0;
|
||||
value = parseInt(object.style.pixelLeft);
|
||||
object.style.left = style;
|
||||
object.runtimeStyle.left = runtimeStyle;
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
function getPixelHeight(object, value){
|
||||
// For Pixel Values
|
||||
var PIXEL = /^\d+(px)?$/i;
|
||||
if (PIXEL.test(value)) return parseInt(value);
|
||||
|
||||
// For Percentage Values
|
||||
var PERCENT = /^[\d\.]+%$/i;
|
||||
if (PERCENT.test(value)){
|
||||
try{
|
||||
if(object.parentElement.currentStyle.height != "auto"){
|
||||
switch(object.parentElement.nodeName){
|
||||
default:
|
||||
if(object.parentElement.currentStyle.height !== "auto"){
|
||||
var parentPaddingTop = getPixelWidth(object.parentElement,object.parentElement.currentStyle.paddingTop);
|
||||
var parentPaddingBottom = getPixelWidth(object.parentElement,object.parentElement.currentStyle.paddingBottom);
|
||||
var parentBorderTop = getPixelWidth(object.parentElement,object.parentElement.currentStyle.borderTop);
|
||||
var parentBorderBottom = getPixelWidth(object.parentElement,object.parentElement.currentStyle.borderBottom);
|
||||
|
||||
var parentHeight = object.parentElement.offsetHeight - parentPaddingTop - parentPaddingBottom - parentBorderTop - parentBorderBottom;
|
||||
//var parentHeight = getPixelHeight(object.parentElement,object.parentElement.currentStyle.height);
|
||||
|
||||
value = (parseFloat(value) / 100) * parentHeight;
|
||||
}
|
||||
else {
|
||||
value = "auto";
|
||||
}
|
||||
break;
|
||||
|
||||
case 'HTML':
|
||||
parentHeight = element.document.documentElement.clientHeight;
|
||||
if(parentHeight !== "auto"){
|
||||
value = (parseFloat(value) / 100) * parentHeight;
|
||||
}
|
||||
else {
|
||||
value = "auto";
|
||||
}
|
||||
break;
|
||||
}
|
||||
if(value !== "auto") value = parseInt(value);
|
||||
}
|
||||
else {
|
||||
value = "auto";
|
||||
}
|
||||
}
|
||||
catch(e){
|
||||
value = "auto";
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
// For EM Values
|
||||
var style = object.style.left;
|
||||
var runtimeStyle = object.runtimeStyle.left;
|
||||
object.runtimeStyle.left = object.currentStyle.left;
|
||||
object.style.left = value || 0;
|
||||
value = parseInt(object.style.pixelLeft);
|
||||
object.style.left = style;
|
||||
object.runtimeStyle.left = runtimeStyle;
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* getBorderWidth & friends
|
||||
* Border width getters
|
||||
*/
|
||||
function getBorderWidth(sSide){
|
||||
if(element.currentStyle["border" + sSide + "Style"] == "none"){
|
||||
return 0;
|
||||
}
|
||||
var n = getPixelValue(element.currentStyle["border" + sSide + "Width"]);
|
||||
return n || 0;
|
||||
}
|
||||
function getBorderLeftWidth() { return getBorderWidth("Left"); }
|
||||
function getBorderRightWidth() { return getBorderWidth("Right"); }
|
||||
function getBorderTopWidth() { return getBorderWidth("Top"); }
|
||||
function getBorderBottomWidth() { return getBorderWidth("Bottom"); }
|
||||
|
||||
|
||||
/*
|
||||
* getPadding & friends
|
||||
* Padding width getters
|
||||
*/
|
||||
function getPadding(sSide) {
|
||||
var n = getPixelValue(element.currentStyle["padding" + sSide]);
|
||||
return n || 0;
|
||||
}
|
||||
function getPaddingLeft() { return getPadding("Left"); }
|
||||
function getPaddingRight() { return getPadding("Right"); }
|
||||
function getPaddingTop() { return getPadding("Top"); }
|
||||
function getPaddingBottom() { return getPadding("Bottom"); }
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* getBoxSizing
|
||||
* Get the box-sizing value for the current element
|
||||
*/
|
||||
function getBoxSizing(){
|
||||
var s = element.style;
|
||||
var cs = element.currentStyle
|
||||
if(typeof s.boxSizing != "undefined" && s.boxSizing != ""){
|
||||
return s.boxSizing;
|
||||
}
|
||||
if(typeof s["box-sizing"] != "undefined" && s["box-sizing"] != ""){
|
||||
return s["box-sizing"];
|
||||
}
|
||||
if(typeof cs.boxSizing != "undefined" && cs.boxSizing != ""){
|
||||
return cs.boxSizing;
|
||||
}
|
||||
if(typeof cs["box-sizing"] != "undefined" && cs["box-sizing"] != ""){
|
||||
return cs["box-sizing"];
|
||||
}
|
||||
return getDocumentBoxSizing();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* getDocumentBoxSizing
|
||||
* Get the default document box sizing (check for quirks mode)
|
||||
*/
|
||||
function getDocumentBoxSizing(){
|
||||
if(doc.compatMode === null || doc.compatMode === "BackCompat"){
|
||||
return "border-box";
|
||||
}
|
||||
return "content-box"
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* setBorderBoxWidth & friends
|
||||
* Width and height setters
|
||||
*/
|
||||
function setBorderBoxWidth(n){
|
||||
element.runtimeStyle.width = Math.max(0, n - getBorderLeftWidth() -
|
||||
getPaddingLeft() - getPaddingRight() - getBorderRightWidth()) + "px";
|
||||
}
|
||||
function setBorderBoxMinWidth(n){
|
||||
element.runtimeStyle.minWidth = Math.max(0, n - getBorderLeftWidth() -
|
||||
getPaddingLeft() - getPaddingRight() - getBorderRightWidth()) + "px";
|
||||
}
|
||||
function setBorderBoxMaxWidth(n){
|
||||
element.runtimeStyle.maxWidth = Math.max(0, n - getBorderLeftWidth() -
|
||||
getPaddingLeft() - getPaddingRight() - getBorderRightWidth()) + "px";
|
||||
}
|
||||
function setBorderBoxHeight(n){
|
||||
element.runtimeStyle.height = Math.max(0, n - getBorderTopWidth() -
|
||||
getPaddingTop() - getPaddingBottom() - getBorderBottomWidth()) + "px";
|
||||
}
|
||||
function setBorderBoxMinHeight(n){
|
||||
element.runtimeStyle.minHeight = Math.max(0, n - getBorderTopWidth() -
|
||||
getPaddingTop() - getPaddingBottom() - getBorderBottomWidth()) + "px";
|
||||
}
|
||||
function setBorderBoxMaxHeight(n){
|
||||
element.runtimeStyle.maxHeight = Math.max(0, n - getBorderTopWidth() -
|
||||
getPaddingTop() - getPaddingBottom() - getBorderBottomWidth()) + "px";
|
||||
}
|
||||
function setContentBoxWidth(n){
|
||||
element.runtimeStyle.width = Math.max(0, n + getBorderLeftWidth() +
|
||||
getPaddingLeft() + getPaddingRight() + getBorderRightWidth()) + "px";
|
||||
}
|
||||
function setContentBoxMinWidth(n){
|
||||
element.runtimeStyle.minWidth = Math.max(0, n + getBorderLeftWidth() +
|
||||
getPaddingLeft() + getPaddingRight() + getBorderRightWidth()) + "px";
|
||||
}
|
||||
function setContentBoxMaxWidth(n){
|
||||
element.runtimeStyle.maxWidth = Math.max(0, n + getBorderLeftWidth() +
|
||||
getPaddingLeft() + getPaddingRight() + getBorderRightWidth()) + "px";
|
||||
}
|
||||
function setContentBoxHeight(n){
|
||||
element.runtimeStyle.height = Math.max(0, n + getBorderTopWidth() +
|
||||
getPaddingTop() + getPaddingBottom() + getBorderBottomWidth()) + "px";
|
||||
}
|
||||
function setContentBoxMinHeight(n){
|
||||
element.runtimeStyle.minHeight = Math.max(0, n + getBorderTopWidth() +
|
||||
getPaddingTop() + getPaddingBottom() + getBorderBottomWidth()) + "px";
|
||||
}
|
||||
function setContentBoxMaxHeight(n){
|
||||
element.runtimeStyle.maxHeight = Math.max(0, n + getBorderTopWidth() +
|
||||
getPaddingTop() + getPaddingBottom() + getBorderBottomWidth()) + "px";
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* updateBorderBoxWidth & updateBorderBoxHeight
|
||||
*
|
||||
*/
|
||||
function updateBorderBoxWidth() {
|
||||
if(getDocumentBoxSizing() == getBoxSizing()){
|
||||
return;
|
||||
}
|
||||
|
||||
var csw = element.currentStyle.width;
|
||||
if(csw != "auto"){
|
||||
csw = getPixelWidth(element,csw);
|
||||
if(getBoxSizing() == "border-box"){
|
||||
setBorderBoxWidth(parseInt(csw));
|
||||
}
|
||||
else{
|
||||
setContentBoxWidth(parseInt(csw));
|
||||
}
|
||||
}
|
||||
|
||||
csw = element.currentStyle.minWidth;
|
||||
if(csw != "none"){
|
||||
csw = getPixelWidth(element,csw);
|
||||
if(getBoxSizing() == "border-box"){
|
||||
setBorderBoxMinWidth(parseInt(csw));
|
||||
}
|
||||
else{
|
||||
setContentBoxMinWidth(parseInt(csw));
|
||||
}
|
||||
}
|
||||
|
||||
csw = element.currentStyle.maxWidth;
|
||||
if(csw != "none"){
|
||||
csw = getPixelWidth(element,csw);
|
||||
if(getBoxSizing() == "border-box"){
|
||||
setBorderBoxMaxWidth(parseInt(csw));
|
||||
}
|
||||
else{
|
||||
setContentBoxMaxWidth(parseInt(csw));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function updateBorderBoxHeight() {
|
||||
if(getDocumentBoxSizing() == getBoxSizing()){
|
||||
return;
|
||||
}
|
||||
|
||||
var csh = element.currentStyle.height;
|
||||
if(csh != "auto"){
|
||||
csh = getPixelHeight(element,csh);
|
||||
if(csh !== "auto"){
|
||||
if(getBoxSizing() == "border-box"){
|
||||
setBorderBoxHeight(parseInt(csh));
|
||||
}
|
||||
else{
|
||||
setContentBoxHeight(parseInt(csh));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
csh = element.currentStyle.minHeight;
|
||||
if(csh != "none"){
|
||||
csh = getPixelHeight(element,csh);
|
||||
if(csh !== "none"){
|
||||
if(getBoxSizing() == "border-box"){
|
||||
setBorderBoxMinHeight(parseInt(csh));
|
||||
}
|
||||
else{
|
||||
setContentBoxMinHeight(parseInt(csh));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
csh = element.currentStyle.maxHeight;
|
||||
if(csh != "none"){
|
||||
csh = getPixelHeight(element,csh);
|
||||
if(csh !== "none"){
|
||||
if(getBoxSizing() == "border-box"){
|
||||
setBorderBoxMaxHeight(parseInt(csh));
|
||||
}
|
||||
else{
|
||||
setContentBoxMaxHeight(parseInt(csh));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Run the calculations
|
||||
init();
|
||||
|
||||
//]]>
|
||||
</script>
|
||||
</component>
|
4
templates/2k11/admin/js/modernizr-2.6.2.min.js
vendored
Normal file
383
templates/2k11/admin/media_choose.tpl
Normal file
@ -0,0 +1,383 @@
|
||||
{* HTML5: Yes *}
|
||||
{* jQuery: No *}
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="{$CONST.LANG_CHARSET}">
|
||||
<title>{$CONST.SERENDIPITY_ADMIN_SUITE}: {$CONST.SELECT_FILE}</title>
|
||||
{if $media.css}<link rel="stylesheet" href="{$media.css}">{/if}
|
||||
{if $media.css_tree}<link rel="stylesheet" href="{$media.css_tree}">{/if}
|
||||
{if $media.css_imgedit}<link rel="stylesheet" href="{$media.css_imgedit}">{/if}
|
||||
{if $media.is_imgedit}
|
||||
<style>
|
||||
#outer {ldelim}
|
||||
left: {$imgedit.zoombox_padding}px;
|
||||
{rdelim}
|
||||
|
||||
#overlay {ldelim}
|
||||
clip: rect({$imgedit.overlay_clip_top} {$imgedit.overlay_clip_right} {$imgedit.overlay_clip_bottom} {$imgedit.overlay_clip_left});
|
||||
{rdelim}
|
||||
|
||||
#harea {ldelim}
|
||||
left: {$imgedit.zoombox_x}px;
|
||||
top: {$imgedit.zoombox_y}px;
|
||||
visibility: {$imgedit.harea_visibility};
|
||||
{rdelim}
|
||||
|
||||
#varea {ldelim}
|
||||
left: {$imgedit.zoombox_x}px;
|
||||
top: {$imgedit.zoombox_y}px;
|
||||
visibility: {$imgedit.varea_visibility};
|
||||
{rdelim}
|
||||
|
||||
#zoom {ldelim}
|
||||
width: {$imgedit.zoombox_width}px;
|
||||
{rdelim}
|
||||
|
||||
#scaletext {ldelim}
|
||||
visibility: {$imgedit.scale_visibility};
|
||||
{rdelim}
|
||||
|
||||
#outer {ldelim}
|
||||
width: {$imgedit.img_width}px;
|
||||
height: {$imgedit.img_height}px;
|
||||
border: 1px solid red;
|
||||
position: relative;
|
||||
display: block;
|
||||
{rdelim}
|
||||
</style>
|
||||
<script src="{serendipity_getFile file='dragdrop.js'}" ></script>
|
||||
<script src="{serendipity_getFile file='imgedit.js'}" ></script>
|
||||
{/if}
|
||||
<script src="{serendipity_getFile file='YahooUI/treeview/YAHOO.js'}"></script>
|
||||
<script src="{serendipity_getFile file='YahooUI/treeview/treeview.js'}"></script>
|
||||
</head>
|
||||
<script>
|
||||
function addLoadEvent(func) {ldelim}
|
||||
var oldonload = window.onload;
|
||||
if (typeof window.onload != 'function') {ldelim}
|
||||
window.onload = func;
|
||||
{rdelim} else {ldelim}
|
||||
window.onload = function() {ldelim}
|
||||
oldonload();
|
||||
func();
|
||||
{rdelim}
|
||||
{rdelim}
|
||||
{rdelim}
|
||||
|
||||
function SetCookie(name, value) {ldelim}
|
||||
var today = new Date();
|
||||
var expire = new Date();
|
||||
expire.setTime(today.getTime() + (60*60*24*30*1000));
|
||||
document.cookie = 'serendipity[' + name + ']='+escape(value) + ';expires=' + expire.toGMTString();
|
||||
{rdelim}
|
||||
|
||||
function rememberOptions() {ldelim}
|
||||
el = document.getElementById('imageForm');
|
||||
for (i = 0; i < el.elements.length; i++) {ldelim}
|
||||
elname = new String(el.elements[i].name);
|
||||
elname = elname.replace(/\[/g, '_');
|
||||
elname = elname.replace(/\]/g, '');
|
||||
|
||||
if (el.elements[i].type == 'radio') {ldelim}
|
||||
if (el.elements[i].checked) {ldelim}
|
||||
SetCookie(elname, el.elements[i].value);
|
||||
{rdelim}
|
||||
{rdelim} else if (typeof(el.elements[i].options) == 'object') {ldelim}
|
||||
SetCookie(elname, el.elements[i].options[el.elements[i].selectedIndex].value);
|
||||
{rdelim}
|
||||
{rdelim}
|
||||
{rdelim}
|
||||
|
||||
{if $media.only_path}
|
||||
if (parent.frames && parent.frames['tree']) {ldelim}
|
||||
parent.frames['tree'].document.getElementById('newdirlink').href =
|
||||
parent.frames['tree'].basenewdirurl +
|
||||
"{$media.only_path|@escape}"
|
||||
{rdelim}
|
||||
{/if}
|
||||
|
||||
{if $media.case == 'default'}
|
||||
function rename(id, fname) {ldelim}
|
||||
if (newname = prompt('{$CONST.ENTER_NEW_NAME}' + fname, fname)) {ldelim}
|
||||
newloc = '?{$media.token_url}&serendipity[adminModule]=images&serendipity[adminAction]=rename&serendipity[fid]='+ escape(id) + '&serendipity[newname]='+ escape(newname);
|
||||
location.href=newloc;
|
||||
{rdelim}
|
||||
{rdelim}
|
||||
{/if}
|
||||
|
||||
{if $media.case == 'tree'}
|
||||
var toggle_state = 'expand';
|
||||
function treeToggleAll() {ldelim}
|
||||
if (toggle_state == 'expand') {ldelim}
|
||||
toggle_state = 'collapse';
|
||||
tree.expandAll();
|
||||
{rdelim} else {ldelim}
|
||||
toggle_state = 'expand';
|
||||
tree.collapseAll();
|
||||
coreNode.expand();
|
||||
{rdelim}
|
||||
{rdelim}
|
||||
{/if}
|
||||
</script>
|
||||
|
||||
{if $media.frameset}
|
||||
<frameset id="media_frame" cols="20%,*">
|
||||
<frame id="media_frame_tree" frameborder="0" name="tree" scrolling="auto" src="{$serendipityHTTPPath}serendipity_admin_image_selector.php?{$media.GET_STRING}&serendipity[step]=tree">
|
||||
<frame id="media_frame_main" frameborder="0" name="media" src="{$serendipityHTTPPath}serendipity_admin_image_selector.php?{$media.GET_STRING}&serendipity[step]=default">
|
||||
</frameset>
|
||||
</html>
|
||||
{else}
|
||||
<body id="{$media.body_id}">
|
||||
|
||||
<div class="serendipityAdminContent">
|
||||
{if $media.case == 'external'}
|
||||
<!-- EXTERNAL MEDIA START -->
|
||||
{if $media.is_created OR $media.is_deleted}
|
||||
<script>
|
||||
if (parent.frames['tree']) {ldelim}
|
||||
parent.frames['tree'].location.href = parent.frames['tree'].location.href;
|
||||
parent.frames['media'].location.href = '{$serendipityHTTPPath}serendipity_admin_image_selector.php?serendipity[step]=default&serendipity[only_path]={$media.new_dir}';
|
||||
{rdelim}
|
||||
</script>
|
||||
{/if}
|
||||
{$media.external}
|
||||
|
||||
{if $media.is_imgedit}
|
||||
{$IMGEDIT}
|
||||
{/if}
|
||||
<!-- EXTERNAL MEDIA END -->
|
||||
{elseif $media.case == 'default'}
|
||||
<!-- MEDIA MANAGER START -->
|
||||
<h1>{$CONST.SELECT_FILE}</h1>
|
||||
|
||||
<p>{$CONST.CLICK_FILE_TO_INSERT}</p>
|
||||
|
||||
{$media.external}
|
||||
{$MEDIA_LIST}
|
||||
<!-- MEDIA MANAGER END -->
|
||||
{elseif $media.case == 'choose'}
|
||||
{if $perm_denied}
|
||||
<span class="msg_error">{$CONST.PERM_DENIED}</span>
|
||||
{else}
|
||||
<!-- MEDIA SELECTION START -->
|
||||
{$media.external}
|
||||
<script src="{$serendipityHTTPPath}serendipity_define.js.php"></script>
|
||||
<script src="{$serendipityHTTPPath}serendipity_editor.js"></script>
|
||||
|
||||
<div class="clearfix">
|
||||
{if $media.file.is_image}
|
||||
{serendipity_hookPlugin hook="frontend_image_selector" eventData=$media.file hookAll=true}
|
||||
<h1>{$CONST.YOU_CHOSE|@sprintf:$media.file.realname}</h1>
|
||||
|
||||
<img src="{$media.file.imgsrc}" alt="">
|
||||
|
||||
<form id="imageForm" name="serendipity[selForm]" action="#" method="GET" onsubmit="serendipity_imageSelector_done()">
|
||||
{serendipity_hookPlugin hookAll=true hook='frontend_image_selector_hiddenfields' eventData=$media.file}
|
||||
<input name="imgThumbWidth" type="hidden" value="{$media.file.thumbWidth}">
|
||||
<input name="imgThumbHeight" type="hidden" value="{$media.file.thumbHeight}">
|
||||
<input name="imgWidth" type="hidden" value="{$media.file.dimensions_width}">
|
||||
<input name="imgHeight" type="hidden" value="{$media.file.dimensions_height}">
|
||||
<input name="imgID" type="hidden" value="{$media.imgID}">
|
||||
<input name="baseURL" type="hidden" value="{$serendipityBaseURL}">
|
||||
<input name="indexFile" type="hidden" value="{$serendipityIndexFile}">
|
||||
<input name="imgName" type="hidden" value="{$media.file.full_file}">
|
||||
<input name="thumbName" type="hidden" value="{$media.file.show_thumb}">
|
||||
<input name="hotlink" type="hidden" value="{$media.file.hotlink}">
|
||||
{if $media.htmltarget}
|
||||
<input name="serendipity[htmltarget]" type="hidden" value="{$media.htmltarget|@escape}">
|
||||
{/if}
|
||||
{if $media.filename_only}
|
||||
<input name="serendipity[filename_only]" type="hidden" value="{$media.filename_only|@escape}">
|
||||
{/if}
|
||||
{if $media.file.fast_select}
|
||||
<script>
|
||||
{serendipity_hookPlugin hookAll=true hook='frontend_image_add_filenameonly' eventData=$media.file}
|
||||
serendipity_imageSelector_done('{$media.textarea|@escape}');
|
||||
</script>
|
||||
{else}
|
||||
<fieldset id="image_size">
|
||||
<legend><span>{$CONST.IMAGE_SIZE}</span></legend>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="form_radio">
|
||||
<input id="radio_link_no" name="serendipity[linkThumbnail]" type="radio" value="no" {'linkThumbnail'|@ifRemember:'no':true}>
|
||||
<label for="radio_link_no">{$CONST.I_WANT_THUMB}</label>
|
||||
</div>
|
||||
|
||||
<div class="form_radio">
|
||||
<input id="radio_link_yes" name="serendipity[linkThumbnail]" type="radio" value="yes" {'linkThumbnail'|@ifRemember:'yes'}>
|
||||
<label for="radio_link_yes">{$CONST.I_WANT_BIG_IMAGE}</label>
|
||||
</div>
|
||||
</div>
|
||||
{serendipity_hookPlugin hookAll=true hook='frontend_image_selector_imagesize' eventData=$media.file}
|
||||
</fieldset>
|
||||
{if NOT $media.filename_only}
|
||||
<fieldset id="image_alignment">
|
||||
<legend><span>{$CONST.IMAGE_ALIGNMENT}</span></legend>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="form_radio">
|
||||
<input id="image_align_top" name="serendipity[align]" {'align'|@ifRemember:''} type="radio" value="">
|
||||
<label for="image_align_top"><img src="{serendipity_getFile file='img/img_align_top.png'}" alt="Top"></label> {* i18n *}
|
||||
</div>
|
||||
|
||||
<div class="form_radio">
|
||||
<input id="image_align_left" name="serendipity[align]" {'align'|@ifRemember:'left':true} type="radio" value="left">
|
||||
<label for="image_align_left"><img src="{serendipity_getFile file='img/img_align_left.png'}" alt="Left"></label> {* i18n *}
|
||||
</div>
|
||||
|
||||
<div class="form_radio">
|
||||
<input id="image_align_right" name="serendipity[align]" {'align'|@ifRemember:'right'} type="radio" value="right">
|
||||
<label for="image_align_right"><img src="{serendipity_getFile file='img/img_align_right.png'}" alt="Right"></label> {* i18n *}
|
||||
</div>
|
||||
</div>
|
||||
{serendipity_hookPlugin hookAll=true hook='frontend_image_selector_imagealign' eventData=$media.file}
|
||||
</fieldset>
|
||||
|
||||
<fieldset id="image_as_link">
|
||||
<legend><span>{$CONST.IMAGE_AS_A_LINK}</span></legend>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="form_radio">
|
||||
<input id="radio_islink_yes" name="serendipity[isLink]" type="radio" value="yes" {'isLink'|@ifRemember:'yes':true}>
|
||||
<label for="radio_islink_yes">{$CONST.I_WANT_NO_LINK}</label>
|
||||
</div>
|
||||
|
||||
<div class="form_radio">
|
||||
<input id="radio_islink_no" name="serendipity[isLink]" type="radio" value="no" {'isLink'|@ifRemember:'no'}>
|
||||
<label for="radio_islink_no">{$CONST.I_WANT_IT_TO_LINK}</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form_field">
|
||||
{* Could use input[type=url], but does that handle local URLs as well? Hm. *}
|
||||
{if $media.file.hotlink}
|
||||
<input name="serendipity[url]" type="text" value="{$media.file.path}">
|
||||
{else}
|
||||
{serendipity_hookPlugin hookAll=true hook='frontend_image_selector_link_url' eventData=$media.file.links}
|
||||
<input name="serendipity[url]" type="text" value="{$media.file.links.imagelinkurl}">
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<div class="form_select">
|
||||
<label id="select_image_target">{$CONST.MEDIA_TARGET}</label>
|
||||
<select id="select_image_target" name="serendipity[target]">
|
||||
<option value="none" {'target'|@ifRemember:'none':false:'selected'}>{$CONST.NONE}</option>
|
||||
<option value="js" {'target'|@ifRemember:'js':false:'selected'}>{$CONST.MEDIA_TARGET_JS}</option>
|
||||
<option value="plugin" {'target'|@ifRemember:'plugin':false:'selected'}>{$CONST.MEDIA_ENTRY}</option>
|
||||
<option value="_blank" {'target'|@ifRemember:'_blank':false:'selected'}>{$CONST.MEDIA_TARGET_BLANK}</option>
|
||||
</select>
|
||||
{serendipity_hookPlugin hookAll=true hook='frontend_image_selector_imagelink2' eventData=$media.file}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div id="image_comment" class="form_area">
|
||||
<label for="serendipity_imagecomment">{$CONST.COMMENT}</label>
|
||||
<textarea id="serendipity_imagecomment" name="serendipity[imagecomment]" rows="5">{$media.file.props.base_property.COMMENT1|@escape}</textarea>
|
||||
{serendipity_hookPlugin hookAll=true hook='frontend_image_selector_imagecomment' eventData=$media.file}
|
||||
</div>
|
||||
|
||||
<div id="image_alttext" class="form_field">
|
||||
<label for="serendipity_alt">{$CONST.MEDIA_ALT}</label>
|
||||
<input id="serendipity_alt" name="serendipity[alt]" type="text" value="{$media.file.props.base_property.ALT|@escape}">
|
||||
{serendipity_hookPlugin hookAll=true hook='frontend_image_selector_alt' eventData=$media.file}
|
||||
</div>
|
||||
|
||||
<div id="image_title" class="form_field">
|
||||
<label for="serendipity_title">{$CONST.MEDIA_TITLE}</label>
|
||||
<input id="serendipity_title" name="serendipity[title]" type="text" value="{$media.file.props.base_property.TITLE|@escape}">
|
||||
{serendipity_hookPlugin hookAll=true hook='frontend_image_selector_title' eventData=$media.file}
|
||||
</div>
|
||||
{/if}
|
||||
{serendipity_hookPlugin hookAll=true hook='frontend_image_selector_more' eventData=$media.file}
|
||||
<div class="form_buttons">
|
||||
<input type="button" value="{$CONST.BACK}" onclick="history.go(-1);">
|
||||
<input type="button" value="{$CONST.DONE}" onclick="rememberOptions(); {$media.file.origfinishJSFunction}">
|
||||
{serendipity_hookPlugin hookAll=true hook='frontend_image_selector_submit' eventData=$media.file}
|
||||
</div>
|
||||
{/if}
|
||||
</form>
|
||||
{else}
|
||||
{if $media.filename_only}
|
||||
<script>
|
||||
{serendipity_hookPlugin hookAll=true hook='frontend_image_add_filenameonly' eventData=$media}
|
||||
parent.self.opener.serendipity_imageSelector_addToElement('{$media.file.full_file|escape}', '{$media.htmltarget|@escape}');
|
||||
parent.self.close();
|
||||
</script>
|
||||
{else}
|
||||
<script>
|
||||
block = '<a class="block_level opens_window" href="{$media.file.full_file}" title="{$media.file.realname|@escape}">{$media.file.realname|@escape}</a>';
|
||||
{serendipity_hookPlugin hookAll=true hook='frontend_image_add_unknown' eventData=$media}
|
||||
if (parent.self.opener.editorref) {ldelim}
|
||||
parent.self.opener.editorref.surroundHTML(block, '');
|
||||
{rdelim} else {ldelim}
|
||||
parent.self.opener.serendipity_imageSelector_addToBody(block, '{$media.textarea}');
|
||||
{rdelim}
|
||||
parent.self.close();
|
||||
</script>
|
||||
{/if}
|
||||
{/if}
|
||||
{/if}
|
||||
{elseif $media.case == 'tree'}
|
||||
<div id="content">
|
||||
<form name="mainForm" action="javscript:;">
|
||||
<div class="newsItem">
|
||||
<div id="expandcontractdiv">
|
||||
<a href="javascript:treeToggleAll()">{$CONST.TOGGLE_ALL}</a>
|
||||
</div>
|
||||
<div id="treeDiv1"></div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div id="footerContainer">
|
||||
<div id="footer">
|
||||
<a id="newdirlink" target="media" href="{$serendipityHTTPPath}serendipity_admin_image_selector.php?serendipity[step]=directoryCreate">{$CONST.WORD_NEW}</a>
|
||||
<a id="managedirlink" target="media" href="{$serendipityHTTPPath}serendipity_admin_image_selector.php?serendipity[step]=default&serendipity[adminModule]=images&serendipity[adminAction]=directorySelect">{$CONST.MANAGE_DIRECTORIES}</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var tree;
|
||||
var nodes = new Array();
|
||||
var nodeIndex;
|
||||
var coreNode = '';
|
||||
var last_path = '';
|
||||
var last_node = new Array();
|
||||
var baseurl = '{$serendipityHTTPPath}serendipity_admin_image_selector.php?{$media.GET_STRING}&serendipity[step]=default&serendipity[only_path]=';
|
||||
var basenewdirurl = '{$serendipityHTTPPath}serendipity_admin_image_selector.php?{$media.GET_STRING}&serendipity[step]=directoryCreate&&serendipity[only_path]=';
|
||||
|
||||
function treeInit() {ldelim}
|
||||
tree = new YAHOO.widget.TreeView("treeDiv1");
|
||||
tree.onExpand = function(node) {ldelim}
|
||||
document.getElementById('newdirlink').href = basenewdirurl + node.data.relpath;
|
||||
{rdelim};
|
||||
|
||||
coreNode = new YAHOO.widget.TextNode("{$CONST.MEDIA}", tree.getRoot(), false);
|
||||
coreNode.href = baseurl;
|
||||
coreNode.target = 'media';
|
||||
coreNode.expanded = true;
|
||||
{foreach from=$media.paths item="item" key="id"}
|
||||
mydir = {ldelim} id: "{$id}", label: "{$item.name}", target : "media", href: baseurl + "{$item.relpath}", relpath: "{$item.relpath}" {rdelim};
|
||||
{if $item.depth == 1}
|
||||
tmpNode = new YAHOO.widget.TextNode(mydir, coreNode, false);
|
||||
{else}
|
||||
if (last_node[{$item.depth}-1]) {ldelim}
|
||||
tmpNode = new YAHOO.widget.TextNode(mydir, last_node[{$item.depth} - 1], false);
|
||||
{rdelim} else {ldelim}
|
||||
tmpNode = new YAHOO.widget.TextNode(mydir, coreNode, false);
|
||||
{rdelim}
|
||||
{/if}
|
||||
last_node[{$item.depth}] = tmpNode;
|
||||
{/foreach}
|
||||
tree.draw();
|
||||
{rdelim}
|
||||
|
||||
addLoadEvent(treeInit);
|
||||
</script>
|
||||
{/if}
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
{/if}
|
57
templates/2k11/admin/media_imgedit.tpl
Normal file
@ -0,0 +1,57 @@
|
||||
{* HTML5: Yes *}
|
||||
{* jQuery: No *}
|
||||
|
||||
{* Erm, why isn't this localized at all? o_O *}
|
||||
<div id="imgedit" class="clearfix">
|
||||
<form method="post" action="{$imgedit.my_url}" onsubmit="imgedit_getCoordinates()">
|
||||
<input id="area_orientation" name="area_orientation" type="hidden" value="{$imgedit.area_orientation}">
|
||||
<input id="zoombox_factor" name="zoombox_factor" type="hidden" value="{$imgedit.zoombox_factor}">
|
||||
<input id="zoombox_x" name="zoombox_x" type="hidden" value="{$imgedit.zoombox_x}">
|
||||
<input id="zoombox_y" name="zoombox_y" type="hidden" value="{$imgedit.zoombox_y}">
|
||||
<input id="real_img_width" name="real_img_width" type="hidden" value="{$imgedit.real_img_width}">
|
||||
<input id="real_img_height" name="real_img_height" type="hidden" value="{$imgedit.real_img_height}">
|
||||
<input id="autoguess_clicked" name="autoguess_clicked" type="hidden" value="{$imgedit.autoguess_clicked}">
|
||||
<div id="cropbuttons" class="clearfix">
|
||||
<input name="crop" type="submit" value="Crop this image! I'm serious!">
|
||||
|
||||
<div id="scaletext">
|
||||
<span>OR</span> <input name="scale" type="submit" onclick="return imgedit_autoSize('true');" value="Just get that crap somehow inside, will ya? (Equals to: Fit image to largest side)">
|
||||
</div>
|
||||
</div>
|
||||
{* There might be better (HTML5/jQuery) widgets for this, but let's keep it for now. *}
|
||||
<div id="zoom" class="clearfix">
|
||||
<input id="action_enlarge" name="action[enlarge]" type="submit" onclick="return imgedit_zoom(-2); this.blur();" value="Enlarge">
|
||||
|
||||
<script>document.write('<div id="zoomslider"><img id="zoombutton" src="{serendipity_getFile file="admin/img/imgedit_slider.gif"}" width="25" height="5" alt="[Slider]"></div>');</script>
|
||||
|
||||
<noscript>
|
||||
<div class="zoomfactor">Zoom: {$imgedit.zoombox_factor}x</div>
|
||||
</noscript>
|
||||
|
||||
<input id="action_reduce" name="action[reduce]" type="submit" onclick="return imgedit_zoom(2); this.blur();" value="Reduce">
|
||||
|
||||
<input id="action_autoscale" name="autoscale" type="submit" onclick="return imgedit_autoSize('false');" value="Best Guess">
|
||||
<!-- BEGIN ORIENTATION_AVAILABLE -->
|
||||
<input id="action_orientation" name="toggle_area_orientation" type="image" onclick="return imgedit_areaOrientation();" title="Toggle Orientation" alt="Toggle Orientation" src="{serendipity_getFile file="admin/img/imgedit_orientation.gif"}">
|
||||
<!-- END ORIENTATION_AVAILABLE -->
|
||||
<noscript>
|
||||
<input id="action_move_up" class="action_move" name="action[moveup]" type="submit" onclick="this.blur();" value="↑">
|
||||
<input id="action_move_left" class="action_move" name="action[moveleft]" type="submit" onclick="this.blur();" value="←">
|
||||
<input id="action_move_right" class="action_move" name="action[moveright]" type="submit" onclick="this.blur();" value="→">
|
||||
<input id="action_move_down" class="action_move" name="action[movedown]" type="submit" onclick="this.blur();" value="↓">
|
||||
|
||||
<span id="action_moveby">Move by <input name="move_increase" type="text" value="{$imgedit.move_increase}">px</span>
|
||||
</noscript>
|
||||
</div>
|
||||
|
||||
<div id="outer" class="clearfix">
|
||||
<img id="backdrop" src="{$imgedit.http_img_name}" alt="Backdrop" width="{$imgedit.img_width}" height="{$imgedit.img_height}">
|
||||
<img id="overlay" src="{$imgedit.http_img_name}" alt="Overlay" width="{$imgedit.img_width}" height="{$imgedit.img_height}">
|
||||
<img id="harea" src="{$imgedit.harea_img_name}" alt="[Crop area]" width="{$imgedit.harea_width}" height="{$imgedit.harea_height}">
|
||||
<img id="varea" src="{$imgedit.varea_img_name}" alt="[Crop area]" width="{$imgedit.varea_width}" height="{$imgedit.varea_height}">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<script>imgedit_init({$imgedit.zoombox_width}, {$imgedit.area_border}, {$imgedit.zoombox_x}, {$imgedit.zoombox_y}, '{$imgedit.area_orientation}');</script>
|
||||
</body>
|
||||
</html>
|
41
templates/2k11/admin/media_imgedit_done.tpl
Normal file
@ -0,0 +1,41 @@
|
||||
{* HTML5: Yes *}
|
||||
{* jQuery: NN *}
|
||||
|
||||
{* Erm, why isn't this localized at all? o_O *}
|
||||
<div id="fs_info" class="info">
|
||||
{* Check if h3 is the proper level. *}
|
||||
<h3>Output Information</h3>
|
||||
|
||||
<p>Your image was {$imgedit.real_img_width} x {$imgedit.real_img_height} pixels (Orientation: {$imgedit.area_orientation}).</p>
|
||||
|
||||
<p>Depending on your zoom of {$imgedit.zoombox_factor}x, it was {$imgedit.zoom_img_width} x {$imgedit.zoom_img_height} pixels.</p>
|
||||
|
||||
<p>It got scaled to {$imgedit.img_width} x {$imgedit.img_height} pixels.</p>
|
||||
|
||||
<p>Then a rectangle starting from ({$imgedit.slice_from_x}|{$imgedit.slice_from_y}) to ({$imgedit.slice_to_x}|{$imgedit.slice_to_y}) has been sliced from it.</p>
|
||||
{if $imgedit.image_cut}
|
||||
<p>The image has been correctly cropped and only the part inside of the rectangle is going to be shown.</p>
|
||||
{/if}
|
||||
{if $imgedit.image_no_cut}
|
||||
<p>Because the source dimensions were smaller than the destination dimensions, the image does not fill up the complete space.</p>
|
||||
{/if}
|
||||
{if $imgedit.image_error}
|
||||
<span class="msg_error">However, there were errors processing your image.</span>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<div id="fs_crop" class="info">
|
||||
<h3>Image Result</h3>
|
||||
|
||||
<h4>Cropped Image:<h4>
|
||||
|
||||
<div id="outer">
|
||||
<img id="cropimage" class="crop" src="{$imgedit.http_img_name}?{$imgedit.refresh_line}" width="{$imgedit.img_width}" height="{$imgedit.img_height}" alt="Cropped image">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="info">
|
||||
<h3>Play it again, Sam</h3>
|
||||
|
||||
<p>That was great! So, please once more, with feeling!</p>
|
||||
</div>
|
159
templates/2k11/admin/media_items.tpl
Normal file
@ -0,0 +1,159 @@
|
||||
{* HTML5: Yes *}
|
||||
{* jQuery: No *}
|
||||
|
||||
{foreach from=$media.files item="file" name="mediafiles" key="mediakey"}
|
||||
{if NOT $media.manage}
|
||||
<div class="media_file_preview">
|
||||
{$file.preview}
|
||||
{if $file.orderkey != ''}
|
||||
<span>{$file.orderkey|@escape}</span>
|
||||
{/if}
|
||||
</div>
|
||||
{else}
|
||||
<article class="media_file">
|
||||
<header>
|
||||
<h3>{$file.realname}{if $file.orderkey != ''}: {$file.orderkey|@escape}{/if}</h3>
|
||||
{if $file.authorid != 0}<span class="author">{$file.authorname}</span>{/if}
|
||||
</header>
|
||||
|
||||
<div class="media_file_preview">
|
||||
{$file.preview}
|
||||
</div>
|
||||
{if $file.is_editable}
|
||||
<ul class="media_file_actions plainList">
|
||||
<li><a id="media_fullsize" href="#" onclick="F1 = window.open('{if $file.hotlink}{$file.path}{else}{$file.full_file}{/if}', 'Zoom', 'height={$file.popupHeight},width={$file.popupWidth},top='+ (screen.height-{$file.popupHeight})/2 +',left='+ (screen.width-{$file.popupWidth})/2 +',toolbar=no,menubar=no,location=no,resize=1,resizable=1{if NOT $file.is_image},scrollbars=yes{/if}');">{$CONST.MEDIA_FULLSIZE}</a></li>
|
||||
<li><a id="media_rename" href="#" onclick="rename('{$file.id}', '{$file.name|escape:javascript}')">{$CONST.MEDIA_RENAME}</a></li>
|
||||
{if $file.is_image AND NOT $file.hotlink}
|
||||
<li><a id="media_resize" href="#" onclick="location.href='?serendipity[adminModule]=images&serendipity[adminAction]=scaleSelect&serendipity[fid]={$file.id}';">{$CONST.IMAGE_RESIZE}</a></li>
|
||||
{/if}
|
||||
{if $file.is_image AND NOT $file.hotlink}
|
||||
<li><a id="media_rotate_left" href="?serendipity[adminModule]=images&serendipity[adminAction]=rotateCCW&serendipity[fid]={$file.id}">{$CONST.IMAGE_ROTATE_LEFT}</a></li>
|
||||
{/if}
|
||||
{if $file.is_image AND NOT $file.hotlink}
|
||||
<li><a id="media_rotate_right" href="?serendipity[adminModule]=images&serendipity[adminAction]=rotateCW&serendipity[fid]={$file.id}">{$CONST.IMAGE_ROTATE_RIGHT}</a></li>
|
||||
{/if}
|
||||
<li><a id="media_prop" href="?serendipity[adminModule]=images&serendipity[adminAction]=properties&serendipity[fid]={$file.id}">{$CONST.MEDIA_PROP}</a></li>
|
||||
<li><a id="media_delete" href="?serendipity[adminModule]=images&serendipity[adminAction]=delete&serendipity[fid]={$file.id}">{$CONST.MEDIA_DELETE}</a></li>
|
||||
<li><input id="multidelete_image{$file.id}" name="serendipity[multiDelete][]" type="checkbox" value="{$file.id}">
|
||||
<label for="multidelete_image{$file.id}" class="visuallyhidden">Select for multidelete</label> {* i18n *}
|
||||
</li>
|
||||
</ul>
|
||||
{/if}
|
||||
<footer>
|
||||
<ul class="media_file_meta plainList">
|
||||
{if $file.hotlink}
|
||||
<li>{$file.nice_hotlink}</li>
|
||||
{else}
|
||||
{if $file.is_image}
|
||||
<li><b>{$CONST.ORIGINAL_SHORT}:</b> {$file.dimensions_width}x{$file.dimensions_height}</li>
|
||||
<li><b>{$CONST.THUMBNAIL_SHORT}:</b> {$file.dim.0}x{$file.dim.1}</li>
|
||||
{/if}
|
||||
<li>{$file.nice_size} KB</li>
|
||||
{if $file.realname != $file.diskname}
|
||||
<li>{$file.diskname}</li>
|
||||
{/if}
|
||||
{/if}
|
||||
</ul>
|
||||
</footer>
|
||||
</article>
|
||||
{/if}
|
||||
|
||||
{if NOT $media.enclose}
|
||||
<article class="media_file media_enclose_no">
|
||||
<header>
|
||||
<h3>{$file.realname}</h3>
|
||||
<span>{$file.mime}{if $file.realname != $file.diskname}, {$file.diskname}{/if}</span>
|
||||
</header>
|
||||
|
||||
<footer>
|
||||
<ul class="media_file_meta plainList">
|
||||
<li>{if $file.authorid != 0}{$CONST.POSTED_BY} {$file.authorname} {/if}{$CONST.ON} {$file.date|@formatTime:DATE_FORMAT_SHORT}</li>
|
||||
{if $file.hotlink}
|
||||
<li>{$file.nice_hotlink}</li>
|
||||
{elseif $file.is_image}
|
||||
<li><b>{$CONST.ORIGINAL_SHORT}:</b> {$file.dimensions_width}x{$file.dimensions_height}</li>
|
||||
<li><b>{$CONST.THUMBNAIL_SHORT}:</b> {$file.dim.0}x{$file.dim.1}</li>
|
||||
{/if}
|
||||
<li>{$file.nice_size} KB</li>
|
||||
</ul>
|
||||
</footer>
|
||||
|
||||
<input type="hidden" name="serendipity[mediaProperties][{$mediakey}][image_id]" value="{$file.image_id}">
|
||||
|
||||
<section class="media_file_props">
|
||||
<h4>{$CONST.MEDIA_PROP}</h4>
|
||||
{foreach from=$file.base_property key="prop_fieldname" item="prop_content"}
|
||||
<div class="form_{if $prop_content.type == 'textarea'}area{else}field{/if}">
|
||||
<label for="mediaProperty{$prop_fieldname}">{$prop_content.label}</label>
|
||||
{if $prop_content.type == 'textarea'}
|
||||
<textarea id="mediaProperty{$prop_fieldname}" name="serendipity[mediaProperties][{$mediakey}][{$prop_content.title}]" rows="5">{$prop_content.val|@escape}</textarea>
|
||||
{elseif $prop_content.type == 'readonly'}
|
||||
{$prop_content.val|@escape}
|
||||
{elseif $prop_content.type == 'input'}
|
||||
<input id="mediaProperty{$prop_fieldname}" name="serendipity[mediaProperties][{$mediakey}][{$prop_content.title}]" type="text" value="{$prop_content.val|@escape}">
|
||||
{/if}
|
||||
</div>
|
||||
{/foreach}
|
||||
{if NOT $file.hotlink}
|
||||
<div class="form_select">
|
||||
<label for="newDir{$mediakey}">{$CONST.FILTER_DIRECTORY}</label>
|
||||
<input type="hidden" name="serendipity[oldDir][{$mediakey}]" value="{$file.path|@escape}">
|
||||
<select id="newDir{$mediakey}" name="serendipity[newDir][{$mediakey}]">
|
||||
<option value=""></option>
|
||||
{foreach from=$media.paths item="folder"}
|
||||
<option {if ($file.path == $folder.relpath)}selected="selected"{/if} value="{$folder.relpath}">{' '|str_repeat:($folder.depth*2)}{$folder.name}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
{/if}
|
||||
{if $file.is_image}
|
||||
<a class="block_level opens_window" href="serendipity_admin_image_selector.php?serendipity[adminModule]=images&serendipity[adminAction]=imgedit&serendipity[fid]={$file.id}">{$CONST.EDIT}</a>
|
||||
{/if}
|
||||
</section>
|
||||
|
||||
<section class="media_file_keywords">
|
||||
<h4>{$CONST.MEDIA_KEYWORDS}</h4>
|
||||
|
||||
<ul class="plainList">
|
||||
{foreach from=$file.base_keywords key="keyword_row" item="keyword_cells"}
|
||||
{foreach from=$keyword_cells key="keyword_cell" item="keyword"}
|
||||
{if $keyword.name}
|
||||
<li><input id="mediaKeyword{$keyword.name}{$mediakey}" name="serendipity[mediaKeywords][{$mediakey}][{$keyword.name}]" type="checkbox" value="true"{if $keyword.selected} checked="checked"{/if}>
|
||||
<label for="mediaKeyword{$keyword.name}{$mediakey}">{$keyword.name}</label></li>
|
||||
{/if}
|
||||
{/foreach}
|
||||
{/foreach}
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section class="media_file_metadata">
|
||||
<h4>EXIF/IPTC/XMP</h4>
|
||||
|
||||
<dl>
|
||||
{foreach from=$file.metadata key="meta_type" item="meta_data"}
|
||||
<dt>{$meta_type}</dt>
|
||||
{if is_array($meta_data)}
|
||||
{foreach from=$meta_data key="meta_name" item="meta_value"}
|
||||
<dd class="meta_name">{$meta_name}!</dd>
|
||||
<dd class="meta_value">{if is_array($meta_value)}<pre>{$meta_value|@print_r}</pre>{else}{$meta_value|@formatTime:DATE_FORMAT_SHORT:false:$meta_name}{/if}</dd>
|
||||
{/foreach}
|
||||
{else}
|
||||
<dd>{$meta_data|@formatTime:DATE_FORMAT_SHORT:false:$meta_type}</dd>
|
||||
{/if}
|
||||
{/foreach}
|
||||
</dl>
|
||||
</section>
|
||||
{if $file.references}
|
||||
<section class="media_file_referer">
|
||||
<h4>{$CONST.REFERER}</h4>
|
||||
|
||||
<ul>
|
||||
{foreach from=$file.references item="ref"}
|
||||
<li>({$ref.name|@escape}) <a rel="nofollow" href="{$ref.link|@escape}">{$ref.link|@default:$CONST.NONE|@escape}</a></li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</section>
|
||||
{/if}
|
||||
</article>
|
||||
{/if}
|
||||
{/foreach}
|
165
templates/2k11/admin/media_pane.tpl
Normal file
@ -0,0 +1,165 @@
|
||||
{* HTML5: Yes *}
|
||||
{* jQuery: No *}
|
||||
|
||||
<script src="{serendipity_getFile file='admin/admin_scripts.js'}"></script>
|
||||
|
||||
<h2>{$CONST.FIND_MEDIA}</h2>
|
||||
|
||||
<form method="get" action="?">
|
||||
{$media.token}
|
||||
{$media.form_hidden}
|
||||
<fieldset>
|
||||
<legend><span>{$CONST.FILTERS}</span></legend>
|
||||
|
||||
<a id="toggle_filters" class="block_level" href="#" onclick="showFilters(); return false">{$CONST.FILTERS}</a>
|
||||
|
||||
<div id="media_filter" class="clearfix">
|
||||
<div id="media_filter_path" class="form_select">
|
||||
<label for="serendipity_only_path">{$CONST.FILTER_DIRECTORY}</label>
|
||||
<select id="serendipity_only_path" name="serendipity[only_path]">
|
||||
<option value="">{if NOT $media.limit_path}{$CONST.ALL_DIRECTORIES}{else}{$media.blimit_path}{/if}</option>
|
||||
{foreach from=$media.paths item="folder"}
|
||||
<option {if ($media.only_path == $media.limit_path|cat:$folder.relpath)}selected="selected"{/if} value="{$folder.relpath}">{' '|str_repeat:($folder.depth*2)}{$folder.name}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div id="media_filter_file" class="form_field">
|
||||
<label for="serendipity_only_filename">{$CONST.SORT_ORDER_NAME}</label>
|
||||
<input id="serendipity_only_filename" name="serendipity[only_filename]" type="text" value="{$media.only_filename|@escape}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="moreFilter" class="serendipity_pluginlist_section" style="height: auto; display: none">
|
||||
<div class="form_field">
|
||||
<label for="keyword_input">{$CONST.MEDIA_KEYWORDS}</label>
|
||||
<input id="keyword_input" name="serendipity[keywords]" type="text" value="{$media.keywords_selected|@escape}">
|
||||
</div>
|
||||
|
||||
<div id="keyword_list" class="clearfix">
|
||||
{foreach from=$media.keywords item="keyword"}
|
||||
<a href="#" onclick="AddKeyword('{$keyword|@escape}'); return false">{$keyword|@escape}</a>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
{foreach from=$media.sort_order item="so_val" key="so_key"}
|
||||
{if $so_val.type == 'date' || $so_val.type == 'intrange'}
|
||||
<fieldset>
|
||||
<legend class="visuallyhidden"><span>Sort</span></legend> {* i18n *}
|
||||
{else}
|
||||
<div class="form_{if $so_val.type == 'authors'}select{else}field{/if}">
|
||||
<label for="serendipity_filter_{$so_key}">{$so_val.desc}</label>
|
||||
{/if}
|
||||
{if $so_val.type == 'date'}
|
||||
{if $media.filter[$so_key].from != '' OR $media.filter[$so_key].to != ''}{assign var="show_filter" value=$media.filter[$so_key]}{/if}
|
||||
<div class="form_field">
|
||||
{* Core might need to be adapted to input[type=date] *}
|
||||
<label for="serendipity_filter_{$so_key}_from" class="visuallyhidden">From</label> {* i18n *}
|
||||
<input id="serendipity_filter_{$so_key}_from" name="serendipity[filter][{$so_key}][from]" type="date" value="{$media.filter[$so_key].from|@escape}">
|
||||
-
|
||||
<label for="serendipity_filter_{$so_key}_to" class="visuallyhidden">To</label> {* i18n *}
|
||||
<input id="serendipity_filter_{$so_key}_to" name="serendipity[filter][{$so_key}][to]" type="date" value="{$media.filter[$so_key].to|@escape}">
|
||||
{* <span class="input_hint">(DD.MM.YYYY | YYYY-MM-DD | MM/DD/YYYY)</span> *}
|
||||
</div>
|
||||
{elseif $so_val.type == 'intrange'}
|
||||
{if $media.filter[$so_key].from != '' OR $media.filter[$so_key].to != ''}{assign var="show_filter" value=$media.filter[$so_key]}{/if}
|
||||
<div class="form_field">
|
||||
{* Could also use input[type=range]; unsure if that's actually useful (yet) *}
|
||||
<label for="serendipity_filter_{$so_key}_from" class="visuallyhidden">From</label> {* i18n *}
|
||||
<input id="serendipity_filter_{$so_key}_from" name="serendipity[filter][{$so_key}][from]" type="text" value="{$media.filter[$so_key].from|@escape}">
|
||||
-
|
||||
<label for="serendipity_filter_{$so_key}_to" class="visuallyhidden">To</label> {* i18n *}
|
||||
<input id="serendipity_filter_{$so_key}_to" name="serendipity[filter][{$so_key}][to]" type="text" value="{$media.filter[$so_key].to|@escape}">
|
||||
</div>
|
||||
{elseif $so_val.type == 'authors'}
|
||||
{if $media.filter[$so_key] != ''}{assign var="show_filter" value=$media.filter[$so_key]}{/if}
|
||||
<select id="serendipity_filter_{$so_key}" name="serendipity[filter][{$so_key}]">
|
||||
<option value="">{$CONST.ALL_AUTHORS}</option>
|
||||
{foreach from=$media.authors item="media_author"}
|
||||
<option value="{$media_author.authorid}" {if $media.filter[$so_key] == $media_author.authorid}selected="selected"{/if}>{$media_author.realname|@escape}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
{else}
|
||||
{if $media.filter[$so_key] != ''}{assign var="show_filter" value=$media.filter[$so_key]}{/if}
|
||||
<input id="serendipity_filter_{$so_key}" name="serendipity[filter][{$so_key}]" type="text" value="{$media.filter[$so_key]|@escape}">
|
||||
{/if}
|
||||
{if $so_val.type == 'date' || $so_val.type == 'intrange'}
|
||||
</fieldset>
|
||||
{else}
|
||||
</div>
|
||||
{/if}
|
||||
{/foreach}
|
||||
</div>
|
||||
</fieldset>
|
||||
{if $media.keywords_selected != '' OR $show_filter}
|
||||
<script>showFilters();</script>
|
||||
{/if}
|
||||
<fieldset>
|
||||
<legend><span>{$CONST.SORT_ORDER}</span></legend>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="form_select">
|
||||
<label for="serendipity_sortorder_order">{$CONST.SORT_BY}</label>
|
||||
|
||||
<select id="serendipity_sortorder_order" name="serendipity[sortorder][order]">
|
||||
{foreach from=$media.sort_order item="so_val" key="so_key"}
|
||||
<option value="{$so_key}" {if $media.sortorder.order == $so_key}selected="selected"{/if}>{$so_val.desc}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form_select">
|
||||
<label for="serendipity_sortorder_ordermode">{$CONST.SORT_ORDER}</label>
|
||||
|
||||
<select id="serendipity_sortorder_ordermode" name="serendipity[sortorder][ordermode]">
|
||||
<option value="DESC" {if $media.sortorder.ordermode == 'DESC'}selected="selected"{/if}>{$CONST.SORT_ORDER_DESC}</option>
|
||||
<option value="ASC" {if $media.sortorder.ordermode == 'ASC'}selected="selected"{/if}>{$CONST.SORT_ORDER_ASC}</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form_select">
|
||||
<label for="serendipity_sortorder_perpage">{$CONST.FILES_PER_PAGE}</label>
|
||||
|
||||
<select id="serendipity_sortorder_perpage" name="serendipity[sortorder][perpage]">
|
||||
{foreach from=$media.sort_row_interval item="so_val"}
|
||||
<option value="{$so_val}" {if $media.perPage == $so_val}selected="selected"{/if}>{$so_val}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
{if $media.show_upload}
|
||||
<input type="button" value="{$CONST.ADD_MEDIA|@escape}" onclick="location.href='{$media.url}&serendipity[adminAction]=addSelect&serendipity[only_path]={$media.only_path|escape:url}'; return false">
|
||||
{/if}
|
||||
<input name="go" type="submit" value="{$CONST.GO}">
|
||||
</form>
|
||||
{if $media.nr_files < 1}
|
||||
<span class="msg_notice">{$CONST.NO_IMAGES_FOUND}</span>
|
||||
{else}
|
||||
{if $smarty.get.serendipity.adminModule == 'media'}
|
||||
<form id="formMultiDelete" name="formMultiDelete" action="?" method="post">
|
||||
{$media.token}
|
||||
<input name="serendipity[action]" type="hidden" value="admin">
|
||||
<input name="serendipity[adminModule]" type="hidden" value="media">
|
||||
<input name="serendipity[adminAction]" type="hidden" value="multidelete">
|
||||
{/if}
|
||||
<div class="clearfix media_pane">
|
||||
<ul class="clearfix pagination plainList">
|
||||
<li>{if $media.page != 1 AND $media.page <= $media.pages}<a href="{$media.linkPrevious}">{$CONST.PREVIOUS}</a>{else}<span class="visuallyhidden">{$CONST.NO_ENTRIES_TO_PRINT}</span>{/if}</li>
|
||||
<li>{if $media.page != $media.pages}<a href="{$media.linkNext}">{$CONST.NEXT}</a>{else}<span class="visuallyhidden">{$CONST.NO_ENTRIES_TO_PRINT}</span>{/if}</li>
|
||||
</ul>
|
||||
{$MEDIA_ITEMS}
|
||||
{* Should be cloned using JS *}
|
||||
<ul class="clearfix pagination plainList">
|
||||
<li>{if $media.page != 1 AND $media.page <= $media.pages}<a href="{$media.linkPrevious}">{$CONST.PREVIOUS}</a>{else}<span class="visuallyhidden">{$CONST.NO_ENTRIES_TO_PRINT}</span>{/if}</li>
|
||||
<li>{if $media.page != $media.pages}<a href="{$media.linkNext}">{$CONST.NEXT}</a>{else}<span class="visuallyhidden">{$CONST.NO_ENTRIES_TO_PRINT}</span>{/if}</li>
|
||||
</ul>
|
||||
</div>
|
||||
{if $smarty.get.serendipity.adminModule == 'media'}
|
||||
<div class="form_buttons">
|
||||
<input name="toggle" type="button" value="{$CONST.INVERT_SELECTIONS}" onclick="invertSelection()">
|
||||
<input name="toggle" type="submit" value="{$CONST.DELETE_SELECTED_ENTRIES}">
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
||||
{/if}
|
21
templates/2k11/admin/media_properties.tpl
Normal file
@ -0,0 +1,21 @@
|
||||
{* HTML5: Yes *}
|
||||
{* jQuery: NN *}
|
||||
|
||||
{if $media.is_edit}
|
||||
<form id="mediaPropertyForm" action="?" method="POST">
|
||||
<div>
|
||||
{$media.token}
|
||||
<input name="serendipity[action]" type="hidden" value="admin">
|
||||
<input name="serendipity[adminModule]" type="hidden" value="images">
|
||||
<input name="serendipity[adminAction]" type="hidden" value="add">
|
||||
<input name="serendipity[adminSubAction]" type="hidden" value="properties">
|
||||
{$media.editform_hidden}
|
||||
{/if}
|
||||
|
||||
{$MEDIA_ITEMS}
|
||||
|
||||
{if $media.is_edit}
|
||||
<input name="submit" type="submit" value="{$CONST.GO}">
|
||||
</div>
|
||||
</form>
|
||||
{/if}
|
91
templates/2k11/admin/media_showitem.tpl
Normal file
@ -0,0 +1,91 @@
|
||||
{* HTML5: Yes *}
|
||||
{* jQuery: NN *}
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="{$CONST.LANG_CHARSET}">
|
||||
<title>{$media.file.props.base_property.TITLE|@default:$media.file.realname}</title>
|
||||
<link rel="stylesheet" href="{$media.css}">
|
||||
<link rel="stylesheet" href="{$media.css_front}">
|
||||
</head>
|
||||
<body id="{$media.body_id}">
|
||||
{if $perm_denied}
|
||||
<span class="msg_error">{$CONST.PERM_DENIED}</span>
|
||||
{else}
|
||||
<div class="clearfix">
|
||||
<h2>{$media.file.realname}</h2>
|
||||
|
||||
<h3><a href="#">{$media.file.props.base_property.TITLE|@default:''}</a></h3>
|
||||
|
||||
<div class="media_show">
|
||||
{if $media.file.is_image}
|
||||
<img src="{$media.file.full_file}" alt="{$media.file.realname}">
|
||||
{else}
|
||||
<a href="{$media.file.full_file}">{$media.file.realname} ({$media.file.displaymime})</a>
|
||||
{/if}
|
||||
<a href="{$media.from|@escape}" title="{$CONST.BACK_TO_BLOG}">{$CONST.BACK_TO_BLOG}</a>
|
||||
</div>
|
||||
{if $media.file.base_property}
|
||||
<div class="media_props_base">
|
||||
<h4>{$CONST.MEDIA_PROP}</h4>
|
||||
|
||||
<dl>
|
||||
{foreach from=$media.file.base_property key="prop_fieldname" item="prop_content"}
|
||||
{if $prop_content.val}
|
||||
<dt>{$prop_content.label}</dt>
|
||||
<dd>{$prop_content.val|@escape}</dd>
|
||||
{/if}
|
||||
{/foreach}
|
||||
</dl>
|
||||
</div>
|
||||
{/if}
|
||||
{if $media.file.props.base_keyword}
|
||||
<div class="media_props_keywords">
|
||||
<h4>{$CONST.MEDIA_KEYWORDS}</h4>
|
||||
|
||||
<div class="media_keywords">
|
||||
{foreach from=$media.file.props.base_keyword key="prop_fieldname" item="prop_content"}
|
||||
<span>{$prop_fieldname|@escape}</span>
|
||||
{/foreach}
|
||||
<div>
|
||||
</div>
|
||||
{/if}
|
||||
{if $media.file.props.base_metadata}
|
||||
<div class="media_props_metadata">
|
||||
<h4>EXIF/IPTC/XMP</h4>
|
||||
|
||||
<dl>
|
||||
{foreach from=$media.file.props.base_metadata key="meta_type" item="meta_data"}
|
||||
<dt>{$meta_type}</dt>
|
||||
{if is_array($meta_data)}
|
||||
{foreach from=$meta_data key="meta_name" item="meta_value"}
|
||||
<dd class="meta_name">{$meta_name}</dd>
|
||||
<dd class="meta_value">
|
||||
{if is_array($meta_value)}
|
||||
<pre>{$meta_value|@print_r}</pre>
|
||||
{else}
|
||||
<span>{$meta_value|@formatTime:DATE_FORMAT_SHORT:false:$meta_name}</span>
|
||||
{/if}</dd>
|
||||
{/foreach}
|
||||
{else}
|
||||
<dd>{$meta_data|@formatTime:DATE_FORMAT_SHORT:false:$meta_type}</dd>
|
||||
{/if}
|
||||
{/foreach}
|
||||
</dl>
|
||||
</div>
|
||||
{/if}
|
||||
{if $media.file.references}
|
||||
<div class="media_props_filerefs">
|
||||
<h4>{$CONST.REFERER}</h4>
|
||||
|
||||
<ul>
|
||||
{foreach from=$media.file.references item="ref"}
|
||||
<li>({$ref.name|@escape}) <a rel="nofollow" href="{$ref.link|@escape}">{$ref.link|@default:$CONST.NONE|@escape}</a></li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
</body>
|
||||
</html>
|
259
templates/2k11/admin/media_upload.tpl
Normal file
@ -0,0 +1,259 @@
|
||||
{* HTML5: No *}
|
||||
{* jQuery: No *}
|
||||
|
||||
<div class="image_add_form">{$CONST.ADD_MEDIA_BLAHBLAH}</div>
|
||||
|
||||
<script>
|
||||
// Function prototype inspired by http://molily.de/javascript-nodelist
|
||||
function showNodes(n) {ldelim}
|
||||
var html;
|
||||
html = '<!--nodeset--><li>';
|
||||
|
||||
switch (n.nodeType) {ldelim}
|
||||
case 1:
|
||||
html += 'Type is <em>' + n.nodeName + '<\/em>';
|
||||
if (n.hasChildNodes()) {ldelim}
|
||||
ausgabe += ' - childNodes: ' + n.childNodes.length;
|
||||
{rdelim}
|
||||
break;
|
||||
|
||||
case 3:
|
||||
var nval = n.nodeValue.replace(/</g, '<').replace(/\n/g, '\\n');
|
||||
html += 'Content: <strong>' + nval + '<\/strong>';
|
||||
break;
|
||||
|
||||
case 8:
|
||||
var nval = n.nodeValue.replace(/</g, '<').replace(/\n/g, '\\n');
|
||||
html += 'Hidden: <em>' + nval + '<\/em>';
|
||||
break;
|
||||
|
||||
default:
|
||||
html += 'Type is ' + n.nodeType + ', Content is <strong>' + n.nodeValue + '<\/strong>';
|
||||
{rdelim}
|
||||
|
||||
if (n.hasChildNodes()) {ldelim}
|
||||
html += '\n<ol>\n';
|
||||
for (i=0; i < n.childNodes.length; i++) {ldelim}
|
||||
j = n.childNodes[i];
|
||||
html += showNodes(j);
|
||||
{rdelim}
|
||||
html += '</ol>\n';
|
||||
{rdelim}
|
||||
html += '</li>\n';
|
||||
|
||||
return html;
|
||||
{rdelim}
|
||||
|
||||
function getfilename(value) {ldelim}
|
||||
re = /^.+[\/\\]+?(.+)$/;
|
||||
return value.replace(re, "$1");
|
||||
{rdelim}
|
||||
|
||||
isFileUpload = true;
|
||||
function hideForeign() {ldelim}
|
||||
document.getElementById('foreign_upload').style.display = 'none';
|
||||
document.getElementById('imageurl').value = '';
|
||||
isFileUpload = false;
|
||||
{rdelim}
|
||||
|
||||
var fieldcount = 1;
|
||||
function addField() {ldelim}
|
||||
fieldcount++;
|
||||
|
||||
fields = document.getElementById('upload_template').cloneNode(true);
|
||||
fields.id = 'upload_form_' + fieldcount;
|
||||
fields.style.display = 'block';
|
||||
|
||||
// Get the DOM outline be uncommenting this:
|
||||
//document.getElementById('debug').innerHTML = showNodes(fields);
|
||||
|
||||
// garvin: This gets a bit weird. Opera, Mozilla and IE all have their own numbering.
|
||||
// We cannot operate on "ID" basis, since a unique ID is not yet set before instancing.
|
||||
if (fields.childNodes[0].nodeValue == null) {ldelim}
|
||||
// This is Internet Explorer, it does not have a linebreak as first element.
|
||||
userfile = fields.childNodes[0].childNodes[0].childNodes[0].childNodes[1].childNodes[0];
|
||||
targetfilename = fields.childNodes[0].childNodes[0].childNodes[2].childNodes[1].childNodes[0];
|
||||
targetdir = fields.childNodes[0].childNodes[0].childNodes[3].childNodes[1].childNodes[0];
|
||||
columncount = fields.childNodes[1].childNodes[0];
|
||||
{rdelim} else {ldelim}
|
||||
// We have a browser which has \n's as their own nodes. Don't ask me. Now let's check if it's Opera or Mozilla.
|
||||
if (fields.childNodes[1].childNodes[0].nodeValue == null) {ldelim}
|
||||
// This is Opera.
|
||||
userfile = fields.childNodes[1].childNodes[0].childNodes[0].childNodes[1].childNodes[0];
|
||||
targetfilename = fields.childNodes[1].childNodes[0].childNodes[2].childNodes[1].childNodes[0];
|
||||
targetdir = fields.childNodes[1].childNodes[0].childNodes[3].childNodes[1].childNodes[0];
|
||||
columncount = fields.childNodes[3].childNodes[0];
|
||||
{rdelim} else if (fields.childNodes[1].childNodes[1].childNodes[0].childNodes[3] == null) {ldelim}
|
||||
// This is Safari.
|
||||
userfile = fields.childNodes[1].childNodes[1].childNodes[0].childNodes[1].childNodes[0];
|
||||
targetfilename = fields.childNodes[1].childNodes[1].childNodes[2].childNodes[1].childNodes[0];
|
||||
targetdir = fields.childNodes[1].childNodes[1].childNodes[3].childNodes[1].childNodes[0];
|
||||
columncount = fields.childNodes[3].childNodes[0];
|
||||
{rdelim} else {ldelim}
|
||||
// This is Mozilla.
|
||||
userfile = fields.childNodes[1].childNodes[1].childNodes[0].childNodes[3].childNodes[0];
|
||||
targetfilename = fields.childNodes[1].childNodes[1].childNodes[4].childNodes[3].childNodes[0];
|
||||
targetdir = fields.childNodes[1].childNodes[1].childNodes[6].childNodes[3].childNodes[0];
|
||||
columncount = fields.childNodes[3].childNodes[0];
|
||||
{rdelim}
|
||||
{rdelim}
|
||||
|
||||
userfile.id = 'userfile_' + fieldcount;
|
||||
userfile.name = 'serendipity[userfile][' + fieldcount + ']';
|
||||
|
||||
targetfilename.id = 'target_filename_' + fieldcount;
|
||||
targetfilename.name = 'serendipity[target_filename][' + fieldcount + ']';
|
||||
|
||||
targetdir.id = 'target_directory_' + fieldcount;
|
||||
targetdir.name = 'serendipity[target_directory][' + fieldcount + ']';
|
||||
|
||||
columncount.id = 'column_count_' + fieldcount;
|
||||
columncount.name = 'serendipity[column_count][' + fieldcount + ']';
|
||||
|
||||
iNode = document.getElementById('upload_form');
|
||||
iNode.parentNode.insertBefore(fields, iNode);
|
||||
|
||||
document.getElementById(targetdir.id).selectedIndex = document.getElementById('target_directory_' + (fieldcount - 1)).selectedIndex;
|
||||
{rdelim}
|
||||
|
||||
var inputStorage = new Array();
|
||||
function checkInputs() {ldelim}
|
||||
for (i = 1; i <= fieldcount; i++) {ldelim}
|
||||
if (!inputStorage[i]) {ldelim}
|
||||
fillInput(i, i);
|
||||
{rdelim} else if (inputStorage[i] == document.getElementById('target_filename_' + i).value) {ldelim}
|
||||
fillInput(i, i);
|
||||
{rdelim}
|
||||
{rdelim}
|
||||
|
||||
{rdelim}
|
||||
|
||||
function debugFields() {ldelim}
|
||||
for (i = 1; i <= fieldcount; i++) {ldelim}
|
||||
debugField('target_filename_' + i);
|
||||
debugField('userfile_' + i);
|
||||
{rdelim}
|
||||
{rdelim}
|
||||
|
||||
function rememberOptions() {ldelim}
|
||||
td = document.getElementById('target_directory_2');
|
||||
td_val = td.options[td.selectedIndex].value;
|
||||
SetCookie("addmedia_directory", td_val);
|
||||
{rdelim}
|
||||
|
||||
function debugField(id) {ldelim}
|
||||
alert(id + ': ' + document.getElementById(id).value);
|
||||
{rdelim}
|
||||
|
||||
function fillInput(source, target) {ldelim}
|
||||
useDuplicate = false;
|
||||
|
||||
// First field is a special value for foreign URLs instead of uploaded files
|
||||
if (source == 1 && document.getElementById('imageurl').value != "") {ldelim}
|
||||
sourceval = getfilename(document.getElementById('imageurl').value);
|
||||
useDuplicate = true;
|
||||
{rdelim} else {ldelim}
|
||||
sourceval = getfilename(document.getElementById('userfile_' + source).value);
|
||||
{rdelim}
|
||||
|
||||
if (sourceval.length > 0) {ldelim}
|
||||
document.getElementById('target_filename_' + target).value = sourceval;
|
||||
inputStorage[target] = sourceval;
|
||||
{rdelim}
|
||||
|
||||
// Display filename in duplicate form as well!
|
||||
if (useDuplicate) {ldelim}
|
||||
tkey = target + 1;
|
||||
|
||||
if (!inputStorage[tkey] || inputStorage[tkey] == document.getElementById('target_filename_' + tkey).value) {ldelim}
|
||||
document.getElementById('target_filename_' + (target+1)).value = sourceval;
|
||||
inputStorage[target + 1] = '~~~';
|
||||
{rdelim}
|
||||
{rdelim}
|
||||
{rdelim}
|
||||
</script>
|
||||
|
||||
<form id="uploadform" action="?" method="POST" enctype="multipart/form-data" onsubmit="rememberOptions()">
|
||||
<div>
|
||||
{if $media.max_file_size}
|
||||
<input name="MAX_FILE_SIZE" type="hidden" value="{$max_file_size}">
|
||||
{/if}
|
||||
{$media.token}
|
||||
<input name="serendipity[action]" type="hidden" value="admin">
|
||||
<input name="serendipity[adminModule]" type="hidden" value="images">
|
||||
<input name="serendipity[adminAction]" type="hidden" value="add">
|
||||
{$media.form_hidden}
|
||||
<div id="foreign_upload" class="image_add_foreign">
|
||||
<div class="form_field">
|
||||
<label for="imageurl">{$CONST.ENTER_MEDIA_URL}</label>
|
||||
<input id="imageurl" name="serendipity[imageurl]" type="text" onchange="checkInputs()" value="">
|
||||
</div>
|
||||
|
||||
<div class="form_select">
|
||||
<label for="serendipity_imageimporttype">{$CONST.ENTER_MEDIA_URL_METHOD}</label>
|
||||
<select name="serendipity[imageimporttype]">
|
||||
<option value="image">{$CONST.FETCH_METHOD_IMAGE}</option>
|
||||
<option value="hotlink">{$CONST.FETCH_METHOD_HOTLINK}</option>
|
||||
</select>
|
||||
</div>
|
||||
<span class="standout"> {$CONST.WORD_OR} </span>
|
||||
</div>
|
||||
|
||||
<!-- WARNING: Do not change spacing or breaks below. If you do, the JavaScript childNodes need to be edited. Newlines count as nodes! -->
|
||||
<div id="upload_template">
|
||||
<table style="margin-top: 35px" id="upload_table" class="image_add_local">
|
||||
<tr>
|
||||
<td nowrap='nowrap'>{$CONST.ENTER_MEDIA_UPLOAD}</td>
|
||||
<td><input class="input_file" id="userfile_1" name="serendipity[userfile][1]"
|
||||
onchange="checkInputs();"
|
||||
type="file"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="center" colspan="2"><br></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>{$CONST.SAVE_FILE_AS}</td>
|
||||
<td><input class="input_textbox" type="text" id="target_filename_1" name="serendipity[target_filename][1]" value="" size="40"> <span class="input-desc image-upload">{$CONST.PLAIN_ASCII_NAMES}</span></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>{$CONST.STORE_IN_DIRECTORY}</td>
|
||||
<td><select id="target_directory_1" name="serendipity[target_directory][1]">
|
||||
<option value="">{$CONST.BASE_DIRECTORY}</option>
|
||||
{foreach from=$media.folders item="folder"}
|
||||
<option {if $media.only_path == $folder.relpath}selected="selected"{/if} value="{$folder.relpath}">{' '|@str_repeat:($folder.depth*2)} {$folder.name}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div id="ccounter"><input type="hidden" name="serendipity[column_count][1]" id="column_count_1" value="true"></div>
|
||||
</div>
|
||||
|
||||
<div id="debug">
|
||||
</div>
|
||||
|
||||
<script>
|
||||
document.getElementById('upload_template').style.display = 'none';
|
||||
document.write('<span id="upload_form"><' + '/span>');
|
||||
addField();
|
||||
</script>
|
||||
|
||||
{serendipity_hookPlugin hook="backend_image_addform" hookAll=true}
|
||||
|
||||
<div class="form_buttons">
|
||||
<script>document.write('<input type="button" value="{$CONST.IMAGE_MORE_INPUT}" onclick="hideForeign(); addField()">');</script>
|
||||
<input id="all_authors" name="serendipity[all_authors]" type="hidden" value="true" checked="checked">
|
||||
</div>
|
||||
|
||||
<div class="form_buttons">
|
||||
<input type="submit" value="{$CONST.GO}" onclick="checkInputs();">
|
||||
<span class="standout"> {$CONST.WORD_OR} </span>
|
||||
<input name="go_properties" type="submit" value="{$CONST.GO_ADD_PROPERTIES|@escape}" onclick="checkInputs();">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div class="image_add_note">{$CONST.ADD_MEDIA_BLAHBLAH_NOTE}</div>
|
34
templates/2k11/admin/pluginmanager.css
Normal file
@ -0,0 +1,34 @@
|
||||
.pluginmanager_side {
|
||||
vertical-align: top;
|
||||
width: 33%;
|
||||
}
|
||||
|
||||
.pluginmanager_container {
|
||||
background: transparent;
|
||||
border: 1px solid #ddd;
|
||||
height: 98%;
|
||||
margin: 0;
|
||||
min-height: 12.5em;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.pluginmanager_container li {
|
||||
margin: 0 0 5px;
|
||||
padding: 5px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.pluginmanager_item_even,
|
||||
.pluginmanager_item_uneven {
|
||||
background: #eee;
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.pluginmanager_place,
|
||||
.pluginmanager_ownership,
|
||||
.pluginmanager_move { text-align: right; }
|
||||
|
||||
.pluginmanager_grablet {
|
||||
cursor: move;
|
||||
display: block;
|
||||
}
|
877
templates/2k11/admin/style.css
Normal file
@ -0,0 +1,877 @@
|
||||
/* normalize.css v1.0.1 | MIT License | git.io/normalize */
|
||||
article, aside, details,
|
||||
figcaption, figure, footer,
|
||||
header, hgroup, nav, section,
|
||||
summary { display: block; }
|
||||
|
||||
audio, canvas,
|
||||
video {
|
||||
display: inline-block;
|
||||
*display: inline;
|
||||
*zoom: 1;
|
||||
}
|
||||
|
||||
audio:not([controls]) {
|
||||
display: none;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
[hidden] { display: none; }
|
||||
|
||||
html {
|
||||
font-size: 100%;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-ms-text-size-adjust: 100%;
|
||||
}
|
||||
|
||||
a:focus { outline: thin dotted; }
|
||||
|
||||
a:active,
|
||||
a:hover { outline: 0; }
|
||||
|
||||
abbr[title] { border-bottom: 1px dotted; }
|
||||
|
||||
b, strong { font-weight: bold; }
|
||||
|
||||
blockquote { margin: 1em 40px; }
|
||||
|
||||
dfn { font-style: italic; }
|
||||
|
||||
mark {
|
||||
background: #ff0;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
code, kbd,
|
||||
pre, samp {
|
||||
font-family: monospace, serif;
|
||||
_font-family: 'courier new', monospace;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
pre {
|
||||
white-space: pre;
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
small { font-size: 80%; }
|
||||
|
||||
sub, sup {
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
position: relative;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sup { top: -0.5em; }
|
||||
sub { bottom: -0.25em; }
|
||||
|
||||
menu, ol,
|
||||
ul { padding: 0 0 0 40px; }
|
||||
|
||||
nav ul,
|
||||
nav ol {
|
||||
list-style: none;
|
||||
list-style-image: none;
|
||||
}
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
-ms-interpolation-mode: bicubic;
|
||||
}
|
||||
|
||||
svg:not(:root) { overflow: hidden; }
|
||||
|
||||
figure,
|
||||
form { margin: 0; }
|
||||
|
||||
fieldset {
|
||||
border: 1px solid #ccc;
|
||||
margin: 0 2px;
|
||||
padding: 0.35em 0.625em 0.75em;
|
||||
}
|
||||
|
||||
legend {
|
||||
border: 0;
|
||||
padding: 0;
|
||||
white-space: normal;
|
||||
*margin-left: -7px;
|
||||
}
|
||||
|
||||
button, input,
|
||||
select, textarea {
|
||||
font-size: 100%;
|
||||
margin: 0;
|
||||
vertical-align: baseline;
|
||||
*vertical-align: middle;
|
||||
}
|
||||
|
||||
button, input { line-height: normal; }
|
||||
|
||||
button,
|
||||
html input[type="button"],
|
||||
input[type="reset"],
|
||||
input[type="submit"] {
|
||||
-webkit-appearance: button;
|
||||
cursor: pointer;
|
||||
*overflow: visible;
|
||||
}
|
||||
|
||||
button[disabled],
|
||||
input[disabled] { cursor: default; }
|
||||
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
box-sizing: border-box;
|
||||
padding: 0;
|
||||
*height: 13px;
|
||||
*width: 13px;
|
||||
}
|
||||
|
||||
input[type="search"] {
|
||||
-webkit-appearance: textfield;
|
||||
-moz-box-sizing: content-box;
|
||||
-webkit-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
}
|
||||
|
||||
input[type="search"]::-webkit-search-cancel-button,
|
||||
input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; }
|
||||
|
||||
button::-moz-focus-inner,
|
||||
input::-moz-focus-inner {
|
||||
border: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
textarea {
|
||||
overflow: auto;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
/* Base styles */
|
||||
html, button,
|
||||
input, select,
|
||||
textarea {
|
||||
background: #fcfcfc;
|
||||
color: #222;
|
||||
font-family: Helvetica, Arial, sans-serif;
|
||||
}
|
||||
|
||||
body {
|
||||
font-size: 1em;
|
||||
line-height: 1.5;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* These selection declarations have to be separate. */
|
||||
::-moz-selection {
|
||||
background: #3a4b6f;
|
||||
color: #fff;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
::selection {
|
||||
background: #3a4b6f;
|
||||
color: #fff;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
hr {
|
||||
display: block;
|
||||
height: 1px;
|
||||
border: 0;
|
||||
border-top: 1px solid #ccc;
|
||||
margin: 1.5em 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
img { vertical-align: middle; }
|
||||
|
||||
/* Responsive media objects
|
||||
http://unstoppablerobotninja.com/entry/fluid-images */
|
||||
embed, object,
|
||||
audio, video,
|
||||
img { max-width: 100%; }
|
||||
|
||||
video,
|
||||
img { height: auto; }
|
||||
|
||||
fieldset {
|
||||
border: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
textarea { resize: vertical; }
|
||||
|
||||
/* Automagic quotes, http://html5doctor.com/blockquote-q-cite/ */
|
||||
q { quotes: '“' '”' '‘' '’'; }
|
||||
:lang(de) q { quotes: '„' '“' '‚' '‘'; }
|
||||
|
||||
blockquote p { quotes: '“' '”'; }
|
||||
|
||||
blockquote p:before {
|
||||
content: '';
|
||||
content: no-open-quote;
|
||||
}
|
||||
|
||||
blockquote p:after {
|
||||
content: '';
|
||||
content: no-close-quote;
|
||||
}
|
||||
|
||||
blockquote p:first-child:before {
|
||||
content: '“';
|
||||
content: open-quote;
|
||||
}
|
||||
|
||||
blockquote p:last-child:after {
|
||||
content: '”';
|
||||
content: close-quote;
|
||||
}
|
||||
|
||||
:lang(de) blockquote p,
|
||||
blockquote:lang(de) p { quotes: '„' '“'; }
|
||||
|
||||
:lang(de) blockquote p:before,
|
||||
blockquote:lang(de) p:before {
|
||||
content: '';
|
||||
content: no-open-quote;
|
||||
}
|
||||
|
||||
:lang(de) blockquote p:after,
|
||||
blockquote:lang(de) p:after {
|
||||
content: '';
|
||||
content: no-close-quote;
|
||||
}
|
||||
|
||||
:lang(de) blockquote p:first-child:before,
|
||||
blockquote:lang(de) p:first-child:before {
|
||||
content: '„';
|
||||
content: open-quote;
|
||||
}
|
||||
|
||||
:lang(de) blockquote p:last-child:after,
|
||||
blockquote:lang(de) p:last-child:after {
|
||||
content: '“';
|
||||
content: close-quote;
|
||||
}
|
||||
|
||||
blockquote > cite,
|
||||
blockquote + cite { display: block; }
|
||||
|
||||
blockquote > cite:before,
|
||||
blockquote + cite:before { content: "– "; }
|
||||
|
||||
blockquote > cite { margin: 1.5em 0; }
|
||||
|
||||
blockquote + cite { margin: 0 0 1.5em 3em; }
|
||||
|
||||
dt { font-weight: bold; }
|
||||
dd { margin: 0; }
|
||||
|
||||
caption, th { text-align: left; }
|
||||
|
||||
li ul, li ol { margin: 0; }
|
||||
|
||||
pre code { font-size: 1em; }
|
||||
|
||||
p {
|
||||
-webkit-hyphens: auto;
|
||||
-moz-hyphens: auto;
|
||||
-ms-hyphens: auto;
|
||||
hyphens: auto;
|
||||
}
|
||||
|
||||
p code, p samp,
|
||||
p kbd {
|
||||
-webkit-hyphens: none;
|
||||
-moz-hyphens: none;
|
||||
-ms-hypens: none;
|
||||
hyphens: none;
|
||||
}
|
||||
|
||||
nav ul,
|
||||
nav ol { padding: 0; }
|
||||
|
||||
/* CSS helper classes for various purposes */
|
||||
/* Image replacement */
|
||||
.ir {
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
overflow: hidden;
|
||||
*text-indent: -9999px;
|
||||
}
|
||||
|
||||
.ir:before {
|
||||
content: "";
|
||||
display: block;
|
||||
width: 0;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
/* Hide from both screenreaders and browsers */
|
||||
.hidden {
|
||||
display: none !important;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
/* Hide only visually, but have it available for screenreaders */
|
||||
.visuallyhidden {
|
||||
border: 0;
|
||||
clip: rect(0 0 0 0);
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
}
|
||||
|
||||
/* Extends the .visuallyhidden class to allow the element
|
||||
to be focusable when navigated to via the keyboard */
|
||||
.visuallyhidden.focusable:active,
|
||||
.visuallyhidden.focusable:focus {
|
||||
clip: auto;
|
||||
height: auto;
|
||||
margin: 0;
|
||||
overflow: visible;
|
||||
position: static;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
/* Hide visually and from screenreaders, but maintain layout */
|
||||
.invisible { visibility: hidden; }
|
||||
|
||||
/* Clearfix: contain floats */
|
||||
.clearfix:before,
|
||||
.clearfix:after {
|
||||
content: " ";
|
||||
display: table;
|
||||
}
|
||||
|
||||
.clearfix:after { clear: both; }
|
||||
.clearfix { *zoom: 1; }
|
||||
|
||||
/* Forms | forked from formalize.me */
|
||||
.input_full_wrap {
|
||||
display: block;
|
||||
padding-right: 8px;
|
||||
}
|
||||
|
||||
input[type="radio"],
|
||||
input[type="checkbox"] {
|
||||
position: relative;
|
||||
vertical-align: top;
|
||||
top: 5px;
|
||||
top: 0 \0;
|
||||
*top: -5px;
|
||||
}
|
||||
|
||||
button:focus, input:focus,
|
||||
select:focus, textarea:focus {
|
||||
-webkit-box-shadow: #0066ff 0 0 5px 0;
|
||||
-moz-box-shadow: #0066ff 0 0 5px 0;
|
||||
box-shadow: #0066ff 0 0 5px 0;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
input[type="file"]:focus, input[type="file"]:active,
|
||||
input[type="radio"]:focus, input[type="radio"]:active,
|
||||
input[type="checkbox"]:focus, input[type="checkbox"]:active {
|
||||
-webkit-box-shadow: none;
|
||||
-moz-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
button, input[type="button"],
|
||||
input[type="reset"],
|
||||
input[type="submit"] {
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-ms-border-radius: 4px;
|
||||
-o-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
-webkit-background-clip: padding;
|
||||
-moz-background-clip: padding;
|
||||
background-clip: padding-box;
|
||||
background: #ddd;
|
||||
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #dddddd));
|
||||
background-image: -webkit-linear-gradient(#ffffff, #dddddd);
|
||||
background-image: -moz-linear-gradient(#ffffff, #dddddd);
|
||||
background-image: -o-linear-gradient(#ffffff, #dddddd);
|
||||
background-image: linear-gradient(#ffffff, #dddddd);
|
||||
border: 1px solid;
|
||||
border-color: #ddd #bbb #999;
|
||||
color: #000;
|
||||
outline: 0;
|
||||
padding: 3px 10px;
|
||||
text-shadow: #fff 0 1px 1px;
|
||||
width: auto;
|
||||
*padding-top: 2px;
|
||||
*padding-bottom: 0;
|
||||
}
|
||||
|
||||
button:hover, input[type="button"]:hover,
|
||||
input[type="reset"]:hover,
|
||||
input[type="submit"]:hover {
|
||||
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(1px, #eeeeee), color-stop(100%, #cccccc));
|
||||
background-image: -webkit-linear-gradient(#ffffff, #eeeeee 1px, #cccccc);
|
||||
background-image: -moz-linear-gradient(#ffffff, #eeeeee 1px, #cccccc);
|
||||
background-image: -o-linear-gradient(#ffffff, #eeeeee 1px, #cccccc);
|
||||
background-image: linear-gradient(#ffffff, #eeeeee 1px, #cccccc);
|
||||
}
|
||||
|
||||
button:active, input[type="button"]:active,
|
||||
input[type="reset"]:active,
|
||||
input[type="submit"]:active {
|
||||
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(1px, #dddddd), color-stop(100%, #eeeeee));
|
||||
background-image: -webkit-linear-gradient(#ffffff, #dddddd 1px, #eeeeee);
|
||||
background-image: -moz-linear-gradient(#ffffff, #dddddd 1px, #eeeeee);
|
||||
background-image: -o-linear-gradient(#ffffff, #dddddd 1px, #eeeeee);
|
||||
background-image: linear-gradient(#ffffff, #dddddd 1px, #eeeeee);
|
||||
-webkit-box-shadow: inset rgba(0, 0, 0, 0.25) 0 1px 2px 0;
|
||||
-moz-box-shadow: inset rgba(0, 0, 0, 0.25) 0 1px 2px 0;
|
||||
box-shadow: inset rgba(0, 0, 0, 0.25) 0 1px 2px 0;
|
||||
border-color: #999 #bbb #ddd;
|
||||
}
|
||||
|
||||
button {
|
||||
*padding-top: 1px;
|
||||
*padding-bottom: 1px;
|
||||
}
|
||||
|
||||
input[type="date"], input[type="datetime"],
|
||||
input[type="datetime-local"], input[type="month"],
|
||||
input[type="number"], input[type="password"],
|
||||
input[type="time"], input[type="week"],
|
||||
textarea, select, input[type="email"],
|
||||
input[type="search"], input[type="tel"],
|
||||
input[type="text"], input[type="url"] {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
-webkit-background-clip: padding;
|
||||
-moz-background-clip: padding;
|
||||
background-clip: padding-box;
|
||||
-webkit-border-radius: 0;
|
||||
-moz-border-radius: 0;
|
||||
-ms-border-radius: 0;
|
||||
-o-border-radius: 0;
|
||||
border-radius: 0;
|
||||
-webkit-appearance: none;
|
||||
background-color: #fafafa;
|
||||
border: 1px solid;
|
||||
border-color: #c1c1c1 #c1c1c1 #e1e1e1;
|
||||
color: #222;
|
||||
outline: 0;
|
||||
padding: 2px 3px;
|
||||
text-align: left;
|
||||
height: 1.8em;
|
||||
*padding-top: 2px;
|
||||
*padding-bottom: 1px;
|
||||
*height: auto;
|
||||
}
|
||||
|
||||
input[type="date"][disabled], input[type="datetime"][disabled],
|
||||
input[type="datetime-local"][disabled], input[type="month"][disabled],
|
||||
input[type="number"][disabled], input[type="password"][disabled],
|
||||
input[type="time"][disabled], input[type="week"][disabled],
|
||||
textarea[disabled], select[disabled], input[type="email"][disabled],
|
||||
input[type="search"][disabled], input[type="tel"][disabled],
|
||||
input[type="text"][disabled], input[type="url"][disabled] { background-color: #eee; }
|
||||
|
||||
button[disabled], input[disabled],
|
||||
select[disabled], select[disabled] option,
|
||||
select[disabled] optgroup, textarea[disabled] {
|
||||
-webkit-box-shadow: none;
|
||||
-moz-box-shadow: none;
|
||||
box-shadow: none;
|
||||
-moz-user-select: -moz-none;
|
||||
-webkit-user-select: none;
|
||||
user-select: none;
|
||||
color: #888;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
/* Separate rule for Firefox.
|
||||
Separate rule for IE, too.
|
||||
Cannot stack with WebKit's. */
|
||||
::-webkit-input-placeholder { color: #888; }
|
||||
|
||||
input:-moz-placeholder,
|
||||
textarea:-moz-placeholder { color: #888; }
|
||||
|
||||
input.placeholder_text,
|
||||
textarea.placeholder_text { color: #888; }
|
||||
|
||||
:invalid {
|
||||
-webkit-box-shadow: none;
|
||||
-moz-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
textarea, select[size],
|
||||
select[multiple] { height: auto; }
|
||||
|
||||
@media (-webkit-min-device-pixel-ratio: 0) {
|
||||
select {
|
||||
background-image: url("data:image/gif;base64,R0lGODlhDQAEAIAAAAAAAP8A/yH5BAEHAAEALAAAAAANAAQAAAILhA+hG5jMDpxvhgIAOw==");
|
||||
background-repeat: no-repeat;
|
||||
background-position: right center;
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
select[size],
|
||||
select[multiple] {
|
||||
background-image: none;
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
textarea {
|
||||
min-height: 40px;
|
||||
overflow: auto;
|
||||
resize: vertical;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
optgroup {
|
||||
color: #222;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
/* Backend-specific form stuff */
|
||||
label, .standout,
|
||||
legend > span { font-weight: bold; }
|
||||
|
||||
.block_level,
|
||||
.form_multiselect label,
|
||||
label > span { display: block; }
|
||||
|
||||
label > span,
|
||||
input[type=checkbox] + label,
|
||||
input[type=radio] + label,
|
||||
.form_check label { font-weight: normal; }
|
||||
|
||||
input[type=checkbox] { margin-right: .4em; }
|
||||
|
||||
.form_radio {
|
||||
float: left;
|
||||
margin-right: 1em;
|
||||
}
|
||||
|
||||
.form_buttons {
|
||||
margin-top: 1.5em;
|
||||
margin-bottom: 1.5em;
|
||||
}
|
||||
|
||||
.form_field, .form_area,
|
||||
.form_check, .form_radio,
|
||||
.form_select, .form_multiselect {
|
||||
margin-top: .75em;
|
||||
margin-bottom: .75em;
|
||||
}
|
||||
|
||||
/* Styles common to all resolutions */
|
||||
|
||||
/* Color scheme:
|
||||
-------------
|
||||
Dark blue: #25253d Mid blue: #3e5f81
|
||||
Lite blue: #ccdee7 Yellow: #ffbf00
|
||||
Off black: #222 Off white: #fcfcfc
|
||||
*/
|
||||
|
||||
html { background: #ccdee7; }
|
||||
|
||||
body {
|
||||
background: #fcfcfc;
|
||||
font-size: 0.875em;
|
||||
}
|
||||
|
||||
a, a:visited { color: #3a4b6f; }
|
||||
|
||||
a:hover, a:focus { color: #d06604; }
|
||||
|
||||
h1 {
|
||||
font-size: 1.71429em;
|
||||
line-height: 1.75em;
|
||||
margin: 0.875em 0;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.42857em;
|
||||
line-height: 1.05em;
|
||||
margin: 1.05em 0;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.28571em;
|
||||
line-height: 1.16667em;
|
||||
margin: 1.16667em 0;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 1.14286em;
|
||||
line-height: 1.3125em;
|
||||
margin: 1.3125em 0;
|
||||
}
|
||||
|
||||
h5, h6 { font-size: 1em; }
|
||||
|
||||
h5, h6,
|
||||
blockquote,
|
||||
ul, ol, dl,
|
||||
p, table,
|
||||
details,
|
||||
.standalone {
|
||||
margin-top: 1.5em;
|
||||
margin-bottom: 1.5em;
|
||||
}
|
||||
|
||||
summary { cursor: pointer; }
|
||||
|
||||
.plainList,
|
||||
.imageMessage ul,
|
||||
.actions {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/* Backend messages */
|
||||
.msg_error, .msg_success,
|
||||
.msg_notice {
|
||||
display: block;
|
||||
margin: 1.5em 0;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.msg_error {
|
||||
background: #f2dede;
|
||||
border: 1px solid #e4b9b9;
|
||||
color: #b94a48;
|
||||
}
|
||||
|
||||
.msg_success {
|
||||
background: #dff0d8;
|
||||
border: 1px solid #c1e2b3;
|
||||
color: #468847;
|
||||
}
|
||||
|
||||
.msg_notice {
|
||||
background: #fcf8e3;
|
||||
border: 1px solid #f7ecb5;
|
||||
color: #c09853;
|
||||
}
|
||||
|
||||
/* Layout */
|
||||
#top > div,
|
||||
#main {
|
||||
margin: 0 auto;
|
||||
max-width: 1280px;
|
||||
width: 96%;
|
||||
}
|
||||
|
||||
/* Header area */
|
||||
#top {
|
||||
background: #25253d;
|
||||
color: #fcfcfc;
|
||||
}
|
||||
|
||||
#top a, #top a:visited { color: #ffbf00; }
|
||||
#top a:hover, #top a:focus { color: #fcfcfc; }
|
||||
|
||||
#banner h1,
|
||||
#banner a { float: left; }
|
||||
|
||||
#banner a { margin: 2.4em 0 0 2em; }
|
||||
|
||||
#user_menu { clear: both; }
|
||||
|
||||
#user_menu h2 { margin: 1.5em 0 0; }
|
||||
|
||||
#user_menu li,
|
||||
.edit_actions li {
|
||||
display: inline-block;
|
||||
margin: 0 1em 0 0;
|
||||
*display: inline;
|
||||
*zoom: 1;
|
||||
}
|
||||
|
||||
.edit_actions li { margin: 0 0 0 1em; }
|
||||
|
||||
.category_data,
|
||||
.user_name, .group_name,
|
||||
.edit_actions { float: left; }
|
||||
|
||||
.category_data,
|
||||
.user_name, .group_name { min-width: 8em; }
|
||||
|
||||
.category_data { margin: 0 1em 0 0; }
|
||||
|
||||
/* Content area */
|
||||
.comment_data dt, .comment_data dd,
|
||||
.template_info dt,
|
||||
.template_info dd { float: left; }
|
||||
|
||||
.comment_data dt,
|
||||
.template_info dt { margin: 0 .4em 0 0; }
|
||||
|
||||
.comment_data dt, .template_info dt,
|
||||
.comment_summary, .comment_full { clear: both; }
|
||||
|
||||
.actions li {
|
||||
display: inline-block;
|
||||
margin: 0 .4em 0 0;
|
||||
*display: inline;
|
||||
*zoom: 1;
|
||||
}
|
||||
|
||||
#entry_skip legend,
|
||||
#entry_skip label,
|
||||
#skipto_entry,
|
||||
.dialog_delrip li {
|
||||
float: left;
|
||||
margin: 0 .4em 0 0;
|
||||
}
|
||||
|
||||
.sub_perm { margin-left: 1em; }
|
||||
|
||||
/* Login form */
|
||||
#login { margin: 2em auto 1em; }
|
||||
|
||||
#back_to_blog {
|
||||
display: block;
|
||||
margin: 1em auto 2em;
|
||||
}
|
||||
|
||||
#back_to_blog,
|
||||
#login { max-width: 24em; }
|
||||
|
||||
#login .form_check,
|
||||
#login_send { float: left; }
|
||||
|
||||
#login_send { margin: .5em 0 0 7.5em;}
|
||||
|
||||
#login .form_field label {
|
||||
display: inline-block;
|
||||
min-width: 8em;
|
||||
*display: inline;
|
||||
*zoom: 1;
|
||||
}
|
||||
|
||||
/* Footer area */
|
||||
#meta {
|
||||
background: #ccdee7;
|
||||
border-top: 1px solid #25253d;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#meta small {
|
||||
display: block;
|
||||
font-size: 1em;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
/* Plugin manager – might go into pluginmanager.css in the end */
|
||||
#configuration_footer { height: 100px; }
|
||||
|
||||
.plugin_count {
|
||||
clear: both;
|
||||
margin: 0 0 1.5em;
|
||||
}
|
||||
|
||||
/* Media db – might go into imgedit.css in the end */
|
||||
#fs_crop { min-height: 200px; }
|
||||
|
||||
.media_pane .pagination { margin: 0; }
|
||||
|
||||
/* Media Queries for Responsive Design. */
|
||||
@media only screen and (min-width: 481px) { }
|
||||
|
||||
@media only screen and (min-width: 768px) {
|
||||
body { font-size: 1em; }
|
||||
|
||||
h1 {
|
||||
font-size: 2em;
|
||||
line-height: 1.5em;
|
||||
margin: 0.75em 0;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.5em;
|
||||
line-height: 1em;
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
pre {
|
||||
font-size: 0.875em;
|
||||
line-height: 1.71429em;
|
||||
margin: 1.71429em 0;
|
||||
}
|
||||
|
||||
/* Plugin manager – might go into pluginmanager.css in the end */
|
||||
.pluginmanager_side {
|
||||
float: left;
|
||||
margin: 0 0 1.5em;
|
||||
}
|
||||
|
||||
#pluginlist_sidebar .pluginmanager_side {
|
||||
margin-right: 1%;
|
||||
width: 32%;
|
||||
}
|
||||
|
||||
#pluginlist_event .pluginmanager_side {
|
||||
margin-right: 1%;
|
||||
width: 48%;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 1024px) {
|
||||
#banner,
|
||||
#content {
|
||||
float: left;
|
||||
margin: 0 2% 0 0;
|
||||
}
|
||||
|
||||
#user_menu,
|
||||
#main_menu {
|
||||
float: right;
|
||||
margin: 0 0 0 2%;
|
||||
}
|
||||
|
||||
#banner, #user_menu { width: 48%; }
|
||||
.lt-ie8 #banner, .lt-ie8 #user_menu { width: 47.5%; }
|
||||
|
||||
#user_menu {
|
||||
clear: none;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
#user_menu li,
|
||||
.edit_actions li { margin: 0 0 0 1em; }
|
||||
|
||||
.edit_actions { float: right; }
|
||||
|
||||
#content { width: 73%; }
|
||||
.lt-ie8 #content { width: 72.5%; }
|
||||
|
||||
#main_menu { width: 23%; }
|
||||
.lt-ie8 #main_menu { width: 22.5%; }
|
||||
|
||||
#login { margin: 4em auto 1em; }
|
||||
|
||||
#back_to_blog { margin: 1em auto 4em; }
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 1400px) {
|
||||
body { font-size: 1.125em; }
|
||||
}
|