Added new backend template files (smartified core tpls and 2k11 admin tpls as well as related assets).
This commit is contained in:
161
include/admin/tpl/category.inc.tpl
Normal file
161
include/admin/tpl/category.inc.tpl
Normal 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&serendipity[adminAction]=doDelete&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&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} {/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&serendipity[adminAction]=edit&serendipity[cid]={$category.categoryid}">{$CONST.EDIT}</a></li>
|
||||
<li><a class="link_delete" href="?serendipity[adminModule]=category&serendipity[adminAction]=delete&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}
|
218
include/admin/tpl/comments.inc.tpl
Normal file
218
include/admin/tpl/comments.inc.tpl
Normal 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:"…"} {$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:"…"}</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:"…"}</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:"…"}</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&serendipity[adminModule]=comments&serendipity[adminAction]=approve&serendipity[id]={$comment.id}&{$urltoken}">{$CONST.APPROVE}</a></li>
|
||||
{/if}
|
||||
{if ($comment.status == 'approved')}
|
||||
<li><a class="link_moderate" href="?serendipity[action]=admin&serendipity[adminModule]=comments&serendipity[adminAction]=pending&serendipity[id]={$comment.id}&{$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&serendipity[adminModule]=comments&serendipity[adminAction]=edit&serendipity[id]={$comment.id}&serendipity[entry_id]={$comment.entry_id}&{$urltoken}">{$CONST.EDIT}</a></li>
|
||||
<li><a class="link_delete" href="?serendipity[action]=admin&serendipity[adminModule]=comments&serendipity[adminAction]=delete&serendipity[id]={$comment.id}&serendipity[entry_id]={$comment.entry_id}&{$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&serendipity[adminModule]=comments&serendipity[adminAction]=reply&serendipity[id]={$comment.id}&serendipity[entry_id]={$comment.entry_id}&serendipity[noBanner]=true&serendipity[noSidebar]=true&{$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}
|
25
include/admin/tpl/configuration.inc.tpl
Normal file
25
include/admin/tpl/configuration.inc.tpl
Normal 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}
|
205
include/admin/tpl/entries.inc.tpl
Normal file
205
include/admin/tpl/entries.inc.tpl
Normal 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"' : ''}>{' '|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&serendipity[adminModule]=entries&serendipity[adminAction]=edit&serendipity[id]={$entry.id}" title="#{$entry.id}">{$entry.title|escape|truncate:50:"…"}</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&serendipity[adminModule]=entries&serendipity[adminAction]=edit&serendipity[id]={$entry.id}" title="{$CONST.EDIT} #{$entry.id}">{$CONST.EDIT}</a></li>
|
||||
<li><a class="link_delete" href="?{$urltoken}&serendipity[action]=admin&serendipity[adminModule]=entries&serendipity[adminAction]=delete&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}
|
4
include/admin/tpl/entries_overview.inc.tpl
Normal file
4
include/admin/tpl/entries_overview.inc.tpl
Normal file
@ -0,0 +1,4 @@
|
||||
{* HTML5: Yes *}
|
||||
{* jQuery: NN *}
|
||||
|
||||
<p><strong>{$CONST.WELCOME_BACK} {$smarty.session.serendipityUser|escape}</strong></p>
|
4
include/admin/tpl/export.inc.tpl
Normal file
4
include/admin/tpl/export.inc.tpl
Normal 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>
|
127
include/admin/tpl/groups.inc.tpl
Normal file
127
include/admin/tpl/groups.inc.tpl
Normal 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&serendipity[adminAction]=edit&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}&serendipity[adminModule]=groups&serendipity[adminAction]=delete&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=" "}
|
||||
{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}
|
300
include/admin/tpl/images.inc.tpl
Normal file
300
include/admin/tpl/images.inc.tpl
Normal 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&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&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&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&serendipity[adminAction]=directoryEdit&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&serendipity[adminAction]=directoryDoDelete&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&serendipity[adminModule]=images&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}">{' '|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&serendipity[adminAction]=directoryEdit&serendipity[dir]={$folder.relpath|escape:'html'}">{$CONST.EDIT}</a>
|
||||
<a class="link_delete" href="?serendipity[adminModule]=images&serendipity[adminAction]=directoryDelete&serendipity[dir]={$folder.relpath|escape:'html'}">{$CONST.DELETE}</a>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
<a class="link_create block_level" href="?serendipity[adminModule]=images&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&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}
|
55
include/admin/tpl/import.inc.tpl
Normal file
55
include/admin/tpl/import.inc.tpl
Normal 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}
|
264
include/admin/tpl/installer.inc.tpl
Normal file
264
include/admin/tpl/installer.inc.tpl
Normal 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> </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}
|
180
include/admin/tpl/out_stack_loop.tpl
Normal file
180
include/admin/tpl/out_stack_loop.tpl
Normal 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;"> </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)}
|
||||
|
||||
{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)}
|
||||
|
||||
{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}
|
16
include/admin/tpl/overview.inc.tpl
Normal file
16
include/admin/tpl/overview.inc.tpl
Normal 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}
|
19
include/admin/tpl/personal.inc.tpl
Normal file
19
include/admin/tpl/personal.inc.tpl
Normal 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&serendipity[adminAction]=save" method="post">
|
||||
{$formToken}
|
||||
{$config}
|
||||
<input name="SAVE" type="submit" value="{$CONST.SAVE}">
|
||||
</form>
|
149
include/admin/tpl/plugins.inc.tpl
Normal file
149
include/admin/tpl/plugins.inc.tpl
Normal 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&serendipity[pluginPath]={$plug.pluginPath}&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&serendipity[pluginPath]={$plug.pluginPath}&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&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&serendipity[adminAction]=addnew&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}
|
66
include/admin/tpl/serendipity_plugin_config.fnc.tpl
Normal file
66
include/admin/tpl/serendipity_plugin_config.fnc.tpl
Normal 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"> </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}
|
23
include/admin/tpl/show_ownership.fnc.tpl
Normal file
23
include/admin/tpl/show_ownership.fnc.tpl
Normal 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}
|
83
include/admin/tpl/show_plugins.fnc.tpl
Normal file
83
include/admin/tpl/show_plugins.fnc.tpl
Normal 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&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&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>
|
71
include/admin/tpl/templates.inc.tpl
Normal file
71
include/admin/tpl/templates.inc.tpl
Normal 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&serendipity[adminAction]=install&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>
|
116
include/admin/tpl/upgrader.inc.tpl
Normal file
116
include/admin/tpl/upgrader.inc.tpl
Normal 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}
|
91
include/admin/tpl/users.inc.tpl
Normal file
91
include/admin/tpl/users.inc.tpl
Normal 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&serendipity[adminAction]=edit&serendipity[userid]={$user.authorid}#editform" title="{$CONST.EDIT} {$user.realname|escape:"html"}">{$CONST.EDIT}</a></li>
|
||||
<li><a class="link_delete" href="?{$urlFormToken}&serendipity[adminModule]=users&serendipity[adminAction]=delete&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}
|
Reference in New Issue
Block a user