1
0

Added new backend template files (smartified core tpls and 2k11 admin tpls as well as related assets).

This commit is contained in:
Matthias Mees
2012-12-03 00:59:42 +01:00
parent ca61181daa
commit 8397b08b88
83 changed files with 5385 additions and 0 deletions

View File

@ -0,0 +1,161 @@
{* HTML5: Yes *}
{* jQuery: No *}
{if $post_save}
{if $new}
<span class="msg_success">{$CONST.CATEGORY_SAVED}</span>
{/if}
{if $edit}
{if isset($editPermission) && $editPermission == false}
<span class="msg_error">{$CONST.PERM_DENIED}</span>
{else}
{if $subcat}{$subcat}{else}
<span class="msg_success">{$CONST.CATEGORY_SAVED}</span>
{/if}
{/if}
{/if}
{/if}
{if $doDelete}
{if $deleteSuccess}
<span class="msg_success">{if $remainingCat}{$CONST.CATEGORY_DELETED_ARTICLES_MOVED|sprintf:$remainingCat:$cid}{else}{$cid|string_format:"{$CONST.CATEGORY_DELETED}"}{/if}</span>
{else}
<span class="msg_error">{$CONST.INVALID_CATEGORY}</span>
{/if}
{/if}
{if $delete}
{if $deletePermission == true}
<h2>{$categoryName|escape:"html"}</h2>
<form method="POST" name="serendipityCategory" action="?serendipity[adminModule]=category&amp;serendipity[adminAction]=doDelete&amp;serendipity[cid]={$cid}">
{$formToken}
<div class="form_select">
<label for="remaining_cat">{$CONST.CATEGORY_REMAINING}:</label>
<select id="remaining_cat" name="serendipity[cat][remaining_catid]">
<option value="0">{$CONST.NO_CATEGORY}</option>
{foreach $cats as $cat_data}
<option value="{$cat_data.categoryid}">{$cat_data.category_name|escape:"html"}</option>
{/foreach}
</select>
</div>
<input name="REMOVE" type="submit" value="{$CONST.GO}">
</form>
{/if}
{/if}
{if (! $post_save) && ($edit || $new)}
{if $edit}
<h2>{$category_name|escape:"html"|string_format:"{$CONST.EDIT_THIS_CAT}"}</h2>
{/if}
<form id="serendipity_category" method="POST" name="serendipityCategory">
{$formToken}
<div class="form_field">
<label for="category_name">{$CONST.NAME}</label>
<input id="category_name" name="serendipity[cat][name]" type="text" value="{$this_cat.category_name|default:""|escape:"html"}">
</div>
<div class="form_field">
<label for="category_description">{$CONST.DESCRIPTION}</label>
<input id="category_description" name="serendipity[cat][description]" type="text" value="{$this_cat.category_description|default:""|escape:"html"}">
</div>
<div class="form_field">
<label for="category_icon">{$CONST.IMAGE}</label>
{* TODO: this should probably become/fallback to input[type=file] *}
<input id="category_icon" name="serendipity[cat][icon]" type="text" value="{$this_cat.category_icon|default:""|escape:"html"}" onchange="document.getElementById('imagepreview').src = this.value; document.getElementById('imagepreview').style.display = '';">
<script>
var category_icon = document.getElementById('category_icon');
var imgBtn = document.createElement('div');
imgBtn.id = "insert_image";
imgBtn.innerHTML = '<input type="button" name="insImage" value="{$CONST.IMAGE}" onclick="window.open(\'serendipity_admin_image_selector.php?serendipity[htmltarget]=category_icon&amp;serendipity[filename_only]=true\', \'ImageSel\', \'width=800,height=600,toolbar=no,scrollbars=1,scrollbars,resize=1,resizable=1\');">';
category_icon.parentNode.insertBefore(imgBtn, category_icon.nextSibling);
</script>
<!-- noscript>FIXXME: Emit a warning if JS is disabled</noscript -->
</div>
<figure id="preview">
<figcaption>{$CONST.PREVIEW}</figcaption>
<img id="imagepreview" src="{$this_cat.category_icon|default:""|escape:"html"}" alt="">
</figure>
<div class="form_multiselect">
<label for="read_authors">{$CONST.PERM_READ}</label>
<select id="read_authors" size="6" multiple="multiple" name="serendipity[cat][read_authors][]">
<option value="0"{if $selectAllReadAuthors} selected="selected"{/if}>{$CONST.ALL_AUTHORS}</option>
{foreach $groups as $group}
<option value="{$group.confkey}"{if isset($read_groups.{$group.confkey})} selected="selected"{/if} >{$group.confvalue|escape:"html"}</option>
{/foreach}
</select>
</div>
<div class="form_multiselect">
<label for="write_authors">{$CONST.PERM_WRITE}</label>
<select id="write_authors"size="6" multiple="multiple" name="serendipity[cat][write_authors][]">
<option value="0"{if $selectAllReadAuthors} selected="selected"{/if}>{$CONST.ALL_AUTHORS}</option>
{foreach $groups as $group}
<option value="{$group.confkey}"{if isset($read_groups.{$group.confkey})} selected="selected"{/if}>{$group.confvalue|escape:"html"}</option>
{/foreach}
</select>
</div>
<div class="form_select">
<label for="parent_cat">{$CONST.PARENT_CATEGORY}</label>
<select id="parent_cat" name="serendipity[cat][parent_cat]">
<option value="0"{if $cid == 0} selected="selected"{/if}>{$CONST.NO_CATEGORY}</option>
{foreach $categories as $cat}
{if $cat.categoryid == $cid}{continue}{/if}
<option value="{$cat.categoryid}"{if $this_cat.parentid == $cat.categoryid} selected="selected"{/if}>{for $i=1 to $cat.depth}&nbsp{/for} {$cat.category_name}</option>
{/foreach}
</select>
</div>
<fieldset>
<legend><span>{$CONST.CATEGORY_HIDE_SUB}</span></legend>
<p>{$CONST.CATEGORY_HIDE_SUB_DESC}</p>
<div class="clearfix">
<div class="form_radio">
<input id="hide_sub_yes" name="serendipity[cat][hide_sub]" type="radio" value="1"{if $this_cat.hide_sub== 1} checked="checked"{/if}>
<label for="hide_sub_yes">{$CONST.YES}</label>
</div>
<div class="form_radio">
<input id="hide_sub_no" name="serendipity[cat][hide_sub]" type="radio" value="0"{if $this_cat.hide_sub == 0} checked="checked"{/if}>
<label for="hide_sub_no">{$CONST.NO}</label>
</div>
</div>
</fieldset>
<input name="SAVE" type="submit" value="{$save}">
</form>
<script src="serendipity_editor.js"></script>
{/if}
{if $view}
<h2>{$CONST.CATEGORY_INDEX}:</h2>
{if is_array($viewCats)}
<ul id="categories" class="plainList">
{foreach $viewCategories as $category}
{* TODO: Ideally, this should use true nesting, i.e. nested lists instead of a level class. *}
<li class="clearfix level_{$category.depth}">
<details class="category_data">
<summary class="category_name{if $category.category_icon} category_hasicon{/if}">{$category.category_name|escape:"html"}</summary>
<div class="category_info">
{if $category.category_description != ''}
<p class="category_desc">{$category.category_description|escape:"html"}</p>
{/if}
<span class="category_author block_level standalone">{if $category.authorid == 0}{$CONST.ALL_AUTHORS}{else}{$category.realname|escape:"html"}{/if}</span>
</div>
</details>
<ul class="plainList edit_actions">
<li><a class="link_edit" href="?serendipity[adminModule]=category&amp;serendipity[adminAction]=edit&amp;serendipity[cid]={$category.categoryid}">{$CONST.EDIT}</a></li>
<li><a class="link_delete" href="?serendipity[adminModule]=category&amp;serendipity[adminAction]=delete&amp;serendipity[cid]={$category.categoryid}">{$CONST.DELETE}</a></li>
</ul>
</li>
{/foreach}
</ul>
{else}
<span class="msg_notice">{$CONST.NO_CATEGORIES}</span>
{/if}
<a class="link_create" href="?serendipity[adminModule]=category&serendipity[adminAction]=new">{$CONST.CREATE_NEW_CAT}</a>
{/if}

View File

@ -0,0 +1,218 @@
{* HTML5: Yes *}
{* jQuery: No *}
{if !empty($errormsg)}
<span class="msg_error">{$errormsg}</span>
{/if}
{* Smarty 3 has a new auto literal option which is enabled by default.
When the { is followed by a space it's not interpreted as smarty delimiter but literal. *}
<script>
function FT_toggle(id) {
if ( document.getElementById(id + '_full').style.display == '' ) {
document.getElementById(id + '_full').style.display='none';
document.getElementById(id + '_summary').style.display='';
document.getElementById(id + '_text').innerHTML = '{$CONST.VIEW_FULL}';
} else {
document.getElementById(id + '_full').style.display='';
document.getElementById(id + '_summary').style.display='none';
document.getElementById(id + '_text').innerHTML = '{$CONST.HIDE}';
}
return false;
}
function invertSelection() {
var f = document.formMultiDelete;
for (var i = 0; i < f.elements.length; i++) {
if( f.elements[i].type == 'checkbox' ) {
f.elements[i].checked = !(f.elements[i].checked);
f.elements[i].onclick();
}
}
}
var origborder = '';
var origwidth = '';
function highlightComment(id, checkvalue) {
var comment = document.getElementById(id);
if (origborder == '') {
origborder = comment.style.borderColor;
if (origborder == '') {
origborder = '#FFFFFF';
}
}
if (origwidth == '') {
origwidth = comment.style.borderWidth;
if (origwidth == '' || origwidth == 0) {
origwidth = 1;
}
}
if (checkvalue) {
comment.style.borderColor = '#FF0000';
comment.style.borderWidth = origwidth;
} else {
comment.style.borderColor = '';
comment.style.borderWidth = origwidth;
}
}
</script>
<h2>{$CONST.COMMENTS}</h2>
<form action="" method="GET">
{$formtoken}
<input name="serendipity[adminModule]" type="hidden" value="comments">
<input name="serendipity[page]" type="hidden" value="{$page}">
<fieldset id="filter_comments">
<legend><span>{$CONST.FILTERS} ({$CONST.FIND_COMMENTS})</span></legend>
<div class="clearfix">
<div class="form_field">
<label for="filter_author">{$CONST.AUTHOR}:</label>
<input id="filter_author" name="serendipity[filter][author]" type="text" value="{$get.filter.author|escape}">
</div>
<div class="form_field">
<label for="filter_email">{$CONST.EMAIL}:</label>
<input id="filter_email" name="serendipity[filter][email]" type="text" value="{$get.filter.email|escape}">
</div>
<div class="form_field">
<label for="filter_url">{$CONST.URL}:</label>
<input id="filter_url" name="serendipity[filter][url]" type="text" value="{$get.filter.url|escape}">
</div>
<div class="form_field">
<label for="filter_ip">IP:</label>
<input id="filter_ip" name="serendipity[filter][ip]" type="text" value="{$get.filter.ip|escape}">
</div>
<div class="form_field">
<label for="filter_body">{$CONST.CONTENT}:</label>
<input id="filter_body" name="serendipity[filter][body]" type="text" value="{$get.filter.body|escape}">
</div>
<div class="form_field">
<label for="filter_referer">{$CONST.REFERER}:</label>
<input id="filter_referer" name="serendipity[filter][referer]" type="text" value="{$get.filter.referer|escape}">
</div>
<div class="form_select">
<label for="filter_perpage">{$CONST.COMMENTS}:</label>
<select id="filter_perpage" name="serendipity[filter][perpage]">
{foreach $filter_vals AS $filter}
<option value="{$filter}" {($commentsPerPage == $filter) ? ' selected="selected"' : ''}>{$filter}</option>
{/foreach}
</select>
</div>
<div class="form_select">
<label for="filter_show">{$CONST.COMMENTS_FILTER_SHOW}:</label>
<select id="filter_show" name="serendipity[filter][show]">
<option value="all"{if $get.filter.show == 'all'} selected="selected"{/if}>{$CONST.COMMENTS_FILTER_ALL}</option>
<option value="approved"{if $get.filter.show == 'approved'} selected="selected"{/if}>{$CONST.COMMENTS_FILTER_APPROVED_ONLY}</option>
<option value="pending"{if $get.filter.show == 'pending'} selected="selected"{/if}>{$CONST.COMMENTS_FILTER_NEED_APPROVAL}</option>
<option value="confirm"{if $get.filter.show == 'confirm'} selected="selected"{/if}>{$CONST.COMMENTS_FILTER_NEED_CONFIRM}</option>
</select>
</div>
<div class="form_select">
<label for="filter_type">{$CONST.TYPE}</label>
<select id="filter_type" name="serendipity[filter][type]">
<option value="">{$CONST.COMMENTS_FILTER_ALL}</option>
<option value="NORMAL"{if $c_type == 'NORMAL'} selected="selected"{/if}>{$CONST.COMMENTS}</option>
<option value="TRACKBACK"{if $c_type == 'TRACKBACK'} selected="selected"{/if}>{$CONST.TRACKBACKS}</option>
<option value="PINGBACK"{if $c_type == 'PINGBACK'} selected="selected"{/if}>{$CONST.PINGBACKS}</option>
</select>
</div>
</div>
</fieldset>
<input name="submit" type="submit" value="{$CONST.GO}">
{serendipity_hookPlugin hookAll=true hook="backend_comments_top" addData=$sql}
</form>
{if !is_array($sql)}
<span class="msg_notice">{$CONST.NO_COMMENTS}</span>
{* TODO: l18n *}
<a class="block_level" href="serendipity_admin.php?serendipity[adminModule]=comments">Return to default comment list</a>
{else}
<form id="formMultiDelete" action="" method="POST" name="formMultiDelete">
{$formtoken}
<input name="serendipity[formAction]" type="hidden" value="multiDelete">
<nav class="pagination">
<h2>{$CONST.PAGE_BROWSE_COMMENTS|sprintf:$page:$pages:$totalComments}</h2>
{if ($page != 1 && $page <= $pages)||$page != $pages}
<ul class="clearfix">
{if ($page != 1 && $page <= $pages)}
<li><a class="link_prev" href="{$linkPrevious}">{$CONST.PREVIOUS}</a></li>
{/if}
{if $page != $pages}
<li><a class="link_next" href="{$linkNext}">{$CONST.NEXT}</a></li>
{/if}
</ul>
{/if}
</nav>
{if is_array($comments)}
<ul class="plainList">
{foreach $comments AS $comment}
<li><h3 id="c{$comment.id}">{($comment.type == 'NORMAL') ? $CONST.COMMENT : (($comment.type == 'TRACKBACK') ? $CONST.TRACKBACK : $CONST.PINGBACK )} #{$comment.id}, {$CONST.IN_REPLY_TO} <a href="{$comment.entry_url}">{$comment.title|escape}</a> {$CONST.ON} {$comment.timestamp|@formatTime:'%b %e %Y, %H:%M'}</h3>
<input class="action_highlight_comment" type="checkbox" name="serendipity[delete][{$comment.id}]" value="{$comment.entry_id}" onclick="highlightComment('comment_{$comment.id}', this.checked)" tabindex="{$i}">
<div id="comment_{$comment.id}">
<dl class="comment_data clearfix">
<dt>{$CONST.AUTHOR}:</dt>
<dd>{$comment.author|escape|truncate:30:"&hellip;"} {$comment.action_author}</dd>
<dt>{$CONST.EMAIL}:</dt>
<dd>{if empty($comment.email)}N/A{else}<a href="mailto:{$comment.email|escape}" title="{$comment.email|escape}">{$comment.email|escape|truncate:30:"&hellip;"}</a>{if $comment.subscribed == 'true'} <span class="serendipity_subscription_on">({$CONST.ACTIVE_COMMENT_SUBSCRIPTION})</span>{/if}{/if}</dd>
{* TODO: This should not emit an img *}
<dd class="action_email">{$comment.action_email}</dd>
<dt>IP:</dt>
<dd>{if empty($comment.ip)}N/A{else}{$comment.ip|escape}{/if}</dd>
{* TODO: This should not emit an img *}
<dd class="action_ip">{$comment.action_ip}</dd>
<dt>{$CONST.URL}:</dt>
<dd>{if empty($comment.url)}N/A{else}<a class="link_url" href="{$comment.url|escape}" title="{$comment.url|escape}">{$comment.url|escape|truncate:30:"&hellip;"}</a> {/if}</dd>
<dd class="action_url">{$comment.action_url}</dd>
<dt>{$CONST.REFERER}:</dt>
<dd>{if empty($comment.referer)}N/A{else}<a class="link_url" href="{$comment.referer|escape}" title="{$comment.referer|escape}">{$comment.referer|escape|truncate:30:"&hellip;"}</a>{/if}</dd>
<dd class="action_referer">{$comment.action_referer}</dd>
</dl>
<div id="{$comment.id}_summary" class="comment_summary">{$comment.summary}</div>
<div id="{$comment.id}_full" class="comment_full" style="display:none;">{$comment.fullBody}</div>
<ul class="actions clearfix">
{if ($comment.status == 'pending') || ($comment.status == 'confirm')}
<li><a class="link_approve" href="?serendipity[action]=admin&amp;serendipity[adminModule]=comments&amp;serendipity[adminAction]=approve&amp;serendipity[id]={$comment.id}&amp;{$urltoken}">{$CONST.APPROVE}</a></li>
{/if}
{if ($comment.status == 'approved')}
<li><a class="link_moderate" href="?serendipity[action]=admin&amp;serendipity[adminModule]=comments&amp;serendipity[adminAction]=pending&amp;serendipity[id]={$comment.id}&amp;{$urltoken}">{$CONST.SET_TO_MODERATED}</a></li>
{/if}
{if $comment.excerpt}
<li><a class="link_toggle" href="#c{$comment.id}" onclick="FT_toggle({$comment.id}); return false;"><span id="{$comment.id}_text">{$CONST.TOGGLE_ALL}</span></a></li>
{/if}
<li><a class="link_view" href="{$entrylink}">{$CONST.VIEW}</a></li>
<li><a class="link_edit" href="?serendipity[action]=admin&amp;serendipity[adminModule]=comments&amp;serendipity[adminAction]=edit&amp;serendipity[id]={$comment.id}&amp;serendipity[entry_id]={$comment.entry_id}&amp;{$urltoken}">{$CONST.EDIT}</a></li>
<li><a class="link_delete" href="?serendipity[action]=admin&amp;serendipity[adminModule]=comments&amp;serendipity[adminAction]=delete&amp;serendipity[id]={$comment.id}&amp;serendipity[entry_id]={$comment.entry_id}&amp;{$urltoken}" onclick='return confirm("{($CONST.COMMENT_DELETE_CONFIRM|sprintf:$comment.id:$comment.author)|escape}")'>{$CONST.DELETE}</a></li>
<li><a class="link_comment" onclick="cf = window.open(this.href, 'CommentForm', 'width=800,height=600,toolbar=no,scrollbars=1,scrollbars,resize=1,resizable=1'); cf.focus(); return false;" href="?serendipity[action]=admin&amp;serendipity[adminModule]=comments&amp;serendipity[adminAction]=reply&amp;serendipity[id]={$comment.id}&amp;serendipity[entry_id]={$comment.entry_id}&amp;serendipity[noBanner]=true&amp;serendipity[noSidebar]=true&amp;{$urltoken}">{$CONST.REPLY}</a></li>
</ul>
{$comment.action_more}
</div>
</li>
{/foreach}
</ul>
{/if}
<div class="multidelete_actions">
<input name="toggle" type="button" value="{$CONST.INVERT_SELECTIONS}" onclick="invertSelection()">
<input name="toggle" type="submit" value="{$CONST.DELETE_SELECTED_COMMENTS}" onclick="return confirm('{$CONST.COMMENTS_DELETE_CONFIRM}')" tabindex="{($i+1)}">
<input name="serendipity[togglemoderate]" type="submit" value="{$CONST.MODERATE_SELECTED_COMMENTS}">
</div>
{* TODO: Clone pagination using JS *}
</form>
{/if}

View File

@ -0,0 +1,25 @@
{* HTML5: Yes *}
{* jQuery: NN *}
{if $installAction == 'check'}
{if $diagnosticError}
<h2>{$CONST.DIAGNOSTIC_ERROR}</h2>
{foreach $res as $r}
<span class="msg_error">{$r}</span>
{/foreach}
{else}
{if $htaccessRewrite}
<h2>{$CONST.ATTEMPT_WRITE_FILE|sprintf:"{$serendipityPath}htaccess"}</h2>
{if is_array($res)}
{foreach $res as $r}
<span class="msg_notice">{$r}</span>
{/foreach}
{else}
<span class="msg_success">{$CONST.DONE}</span>
{/if}
{/if}
<span class="msg_success">{$CONST.WRITTEN_N_SAVED}</span>
{/if}
{else}
{$config}
{/if}

View File

@ -0,0 +1,205 @@
{* HTML5: Yes *}
{* jQuery: No *}
{if $drawList}
<form action="?" method="get">
<input name="serendipity[action]" type="hidden" value="admin">
<input name="serendipity[adminModule]" type="hidden" value="entries">
<input name="serendipity[adminAction]" type="hidden" value="editSelect">
<fieldset id="filter_entries">
<legend><span>{$CONST.FILTERS} ({$CONST.FIND_ENTRIES})</span></legend>
<div class="clearfix">
<div class="form_select">
<label for="filter_author">{$CONST.AUTHOR}</label>
<select id="filter_author" name="serendipity[filter][author]">
<option value="">-</option>
{if is_array($users)}
{foreach $users AS $user}
{if isset($user.artcount) && $user.artcount < 1}{continue}{/if}
<option value="{$user.authorid}" {(isset($get.filter.author) && ($get.filter.author == $user.authorid)) ? 'selected="selected"' : ''}>{$user.realname|escape}</option>
{/foreach}
{/if}
</select>
<label for="filter_draft" class="visuallyhidden">TODO_LANG</label>
<select id="filter_draft" name="serendipity[filter][isdraft]">
<option value="all">{$CONST.COMMENTS_FILTER_ALL}</option>
<option value="draft" {(isset($get.filter.isdraft) && ($get.filter.isdraft == 'draft') ? 'selected="selected"' : '')}>{$CONST.DRAFT}</option>
<option value="publish" {(isset($get.filter.isdraft) && ($get.filter.isdraft == 'publish') ? 'selected="selected"' : '')}>{$CONST.PUBLISH}</option>
</select>
</div>
<div class="form_select">
<label for="filter_category">{$CONST.CATEGORY}</label>
<select id="filter_category" name="serendipity[filter][category]">
<option value="">-</option>
{foreach $categories as $cat}
<option value="{$cat.categoryid}"{($get.filter.category == $cat.categoryid) ? ' selected="selected"' : ''}>{'&nbsp;'|str_repeat:$cat.depth} {$cat.category_name|escape}</option>
{/foreach}
</select>
</div>
<div class="form_field">
<label for="filter_content">{$CONST.CONTENT}</label>
<input id="filter_content" name="serendipity[filter][body]" type="text" value="{(isset($get.filter.body)) ? "{$get.filter.body|escape}" : ''}">
</div>
</div>
</fieldset>
<fieldset id="sort_entries">
<legend><span>{$CONST.SORT_ORDER}</span></legend>
<div class="clearfix">
<div class="form_select">
<label for="sort_order">{$CONST.SORT_BY}</label>
<select id="sort_order" name="serendipity[sort][order]">
{foreach $sort_order as $so_key => $so_val}
<option value="{$so_key}" {(isset($get.sort.order) && ($get.sort.order == $so_key) ? 'selected="selected"': '')}>{$so_val}</option>
{/foreach}
</select>
</div>
<div class="form_select">
<label for="sort_ordermode">{$CONST.SORT_ORDER}</label>
<select id="sort_ordermode" name="serendipity[sort][ordermode]">
<option value="DESC" {(isset($get.sort.ordermode) && ($get.sort.ordermode == 'DESC') ? 'selected="selected"' : '')}>{$CONST.SORT_ORDER_DESC}</option>
<option value="ASC" {(isset($get.sort.ordermode) && ($get.sort.ordermode == 'ASC') ? 'selected="selected"' : '')}>{$CONST.SORT_ORDER_ASC}</option>
</select>
</div>
<div class="form_select">
<label for="sort_perpage">{$CONST.ENTRIES_PER_PAGE}</label>
<select id="sort_perpage" name="serendipity[sort][perPage]">
{foreach $per_page AS $per_page_nr}
<option value="{$per_page_nr}" {((isset($get.sort.perPage) && ($get.sort.perPage == $per_page_nr)) ? 'selected="selected"' : '')}> {$per_page_nr}</option>
{/foreach}
</select>
</div>
</div>
</fieldset>
<input name="go" type="submit" value="{$CONST.GO}">
</form>
{if $is_entries}
{if $offSet > 0}||$count > $perPage}
<nav class="pagination">
<ul class="clearfix">
{if $offSet > 0}
<li><a class="link_prev" href="{$linkPrevious}">{$CONST.PREVIOUS}</a></li>
{/if}
{if $count > $perPage}
<li><a class="link_next" href="{$linkNext}">{$CONST.NEXT}</a></li>
{/if}
</ul>
</nav>
{/if}
<script src="{serendipity_getFile file='admin/admin_scripts.js'}"></script>
<form id="formMultiDelete" action="?" method="post" name="formMultiDelete">
{$formtoken}
<input name="serendipity[action]" type="hidden" value="admin">
<input name="serendipity[adminModule]" type="hidden" value="entries">
<input name="serendipity[adminAction]" type="hidden" value="multidelete">
<ul class="plainList">
{foreach $entries as $entry}
{if ($entry@index > $perPage)}{continue}{/if}
<li><h3><a href="?serendipity[action]=admin&amp;serendipity[adminModule]=entries&amp;serendipity[adminAction]=edit&amp;serendipity[id]={$entry.id}" title="#{$entry.id}">{$entry.title|escape|truncate:50:"&hellip;"}</a></h3>
<input id="multidelete_entry{$entry.id}" name="serendipity[multiDelete][]" type="checkbox" value="{$entry.id}"><label for="multidelete_entry{$entry.id}" class="visuallyhidden">TODO_LANG #{$entry_id}</label>
<div class="entry_status">
{if (!$showFutureEntries) && ($entry.timestamp >= $serverOffsetHour)}
<span class="status_future">{$CONST.ENTRY_PUBLISHED_FUTURE}</span>
{/if}
{if $entry.ep_is_sticky}
<span class="status_sticky">{$CONST.STICKY_POSTINGS}</span>
{/if}
{if $entry.isdraft}
<span class="status_draft">{$CONST.DRAFT}</span>
{/if}
<span class="status_timestamp">
{$entry.timestamp|@formatTime:"{$CONST.DATE_FORMAT_SHORT}"}{if $entry.timestamp <= ($entry.last_modified - (60*30))} <a href="#" title="{$CONST.LAST_UPDATED}: {$entry.last_modified|@formatTime:"{$CONST.DATE_FORMAT_SHORT}"}" onclick="alert(this.title)">TODO_LANG</a>{/if}
</span>
</div>
<span class="entry_meta">{$CONST.POSTED_BY} {$entry.author|escape}
{if count($entry.cats)} {$CONST.IN}
{foreach $entry.cats AS $cat}
{$cat}{if (count($entry.cats) > 1) && !$cat@last}, {/if}
{/foreach}
{/if}
</span>
<ul class="actions">
{if $entry.preview || (!$showFutureEntries && ($entry.timestamp >= $serverOffsetHour))}
<li><a class="link_view" href="{$entry.preview_link}" title="{$CONST.PREVIEW} #{$entry.id}">{$CONST.PREVIEW}</a></li>
{else}
<li><a class="link_view" href="{$entry.archive_link}" title="{$CONST.VIEW} #{$entry.id}">{$CONST.VIEW}</a></li>
{/if}
<li><a class="link_edit" href="?serendipity[action]=admin&amp;serendipity[adminModule]=entries&amp;serendipity[adminAction]=edit&amp;serendipity[id]={$entry.id}" title="{$CONST.EDIT} #{$entry.id}">{$CONST.EDIT}</a></li>
<li><a class="link_delete" href="?{$urltoken}&amp;serendipity[action]=admin&amp;serendipity[adminModule]=entries&amp;serendipity[adminAction]=delete&amp;serendipity[id]={$entry.id}" title="{$CONST.DELETE} #{$entry.id}">{$CONST.DELETE}</a></li>
</ul>
</li>
{/foreach}
</ul>
{/if}
{* TODO: Clone pagination using JS *}
<div id="multidelete_tools">
<input name="toggle" type="button" value="{$CONST.INVERT_SELECTIONS}" onclick="invertSelection()">
<input name="toggle" type="submit" value="{$CONST.DELETE_SELECTED_ENTRIES}">
</div>
</form>
<form action="?" method="get">
<input name="serendipity[action]" type="hidden" value="admin">
<input name="serendipity[adminModule]" type="hidden" value="entries">
<input name="serendipity[adminAction]" type="hidden" value="editSelect">
<fieldset id="entry_skip" class="clearfix">
<legend><span>{$CONST.EDIT_ENTRY} #</span></legend>
<div class="form_field">
<input id="skipto_entry" name="serendipity[id]" type="text" size="3">
<label for="skipto_entry" class="visuallyhidden">TODO_LANG</label>
</div>
</fieldset>
<input name="serendipity[editSubmit]" type="submit" value="{$CONST.GO}">
</form>
{/if}
{* BUG: This seems to be triggered if only one entry is present and said entry should be deleted? Ian: Is it gone now? *}
{if ( ( (!$switched_output && empty($entries)) || (!$drawList && empty($entries)) ) && ( $get.adminAction != 'new' && $get.adminAction != 'edit' ) && !$is_iframepreview )}
<span class="msg_notice">{$CONST.NO_ENTRIES_TO_PRINT}</span>
{/if}
{if $switched_output}
{if ($get.adminAction && $dateval)}
<span class="msg_error">{$CONST.DATE_INVALID}</span>
{/if}
{if ($get.adminAction && $use_legacy)}
{if $is_draft}
<span class="msg_success">{$CONST.IFRAME_SAVE_DRAFT}</span>
{/if}
{if $is_iframe}
<span class="msg_success">{$CONST.IFRAME_SAVE}</span>
{/if}
{if $is_iframepreview}
<span class="msg_success">{$CONST.IFRAME_PREVIEW}</span>
{/if}
{/if}
{if ($is_doDelete || $is_doMultiDelete )}
{foreach $del_entry AS $delent}
<span class="msg_dialog_delentry">{$delent}</span>
{/foreach}
{/if}
{if ( $is_delete || $is_multidelete )}
{foreach $rip_entry AS $ripent}
<span class="msg_dialog_ripentry">{$ripent}</span>
{/foreach}
<ul class="dialog_delrip plainList clearfix">
<li><a class="link_abort" href="{$smarty.server.HTTP_REFERER|escape}">{$CONST.NOT_REALLY}</a></li>
<li><a class="link_confirm" href="{$newLoc}">{$CONST.DUMP_IT}</a></li>
</ul>
{/if}
{/if}

View File

@ -0,0 +1,4 @@
{* HTML5: Yes *}
{* jQuery: NN *}
<p><strong>{$CONST.WELCOME_BACK} {$smarty.session.serendipityUser|escape}</strong></p>

View File

@ -0,0 +1,4 @@
{* HTML5: Yes *}
{* jQuery: NN *}
<a id="export_rss" class="block_level standalone" href="{$serendipityBaseURL}rss.php?version=2.0&all=1">{$CONST.EXPORT_FEED}</a>

View File

@ -0,0 +1,127 @@
{* HTML5: Yes *}
{* jQuery: NN *}
{if $delete_yes}
<span class="msg_success">{$CONST.DELETED_GROUP|sprintf:"{$group_id|escape:"html"}":"{$group.name|escape:"html"}"}</span>
{/if}
{if $save_new}
<span class="msg_success">{$CONST.CREATED_GROUP|sprintf:"{$group_id|escape:"html"}":"{$group.name|escape:"html"}"}</span>
{/if}
{if $save_edit}
<span class="msg_success">{$CONST.MODIFIED_GROUP|sprintf:"{$name|escape:"html"}"}</span>
{/if}
{if !$delete}
<h2>{$CONST.GROUP}</h2>
<ul id="serendipity_groups" class="plainList">
{foreach $groups as $group}
<li class="clearfix">
<span class="group_name">{$group.name|escape:"html"}</span>
<ul class="plainList edit_actions">
<li><a class="link_edit" href="?serendipity[adminModule]=groups&amp;serendipity[adminAction]=edit&amp;serendipity[group]={$group.id}" title="{$CONST.EDIT} {$group.name|escape:"html"}">{$CONST.EDIT}</a></li>
{* BUG: Doesn't skip to the deletion process - What does that mean??? *}
<li><a class="link_delete" href="?{$deleteFormToken}&amp;serendipity[adminModule]=groups&amp;serendipity[adminAction]=delete&amp;serendipity[group]={$group.id}" title="{$CONST.DELETE} {$group.name|escape:"html"}">{$CONST.DELETE}</a></li>
</ul>
</li>
{/foreach}
</ul>
{if $start}
<form action="?serendipity[adminModule]=groups" method="post">
<input name="NEW" type="submit" value="{$CONST.CREATE_NEW_GROUP}">
</form>
{/if}
{/if}
{if $edit || $new}
<form action="?serendipity[adminModule]=groups" method="post">
{$formToken}
{if $edit}
<h3>{$CONST.EDIT}</h3>
<input name="serendipity[group]" type="hidden" value="{$from.id}">
{else}
<h3>{$CONST.CREATE}</h3>
{/if}
<div class="form_field">
<label for="group_name">{$CONST.NAME}</label>
{* BUG: Doesn't correctly pull the group name *}
<input id="group_name" name="serendipity[name]" type="text" value="{$from.name|escape:"html"}">
</div>
<div class="form_select">
<label for="group_members">{$CONST.USERCONF_GROUPS}</label>
<select id="group_members" name="serendipity[members][]" multiple="multiple" size="5">
{foreach $allusers as $user}
<option value="{$user.authorid}" {if isset($selected.{$user.authorid})} selected="selected"{/if} >{$user.realname|escape:"html"}</option>
{/foreach}
</select>
</div>
{foreach $perms as $perm}
{* TODO: major rewrite *}
{if {{$perm@key}|truncate:"2":""} == 'f_'}{continue}{/if}
{if !isset($section)}
{$section=$perm@key}
{/if}
{if $section != {$perm@key} && {{$perm@key}|truncate:"{$section|count_characters}":""} == $section}
{$indent="&nbsp;&nbsp;"}
{else}
{if $section != {$perm@key}}
{$indent="<br>"}
{$section="{$perm@key}"}
{/if}
{/if}
{if !$perm.permission}
<div>
<span class="perm_name">{$indent} {$perm.permission_name|escape:"html"}</span>
<span class="perm_status">{(isset($from.{$perm@key}) && $from.{$perm@key} == "true") ? $CONST.YES : $CONST.NO}</span>
</div>
{else}
<div class="form_check">
{$indent} <label for="{{$perm@key}|escape:"html"}">{$perm.permission_name|escape:"html"}</label>
<input id="{{$perm@key}|escape:"html"}" name="serendipity[{{$perm@key}|escape:"html"}]" type="checkbox" value="true"{if isset({$from.{$perm@key}}) && {$from.{$perm@key}} == "true"} checked="checked"{/if}>
</div>
{/if}
{/foreach}
{if $enablePluginACL}
<div class="form_select">
<label for="forbidden_plugins">{$CONST.PERMISSION_FORBIDDEN_PLUGINS}</label>
<select id="forbidden_plugins" name="serendipity[forbidden_plugins][]" multiple="multiple" size="5">
{foreach $allplugins as $plugin}
<option value="{{$plugin@key}|escape:"url"}{if $plugin.has_permission == false} selected="selected"{/if}">{$plugin.b->properties.name|escape:"html"}</option>
{/foreach}
</select>
</div>
<div class="form_select">
<label for="forbidden_hooks">{$CONST.PERMISSION_FORBIDDEN_HOOKS}</label>
<select name="serendipity[forbidden_hooks][]" multiple="multiple" size="5">
{foreach $allhooks as $hook}
<option value="{{$hook@key}|escape:"url"}"{$hook.has_permission == false} 'selected="selected"'}>{{$hook@key}|escape:"html"}</option>
{/foreach}
</select>
</div>
{else}
<span class="msg_notice">{$CONST.PERMISSION_FORBIDDEN_ENABLE_DESC}</span>
{/if}
{if $edit}
<input name="SAVE_EDIT" type="submit" value="{$CONST.SAVE}"> {$CONST.WORD_OR} <input name="SAVE_NEW" type="submit" value="{$CONST.CREATE_NEW_GROUP}">
{else}
<input name="SAVE_NEW" type="submit" value="{$CONST.CREATE_NEW_GROUP}">
{/if}
</form>
{else}
{if $delete}
<form action="?serendipity[adminModule]=groups" method="post">
{$formToken}
<input name="serendipity[group]" type="hidden" value="{$group_id|escape:"html"}">
<h2>{$CONST.DELETE_GROUP|sprintf:"{$group_id}":"{$group.name|escape:"html"}"}</h2>
<div id="groups_delete_action">
<input name="DELETE_YES" type="submit" value="{$CONST.DUMP_IT}">
<input name="NO" type="submit" value="{$CONST.NOT_REALLY}">
</div>
</form>
{/if}
{/if}

View File

@ -0,0 +1,300 @@
{* HTML5: Yes *}
{* jQuery: No *}
{if $case_imgedit}
<span class="msg_notice">{$CONST.PREFERENCE_USE_JS_WARNING}</span>
{/if}
{if $case_sync}
{if !$perm_adminImagesSync}
<span class="msg_error">{$CONST.PERM_DENIED}</span>
{else}
<span class="msg_notice">{$CONST.WARNING_THIS_BLAHBLAH|replace:'\\n':'<br>'}</span>
<form method="POST" action="serendipity_admin.php?serendipity[adminModule]=media&amp;serendipity[adminAction]=doSync">
<fieldset>
<legend><span>{$CONST.SYNC_OPTION_LEGEND}</span></legend>
<div class="clearfix">
<div class="form_radio">
<input id="keepthumbs" name="serendipity[deleteThumbs]" type="radio" value="no" checked="checked">
<label for="keepthumbs">{$CONST.SYNC_OPTION_KEEPTHUMBS}</label>
</div>
<div class="form_radio">
<input id="sizecheckthumbs" name="serendipity[deleteThumbs]" type="radio" value="check">
<label for="sizecheckthumbs">{$CONST.SYNC_OPTION_SIZECHECKTHUMBS}</label>
</div>
<div class="form_radio">
<input id="deletethumbs" name="serendipity[deleteThumbs]" type="radio" value="yes">
<label for="deletethumbs">{$CONST.SYNC_OPTION_DELETETHUMBS}</label>
</div>
</div>
</fieldset>
<div class="form_buttons">
<input name="doSync" type="submit" value="{$CONST.CREATE_THUMBS}">
<a href="serendipity_admin.php">{$CONST.ABORT_NOW}</a>
</div>
</form>
{/if}
{/if}
{if $case_doSync}
{if !$perm_adminImagesSync}
<span class="msg_error">{$CONST.PERM_DENIED}</span>
{else}
<h2>{$CONST.SYNCING}</h2>
<span class="msg_success">{$print_SYNC_DONE}</span>
<h2>{$CONST.RESIZING}</h2>
<span class="msg_success">{$print_RESIZE_DONE}</span>
{/if}
{/if}
{if $case_delete}
<span class="msg_notice">{$CONST.ABOUT_TO_DELETE_FILE|sprintf:"$file"}</span>
<form id="delete_image" method="get">
<div class="form_buttons">
<a href="{$newLoc}">{$CONST.DUMP_IT}</a>
<a href="{$abortLoc}">{$CONST.ABORT_NOW}</a>
</div>
</form>
{/if}
{if $switched_output}
<form id="delete_image" method="get">
{if ( $is_delete || $is_multidelete )}
<span class="msg_notice">{$CONST.ABOUT_TO_DELETE_FILES}</span>
{foreach $rip_image AS $ripimg}
<span class="msg_dialog_ripentry">{$ripimg}</span>
{/foreach}
<ul class="dialog_delrip">
<li><a class="link_abort" href="{$smarty.server.HTTP_REFERER|escape}">{$CONST.NOT_REALLY}</a></li>
<li><a class="link_confirm" href="{$newLoc}">{$CONST.DUMP_IT}</a></li>
</ul>
{/if}
</form>
{/if}
{if $case_rename}
{if $go_back}
<input type="button" value="{$CONST.BACK}" onclick="history.go(-1);">
{else}
<script>location.href="?serendipity[adminModule]=images&serendipity[adminAction]=default";</script>
<noscript><a href="?serendipity[adminModule]=images&amp;serendipity[adminAction]=default">{$CONST.DONE}</a></noscript>
{/if}
{/if}
{* TODO: obsolete? *}
{if $case_properties}
{** serendipity_showPropertyForm($new_media) **}
{/if}
{* END TODO *}
{if $case_add}
{if $smarty.post.adminSubAction == 'properties'}
<script>location.href="?serendipity[adminModule]=images&serendipity[adminAction]=default";</script>
<noscript><a href="?serendipity[adminModule]=images&amp;serendipity[adminAction]=default">{$CONST.DONE}</a></noscript>
{else}
{$showML_add}
{/if}
{/if}
{if $case_directoryDoDelete}
{if $print_DIRECTORY_WRITE_ERROR}{$print_DIRECTORY_WRITE_ERROR}{/if}
{if $ob_serendipity_killPath}{$ob_serendipity_killPath}{/if}
{if $print_ERROR_NO_DIRECTORY}{$print_ERROR_NO_DIRECTORY}{/if}
{/if}
{if $case_directoryEdit}
{if !empty($smarty.post.save)}
{if $ob_serendipity_moveMediaDirectory}{$ob_serendipity_moveMediaDirectory}{/if}
<span class="msg_notice">{$print_CONST.SETTINGS_SAVED_AT}</span>
{/if}
<h2>{$CONST.MANAGE_DIRECTORIES}</h2>
<form id="image_directory_edit_form" method="POST" action="?serendipity[adminModule]=images&amp;serendipity[adminAction]=directoryEdit&amp;serendipity[dir]={$dir|escape:'html'}">
{$formtoken}
<input name="serendipity[oldDir]" type="hidden" value="{$use_dir}">
<div class="form_field">
<label for="diredit_new">{$CONST.NAME}</label>
<input id="diredit_new" name="serendipity[newDir]" type="text" value="{$use_dir}">
</div>
<div class="form_select">
<label for="read_authors">{$CONST.PERM_READ}</label>
<select id="read_authors" name="serendipity[read_authors][]" multiple="multiple" size="6">
<option value="0"{if $rgroups} selected="selected"{/if}>{$CONST.ALL_AUTHORS}</option>
{foreach $groups AS $group}
<option value="{$group.confkey}"{if isset($read_groups.{$group.confkey})} selected="selected"{/if}>{$group.confvalue|escape:'html'}</option>
{/foreach}
</select>
</div>
<div class="form_select">
<label for="write_authors">{$CONST.PERM_WRITE}</label>
<select id="write_authors" name="serendipity[write_authors][]" multiple="multiple" size="6">
<option value="0"{if $wgroups} selected="selected"{/if}>{$CONST.ALL_AUTHORS}</option>
{foreach $groups AS $group}
<option value="{$group.confkey}"{if isset($write_groups.{$group.confkey})} selected="selected"{/if}>{$group.confvalue|escape:'html'}</option>
{/foreach}
</select>
</div>
<div class="form_check">
<input id="setchild" name="serendipity[update_children]" type="checkbox" value="true"{if !empty($smarty.post.update_children) == 'on'} checked="checked"{/if}><label for="setchild">{$CONST.PERM_SET_CHILD}</label>
</div>
<input name="serendipity[save]" type="submit" value="{$CONST.SAVE}">
</form>
{/if}
{if $case_directoryDelete}
<h2>{$CONST.DELETE_DIRECTORY}</h2>
<p>{$CONST.DELETE_DIRECTORY_DESC}</p>
<form id="image_directory_delete_form" method="POST" action="?serendipity[adminModule]=images&amp;serendipity[adminAction]=directoryDoDelete&amp;serendipity[dir]={$dir|escape:'html'}">
{$formtoken}
<div class="form_check">
<input id="diredit_delete" name="serendipity[nuke]" type="checkbox" value="true">
<label for="diredit_delete"><b>{$basename_dir}</b> - {$CONST.FORCE_DELETE}</label>
</div>
{* I think this is redudant: <p>{$CONST.CONFIRM_DELETE_DIRECTORY|sprintf:$dir|escape:'html'}</p> *}
<input name="SAVE" type="submit" value="{$CONST.DELETE_DIRECTORY}">
</form>
{/if}
{if $case_directoryDoCreate}
{if $print_DIRECTORY_CREATED}{$print_DIRECTORY_CREATED}{/if}
{if $print_DIRECTORY_WRITE_ERROR}{$print_DIRECTORY_WRITE_ERROR}{/if}
{/if}
{if $case_directoryCreate}
<h2>{$CONST.CREATE_DIRECTORY}</h2>
<p>{$CONST.CREATE_DIRECTORY_DESC}</p>
<form id="image_directory_create_form" method="POST" action="?serendipity[step]=directoryDoCreate&amp;serendipity[adminModule]=images&amp;serendipity[adminAction]=directoryDoCreate">
{$formtoken}
<div class="form_field">
<label for="dircreate_name">{$CONST.NAME}</label>
<input id="dircreate_name" name="serendipity[name]" type="text" value="">
</div>
<div class="form_select">
<label for="dircreate_parent">{$CONST.PARENT_DIRECTORY}</label>
<select id="dircreate_parent" name="serendipity[parent]">
<option value="">{$CONST.BASE_DIRECTORY}</option>
{foreach $folders as $folder}
<option{if $folder.relpath == $get.only_path} selected="selected"{/if} value="{$folder.relpath}">{'&nbsp;'|str_repeat:"($folder.depth*2)"} {$folder.name}</option>
{/foreach}
</select>
</div>
{serendipity_hookPlugin hookAll=true hook="backend_directory_createoptions" addData=$folders}
<input name="SAVE" type="submit" value="{$CONST.CREATE_DIRECTORY}">
</form>
{/if}
{if $case_directorySelect}
<h2>{$CONST.MANAGE_DIRECTORIES}</h2>
<p>{$CONST.DIRECTORIES_AVAILABLE}</p>
<h3>{$CONST.BASE_DIRECTORY}</h3>
<ul class="plainList">
{foreach $folders as $folder}
<li class="level_{$folder.depth} clearfix">
<span class="folder_name">{$folder.name}</span>
<a class="link_edit" href="?serendipity[adminModule]=images&amp;serendipity[adminAction]=directoryEdit&amp;serendipity[dir]={$folder.relpath|escape:'html'}">{$CONST.EDIT}</a>
<a class="link_delete" href="?serendipity[adminModule]=images&amp;serendipity[adminAction]=directoryDelete&amp;serendipity[dir]={$folder.relpath|escape:'html'}">{$CONST.DELETE}</a>
</li>
{/foreach}
</ul>
<a class="link_create block_level" href="?serendipity[adminModule]=images&amp;serendipity[adminAction]=directoryCreate">{$CONST.CREATE_NEW_DIRECTORY}</a>
{/if}
{* TODO: obsolete? *}
{if $case_addSelect}
{** smarty display 'admin/media_upload.tpl' **}
{/if}
{* END TODO *}
{if $case_rotateCW}
{if $rotate_img_done}
<script>location.href="{$adminFile_redirect}";</script>
<noscript><a href="{$adminFile_redirect}">{$CONST.DONE}</a></noscript>
{/if}
{/if}
{if $case_rotateCCW}
{if $rotate_img_done}
<script>location.href="{$adminFile_redirect}";</script>
<noscript><a href="{$adminFile_redirect}">{$CONST.DONE}</a></noscript>
{/if}
{/if}
{if $case_scale}
{if $print_SCALING_IMAGE}<span class="msg_notice">{$print_SCALING_IMAGE}</span>{/if}
{if $print_serendipity_scaleImg}<span class="msg_notice">{$print_serendipity_scaleImg}</span>{/if}
<span class="msg_notice">{$CONST.DONE}</span>
<script>location.href="?serendipity[adminModule]=images&serendipity[adminAction]=default";</script>
<noscript><a href="?serendipity[adminModule]=images&amp;serendipity[adminAction]=default">{$CONST.DONE}</a></noscript>
{/if}
{if $case_scaleSelect}
<script>
<!--
function rescale(dim, newval) {ldelim}
var originalWidth = {$img_width};
var originalHeight = {$img_height};
var ratio = originalHeight/originalWidth;
var trans = new Array();
trans['width'] = new Array('serendipity[height]', ratio);
trans['height'] = new Array('serendipity[width]', 1/ratio);
if (document.serendipityScaleForm.elements['auto'].checked == true) {ldelim}
document.serendipityScaleForm.elements[trans[dim][0]].value=Math.round(trans[dim][1]*newval);
{rdelim}
document.getElementsByName('serendipityScaleImg')[0].style.width =
document.serendipityScaleForm.elements['serendipity[width]'].value+'px';
document.getElementsByName('serendipityScaleImg')[0].style.height =
document.serendipityScaleForm.elements['serendipity[height]'].value+'px';
{rdelim}
//-->
</script>
{if $print_RESIZE_BLAHBLAH}<span class="msg_notice">{$print_RESIZE_BLAHBLAH}</span>{/if}
{if $print_ORIGINAL_SIZE}<span class="msg_notice">{$print_ORIGINAL_SIZE}</span>{/if}
<h2>{$CONST.HERE_YOU_CAN_ENTER_BLAHBLAH}</h2>
<form name="serendipityScaleForm" action="?" method="GET">
{$formtoken}
<input name="serendipity[adminModule]" type="hidden" value="images">
<input name="serendipity[adminAction]" type="hidden" value="scale">
<input name="serendipity[fid]" type="hidden" value="{$get.fid}">
<fieldset>
<legend><span>{$CONST.NEWSIZE}</span></legend>
<div class="form_field">
<label for="resize_width">Width</label> {* i18n *}
<input id="resize_width" name="serendipity[width]" type="text" onchange="rescale('width' , value);" value="{$img_width}">
</div>
<div class="form_field">
<label for="resize_height">Height</label> {* i18n *}
<input id="resize_height" name="serendipity[height]" type="text" onchange="rescale('height', value);" value="{$img_height}">
</div>
</fieldset>
<div class="form_check">
<input id="resize_keepprops" name="auto" type="checkbox" checked="checked">
<label for="resize_keepprops">{$CONST.KEEP_PROPORTIONS}</label>
</div>
<input name="scale" type="button" value="{$CONST.IMAGE_RESIZE}" onclick="if (confirm('{$CONST.REALLY_SCALE_IMAGE}')) document.serendipityScaleForm.submit();">
</form>
<img src="{$file}" name="serendipityScaleImg" style="width: {$img_width}px; height: {$img_height}px;" alt="">
{/if}
{if $case_default}
{if $showML_def}{$showML_def}{/if}
{/if}

View File

@ -0,0 +1,55 @@
{* HTML5: Yes *}
{* jQuery: NN *}
{if $importForm}
{if $die}
<span class="msg_error">FAILURE: Unable to require import module, possible syntax error?</span>
{else}
{if $validateData}
<span class="msg_notice">{$CONST.IMPORT_STARTING}</span>
{if $result != true}
<span class="msg_error">{$CONST.IMPORT_FAILED}: {$result}</span>
{else}
<span class="msg_success">{$CONST.IMPORT_DONE}</span>
{/if}
{else}
<h2>{$CONST.IMPORT_PLEASE_ENTER}</h2>
<form action="" method="POST" enctype="multipart/form-data">
{$formToken}
<dl>
{foreach $fields as $field}
<dt>{$field.text}</dt>
<dd>{$field.guessedInput}</dd>
{/foreach}
</dl>
{if $notes}
<span class="msg_notice">{$CONST.IMPORT_NOTES}: {$notes}</span>
{/if}
<input type="submit" value="{$CONST.IMPORT_NOW}">
</form>
{/if}
{/if}
{else}
<h2>{$CONST.IMPORT_WELCOME}</h2>
<p>{$CONST.IMPORT_WHAT_CAN}</p>
<h3>{$CONST.IMPORT_SELECT}:</h3>
<form action="" method="GET">
<input name="serendipity[adminModule]" type="hidden" value="import">
{$formToken}
<div class="form_select">
<label for="import_from">{$CONST.IMPORT_WEBLOG_APP}:</label>
<select id="import_from" name="serendipity[importFrom]">
{foreach $list as $v => $k}
<option value="{$v}">{$k}</option>
{/foreach}
</select>
</div>
<input type="submit" value="{$CONST.GO}">
</form>
{/if}

View File

@ -0,0 +1,264 @@
{* HTML5: Yes *}
{* jQuery: NN *}
{if $is_errors && is_array($errors)}
{foreach $errors AS $error}
<span class="msg_error">{$error}</span>
{/foreach}
{/if}
{if $getstepint0}
<h2>{$CONST.WELCOME_TO_INSTALLATION}</h2>
<h3>{$CONST.FIRST_WE_TAKE_A_LOOK}</h3>
<p>{$print_ERRORS_ARE_DISPLAYED_IN}</p>
<h3>{$CONST.PRE_INSTALLATION_REPORT|sprintf:$s9yversion}</h3>
<div id="diagnose">
<h4>{$CONST.INTEGRITY}</h4>
<ul class="plainList">
{foreach $installerResultDiagnose_CHECKSUMS AS $cksum}
<li>{$cksum}</li>
{/foreach}
</ul>
<table>
<caption>{$CONST.PHP_INSTALLATION}</caption>
<thead>
<tr>
{* NOTE: These are probably poorly labelled, needs to be checked *}
<th>Key</th> {* i18n *}
<th>Value</th> {* i18n *}
</tr>
</thead>
<tbody>
<tr>
<td>{$CONST.OPERATING_SYSTEM}</td>
<td>{$php_uname}</td>
</tr>
<tr>
<td>{$CONST.WEBSERVER_SAPI}</td>
<td>{$php_sapi_name}</td>
</tr>
<tr>
<td>PHP version >= 5.2.6</td>
<td>{$installerResultDiagnose_VERSION}</td>
</tr>
<tr>
<td>Database extensions</td>
<td>{$installerResultDiagnose_DBTYPE}</td>
</tr>
<tr>
<td>Session extension</td>
<td>{$installerResultDiagnose_SESSION}</td>
</tr>
<tr>
<td>PCRE extension</td>
<td>{$installerResultDiagnose_PCRE}</td>
</tr>
<tr>
<td>GDlib extension</td>
<td>{$installerResultDiagnose_GD}</td>
</tr>
<tr>
<td>OpenSSL extension</td>
<td>{$installerResultDiagnose_OPENSSL}</td>
</tr>
<tr>
<td>mbstring extension</td>
<td>{$installerResultDiagnose_MBSTR}</td>
</tr>
<tr>
<td>iconv extension</td>
<td>{$installerResultDiagnose_ICONV}</td>
</tr>
<tr>
<td>zlib extension</td>
<td>{$installerResultDiagnose_ZLIB}</td>
</tr>
<tr>
<td>Imagemagick binary </td>
<td>{$installerResultDiagnose_IM}</td>
</tr>
</tbody>
</table>
<table>
<caption>{$CONST.PHPINI_CONFIGURATION}</caption>
<thead>
<tr>
<th>&nbsp;</th>
<th>{$CONST.RECOMMENDED}</th>
<th>{$CONST.ACTUAL}</th>
</tr>
</thead>
<tbody>
<tr>
<td>safe_mode</td>
<td><strong>OFF</strong></td>
<td>{$installerResultDiagnose_SSM}</td>
</tr>
<tr>
<td>register_globals</td>
<td><strong>OFF</strong></td>
<td>{$installerResultDiagnose_SRG}</td>
</tr>
<tr>
<td>magic_quotes_gpc</td>
<td><strong>OFF</strong></td>
<td>{$installerResultDiagnose_SMQG}</td>
</tr>
<tr>
<td>magic_quotes_runtime</td>
<td><strong>OFF</strong></td>
<td>{$installerResultDiagnose_SMQR}</td>
</tr>
<tr>
<td>session.use_trans_sid</td>
<td><strong>OFF</strong></td>
<td>{$installerResultDiagnose_SSUTS}</td>
</tr>
<tr>
<td>allow_url_fopen</td>
<td><strong>ON</strong></td>
<td>{$installerResultDiagnose_SAUF}</td>
</tr>
<tr>
<td>file_uploads</td>
<td><strong>ON</strong></td>
<td>{$installerResultDiagnose_SFU}</td>
</tr>
<tr>
<td>post_max_size</td>
<td><strong>10M</strong></td>
<td>{$installerResultDiagnose_SPMS}</td>
</tr>
<tr>
<td>upload_max_filesize</td>
<td><strong>10M</strong></td>
<td>{$installerResultDiagnose_SUMF}</td>
</tr>
<tr>
<td>memory_limit</td>
<td><strong>{($CONST.PHP_INT_SIZE == 4) ? '8M' : '16M'}</strong></td>
<td>{$installerResultDiagnose_SML}</td>
</tr>
</tbody>
</table>
<h4>{$CONST.PERMISSIONS}</h4>
<h5>{$basedir}</h5>
<ul class="plainList">
{foreach $installerResultDiagnose_WRITABLE AS $fwrite}
<li>{$fwrite}</li>
{/foreach}
</ul>
<h5>{$basedir} {$CONST.PATH_SMARTY_COMPILE}</h5>
<ul class="plainList">
{foreach $installerResultDiagnose_COMPILE AS $compile}
<li>{$compile}</li>
{/foreach}
</ul>
<h5>{$basedir}archives/</h5>
<ul class="plainList">
{foreach $installerResultDiagnose_ARCHIVES AS $archives}
<li>{$archives}</li>
{/foreach}
</ul>
<h5>{$basedir}plugins/</h5>
<ul class="plainList">
{foreach $installerResultDiagnose_PLUGINS AS $plugins}
<li>{$plugins}</li>
{/foreach}
</ul>
{if $is_dir_uploads}
<h5>{$basedir}uploads/</h5>
<ul class="plainList">
{foreach $installerResultDiagnose_UPLOADS AS $uploads}
<li>{$uploads}</li>
{/foreach}
</ul>
{/if}
{if $is_imb_executable}
<h5>Execute Imagemagick binary</h5>
<ul class="plainList">
{foreach $installerResultDiagnose_IMB AS $im_binary}
<li>{$im_binary}</li>
{/foreach}
</ul>
{/if}
{if $showWritableNote}
<span class="msg_notice">{$CONST.PROBLEM_PERMISSIONS_HOWTO|sprintf:'chmod 1777'}</span>
{/if}
{if $errorCount > 0}
<span class="msg_error">{$CONST.PROBLEM_DIAGNOSTIC}</span>
<a class="block_level" href="serendipity_admin.php">{$CONST.RECHECK_INSTALLATION}</a>
{else}
<span class="msg_notice">{$CONST.SELECT_INSTALLATION_TYPE}:</span>
<div><a href="?serendipity[step]=2a">{$CONST.SIMPLE_INSTALLATION}</a> - <a href="?serendipity[step]=2b">{$CONST.EXPERT_INSTALLATION}</a></div>
{/if}
</div>
{elseif $s9yGETstep == '2a'}
<form action="?" method="post">
<input name="serendipity[step]" type="hidden" value="{$s9yGETstep}">
<input name="serendipity[getstep]" type="hidden" value="3">
{if $ob_serendipity_printConfigTemplate}{$ob_serendipity_printConfigTemplate}{/if}
<input name="submit" type="submit" value="{$CONST.COMPLETE_INSTALLATION}">
</form>
{elseif $s9yGETstep == '2b'}
<form action="?" method="post">
<input name="serendipity[step]" type="hidden" value="{$s9yGETstep}">
<input name="serendipity[getstep]" type="hidden" value="3">
{if $ob_serendipity_printConfigTemplate}{$ob_serendipity_printConfigTemplate}{/if}
<input name="submit" type="submit" value="{$CONST.COMPLETE_INSTALLATION}">
</form>
{elseif $getstepint3}
<h3>{$CONST.CHECK_DATABASE_EXISTS}</h3>
{if is_array($authors_query)}
<span class="msg_success"><strong>{$CONST.THEY_DO}</strong>, {$CONST.WONT_INSTALL_DB_AGAIN}</span>
{else}
<span class="msg_error"><strong>{$CONST.THEY_DONT}</strong></span>
<ol>
<li>{$CONST.CREATE_DATABASE}{if $install_DB} <strong>{$CONST.DONE}</strong>{/if}</li>
<li>{$CONST.CREATING_PRIMARY_AUTHOR|sprintf:"{$smarty.post.user|escape}"}{if $add_authors} <strong>{$CONST.DONE}</strong>{/if}</li>
<li>{$CONST.SETTING_DEFAULT_TEMPLATE}{if $set_template_vars} <strong>{$CONST.DONE}</strong>{/if}</li>
<li>{$CONST.INSTALLING_DEFAULT_PLUGINS}{if $register_default_plugins} <strong>{$CONST.DONE}</strong>{/if}</li>
</ol>
{/if}
<h3>{$CONST.ATTEMPT_WRITE_FILE|sprintf:'.htaccess'}</h3>
{if $errors_sif === true}
<span class="msg_success">{$CONST.DONE}</span>
{else}
<h4>{$CONST.FAILED}</h4>
<ul class="plainList">
{foreach $errors_sif AS $error_f}
<li><span class="msg_error">{$error_f}</span></li>
{/foreach}
</ul>
{/if}
{if $s9y_installed}
<span class="msg_success">{$CONST.SERENDIPITY_INSTALLED}</span>
<p><strong>{$CONST.THANK_YOU_FOR_CHOOSING}</strong></p>
<a class="block_level" href="{$smarty.post.serendipityHTTPPath}">{$CONST.VISIT_BLOG_HERE}</a>
{else}
<span class="msg_error">{$CONST.ERROR_DETECTED_IN_INSTALL}</span>
{/if}
{/if}

View File

@ -0,0 +1,180 @@
{* HTML5: Yes *}
{* jQuery: No *}
{* serendipity_plugins_admin.inc.php::serendipity_plugin_config() - the OUT_STACK loop *}
{if $ctype == 'seperator'}
{* This could just as well be replaced by a CSS-only solution … *}
<hr>
{* … then again, hr has new meaning in HTML5. *}
{/if}
{if $ctype == 'select'}
<div class="clearfix form_select">
<label for="serendipity_{$config_item}">{$cname}
{if $cdesc != ''}<span>{$cdesc}</span>{/if}
</label>
{* Make sure id creation actually produces unique identifiers *}
<select id="serendipity_{$config_item}" class="direction_{$lang_direction}" name="serendipity[{$postKey}][{$config_item}]{($is_multi_select) ? '[]' : ''}" {($is_multi_select) ? 'multiple="multiple"' : ''} {($is_multi_select && ($select_size > 0)) ? "size='{$select_size}'" : ''}>
{foreach $select AS $select_value => $select_desc}
{assign var="id" value="{$config_item|escape}_{$select_value|escape}"}
<!-- case select assign id={$id} -->
<option value="{$select_value}" {(in_array($select_value, $selected_options) || in_array($select_value, $pre_selected)) ? 'selected="selected"' : ''} title="{$select_desc|escape}">{$select_desc|escape}</option>
{/foreach}
</select>
</div>
{/if}
{if $ctype == 'radio'}
<div class="clearfix">
<fieldset>
<legend><span>{$cname}</span></legend>
{if $cdesc != ''}<p>{$cdesc}</p>{/if}
<div class="clearfix">
{foreach $radio_button AS $r}
<div class="form_radio">
<input id="serendipity_plugin_{$r['id']}" class="direction_{$lang_direction}" name="serendipity[{$postKey}][{$config_item}]" type="radio" value="{$r['value']}" {(!empty($r['checked'])) ? 'checked="checked"' : ''} title="{$r['index']|escape}">
<label for="serendipity_plugin_{$r['id']}">{$r['index']}{* escapement is already done *}</label>
{assign var="r" value="counter[0]"}
</div>
{/foreach}
</div>
</fieldset>
</div>
{/if}
{if $ctype == 'string'}
<div class="clearfix form_field">
<label for="serendipity_{$config_item}">{$cname}
{if $cdesc != ''}<span>{$cdesc}</span>{/if}
</label>
{* TODO: Make sure id creation actually produces unique identifiers *}
<input id="serendipity_{$config_item}" class="direction_{$lang_direction}" name="serendipity[{$postKey}][{$config_item}]" type="{$input_type}" value="{$hvalue}">
</div>
{/if}
{if (($ctype == 'html') || ($ctype == 'text'))}
<div class="clearfix form_area">
<label for="nuggets{$elcount}">{$cname}
{if $cdesc != ''}<span>{$cdesc}</span>{/if}
</label>
<textarea id="nuggets{$elcount}" class="direction_{$lang_direction}" name="serendipity[{$postKey}][{$config_item}]" rows="{$text_rows}">{$hvalue}</textarea>
</div>
{/if}
{if $ctype == 'content'}
<div class="clearfix">
{$cbag_default}
</div>
{/if}
{if $ctype == 'custom'}
<div class="clearfix">
<input id="config_{$postKey}_{$config_item}" name="serendipity[{$postKey}][{$config_item}]" type="hidden" value="{$hvalue}">
{$cbag_custom}
</div>
{/if}
{if $ctype == 'hidden'}
<div class="clearfix">
<input name="serendipity[{$postKey}][{$config_item}]" type="hidden" value="{$cbag_value}">
</div>
{/if}
{if $ctype == 'media'}
<div class="clearfix">
{if !$mediajs_output}
<script src="serendipity_editor.js"></script>
<script src="{serendipity_getFile file='admin/image_selector.js'}"></script>
{/if}
<label for="serendipity[{$postKey}][{$config_item}]">{$cname}
{if $cdesc != ''}<span>{$cdesc}</span>{/if}
</label>
<div id="{$config_item}_preview" style="background-image: url({$value}); width: {$preview_width}; height: {$preview_height}; background-repeat: no-repeat;">&nbsp;</div>
{* This should be input[type=file] … *}
<input id="serendipity[{$postKey}][{$config_item}]" name="serendipity[{$postKey}][{$config_item}]" type="text" value="{$value}" onchange="change_preview('{$config_item}')">
<a href="#" onclick="choose_media('serendipity[{$postKey}][{$config_item}]')">{$CONST.MEDIA_LIBRARY}</a>
{* … not touching it in order to not break it for now. *}
</div>
{/if}
{if $ctype == 'sequence'}
<div class="clearfix">
{if !$sequencejs_output}
<script src="{serendipity_getFile file='dragdrop.js'}"></script>
{/if}
<fieldset>
<legend><span>{$cname}</span></legend>
{if $cdesc != ''}
<p>{$cdesc}</p>
{/if}
<input id="{$config_item}_value" name="serendipity[{$postKey}][{$config_item}]" type="hidden" value="{$value}">
<noscript>
<!-- Replace standard submit button when using up/down submits -->
<input name="SAVECONF" type="hidden" value="Save">
</noscript>
<ol id="{$config_item}" class="sequence_container pluginmanager_container">
{foreach $order_id as $orid}
<li id="{$orid['id']}" class="sequence_item pluginmanager_item_even">
<div id="g{$orid['id']}" class="pluginmanager_grablet sequence_grablet"><a href="#"></a></div>
{if $checkable}
<input id="activate_{$orid['id']}" name="serendipity[{$postKey}][activate][{$config_item}][{$orid['id']}]" {(in_array($orid['id'], $store_order)) ? ' checked="checked" ' : ''} type="checkbox" onclick="sort_{$config_item}_Sequence();" value="true">
{/if}
<span>{$items[{$orid['id']}]['display']}</span>
{if isset($items[{$orid['id']}]['img'])}
<img src="{$items[{$orid['id']}]['img']}">
{/if}
<noscript>
<div>
{if ($orid['sort_idx'] == 0)}
&nbsp;
{else}
{* Button label should be localized *}
<button id="{$postKey}_{$config_item}_{$orid['sort_idx']}_up" name="serendipity[{$postKey}][override][{$config_item}]" type="submit" value="{$orid['oneup']}">Move Up</button>
{/if}
{if ($orid['sort_idx'] == $last)}
&nbsp;
{else}
{* Button label should be localized *}
<button id="{$postKey}_{$config_item}_{$orid['sort_idx']}_down" name="serendipity[{$postKey}][override][{$config_item}]" type="submit" value="{$orid['onedown']}">Move Down</button>
{/if}
</div>
</noscript>
</li>
{/foreach}
</ol>
{if (!is_array($items) || empty($order_id))}
{$none}
{/if}
</fieldset>
{* Smarty 3 has a new auto literal option which is enabled by default.
When the { is followed by a space it's not interpreted as smarty delimiter but literal. *}
<script>
function sort_{$config_item}_Sequence() {
//var seq = DragDrop.serData('{$config_item}_group', null);
var seq = DragDrop.serData(null, '{$config_item}');
var start = seq.indexOf("(");
var end = seq.indexOf(")");
seq = seq.slice((start + 1), end);
checkable_seq = seq.split(",");
out_seq = '';
for (i in checkable_seq) {
if (document.getElementById('activate_' + checkable_seq[i]) && !document.getElementById('activate_' + checkable_seq[i]).checked) {
continue;
} else {
if (out_seq != '') {
out_seq += ',';
}
out_seq += checkable_seq[i];
}
}
var order = document.getElementById("{$config_item}_value");
order.value = out_seq;
}
function init_{$config_item}_Sequence() {
var lst = document.getElementById("{$config_item}");
DragDrop.makeListContainer(lst, '{$config_item}_group');
lst.onDragOut = function() {
sort_{$config_item}_Sequence();
};
}
addLoadEvent(init_{$config_item}_Sequence);
</script>
</div>
{/if}

View File

@ -0,0 +1,16 @@
{* HTML5: Yes *}
{* jQuery: NN*}
<h2>{$output.welcome}</h2>
{$output.more}
{if $output.show_links}
<aside class="{$output.links_css}">
<h3>{$output.links_title}</h3>
<ul class="plainList">
{foreach $output.links AS $link}
<li>{$link}</li>
{/foreach}
</ul>
</aside>
{/if}

View File

@ -0,0 +1,19 @@
{* HTML5: Yes *}
{* jQuery: NN *}
{if $adminAction == 'save'}
{if $not_authorized}
<span class="msg_error">{$CONST.CREATE_NOT_AUTHORIZED_USERLEVEL}</span>
{elseif $empty_username}
<span class="msg_error">{$CONST.USERCONF_CHECK_USERNAME_ERROR}</span>
{elseif $password_check_fail}
<span class="msg_error">{$CONST.USERCONF_CHECK_PASSWORD_ERROR}</span>
{else}
<span class="msg_success">{$CONST.MODIFIED_USER|sprintf:"{$realname|escape:"html"}"} ?></span>
{/if}
{/if}
<form action="?serendipity[adminModule]=personal&amp;serendipity[adminAction]=save" method="post">
{$formToken}
{$config}
<input name="SAVE" type="submit" value="{$CONST.SAVE}">
</form>

View File

@ -0,0 +1,149 @@
{* HTML5: Yes *}
{* jQuery: NN *}
{if $plugin_to_conf}
{if is_array($save_errors)}
<div class="msg_error">
<h2>{$CONST.ERROR}:</h2>
<ul class="plainList">
{foreach $save_errors as $save_error}
<li>$save_error</li>
{/foreach}
</ul>
</div>
{elseif $saveconf}
<span class="msg_success">{$CONST.DONE}: {$CONST.SETTINGS_SAVED_AT|sprintf:"$timestamp"}</span>
{/if}
<form method="post" name="serendipityPluginConfigure">
{$formToken}
<div class="plugin_info">
<h2>{$name} (<span class="plugin_class">{$class}</span>)</h2>
<p><strong>{$CONST.DESCRIPTION}:</strong> {$desc}</p>
{if !empty($license)}
<p><strong>{$CONST.MEDIA_PROPERTY_COPYRIGHT}:</strong> {$license}</p>
{/if}
{if ! empty($documentation) || $changelog || $documentation_local}
<ul class="plainList">
{if !empty($documentation)}
<li><a href="{$documentation|escape:"html"}">{$CONST.PLUGIN_DOCUMENTATION}</a></li>
{/if}
{if $changelog}
<li><a href="plugins/{$plugin->act_pluginPath}/ChangeLog">{$CONST.PLUGIN_DOCUMENTATION_CHANGELOG}</a></li>
{/if}
{if $documentation_local}
<li><a href="plugins/{$plugin->act_pluginPath}{$documentation}">{$CONST.PLUGIN_DOCUMENTATION_LOCAL}</a></li>
{/if}
</ul>
{/if}
</div>
{$config}
</form>
{elseif $adminAction == 'addnew'}
<h3>{if $type == 'event'}{$CONST.EVENT_PLUGINS}{else}{$CONST.SIDEBAR_PLUGINS}{/if} <span class="plugins_available">{$CONST.PLUGIN_AVAILABLE_COUNT|sprintf:"count({$pluginstack})"}</span></h3>
{foreach $errorstack as $e_idx => $e_name}
<span class="msg_error">{$CONST.ERROR}: {$e_name}</span>
{/foreach}
<form action="serendipity_admin.php" method="get">
{$formToken}
<input name="serendipity[adminModule]" type="hidden" value="plugins">
<input name="serendipity[adminAction]" type="hidden" value="addnew">
<input name="serendipity[type]" type="hidden" value="{$type|escape:"html"}">
<div class="form_select">
<label for="only_group">{$CONST.FILTERS}</label>
<select id="only_group" name="serendipity[only_group]">
{foreach $groupnames as $available_group => $available_name}
<option value="{$available_group}"{if $only_group == $available_group} selected="selected"{/if}>{$available_name}</option>
{/foreach}
<option value="ALL"{if $only_group == ALL} selected="selected"{/if}>{$CONST.ALL_CATEGORIES}</option>
<option value="UPGRADE"{if $only_group == UPGRADE} selected="selected"{/if}>{$CONST.WORD_NEW}</option>
</select>
</div>
<input type="submit" value="{$CONST.GO}">
</form>
{foreach $pluggroups AS $pluggroup => $groupstack}
{if empty($pluggroup)}
{if !empty($only_group)}{continue}{/if}
{elseif !empty($only_group) && $pluggroup != $only_group}{continue}{else}
<h4>{foreach $groupnames as $available_group => $available_name}{if $pluggroup == $available_group}{$available_name}{/if}{/foreach}</h4>
{/if}
<ul class="plainList">
{foreach $groupstack as $plug}
<li><h5>{$plug.name} ({$plug.class_name})</h5>
<p class="plugin_desc">{$plug.description}</p>
<ul class="plugin_info">
{if ! empty($plug.author)}
<li class="plugin_author">{$CONST.AUTHOR}: {$plug.author}</li>
{/if}
{if ! empty($plug.version)}
<li class="plugin_version">{$CONST.VERSION}: {$plug.version}</li>
{/if}
{if ! empty($plug.website)}
<li class="plugin_web"><a href="{$plug.website|escape:"html"}">{$CONST.PLUGIN_DOCUMENTATION}</a></li>
{/if}
{if ! empty($plug.local_documentation)}
<li class="plugin_localdoc"><a href="{$plug.local_documentation|escape:"html"}">{$CONST.PLUGIN_DOCUMENTATION_LOCAL}</a></li>
{/if}
{if ! empty($plug.changelog)}
<li class="plugin_changelog"><a href="{$plug.changelog|escape:"html"}">{$CONST.PLUGIN_DOCUMENTATION_CHANGELOG}</a></li>
{/if}
{if ! empty({$plug.upgrade_version}) && $plug.upgrade_version != $plug.version}
<li class="plugin_toversion">{$CONST.UPGRADE_TO_VERSION|sprintf:"{$plug.upgrade_version}"}{if ! empty($plug.pluginlocation) && $plug.pluginlocation != 'local'} ({$plug.pluginlocation|escape:"html"}){/if}</li>
{/if}
</ul>
<div class="plugin_status">
{if isset($requirements_failures.{$plug.class_name})}
<span class="unmet_requirements">{$CONST.UNMET_REQUIREMENTS|sprintf:"{if $requirements_failures.{$plug.class_name}.s9y}s9y $plug.requirements..serendipity,{/if} {if $requirements_failures.{$plug.class_name}.php}PHP $plug.requirements.php,{/if} {if $requirements_failures.{$plug.class_name}.smarty}Smarty $plug.requirements.smarty{/if}"}</span>
{elseif $plug['upgradable'] == true}
<a class="upgradable" href="?serendipity[adminModule]=plugins&amp;serendipity[pluginPath]={$plug.pluginPath}&amp;serendipity[install_plugin]={$plug.plugin_class}{if isset($plug['customURI'])}{$plug.customURI}{/if}">{$CONST.UPGRADE}</a>
{elseif $plug.installable == true}
<a class="installable" href="?serendipity[adminModule]=plugins&amp;serendipity[pluginPath]={$plug.pluginPath}&amp;serendipity[install_plugin]={$plug.plugin_class}{if isset($plug.customURI)}{$plug.customURI}{/if}">{$CONST.INSTALL}</a>
{else}
<span class="installed">{$CONST.ALREADY_INSTALLED}</span>
{/if}
</div>
</li>
{/foreach}
</ul>
{/foreach}
{else}
{if $save}
<span class="msg_success">{$CONST.DONE}:{$CONST.SETTINGS_SAVED_AT|sprintf:"$timestamp"}</span>
{/if}
<h2>{$CONST.BELOW_IS_A_LIST_OF_INSTALLED_PLUGINS}</h2>
{if $eyecandy}
<script src="{serendipity_getFile file="dragdrop.js"}"></script>
<span class="msg_notice">{$CONST.PREFERENCE_USE_JS_WARNING}</span>
{/if}
<section id="pluginlist_sidebar">
<h3>{$CONST.SIDEBAR_PLUGINS}</h3>
<a class="install_plugins block_level" href="?serendipity[adminModule]=plugins&amp;serendipity[adminAction]=addnew">{$CONST.CLICK_HERE_TO_INSTALL_PLUGIN|sprintf:"{$CONST.SIDEBAR_PLUGIN}"}</a>
{$backend_plugins_sidebar_header}
{$sidebar_plugins}
</section>
<section id="pluginlist_event">
<h3>{$CONST.EVENT_PLUGINS}</h3>
<a class="install_plugins block_level" href="?serendipity[adminModule]=plugins&amp;serendipity[adminAction]=addnew&amp;serendipity[type]=event">{$CONST.CLICK_HERE_TO_INSTALL_PLUGIN|sprintf:"{$CONST.EVENT_PLUGIN}"}</a>
{$backend_plugins_event_header}
{$event_plugins}
</section>
{if $memsnaps}
<section>
<h3>Memory Usage</h3>
<pre>{$memSnaps|print_r}</pre>
</section>
{/if}
{/if}

View File

@ -0,0 +1,66 @@
{* HTML5: Yes *}
{* jQuery: No *}
{* serendipity_plugins_admin.inc.php::serendipity_plugin_config() *}
<script>
var const_view = '{$CONST.VIEW_FULL}';
var const_hide = '{$CONST.HIDE}';
var img_plus = '{serendipity_getFile file="img/plus.png"}';
var img_minus = '{serendipity_getFile file="img/minus.png"}';
</script>
{if $allow_admin_scripts}
<script src="{serendipity_getFile file='admin/admin_scripts.js'}"></script>
{/if}
{if $showSubmit_head}
<div class="save_conf">
<input name="SAVECONF" type="submit" value="{$CONST.SAVE}">
</div>
{/if}
{if $showTable}
<div id="serendipity_plugin_config">
{/if}
{if is_array($config_groups)}
<a id="optionall" href="#" onClick="showConfigAll({sizeof($config_groups)}); return false" title="{$CONST.TOGGLE_ALL}">{$CONST.TOGGLE_ALL}</a>
{foreach $config_groups AS $config_header => $config_groupkeys}
<h2><a id="optionel{$config_groupkeys@iteration}" href="#" onClick="showConfig('el{$config_groupkeys@iteration}'); return false" title="{$CONST.TOGGLE_OPTION}">{$config_header}</a></h2>
<div id="el{$config_groupkeys@iteration}" class="plugin_optiongroup">
{foreach $config_groupkeys AS $config_groupkey}
{$OUT_STACK[$config_groupkey]}
{/foreach}
</div>
<script>document.getElementById('el{$config_groupkeys@iteration}').style.display = "none";</script>
{/foreach}
{* Is this really necessary? What for? *}
<div id="configuration_footer">&nbsp;</div>
{* If it is not, drop the inline style from CSS. *}
{/if} {* foreach config_groups end *}
{foreach $OUT_STACK_REST as $out_stack_config_item}
{$out_stack_config_item}
{/foreach}
{if $showTable}
</div>
{/if}
{* $serendipity_printConfigJS *}{* outsourced to templates/default/admin/admin_scripts.js - see passed vars on top *}
{if $showSubmit_foot}
<div class="save_conf">
<input name="SAVECONF" type="submit" value="{$CONST.SAVE}">
</div>
{/if}
{if $showExample}
<div>{$plugin_example}</div>
{/if}
{if $spawnNuggets}
{serendipity_hookPlugin hook="backend_wysiwyg_nuggets" eventData=$ev hookAll=true}
{if ($ev['skip_nuggets'] === false)}
<script>
function Spawnnugget() {
{foreach $htmlnugget AS $htmlnuggetid}
Spawnnuggets('{$htmlnuggetid}');
{/foreach}
}
</script>
{/if}
{/if}

View File

@ -0,0 +1,23 @@
{* HTML5: Yes *}
{* jQuery: NN *}
{* functions_plugins_admin.inc.php::function ownership() *}
{if $show_ownership}
{if $is_plugin_owner}
<select name="serendipity[ownership][{$name}]">
<option value="0">{$CONST.ALL_AUTHORS}</option>
{/if}
{foreach $users AS $user}
{if (!$is_plugin_owner && ($user['authorid'] == $authorid))}
{assign var="realname" value="{$user['realname']|escape}"}
{elseif $is_plugin_owner}
<option value="{$user['authorid']}"{($user['authorid'] == $authorid) ? ' selected="selected"' : ''}>{$user['realname']|escape}</option>
{/if}
{/foreach}
{if $is_plugin_owner}
</select>
{else}
{(empty($realname)) ? $CONST.ALL_AUTHORS : $realname}
{/if}
{/if}

View File

@ -0,0 +1,83 @@
{* HTML5: Yes *}
{* jQuery: No *}
{* functions_plugins_admin.inc.php::function_show_plugins() including output of functions_plugins_admin.inc.php::function ownership() *}
{if !$eyecandy}
<form action="?serendipity[adminModule]=plugins" method="post">
{elseif !$event_only}
{* Smarty 3 has a new auto literal option which is enabled by default.
When the { is followed by a space it's not interpreted as smarty delimiter but literal. *}
<script>
function templatePluginMoverInit() {
{foreach $plugin_placements AS $sidebar}
{($is_first) ? 'var' : ''} list = document.getElementById("{$sidebar}_col");
DragDrop.makeListContainer(list, 'g1');
list.onDragOver = function() { this.style["border"] = "1px solid #4d759b"; };
list.onDragOut = function() { this.style["border"] = "none"; };
{assign var="is_first" value=false}
{/foreach}
}
addLoadEvent(templatePluginMoverInit);
</script>
<form action="?serendipity[adminModule]=plugins" method="post" onsubmit="pluginMovergetSort(); return true">
<input id="order" name="serendipity[pluginorder]" type="hidden" value="">
{else}
<script>addLoadEvent(pluginMoverInitEvent);</script>
<form action="?serendipity[adminModule]=plugins" method="post" onsubmit="pluginMovergetSortEvent(); return true">
<input id="eventorder" name="serendipity[pluginorder]" type="hidden" value="">
{/if}
{$serendipity_setFormToken}
<div class="clearfix pluginmanager">
{foreach $placement as $plugin_placement}
<div class="pluginmanager_side pluginmanager_{($event_only) ? 'event' : 'sidebar'}">
<h4>{$plugin_placement['ptitle']}</h4>
<ol id="{$plugin_placement['pid']}_col" class="pluginmanager_container plainList">
{foreach $plugin_placement['plugin_data'] as $plugin_data}
<li id="{$plugin_data['css_key']}" class="pluginmanager_item_{cycle values="even,uneven"}">
<div id="g{$plugin_data['css_key']}" class="pluginmanager_grablet">
<a id="grab{$plugin_data['css_key']}" href="#">Move</a>{* i18n *}
</div>
{if $plugin_data['is_plugin_editable']}
<div class="form_check">
<input id="remove_{$plugin_data['name']}" name="serendipity[plugin_to_remove][]" type="checkbox" value="{$plugin_data['name']}">
<label for="remove_{$plugin_data['name']}" class="visuallyhidden">Remove this plugin</label>{* i18n *}
</div>
{/if}
{if $plugin_data['can_configure']}
<a class="pluginmanager_configure" href="?serendipity[adminModule]=plugins&amp;serendipity[plugin_to_conf]={$plugin_data['key']}">{$CONST.CONFIGURATION}</a>
{/if}
<h5>
{if $plugin_data['can_configure']}
<a title="{$plugin_data['name']}" href="?serendipity[adminModule]=plugins&amp;serendipity[plugin_to_conf]={$plugin_data['key']}">{$plugin_data['title']}</a>
{else}
{$plugin_data['title']}
{/if}
</h5>
<ul class="pluginmanager_plugininfo plainList">
<li class="pluginmanager_description">{$plugin_data['desc']}</li>
<li class="pluginmanager_ownership">{$plugin_data['ownership']}</li>
{($eyecandy) ? '<noscript>' : ''}
<li class="pluginmanager_place">{$plugin_data['place']}</li>
<li class="pluginmanager_move">{$plugin_data['moveup']} {$plugin_data['movedown']}</li>
{($eyecandy) ? '</noscript>' : ''}
</ul>
</li>
{/foreach}
</ol>
</div>
{/foreach}
<span class="plugin_count block_level">{$CONST.PLUGIN_AVAILABLE_COUNT|sprintf:$total}</span>
</div>
<div class="form_buttons">
<input name="REMOVE" type="submit" title="{$CONST.DELETE}" value="{$CONST.REMOVE_TICKED_PLUGINS}">
<input name="SAVE" type="submit" title="{$CONST.SAVE_CHANGES_TO_LAYOUT}" value="{$CONST.SAVE}">
</div>
</form>

View File

@ -0,0 +1,71 @@
{* HTML5: Yes *}
{* jQuery: NN *}
{if $adminAction == 'install'}
<span class="msg_success">{$install_template|string_format:"{$CONST.TEMPLATE_SET}"}</span>
{/if}
{if $deprecated}
<span class="msg_notice">{$CONST.WARNING_TEMPLATE_DEPRECATED}</span>
{/if}
<section id="template_options">
<h2>{$CONST.STYLE_OPTIONS} ({$cur_template})</h2>
{if $has_config}
{if $adminAction == 'configure'}
<span class="msg_success">{$CONST.DONE}: {$save_time}</span>
{/if}
<form method="post" action="serendipity_admin.php">
<input name="serendipity[adminModule]" type="hidden" value="templates">
<input name="serendipity[adminAction]" type="hidden" value="configure">
{$form_token}
{$configuration}
</form>
{else}
<p>{$CONST.STYLE_OPTIONS_NONE}</p>
{/if}
</section>
<section id="template_select">
<h2>{$CONST.SELECT_TEMPLATE}</h2>
<ul class="plainList clearfix">
{foreach $templates as $template=>$info}
{if $info.info.engine == 'yes'}{continue}{/if}
{if !empty($template)}
<li><article class="clearfix">
<h3>{$info.info.name}</h3>
{if $info.fullsize_preview || $info.preview}
<div class="preview_image">
{if $info.fullsize_preview}<a href="{$info.fullsize_preview}">{/if}
{if $info.preview}<img src="{$info.preview}" alt="{$CONST.PREVIEW}" >{/if}
{if $info.fullsize_preview}</a>{/if}
</div>
{/if}
<details class="template_info">
<summary>Template info</summary> {* i18n *}
<dl class="clearfix">
<dt class="template_author">{$CONST.AUTHOR}:</dt>
<dd>{$info.info.author}</dd>
<dt class="template_date">{$CONST.LAST_UPDATED}:</dt>
<dd>{$info.info.date}</dd>
<dt class="template_admin">{$CONST.CUSTOM_ADMIN_INTERFACE}:</dt>
<dd>{$info.info.custom_admin_interface}</dd>
</dl>
</details>
<div class="template_status">
{if $template != $cur_template}
{if !$info.unmetRequirements}
<a href="?serendipity[adminModule]=templates&amp;serendipity[adminAction]=install&amp;serendipity[theme]={$template}{$info.info.customURI}">{$CONST.SET_AS_TEMPLATE}</a>
{else}
<span class="unmet_requirements block_level">{$info.unmetRequirements}></span>
{/if}
{else}
<span class="installed block_level">{$CONST.ALREADY_INSTALLED}</span>
{/if}
</div>
</article>
</li>
{/if}
{/foreach}
</ul>
</section>

View File

@ -0,0 +1,116 @@
{* HTML5: Yes *}
{* jQuery: NN *}
{if ($get.action == 'ignore')}
{* TODO: don't know what to put here? *}
{elseif ($get.action == 'upgrade')}
{foreach $call_tasks AS $ctask}
{if $is_callable_task}
{$ctasks}
{/if}
{/foreach}
{if $errors}
<h2>{$CONST.DIAGNOSTIC_ERROR}</h2>
<div class="msg_error">
{foreach $errors AS $implode_err}
<p>{$implode_err}</p>
{/foreach}
</div>
{/if}
{/if}
{if (($showAbort && $get.action == 'ignore') || $get.action == 'upgrade')}
{if $get.action == 'ignore'}
<span class="msg_notice">{$CONST.SERENDIPITY_UPGRADER_YOU_HAVE_IGNORED}</span>
{elseif $get.action == 'upgrade'}
<span class="msg_success">{$CONST.SERENDIPITY_UPGRADER_NOW_UPGRADED|sprintf:$s9y_version}</span>
{/if}
{if $return_here}
{$print_UPGRADER_RETURN_HERE}
{* could also be used as: {$CONST.SERENDIPITY_UPGRADER_RETURN_HERE|sprintf:"<a href='$serendipityHTTPPath'>":'</a>'} *}
{/if}
{else}
<h2>{$CONST.SERENDIPITY_UPGRADER_WELCOME}</h2>
<p>{$CONST.SERENDIPITY_UPGRADER_PURPOSE|sprintf:$s9y_version_installed}</p>
<p>{$CONST.SERENDIPITY_UPGRADER_WHY|sprintf:$s9y_version}</p>
<h3>{$CONST.FIRST_WE_TAKE_A_LOOK}</h3>
<div class="diagnose">
<span class="msg_notice">{$result_diagnose}.</span>
{if $checksums}
<h4>{$CONST.INTEGRITY}</h4>
<ul>
{foreach $upgraderResultDiagnose1 AS $urd1}
<li>{$urd1}</li>
{/foreach}
</ul>
{/if}
<h4>{$CONST.PERMISSIONS}</h4>
<dl>
<dt>{$basedir}</dt>
{foreach $upgraderResultDiagnose2 AS $urd2}
<dd>{$urd2}</dd>
{/foreach}
<dt>{$basedir}{$CONST.PATH_SMARTY_COMPILE}</dt>
{foreach $upgraderResultDiagnose3 AS $urd3}
<dd>{$urd3}</dd>
{/foreach}
{if $isdir_uploadpath}
<dt>{$basedir}{$uploadHTTPPath}</dt>
{foreach $upgraderResultDiagnose4 AS $urd4}
<dd>{$urd4}</dd>
{/foreach}
{/if}
</dl>
{if $showWritableNote}
<span class="msg_notice">{$CONST.PROBLEM_PERMISSIONS_HOWTO|sprintf:'chmod 1777'}</span>
{/if}
{if ($errorCount > 0)}
<span class="msg_error">{$CONST.PROBLEM_DIAGNOSTIC}</span>
<a class="link_reload block_level" href="serendipity_admin.php">{$CONST.RECHECK_INSTALLATION}</a>
{/if}
</div>
{if ($errorCount < 1)}
{if (sizeof($sqlfiles) > 0)}
<h3>{$database_update_types}:</h3>
<p>{$CONST.SERENDIPITY_UPGRADER_FOUND_SQL_FILES}:</p>
{if is_array($sqlfiles) && !empty($sqlfiles)}
<ul>
{foreach $sqlfiles as $sqlfile}
<li>{$sqlfile}</li>
{/foreach}
</ul>
{/if}
{/if}
<h3>{$CONST.SERENDIPITY_UPGRADER_VERSION_SPECIFIC}:</h3>
{if is_array($tasks) && !empty($tasks)}
<dl>
{foreach $tasks as $task}
<dt>{$task.version} - {$task.title}</dl>
<dd>{$task.desc|nl2br}</dd>
{/foreach}
</dl>
{/if}
{if ($taskCount == 0)}
<p>{$CONST.SERENDIPITY_UPGRADER_NO_VERSION_SPECIFIC}</p>
{/if}
{if (($taskCount > 0) || (sizeof($sqlfiles) > 0))}
<h3>{$CONST.SERENDIPITY_UPGRADER_PROCEED_QUESTION}</h3>
<a class="block_level" href="{$upgradeLoc}">{$CONST.SERENDIPITY_UPGRADER_PROCEED_DOIT}</a>{if $showAbort} <a href="{$abortLoc}">{$CONST.SERENDIPITY_UPGRADER_PROCEED_ABORT}</a>{/if}
{else}
<h3>{$CONST.SERENDIPITY_UPGRADER_NO_UPGRADES}</h3>
<a class="block_level" href="{$upgradeLoc}">{$CONST.SERENDIPITY_UPGRADER_CONSIDER_DONE}</a>
{/if}
{/if}
{/if}

View File

@ -0,0 +1,91 @@
{* HTML5: Yes *}
{* jQuery: NN *}
{if $delete_yes}
{if $no_delete_permission}
<span class="msg_error">{$CONST.CREATE_NOT_AUTHORIZED}</span>
{else}
{if $no_delete_permission_userlevel}
<span class="msg_error">{$CONST.CREATE_NOT_AUTHORIZED_USERLEVEL}</span>
{else}
{if $delete_permission}
<span class="msg_success">{$CONST.DELETED_USER|sprintf:"{$user|escape:"html"}":"{$realname|escape:"html"}"}</span>
{else}
<span class="msg_error">{$CONST.CREATE_NOT_AUTHORIZED_USERLEVEL}</span>
{/if}
{/if}
{/if}
{/if}
{if $save_new}
{if $no_save_permission}
<span class="msg_error">{$CONST.CREATE_NOT_AUTHORIZED}</span>
{else}
{if $no_group_selected}
<span class="msg_error">{$CONST.WARNING_NO_GROUPS_SELECTED}</span>
{/if}
<span class="msg_success">{$CONST.CREATED_USER|sprintf:"# {$user|escape:"html"}":"{$realname|escape:"html"}"}</span>
{/if}
{/if}
{if $save_edit}
{if $no_edit_permission}
<span class="msg_error">{$CONST.CREATE_NOT_AUTHORIZED}</span>
{else}
{if $no_edit_permission_userlevel}
<span class="msg_error">{$CONST.CREATE_NOT_AUTHORIZED_USERLEVEL}</span>
{else}
{if $no_group_selected}
<span class="msg_error">{$CONST.WARNING_NO_GROUPS_SELECTED}</span>
{/if}
<span class="msg_success">{$CONST.MODIFIED_USER|sprintf:"{$realname|escape:"html"}"}</span>
{/if}
{/if}
{/if}
{if $delete == false}
<h2>{$CONST.USER} ({$CONST.USER_LEVEL})</h2>
<ul id="serendipity_users" class="plainList">
{foreach $users as $user}
{if $user.isEditable}
<li class="clearfix">
<span class="user_name user_{if $user.userlevel >= {$CONST.USERLEVEL_ADMIN}}admin{else}{if $user.userlevel >= {$CONST.USERLEVEL_CHIEF}}chief{else}editor{/if}{/if}">{$user.realname|escape:"html"} ({$user.userlevel})</span>
<ul class="plainList edit_actions">
<li><a class="link_view" href="{$user.authorUrl}" title="{$CONST.PREVIEW} {$user.realname}">{$CONST.PREVIEW}</a></li>
<li><a class="link_edit" href="?serendipity[adminModule]=users&amp;serendipity[adminAction]=edit&amp;serendipity[userid]={$user.authorid}#editform" title="{$CONST.EDIT} {$user.realname|escape:"html"}">{$CONST.EDIT}</a></li>
<li><a class="link_delete" href="?{$urlFormToken}&amp;serendipity[adminModule]=users&amp;serendipity[adminAction]=delete&amp;serendipity[userid]=$user.authorid" title="{$CONST.DELETE} {$user.realname|escape:"html"}">{$CONST.DELETE}</a></li>
</ul>
</li>
{/if}
{/foreach}
</ul>
{if $new}
<form action="?serendipity[adminModule]=users" method="post">
<input name="NEW" type="submit" value="{$CONST.CREATE_NEW_USER}">
</form>
{/if}
{/if}
{if $show_form}
<form{if $adminAction == 'edit'} id="editform"{/if} action="?serendipity[adminModule]=users#editform" method="post">
{$formToken}
{if $adminAction == 'edit'}{if $create_permission}<input name="serendipity[user]" type="hidden" value="{$from.authorid}">{/if}{/if}
<h3>{if $adminAction == 'edit'}{if $no_create_permission}{$CONST.CREATE_NOT_AUTHORIZED}: {$CONST.EDIT}{else}{if $create_permission}{$CONST.EDIT}{else}{$CONST.CREATE_NOT_AUTHORIZED}: {$CONST.EDIT}{/if}{/if}{else}{$CONST.CREATE}{/if}</h3>
{$config}
{if $adminAction == 'edit'}
<input name="SAVE_EDIT" type="submit" value="{$CONST.SAVE}">
{else}
<input name="SAVE_NEW" type="submit" value="{$CONST.CREATE_NEW_USER}">
{/if}
</form>
{else}
{if $delete}
<form action="?serendipity[adminModule]=users" method="post">
{$formToken}
<input name="serendipity[user]" type="hidden" value="{$userid}">
<fieldset class="users_delete_action">
<legend><span>{$CONST.DELETE_USER|sprintf:"{$userid}":"{$realname|escape:"html"}"}</span></legend>
<input name="DELETE_YES" type="submit" value="{$CONST.DUMP_IT}">
<input name="NO" type="submit" value="{$CONST.NOT_REALLY}">
</fieldset>
</form>
{/if}
{/if}