1
0

2k11 is default template, included admin-tpls, and made it installable

This commit is contained in:
onli
2013-05-30 22:19:07 +02:00
parent 7f72419e3c
commit ae74401668
38 changed files with 37 additions and 92 deletions

View File

@ -0,0 +1,191 @@
{* HTML5: Yes *}
{* jQuery: No *}
{if $post_save}
{if $new}
<span class="msg_success"><span class="icon-ok-circle"></span> {$CONST.CATEGORY_SAVED}</span>
{/if}
{if $edit}
{if isset($editPermission) && $editPermission == false}
<span class="msg_error"><span class="icon-attention"></span> {$CONST.PERM_DENIED}</span>
{else}
{if $subcat}{$subcat}{else}
<span class="msg_success"><span class="icon-ok-circle"></span> {$CONST.CATEGORY_SAVED}</span>
{/if}
{/if}
{/if}
{/if}
{if $doDelete}
{if $deleteSuccess}
<span class="msg_success"><span class="icon-ok-circle"></span> {if $remainingCat}{$CONST.CATEGORY_DELETED_ARTICLES_MOVED|sprintf:$remainingCat:$cid}{else}{$cid|string_format:"{$CONST.CATEGORY_DELETED}"}{/if}</span>
{else}
<span class="msg_error"><span class="icon-attention"></span> {$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 class="state_cancel" 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="clearfix">
<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_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{/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{/if}>{for $i=1 to $cat.depth}&nbsp{/for} {$cat.category_name}</option>
{/foreach}
</select>
</div>
</div>
<div class="clearfix">
<div class="form_multiselect">
<label for="read_authors">{$CONST.PERM_READ}</label>
<select id="read_authors" size="6" multiple name="serendipity[cat][read_authors][]">
<option value="0"{if $selectAllReadAuthors} selected{/if}>{$CONST.ALL_AUTHORS}</option>
{foreach $groups as $group}
<option value="{$group.confkey}"{if isset($read_groups.{$group.confkey})} 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 name="serendipity[cat][write_authors][]">
<option value="0"{if $selectAllReadAuthors} selected{/if}>{$CONST.ALL_AUTHORS}</option>
{foreach $groups as $group}
<option value="{$group.confkey}"{if isset($read_groups.{$group.confkey})} selected{/if}>{$group.confvalue|escape:"html"}</option>
{/foreach}
</select>
</div>
</div>
<div class="clearfix">
<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>
<fieldset class="clearfix">
<legend><span>{$CONST.CATEGORY_HIDE_SUB} <span>{$CONST.CATEGORY_HIDE_SUB_DESC}</span></span></legend>
<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 class="standalone" name="SAVE" type="submit" value="{$save}">
</form>
{/if}
{if $view}
<h2>{$CONST.CATEGORY_INDEX}:</h2>
{if is_array($viewCats)}
<ul id="categories">
{foreach $viewCategories as $category}
{if ! $category@first}
{if $category.depth > $priorDepth}
<ul>
{/if}
{if $category.depth < $priorDepth}
</li>
{for $i=$category.depth+1 to $priorDepth}
</ul></li>
{/for}
{/if}
{if $category.depth == $priorDepth}
</li>
{/if}
{/if}
{$priorDepth=$category.depth}
<li>
<div class="clearfix {cycle values="odd,even"}">
<details class="category_data">
<summary class="category_name{if $category.category_icon} category_hasicon{/if}"><span class="icon-folder-open"></span> {$category.category_name|escape:"html"}</summary>
<div class="category_info clearfix">
{if $category.category_description != ''}
<span class="category_desc">{$category.category_description|escape:"html"}</span>
{/if}
(<span class="category_author">{if $category.authorid == 0}{$CONST.ALL_AUTHORS}{else}{$category.realname|escape:"html"}{/if}</span>)
</div>
</details>
<ul class="plainList clearfix edit_actions">
<li><a class="button_link" href="?serendipity[adminModule]=category&amp;serendipity[adminAction]=edit&amp;serendipity[cid]={$category.categoryid}" title="{$CONST.EDIT}"><span class="icon-edit"></span><span class="visuallyhidden"> {$CONST.EDIT}</span></a></li>
<li><a class="button_link" href="?serendipity[adminModule]=category&amp;serendipity[adminAction]=delete&amp;serendipity[cid]={$category.categoryid}" title="{$CONST.DELETE}"><span class="icon-trash"></span><span class="visuallyhidden"> {$CONST.DELETE}</span></a></li>
</ul>
</div>
{/foreach}
</li>
{for $i=1 to $priorDepth}
</ul></li>
{/for}
</ul>
{else}
<span class="msg_notice"><span class="icon-info-circle"></span> {$CONST.NO_CATEGORIES}</span>
{/if}
<a class="button_link state_submit icon_link" href="?serendipity[adminModule]=category&serendipity[adminAction]=new">{$CONST.CREATE_NEW_CAT}</a>
{/if}

View File

@ -0,0 +1,172 @@
{* HTML5: Yes *}
{* jQuery: No *}
{if !empty($errormsg)}
{* TODO: Not sure anything emitted here actually IS an error. *}
<span class="msg_error"><span class="icon-attention"></span> {$errormsg}</span>
{/if}
<script type="text/javascript">
var view_full = '{$CONST.VIEW_FULL}';
var view_hide = '{$CONST.HIDE}';
</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.HOMEPAGE}</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' : ''}>{$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{/if}>{$CONST.COMMENTS_FILTER_ALL}</option>
<option value="approved"{if $get.filter.show == 'approved'} selected{/if}>{$CONST.COMMENTS_FILTER_APPROVED_ONLY}</option>
<option value="pending"{if $get.filter.show == 'pending'} selected{/if}>{$CONST.COMMENTS_FILTER_NEED_APPROVAL}</option>
<option value="confirm"{if $get.filter.show == 'confirm'} 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{/if}>{$CONST.COMMENTS}</option>
<option value="TRACKBACK"{if $c_type == 'TRACKBACK'} selected{/if}>{$CONST.TRACKBACKS}</option>
<option value="PINGBACK"{if $c_type == 'PINGBACK'} selected{/if}>{$CONST.PINGBACKS}</option>
</select>
</div>
</div>
</fieldset>
<div class="form_buttons">
<input name="submit" type="submit" value="{$CONST.GO}">
</div>
</form>
{serendipity_hookPlugin hookAll=true hook="backend_comments_top" addData=$sql}
{if !is_array($sql)}
<span class="msg_notice"><span class="icon-info-circle"></span> {$CONST.NO_COMMENTS}</span>
<a class="block_level" href="serendipity_admin.php?serendipity[adminModule]=comments">Return to default comment list</a> {* l18n *}
{else}
<form id="formMultiDelete" action="" method="POST" name="formMultiDelete">
{$formtoken}
<input name="serendipity[formAction]" type="hidden" value="multiDelete">
<h3>{$CONST.PAGE_BROWSE_COMMENTS|sprintf:$page:$pages:$totalComments}</h3>
{if ($page != 1 && $page <= $pages)||$page != $pages}
<nav class="pagination">
<h4 class="visuallyhidden">Comments pagination</h4> {* i18n *}
<ul class="clearfix">
{if ($page != 1 && $page <= $pages)}
<li><a class="icon_link" href="{$linkPrevious}" title="{$CONST.PREVIOUS}"><span class="icon-left-circled"></span><span class="visuallyhidden"> {$CONST.PREVIOUS}</span></a></li>
{/if}
{if $page != $pages}
<li><a class="icon_link" href="{$linkNext}" title="{$CONST.NEXT}"><span class="icon-right-circled"></span><span class="visuallyhidden"> {$CONST.NEXT}</span></a></li>
{/if}
</ul>
</nav>
{/if}
{if is_array($comments)}
<ul id="serendipity_comments_list" class="clearfix plainList zebra_list">
{foreach $comments AS $comment}
<li class="clearfix {cycle values="odd,even"}"><div class="form_check">
<input id="serendipity_multidelete_comment_{$comment.id}" type="checkbox" name="serendipity[delete][{$comment.id}]" value="{$comment.entry_id}" onclick="highlightComment('comment_{$comment.id}', this.checked)" tabindex="{$i}">
<label for="serendipity_multidelete_comment_{$comment.id}" class="visuallyhidden">Multiselect this comment</label> {* i18n *}
</div>
<h4 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'}</h4>
<div id="comment_{$comment.id}">
<dl class="comment_data clearfix">
{* TODO: This should not emit any images *}
<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} {$comment.action_email}</dd>
<dt>IP:</dt>
<dd>{if empty($comment.ip)}N/A{else}{$comment.ip|escape}{/if} {$comment.action_ip}</dd>
<dt>URL:</dt>
<dd>{if empty($comment.url)}N/A{else}<a class="icon_link" href="{$comment.url|escape}" title="{$comment.url|escape}"><span class="icon-link"></span> {$comment.url|escape|truncate:30:"&hellip;"}</a> {/if} {$comment.action_url}</dd>
<dt>{$CONST.REFERER}:</dt>
<dd>{if empty($comment.referer)}N/A{else}<a href="{$comment.referer|escape}" title="{$comment.referer|escape}">{$comment.referer|escape|truncate:30:"&hellip;"}</a>{/if} {$comment.action_referer}</dd>
</dl>
<div id="{$comment.id}_summary" class="comment_summary">{$comment.fullBody|truncate:120:"&hellip;"}</div>
<div id="{$comment.id}_full" class="comment_full hidden">{$comment.fullBody}</div>
<ul class="plainList clearfix actions">
{if ($comment.status == 'pending') || ($comment.status == 'confirm')}
<li><a class="button_link" href="?serendipity[action]=admin&amp;serendipity[adminModule]=comments&amp;serendipity[adminAction]=approve&amp;serendipity[id]={$comment.id}&amp;{$urltoken}" title="{$CONST.APPROVE}"><span class="icon-lock-open"></span><span class="visuallyhidden">{$CONST.APPROVE}</span></a></li>
{/if}
{if ($comment.status == 'approved')}
<li><a class="button_link" href="?serendipity[action]=admin&amp;serendipity[adminModule]=comments&amp;serendipity[adminAction]=pending&amp;serendipity[id]={$comment.id}&amp;{$urltoken}" title="{$CONST.SET_TO_MODERATED}"><span class="icon-lock"></span><span class="visuallyhidden"> {$CONST.SET_TO_MODERATED}</span></a></li>
{/if}
{if $comment.excerpt}
<li><a class="button_link" href="#c{$comment.id}" onclick="FT_toggle({$comment.id}); return false;" title="{$CONST.TOGGLE_ALL}"><span id="{$comment.id}_text">{$CONST.TOGGLE_ALL}</span></a></li>
{/if}
<li><a class="button_link" href="{$comment.entrylink}" title="{$CONST.VIEW}"><span class="icon-eye"></span><span class="visuallyhidden"> {$CONST.VIEW}</span></a></li>
<li><a class="button_link" 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}" title="{$CONST.EDIT}"><span class="icon-edit"></span><span class="visuallyhidden"> {$CONST.EDIT}</span></a></li>
<li><a class="button_link" 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}")' title="{$CONST.DELETE}"><span class="icon-trash"></span><span class="visuallyhidden"> {$CONST.DELETE}</span></a></li>
<li><a class="button_link" 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}" title="{$CONST.REPLY}"><span class="icon-chat"></span><span class="visuallyhidden"> {$CONST.REPLY}</span></a></li>
</ul>
{$comment.action_more}
</div>
</li>
{/foreach}
</ul>
{/if}
<div class="multidelete_actions form_buttons">
<input name="toggle" type="button" value="{$CONST.INVERT_SELECTIONS}" onclick="invertSelection()">
<input class="state_cancel" 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,27 @@
{* HTML5: Yes *}
{* jQuery: NN *}
{if $installAction == 'check'}
{if $diagnosticError}
<h2>{$CONST.DIAGNOSTIC_ERROR}</h2>
{foreach $res as $r}
<span class="msg_error"><span class="icon-attention"></span> {$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"><span class="icon-info-circle"></span> {$r}</span>
{/foreach}
{else}
<span class="msg_success"><span class="icon-ok-circle"></span> {$CONST.DONE}</span>
{/if}
{/if}
<span class="msg_success"><span class="icon-ok-circle"></span> {$CONST.WRITTEN_N_SAVED}</span>
{/if}
{else}
<h2>{$CONST.CONFIGURATION}</h2>
{$config|replace:'class="form_string"':'class="form_field"'|replace:'class="form_fullprotected"':'class="form_field"'|replace:'class="form_list"':'class="form_select"'|replace:'class="form_multilist"':'class="form_multiselect"'|replace:'class="form_int"':'class="form_field"'|replace:'class="form_textarea"':'class="form_area"'}
{/if}

View File

@ -0,0 +1,212 @@
{* HTML5: Yes *}
{* jQuery: No *}
{if $drawList}
<h2>{$CONST.FIND_ENTRIES}</h2>
<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}</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' : ''}>{$user.realname|escape}</option>
{/foreach}
{/if}
</select>
</div>
<div class="form_select">
<label for="filter_draft">Entry status</label> {* i18n *}
<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' : '')}>{$CONST.DRAFT}</option>
<option value="publish" {(isset($get.filter.isdraft) && ($get.filter.isdraft == 'publish') ? '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' : ''}>{'&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': '')}>{$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' : '')}>{$CONST.SORT_ORDER_DESC}</option>
<option value="ASC" {(isset($get.sort.ordermode) && ($get.sort.ordermode == 'ASC') ? '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' : '')}> {$per_page_nr}</option>
{/foreach}
</select>
</div>
</div>
</fieldset>
<div class="form_buttons">
<input name="go" type="submit" value="{$CONST.GO}">
</div>
</form>
{if $is_entries}
{if ($offSet > 0) || ($count > $perPage)}
<nav class="pagination">
<ul class="clearfix">
{if ($offSet > 0)}
<li><a class="icon_link" href="{$linkPrevious}" title="{$CONST.PREVIOUS}"><span class="icon-left-circled"></span><span class="visuallyhidden"> {$CONST.PREVIOUS}</span></a></li>
{/if}
{if ($count > $perPage)}
<li><a class="icon_link" href="{$linkNext}" title="{$CONST.NEXT}"><span class="icon-right-circled"></span><span class="visuallyhidden"> {$CONST.NEXT}</span></a></li>
{/if}
</ul>
</nav>
{/if}
<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 id="entries_list" class="plainList zebra_list">
{foreach $entries as $entry}
{if ($entry@index > $perPage)}{continue}{/if}
<li class="clearfix {cycle values="odd,even"}"><div class="form_check">
<input id="multidelete_entry{$entry.id}" name="serendipity[multiDelete][]" type="checkbox" value="{$entry.id}"><label for="multidelete_entry{$entry.id}" class="visuallyhidden">Select #{$entry_id} for multidelete</label> {* i18n *}
</div>
<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}">{$entry.title|escape|truncate:50:"&hellip;"}</a></h3>
<ul class="plainList clearfix actions">
{if $entry.preview || (!$showFutureEntries && ($entry.timestamp >= $serverOffsetHour))}
<li><a class="button_link" href="{$entry.preview_link}" title="{$CONST.PREVIEW} #{$entry.id}"><span class="icon-eye"></span><span class="visuallyhidden"> {$CONST.PREVIEW}</span></a></li>
{else}
<li><a class="button_link" href="{$entry.archive_link}" title="{$CONST.VIEW} #{$entry.id}"><span class="icon-eye"></span><span class="visuallyhidden"> {$CONST.VIEW}</span></a></li>
{/if}
<li><a class="button_link" href="?serendipity[action]=admin&amp;serendipity[adminModule]=entries&amp;serendipity[adminAction]=edit&amp;serendipity[id]={$entry.id}" title="{$CONST.EDIT} #{$entry.id}"><span class="icon-edit"></span><span class="visuallyhidden"> {$CONST.EDIT}</span></a></li>
<li><a class="button_link" href="?serendipity[action]=admin&amp;serendipity[adminModule]=entries&amp;serendipity[adminAction]=delete&amp;serendipity[id]={$entry.id}&amp;{$urltoken}" title="{$CONST.DELETE} #{$entry.id}" title="{$CONST.DELETE}"><span class="icon-trash"></span><span class="visuallyhidden"> {$CONST.DELETE}</span></a></li>
</ul>
<div class="entry_info clearfix">
<span class="status_timestamp">
{$entry.timestamp|@formatTime:"{$CONST.DATE_FORMAT_SHORT}"}{if $entry.timestamp <= ($entry.last_modified - 1800)} <a class="icon_link" href="#" title="{$CONST.LAST_UPDATED}: {$entry.last_modified|@formatTime:"{$CONST.DATE_FORMAT_SHORT}"}" onclick="alert(this.title)"><span class="icon-info-circle"></span><span class="visuallyhidden"> {$CONST.LAST_UPDATED}</span></a>{/if}
</span>
<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>
{if !$showFutureEntries && ($entry.timestamp >= $serverOffsetHour)}
<span class="entry_status status_future">{$CONST.ENTRY_PUBLISHED_FUTURE}</span>
{/if}
{if $entry.ep_is_sticky}
<span class="entry_status status_sticky">{$CONST.STICKY_POSTINGS}</span>
{/if}
{if $entry.isdraft}
<span class="entry_status status_draft">{$CONST.DRAFT}</span>
{/if}
</div>
</li>
{/foreach}
</ul>
{/if}
<div id="multidelete_tools" class="form_buttons">
<input name="toggle" type="button" value="{$CONST.INVERT_SELECTIONS}" onclick="invertSelection()">
<input class="state_cancel" 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">
<div id="entry_skip" class="form_field">
<label for="skipto_entry">{$CONST.EDIT_ENTRY} #</label>
<input id="skipto_entry" name="serendipity[id]" type="text" size="3">
</div>
<div class="form_buttons">
<input name="serendipity[editSubmit]" type="submit" value="{$CONST.GO}">
</div>
</form>
{/if}
{if $no_entries}
<h2>{$CONST.FIND_ENTRIES}</h2>
<span class="msg_notice"><span class="icon-info-circle"></span> {$CONST.NO_ENTRIES_TO_PRINT}</span>
{/if}
{if $switched_output}
{if ($get.adminAction && $dateval)}
<span class="msg_error"><span class="icon-attention"></span> {$CONST.DATE_INVALID}</span>
{/if}
{if ($get.adminAction && $use_legacy)}
{if $is_draft}
<span class="msg_success"><span class="icon-ok-circle"></span> {$CONST.IFRAME_SAVE_DRAFT}</span>
{/if}
{if $is_iframe}
<span class="msg_success"><span class="icon-ok-circle"></span> {$CONST.IFRAME_SAVE}</span>
{/if}
{if $is_iframepreview}
<span class="msg_success"><span class="icon-ok-circle"></span> {$CONST.IFRAME_PREVIEW}</span>
{/if}
{/if}
{if ($is_doDelete || $is_doMultiDelete )}
{foreach $del_entry AS $delent}
<span class="msg_dialogue"><span class="icon-help-circle"></span> {$delent}</span>
{/foreach}
{/if}
{if ( $is_delete || $is_multidelete )}
{foreach $rip_entry AS $ripent}
<span class="msg_dialogue"><span class="icon-help-circle"></span> {$ripent}</span>
{/foreach}
<div class="dialogue_delrip form_buttons">
<a class="button_link state_submit icon_link" href="{$newLoc}">{$CONST.DUMP_IT}</a>
<a class="button_link state_cancel icon_link" href="{$smarty.server.HTTP_REFERER|escape}">{$CONST.NOT_REALLY}</a>
</div>
{/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,6 @@
{* HTML5: Yes *}
{* jQuery: NN *}
<h2>{$CONST.EXPORT_ENTRIES}</h2>
<a id="export_rss" class="button_link icon_link" href="{$serendipityBaseURL}rss.php?version=2.0&all=1"><span class="icon-rss"></span> {$CONST.EXPORT_FEED}</a>

View File

@ -0,0 +1,151 @@
{* HTML5: Yes *}
{* jQuery: NN *}
{if $delete_yes}
<span class="msg_success"><span class="icon-ok-circle"></span> {$CONST.DELETED_GROUP|sprintf:"{$group_id|escape:"html"}":"{$group.name|escape:"html"}"}</span>
{/if}
{if $save_new}
<span class="msg_success"><span class="icon-ok-circle"></span> {$CONST.CREATED_GROUP|sprintf:"{$group_id|escape:"html"}":"{$group.name|escape:"html"}"}</span>
{/if}
{if $save_edit}
<span class="msg_success"><span class="icon-ok-circle"></span> {$CONST.MODIFIED_GROUP|sprintf:"{$name|escape:"html"}"}</span>
{/if}
{if !$delete}
<h2>{$CONST.GROUP}</h2>
<ul id="serendipity_groups" class="plainList zebra_list">
{foreach $groups as $group}
<li class="clearfix {cycle values="odd,even"}">
<span class="group_name"><span class="icon-users"></span> {$group.name|escape:"html"}</span>
<ul class="plainList clearfix edit_actions">
<li><a class="button_link" href="?serendipity[adminModule]=groups&amp;serendipity[adminAction]=edit&amp;serendipity[group]={$group.id}" title="{$CONST.EDIT} {$group.name|escape:"html"}"><span class="icon-edit"></span><span class="visuallyhidden"> {$CONST.EDIT}</span></a></li>
<li><a class="button_link" href="?{$deleteFormToken}&amp;serendipity[adminModule]=groups&amp;serendipity[adminAction]=delete&amp;serendipity[group]={$group.id}" title="{$CONST.DELETE} {$group.name|escape:"html"}"><span class="icon-trash"></span><span class="visuallyhidden"> {$CONST.DELETE}</span></a></li>
</ul>
</li>
{/foreach}
</ul>
{if $start}
<form action="?serendipity[adminModule]=groups" method="post">
<div class="form_buttons">
<input name="NEW" type="submit" value="{$CONST.CREATE_NEW_GROUP}">
</div>
</form>
{/if}
{/if}
{if $edit || $new}
<form id="serendipity_admin_groups" class="configuration_group" 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 pull the group name; this doesn't work in 1.7, either. *}
<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 size="5">
{foreach $allusers as $user}
<option value="{$user.authorid}" {if isset($selected.{$user.authorid})} selected{/if} >{$user.realname|escape:"html"}</option>
{/foreach}
</select>
</div>
<ul>
{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@first || ($in_indent != true && $indent == "&nbsp;&nbsp;"))}
</li>
{/if}
{if $indent == "&nbsp;&nbsp;" && $in_indent != true}
{$in_indent=true}
<ul>
{/if}
{if $indent == "<br>" && $in_indent == true}
{$in_indent=false}
</ul></li>
{/if}
<li>
{if !$perm.permission}
<div><span class="perm_name hilite_b">
{$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">
<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}>
<label for="{{$perm@key}|escape:"html"}">{$perm.permission_name|escape:"html"}</label>
</div>
{/if}
{/foreach}
</li></ul>
{if $enablePluginACL}
<div class="form_select">
<label for="forbidden_plugins">{$CONST.PERMISSION_FORBIDDEN_PLUGINS}</label>
<select id="forbidden_plugins" name="serendipity[forbidden_plugins][]" multiple size="5">
{foreach $allplugins as $plugin}
<option value="{{$plugin@key}|escape:"url"}{if $plugin.has_permission == false} 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 size="5">
{foreach $allhooks as $hook}
<option value="{{$hook@key}|escape:"url"}"{$hook.has_permission == false} 'selected'}>{{$hook@key}|escape:"html"}</option>
{/foreach}
</select>
</div>
{else}
<span class="msg_notice"><span class="icon-info-circle"></span> {$CONST.PERMISSION_FORBIDDEN_ENABLE_DESC}</span>
{/if}
<div class="form_buttons">
{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}
</div>
</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.MANAGE_GROUPS}</h2>
<span class="msg_notice"><span class="icon-info-circle"></span> {$CONST.DELETE_GROUP|sprintf:"{$group_id}":"{$group.name|escape:"html"}"}</span>
<div id="groups_delete_action" class="form_buttons">
<input name="DELETE_YES" type="submit" value="{$CONST.DUMP_IT}">
<input class="state_cancel" name="NO" type="submit" value="{$CONST.NOT_REALLY}">
</div>
</form>
{/if}
{/if}

View File

@ -0,0 +1,351 @@
{* HTML5: Yes *}
{* jQuery: No *}
{if $case_imgedit}
<span class="msg_notice"><span class="icon-info-circle"></span> {$CONST.PREFERENCE_USE_JS_WARNING}</span>
{/if}
{if $case_sync}
<h2>{$CONST.CREATE_THUMBS}</h2>
{if !$perm_adminImagesSync}
<span class="msg_error"><span class="icon-attention"></span> {$CONST.PERM_DENIED}</span>
{else}
<span class="msg_notice"><span class="icon-info-circle"></span> {$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" class="button_link state_cancel">{$CONST.ABORT_NOW}</a>
</div>
</form>
{/if}
{/if}
{if $case_doSync}
{if !$perm_adminImagesSync}
<span class="msg_error"><span class="icon-attention"></span> {$CONST.PERM_DENIED}</span>
{else}
<h2>{$CONST.SYNCING}</h2>
<span class="msg_success"><span class="icon-ok-circle"></span> {$print_SYNC_DONE}</span>
<h2>{$CONST.RESIZING}</h2>
<span class="msg_success"><span class="icon-ok-circle"></span> {$print_RESIZE_DONE}</span>
{/if}
{/if}
{if $case_delete}
<h2>{$CONST.MEDIA_DELETE}</h2>
<span class="msg_notice"><span class="icon-info-circle"></span> {$CONST.ABOUT_TO_DELETE_FILE|sprintf:"$file"}</span>
<form id="delete_image" method="get">
<div class="form_buttons">
<a class="button_link state_submit icon_link" href="{$newLoc}">{$CONST.DUMP_IT}</a>
<a class="button_link state_cancel icon_link" 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"><span class="icon-info-circle"></span> {$CONST.ABOUT_TO_DELETE_FILES}</span>
{foreach $rip_image AS $ripimg}
<span class="msg_dialogue"><span class="icon-help-circle"></span> {$ripimg}</span>
{/foreach}
<div class="dialogue_delrip form_buttons">
<a class="button_link icon_link" href="{$newLoc}">{$CONST.DUMP_IT}</a>
<a class="button_link icon_link" href="{$smarty.server.HTTP_REFERER|escape}">{$CONST.NOT_REALLY}</a>
</div>
{/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"><span class="icon-info-circle"></span> {$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="clearfix">
<div class="form_select">
<label for="read_authors">{$CONST.PERM_READ}</label>
<select id="read_authors" name="serendipity[read_authors][]" multiple size="6">
<option value="0"{if $rgroups} selected{/if}>{$CONST.ALL_AUTHORS}</option>
{foreach $groups AS $group}
<option value="{$group.confkey}"{if isset($read_groups.{$group.confkey})} 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 size="6">
<option value="0"{if $wgroups} selected{/if}>{$CONST.ALL_AUTHORS}</option>
{foreach $groups AS $group}
<option value="{$group.confkey}"{if isset($write_groups.{$group.confkey})} selected{/if}>{$group.confvalue|escape:'html'}</option>
{/foreach}
</select>
</div>
</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>
<div class="form_buttons">
<input name="serendipity[save]" type="submit" value="{$CONST.SAVE}">
</div>
</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> *}
<div class="form_buttons">
<input class="state_cancel" name="SAVE" type="submit" value="{$CONST.DELETE_DIRECTORY}">
</div>
</form>
{/if}
{if $case_directoryDoCreate}
{if $print_DIRECTORY_CREATED}
<span class="msg_success"><span class="icon-ok-circle"></span> {$print_DIRECTORY_CREATED}</span>
{/if}
{if $print_DIRECTORY_WRITE_ERROR}
<span class="msg_error"><span class="icon-attention"></span> {$print_DIRECTORY_WRITE_ERROR}</span>
{/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{/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}
<div class="form_buttons">
<input name="SAVE" type="submit" value="{$CONST.CREATE_DIRECTORY}">
</div>
</form>
{/if}
{if $case_directorySelect}
<h2>{$CONST.MANAGE_DIRECTORIES}</h2>
<p>{$CONST.DIRECTORIES_AVAILABLE}</p>
<h3>{$CONST.BASE_DIRECTORY}</h3>
<ul id="serendipity_image_folders">
{foreach $folders as $folder}
{if ! $folder@first}
{if $folder.depth > $priorDepth}
<ul>
{/if}
{if $folder.depth < $priorDepth}
</li>
{for $i=$folder.depth+1 to $priorDepth}
</ul></li>
{/for}
{/if}
{if $folder.depth == $priorDepth}
</li>
{/if}
{/if}
{$priorDepth=$folder.depth}
<li>
<div class="clearfix {cycle values="odd,even"}">
<span class="folder_name"><span class="icon-folder-open"></span> {$folder.name}</span>
<ul class="plainList clearfix edit_actions">
<li><a class="button_link" href="?serendipity[adminModule]=images&amp;serendipity[adminAction]=directoryEdit&amp;serendipity[dir]={$folder.relpath|escape:'html'}" title="{$CONST.EDIT}"><span class="icon-edit"></span><span class="visuallyhidden"> {$CONST.EDIT}</span></a></li>
<li><a class="button_link" href="?serendipity[adminModule]=images&amp;serendipity[adminAction]=directoryDelete&amp;serendipity[dir]={$folder.relpath|escape:'html'}" title="{$CONST.DELETE}"><span class="icon-trash"></span><span class="visuallyhidden"> {$CONST.DELETE}</span></a></li>
</ul>
</div>
{/foreach}
</li>
{for $i=1 to $priorDepth}
</ul></li>
{/for}
</ul>
<a class="button_link icon_link state_submit" 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"><span class="icon-info-circle"></span> {$print_SCALING_IMAGE}</span>{/if}
{if $print_serendipity_scaleImg}<span class="msg_notice"><span class="icon-info-circle"></span> {$print_serendipity_scaleImg}</span>{/if}
<span class="msg_notice"><span class="icon-info-circle"></span> {$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}<h2>{$print_RESIZE_BLAHBLAH}</h2>{/if}
{if $print_ORIGINAL_SIZE}<span class="block_level standalone">{$print_ORIGINAL_SIZE}</span>{/if}
<span class="msg_notice image_resize_hint"><span class="icon-info-circle"></span> {$CONST.HERE_YOU_CAN_ENTER_BLAHBLAH}</span>
<div class="clearfix">
<form id="serendipityScaleForm" 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">{$CONST.INSTALL_THUMBDIM_WIDTH}</label>
<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">{$CONST.INSTALL_THUMBDIM_HEIGHT}</label>
<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>
<div class="form_buttons">
<input name="scale" type="button" value="{$CONST.IMAGE_RESIZE}" onclick="if (confirm('{$CONST.REALLY_SCALE_IMAGE}')) document.serendipityScaleForm.submit();">
</div>
</form>
<div id="serendipityScaleImg">
<img src="{$file}" name="serendipityScaleImg" style="width: {$img_width}px;" alt="{$CONST.PREVIEW}">
</div>
</div>
{/if}
{if $case_default}
{if $showML_def}{$showML_def}{/if}
{/if}

View File

@ -0,0 +1,60 @@
{* HTML5: Yes *}
{* jQuery: NN *}
{if $importForm}
{if $die}
<span class="msg_error"><span class="icon-attention"></span> FAILURE: Unable to require import module, possible syntax error?</span>
{else}
{if $validateData}
<span class="msg_notice"><span class="icon-info-circle"></span> {$CONST.IMPORT_STARTING}</span>
{if $result != true}
<span class="msg_error"><span class="icon-attention"></span> {$CONST.IMPORT_FAILED}: {$result}</span>
{else}
<span class="msg_success"><span class="icon-ok-circle"></span> {$CONST.IMPORT_DONE}</span>
{/if}
{else}
<h2>{$CONST.IMPORT_PLEASE_ENTER}</h2>
<form action="" method="POST" enctype="multipart/form-data">
{$formToken}
{if $notes}
<span class="msg_notice"><span class="icon-info-circle"></span> {$CONST.IMPORT_NOTES}: {$notes}</span>
{/if}
<dl class="importer_data">
{foreach $fields as $field}
<dt>{$field.text}</dt>
<dd class="clearfix">{$field.guessedInput}</dd>
{/foreach}
</dl>
<div class="form_buttons">
<input type="submit" value="{$CONST.IMPORT_NOW}">
</div>
</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>
<div class="form_buttons">
<input type="submit" value="{$CONST.GO}">
</div>
</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"><span class="icon-attention"></span> {$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>
{* TODO: 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"><span class="icon-info-circle"></span> {$CONST.PROBLEM_PERMISSIONS_HOWTO|sprintf:'chmod 1777'}</span>
{/if}
{if $errorCount > 0}
<span class="msg_error"><span class="icon-attention"></span> {$CONST.PROBLEM_DIAGNOSTIC}</span>
<a class="block_level" href="serendipity_admin.php">{$CONST.RECHECK_INSTALLATION}</a>
{else}
<span class="msg_notice"><span class="icon-info-circle"></span> {$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"><span class="icon-ok-circle"></span> <strong>{$CONST.THEY_DO}</strong>, {$CONST.WONT_INSTALL_DB_AGAIN}</span>
{else}
<span class="msg_error"><span class="icon-attention"></span> <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"><span class="icon-ok-circle"></span> {$CONST.DONE}</span>
{else}
<h4>{$CONST.FAILED}</h4>
<ul class="plainList">
{foreach $errors_sif AS $error_f}
<li><span class="msg_error"><span class="icon-attention"></span> {$error_f}</span></li>
{/foreach}
</ul>
{/if}
{if $s9y_installed}
<span class="msg_success"><span class="icon-ok-circle"></span> {$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"><span class="icon-attention"></span> {$CONST.ERROR_DETECTED_IN_INSTALL}</span>
{/if}
{/if}

View File

@ -0,0 +1,170 @@
{* HTML5: Yes *}
{* jQuery: No *}
{* serendipity_plugins_admin.inc.php::serendipity_plugin_config() - the OUT_STACK loop *}
{if $ctype == 'seperator'}
<hr>
{/if}
{if $ctype == 'select'}
<div class="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' : ''} {($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' : ''} title="{$select_desc|escape}">{$select_desc|escape}</option>
{/foreach}
</select>
</div>
{/if}
{if $ctype == 'radio'}
<fieldset>
<legend><span>{$cname}{if $cdesc != ''} <span>{$cdesc}</span>{/if}</span></legend>
<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>
{/if}
{if $ctype == 'string'}
<div class="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="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">
<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'}
{if !$sequencejs_output}
<script src="{serendipity_getFile file="admin/js/dragdrop.js"}"></script>
{/if}
<fieldset>
<legend><span>{$cname}{if $cdesc != ''} <span>{$cdesc}</span>{/if}</span></legend>
<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 class="icon_link" href="#" title="Move"><span class="icon-move"></span><span class="visuallyhidden"> Move</span></a>{* i18n *}
</div>
{if $checkable}
<div class="form_check">
<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">
{* TODO: needs label *}
</div>
{/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 id="{$postKey}_{$config_item}_{$orid['sort_idx']}_up" class="icon_link" name="serendipity[{$postKey}][override][{$config_item}]" type="submit" value="{$orid['oneup']}"><span class="icon-up-circled"></span><span class="visuallyhidden"> Move Up</span></button> {* i18n *}
{/if}
{if ($orid['sort_idx'] == $last)}
&nbsp;
{else}
<button id="{$postKey}_{$config_item}_{$orid['sort_idx']}_down" class="icon_link" name="serendipity[{$postKey}][override][{$config_item}]" type="submit" value="{$orid['onedown']}"><span class="icon-down-circled"></span><span class="visuallyhidden"> Move Down</span></button> {* i18n *}
{/if}
</div>
</noscript>
</li>
{/foreach}
</ol>
{if isset($no_sequence)}
{$no_sequence}
{/if}
</fieldset>
{*** Smarty 3 has a new auto literal option which is enabled by default.
When the { is surrounded by whitespace it is not interpreted as smarty delimiter but literal. e.g. ' } ;'
AS tests have proofed, ending javascript delimiters " } ;" and " };" and even "};" work fine as well. So back to origin. ***}
<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>
{/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,22 @@
{* HTML5: Yes *}
{* jQuery: NN *}
<h2>{$CONST.PERSONAL_SETTINGS}</h2>
{if $adminAction == 'save'}
{if $not_authorized}
<span class="msg_error"><span class="icon-attention"></span> {$CONST.CREATE_NOT_AUTHORIZED_USERLEVEL}</span>
{elseif $empty_username}
<span class="msg_error"><span class="icon-attention"></span> {$CONST.USERCONF_CHECK_USERNAME_ERROR}</span>
{elseif $password_check_fail}
<span class="msg_error"><span class="icon-attention"></span> {$CONST.USERCONF_CHECK_PASSWORD_ERROR}</span>
{else}
<span class="msg_success"><span class="icon-ok-circle"></span> {$CONST.MODIFIED_USER|sprintf:"{$realname|escape:"html"}"} ?></span>
{/if}
{/if}
<form action="?serendipity[adminModule]=personal&amp;serendipity[adminAction]=save" method="post">
{$formToken}
{$config|replace:'class="form_string"':'class="form_field"'|replace:'class="form_fullprotected"':'class="form_field"'|replace:'class="form_list"':'class="form_select"'|replace:'class="form_multilist"':'class="form_multiselect"'|replace:'class="form_int"':'class="form_field"'|replace:'class="form_textarea"':'class="form_area"'}
<div class="form_buttons">
<input name="SAVE" type="submit" value="{$CONST.SAVE}">
</div>
</form>

View File

@ -0,0 +1,151 @@
{* HTML5: Yes *}
{* jQuery: NN *}
{if $plugin_to_conf}
{if is_array($save_errors)}
<div class="msg_error">
<h2><span class="icon-attention"></span> {$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"><span class="icon-ok-circle"></span> {$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'}
<h2>{if $type == 'event'}{$CONST.EVENT_PLUGINS}{else}{$CONST.SIDEBAR_PLUGINS}{/if} <span class="plugins_available">{$CONST.PLUGIN_AVAILABLE_COUNT|sprintf:$count_pluginstack}</span></h2>
{foreach $errorstack as $e_idx => $e_name}
<span class="msg_error"><span class="icon-attention"></span> {$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{/if}>{$available_name}</option>
{/foreach}
<option value="ALL"{if $only_group == ALL} selected{/if}>{$CONST.ALL_CATEGORIES}</option>
<option value="UPGRADE"{if $only_group == UPGRADE} selected{/if}>{$CONST.WORD_NEW}</option>
</select>
</div>
<div class="form_buttons">
<input type="submit" value="{$CONST.GO}">
</div>
</form>
{foreach $pluggroups AS $pluggroup => $groupstack}
{if empty($pluggroup)}
{if !empty($only_group)}{continue}{/if}
{elseif !empty($only_group) && $pluggroup != $only_group}{continue}{else}
<h3>{foreach $groupnames as $available_group => $available_name}{if $pluggroup == $available_group}{$available_name}{/if}{/foreach}</h3>
{/if}
<ul class="plugins_installable plainList">
{foreach $groupstack as $plug}
<li class="clearfix"><h4>{$plug.name} ({$plug.class_name})</h4>
<p class="plugin_desc">{$plug.description}</p>
<ul class="plugin_info plainList">
{if ! empty($plug.author)}
<li class="plugin_author"><b>{$CONST.AUTHOR}:</b> {$plug.author}</li>
{/if}
{if ! empty($plug.version)}
<li class="plugin_version"><b>{$CONST.VERSION}:</b> {$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 msg_error"><span class="icon-attention"></span> {$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="state_submit button_link" 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="state_submit button_link" 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 block_level"><span class="icon-ok-circle"></span> {$CONST.ALREADY_INSTALLED}</span>
{/if}
</div>
</li>
{/foreach}
</ul>
{/foreach}
{else}
{if $save}
<span class="msg_success"><span class="icon-ok-circle"></span> {$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="admin/js/jquery.autoscroll.js"}"></script>
<script src="{serendipity_getFile file="admin/js/jquery.sortable.js"}"></script>
<script src="{serendipity_getFile file="admin/js/dragdrop.js"}"></script>
{/if}
<section id="pluginlist_sidebar">
<h3>{$CONST.SIDEBAR_PLUGINS}</h3>
<a class="install_plugins button_link" 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 button_link" 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,61 @@
{* 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 $showSubmit_head}
<div class="save_conf form_buttons">
<input name="SAVECONF" type="submit" value="{$CONST.SAVE}">
</div>
{/if}
{if $showTable}
<div id="serendipity_plugin_config" class="configuration_group">
{/if}
{if is_array($config_groups)}
<a id="optionall" class="button_link icon_link standalone" 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>
<fieldset id="el{$config_groupkeys@iteration}" class="plugin_optiongroup{if $config_groupkeys@last} plugin_optiongroup_last{/if}">
{foreach $config_groupkeys AS $config_groupkey}
{$OUT_STACK[$config_groupkey]}
{/foreach}
</fieldset>
<script>document.getElementById('el{$config_groupkeys@iteration}').style.display = "none";</script>
{/foreach}
{/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 form_buttons">
<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' : ''}>{$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,69 @@
{* 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}
<form action="?serendipity[adminModule]=plugins" method="post">
<input id="order" name="serendipity[pluginorder]" type="hidden" value="">
{else}
<form action="?serendipity[adminModule]=plugins" method="post">
<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" data-placement="{$plugin_placement['pid']}" class="pluginmanager_container plainList">
{foreach $plugin_placement['plugin_data'] as $plugin_data}
<li id="{$plugin_data['css_key']}" class="pluginmanager_plugin pluginmanager_item_{cycle values="odd,even"}">
<input type="hidden" name="serendipity[plugin][{$plugin_data['name']}][id]" value="{$plugin_data['name']}" />
<input type="hidden" name="serendipity[plugin][{$plugin_data['name']}][position]" value="{$plugin_data@index}" />
<input type="hidden" name="serendipity[plugin][{$plugin_data['name']}][placement]" value="{$plugin_placement['pid']}" />
{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}
<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>
<div id="g{$plugin_data['css_key']}" class="pluginmanager_grablet">
<a id="grab{$plugin_data['css_key']}" class="icon_link" href="#" title="Move"><span class="icon-move"></span><span class="visuallyhidden"> Move</span></a>{* i18n *}
</div>
{if $plugin_data['can_configure']}
<a class="pluginmanager_configure button_link icon_link" href="?serendipity[adminModule]=plugins&amp;serendipity[plugin_to_conf]={$plugin_data['key']}" title="{$CONST.CONFIGURATION}"><span class="icon-cog-alt"></span><span class="visuallyhidden"> {$CONST.CONFIGURATION}</span></a>
{/if}
<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 class="state_cancel" name="REMOVE" type="submit" title="{$CONST.REMOVE_TICKED_PLUGINS}" value="{$CONST.DELETE}">
<input name="SAVE" type="submit" title="{$CONST.SAVE_CHANGES_TO_LAYOUT}" value="{$CONST.SAVE}">
</div>
</form>

View File

@ -0,0 +1,75 @@
{* HTML5: Yes *}
{* jQuery: NN *}
{if $adminAction == 'install'}
<span class="msg_success"><span class="icon-ok-circle"></span> {$install_template|string_format:"{$CONST.TEMPLATE_SET}"}</span>
{/if}
{if $deprecated}
<span class="msg_notice"><span class="icon-info-circle"></span> {$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"><span class="icon-ok-circle"></span> {$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>
<script src="{serendipity_getFile file='admin/js/jquery.syncheight.js'}"></script>
<ul class="plainList clearfix">
{foreach $templates as $template=>$info}
{if $info.info.engine == 'yes'}{continue}{/if}
{if !empty($template)}
<li><article class="clearfix {cycle values="odd,even"}">
<h3>{$info.info.name}</h3>
<div class="clearfix equal_heights">
{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">Admin theme:</dt> {* i18n *}
<dd>{$info.info.custom_admin_interface}</dd>
</dl>
</details>
</div>
<div class="template_status">
{if $template != $cur_template}
{if !$info.unmetRequirements}
<a class="state_submit button_link" 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 msg_error"><span class="icon-attention"></span> {$info.unmetRequirements}></span>
{/if}
{else}
<span class="installed block_level"><span class="icon-ok-circle"></span> {$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><span class="icon-attention"></span> {$implode_err}</p>
{/foreach}
</div>
{/if}
{/if}
{if (($showAbort && $get.action == 'ignore') || $get.action == 'upgrade')}
{if $get.action == 'ignore'}
<span class="msg_notice"><span class="icon-info-circle"></span> {$CONST.SERENDIPITY_UPGRADER_YOU_HAVE_IGNORED}</span>
{elseif $get.action == 'upgrade'}
<span class="msg_success"><span class="icon-ok-circle"></span> {$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"><span class="icon-info-circle"></span> {$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"><span class="icon-info-circle"></span> {$CONST.PROBLEM_PERMISSIONS_HOWTO|sprintf:'chmod 1777'}</span>
{/if}
{if ($errorCount > 0)}
<span class="msg_error"><span class="icon-ok-circle"></span> {$CONST.PROBLEM_DIAGNOSTIC}</span>
<a class="icon_link block_level" href="serendipity_admin.php"><span class="icon-help-circle"></span> {$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,100 @@
{* HTML5: Yes *}
{* jQuery: NN *}
{if $delete_yes}
{if $no_delete_permission}
<span class="msg_error"><span class="icon-attention"></span> {$CONST.CREATE_NOT_AUTHORIZED}</span>
{else}
{if $no_delete_permission_userlevel}
<span class="msg_error"><span class="icon-attention"></span> {$CONST.CREATE_NOT_AUTHORIZED_USERLEVEL}</span>
{else}
{if $delete_permission}
<span class="msg_success"><span class="icon-ok-circle"></span> {$CONST.DELETED_USER|sprintf:"{$user|escape:"html"}":"{$realname|escape:"html"}"}</span>
{else}
<span class="msg_error"><span class="icon-attention"></span> {$CONST.CREATE_NOT_AUTHORIZED_USERLEVEL}</span>
{/if}
{/if}
{/if}
{/if}
{if $save_new}
{if $no_save_permission}
<span class="msg_error"><span class="icon-attention"></span> {$CONST.CREATE_NOT_AUTHORIZED}</span>
{else}
{if $no_group_selected}
<span class="msg_error"><span class="icon-attention"></span> {$CONST.WARNING_NO_GROUPS_SELECTED}</span>
{/if}
<span class="msg_success"><span class="icon-ok-circle"></span> {$CONST.CREATED_USER|sprintf:"# {$user|escape:"html"}":"{$realname|escape:"html"}"}</span>
{/if}
{/if}
{if $save_edit}
{if $no_edit_permission}
<span class="msg_error"><span class="icon-attention"></span> {$CONST.CREATE_NOT_AUTHORIZED}</span>
{else}
{if $no_edit_permission_userlevel}
<span class="msg_error"><span class="icon-attention"></span> {$CONST.CREATE_NOT_AUTHORIZED_USERLEVEL}</span>
{else}
{if $no_group_selected}
<span class="msg_error"><span class="icon-attention"></span> {$CONST.WARNING_NO_GROUPS_SELECTED}</span>
{/if}
<span class="msg_success"><span class="icon-ok-circle"></span> {$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 zebra_list">
{foreach $users as $user}
{if $user.isEditable}
<li class="clearfix {cycle values="odd,even"}">
<span class="user_name user_{if $user.userlevel >= {$CONST.USERLEVEL_ADMIN}}admin{else}{if $user.userlevel >= {$CONST.USERLEVEL_CHIEF}}chief{else}editor{/if}{/if}"><span class="icon-user"></span> {$user.realname|escape:"html"} ({$user.userlevel})</span>
<ul class="plainList clearfix edit_actions">
<li><a class="button_link" href="{$user.authorUrl}" title="{$CONST.PREVIEW} {$user.realname}"><span class="icon-eye"></span><span class="visuallyhidden"> {$CONST.PREVIEW}</span></a></li>
<li><a class="button_link" href="?serendipity[adminModule]=users&amp;serendipity[adminAction]=edit&amp;serendipity[userid]={$user.authorid}#editform" title="{$CONST.EDIT} {$user.realname|escape:"html"}"><span class="icon-edit"></span><span class="visuallyhidden"> {$CONST.EDIT}</span></a></li>
<li><a class="button_link" href="?{$urlFormToken}&amp;serendipity[adminModule]=users&amp;serendipity[adminAction]=delete&amp;serendipity[userid]=$user.authorid" title="{$CONST.DELETE} {$user.realname|escape:"html"}"><span class="icon-trash"></span><span class="visuallyhidden"> {$CONST.DELETE}</span></a></li>
</ul>
</li>
{/if}
{/foreach}
</ul>
{if $new}
<form action="?serendipity[adminModule]=users" method="post">
<div class="form_buttons">
<input name="NEW" type="submit" value="{$CONST.CREATE_NEW_USER}">
</div>
</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|replace:'class="form_string"':'class="form_field"'|replace:'class="form_fullprotected"':'class="form_field"'|replace:'class="form_list"':'class="form_select"'|replace:'class="form_multilist"':'class="form_multiselect"'|replace:'class="form_int"':'class="form_field"'|replace:'class="form_textarea"':'class="form_area"'}
<div class="form_buttons">
{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}
</div>
</form>
{else}
{if $delete}
<form action="?serendipity[adminModule]=users" method="post">
{$formToken}
<input name="serendipity[user]" type="hidden" value="{$userid}">
<div class="users_delete_action">
<h2>{$CONST.MANAGE_USERS}</h2>
<span class="msg_notice"><span class="icon-info-circle"></span> {$CONST.DELETE_USER|sprintf:"{$userid}":"{$realname|escape:"html"}"}</span>
<div class="form_buttons">
<input name="DELETE_YES" type="submit" value="{$CONST.DUMP_IT}">
<input class="state_cancel" name="NO" type="submit" value="{$CONST.NOT_REALLY}">
</div>
</div>
</form>
{/if}
{/if}