Version 1.2 ()
------------------------------------------------------------------------
+ * Add admin backend templates for main area and the entry editor.
+ Falls back to default PHP output if Smarty cannot be utilized.
+ (garvinhicking)
+
+ * Fix properly reinstantiating sessions and properly deleting cookies
+ when requested (garvinhicking)
+
* Add support for sqlite3 (http://php-sqlite3.sourceforge.net/), by
geekmug
*/
function serendipity_logout() {
$_SESSION['serendipityAuthedUser'] = false;
- @session_destroy();
+ serendipity_session_destroy();
serendipity_deleteCookie('author_information');
+ serendipity_deleteCookie('author_token');
+}
+
+/**
+ * Destroys a session, keeps important stuff intact.
+ * @access public
+ * @return null
+ */
+function serendipity_session_destroy() {
+ $no_smarty = $_SESSION['no_smarty'];
+ @session_destroy();
+ session_regenerate_id();
+ session_start();
+
+ $_SESSION['SERVER_GENERATED_SID'] = true;
+ $_SESSION['no_smarty'] = $no_smarty;
}
/**
if ($autologin['name'] < (time()-86400)) {
// Issued autologin cookie has been issued more than 1 day ago. Re-Issue new cookie, invalidate old one to prevent abuse
- serendipity_header('X-ReIssue-Cookie: +' . (time() - $autologin['name']) . 's');
+ if ($serendipity['expose_s9y']) serendipity_header('X-ReIssue-Cookie: +' . (time() - $autologin['name']) . 's');
serendipity_issueAutologin($cookie);
}
}
function serendipity_setAuthorToken() {
- $hash = sha1(uniqid(rand(), true));
- serendipity_setCookie('author_token', $hash);
- $_SESSION['author_token'] = $hash;
+ $hash = sha1(uniqid(rand(), true));
+ serendipity_setCookie('author_token', $hash);
+ $_SESSION['author_token'] = $hash;
}
/**
return true;
} else {
$_SESSION['serendipityAuthedUser'] = false;
- @session_destroy();
+ serendipity_session_destroy();
}
}
function serendipity_deleteCookie($name) {
global $serendipity;
- setcookie("serendipity[$name]", '', time()-4000);
+ $host = $_SERVER['HTTP_HOST'];
+ if ($pos = strpos($host, ":")) {
+ $host = substr($host, 0, $pos);
+ }
+
+ setcookie("serendipity[$name]", '', time()-4000, $serendipity['serendipityHTTPPath'], $host);
unset($_COOKIE[$name]);
unset($serendipity['COOKIE'][$name]);
}
return $serendipity['lang'];
} else {
$_SESSION['serendipityLanguage'] = $lang;
- if (! is_null($serendipity['detected_lang'])) {
+ if (!is_null($serendipity['detected_lang'])) {
if ($serendipity['expose_s9y']) serendipity_header('X-Serendipity-InterfaceLang: ' . $lang);
}
}
$draftP = '';
$categoryselector_expanded = false;
+ $template_vars = array();
+
serendipity_plugin_api::hook_event('backend_entryform', $entry);
if ( (isset($entry['isdraft']) && serendipity_db_bool($entry['isdraft'])) ||
(!isset($entry['isdraft']) && $serendipity['publishDefault'] == 'draft') ) {
$draftD = ' selected="selected"';
+ $template_vars['draft_mode'] = 'draft';
} else {
$draftP = ' selected="selected"';
+ $template_vars['draft_mode'] = 'publish';
}
if (isset($entry['moderate_comments']) && (serendipity_db_bool($entry['moderate_comments']))) {
+ $template_vars['moderate_comments'] = true;
$moderate_comments = ' checked="checked"';
} elseif (!isset($entry['moderate_comments']) && ($serendipity['moderateCommentsDefault'] == 'true' || $serendipity['moderateCommentsDefault'] === true)) {
// This is the default on creation of a new entry and depends on the "moderateCommentsDefault" variable of the configuration.
$moderate_comments = ' checked="checked"';
+ $template_vars['moderate_comments'] = true;
} else {
$moderate_comments = '';
+ $template_vars['moderate_comments'] = false;
}
if (isset($entry['allow_comments']) && (serendipity_db_bool($entry['allow_comments']))) {
+ $template_vars['allow_comments'] = true;
$allow_comments = ' checked="checked"';
} elseif ((!isset($entry['allow_comments']) || $entry['allow_comments'] !== 'false') && (!isset($serendipity['allowCommentsDefault']) || $serendipity['allowCommentsDefault'] == 'true' || $serendipity['allowCommentsDefault'] === true)) {
// This is the default on creation of a new entry and depends on the "allowCommentsDefault" variable of the configuration.
+ $template_vars['allow_comments'] = true;
$allow_comments = ' checked="checked"';
} else {
+ $template_vars['allow_comments'] = false;
$allow_comments = '';
}
if (is_array($cats = serendipity_fetchCategories())) {
$cats = serendipity_walkRecursive($cats, 'categoryid', 'parentid', VIEWMODE_THREADED);
- foreach ( $cats as $cat ) {
- $cat_list .= '<option value="'. $cat['categoryid'] .'"'. (in_array($cat['categoryid'], $selected) ? ' selected="selected"' : '') .'>'. str_repeat(' ', $cat['depth']) . $cat['category_name'] .'</option>' . "\n";
+ foreach ($cats as $cat) {
+
+ if (in_array($cat['categoryid'], $selected)) {
+ $cat['is_selected'] = true;
+ }
+
+ $cat['depth_pad'] = str_repeat(' ', $cat['depth']);
+
+ $template_vars['category_options'][] = $cat;
+ $cat_list .= '<option value="'. $cat['categoryid'] .'"'. ($cat['is_selected'] ? ' selected="selected"' : '') .'>'. $cat['depth_pad'] . $cat['category_name'] .'</option>' . "\n";
}
}
+
$cat_list .= '</select>' . $n;
if (!empty($serendipity['GET']['title'])) {
$hidden .= ' <input type="hidden" name="serendipity[timestamp]" value="' . (isset($entry['timestamp']) ? serendipity_serverOffsetHour($entry['timestamp']) : serendipity_serverOffsetHour(time())) . '" />' . $n;
$hidden .= ' <input type="hidden" name="serendipity[preview]" value="false" />';
$hidden .= ' ' . serendipity_setFormToken();
+
+ if (is_object($serendipity['smarty'])) {
+ if (isset($serendipity['allowDateManipulation']) && $serendipity['allowDateManipulation']) {
+ $template_vars['allowDateManipulation'] = true;
+ }
+
+ if ((!empty($entry['extended']) || !empty($serendipity['COOKIE']['toggle_extended'])) && !$serendipity['wysiwyg']) {
+ $template_vars['show_wysiwyg'] = true;
+ }
+
+ if (eregi($serendipity['EditorBrowsers'], $_SERVER['HTTP_USER_AGENT']) ) {
+ $template_vars['wysiwyg_advanced'] = true;
+ }
+
+ $template_vars['timestamp'] = serendipity_serverOffsetHour(isset($entry['timestamp']) && $entry['timestamp'] > 0 ? $entry['timestamp'] : time());
+ $template_vars['reset_timestamp'] = serendipity_serverOffsetHour(time());
+ $template_vars['hidden'] = $hidden;
+ $template_vars['errMsG'] = $errMsg;
+ $template_vars['entry'] =& $entry;
+ $template_vars['targetURL'] = $targetURL;
+ $template_vars['cat_count'] = count($cats)+1;
+ $template_vars['cat_state'] = $categoryselector_expanded ? 'on' : 'off';
+ $template_vars['wysiwyg'] = $serendipity['wysiwyg'];
+ $template_vars['serendipityRightPublish'] = $_SESSION['serendipityRightPublish'];
+ $template_vars['wysiwyg_blocks'] = array(
+ 'body' => 'serendipity[body]',
+ 'extended' => 'serendipity[extended]'
+ );
+ $serendipity['smarty']->register_modifier('emit_htmlarea_code', 'serendipity_emit_htmlarea_code');
+ $serendipity['smarty']->assign('admin_view', 'entryform');
+ $serendipity['smarty']->assign_by_ref('entry_vars', $template_vars);
+ $serendipity['smarty']->display(serendipity_getTemplateFile('admin/entries.tpl', 'serendipityPath'));
+ return true;
+ }
+
+ /* HTML CODE BELOW IS FOR FALLBACK PORTABILITY ONLY - MODIFY CODE IN TEMPLATE ADMIN/ENTRIES.TPL INSTEAD! */
if (!empty($errMsg)) {
?>
<div class="serendipityAdminMsgError"><?php echo $errMsg; ?></div>
// Beware: Smarty is used in the Admin backend, despite of this.
include $template_dir . '/template.inc.php';
} else {
- // Default Smarty Engine will be used
+ // Set a session variable if Smarty fails:
+ $prev_smarty = $_SESSION['no_smarty'];
+ $_SESSION['no_smarty'] = true;
+ // Default Smarty Engine will be used
@define('SMARTY_DIR', S9Y_PEAR_PATH . 'Smarty/libs/');
if (!class_exists('Smarty')) {
- require SMARTY_DIR . 'Smarty.class.php';
+ include SMARTY_DIR . 'Smarty.class.php';
+ }
+
+ if (!class_exists('Smarty')) {
+ return false;
}
+
$serendipity['smarty'] = new Smarty;
if ($serendipity['production'] === 'debug') {
$serendipity['smarty']->force_compile = true;
$serendipity['smarty']->compile_dir = $serendipity['serendipityPath'] . PATH_SMARTY_COMPILE;
if (!is_dir($serendipity['smarty']->compile_dir) || !is_writable($serendipity['smarty']->compile_dir)) {
- serendipity_die(sprintf(DIRECTORY_WRITE_ERROR, $serendipity['smarty']->compile_dir));
+ printf(DIRECTORY_WRITE_ERROR, $serendipity['smarty']->compile_dir);
+ return false;
}
+ // Hooray for Smarty:
+ $_SESSION['no_smarty'] = $prev_smarty;
+
$serendipity['smarty']->config_dir = $template_dir;
$serendipity['smarty']->secure_dir = array($serendipity['serendipityPath'] . $serendipity['templatePath']);
$serendipity['smarty']->security_settings['MODIFIER_FUNCS'] = array('sprintf', 'sizeof', 'count', 'rand', 'print_r', 'str_repeat');
$serendipity['smarty']->register_modifier('formatTime', 'serendipity_smarty_formatTime');
$serendipity['smarty']->register_modifier('serendipity_utf8_encode', 'serendipity_utf8_encode');
$serendipity['smarty']->register_modifier('ifRemember', 'serendipity_ifRemember');
+ $serendipity['smarty']->register_modifier('checkPermission', 'serendipity_checkPermission');
$serendipity['smarty']->register_function('serendipity_printSidebar', 'serendipity_smarty_printSidebar');
$serendipity['smarty']->register_function('serendipity_hookPlugin', 'serendipity_smarty_hookPlugin');
if (!isset($_SESSION['author_token']) || !isset($serendipity['COOKIE']['author_token']) ||
($_SESSION['author_token'] !== $serendipity['COOKIE']['author_token'])) {
$_SESSION['serendipityAuthedUser'] = false;
- @session_destroy();
+ serendipity_session_destroy();
}
if (!serendipity_userLoggedIn()) {
// Try again to log in, this time with enabled external authentication event hook
return true;
}
+if (isset($serendipity['GET']['no_smarty']) || isset($serendipity['no_smarty'])) {
+ $_SESSION['no_smarty'] = true;
+}
+
+$admin_css_file = serendipity_getTemplateFile('admin/pluginmanager.css');
+
+if (defined('IS_up2date') && IS_up2date === true && IS_installed === true) {
+ $admin_installed = true;
+} else {
+ $admin_installed = false;
+}
+
+$is_logged_in = serendipity_userLoggedIn();
+
+if ($is_logged_in) {
+ $self_info = sprintf(USER_SELF_INFO, $serendipity['serendipityUser'], $serendipity['permissionLevels'][$serendipity['serendipityUserlevel']]);
+} else {
+ $self_info = '';
+}
+
+if (isset($serendipity['GET']['noBanner']) || isset($serendipity['POST']['noBanner'])) {
+ $no_banner = true;
+} else {
+ $no_banner = false;
+}
+
+if (isset($serendipity['GET']['noSidebar']) || isset($serendipity['POST']['noSidebar'])) {
+ $no_sidebar = true;
+} else {
+ $no_sidebar = false;
+}
+
+$file = '';
+if (!isset($serendipity['serendipityPath']) || IS_installed === false || IS_up2date === false ) {
+ $use_installer = true;
+ if (IS_installed === false) {
+ $file = 'include/admin/installer.inc.php';
+ } elseif ( IS_up2date === false ) {
+ $file = 'include/admin/upgrader.inc.php';
+ } else {
+ $file = ''; // For register_global, safety
+ }
+} else {
+ $use_installer = false;
+}
+
+$post_action = $serendipity['POST']['action'];
+
+$main_content = '';
+if (!$use_installer && $is_logged_in) {
+ if (!isset($serendipity['GET']['adminModule'])) {
+ $serendipity['GET']['adminModule'] = (isset($serendipity['POST']['adminModule']) ? $serendipity['POST']['adminModule'] : '');
+ }
+
+ ob_start();
+ serendipity_checkXSRF();
+
+ switch($serendipity['GET']['adminModule']) {
+ case 'installer':
+ case 'configuration':
+ if (!serendipity_checkPermission('siteConfiguration') && !serendipity_checkPermission('blogConfiguration')) {
+ break;
+ }
+
+ include S9Y_INCLUDE_PATH . 'include/admin/configuration.inc.php';
+ break;
+
+ case 'media':
+ case 'images':
+ if (!serendipity_checkPermission('adminImages')) {
+ break;
+ }
+
+ include S9Y_INCLUDE_PATH . 'include/admin/images.inc.php';
+ break;
+
+ case 'templates':
+ if (!serendipity_checkPermission('adminTemplates')) {
+ break;
+ }
+
+ include S9Y_INCLUDE_PATH . 'include/admin/templates.inc.php';
+ break;
+
+ case 'plugins':
+ if (!serendipity_checkPermission('adminPlugins')) {
+ break;
+ }
+
+ include S9Y_INCLUDE_PATH . 'include/admin/plugins.inc.php';
+ break;
+
+ case 'users':
+ if (!serendipity_checkPermission('adminUsers')) {
+ break;
+ }
+
+ include S9Y_INCLUDE_PATH . 'include/admin/users.inc.php';
+ break;
+
+ case 'groups':
+ if (!serendipity_checkPermission('adminUsersGroups')) {
+ break;
+ }
+
+ include S9Y_INCLUDE_PATH . 'include/admin/groups.inc.php';
+ break;
+
+ case 'personal':
+ if (!serendipity_checkPermission('personalConfiguration')) {
+ break;
+ }
+
+ include S9Y_INCLUDE_PATH . 'include/admin/personal.inc.php';
+ break;
+
+ case 'export':
+ if (!serendipity_checkPermission('adminImport')) {
+ break;
+ }
+
+ include S9Y_INCLUDE_PATH . 'include/admin/export.inc.php';
+ break;
+
+ case 'import':
+ if (!serendipity_checkPermission('adminImport')) {
+ break;
+ }
+
+ include S9Y_INCLUDE_PATH . 'include/admin/import.inc.php';
+ break;
+
+ case 'entries':
+ if (!serendipity_checkPermission('adminEntries')) {
+ break;
+ }
+
+ include S9Y_INCLUDE_PATH . 'include/admin/entries.inc.php';
+ break;
+
+ case 'comments':
+ if (!serendipity_checkPermission('adminComments')) {
+ break;
+ }
+
+ include S9Y_INCLUDE_PATH . 'include/admin/comments.inc.php';
+ break;
+
+ case 'category':
+ case 'categories':
+ if (!serendipity_checkPermission('adminCategories')) {
+ break;
+ }
+
+ include S9Y_INCLUDE_PATH . 'include/admin/category.inc.php';
+ break;
+
+ case 'logout':
+ echo LOGGEDOUT;
+ break;
+
+ case 'event_display':
+ if ($serendipity['no_create'] !== true) {
+ serendipity_plugin_api::hook_event('backend_sidebar_entries_event_display_' . $serendipity['GET']['adminAction'], $serendipity);
+ }
+ break;
+
+ case 'logout':
+ echo LOGGEDOUT;
+ break;
+
+ default:
+ include S9Y_INCLUDE_PATH . 'include/admin/overview.inc.php';
+ break;
+ }
+
+ $main_content = ob_get_contents();
+ ob_end_clean();
+}
+
+if (!$use_installer && !$_SESSION['no_smarty'] && serendipity_smarty_init()) {
+ $poll_admin_vars = array('css_file', 'admin_css_file', 'main_content', 'no_banner', 'no_sidebar', 'post_action', 'is_logged_in', 'admin_installed', 'self_info', 'use_installer');
+ $admin_vars = array();
+ foreach($poll_admin_vars AS $poll_admin_var) {
+ $admin_vars[$poll_admin_var] =& $$poll_admin_var;
+ }
+
+ $admin_vars['out'] = array();
+ $admin_vars['no_create'] = $serendipity['no_create'];
+
+ if ($serendipity['expose_s9y']) {
+ $admin_vars['version_info'] = sprintf(ADMIN_FOOTER_POWERED_BY, $serendipity['versionInstalled'], phpversion());
+ } else {
+ $admin_vars['version_info'] = sprintf(ADMIN_FOOTER_POWERED_BY, '', '');
+ }
+
+ $serendipity['smarty']->assign_by_ref('admin_vars', $admin_vars);
+ $serendipity['smarty']->display(serendipity_getTemplateFile('admin/index.tpl', 'serendipityPath'));
+} else {
?>
<html>
<head>
<title><?php echo SERENDIPITY_ADMIN_SUITE; ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo LANG_CHARSET; ?>" />
<link rel="stylesheet" type="text/css" href="<?php echo $css_file; ?>" />
- <link rel="stylesheet" type="text/css" href="<?php echo serendipity_getTemplateFile('admin/pluginmanager.css'); ?>" />
+ <link rel="stylesheet" type="text/css" href="<?php echo $admin_css_file; ?>" />
<script type="text/javascript">
function spawn() {
</script>
<?php
- if (defined('IS_up2date') && IS_up2date === true) {
+ if ($admin_installed) {
serendipity_plugin_api::hook_event('backend_header', $serendipity);
}
?>
</head>
<body id="serendipity_admin_page" onload="spawn()">
<table cellspacing="0" cellpadding="0" border="0" id="serendipityAdminFrame">
- <?php if (!isset($serendipity['GET']['noBanner']) && !isset($serendipity['POST']['noBanner'])) { ?>
+ <?php if (!$no_banner) { ?>
<tr>
<td colspan="2" id="serendipityAdminBanner">
- <?php if ( IS_installed === true && IS_up2date === true ) { ?>
+ <?php if ($admin_installed) { ?>
<h1><?php echo SERENDIPITY_ADMIN_SUITE ?></h1>
<h2><?php echo $serendipity['blogTitle'] ?></h2>
- <?php } elseif ( IS_installed === false || IS_up2date === false ) { ?>
+ <?php } else { ?>
<h1><?php echo SERENDIPITY_INSTALLATION ?></h1>
<?php } ?>
</td>
</tr>
<tr>
<td colspan="2" id="serendipityAdminInfopane">
- <?php if (serendipity_userLoggedIn()) { ?>
- <?php echo sprintf(USER_SELF_INFO, $serendipity['serendipityUser'], $serendipity['permissionLevels'][$serendipity['serendipityUserlevel']]) ?>
+ <?php if ($is_logged_in) { ?>
+ <?php echo $self_info; ?>
<?php } ?>
</td>
</tr>
<?php } ?>
<tr valign="top">
<?php
-if (!isset($serendipity['serendipityPath']) || IS_installed === false || IS_up2date === false ) {
- if (IS_installed === false) {
- $file = 'include/admin/installer.inc.php';
- } elseif ( IS_up2date === false ) {
- $file = 'include/admin/upgrader.inc.php';
- } else {
- $file = ''; // For register_global, safety
- }
+if ($use_installer) {
?>
<td class="serendipityAdminContent" colspan="2">
<?php require(S9Y_INCLUDE_PATH . $file); ?>
<?php
-} elseif ( serendipity_userLoggedIn() == false ) {
+} elseif (!$is_logged_in) {
$out = array();
serendipity_plugin_api::hook_event('backend_login_page', $out);
?>
<div align="center"><?php echo WELCOME_TO_ADMIN ?><br /><?php echo PLEASE_ENTER_CREDENTIALS ?></div>
<?php echo $out['header']; ?>
<br />
- <?php if ( isset($serendipity['POST']['action']) && !serendipity_userLoggedIn() ) { ?>
+ <?php if ($post_action != '' && !$is_logged_in ) { ?>
<div class="serendipityAdminMsgError"><?php echo WRONG_USERNAME_OR_PASSWORD; ?></div>
<?php } ?>
<form action="serendipity_admin.php" method="post">
<?php echo $out['footer']; ?>
<a href="<?php echo $serendipity['serendipityHTTPPath']; ?>"><?php echo BACK_TO_BLOG;?></a>
<?php
-
-
-
} else {
-?>
-<?php if (!isset($serendipity['GET']['noSidebar']) && !isset($serendipity['POST']['noSidebar'])) { ?>
+ if (!$no_sidebar) { ?>
<td id="serendipitySideBar">
<ul class="serendipitySideBarMenu">
<li><a href="serendipity_admin.php"><?php echo ADMIN_FRONTPAGE; ?></a></li>
<?php if (serendipity_checkPermission('adminEntries') || serendipity_checkPermission('adminEntriesPlugins')) { ?>
<?php if ($serendipity['no_create'] !== true) serendipity_plugin_api::hook_event('backend_sidebar_entries', $serendipity); ?>
<?php } ?>
- </ul>
<?php } ?>
+ </ul>
+
<?php if (serendipity_checkPermission('adminImages')) { ?>
<ul class="serendipitySideBarMenu">
<li class="serendipitySideBarMenuHead"><?php echo MEDIA; ?></li>
<?php } ?>
<td class="serendipityAdminContent">
<?php
- if (!isset($serendipity['GET']['adminModule'])) {
- $serendipity['GET']['adminModule'] = (isset($serendipity['POST']['adminModule']) ? $serendipity['POST']['adminModule'] : '');
- }
-
- serendipity_checkXSRF();
-
- switch($serendipity['GET']['adminModule']) {
- case 'installer':
- case 'configuration':
- if (!serendipity_checkPermission('siteConfiguration') && !serendipity_checkPermission('blogConfiguration')) {
- break;
- }
-
- include S9Y_INCLUDE_PATH . 'include/admin/configuration.inc.php';
- break;
-
- case 'media':
- case 'images':
- if (!serendipity_checkPermission('adminImages')) {
- break;
- }
-
- include S9Y_INCLUDE_PATH . 'include/admin/images.inc.php';
- break;
-
- case 'templates':
- if (!serendipity_checkPermission('adminTemplates')) {
- break;
- }
-
- include S9Y_INCLUDE_PATH . 'include/admin/templates.inc.php';
- break;
-
- case 'plugins':
- if (!serendipity_checkPermission('adminPlugins')) {
- break;
- }
-
- include S9Y_INCLUDE_PATH . 'include/admin/plugins.inc.php';
- break;
-
- case 'users':
- if (!serendipity_checkPermission('adminUsers')) {
- break;
- }
-
- include S9Y_INCLUDE_PATH . 'include/admin/users.inc.php';
- break;
-
- case 'groups':
- if (!serendipity_checkPermission('adminUsersGroups')) {
- break;
- }
-
- include S9Y_INCLUDE_PATH . 'include/admin/groups.inc.php';
- break;
-
- case 'personal':
- if (!serendipity_checkPermission('personalConfiguration')) {
- break;
- }
-
- include S9Y_INCLUDE_PATH . 'include/admin/personal.inc.php';
- break;
-
- case 'export':
- if (!serendipity_checkPermission('adminImport')) {
- break;
- }
-
- include S9Y_INCLUDE_PATH . 'include/admin/export.inc.php';
- break;
-
- case 'import':
- if (!serendipity_checkPermission('adminImport')) {
- break;
- }
-
- include S9Y_INCLUDE_PATH . 'include/admin/import.inc.php';
- break;
-
- case 'entries':
- if (!serendipity_checkPermission('adminEntries')) {
- break;
- }
-
- include S9Y_INCLUDE_PATH . 'include/admin/entries.inc.php';
- break;
-
- case 'comments':
- if (!serendipity_checkPermission('adminComments')) {
- break;
- }
-
- include S9Y_INCLUDE_PATH . 'include/admin/comments.inc.php';
- break;
-
- case 'category':
- case 'categories':
- if (!serendipity_checkPermission('adminCategories')) {
- break;
- }
-
- include S9Y_INCLUDE_PATH . 'include/admin/category.inc.php';
- break;
-
- case 'logout':
- echo LOGGEDOUT;
- break;
-
- case 'event_display':
- if ($serendipity['no_create'] !== true) {
- serendipity_plugin_api::hook_event('backend_sidebar_entries_event_display_' . $serendipity['GET']['adminAction'], $serendipity);
- }
- break;
-
- case 'logout':
- echo LOGGEDOUT;
- break;
-
- default:
- include S9Y_INCLUDE_PATH . 'include/admin/overview.inc.php';
- break;
- }
+ echo $main_content;
}
?>
</td>
</body>
</html>
<?php
-/* vim: set sts=4 ts=4 expandtab : */
-?>
\ No newline at end of file
+}
\ No newline at end of file
--- /dev/null
+<!-- ADMIN-ENTRY TEMPLATE: entries.tpl START -->
+{*** POSSIBLE ERROR MESSAGES START ***}
+{if $entry_vars.errMsg}
+ <div class="serendipityAdminMsgError">{$entry_vars.errMsg}</div>
+{/if}
+{*** POSSIBLE ERROR MESSAGES END ***}
+
+{*** MAIN ENTRY FORM START ***}
+<form {$entry_vars.entry.entry_form action="{$entry_vars.targetURL}" method="post" id="serendipityEntry" style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px">
+{$entry_vars.hidden}
+
+<table class="serendipityEntryEdit" border="0" width="100%">
+
+ {*** ENTRY TITLE, DRAFT START ***}
+ <tr>
+ <td>
+ <b>{$CONST.TITLE}:</b>
+ </td>
+ <td colspan="2">
+ <table width="100%" cellspacing="0" cellpadding="0" border="0">
+ <tr>
+ <td><input type="text" id="entryTitle" name="serendipity[title]" value="{$entry_vars.entry.title|@escape}" size="60" /></td>
+ <td align="right">
+ <select name="serendipity[isdraft]">
+ {if $entry_vars.serendipityRightPublish}
+ <option value="false" {if $entry_vars.draft_mode == 'publish'}selected="selected"{/if}>{CONST.PUBLISH}</option>
+ {/if}
+ <option value="true" {if $entry_vars.draft_mode == 'draft'}selected="selected"{/if}>{$CONST.DRAFT}</option>
+ </select>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ {*** ENTRY TITLE, DRAFT END ***}
+
+ <tr>
+
+ {*** ENTRY DATE,CATEGORY START ***}
+ {if $entry_vars.allowDateManipulation}
+ <td>
+ <b>{$CONST.DATE}:</b>
+ </td>
+ <td>
+ <input type="hidden" name="serendipity[chk_timestamp]" value="{$entry_vars.timestamp}" />
+ <input type="text" name="serendipity[new_timestamp]" id="serendipityNewTimestamp" value="{$entry_vars.timestamp|@formatTime:DATE_FORMAT_2}" />
+ <a href="#" onclick="document.getElementById('serendipityNewTimestamp').value = '{$entry_vars.reset_timestamp|@formatTime:DATE_FORMAT_2}'; return false;" title="{$CONST.RESET_DATE_DESC}"><img src="{serendipity_getFile file='admin/img/clock.png'}" border="0" style="vertical-align: text-top;" alt="{$CONST.RESET_DATE}" /></a>
+ </td>
+ <td align="right">
+ {else}
+ <td align="right" colspan="3">
+ {/if}
+ <a style="border:0; text-decoration: none" href="#" onclick="showItem('categoryselector'); return false" title="{$CONST.TOGGLE_OPTION}"><img src="{serendipity_getFile file='img/plus.png'}" id="option_categoryselector" style="border: 20px" alt="" border="0" /></a> <b>{$CONST.CATEGORY}:</b>
+ <select id="categoryselector" name="serendipity[categories][]" style="vertical-align: middle;" multiple="multiple">
+ <option value="0">[{$CONST.NO_CATEGORY}]</option>
+ {foreach from=$entry_vars.category_options item="entry_cat"}
+ <option value="{$entry_cat.categoryid}" {if $entry_cat.is_selected}selected="selected"{/if}>{$entry_cat.depth_pad}{$entry_cat.category_name}</option>
+ {/foreach}
+ </select>
+
+ <script type="text/javascript" language="JavaScript">
+
+ var plus_img = '{serendipity_getFile file='img/plus.png'}';
+ var minus_img = '{serendipity_getFile file='img/minus.png'}';
+ var cat_count = {$entry_vars.cat_count};
+ var selector_toggle = new Array();
+ var selector_store = new Array();
+ var selector_restore = new Array();
+
+ function checkSave() {
+ {serendipity_hookPlugin hook='backend_entry_checkSave' hookAll='true'}
+ return true;
+ }
+
+ selector_toggle['categoryselector'] = '{$entry_vars.cat_state}';
+ addLoadEvent(showItem);
+ </script>
+ <script type="text/javascript" language="JavaScript" src="{serendipity_getFile file='admin/category_selector.js'}">
+ </td>
+ </tr>
+ {*** ENTRY DATE,CATEGORY END ***}
+
+ {*** ENTRY TOOLBAR START ***}
+ <tr>
+ {if NOT $entry_vars.wysiwyg}
+ <td colspan="2"><b>{$CONST.ENTRY_BODY}</b></td>
+ <td align="right">
+ {if $entry_vars.wysiwyg_advanced}
+ <script type="text/javascript" language="JavaScript">
+ document.write('<input type="button" class="serendipityPrettyButton" name="insI" value="I" accesskey="i" style="font-style: italic" onclick="wrapSelection(document.forms[\'serendipityEntry\'][\'serendipity[body]\'],\'<em>\',\'</em>\')" />');
+ document.write('<input type="button" class="serendipityPrettyButton" name="insB" value="B" accesskey="b" style="font-weight: bold" onclick="wrapSelection(document.forms[\'serendipityEntry\'][\'serendipity[body]\'],\'<strong>\',\'</strong>\')" />');
+ document.write('<input type="button" class="serendipityPrettyButton" name="insU" value="U" accesskey="u" style="text-decoration: underline;" onclick="wrapSelection(document.forms[\'serendipityEntry\'][\'serendipity[body]\'],\'<u>\',\'</u>\')" />');
+ document.write('<input type="button" class="serendipityPrettyButton" name="insQ" value="{$CONST.QUOTE}" accesskey="q" style="font-style: italic" onclick="wrapSelection(document.forms[\'serendipityEntry\'][\'serendipity[body]\'],\'<blockquote>\',\'</blockquote>\')" />');
+ document.write('<input type="button" class="serendipityPrettyButton" name="insJ" value="img" accesskey="j" onclick="wrapInsImage(document.forms[\'serendipityEntry\'][\'serendipity[body]\'])" />');
+ document.write('<input type="button" class="serendipityPrettyButton" name="insImage" value="{$CONST.MEDIA}" style="" onclick="window.open(\'serendipity_admin_image_selector.php?serendipity[textarea]=body\', \'ImageSel\', \'width=800,height=600,toolbar=no,scrollbars=1,scrollbars,resize=1,resizable=1\');" />');
+ document.write('<input type="button" class="serendipityPrettyButton" name="insURL" value="URL" accesskey="l" onclick="wrapSelectionWithLink(document.forms[\'serendipityEntry\'][\'serendipity[body]\'])" />');
+ </script>
+ {else}
+ <script type="text/javascript" language="JavaScript">
+ document.write('<input type="button" class="serendipityPrettyButton" value=" B " onclick="serendipity_insBasic(document.forms[\'serendipityEntry\'][\'serendipity[body]\'], \'b\')">');
+ document.write('<input type="button" class="serendipityPrettyButton" value=" U " onclick="serendipity_insBasic(document.forms[\'serendipityEntry\'][\'serendipity[body]\'], \'u\')">');
+ document.write('<input type="button" class="serendipityPrettyButton" value=" I " onclick="serendipity_insBasic(document.forms[\'serendipityEntry\'][\'serendipity[body]\'], \'i\')">');
+ document.write('<input type="button" class="serendipityPrettyButton" value="<img>" onclick="serendipity_insImage(document.forms[\'serendipityEntry\'][\'serendipity[body]\'])">');
+ document.write('<input type="button" class="serendipityPrettyButton" value="{$CONST.MEDIA}" onclick="window.open(\'serendipity_admin_image_selector.php?serendipity[textarea]=body\', \'ImageSel\', \'width=800,height=600,toolbar=no\');">');
+ document.write('<input type="button" class="serendipityPrettyButton" value="Link" onclick="serendipity_insLink(document.forms[\'serendipityEntry\'][\'serendipity[body]\'])">');
+ </script>
+ {/if}
+ {serendipity_hookPlugin hook="backend_entry_toolbar_extended" data=$entry_data.entry hookAll="true"}
+ </td>
+ {else}
+ <td colspan="2"><b>{$CONST.ENTRY_BODY}</b></td>
+ <td>{serendipity_hookPlugin hook="backend_entry_toolbar_extended" data=$entry_data.entry hookAll="true"}</td>
+ {/if}
+ </tr>
+ {*** ENTRY TOOLBAR END ***}
+
+ {*** ENTRY BODY START ***}
+ <tr>
+ <td colspan="3">
+ <textarea style="width: 100%" name="serendipity[body]" id="serendipity[body]" cols="80" rows="20">{$entry_vars.entry.body|@escape}</textarea>
+ </td>
+ </tr>
+ {*** ENTRY BODY START ***}
+
+ {*** ENTRY OPTIONS START ***}
+ <tr>
+ <td colspan="3">
+ <table width="100%" cellpadding="0" cellspacing="0">
+ <tr>
+ <td align="left" width="70%">
+ <input id="checkbox_allow_comments" type="checkbox" name="serendipity[allow_comments]" value="true" {if $entry_vars.allow_comments}checked="checked"{/if} /><label for="checkbox_allow_comments">{$CONST.COMMENTS_ENABLE; ?></label><br />
+ <input id="checkbox_moderate_comments" type="checkbox" name="serendipity[moderate_comments]" value="true" {if $entry_vars.moderate_comments}checked="checked"{/if} /><label for="checkbox_moderate_comments">{$CONST.COMMENTS_MODERATE}</label>
+ </td>
+ <td align="right" rowspan="2" valign="middle" width="30%">
+ <input accesskey="p" type="submit" value="- {$CONST.PREVIEW} -" class="serendipityPrettyButton" style="width: 150px" onclick="document.forms['serendipityEntry'].elements['serendipity[preview]'].value='true';" /><br />
+ <input accesskey="s" type="submit" onclick="return checkSave();" value="- {$CONST.SAVE} -" class="serendipityPrettyButton" style="width: 150px" />
+ </td>
+ </tr>
+ </table>
+ <br />
+ </td>
+ </tr>
+ {*** ENTRY OPTIONS END ***}
+
+ {*** EXTENDED ENTRY TOOLBAR START ***}
+ <tr>
+ <td colspan="2">
+ {if NOT $entry_vars.wysiwyg}
+ <a style="border:0; text-decoration: none" href="#" onclick="toggle_extended(true); return false;" title="{$CONST.TOGGLE_OPTION}"><img src="{serendipity_getFile file='img/plus.png'}" id="option_extended" alt="+/-" border="0" /></a>
+ {/if}
+ <b>{$CONST.EXTENDED_BODY}</b>
+ </td>
+
+ <td align="right">
+ {if NOT $entry_vars.wysiwyg}
+ <div id="tools_extended" style="display: none">
+ {if $entry_vars.wysiwyg_advanced}
+ <input type="button" class="serendipityPrettyButton" name="insI" value="I" accesskey="i" style="font-style: italic" onclick="wrapSelection(document.forms['serendipityEntry']['serendipity[extended]'],'<em>','</em>')" />
+ <input type="button" class="serendipityPrettyButton" name="insB" value="B" accesskey="b" style="font-weight: bold" onclick="wrapSelection(document.forms['serendipityEntry']['serendipity[extended]'],'<strong>','</strong>')" />
+ <input type="button" class="serendipityPrettyButton" name="insU" value="U" accesskey="u" style="text-decoration: underline;" onclick="wrapSelection(document.forms['serendipityEntry']['serendipity[extended]'],'<u>','</u>')" />
+ <input type="button" class="serendipityPrettyButton" name="insQ" value="{$CONST.QUOTE}" accesskey="q" style="font-style: italic" onclick="wrapSelection(document.forms['serendipityEntry']['serendipity[extended]'],'<blockquote>','</blockquote>')" />
+ <input type="button" class="serendipityPrettyButton" name="insJ" value="img" accesskey="j" onclick="wrapInsImage(document.forms['serendipityEntry']['serendipity[extended]'])" />
+ <input type="button" class="serendipityPrettyButton" name="insImage" value="{$CONST.MEDIA}" onclick="window.open('serendipity_admin_image_selector.php?serendipity[textarea]=extended', 'ImageSel', 'width=800,height=600,toolbar=no,scrollbars=1,scrollbars,resize=1,resizable=1');" />
+ <input type="button" class="serendipityPrettyButton" name="insURL" value="URL" accesskey="l" onclick="wrapSelectionWithLink(document.forms['serendipityEntry']['serendipity[extended]'])" />
+ {else}
+ <input type="button" class="serendipityPrettyButton" value=" B " onclick="serendipity_insBasic(document.forms['serendipityEntry']['serendipity[extended]'], 'b')">
+ <input type="button" class="serendipityPrettyButton" value=" U " onclick="serendipity_insBasic(document.forms['serendipityEntry']['serendipity[extended]'], 'u')">
+ <input type="button" class="serendipityPrettyButton" value=" I " onclick="serendipity_insBasic(document.forms['serendipityEntry']['serendipity[extended]'], 'i')">
+ <input type="button" class="serendipityPrettyButton" value="<img>" onclick="serendipity_insImage(document.forms['serendipityEntry']['serendipity[extended]'])">
+ <input type="button" class="serendipityPrettyButton" value="{$CONST.MEDIA}" onclick="window.open('serendipity_admin_image_selector.php?serendipity[textarea]=extended', 'ImageSel', 'width=800,height=600,toolbar=no');">
+ <input type="button" class="serendipityPrettyButton" value="Link" onclick="serendipity_insLink(document.forms['serendipityEntry']['serendipity[extended]'])">
+ {/if}
+ {serendipity_hookPlugin hook="backend_entry_toolbar_extended" data=$entry_data.entry hookAll="true"}
+ </div>
+ {else}
+ {serendipity_hookPlugin hook="backend_entry_toolbar_extended" data=$entry_data.entry hookAll="true"}
+ {/if}
+ </td>
+ </tr>
+ {*** EXTENDED ENTRY TOOLBAR END ***}
+
+ {*** EXTENDED ENTRY BODY START ***}
+ <tr>
+ <td colspan="3">
+ <textarea style="width: 100%;" name="serendipity[extended]" id="serendipity[extended]" cols="80" rows="20">{$entry_vars.entry.extended|@escape}</textarea>
+ {if NOT $entry_vars.wysiwyg}
+ <script type="text/javascript" language="JavaScript">
+ toggle_extended();
+ </script>
+ {/if}
+ </td>
+ </tr>
+ {*** EXTENDED ENTRY BODY END ***}
+
+ <tr>
+ <td colspan="3">
+ <br />
+ <fieldset>
+ <legend><b>{$CONST.ADVANCED_OPTIONS}</b></legend>
+ {*** EXTERNAL PLUGINS OUTPUT START ***}
+ {serendipity_hookPlugin hook="backend_display" data=$entry_vars.entry hookAll="true"}
+ {*** EXTERNAL PLUGINS OUTPUT END ***}
+ </fieldset>
+ </td>
+ </tr>
+</table>
+</form>
+{*** MAIN ENTRY FORM END ***}
+
+{*** SPAWN WYSIWYG EDITORS START ***}
+{if $entry_vars.show_wysiwyg}
+<script type="text/javascript" language="JavaScript">
+ toggle_extended();
+</script>
+{/if}
+
+{if $entry_vars.wysiwyg}
+ {foreach from=$entry_vars.wysiwyg_blocks item="wysiwyg_block_item" key="wysiwyg_block_jsname"}
+ {$wysiwyg_block_item|emit_htmlarea_code:$wysiwyg_block_jsname}
+ {/foreach}
+ {serendipity_hookPlugin hook="backend_wysiwyg_finish" data=$entry_vars.wysiwyg_blocks hookAll="true"}
+{/if}
+{*** SPAWN WYSIWYG EDITORS END ***}
+
+<script type="text/javascript" language="JavaScript" src="serendipity_define.js.php"></script>
+<script type="text/javascript" language="JavaScript" src="serendipity_editor.js"></script>
+<!-- ADMIN-ENTRY TEMPLATE: entries.tpl END -->
--- /dev/null
+<html>
+ <head>
+<!-- ADMIN-ENTRY TEMPLATE: index.tpl START -->
+ <title>{$CONST.SERENDIPITY_ADMIN_SUITE}</title>
+ <meta http-equiv="Content-Type" content="text/html; charset={$CONST.LANG_CHARSET}" />
+ <link rel="stylesheet" type="text/css" href="{$admin_vars.css_file}" />
+ <link rel="stylesheet" type="text/css" href="{$admin_vars.admin_css_file}" />
+
+ <script type="text/javascript">
+ {literal}
+ function spawn() {
+ if (self.Spawnextended) {
+ Spawnextended();
+ }
+
+ if (self.Spawnbody) {
+ Spawnbody();
+ }
+
+ if (self.Spawnnugget) {
+ Spawnnugget();
+ }
+ }
+
+ function SetCookie(name, value) {
+ var today = new Date();
+ var expire = new Date();
+ expire.setTime(today.getTime() + (60*60*24*30));
+ document.cookie = 'serendipity[' + name + ']='+escape(value) + ';expires=' + expire.toGMTString();
+ }
+
+ function addLoadEvent(func) {
+ var oldonload = window.onload;
+ if (typeof window.onload != 'function') {
+ window.onload = func;
+ } else {
+ window.onload = function() {
+ oldonload();
+ func();
+ }
+ }
+ }
+ {/literal}
+
+ </script>
+ {if $admin_vars.admin_installed}
+ {serendipity_hookPlugin hook="backend_header" hookAll="true"}
+ {/if}
+ </head>
+
+ <body id="serendipity_admin_page" onload="spawn()">
+ <table cellspacing="0" cellpadding="0" border="0" id="serendipityAdminFrame">
+
+{*** BANNER START ***}
+ {if NOT $admin_vars.no_banner}
+ <tr>
+ <td colspan="2" id="serendipityAdminBanner">
+ {if $admin_vars.admin_installed}
+ <h1>{$CONST.SERENDIPITY_ADMIN_SUITE}</h1>
+ <h2>{$blogTitle}</h2>
+ {else}
+ <h1>{$CONST.SERENDIPITY_INSTALLATION}</h1>
+ {/if}
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" id="serendipityAdminInfopane">
+ {if $admin_vars.is_logged_in}
+ {$admin_vars.self_info}
+ {/if}
+ </td>
+ </tr>
+ {/if}
+{*** BANNER END ***}
+
+ <tr valign="top">
+{if NOT $admin_vars.is_logged_in}
+{*** LOGIN-AREA START ***}
+
+ {serendipity_hookPlugin hook="backend_header" data=$admin_vars.out hookAll="true"}
+ <td colspan="2" class="serendipityAdminContent">
+ <div align="center">{$CONST.WELCOME_TO_ADMIN}<br />
+ {$CONST.PLEASE_ENTER_CREDENTIALS}
+ {$admin_vars.out.header}
+ </div>
+ <br />
+
+ {if $admin_vars.post_action != '' AND NOT $admin_vars.is_logged_in}
+ <div class="serendipityAdminMsgError">{$CONST.WRONG_USERNAME_OR_PASSWORD}</div>
+ {/if}
+
+ <form action="serendipity_admin.php" method="post">
+ <input type="hidden" name="serendipity[action]" value="admin" />
+ <table cellspacing="10" cellpadding="0" border="0" align="center">
+ <tr>
+ <td>{$CONST.USERNAME}</td>
+ <td><input type="text" name="serendipity[user]" /></td>
+ </tr>
+ <tr>
+ <td>{$CONST.PASSWORD}</td>
+ <td><input type="password" name="serendipity[pass]" /></td>
+ </tr>
+ <tr>
+ <td colspan="2"><input id="autologin" type="checkbox" name="serendipity[auto]" /><label for="autologin"> {$CONST.AUTOMATIC_LOGIN}</label></td>
+ </tr>
+ <tr>
+ <td colspan="2" align="right"><input type="submit" name="submit" value="{$CONST.LOGIN} >" class="serendipityPrettyButton" /></td>
+ </tr>
+ {$admin_vars.out.table}
+ </table>
+ </form>
+ {$admin_vars.out.footer}
+ <a href="{$serendipityHTTPPath}">{$CONST.BACK_TO_BLOG}</a>
+{*** LOGIN-AREA END ***}
+{else}
+{*** SIDEBAR-MENU START ***}
+ {if NOT $admin_vars.no_sidebar}
+ <td id="serendipitySideBar">
+ {*** MAIN LINKS START ***}
+ <ul class="serendipitySideBarMenu">
+ <li><a href="serendipity_admin.php">{$CONST.ADMIN_FRONTPAGE}</a></li>
+ {if 'personalConfiguration'|checkPermission}
+ <li><a href="serendipity_admin.php?serendipity[adminModule]=personal">{$CONST.PERSONAL_SETTINGS}</a></li>
+ {/if}
+ </ul>
+ {*** MAIN LINKS END ***}
+
+ <br />
+
+ {*** ENTRY LINKS START ***}
+ <ul class="serendipitySideBarMenu">
+ {if 'adminEntries'|checkPermission OR 'adminEntriesPlugins'|checkPermission}
+ <li class="serendipitySideBarMenuHead">{$CONST.ADMIN_ENTRIES}</li>
+ {if 'adminEntries'|checkPermission}
+ <li><a href="serendipity_admin.php?serendipity[adminModule]=entries&serendipity[adminAction]=new">{$CONST.NEW_ENTRY}</a></li>
+ <li><a href="serendipity_admin.php?serendipity[adminModule]=entries&serendipity[adminAction]=editSelect">{$CONST.EDIT_ENTRIES}</a></li>
+ {/if}
+
+ {if 'adminComments'|checkPermission}
+ <li><a href="serendipity_admin.php?serendipity[adminModule]=comments">{$CONST.COMMENTS}</a></li>
+ {/if}
+
+ {if 'adminCategories'|checkPermission}
+ <li><a href="serendipity_admin.php?serendipity[adminModule]=category&serendipity[adminAction]=view">{$CONST.CATEGORIES}</a></li>
+ {/if}
+
+ {if 'adminEntries'|checkPermission OR 'adminEntriesPlugins'|checkPermission}
+ {if $admin_vars.no_create !== true} {serendipity_hookPlugin hook="backend_sidebar_entries" hookAll="true"}{/if}
+ {/if}
+ {/if}
+ </ul>
+ {*** ENTRY LINKS END ***}
+
+ {*** MEDIA LINKS START ***}
+ {if 'adminImages'|checkPermission}
+ <ul class="serendipitySideBarMenu">
+ <li class="serendipitySideBarMenuHead">{$CONST.MEDIA}</li>
+ {if 'adminImagesAdd'|checkPermission}
+ <li><a href="serendipity_admin.php?serendipity[adminModule]=media&serendipity[adminAction]=addSelect">{$CONST.ADD_MEDIA}</a></li>
+ {/if}
+ {if 'adminImagesView'|checkPermission}
+ <li><a href="serendipity_admin.php?serendipity[adminModule]=media">{$CONST.MEDIA_LIBRARY}</a></li>
+ {/if}
+ {if 'adminImagesDirectories'|checkPermission}
+ <li><a href="serendipity_admin.php?serendipity[adminModule]=media&serendipity[adminAction]=directorySelect">{$CONST.MANAGE_DIRECTORIES}</a></li>
+ {/if}
+ {if 'adminImagesSync'|checkPermission}
+ <li><a href="serendipity_admin.php?serendipity[adminModule]=media&serendipity[adminAction]=sync" onclick="return confirm('{$CONST.WARNING_THIS_BLAHBLAH}');">{$CONST.CREATE_THUMBS}</a></li>
+ {/if}
+ {if $admin_vars.no_create !== true} {serendipity_hookPlugin hook="backend_sidebar_entries_images" hookAll="true"}{/if}
+ </ul>
+ {/if}
+ {*** MEDIA LINKS END ***}
+
+ {*** APPEARANCE START ***}
+ {if 'adminTemplates'|checkPermission OR 'adminPlugins'|checkPermission}
+ <ul class="serendipitySideBarMenu">
+ <li class="serendipitySideBarMenuHead">{$CONST.APPEARANCE}</li>
+ {if 'adminTemplates'|checkPermission}
+ <li><a href="serendipity_admin.php?serendipity[adminModule]=templates">{$CONST.MANAGE_STYLES}</a></li>
+ {/if}
+ {if 'adminPlugins'|checkPermission}
+ <li><a href="serendipity_admin.php?serendipity[adminModule]=plugins">{$CONST.CONFIGURE_PLUGINS}</a></li>
+ {/if}
+ {if $admin_vars.no_create !== true} {serendipity_hookPlugin hook="backend_sidebar_admin_appearance" hookAll="true"}{/if}
+ </ul>
+ {/if}
+ {*** APPEARANCE END ***}
+
+ {*** USER MANAGEMENT START ***}
+ {if 'adminUsersGroups'|checkPermission OR 'adminImport'|checkPermission OR 'siteConfiguration'|checkPermission OR 'blogConfiguration'|checkPermission OR 'adminUsers'|checkPermission}
+ <ul class="serendipitySideBarMenu">
+ <li class="serendipitySideBarMenuHead">{$CONST.ADMIN}</li>
+ {if 'siteConfiguration'|checkPermission OR 'blogConfiguration'|checkPermission}
+ <li><a href="serendipity_admin.php?serendipity[adminModule]=configuration">{$CONST.CONFIGURATION}</a></li>
+ {/if}
+ {if 'adminUsers'|checkPermission}
+ <li><a href="serendipity_admin.php?serendipity[adminModule]=users">{$CONST.MANAGE_USERS}</a></li>
+ {/if}
+ {if 'adminUsersGroups'|checkPermission}
+ <li><a href="serendipity_admin.php?serendipity[adminModule]=groups">{$CONST.MANAGE_GROUPS}</a></li>
+ {/if}
+ {if 'adminImport'|checkPermission}
+ <li><a href="serendipity_admin.php?serendipity[adminModule]=import">{$CONST.IMPORT_ENTRIES}</a></li>
+ <li><a href="serendipity_admin.php?serendipity[adminModule]=export">{$CONST.EXPORT_ENTRIES}</a></li>
+ {/if}
+ {if $admin_vars.no_create !== true} {serendipity_hookPlugin hook="backend_sidebar_admin" hookAll="true"}{/if}
+ </ul>
+ {/if}
+ {*** USER MANAGEMENT END ***}
+
+ {*** LOGOUT START ***}
+ <br />
+ <ul class="serendipitySideBarMenu">
+ <li><a href="{$baseURL}">{$CONST.BACK_TO_BLOG}</a></li>
+ <li><a href="serendipity_admin.php?serendipity[adminModule]=logout">{$CONST.LOGOUT}</a></li>
+ </ul>
+ {*** LOGOUT END ***}
+
+ </td>
+ {/if}
+ <td class="serendipityAdminContent">
+
+ {*** MAIN CONTENT OF THE ADMIN INTERFACE START ***}
+ {$admin_vars.main_content}
+ {*** MAIN CONTENT OF THE ADMIN INTERFACE END ***}
+
+{/if}
+{*** SIDEBAR-MENU END ***}
+ </td>
+ </tr>
+ </table>
+
+ <br />
+ <div id="serendipityAdminFooter">
+ {$admin_vars.version_info}
+ </div>
+ </body>
+<!-- ADMIN-ENTRY TEMPLATE: index.tpl END -->
+</html>
\ No newline at end of file