本文整理汇总了PHP中dcPage::jsLoad方法的典型用法代码示例。如果您正苦于以下问题:PHP dcPage::jsLoad方法的具体用法?PHP dcPage::jsLoad怎么用?PHP dcPage::jsLoad使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类dcPage
的用法示例。
在下文中一共展示了dcPage::jsLoad方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: adminPopupPosts
public static function adminPopupPosts($editor = '')
{
if (empty($editor) || $editor != 'dcCKEditor') {
return;
}
return dcPage::jsLoad(self::$p_url . '/js/popup_posts.js');
}
示例2: beginPage
public function beginPage($breadcrumb = '', $head = '')
{
if ($this->in_plugin) {
echo '<html><head><title>' . __('Comments') . '</title>' . dcPage::jsLoad('js/_comments_actions.js') . $head . '</script></head><body>' . $breadcrumb;
} else {
dcPage::open(__('Comments'), dcPage::jsLoad('js/_comments_actions.js') . $head, $breadcrumb);
}
echo '<p><a class="back" href="' . $this->getRedirection(true) . '">' . __('Back to comments list') . '</a></p>';
}
示例3: jsToolBar
protected static function jsToolBar()
{
$res = dcPage::cssLoad(dcPage::getPF('dcLegacyEditor/css/jsToolBar/jsToolBar.css')) . dcPage::jsLoad(dcPage::getPF('dcLegacyEditor/js/jsToolBar/jsToolBar.js'));
if (isset($GLOBALS['core']->auth) && $GLOBALS['core']->auth->getOption('enable_wysiwyg')) {
$res .= dcPage::jsLoad(dcPage::getPF('dcLegacyEditor/js/jsToolBar/jsToolBar.wysiwyg.js'));
}
$res .= dcPage::jsLoad(dcPage::getPF('dcLegacyEditor/js/jsToolBar/jsToolBar.dotclear.js')) . '<script type="text/javascript">' . "\n" . "//<![CDATA[\n" . "jsToolBar.prototype.dialog_url = 'popup.php'; " . "jsToolBar.prototype.iframe_css = '" . 'body{' . 'font: 12px "DejaVu Sans","Lucida Grande","Lucida Sans Unicode",Arial,sans-serif;' . 'color : #000;' . 'background: #f9f9f9;' . 'margin: 0;' . 'padding : 2px;' . 'border: none;' . (l10n::getTextDirection($GLOBALS['_lang']) == 'rtl' ? 'direction:rtl;' : '') . '}' . 'pre, code, kbd, samp {' . 'font-family:"Courier New",Courier,monospace;' . 'font-size : 1.1em;' . '}' . 'code {' . 'color : #666;' . 'font-weight : bold;' . '}' . 'body > p:first-child {' . 'margin-top: 0;' . '}' . "'; " . "jsToolBar.prototype.base_url = '" . html::escapeJS($GLOBALS['core']->blog->host) . "'; " . "jsToolBar.prototype.switcher_visual_title = '" . html::escapeJS(__('visual')) . "'; " . "jsToolBar.prototype.switcher_source_title = '" . html::escapeJS(__('source')) . "'; " . "jsToolBar.prototype.legend_msg = '" . html::escapeJS(__('You can use the following shortcuts to format your text.')) . "'; " . "jsToolBar.prototype.elements.blocks.options.none = '" . html::escapeJS(__('-- none --')) . "'; " . "jsToolBar.prototype.elements.blocks.options.nonebis = '" . html::escapeJS(__('-- block format --')) . "'; " . "jsToolBar.prototype.elements.blocks.options.p = '" . html::escapeJS(__('Paragraph')) . "'; " . "jsToolBar.prototype.elements.blocks.options.h1 = '" . html::escapeJS(__('Level 1 header')) . "'; " . "jsToolBar.prototype.elements.blocks.options.h2 = '" . html::escapeJS(__('Level 2 header')) . "'; " . "jsToolBar.prototype.elements.blocks.options.h3 = '" . html::escapeJS(__('Level 3 header')) . "'; " . "jsToolBar.prototype.elements.blocks.options.h4 = '" . html::escapeJS(__('Level 4 header')) . "'; " . "jsToolBar.prototype.elements.blocks.options.h5 = '" . html::escapeJS(__('Level 5 header')) . "'; " . "jsToolBar.prototype.elements.blocks.options.h6 = '" . html::escapeJS(__('Level 6 header')) . "'; " . "jsToolBar.prototype.elements.strong.title = '" . html::escapeJS(__('Strong emphasis')) . "'; " . "jsToolBar.prototype.elements.em.title = '" . html::escapeJS(__('Emphasis')) . "'; " . "jsToolBar.prototype.elements.ins.title = '" . html::escapeJS(__('Inserted')) . "'; " . "jsToolBar.prototype.elements.del.title = '" . html::escapeJS(__('Deleted')) . "'; " . "jsToolBar.prototype.elements.quote.title = '" . html::escapeJS(__('Inline quote')) . "'; " . "jsToolBar.prototype.elements.code.title = '" . html::escapeJS(__('Code')) . "'; " . "jsToolBar.prototype.elements.br.title = '" . html::escapeJS(__('Line break')) . "'; " . "jsToolBar.prototype.elements.blockquote.title = '" . html::escapeJS(__('Blockquote')) . "'; " . "jsToolBar.prototype.elements.pre.title = '" . html::escapeJS(__('Preformated text')) . "'; " . "jsToolBar.prototype.elements.ul.title = '" . html::escapeJS(__('Unordered list')) . "'; " . "jsToolBar.prototype.elements.ol.title = '" . html::escapeJS(__('Ordered list')) . "'; " . "jsToolBar.prototype.elements.link.title = '" . html::escapeJS(__('Link')) . "'; " . "jsToolBar.prototype.elements.link.href_prompt = '" . html::escapeJS(__('URL?')) . "'; " . "jsToolBar.prototype.elements.link.hreflang_prompt = '" . html::escapeJS(__('Language?')) . "'; " . "jsToolBar.prototype.elements.img.title = '" . html::escapeJS(__('External image')) . "'; " . "jsToolBar.prototype.elements.img.src_prompt = '" . html::escapeJS(__('URL?')) . "'; " . "jsToolBar.prototype.elements.img_select.title = '" . html::escapeJS(__('Media chooser')) . "'; " . "jsToolBar.prototype.elements.post_link.title = '" . html::escapeJS(__('Link to an entry')) . "'; " . "jsToolBar.prototype.elements.removeFormat = jsToolBar.prototype.elements.removeFormat || {}; " . "jsToolBar.prototype.elements.removeFormat.title = '" . html::escapeJS(__('Remove text formating')) . "'; ";
if (!$GLOBALS['core']->auth->check('media,media_admin', $GLOBALS['core']->blog->id)) {
$res .= "jsToolBar.prototype.elements.img_select.disabled = true;\n";
}
$res .= "jsToolBar.prototype.toolbar_bottom = " . (isset($GLOBALS['core']->auth) && $GLOBALS['core']->auth->getOption('toolbar_bottom') ? 'true' : 'false') . ";\n";
$res .= "\n//]]>\n" . "</script>\n";
return $res;
}
示例4: adminPageHTMLHead
public static function adminPageHTMLHead()
{
global $core;
if ($core->blog->settings->system->theme != 'ductile') {
return;
}
echo "\n" . '<!-- Header directives for Ductile configuration -->' . "\n";
$core->auth->user_prefs->addWorkspace('accessibility');
if (!$core->auth->user_prefs->accessibility->nodragdrop) {
echo dcPage::jsLoad('js/jquery/jquery-ui.custom.js') . dcPage::jsLoad('js/jquery/jquery.ui.touch-punch.js');
echo <<<EOT
<script type="text/javascript">
//<![CDATA[
\$(function() {
\t\$("#stickerslist").sortable({'cursor':'move'});
\t\$("#stickerslist tr").hover(function () {
\t\t\$(this).css({'cursor':'move'});
\t}, function () {
\t\t\$(this).css({'cursor':'auto'});
\t});
\t\$('#theme_config').submit(function() {
\t\tvar order=[];
\t\t\$("#stickerslist tr td input.position").each(function() {
\t\t\torder.push(this.name.replace(/^order\\[([^\\]]+)\\]\$/,'\$1'));
\t\t});
\t\t\$("input[name=ds_order]")[0].value = order.join(',');
\t\treturn true;
\t});
\t\$("#stickerslist tr td input.position").hide();
\t\$("#stickerslist tr td.handle").addClass('handler');
});
//]]>
</script>
EOT;
}
}
示例5: onActionLegacy
public static function onActionLegacy($core, dcPagesActionsPage $as, $post)
{
$core->callBehavior('adminPostsActions', $core, $as->getRS(), $as->getAction(), $as->getRedirection());
$as->beginPage('', dcPage::jsLoad('js/jquery/jquery.autocomplete.js') . dcPage::jsMetaEditor() . $core->callBehavior('adminPostsActionsHeaders'), '');
ob_start();
$core->callBehavior('adminPostsActionsContent', $core, $as->getAction(), $as->getHiddenFields(true));
$res = ob_get_contents();
ob_end_clean();
$res = str_replace("posts_actions.php", "plugin.php", $res);
echo $res;
$as->endPage();
}
示例6: array
$core->callBehavior('adminDashboardContents', $core, $__dashboard_contents);
# Editor stuff
$admin_post_behavior = '';
if ($core->auth->user_prefs->dashboard->quickentry) {
if ($core->auth->check('usage,contentadmin', $core->blog->id)) {
$post_format = $core->auth->getOption('post_format');
$post_editor = $core->auth->getOption('editor');
if ($post_editor && !empty($post_editor[$post_format])) {
// context is not post because of tags not available
$admin_post_behavior = $core->callBehavior('adminPostEditor', $post_editor[$post_format], 'quickentry', array('#post_content'), $post_format);
}
}
}
/* DISPLAY
-------------------------------------------------------- */
dcPage::open(__('Dashboard'), dcPage::jsLoad('js/_index.js') . $admin_post_behavior . $core->callBehavior('adminDashboardHeaders'), dcPage::breadcrumb(array(__('Dashboard') . ' : ' . html::escapeHTML($core->blog->name) => ''), array('home_link' => false)));
# Dotclear updates notifications
if ($core->auth->isSuperAdmin() && is_readable(DC_DIGESTS)) {
$updater = new dcUpdate(DC_UPDATE_URL, 'dotclear', DC_UPDATE_VERSION, DC_TPL_CACHE . '/versions');
$new_v = $updater->check(DC_VERSION);
$version_info = $new_v ? $updater->getInfoURL() : '';
if ($updater->getNotify() && $new_v) {
echo '<div class="dc-update"><h3>' . sprintf(__('Dotclear %s is available!'), $new_v) . '</h3> ' . '<p><a class="button submit" href="' . $core->adminurl->get("admin.update") . '">' . sprintf(__('Upgrade now'), $new_v) . '</a> ' . '<a class="button" href="' . $core->adminurl->get("admin.update", array('hide_msg' => 1)) . '">' . __('Remind me later') . '</a>' . ($version_info ? ' </p>' . '<p class="updt-info"><a href="' . $version_info . '">' . __('Information about this version') . '</a>' : '') . '</p>' . '</div>';
}
}
if ($core->auth->getInfo('user_default_blog') != $core->blog->id && $core->auth->getBlogCount() > 1) {
echo '<p><a href="' . $core->adminurl->get("admin.home", array('default_blog' => 1)) . '" class="button">' . __('Make this blog my default blog') . '</a></p>';
}
if ($core->blog->status == 0) {
echo '<p class="static-msg">' . __('This blog is offline') . '.</p>';
} elseif ($core->blog->status == -1) {
示例7: switch
}
}
}
# Display
?>
<html>
<head>
<title><?php
echo $page_title;
?>
</title>
<?php
$core->auth->user_prefs->addWorkspace('accessibility');
if (!$core->auth->user_prefs->accessibility->nodragdrop) {
echo dcPage::jsLoad('js/jquery/jquery-ui.custom.js') . dcPage::jsLoad('js/jquery/jquery.ui.touch-punch.js') . dcPage::jsLoad(dcPage::getPF('simpleMenu/simplemenu.js'));
}
echo dcPage::jsConfirmClose('settings', 'menuitemsappend', 'additem', 'menuitems');
?>
</head>
<body>
<?php
if ($step) {
switch ($step) {
case 1:
$step_label = __('Step #1');
break;
case 2:
if ($items[$item_type][1]) {
示例8: foreach
$post_title = html::escapeHTML(trim(html::clean($post_title)));
foreach (explode("\n", $tb_urls) as $tb_url) {
try {
$TB->ping($tb_url, $id, $post_title, $tb_excerpt, $post_url);
} catch (Exception $e) {
$core->error->add($e->getMessage());
}
}
if (!$core->error->flag()) {
http::redirect('trackbacks.php?id=' . $id . '&sent=1');
}
}
$page_title = __('Ping blogs');
/* DISPLAY
-------------------------------------------------------- */
dcPage::open($page_title, dcPage::jsLoad('js/_trackbacks.js'));
# Exit if we cannot view page
if (!$can_view_page) {
dcPage::close();
exit;
}
if (!empty($_GET['sent'])) {
echo '<p class="message">' . __('All pings sent.') . '</p>';
}
echo '<h2>' . html::escapeHTML($core->blog->name) . ' › ' . $page_title . '</h2>';
echo '<p><a href="' . $core->getPostAdminURL($post->post_type, $id) . '">« ' . sprintf(__('Back to "%s"'), html::escapeHTML($post->post_title)) . '</a></p>';
echo '<h3 id="entry-preview-title">' . html::escapeHTML($post->post_title) . '</h3>' . '<div class="frame-shrink" id="entry-preview">' . ($post->post_excerpt_xhtml ? $post->post_excerpt_xhtml . '<hr />' : '') . $post->post_content_xhtml . '</div>';
if (!empty($_GET['auto'])) {
flush();
$tb_urls = implode("\n", $TB->discover($post->post_excerpt_xhtml . ' ' . $post->post_content_xhtml));
} else {
示例9: abs
}
$core->blog->settings->maintenance->put('ts_' . $t->id(), abs((int) $ts), 'integer', sprintf('Recall time for task %s', $t->id()), true, $t->blog());
}
dcPage::addSuccessNotice(__('Maintenance plugin has been successfully configured.'));
http::redirect($p_url . '&tab=' . $tab . '#' . $tab);
} catch (Exception $e) {
$core->error->add($e->getMessage());
}
}
// Combos
$combo_ts = array(__('Never') => 0, __('Every week') => 604800, __('Every two weeks') => 1209600, __('Every month') => 2592000, __('Every two months') => 5184000);
// Display page
echo '<html><head>
<title>' . __('Maintenance') . '</title>' . dcPage::jsPageTabs($tab) . dcPage::jsLoad(dcPage::getPF('maintenance/js/settings.js'));
if ($task && $task->ajax()) {
echo '<script type="text/javascript">' . "\n" . "//<![CDATA[\n" . dcPage::jsVar('dotclear.msg.wait', __('Please wait...')) . "//]]>\n" . '</script>' . dcPage::jsLoad(dcPage::getPF('maintenance/js/dc.maintenance.js'));
}
echo $maintenance->getHeaders() . '
</head>
<body>';
// Check if there is somthing to display according to user permissions
if (empty($tasks)) {
echo dcPage::breadcrumb(array(__('Plugins') => '', __('Maintenance') => '')) . '<p class="warn">' . __('You have not sufficient permissions to view this page.') . '</p>' . '</body></html>';
return null;
}
if ($task && ($res = $task->step()) !== null) {
// Page title
echo dcPage::breadcrumb(array(__('Plugins') => '', '<a href="' . $p_url . '">' . __('Maintenance') . '</a>' => '', html::escapeHTML($task->name()) => '')) . dcPage::notices();
// content
if (substr($res, 0, 1) != '<') {
$res = sprintf('<p class="step-msg">%s</p>', $res);
示例10: catch
} catch (Exception $e) {
$core->error->add($e->getMessage());
}
}
# Reset order
if (!empty($_POST['reset'])) {
try {
$core->blog->resetCategoriesOrder();
http::redirect('categories.php?reord=1');
} catch (Exception $e) {
$core->error->add($e->getMessage());
}
}
/* Display
-------------------------------------------------------- */
dcPage::open(__('Categories'), dcPage::jsToolMan() . "\n" . dcPage::jsLoad('js/_categories.js'));
if (!empty($_GET['add'])) {
echo '<p class="message">' . __('The category has been successfully created.') . '</p>';
}
if (!empty($_GET['del'])) {
echo '<p class="message">' . __('The category has been successfully removed.') . '</p>';
}
if (!empty($_GET['reord'])) {
echo '<p class="message">' . __('Categories have been successfully reordered.') . '</p>';
}
if (!empty($_GET['moved'])) {
echo '<p class="message">' . __('The category has been successfully moved.') . '</p>';
}
echo '<h2>' . html::escapeHTML($core->blog->name) . ' › ' . __('Categories') . '</h2>';
$rs = $core->blog->getCategories(array('post_type' => 'post'));
echo '<div class="two-cols">' . '<div class="col">';
示例11: pingJS
public static function pingJS()
{
global $core;
$res = "<script type=\"text/javascript\">\n//<![CDATA[\n" . dcPage::jsVar('dotclear.msg.check_all', __('Check all')) . "\n" . "</script>\n" . dcPage::jsLoad(dcPage::getPF('pings/post.js'));
return $res;
}
示例12: catch
} catch (Exception $e) {
$core->error->add($e->getMessage());
}
}
/* Display
-------------------------------------------------------- */
$rs = $core->blog->getCategories(array('post_type' => 'post'));
$starting_script = "";
$core->auth->user_prefs->addWorkspace('accessibility');
if (!$core->auth->user_prefs->accessibility->nodragdrop && $core->auth->check('categories', $core->blog->id) && $rs->count() > 1) {
$starting_script .= dcPage::jsLoad('js/jquery/jquery-ui.custom.js');
$starting_script .= dcPage::jsLoad('js/jquery/jquery.ui.touch-punch.js');
$starting_script .= dcPage::jsLoad('js/jquery/jquery.mjs.nestedSortable.js');
}
$starting_script .= dcPage::jsConfirmClose('form-categories');
$starting_script .= dcPage::jsLoad('js/_categories.js');
dcPage::open(__('Categories'), $starting_script, dcPage::breadcrumb(array(html::escapeHTML($core->blog->name) => '', __('Categories') => '')));
if (!empty($_GET['del'])) {
dcPage::success(__('The category has been successfully removed.'));
}
if (!empty($_GET['reord'])) {
dcPage::success(__('Categories have been successfully reordered.'));
}
if (!empty($_GET['move'])) {
dcPage::success(__('Entries have been successfully moved to the category you choose.'));
}
$categories_combo = dcAdminCombos::getCategoriesCombo($rs);
echo '<p class="top-add"><a class="button add" href="' . $core->adminurl->get("admin.category") . '">' . __('New category') . '</a></p>';
echo '<div class="col">';
if ($rs->isEmpty()) {
echo '<p>' . __('No category so far.') . '</p>';
示例13: serialize
$core->blog->settings->put('blowup_style', serialize($blowup_user));
$core->blog->triggerBlog();
http::redirect($p_url . '&upd=1');
} catch (Exception $e) {
$core->error->add($e->getMessage());
}
}
?>
<html>
<head>
<title><?php
echo __('Blowup configuration');
?>
</title>
<?php
echo dcPage::jsLoad('index.php?pf=blowupConfig/config.js');
?>
<?php
echo dcPage::jsColorPicker();
?>
<script type="text/javascript">
//<![CDATA[
<?php
echo dcPage::jsVar('dotclear.blowup_public_url', blowupConfig::imagesURL());
echo dcPage::jsVar('dotclear.msg.predefined_styles', __('Predefined styles'));
echo dcPage::jsVar('dotclear.msg.apply_code', __('Apply code'));
?>
//]]>
</script>
</head>
示例14: __
$msg = __('The following files of your Dotclear installation ' . 'have been modified so we won\'t try to update your installation. ' . 'Please try to <a href="http://dotclear.org/download">update manually</a>.');
} elseif ($e->getCode() == dcUpdate::ERR_FILES_UNREADABLE) {
$msg = sprintf(__('The following files of your Dotclear installation are not readable. ' . 'Please fix this or try to make a backup file named %s manually.'), '<strong>backup-' . DC_VERSION . '.zip</strong>');
} elseif ($e->getCode() == dcUpdate::ERR_FILES_UNWRITALBE) {
$msg = __('The following files of your Dotclear installation cannot be written. ' . 'Please fix this or try to <a href="http://dotclear.org/download">update manually</a>.');
}
if (isset($e->bad_files)) {
$msg .= '<ul><li><strong>' . implode('</strong></li><li><strong>', $e->bad_files) . '</strong></li></ul>';
}
$core->error->add($msg);
$core->callBehavior('adminDCUpdateException', $e);
}
}
/* DISPLAY Main page
-------------------------------------------------------- */
dcPage::open(__('Dotclear update'), !$step ? dcPage::jsPageTabs($default_tab) . dcPage::jsLoad('js/_update.js') : '', dcPage::breadcrumb(array(__('System') => '', __('Dotclear update') => '')));
if (!$core->error->flag()) {
if (!empty($_GET['nocache'])) {
dcPage::success(__('Manual checking of update done successfully.'));
}
}
if (!$step) {
echo '<div class="multi-part" id="update" title="' . __('Dotclear update') . '">';
if (empty($new_v)) {
echo '<p><strong>' . __('No newer Dotclear version available.') . '</strong></p>' . '<form action="' . $p_url . '" method="get">' . '<p><input type="hidden" name="nocache" value="1" />' . '<input type="submit" value="' . __('Force checking update Dotclear') . '" /></p>' . '</form>';
} else {
echo '<p class="static-msg">' . sprintf(__('Dotclear %s is available.'), $new_v) . ($version_info ? ' <a href="' . $version_info . '" class="outgoing" title="' . __('Information about this version') . '">(' . __('Information about this version') . ') <img src="images/outgoing.png" alt=""/></a>' : '') . '</p>' . '<p>' . __('To upgrade your Dotclear installation simply click on the following button. ' . 'A backup file of your current installation will be created in your root directory.') . '</p>' . '<form action="' . $p_url . '" method="get">' . '<p><input type="hidden" name="step" value="check" />' . '<input type="submit" value="' . __('Update Dotclear') . '" /></p>' . '</form>';
}
echo '</div>';
if (!empty($archives)) {
echo '<div class="multi-part" id="files" title="' . __('Manage backup files') . '">';
示例15: __
dcPage::open(__('Blog appearance'), dcPage::jsPageTabs() . dcPage::jsColorPicker() . $core->callBehavior('themesToolsHeaders', $core, true), dcPage::breadcrumb(array(html::escapeHTML($core->blog->name) => '', __('Blog appearance') => $list->getURL('', false), '<span class="page-title">' . __('Theme configuration') . '</span>' => '')));
# Display previously gathered content
$list->displayConfiguration();
dcPage::helpBlock('core_blog_theme_conf');
dcPage::close();
# Stop reading code here
return;
}
# -- Execute actions --
try {
$list->doActions();
} catch (Exception $e) {
$core->error->add($e->getMessage());
}
# -- Page header --
dcPage::open(__('Themes management'), dcPage::jsLoad('js/_blog_theme.js') . dcPage::jsPageTabs() . dcPage::jsColorPicker() . $core->callBehavior('themesToolsHeaders', $core, false), dcPage::breadcrumb(array(html::escapeHTML($core->blog->name) => '', '<span class="page-title">' . __('Blog appearance') . '</span>' => '')));
# -- Display modules lists --
if ($core->auth->isSuperAdmin()) {
# Updated modules from repo
$modules = $list->store->get(true);
if (!empty($modules)) {
echo '<div class="multi-part" id="update" title="' . html::escapeHTML(__('Update themes')) . '">' . '<h3>' . html::escapeHTML(__('Update themes')) . '</h3>' . '<p>' . sprintf(__('There is one theme to update available from repository.', 'There are %s themes to update available from repository.', count($modules)), count($modules)) . '</p>';
$list->setList('theme-update')->setTab('themes')->setModules($modules)->displayModules(array('checkbox', 'name', 'sshot', 'desc', 'author', 'version', 'current_version', 'parent'), array('update', 'delete'));
echo '<p class="info vertical-separator">' . sprintf(__("Visit %s repository, the resources center for Dotclear."), '<a href="http://themes.dotaddict.org/galerie-dc2/">Dotaddict</a>') . '</p>' . '</div>';
}
}
# Activated modules
$modules = $list->modules->getModules();
if (!empty($modules)) {
echo '<div class="multi-part" id="themes" title="' . __('Installed themes') . '">' . '<h3>' . __('Installed themes') . '</h3>' . '<p>' . __('You can configure and manage installed themes from this list.') . '</p>';
$list->setList('theme-activate')->setTab('themes')->setModules($modules)->displayModules(array('sshot', 'distrib', 'name', 'config', 'desc', 'author', 'version', 'parent'), array('select', 'behavior', 'deactivate', 'delete'));