First commit
22
cms/plugins/pagemanager/README.txt
Normal file
@ -0,0 +1,22 @@
|
||||
Pagemanager_XH -- a CMSimple_XH plugin
|
||||
Copyright (C) 2011-2012 Christoph M. Becker
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program (see license.txt).
|
||||
|
||||
For further information see help/help.htm.
|
||||
|
||||
Christoph M. Becker
|
||||
Präsident-Mohr-Straße 21
|
||||
55218 Ingelheim
|
||||
mailto: cmbecker69@gmx.de
|
552
cms/plugins/pagemanager/admin.php
Normal file
@ -0,0 +1,552 @@
|
||||
<?php // utf-8-marker: äöü
|
||||
|
||||
if (!defined('CMSIMPLE_VERSION') || preg_match('#/pagemanager/admin.php#i',$_SERVER['SCRIPT_NAME']))
|
||||
{
|
||||
die('no direct access');
|
||||
}
|
||||
|
||||
/**
|
||||
* Back-End of Pagemanager.
|
||||
*
|
||||
* Copyright (c) 2011-2012 Christoph M. Becker
|
||||
*/
|
||||
|
||||
/*
|
||||
Bugfix for CMSimple 5.9: ge-webdesign.de 2023-01
|
||||
ready for php 8: ge-webdesign.de 2021
|
||||
adapted for CMSimple 5: ge-webdesign.de 2020
|
||||
adapted for CMSimple 4: ge-webdesign.de 2012-2020
|
||||
*/
|
||||
|
||||
if (!defined('CMSIMPLE_VERSION'))
|
||||
{
|
||||
header('HTTP/1.0 403 Forbidden');
|
||||
exit;
|
||||
}
|
||||
|
||||
// activate backend template, if exists
|
||||
if(file_exists($pth['folder']['templates'].'__cmsimple_backend__/template.htm') && isset($pagemanager))
|
||||
{
|
||||
$pth['folder']['template'] = $pth['folder']['templates'].'__cmsimple_backend__/';
|
||||
$pth['file']['template'] = $pth['folder']['template'].'template.htm';
|
||||
$pth['file']['stylesheet'] = $pth['folder']['template'].'stylesheet.css';
|
||||
$pth['folder']['menubuttons'] = $pth['folder']['template'].'menu/';
|
||||
$pth['folder']['templateimages'] = $pth['folder']['template'].'images/';
|
||||
$cf['meta']['robots'] = 'noindex, nofollow';
|
||||
}
|
||||
|
||||
if($adm && stristr($_SERVER['QUERY_STRING'],'&pagemanager') && !stristr($_SERVER['QUERY_STRING'],'&edit'))header('Location: ./?&pagemanager&edit');
|
||||
|
||||
define('PAGEMANAGER_VERSION', 'CMSimple_4.8.2');
|
||||
|
||||
$plugin_cf['pagemanager']['verbose']="true";
|
||||
$plugin_cf['pagemanager']['toolbar_show']="true";
|
||||
$plugin_cf['pagemanager']['toolbar_vertical']="false";
|
||||
$plugin_cf['pagemanager']['treeview_theme']="cmsimple";
|
||||
$plugin_cf['pagemanager']['treeview_animation']="200";
|
||||
|
||||
if($cf['pagemanager']['pagedata_attribute'] != 'published')
|
||||
{
|
||||
$plugin_cf['pagemanager']['pagedata_attribute'] = 'linked_to_menu';
|
||||
}
|
||||
else
|
||||
{
|
||||
$plugin_cf['pagemanager']['pagedata_attribute'] = 'published';
|
||||
}
|
||||
|
||||
// Reads content.htm and sets $pagemanager_h.
|
||||
|
||||
function pagemanager_rfc()
|
||||
{
|
||||
global $pth, $tx, $cf, $pagemanager_h, $pagemanager_no_rename;
|
||||
|
||||
$c = array();
|
||||
$pagemanager_h = array();
|
||||
$u = array();
|
||||
$l = array();
|
||||
$empty = 0;
|
||||
$duplicate = 0;
|
||||
|
||||
$content = file_get_contents($pth['file']['content']);
|
||||
$stop = $cf['menu']['levels'];
|
||||
$split_token = '#@CMSIMPLE_SPLIT@#';
|
||||
|
||||
|
||||
$content = preg_split('~</body>~i', $content);
|
||||
|
||||
if($cf['use']['h1only_pagesplitting'] == 'true')
|
||||
{
|
||||
$content = preg_replace('~<h1.*class=".*_level[1-6]_page_.*"~i', $split_token . '$0', $content[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
$content = preg_replace('~<h[1-' . $stop . ']~i', $split_token . '$0', $content[0]);
|
||||
}
|
||||
|
||||
$content = explode($split_token, $content);
|
||||
array_shift($content);
|
||||
|
||||
foreach ($content as $page)
|
||||
{
|
||||
$c[] = $page;
|
||||
|
||||
if($cf['use']['h1only_pagesplitting'] == 'true')
|
||||
{
|
||||
preg_match('~<h1.*class=".*_level([1-6])_page_.*".*>(.*)</h~isU', $page, $temp);
|
||||
}
|
||||
else
|
||||
{
|
||||
preg_match('~<h([1-' . $stop . ']).*>(.*)</h~isU', $page, $temp);
|
||||
}
|
||||
|
||||
$l[] = $temp[1];
|
||||
$temp_h[] = trim(strip_tags($temp[2]));
|
||||
$pagemanager_no_rename[] = preg_match('/.*?<.*?/isU', $temp[2]);
|
||||
}
|
||||
|
||||
$cl = count($c);
|
||||
$s = -1;
|
||||
|
||||
if ($cl == 0)
|
||||
{
|
||||
if($cf['use']['h1only_pagesplitting'] == 'true')
|
||||
{
|
||||
$c[] = '<h1 class="_level1_page_">' . $tx['toc']['newpage'] . '</h1>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$c[] = '<h1>' . $tx['toc']['newpage'] . '</h1>';
|
||||
}
|
||||
|
||||
$pagemanager_h[] = trim(strip_tags($tx['toc']['newpage']));
|
||||
$pagemanager_no_rename[] = preg_match('/.*?<.*?/isU', $tx['toc']['newpage']);
|
||||
$l[] = 1;
|
||||
$s = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
foreach ($temp_h as $i => $pagemanager_heading)
|
||||
{
|
||||
if ($pagemanager_heading == '')
|
||||
{
|
||||
$empty++;
|
||||
$pagemanager_heading = $tx['toc']['empty'] . ' ' . $empty;
|
||||
}
|
||||
$pagemanager_h[$i] = $pagemanager_heading;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Returns plugin version information.
|
||||
|
||||
function pagemanager_version()
|
||||
{
|
||||
global $tx;
|
||||
return '
|
||||
<p><a href="./?pagemanager"><b>« Pagemanager</b></a></p>
|
||||
<div class="plugintext">
|
||||
<div class="plugineditcaption">
|
||||
Pagemanager for CMSimple
|
||||
</div>
|
||||
<hr />
|
||||
<p>' . $tx['message']['plugin_standard1'] . '</p>
|
||||
<p>' . $tx['message']['plugin_standard2'] . ' <a href="./?file=config&action=array"><b>' . $tx['filetype']['config'] . '</b></a></p>
|
||||
<hr />
|
||||
<p>Author: 2011-2012 <a href="https://3-magi.net">Christoph M. Becker</a></p>
|
||||
<p>Adapted for CMSimple 4.0 and higher: <a href="https://www.ge-webdesign.de/" target="_blank">ge-webdesign.de</a></p>
|
||||
<p>Pagemanager is based on <a href="https://old.jstree.com/">jsTree</a>.</p>
|
||||
</div>';
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Returns the toolbar.
|
||||
|
||||
@param string $image_ext The image extension (.gif or .png).
|
||||
@param string $save_js The js code for onclick.
|
||||
@return string The (x)html.
|
||||
*/
|
||||
|
||||
function pagemanager_toolbar($image_ext, $save_js)
|
||||
{
|
||||
global $pth, $plugin_cf, $tx;
|
||||
|
||||
$imgdir = $pth['folder']['plugins'].'pagemanager/images/';
|
||||
$horizontal = strtolower($plugin_cf['pagemanager']['toolbar_vertical']) != 'true';
|
||||
$res = '<div id="pagemanager-toolbar" class="'.($horizontal ? 'horizontal' : 'vertical').'">'."\n";
|
||||
$toolbar = array('save', 'separator', 'expand', 'collapse', 'separator', 'create', 'create_after', 'rename', 'delete', 'separator', 'cut', 'copy','paste', 'paste_after', 'separator', 'help');
|
||||
foreach ($toolbar as $tool)
|
||||
{
|
||||
$link = ($tool != 'help' ? 'href="#"' : 'href="#"');
|
||||
$img = $imgdir . $tool . ($tool != 'separator' || !$horizontal ? '' : '_v') . $image_ext;
|
||||
$class = $tool == 'separator' ? 'separator' : 'tool';
|
||||
|
||||
$res.= ($tool != 'separator' ? '<a ' . $link . ' class="pl_tooltip"' . ($tool == 'save' ? ' style="display: none"' : '') . '>' : '');
|
||||
$res.= '<img class="' . $class . '" src="' . $img . '"' . ($tool != 'help' ? ' onclick="pagemanager_do(\'' . $tool . '\'); return false;" alt="' . $tx['pagemanager']['op_' . $tool] . '"' : ' alt="' . $tx['pagemanager']['op_' . $tool] . '"') . '><span>' . $tx['pagemanager']['op_' . $tool] . '</span>' . "\n";
|
||||
$res.= ($tool != 'separator' ? '</a>' : '');
|
||||
}
|
||||
$res .= '</div>'."\n";
|
||||
return $res;
|
||||
}
|
||||
|
||||
|
||||
// Instanciate the pagemanager.js template.
|
||||
|
||||
function pagemanager_instanciateJS($image_ext)
|
||||
{
|
||||
global $pth, $plugin_cf, $cf, $tx;
|
||||
|
||||
$js = rf($pth['folder']['plugins'].'pagemanager/pagemanager.js');
|
||||
|
||||
preg_match_all('/<<<PT_(.*)>>>/', $js, $options);
|
||||
foreach ($options[1] as $opt)
|
||||
{
|
||||
$pagemanager_tx[$opt] = addcslashes($tx['pagemanager'][$opt],"\0'\"\\\f\n\r\t\v");
|
||||
}
|
||||
|
||||
// replace config variables
|
||||
$js = str_replace('<<<PC_verbose>>>', 'true', $js);
|
||||
$js = str_replace('<<<PC_treeview_animation>>>', '200', $js);
|
||||
$js = str_replace('<<<PC_treeview_theme>>>', 'cmsimple', $js);
|
||||
|
||||
// replace language variables
|
||||
$js = str_replace('<<<PT_button_cancel>>>', $pagemanager_tx["button_cancel"], $js);
|
||||
$js = str_replace('<<<PT_button_delete>>>', $pagemanager_tx["button_delete"], $js);
|
||||
$js = str_replace('<<<PT_button_ok>>>', $pagemanager_tx["button_ok"], $js);
|
||||
|
||||
$js = str_replace('<<<PT_error_cant_rename>>>', $pagemanager_tx["error_cant_rename"], $js);
|
||||
$js = str_replace('<<<PT_error_offending_extension>>>', $pagemanager_tx["error_offending_extension"], $js);
|
||||
|
||||
$js = str_replace('<<<PT_message_confirm_deletion>>>', $pagemanager_tx["message_confirm_deletion"], $js);
|
||||
$js = str_replace('<<<PT_message_confirm_leave>>>', $pagemanager_tx["message_confirm_leave"], $js);
|
||||
$js = str_replace('<<<PT_message_delete_last>>>', $pagemanager_tx["message_delete_last"], $js);
|
||||
$js = str_replace('<<<PT_message_menu_level>>>', $pagemanager_tx["message_menu_level"], $js);
|
||||
$js = str_replace('<<<PT_message_no_selection>>>', $pagemanager_tx["message_no_selection"], $js);
|
||||
$js = str_replace('<<<PT_message_warning_leave>>>', $pagemanager_tx["message_warning_leave"], $js);
|
||||
|
||||
$js = str_replace('<<<PT_op_create>>>', $pagemanager_tx["op_create"], $js);
|
||||
$js = str_replace('<<<PT_op_create_after>>>', $pagemanager_tx["op_create_after"], $js);
|
||||
$js = str_replace('<<<PT_op_rename>>>', $pagemanager_tx["op_rename"], $js);
|
||||
$js = str_replace('<<<PT_op_delete>>>', $pagemanager_tx["op_delete"], $js);
|
||||
$js = str_replace('<<<PT_op_cut>>>', $pagemanager_tx["op_cut"], $js);
|
||||
$js = str_replace('<<<PT_op_copy>>>', $pagemanager_tx["op_copy"], $js);
|
||||
$js = str_replace('<<<PT_op_paste>>>', $pagemanager_tx["op_paste"], $js);
|
||||
$js = str_replace('<<<PT_op_paste_after>>>', $pagemanager_tx["op_paste_after"], $js);
|
||||
|
||||
$js = str_replace('<<<PT_treeview_loading>>>', $pagemanager_tx["treeview_loading"], $js);
|
||||
$js = str_replace('<<<PT_treeview_new>>>', $pagemanager_tx["treeview_new"], $js);
|
||||
|
||||
// replace the rest
|
||||
if($cf['use']['h1only_pagesplitting'] == 'true')
|
||||
{
|
||||
$js = str_replace('<<<MENU_LEVELS>>>', '6', $js);
|
||||
}
|
||||
else
|
||||
{
|
||||
$js = str_replace('<<<MENU_LEVELS>>>', $cf['menu']['levels'], $js);
|
||||
}
|
||||
$js = str_replace('<<<TOC_DUPL>>>', $tx['toc']['dupl'], $js);
|
||||
$js = str_replace('<<<IMAGE_EXT>>>', $image_ext, $js);
|
||||
$js = str_replace('<<<IMAGE_DIR>>>', $pth['folder']['plugins'].'pagemanager/images/', $js);
|
||||
|
||||
return '<!-- initialize jstree -->'."\n" . '<script type="text/javascript">' . "\n" . '/* <![CDATA[ */' . $js . '/* ]]> */' . "\n" . '</script>'."\n";
|
||||
}
|
||||
|
||||
|
||||
// Emits the page administration (X)HTML.
|
||||
|
||||
function pagemanager_edit()
|
||||
{
|
||||
global $hjs, $pth, $o, $h, $l, $cf, $plugin, $plugin_cf, $tx, $u, $pagemanager_h, $pagemanager_no_rename, $pd_router, $csrfSession;
|
||||
|
||||
include_once($pth['folder']['plugins'].'jquery/jquery.inc.php');
|
||||
include_jQuery();
|
||||
include_jQueryUI();
|
||||
include_jQueryPlugin('jsTree', $pth['folder']['plugins'] . 'pagemanager/jstree/jquery.jstree.js');
|
||||
include_jQueryPlugin('cookies', $pth['folder']['plugins'] . 'pagemanager/jstree/jquery.cookie.js');
|
||||
|
||||
$image_ext = (file_exists($pth['folder']['plugins'].'pagemanager/images/help.png')) ? '.png' : '.gif';
|
||||
|
||||
pagemanager_rfc();
|
||||
|
||||
$bo = '';
|
||||
|
||||
$swo = '
|
||||
<div id="pagemanager-structure-warning" class="cmsimplecore_warning">
|
||||
<p>' . $tx['pagemanager']['error_structure_warning'] . '</p>
|
||||
<p><a href="javascript:pagemanager_confirmStructureWarning();">' . $tx['pagemanager']['error_structure_confirmation'] . '</a></p>
|
||||
</div>' . "\n";
|
||||
|
||||
$save_js = 'jQuery(\'#pagemanager-xml\')[0].value =' . ' jQuery(\'#pagemanager\').jstree(\'get_xml\', \'nest\', -1,new Array(\'id\', \'title\', \'pdattr\'))';
|
||||
$bo.= '<form id="pagemanager-form" action="./?&pagemanager&edit" method="post">';
|
||||
if($cf['use']['csrf_protection'] == 'true') $bo.= '<input type="hidden" name="csrf_token" value="' . $_SESSION[$csrfSession] . '">' . "\n";
|
||||
|
||||
$bo.= strtolower($plugin_cf['pagemanager']['toolbar_show']) == 'true' ? pagemanager_toolbar($image_ext, $save_js) : '';
|
||||
|
||||
// output the treeview of the page structure
|
||||
// uses ugly hack to clean up irregular page structure
|
||||
$irregular = FALSE;
|
||||
$pd = $pd_router->find_page(0);
|
||||
|
||||
|
||||
$bo.= '
|
||||
<script>
|
||||
function pm_pageLink(pm_pageLinkTarget){window.location.href = pm_pageLinkTarget;}
|
||||
</script>
|
||||
';
|
||||
|
||||
|
||||
$bo.= '
|
||||
<!-- page structure -->
|
||||
<div id="pagemanager" ondblclick="jQuery(\'#pagemanager\').jstree(\'toggle_node\');">
|
||||
<ul>
|
||||
<li id="pagemanager-0" title="' . str_replace('"','"',$pagemanager_h[0]) . '"' . ' pdattr="' . ($pd[$plugin_cf['pagemanager']['pagedata_attribute']] == '' ? '1' : $pd[$plugin_cf['pagemanager']['pagedata_attribute']]) . '"' . ($pagemanager_no_rename[0] ? ' class="pagemanager-no-rename"' : '') . '><a>'.$pagemanager_h[0].'</a><span class="pagelink" onclick="pm_pageLink(\'?' . $u[0] . '\')">»</span>';
|
||||
$stack = array();
|
||||
for ($i = 1; $i < count($h); $i++)
|
||||
{
|
||||
$ldiff = $l[$i] - $l[$i-1];
|
||||
if ($ldiff <= 0)
|
||||
{ // same level or decreasing
|
||||
$bo .= '</li>'."\n";
|
||||
if ($ldiff != 0 && count($stack) > 0)
|
||||
{
|
||||
$jdiff = array_pop($stack);
|
||||
if ($jdiff + $ldiff > 0)
|
||||
{
|
||||
array_push($stack, $jdiff + $ldiff);
|
||||
$ldiff = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
$ldiff += $jdiff - 1;
|
||||
}
|
||||
}
|
||||
for ($j = $ldiff; $j < 0; $j++)
|
||||
{
|
||||
$bo .= '</ul></li>'."\n";
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // level increasing
|
||||
if ($ldiff > 1)
|
||||
{
|
||||
array_push($stack, $ldiff);
|
||||
$irregular = TRUE;
|
||||
}
|
||||
$bo .= "\n".'<ul>'."\n";
|
||||
}
|
||||
$pd = $pd_router->find_page($i);
|
||||
|
||||
$bo.= '<li id="pagemanager-' . $i . '"' . ' title="' . str_replace('"','"',$pagemanager_h[$i]) . '"' . ' pdattr="' . ($pd[$plugin_cf['pagemanager']['pagedata_attribute']] == '' ? '1' : $pd[$plugin_cf['pagemanager']['pagedata_attribute']]) . '"' . ($pagemanager_no_rename[$i] ? ' class="pagemanager-no-rename"' : '') . '><a>' . $pagemanager_h[$i] . '</a><span class="pagelink" onclick="pm_pageLink(\'?' . $u[$i] . '\')">»</span>';
|
||||
}
|
||||
$bo .= '</ul>
|
||||
</div>'."\n";
|
||||
|
||||
if ($irregular)
|
||||
{
|
||||
$o .= $swo;
|
||||
}
|
||||
|
||||
$o .= $bo;
|
||||
$o .= pagemanager_instanciateJS($image_ext);
|
||||
|
||||
// HACK?: send 'edit' as query param to prevent the last if clause in
|
||||
// rfc() to insert #CMSimple hide#
|
||||
$o.= '<input type="hidden" name="admin" value="">
|
||||
<input type="hidden" name="action" value="plugin_save">
|
||||
<input type="hidden" name="xml" id="pagemanager-xml" value="">
|
||||
<input id="pagemanager-submit" type="submit" class="submit" value="'.ucfirst($tx['action']['save']).'" onclick="'.$save_js.'" style="display: none">
|
||||
</form>
|
||||
<div id="pagemanager-footer"> </div>
|
||||
';
|
||||
|
||||
$o .= '
|
||||
<div id="pagemanager-confirmation" title="' . $tx['pagemanager']['message_confirm'] . '?"></div>
|
||||
<div id="pagemanager-alert" title="' . $tx['pagemanager']['message_information'] . '"></div>
|
||||
';
|
||||
}
|
||||
|
||||
|
||||
// Handles start elements of jsTree's xml result.
|
||||
|
||||
function pagemanager_start_element_handler($parser, $name, $attribs)
|
||||
{
|
||||
global $o, $pagemanager_state;
|
||||
if ($name == 'ITEM')
|
||||
{
|
||||
$pagemanager_state['level']++;
|
||||
$pagemanager_state['id'] = $attribs['ID'] == '' ? '' : preg_replace('/(copy_)?pagemanager-([0-9]*)/', '$2', $attribs['ID']);
|
||||
$pagemanager_state['title'] = str_replace('"','"',htmlspecialchars($attribs['TITLE'],ENT_QUOTES,'UTF-8'));
|
||||
$pagemanager_state['pdattr'] = $attribs['PDATTR'];
|
||||
$pagemanager_state['num']++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Handles end elements of jsTree's xml result.
|
||||
|
||||
function pagemanager_end_element_handler($parser, $name)
|
||||
{
|
||||
global $pagemanager_state;
|
||||
if ($name == 'ITEM')
|
||||
{
|
||||
$pagemanager_state['level']--;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Handles character data of jsTree's xml result.
|
||||
|
||||
function pagemanager_cdata_handler($parser, $data)
|
||||
{
|
||||
global $pth, $c, $h, $cf, $pagemanager_fp, $pagemanager_state, $pagemanager_pd,$pd_router, $plugin_cf;
|
||||
$data = htmlspecialchars($data,ENT_QUOTES,'UTF-8');
|
||||
if (isset($c[$pagemanager_state['id']])) // existing pages
|
||||
{
|
||||
$cnt = $c[$pagemanager_state['id']];
|
||||
|
||||
if($cf['use']['h1only_pagesplitting'] == 'true')
|
||||
{
|
||||
$cnt = preg_replace('/<h1(.*)class="(.*)_level[1-6]_page_(.*)"(.*)>' . '((<[^>]*>)*)[^<]*((<[^>]*>)*)<\/h1>/i',
|
||||
'<h1$1class="$2_level' . $pagemanager_state['level'] . '_page_$3">${5}'.addcslashes($pagemanager_state['title'], '$\\').'$7' . '</h1>', $cnt, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
$cnt = preg_replace('/<h[1-' . $cf['menu']['levels'].']([^>]*)>' . '((<[^>]*>)*)[^<]*((<[^>]*>)*)<\/h[1-' . $cf['menu']['levels'] . ']([^>]*)>/i',
|
||||
'<h' . $pagemanager_state['level'].'$1>${2}'.addcslashes($pagemanager_state['title'], '$\\').'$4' . '</h'.$pagemanager_state['level'] . '$6>', $cnt, 1);
|
||||
}
|
||||
|
||||
fwrite($pagemanager_fp, rmnl($cnt."\n"));
|
||||
}
|
||||
else // new page
|
||||
{
|
||||
if($cf['use']['h1only_pagesplitting'] == 'true')
|
||||
{
|
||||
fwrite($pagemanager_fp, '<h1 class="_level' . $pagemanager_state['level'] . '_page_">' . $pagemanager_state['title'] . '</h1>
|
||||
<p><img src="' . $pth['folder']['base'] . 'userfiles/images/flags/en.gif" alt=""><br>This is a new CMSimple page.<br>Please never format, change or edit the page title above, as it is systemically relevant for CMSimple. Please use the page manager for this.</p>
|
||||
<p>You can overwrite this content now.</p>
|
||||
<p><img src="' . $pth['folder']['base'] . 'userfiles/images/flags/de.gif" alt=""><br>Dies ist eine neue CMSimple-Seite.<br>Bitte formatieren, ändern oder bearbeiten Sie niemals den Seitentitel ganz oben, da er für CMSimple systemrelevant ist. Bitte verwenden Sie dazu den Pagemanager.</p>
|
||||
<p>Sie können diesen Inhalt jetzt überschreiben.</p>
|
||||
');
|
||||
}
|
||||
else
|
||||
{
|
||||
fwrite($pagemanager_fp, '<h' . $pagemanager_state['level'] . '>' . $pagemanager_state['title'] . '</h'.$pagemanager_state['level'] . '><p>...</p>' . "\n");
|
||||
}
|
||||
}
|
||||
|
||||
if ($pagemanager_state['id'] == '')
|
||||
{
|
||||
$pd = $pd_router->new_page(array());
|
||||
}
|
||||
else
|
||||
{
|
||||
$pd = $pd_router->find_page($pagemanager_state['id']);
|
||||
}
|
||||
$pd['url'] = uenc($pagemanager_state['title']);
|
||||
$pd[$plugin_cf['pagemanager']['pagedata_attribute']] = $pagemanager_state['pdattr'];
|
||||
$pagemanager_pd[] = $pd;
|
||||
}
|
||||
|
||||
|
||||
// Saves content.htm manually and pagedata.php via $pd_router->model->refresh()
|
||||
|
||||
function pagemanager_save($xml)
|
||||
{
|
||||
csrfProtection();
|
||||
global $pth, $tx, $pd_router, $pagemanager_state, $pagemanager_fp, $pagemanager_pd;
|
||||
$pagemanager_pd = array();
|
||||
$parser = xml_parser_create('UTF-8');
|
||||
xml_set_element_handler($parser, 'pagemanager_start_element_handler','pagemanager_end_element_handler');
|
||||
xml_set_character_data_handler($parser, 'pagemanager_cdata_handler');
|
||||
$pagemanager_state['level'] = 0;
|
||||
$pagemanager_state['num'] = -1;
|
||||
if ($pagemanager_fp = fopen($pth['file']['content'], 'w'))
|
||||
{
|
||||
fputs($pagemanager_fp, '<?php // utf8-marker = äöü
|
||||
if(!defined(\'CMSIMPLE_VERSION\') || preg_match(\'/content.php/i\', $_SERVER[\'SCRIPT_NAME\']))
|
||||
{
|
||||
die(\'No direct access\');
|
||||
}
|
||||
?>
|
||||
');
|
||||
xml_parse($parser, $xml, TRUE);
|
||||
fclose($pagemanager_fp);
|
||||
$pd_router->model->refresh($pagemanager_pd);
|
||||
}
|
||||
else
|
||||
{
|
||||
e('cntwriteto', 'content', $pth['file']['content']);
|
||||
}
|
||||
rfc(); // is neccessary, if relocation fails!
|
||||
}
|
||||
|
||||
|
||||
// Plugin administration
|
||||
|
||||
if (isset($pagemanager))
|
||||
{
|
||||
// check requirements (RELEASE-TODO)
|
||||
define('PAGEMANAGER_PHP_VERSION', '4.3.0');
|
||||
|
||||
|
||||
|
||||
if (version_compare(PHP_VERSION, PAGEMANAGER_PHP_VERSION) < 0)
|
||||
{
|
||||
$e.= '<li>'.sprintf($tx['pagemanager']['error_phpversion'], PAGEMANAGER_PHP_VERSION).'</li>'."\n";
|
||||
}
|
||||
|
||||
foreach (array('pcre', 'xml') as $ext)
|
||||
{
|
||||
if (!extension_loaded($ext))
|
||||
{
|
||||
$e.= '<li>'.sprintf($tx['pagemanager']['error_extension'], $ext).'</li>'."\n";
|
||||
}
|
||||
}
|
||||
|
||||
if (!file_exists($pth['folder']['plugins'].'jquery/jquery.inc.php'))
|
||||
{
|
||||
$e.= '<li>'.$tx['pagemanager']['error_jquery'].'</li>'."\n";
|
||||
}
|
||||
|
||||
if (strtolower($tx['meta']['codepage']) != 'utf-8')
|
||||
{
|
||||
$e.= '<li>'.$tx['pagemanager']['error_encoding'].'</li>'."\n";
|
||||
}
|
||||
|
||||
initvar('admin');
|
||||
initvar('action');
|
||||
|
||||
if (!isset($pmplugininfo))
|
||||
{
|
||||
$o.='<p><a href="./?pagemanager&pmplugininfo"><b>Plugin Info »</b></a></p>';
|
||||
}
|
||||
|
||||
if ($action == 'plugin_save')
|
||||
{
|
||||
csrfProtection();
|
||||
pagemanager_save(stsl($_POST['xml']));
|
||||
}
|
||||
|
||||
if (isset($pmplugininfo))
|
||||
{
|
||||
$o.= pagemanager_version();
|
||||
}
|
||||
else
|
||||
{
|
||||
$o.= '<p style="font-size: 14px;"><img src="' . $pth['folder']['base'] . 'plugins/pagemanager/images/showpage.gif" style="float: left; margin: 3px 8px 0 0;" alt="">» ';
|
||||
if($plugin_cf['pagemanager']['pagedata_attribute'] == 'linked_to_menu')
|
||||
{
|
||||
$o.= $tx['pagemanager']['show_in_menu'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$o.= $tx['pagemanager']['publish_page'];
|
||||
}
|
||||
$o.= '</p>';
|
||||
// $o.= '<p>' . $tx['pagemanager']['text_doubleclick'] . '</p>';
|
||||
$o.= pagemanager_edit();
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
168
cms/plugins/pagemanager/changelog.txt
Normal file
@ -0,0 +1,168 @@
|
||||
Version 1pl5 - released 2012-02-22
|
||||
cmb changed save routine to skip writing of head()
|
||||
|
||||
Version 1pl4 - released 2012-02-06
|
||||
cmb added check for offending extensions using their own jQuery library
|
||||
|
||||
Version 1pl3 - released 2012-01-24
|
||||
cmb improved handling of relocation after saving
|
||||
cmb added Polish translation (contributed by learnandcode)
|
||||
cmb updated manual accordingly
|
||||
|
||||
Version 1pl2 - released 2012-01-21
|
||||
cmb added plugin icon
|
||||
cmb extended copyright to 2012
|
||||
cmb fixed minor bug: save button in toolbar was not hidden, if irregular sitestructure was found
|
||||
cmb inhibited renaming of page, if its heading is only partially formatted
|
||||
cmb fixed minor bug in jstree: D&D inside a node didn't work
|
||||
cmb made some minor cosmetic changes
|
||||
cmb added Russian translation (contributed by Termin)
|
||||
cmb updated manual accordingly
|
||||
|
||||
Version 1pl1 - released 2011-12-16
|
||||
cmb removed beta warning in manual
|
||||
cmb cosmetic changes in manual
|
||||
cmb added defaultconfig.php for CMSimple_XH 1.5
|
||||
|
||||
Version 1 - released 2011-11-16
|
||||
cmb added french language file (provided by Bob)
|
||||
|
||||
Version 1rc4 - released 2011-10-23
|
||||
cmb made plugin administration available, even if another external pagemanager is configured
|
||||
cmb changed YES/NO in configuration to true/false
|
||||
cmb changed languages files accordingly
|
||||
|
||||
Version 1rc3 - internally released 2011-10-14
|
||||
cmb minimal cosmetic changes
|
||||
cmb updated czech language file (provided by oldnema)
|
||||
cmb updated danish language file
|
||||
cmb added: resign if external pagemanager is configured in CMSimple_XH 1.5
|
||||
|
||||
Version 1rc2 - released 2011-09-30
|
||||
cmb minimal cosmetic changes
|
||||
cmb added hook for new edit menu of CMSimple_XH 1.5
|
||||
cmb updated jsTree to pre1.0fix1
|
||||
|
||||
Version 1rc1 - released 2011-09-23
|
||||
cmb minimal cosmetic changes and optimisations
|
||||
cmb actually included danish translation
|
||||
cmb updated language files
|
||||
|
||||
Version 1beta6 - released 2011-08-12
|
||||
cmb fixed bug regarding page titles starting with a digit (reported by Ulrich)
|
||||
|
||||
Version 1beta5 - released 2011-08-11
|
||||
cmb added danish translation (provided by maeg)
|
||||
cmb fixed bug with formatted headings (reported by bd0 and Gert)
|
||||
|
||||
Version 1beta4 - released 2011-08-10
|
||||
cmb fixed bug with html special chars in page titles (reported by Gert)
|
||||
cmb added czech translation (provided by oldnema)
|
||||
|
||||
Version 1beta3 - released 2011-08-05
|
||||
cmb added slovak translation (provided by Tata)
|
||||
cmb added further security check
|
||||
|
||||
Version 1beta2 - released 2011-07-29
|
||||
cmb added old unload behaviour for Opera (inspired by Martin)
|
||||
|
||||
Version 1beta1 - released 2011-07-27
|
||||
cmb constrained with of treeview for better usability with table based layouts (solution provided by Gert)
|
||||
cmb changed unload-event to confirm leaving the page
|
||||
cmb extended requirements check
|
||||
|
||||
Version 0.9.2 - released 2011-07-19
|
||||
cmb removed superfluous clear:both from #pagemanager style (reported by bca)
|
||||
cmb changed default layout of vertical toolbar (solution provided by Tata)
|
||||
cmb changed treeview to fixed height with scrollbars (solution provided by Gert)
|
||||
cmb compressed jsTree (solution provided by Gert)
|
||||
cmb added screenshot of drag&drop operations to documentation (inspired by Tata)
|
||||
|
||||
Version 0.9.1 - released 2011-07-17
|
||||
cmb fixed bug with save icon display in FF5 (reported by Tata)
|
||||
cmb added option toolbar_vertical for power users (suggested by Tata)
|
||||
|
||||
Version 0.9 - released 2011-07-16
|
||||
cmb changed opening postion of context menu to pointer (inspired by Ulrich)
|
||||
cmb removed themeing support from base package to additional theme downloads
|
||||
cmb changed default theme to cmsimple
|
||||
cmb fixed bug: opening dialogs scrolls to top of page (reported by Ulrich)
|
||||
cmb integrated save button to toolbar (suggested by Tata)
|
||||
cmb added possibility to activate floating toolbar to stylesheet.css (inspired by Tata)
|
||||
cmb added save confirmation to unload-event (suggested by Gert)
|
||||
cmb updated documentation
|
||||
|
||||
Version 0.8 - released 2011-07-15
|
||||
cmb tree opens fully collapsed again (solution provided by Gert)
|
||||
cmb adjusted display of toolbar (solution provided by Gert)
|
||||
cmb changed pagedata_attribute to linked_to_menu by default (suggested by Gert)
|
||||
cmb removed index.php (inspired by bjorn)
|
||||
cmb added option toolbar_show (suggested by Gert)
|
||||
cmb removed possibility to detach toolbar (inspired by Gert and Ulrich)
|
||||
cmb added warning about no selection if using a tool that requires one (inspired by Gert and Ulrich)
|
||||
cmb changed icons to gif-format (suggested by Gert)
|
||||
cmb prohibited: deleting the last toplevel page
|
||||
cmb updated documentation
|
||||
|
||||
Version 0.7 - released 2011-07-13
|
||||
cmb added footer to make context menu fully visible (inspired by Martin)
|
||||
cmb removed deprecated call-by-ref from caller (reported by Martin)
|
||||
cmb go to page admin after save (suggested by Gert)
|
||||
cmb display new pages differently (suggested by Gert)
|
||||
cmb addded handling of duplicates (suggested by Gert)
|
||||
cmb added (detachable) toolbar as alternative to right-click contextmenu (inspired by Martin)
|
||||
cmb added toolbuttons to expand and collapse the treeview
|
||||
cmb change short help to be a tooltip (suggested by Gert)
|
||||
cmb added checkboxes to manipulate pagedata (published/linked_to_menu) (inspired by bca)
|
||||
cmb tree opens fully expanded
|
||||
cmb toggle node is now triggered on double click
|
||||
cmb cleaned up code
|
||||
cmb updated documentation
|
||||
|
||||
Version 0.6 - released 2011-07-10
|
||||
cmb removed background for all themes
|
||||
cmb fixed "paste after" operation
|
||||
cmb feedback on illegal create and paste operations (suggested by Ulrich)
|
||||
cmb escape offending characters in strings in $cf and $tx used in JS (reported by Ulrich)
|
||||
cmb fixed bug with duplicate titles (reported by Gert)
|
||||
cmb added icons to context menu
|
||||
cmb updated manual
|
||||
|
||||
Version 0.5 - released 2011-07-07
|
||||
cmb clicking a page title opens/closes the branch (inspired by Gert)
|
||||
cmb cleaned up code of init.js and renamed to pagemanager.js
|
||||
cmb changed to new stylesheet provided by Gert
|
||||
cmb creating pages respects menu_levels (reported by Gert)
|
||||
cmb changed to single selection only
|
||||
cmb removing of pages requires confirmation (suggested by Gert and Holger)
|
||||
cmb renamed 'remove' to 'delete'
|
||||
cmb confirmations can be suppressed via config option (suggested by Ulrich)
|
||||
cmb rearranged the context menu (suggested by Gert)
|
||||
cmb updated documentation
|
||||
|
||||
Version 0.4.3 - released 2011-07-06
|
||||
cmb fixed severe bug which totally mixed up content of sites with more then 10 pages (reported by Ulrich and Gert)
|
||||
|
||||
Version 0.4.2 - released 2011-07-06
|
||||
cmb changed $plugin_tx['pagemanager']['help'] (reported by Ulrich)
|
||||
|
||||
Version 0.4.1 - released 2011-07-06
|
||||
cmb removed debug code which failed under certain browsers (reported by Gert)
|
||||
|
||||
Version 0.4 - released 2011-07-05
|
||||
cmb added support for creating new toplevel pages and pasting to the toplevel
|
||||
cmb short usage instruction added on top of the page
|
||||
cmb put jsTree initialization code to init.js as template
|
||||
cmb rearranging the page structure now respects $cf[menu_levels] (suggested by snafu)
|
||||
cmb warn about irregularities in page structure
|
||||
cmb clean up page structure on save
|
||||
cmb changed default theme to classic (suggested by snafu)
|
||||
cmb updated documentation
|
||||
cmb cosmetic changes
|
||||
|
||||
Version 0.3 - released 2011-06-26
|
||||
cmb updated to be used with jQuery4CMSimple
|
||||
cmb cosmetic changes to code and documentation
|
||||
|
||||
Version 0.1 - released 2011-06-24
|
||||
cmb initial release
|
229
cms/plugins/pagemanager/help/help.htm
Normal file
@ -0,0 +1,229 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<!-- utf8-marker: äöü -->
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
||||
<meta name="content-language" content="de">
|
||||
<title>Pagemanager_XH - Manual</title>
|
||||
<link rel="stylesheet" type="text/css" href="./stylesheet.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<h1>Pagemanager_XH - a CMSimple_XH Plugin</h1>
|
||||
<img src="../pagemanager.png" style="display:block; float:left">
|
||||
<p>Pagemanager_XH simplifies the administration of pages of a
|
||||
CMSimple_XH installation.
|
||||
This plugin is comparable to the Menumanager plugin with regard to functionality,
|
||||
but by using a treeview it allows for better handling of websites with many pages.
|
||||
With Pagemanager_XH it is also possible to rearrange whole submenus.</p>
|
||||
|
||||
<ul id="nav">
|
||||
<li><a href="#requirements">Requirements</a></li>
|
||||
<li><a href="#installation">Installation</a></li>
|
||||
<li><a href="#settings">Settings</a></li>
|
||||
<li><a href="#usage">Usage</a></li>
|
||||
<li><a href="#limitations">Limitations</a></li>
|
||||
<li><a href="#license">License</a></li>
|
||||
<li><a href="#credits">Credits</a></li>
|
||||
</ul>
|
||||
|
||||
<div id="body">
|
||||
|
||||
<p><strong>Please do read this documentation! Support might not be given otherwise.
|
||||
It's generally a good idea to read the documentation,
|
||||
<em>before</em> you encounter any problems!</strong></p>
|
||||
|
||||
<h2><a name="requirements">Requirements</a></h2>
|
||||
<p>Pagemanager_XH is a plugin for CMSimple_XH.
|
||||
It requires a UTF-8 encoded version,
|
||||
i.e. it's usable from CMSimple_XH 1.2 on. Additionally it requires the
|
||||
jQuery4CMSimple plugin. This will be already installed in all versions of CMSimple_XH since 1.4.1.
|
||||
If you have an older version, it's best to download and install
|
||||
<a href="http://www.cmsimple-xh.com/wiki/doku.php/plugins:jquery4cmsimple">
|
||||
jQuery4CMSimple</a> before proceeding.</p>
|
||||
<div class="toplink"><a href="#">back to top</a></div>
|
||||
|
||||
<h2><a name="installation">Installation</a></h2>
|
||||
<p>The installation is done as with many other CMSimple_XH plugins.
|
||||
See the <a href="http://www.cmsimple-xh.com/wiki/doku.php/manuals:users_manual:plugins:installation">
|
||||
CMSimple_XH wiki</a> for further details.</p>
|
||||
<ol>
|
||||
<li>Backup the data on your server.</li>
|
||||
<li>Unzip the distribution on your computer.</li>
|
||||
<li>Upload the whole directory pagemanager to your server into the CMSimple_XH plugins directory.</li>
|
||||
<li>If neccessary set write permissions to the subdirectories css, config und languages.</li>
|
||||
</ol>
|
||||
<div class="toplink"><a href="#">back to top</a></div>
|
||||
|
||||
<h2><a name="settings">Settings</a></h2>
|
||||
<p>The plugin's configuration is done as with many other
|
||||
CMSimple_XH plugins in the website's back-end.
|
||||
Select Pagemanager from "Plugins".</p>
|
||||
<p>You can change the default settings of Pagemanager_XH in "Plugin Config".
|
||||
Hints for the options will be displayed
|
||||
when hovering over the help icon with your mouse.</p>
|
||||
<p>Localization is done in "Plugin Language".
|
||||
You can translate the character strings to your own language,
|
||||
or customize them according to your needs.</p>
|
||||
<p>The look of Pagemanager_XH can be customized in "Plugin Stylesheet".
|
||||
Particularly you should look for the settings that are commented out.
|
||||
Perhaps you like to try to active these settings.
|
||||
The currently distributed stylesheet is optimized for the
|
||||
standard configuration with three menu levels.</p>
|
||||
<div class="toplink"><a href="#">back to top</a></div>
|
||||
|
||||
<h2><a name="usage">Usage</a></h2>
|
||||
<img class="image-right" src="pagemanager.png" alt="Pagemanager_XH screenshot">
|
||||
<p>This plugin is used exclusively in CMSimple_XH's backend.
|
||||
It is started by "Select Plugin" > "Pagemanager" > "Page administration".
|
||||
Now you see a view of your site's structure,
|
||||
that basically resembles the sitemap.
|
||||
However, it is possible to open and close page branches in this view,
|
||||
so you don't loose overview of even extensive websites.
|
||||
You can open or close those by clicking on the small markers left to the page,
|
||||
or by double clicking their titles.</p>
|
||||
<p>Above the tree view of your website's pages you find Pagemanager_XH's <strong>toolbar</strong>.
|
||||
When hovering over the buttons, popups which describe the tool's function will be shown.
|
||||
The two leftmost buttons allow to expand resp. collapse the tree view of your website.
|
||||
The toolbar is particularly useful,
|
||||
if your browser doesn't allow Pagemanager_XH's context menu to popup.</p>
|
||||
<p>Rearrangement of the structure of your pages is done by <strong>drag & drop</strong>;
|
||||
when dragging according markers are shown, so you can see where
|
||||
the page will be inserted when dropping it.
|
||||
If it is not possible to drag to a certain page,
|
||||
because it would result in e.g. a recursive page structure,
|
||||
or the nesting level would be greater then your configured menu levels,
|
||||
this will be shown by a red cross
|
||||
or you will simply be not allowed to drop there.
|
||||
<em>So carefully watch the markers,</em>
|
||||
until you get a feeling how the drag&drop works.
|
||||
If you hold down the CTRL key while dragging,
|
||||
the result will be a copy instead of a move operation.</p>
|
||||
<table border="1" style="margin: auto">
|
||||
<caption><strong>Examples of drag&drop move operations</strong></caption>
|
||||
<tr><th>during move</th><th>after move</th></tr>
|
||||
<tr><td><img src="move1.png" alt="Move 1"></td><td><img src="result1.png" alt="Result 1"></td></tr>
|
||||
<tr><td><img src="move2.png" alt="Move 2"></td><td><img src="result2.png" alt="Result 2"></td></tr>
|
||||
<tr><td><img src="move3.png" alt="Move 3"></td><td><img src="result3.png" alt="Result 3"></td></tr>
|
||||
<tr><td><img src="move4.png" alt="Move 4"></td><td><img src="result4.png" alt="Result 4"></td></tr>
|
||||
</table>
|
||||
<p>Additional functionality is available in the toolbar
|
||||
or through the <strong>context menu</strong>
|
||||
(click the right mouse button on the page).
|
||||
You can create new pages, rename or delete existing ones,
|
||||
and use the common clipboard functions as an alternative to drag & drop.
|
||||
If a paste operation will result in a recursive page structure,
|
||||
e.g. by copying a page into itself,
|
||||
it will be silently ignored, to not annoy you with a warning message.
|
||||
<em>If you delete the selected page, all it's subpages will be deleted as well.</em></p>
|
||||
<p>The checkboxes to the left of the pages
|
||||
allow you to view and change and their <strong>publishing state</strong>.
|
||||
You can configure if they refer to 'Published?' or 'Show in menu?'.
|
||||
<strong>Duplicate headings</strong> are shown as in the navigation menu.
|
||||
If you hover over them with the mouse pointer,
|
||||
the real page headings will be displayed in a popup.
|
||||
<strong>Newly created pages</strong> will be shown with a different icon,
|
||||
to better distinguish them from old pages.</p>
|
||||
<p>The possiblitly to copy whole substructures might not seam resonable at first sight,
|
||||
but it could be useful, e.g. if you've got a gallery on those pages,
|
||||
because all content <em>and</em> meta data of these pages will be copied too.
|
||||
So it is possible to adjust details afterwards.</p>
|
||||
<p>Note that there is no undo or cancel functionality.
|
||||
If you've totally mixed up your page structure
|
||||
simply refresh your browser's view <em>without</em> saving before.
|
||||
Your old page structure will be presented again.</p>
|
||||
<div class="toplink"><a href="#">back to top</a></div>
|
||||
|
||||
<h2><a name="limitations">Limitations</a></h2>
|
||||
|
||||
<h3>Irregular page structures</h3>
|
||||
<p>It is possible that your existing website has an irregular page structure.
|
||||
E.g. after an <h1> heading follows immediatly an <h3> heading
|
||||
without an <h2> heading in between.</p>
|
||||
<p>You can check the regularity of your page structure
|
||||
with Pagemanager_XH. It will warn you of any irregularities
|
||||
and will let you proceed only, if you explicitly confirm!
|
||||
If you do not proceed, no harm will be done.</p>
|
||||
<p>If you don't understand what this is about:
|
||||
<strong>Consult your webmaster, or get any other support before proceeding
|
||||
with Pagemanager_XH!</strong></p>
|
||||
<p>Irregularities in your page structure might have
|
||||
unintentionally happend while you were editing manually
|
||||
the page structure in the editor (e.g. changing headings, deleting pages).</p>
|
||||
<p><strong>But it is possible that this feature is used by your system
|
||||
for a special purpose.</strong> Perhaps all pages with an <h3> heading are
|
||||
hidden automatically!
|
||||
In this case you can't use Pagemanager_XH, because it reorders
|
||||
your page structure to be regular.
|
||||
If you nonetheless want to use Pagemanager_XH you have to use other
|
||||
means (see the Page Tab above the editor) to hide the appropriate pages.
|
||||
But in any case, if you're not <em>exactly</em> knowing,
|
||||
if your irregular page structure is intentionally so, consult your webmaster.
|
||||
<strong>Support will not be given to repair damage in the case of
|
||||
reorderd structures in the CMSimple forum.</strong></p>
|
||||
<p>If the page structure of your website is irregular,
|
||||
and you want to keep it this way, <em>you can't use Pagemanager_XH</em>.
|
||||
If you've already installed it,
|
||||
it's best to uninstall it, and to use your current way of manipulating your
|
||||
page structure. Or, you can have a look at
|
||||
<a href="http://www.cmsimple-styles.com/cmsimplestyles/?Plugins_%26amp%3B_Tools:Menumanager_Plugin">
|
||||
Menumanager</a>.</p>
|
||||
|
||||
<h3>jQuery</h3>
|
||||
<p>Pagemanager_XH <em>may</em> not work in installations
|
||||
with jQuery dependent plugins/addons/templates that
|
||||
don't use jQuery4CMSimple, but import their own jQuery library.
|
||||
This won't get fixed (as it's not possible to fix it in all cases),
|
||||
because all developers are advised to use only jQuery4CMSimple together
|
||||
with all their jQuery based code for CMSimple_XH.
|
||||
So offending extensions should be updated!</p>
|
||||
|
||||
<div class="toplink"><a href="#">back to top</a></div>
|
||||
|
||||
<h2><a name="license">License</a></h2>
|
||||
<p>Pagemanager_XH is licensed under
|
||||
<a href="http://www.gnu.org/licenses/gpl.html">GPLv3</a>.</p>
|
||||
<p>© 2011-2012 Christoph M. Becker</p>
|
||||
<p>Slovak translation © 2011 Dr. Martin Sereday<br>
|
||||
Czech translation © 2011 Josef Nemec<br>
|
||||
Danish translation © 2011 Jens Maegaard<br>
|
||||
French translation © 2011 Patrick Varlet<br>
|
||||
Russian translation © 2012 Viktor Klim<br>
|
||||
Polish translation © 2012 Kamil Krzes</p>
|
||||
<div class="toplink"><a href="#">back to top</a></div>
|
||||
|
||||
<h2><a name="credits">Credits</a></h2>
|
||||
<p>This plugin includes <a href="http://www.jstree.com/">jsTree</a>.
|
||||
Many thanks to Ivan Bozhanov, the developer of this library.</p>
|
||||
<p>jsTree uses <a href="http://jQuery.com">jQuery</a>.
|
||||
Many thanks to all developers of this great javascript framework.</p>
|
||||
<p>jQuery is made available for CMSimple_XH by
|
||||
<a href="http://www.cmsimple-xh.com/wiki/doku.php/plugins:jquery4cmsimple">
|
||||
jQuery4CMSimple</a>. Many thanks to Holger Irmler, the author of this plugin.</p>
|
||||
<p>The plugin icon is designed by <a href="http://milanioom.deviantart.com/">Milan Jovanović</a>.
|
||||
Many thanks for making this icon freely available.</p>
|
||||
<p>This plugin uses free applications icons from <a href="http://www.aha-soft.com/">Aha-Soft</a>.
|
||||
Many thanks to making these icons freely available.</p>
|
||||
<p>Many thanks to the community at the <a href="http://www.cmsimpleforum.com">CMSimple forum</a>
|
||||
for tips, suggestions and testing.
|
||||
Particularly I want to thank "snafu", who's early feedback encouraged me to
|
||||
go on with Pagemanager_XH.
|
||||
Many thanks to Ulrich, who found a severe bug (and some minor issues)
|
||||
and helped to fix it by providing detailed information on what's happened.
|
||||
And many thanks to Gert for providing the nice stylesheet, some bugfixes and translations
|
||||
and many valuable hints.
|
||||
I also want to thank Martin, whose report about problems with the context menu
|
||||
inspired the addition of the toolbar,
|
||||
and Tata who inspired the "scrolling" toolbar.</p>
|
||||
<p>And last but not least many thanks to all developers of <a href="http://www.cmsimple-xh.com">
|
||||
CMSimple_XH</a> without whom this amazing CMS wouldn't exist.</p>
|
||||
<div class="toplink"><a href="#">back to top</a></div>
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
246
cms/plugins/pagemanager/help/help_de.htm
Normal file
@ -0,0 +1,246 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<!-- utf8-marker: äöü -->
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
||||
<meta name="content-language" content="de">
|
||||
<title>Pagemanager_XH - Handbuch</title>
|
||||
<link rel="stylesheet" type="text/css" href="./stylesheet.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<h1>Pagemanager_XH - ein CMSimple_XH Plugin</h1>
|
||||
<img src="../pagemanager.png" style="display:block; float:left">
|
||||
<p>Pagemanager_XH vereinfacht die Verwaltung von Seiten in einer
|
||||
CMSimple_XH-Installation.
|
||||
Dieses Plugin ist vom Funktionsumfang vergleichbar mit dem Menumanager-Plugin,
|
||||
ist aber durch die Baumdarstellung auch bei umfangreichen Homepages übersichtlicher.
|
||||
Darüber hinaus können beim Pagemanager_XH ganze Menüstrukturen auf einmal verschoben werden.</p>
|
||||
|
||||
<ul id="nav">
|
||||
<li><a href="#requirements">Voraussetzungen</a></li>
|
||||
<li><a href="#installation">Installation</a></li>
|
||||
<li><a href="#settings">Einstellungen</a></li>
|
||||
<li><a href="#usage">Verwendung</a></li>
|
||||
<li><a href="#limitations">Beschränkungen</a></li>
|
||||
<li><a href="#license">Lizenz</a></li>
|
||||
<li><a href="#credits">Danksagung</a></li>
|
||||
</ul>
|
||||
|
||||
<div id="body">
|
||||
|
||||
<p><strong>Bitte lesen Sie diese Dokumentation!
|
||||
Andernfalls wird möglicherweise kein Support gewährt.
|
||||
Es ist grundsätzlich eine gute Idee, die Dokumentation zu lesen,
|
||||
<em>bevor</em> Sie auf Probleme stoßen!</strong></p>
|
||||
|
||||
<h2><a name="requirements">Voraussetzungen</a></h2>
|
||||
<p>Pagemanager_XH ist ein Plugin für CMSimple_XH.
|
||||
Es kann nur unter einer UTF-8 kodierten Version genutzt werden,
|
||||
also ab CMSimple_XH 1.2. Zusätzlich benötigen sie noch das jQuery4CMSimple-Plugin.
|
||||
Dieses wird in allen CMSimple_XH-Versionen ab 1.4.1 bereits vorinstalliert sein.
|
||||
Haben Sie eine ältere Version, ist es am besten
|
||||
<a href="http://www.cmsimple-xh.com/wiki/doku.php/plugins:jquery4cmsimple">
|
||||
jQuery4CMSimple</a> herunter zu laden und zu installieren,
|
||||
bevor Sie fortfahren.</p>
|
||||
<div class="toplink"><a href="#">zum Seitenanfang</a></div>
|
||||
|
||||
<h2><a name="installation">Installation</a></h2>
|
||||
<p>Die Installation erfolgt wie bei vielen anderen CMSimple_XH-Plugins auch.
|
||||
Im <a href="http://www.cmsimple-xh.com/wiki/doku.php/manuals:users_manual:plugins:installation">
|
||||
CMSimple_XH Wiki</a> finden sie ausführliche Hinweise.</p>
|
||||
<ol>
|
||||
<li>Sichern Sie die Daten auf Ihrem Server.</li>
|
||||
<li>Entpacken Sie die ZIP-Datei auf Ihrem Computer.</li>
|
||||
<li>Laden Sie das gesamte Verzeichnis auf Ihren Server in das CMSimple_XH plugins Verzeichnis hoch.</li>
|
||||
<li>Vergeben Sie falls nötig Schreibrechte für die Unterverzeichnisse css, config und languages.</li>
|
||||
</ol>
|
||||
<div class="toplink"><a href="#">zum Seitenanfang</a></div>
|
||||
|
||||
<h2><a name="settings">Einstellungen</a></h2>
|
||||
<p>Die Konfiguration des Plugins erfolgt wie bei vielen anderen CMSimple_XH-Plugins
|
||||
auch im Administrationsbereich der Homepage. Wählen Sie unter Plugins
|
||||
Pagemanager_XH aus.</p>
|
||||
<p>Sie können die Original-Einstellungen von Pagemanager_XH in der Plugin-Konfiguration ändern.
|
||||
Beim Überfahren der Hilfe-Icons mit der Maus werden Hinweise zu den Einstellungen angezeigt.</p>
|
||||
<p>Die Lokalisierung wird unter Plugin-Sprache vorgenommen.
|
||||
Sie können die Zeichenketten in Ihre eigene Sprache übersetzen,
|
||||
oder sie entsprechend Ihren Anforderungen anpassen.</p>
|
||||
<p>Das Aussehen von Pagemanager_XH kann unter Plugin-Stylesheet angepasst werden.
|
||||
Besonders sollten Sie auf die auskommentierten Einstellung achten.
|
||||
Vielleicht versuchen sie einmal, diese zu aktivieren.
|
||||
Das aktuell ausgelieferte Stylesheet wurde für die Standard-Einstellung
|
||||
von drei Menü-Ebenen optimiert.</p>
|
||||
<div class="toplink"><a href="#">zum Seitenanfang</a></div>
|
||||
|
||||
<h2><a name="usage">Verwendung</a></h2>
|
||||
<img class="image-right" src="pagemanager.png" alt="Pagemanager_XH Bildschirmfoto">
|
||||
<p>Dieses Plugin ist ausschließlich für den Administrationsbereich
|
||||
von CMSimple_XH gedacht. Es wird dort über
|
||||
"Plugins wählen" > "Pagemanager" > "Seiten verwalten" aufgerufen.
|
||||
Nun sehen Sie die Struktur Ihrer Homepage in einer Darstellung,
|
||||
die prinzipiell Ihrem Inhaltsverzeichnis entspricht.
|
||||
Allerdings können Sie hier einzelne Seitenzweige öffnen und schließen,
|
||||
um auch bei umfangreichen Homepages nicht die Übersicht zu verlieren.
|
||||
Das Öffnen und Schließen erfolgt über die kleinen Markierungen
|
||||
links von der Seite, oder durch Doppel-Klicken auf den Titel.</p>
|
||||
<p>Oberhalb der Baumansich der Seiten Ihrer Homepage
|
||||
befindet sich Pagemanager_XHs <strong>Werkzeugleiste</strong>.
|
||||
Wenn sie mit der Maus über die Schalter fahren, werden Popups eingeblendet,
|
||||
die die Funktion des Werkzeugs beschreiben.
|
||||
Die ersten beiden Schalter ganz links ermöglichen es, die Baumansicht Ihrer Homepage auf- bzw. einzuklappen.
|
||||
Die Werkzeugleiste ist besonders nützlich, wenn Ihr Browser verhindert, dass sich das Kontext-Menü öffnet.</p>
|
||||
<p>Das Umorganisieren der Seitenstruktur erfolgt per <strong>Drag & Drop</strong>;
|
||||
beim Ziehen einer Seite werden entsprechende Markierungen eingeblendet,
|
||||
damit Sie sehen können, wo die Seite beim Ablegen eingeordnet wird.
|
||||
Sollte es nicht möglich sein auf eine bestimmte Seite zu ziehen,
|
||||
weil das z.B. in einer rekursiven Seitenstruktur resultieren würde,
|
||||
oder die Verschachtelungstiefe größer wäre als Ihre konfigurierten "menu levels",
|
||||
wird das durch ein rotes Kreuz angezeigt,
|
||||
oder es wird einfach nicht möglich sein, die Seite hier abzulegen,
|
||||
<em>Also beachten sie genau die Markierungen</em>,
|
||||
bis Sie ein Gefühl dafür bekommen, wie das Drag&Drop funktioniert.
|
||||
Wenn Sie beim Ziehen einer Seite STRG gedrückt halten,
|
||||
wird die Seite kopiert statt verschoben.</p>
|
||||
<table border="1" style="margin: auto">
|
||||
<caption><strong>Beispiele von Drag & Drop Verschiebe-Operationen</strong></caption>
|
||||
<tr><th>während dessen</th><th>danach</th></tr>
|
||||
<tr><td><img src="move1.png" alt="Verschieben 1"></td><td><img src="result1.png" alt="Ergebnis 1"></td></tr>
|
||||
<tr><td><img src="move2.png" alt="Verschieben 2"></td><td><img src="result2.png" alt="Ergebnis 2"></td></tr>
|
||||
<tr><td><img src="move3.png" alt="Verschieben 3"></td><td><img src="result3.png" alt="Ergebnis 3"></td></tr>
|
||||
<tr><td><img src="move4.png" alt="Verschieben 4"></td><td><img src="result4.png" alt="Ergebnis 4"></td></tr>
|
||||
</table>
|
||||
<p>Weitere Funktionen sind über die Werkzeugleiste
|
||||
und das <strong>Kontextmenü</strong> verfügbar
|
||||
(klicken Sie mit der rechten Maustaste auf eine Seite).
|
||||
Sie können neue Seiten erstellen, bestehende umbenennen und löschen,
|
||||
und es stehen Ihnen die üblichen Zwischenablagefunktionen
|
||||
zur Verfügung, die sie alternativ zu Drag & Drop verwenden können.
|
||||
Sollte eine Einfüge-Operation in einer rekursiven Seitenstruktur resultieren,
|
||||
z.B. wenn Sie eine Seite in sich selbst einfügen,
|
||||
wird sie stillschweigend ignoriert,
|
||||
um Sie nicht mit einer Warnung zu belästigen.
|
||||
<em>Wenn sie die gewählte Seite löschen, werden alle ihre Unterseiten ebenfalls gelöscht.</em></p>
|
||||
<p>Die Checkboxen links von den Seiten erlauben es Ihnen,
|
||||
deren <strong>Veröffentlichungsstatus</strong> anzusehen und zu ändern.
|
||||
Sie können einstellen, ob sie sich auf 'Veröffentlicht?'
|
||||
oder 'In der Navigation anzeigen' beziehen.
|
||||
<strong>Doppelte Überschriften</strong> werden wie im Navigations-Menü angezeigt.
|
||||
Wenn Sie mit der Maus darüber fahren,
|
||||
werden die tatsächlichen Seitentitel in einem Popup eingeblendet.
|
||||
<strong>Neu erstellte Seiten</strong> werden mit einem anderen Icon angezeigt,
|
||||
damit Sie sie besser von bereits bestehenden unterscheiden können.</p>
|
||||
<p>Die Möglichkeit ganze Unterstrukturen zu kopieren mag auf den ersten Blick nicht einleuchtend sein,
|
||||
aber sie könnte nützlich werden, wenn Sie z.B. eine Galerie auf diesen Seiten anzeigen,
|
||||
denn der gesamte Inhalt <em>und</em> die Metadaten werden ebenso mit kopiert.
|
||||
Dann ist es möglich, einzelne Details nachträglich anzupassen.</p>
|
||||
<p>Beachten Sie, dass es keine Rückgängig- oder Abbrechen-Funktion gibt.
|
||||
Sollten sie Ihre Seitenstruktur total durcheinander gebracht haben,
|
||||
aktualisieren sie einfach die Ansicht Ihres Browsers <em>ohne</em> vorher zu speichern.
|
||||
Ihre alte Seitenstruktur wird dann neu angezeigt.</p>
|
||||
<div class="toplink"><a href="#">zum Seitenanfang</a></div>
|
||||
|
||||
<h2><a name="limitations">Beschränkungen</a></h2>
|
||||
|
||||
<h3>Unregelmäßige Seitenstruktur</h3>
|
||||
<p>Es is möglich, dass Ihre bestehende Homepage eine unregelmäßige
|
||||
Seitenstruktur aufweist. Zum Beispiel können nach einem <h1>
|
||||
Titel direkt ein <h3> Titel folgen, ohne einen <h2> Titel dazwischen.</p>
|
||||
<p>Sie können Ihre Seitenstruktur auf Unregelmäßigkeiten mit Pagemanager_XH
|
||||
prüfen. Im Falle von Unregelmäßigkeiten werden sie informiert,
|
||||
und Sie können nur fortfahren, wenn sie ausdrücklich zustimmen.
|
||||
Wenn Sie nicht fortfahren, wird kein Schaden entstehen.</p>
|
||||
<p>Wenn Sie nicht verstehen, worum es hier geht:
|
||||
<strong>Befragen Sie Ihren Webmaster, oder holen Sie anderen Rat ein,
|
||||
bevor sie mit Pagemanager_XH fortfahren.</strong></p>
|
||||
<p>Unregelmäßigkeiten in der Seitenstruktur könnten sich versehentlich
|
||||
eingeschlichen haben, während Sie die Seitenstruktur manuell im Editor
|
||||
verändert haben (z.B. durch Änderung von Titel-Formatierungen,
|
||||
oder Löschen von Seiten).</p>
|
||||
<p><strong>Aber es ist denkbar, dass diese Möglichkeit von Ihrem System
|
||||
zu einem speziellen Zweck verwendet wird.</strong>
|
||||
Möglicherweise werden alle Seiten mit einem <h3> Titel
|
||||
automatisch versteckt!
|
||||
In diesem Fall können Sie Pagemanager_XH nicht verwenden,
|
||||
da es Ihre Seitenstruktur reorganisiert, um Unregelmäßigkeiten zu beheben.
|
||||
Sollten Sie dennoch Pagemanager_XH verwenden wollen,
|
||||
müssen Sie diese Seiten auf eine andere Weise verstecken
|
||||
(schauen sie in den Seite-Tab über dem Editor).
|
||||
Aber falls sie nicht <em>genau</em> wissen, ob Ihre
|
||||
unregelmäßige Seitenstruktur absichtlich so ist,
|
||||
befragen Sie Ihren Webmaster.
|
||||
<strong>Hilfestellung um Schaden zu beheben, der durch
|
||||
Umordnung der Seitenstruktur entstanden ist, wird im CMSimple Forum
|
||||
nicht gewährt werden!</strong></p>
|
||||
<p>Hat Ihre Homepage eine unregelmäßige Seitenstruktur,
|
||||
und Sie wollen es dabei belassen,
|
||||
<em>können Sie Pagemanager_XH nicht verwenden.</em>
|
||||
Sollten Sie es bereits installiert haben,
|
||||
deinstallieren Sie es am besten gleich wieder,
|
||||
und bearbeiten Sie die Struktur Ihrer Homepage wie bisher.
|
||||
Oder Sie sehen einmal nach
|
||||
<a href="http://www.cmsimple-styles.com/cmsimplestyles/?Plugins_%26amp%3B_Tools:Menumanager_Plugin">
|
||||
Menumanager</a>.</p>
|
||||
|
||||
<h3>jQuery</h3>
|
||||
<p>Pagemanager_XH <em>könnte</em> in Installationen
|
||||
mit jQuery abhängigen Plugins/Addons/Vorlagen,
|
||||
die jQuery4CMSimple nicht verwenden,
|
||||
sondern ihre eigene jQuery Bibliothek importieren, nicht funktionieren.
|
||||
Dieses Problem wird nicht behoben werden
|
||||
(es ist ohnehin nicht möglich, es für alle Fälle zu beheben),
|
||||
weil allen Entwicklern geraten wird, ausschließlich jQuery4CMSimple
|
||||
in Verbindung mit ihrem jQuery basierten Code für CMSimple_XH zu verwenden.
|
||||
Daher sollten diejenigen Erweiterungen aktualisiert werden,
|
||||
die sich nicht daran halten!</p>
|
||||
<div class="toplink"><a href="#">zum Seitenanfang</a></div>
|
||||
|
||||
<h2><a name="license">Lizenz</a></h2>
|
||||
<p>Pagemanager_XH kann unter Einhaltung der
|
||||
<a href="http://www.gnu.org/licenses/gpl.html">GPLv3</a> verwendet werden.</p>
|
||||
<p>© 2011-2012Christoph M. Becker</p>
|
||||
<p>Slowakische Übersetzung © 2011 Dr. Martin Sereday<br>
|
||||
Tschechische Übersetzng © 2011 Josef Nemec<br>
|
||||
Dänische Übersetzung © 2011 Jens Maegaard<br>
|
||||
Französische Übersetzung © 2011 Patrick Varlet<br>
|
||||
Russische Übersetzung © 2012 Viktor Klim<br>
|
||||
Polnische Übersetzung © 2012 Kamil Krzes</p>
|
||||
<div class="toplink"><a href="#">zum Seitenanfang</a></div>
|
||||
|
||||
<h2><a name="credits">Danksagungen</a></h2>
|
||||
<p>Dieses Plugin beinhaltet <a href="http://www.jstree.com/">jsTree</a>.
|
||||
Vielen Dank an Ivan Bozhanov, den Entwickler dieser Bibliothek.</p>
|
||||
<p>jsTree verwendet <a href="http://jQuery.com">jQuery</a>.
|
||||
Vielen Dank allen Entwicklern dieses großartigen Javascript Frameworks.</p>
|
||||
<p>jQuery wird CMSimple_XH durch
|
||||
<a href="http://www.cmsimple-xh.com/wiki/doku.php/plugins:jquery4cmsimple">
|
||||
jQuery4CMSimple</a> zur Verfügung gestellt.
|
||||
Vielen Dank an Holger Irmler, den Entwickler dieses Plugins.</p>
|
||||
<p>Das Plugin-Icon wurde von <a href="http://milanioom.deviantart.com/">Milan Jovanović</a> entworfen.
|
||||
Vielen Dank für die frei Verwendbarkeit dieses Icons.</p>
|
||||
<p>Dieses Plugin verwendet "free application icons" von <a href="http://www.aha-soft.com/">Aha-Soft</a>.
|
||||
Vielen Dank für die freie Verwendbarkeit dieser Icons.</p>
|
||||
<p>Vielen Dank an die Gemeinschaft im <a href="http://www.cmsimpleforum.com">CMSimple-Forum</a>
|
||||
für Tipps, Anregungen und das Testen.
|
||||
Besonders möchte ich "snafu" danken, dessen frühe Rückmeldungen mich ermutigt haben,
|
||||
Pagemanager_XH weiter zu entwickeln.
|
||||
Vielen Dank an Ulrich der einen schweren Fehler (und mehrere kleinere Probleme) fand,
|
||||
und der bei der Behebung desselben half,
|
||||
indem er eine detailierte Beschreibung gab, was geschehen war.
|
||||
Und vielen Dank an Gert, der das nette Stylesheet, einige Fehlerkorrekturen und Übersetzungen
|
||||
und viele wertvolle Tipps zur Verfügung gestellt hat.
|
||||
Und ich möchte ebenfalls Martin danken, dessen Bericht über Probleme mit dem Kontextmenü
|
||||
das Hinzufügen der Werkzeugleiste inspiriert hat,
|
||||
sowie Tata, der die "scrollende" Toolbar inspiriert hat.</p>
|
||||
<p>Und natürlich vielen Dank allen Entwicklern von <a href="http://www.cmsimple-xh.de">CMSimple_XH</a>,
|
||||
ohne die dieses fantastische CMS nicht existieren würde.</p>
|
||||
<div class="toplink"><a href="#">zum Seitenanfang</a></div>
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
194
cms/plugins/pagemanager/help/help_sk.htm
Normal file
@ -0,0 +1,194 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<!-- utf8-marker: äöü -->
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8">
|
||||
<meta name="content-language" content="de">
|
||||
<title>Pagemanager_XH - Návod</title>
|
||||
<link rel="stylesheet" type="text/css" href="./stylesheet.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<h1>Pagemanager_XH - CMSimple_XH Plugin</h1>
|
||||
<img src="../pagemanager.png" style="display:block; float:left">
|
||||
<p>Pagemanager_XH zjednodušuje spravovanie stránok v inštalácii CMSimple_XH.
|
||||
Tento plugin je svojou funkčnosťou porovnateľný s pluginom Menumanager,
|
||||
ale vďaka stromovej štruktúre je aj pri rozsiahlejších stránkach prehľadnejší.
|
||||
Pomocou pluginu Pagemanager_XH tak môžete presúvať naraz celé časti štruktúry.</p>
|
||||
|
||||
<ul id="nav">
|
||||
<li><a href="#requirements">Požiadavky</a></li>
|
||||
<li><a href="#installation">Inštalácia</a></li>
|
||||
<li><a href="#settings">Nastavenia</a></li>
|
||||
<li><a href="#usage">Použitie</a></li>
|
||||
<li><a href="#limitations">Obmedzenia</a></li>
|
||||
<li><a href="#license">Licencia</a></li>
|
||||
<li><a href="#credits">Poďakovanie</a></li>
|
||||
</ul>
|
||||
|
||||
<div id="body">
|
||||
|
||||
<p><strong>Prosím, prečítajte si tieto návody!
|
||||
V opačnom prípade možno nezískate žiadnu podporu.
|
||||
Je vždy osožné prečítať si dokumentáciu <em>prv</em>, než vyrobíte nejaký problém!</strong></p>
|
||||
|
||||
<h2><a name="requirements">Požiadavky</a></h2>
|
||||
<p>Pagemanager_XH je plugin určený pre CMSimple_XH.
|
||||
Možno ho používať iba s verziami s kódovaním UTF-8,
|
||||
teda od CMSimple_XH 1.2. Navyše potrebujete mať nainštalovaný aj plugin jQuery4CMSimple.
|
||||
Tento bude súčasťou všetkých ďalších verzií počnúc CMSimple_XH-Versiou 1.4.1.
|
||||
Ak používate niektorú staršiu verziu, je najlepšie
|
||||
<a href="http://www.cmsimple-xh.com/wiki/doku.php/plugins:jquery4cmsimple">
|
||||
jQuery4CMSimple stiahnuť</a> a nainštalovať, kým budete pokračovať.</p>
|
||||
<div class="toplink"><a href="#">HORE</a></div>
|
||||
|
||||
<h2><a name="installation">Inštalácia</a></h2>
|
||||
<p>Inštalácia prebieha rovnako ako pri iných pluginoch CMSimple_XH:</p>
|
||||
<ol>
|
||||
<li>Urobte si zálohy Vašich súborov zo servera.</li>
|
||||
<li>Rozbaľte ZIP-súbor vo Vašom počítači.</li>
|
||||
<li>Celý rozbalený adresár uploadujte na Váš server do adresára s Vašimi pluginmi.</li>
|
||||
<li>Ak je potrebné, nastavte potrebné prístupové práva pre podadresáre css, config a languages.</li>
|
||||
</ol>
|
||||
<div class="toplink"><a href="#">HORE</a></div>
|
||||
|
||||
<h2><a name="settings">Nastavenia</a></h2>
|
||||
<p>Konfigurácia pluginu sa robí rovnako ako pri iných pluginoch CMSimple_XH
|
||||
v správcovskom prostredí stránky. Zo zoznamu pluginov vyberte Pagemanager_XH.</p>
|
||||
<p>Originálne nastavenia Pagemanager_XH môžete zmeniť v konfigurácii pluginu.
|
||||
Pri položkách je umietnená ikona-Pomoc, pod ktorou nájdete vysvetlivky pre jednotlivé položky.</p>
|
||||
<p>Lokalizácia sa robí v jazykovom nastavení.
|
||||
Vysvetlivky si teda môžete prispôsobit vo Vašom jazyku.</p>
|
||||
<p>Vzhľad Pagemanager_XH môžete zmeniť úpravou štýlu.
|
||||
Všimnite si hlavne nastavenia, ktoré sú v štýly vyradené komentármi.
|
||||
Najprv ich skúste aktivovať.
|
||||
Aktuálny Stylesheet je optimalizovaný pre stránku s 3 úrovňami menu.</p>
|
||||
<div class="toplink"><a href="#">HORE</a></div>
|
||||
|
||||
<h2><a name="usage">Použitie</a></h2>
|
||||
<img class="image-right" src="pagemanager.png" alt="Pagemanager_XH Bildschirmfoto">
|
||||
<p>Tento plugin je určený pre použitie výlučne v správcovskom prostredí CMSimple_XH. Aktivuje sa cez
|
||||
"Pluginy zvoliť" > "Pagemanager" > "Spravovať stránky".
|
||||
Zobrazí sa Vám štruktúra Vašej stránky, ktorá v princípe zodpovedá obsahu stránky.
|
||||
Niektorá názvy stránok sa dajú ďalej otvárať/zatvárať, aby ste pri rozsiahlejších stránkych nestratili prehľad.
|
||||
Otorenie/zatvorenie sa robí pomocou malej z načky vľavo od názvu alebo dvojitým kliknutím na jej názov.</p>
|
||||
<p>Nad stromovou štruktúrou Vašej stránky sa nachádza <strong>nástrojová lišta </strong>Pagemanager_XH.
|
||||
Ku každému nástroju existuje skrytý popis, ktorý sa objaví pri prechode myškou.
|
||||
Prvé dva nástroje umožňujú zobrazenie/skrytie stromovej štruktúry.
|
||||
Nástrojová lišta je užitočná hlavne vtedy, ak Váš prehliadač nepodporuje otváranie kontextových menu.</p>
|
||||
<p>Zmenu usporadania Vašej stránky urobíte pomocou <strong>Drag & Drop</strong>;
|
||||
presúvaním stránky alebo sekcie stránky sa zobrazia potrebné značky,
|
||||
aby ste videli, aké bude usporiadanie, ak presun ukončíte.
|
||||
Ak sa z nejakého dôvodu nedá stránka presunúť na požadované miesto,
|
||||
napr. že by tým vznikla nesprávna štruktúra,
|
||||
alebo by vznikla úroveň, ktorá nie je na stránke predvolená,
|
||||
bude takáto zmena označená červeným krížikom,
|
||||
alebo sa jednoducho nevykoná a stránka/sekcia sa na zvolené miesto nepresunie,
|
||||
<em>Preto pozorujte pozorne značky</em>,
|
||||
až pokiaľ sa neuistíte, že, wie das Drag&Drop funguje podľa Vašich potrieb.
|
||||
Ak pri presune stránok podržíte aj klávesu Ctrl, stránka sa na zvolené miesto skopíruje.</p>
|
||||
<table border="1" style="margin: auto">
|
||||
<caption><strong>Príklady Drag & Drop úkonov</strong></caption>
|
||||
<tr><th>Predtým</th><th>Potom</th></tr>
|
||||
<tr><td><img src="move1.png" alt="Verschieben 1"></td><td><img src="result1.png" alt="Ergebnis 1"></td></tr>
|
||||
<tr><td><img src="move2.png" alt="Verschieben 2"></td><td><img src="result2.png" alt="Ergebnis 2"></td></tr>
|
||||
<tr><td><img src="move3.png" alt="Verschieben 3"></td><td><img src="result3.png" alt="Ergebnis 3"></td></tr>
|
||||
<tr><td><img src="move4.png" alt="Verschieben 4"></td><td><img src="result4.png" alt="Ergebnis 4"></td></tr>
|
||||
</table>
|
||||
<p>Ďalšie funkcie na nástrojovej lište a v <strong>kontextovom menü</strong> (kliknite pravou na niektorú stránku).
|
||||
Môžete: vytvoriť nové stránky, premenovať alebo vymazať existujúce stránky,
|
||||
k dispozícii sú aj možnosti dočasného uloženia (kopírovať, vystrihnúť, vložiť), ktoré môžete využiť ako alternatívu pre Drag & Drop.
|
||||
Ak by ste sa snažili vytvoriť nesprávnu štruktúru stránky, napr. by ste chceli vložiť stránku smu do seba,
|
||||
bude tento pokus bez výstrahy ignorovaný, aby ste neboli zaťažovaný zbytočným varovaním.
|
||||
<em>Vymazaním stránky vyššej úrovne vymažete aj všetky jej podstránky.</em></p>
|
||||
<p>Checkboxy vľavo odo názvov umožňujú nastavenie statusu <strong>zverejnenia</strong>.
|
||||
Môžete nastaviť, či sa nimi bude zapisovať 'Zverejniť?'.
|
||||
<strong>Duplicitné názvy</strong> sa zobrazia roivnako ako v menu.
|
||||
Ak cez ne prejdete myškou,
|
||||
zobrazí sa aktuálny názov takejto stránky.
|
||||
<strong>Vytvorenie novej stránky</strong> bude označené novou ikonou,aby ste ju lepšie rozoznali medzi existujúcimi stránkami.</p>
|
||||
<p>Možnosť kopírovať celé subštruktúry sa môže zdať na prvý pohľad nezrozumiteľná,
|
||||
ale môže byť veľmi užitočná, ak chcete v rámci štruktúry premiestniť napr. celú galériu,
|
||||
lebo takto sa presunie celý jej obsah vrátane všetkých META údajov. Prípadné detaily sa potom dajú upraviť aj dodatočne.</p>
|
||||
<p>Majte na pamäti, že v tomto plugine neexistujú žiadne kroky späť ani prerušenia vykonávaných funkcií.
|
||||
Ak by sa poškodila štruktúra stránky, aktualizujte ju obnovením stránky v prehliadači EŠTE PRED ULOŽENÍM ZMIEN. Po uložení už takéto obnovenie nie je možné.
|
||||
Obnovením stránky sa však vrátite na začiatok vykonávaných zmien.</p>
|
||||
<div class="toplink"><a href="#">HORE</a></div>
|
||||
|
||||
<h2><a name="limitations">Obmedzenia</a></h2>
|
||||
|
||||
<h3>Nepravidelná štruktúra stránky</h3>
|
||||
<p>Je možné, že Vaša stránka má nepravidelnú štruktúru. Napr.: po nadpise <h1> nasleduje priamo nadpis <h3> .</p>
|
||||
<p>Aj takúto stránku môžete upravovať pomocou Pagemanager_XH. O nepravidelnostiach budete informovaný a v práci môžete pokračovať iba po potvrdení, že viete, čo robíte.
|
||||
AK sa rozhodnete nepokračovať, nič sa nepoškodí.</p>
|
||||
<p>Ak nerozumiete, o čo tu ide:
|
||||
<strong>Poraďte sa so správcom stránky alebo sa poraďte inde, kým začnete používať Pagemanager_XH.</strong></p>
|
||||
<p>Nepravidelnosti v štruktúre sa môžu vyskytnúť aj náhodne, najmä ak ste editovali obsah stránky v textovom editore (napr. pri úpravách formátu nadpisov, pri vymazávaní stránok a pod.).</p>
|
||||
<p><strong>Je však tiež možné, že takáto štruktúra je zvolená za istým účelom.</strong>
|
||||
Možno majú všetky stránky na úrovni <h3> nejakú špeciálnu vlastnosť (napr. majú byť ukryté)!
|
||||
V takom prípade nemôžete používať Pagemanager_XH, lebo tento Vašu štruktúru zreorganizuje a nepravidelnosti odstráni.
|
||||
Ak chcete Pagemanager_XH napriek tomu používať,
|
||||
musíte takéto stránky (napr.) ukryť iným spôsobom
|
||||
(pozrite sa na záložku 'Stránky' pod editorom).
|
||||
Ale ak neviete <em>presne</em>,
|
||||
či takáto nepravidelnosť nie je náhodná a neúmyselná, najprv sa opýtajte správcu stránky.
|
||||
<strong>Pomoc v prípadoch poškodenia stránky z dôvodu použitia Pagemanager_XH na stránke s nepravidelnou štruktúrou nie je zaručená ani na CMSimple Forum!</strong></p>
|
||||
<p>Ak používate na stránke nepravidelnü štruktúru vedome, <em>nepoužívajte Pagemanager_XH.</em>
|
||||
Ak ho už máte nainštalovaný, radšej ho ihneď odinštalujte a pracujte so štruktúrou stránky tak, ako doposiaľ.
|
||||
Alebo si stiahnite plugin <a href="http://www.cmsimple-styles.com/cmsimplestyles/?Plugins_%26amp%3B_Tools:Menumanager_Plugin">
|
||||
Menumanager</a>.</p>
|
||||
|
||||
<h3>jQuery</h3>
|
||||
<p>Pagemanager_XH <em>nemusí</em> v prípade, že sú nainštalované Pluginy/Doplnky/Šablóny využívajüce jQuery4CMSimple pracovať korektne,
|
||||
pokiaľ tieto importujú vlastné knižnice jQuery.
|
||||
Tento problém sa nedá odstrániť (nie je to možné vyriešiť naraz pre všetky prípady),
|
||||
pokiaľ nebudú všetci autori používať výlučne jQuery4CMSimple v spojení s ich kódom postavenom na jQuery pre CMSimple_XH.
|
||||
Preto musia byť všetky takéto kódy aktualizované!</p>
|
||||
<div class="toplink"><a href="#">HORE</a></div>
|
||||
|
||||
<h2><a name="license">Licencia</a></h2>
|
||||
<p>Pagemanager_XH možno používať iba pri dodržaní
|
||||
<a href="http://www.gnu.org/licenses/gpl.html">GPLv3</a>.</p>
|
||||
<p>© 2011-2012 Christoph M. Becker</p>
|
||||
<p>Slovenský preklad © 2011 Dr. Martin Sereday<br>
|
||||
České preklady © 2011 Josef Nemec<br>
|
||||
Dánsky preklad © 2011 Jens Maegaard<br>
|
||||
Francúzsky preklad © 2011 Patrick Varlet<br>
|
||||
Preklad do ruštiny © 2012 Viktor Klim<br>
|
||||
Poľský preklad © 2012 Kamil Krzes</p>
|
||||
<div class="toplink"><a href="#">HORE</a></div>
|
||||
|
||||
<h2><a name="credits">Poďakovanie</a></h2>
|
||||
<p>Tento plugin obsahuje <a href="http://www.jstree.com/">jsTree</a>.
|
||||
Vďaka Ivanovi Bozhanovovi, autorovi tejto knižnice.</p>
|
||||
<p>jsTree používa <a href="http://jQuery.com">jQuery</a>.
|
||||
Vďaka všetkým vývojárom tohto skvelého Javascript Frameworks.</p>
|
||||
<p>jQuery bolo pre CMSimple_XH poskytnuté prostredníctvom
|
||||
<a href="http://www.cmsimple-xh.com/wiki/doku.php/plugins:jquery4cmsimple">
|
||||
jQuery4CMSimple</a>.
|
||||
Vďaka patri Holgerovi Irmlerovi, Autorovi tohto pluginu.</p>
|
||||
<p>The plugin icon is designed by <a href="http://milanioom.deviantart.com/">Milan Jovanović</a>.
|
||||
Many thanks for making this icon freely available.</p>
|
||||
<p>Plugin používa "free application icons" od <a href="http://www.aha-soft.com/">Aha-Soft</a>.
|
||||
Vďaka za bezpaltné poskytnutie ikon.</p>
|
||||
<p>Vďaka aj celej komunite <a href="http://www.cmsimpleforum.com">CMSimple-Forum</a>
|
||||
za návrhy, testovanie, úpravy a podporu.
|
||||
Chcel by som poďakovať hlavne "snafu", ktorého včasné poznámky ma posmelili,
|
||||
aby som sa pluginu Pagemanager_XH ďalej venoval.
|
||||
Ďakujem aj Ulrichovi, ktorý odhalil jednu závažnú chybu (a niekoľko menších problémov) a
|
||||
pomohol pri ich odstránení tým, že poskytol detailné vysvetlenie, o čo vlastne išlo.
|
||||
Aveľká vďaka patrí aj Gertovi, ktorý poskytol príjemný dizajn, vykonal niektoré úpravy a preklady, a dal tiež veľa cenných rád.
|
||||
V každom prípade chcem poďakovať aj Martinovi, ktorého správa o problémoch s kontextovým menu ma inšpirovala k doplneniu nástrojovej lišty.
|
||||
Rovnako ďakujem Tatovi za nápad s posuvnou nástrojovou lištou.</p>
|
||||
<p>A, samozrejme, obrovské poďakovanie všetkým vývojárom <a href="http://www.cmsimple-xh.com">CMSimple_XH</a>,
|
||||
bez ktorých by tento CMS neexistoval.</p>
|
||||
<div class="toplink"><a href="#">HORE</a></div>
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
BIN
cms/plugins/pagemanager/help/move1.png
Normal file
After Width: | Height: | Size: 4.6 KiB |
BIN
cms/plugins/pagemanager/help/move2.png
Normal file
After Width: | Height: | Size: 5.5 KiB |
BIN
cms/plugins/pagemanager/help/move3.png
Normal file
After Width: | Height: | Size: 5.3 KiB |
BIN
cms/plugins/pagemanager/help/move4.png
Normal file
After Width: | Height: | Size: 4.4 KiB |
BIN
cms/plugins/pagemanager/help/pagemanager.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
cms/plugins/pagemanager/help/result1.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
cms/plugins/pagemanager/help/result2.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
cms/plugins/pagemanager/help/result3.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
cms/plugins/pagemanager/help/result4.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
42
cms/plugins/pagemanager/help/stylesheet.css
Normal file
@ -0,0 +1,42 @@
|
||||
body {
|
||||
font-family: Verdana, sans-serif;
|
||||
line-height: 150%;
|
||||
margin-left: 2em;
|
||||
margin-right: 2em;
|
||||
background: #ffffe1;
|
||||
}
|
||||
|
||||
#body {
|
||||
margin-left: 17em;
|
||||
}
|
||||
|
||||
#body p {
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
#nav {
|
||||
clear: both;
|
||||
margin-left: 0;
|
||||
float: left;
|
||||
width: 15em;
|
||||
list-style: none;
|
||||
padding-left: 0;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#nav ul {
|
||||
list-style: none;
|
||||
font-size: small;
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
.image-right {
|
||||
float:right;
|
||||
border: 1px solid black;
|
||||
margin-left: 1em;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.toplink {
|
||||
text-align: right;
|
||||
}
|
BIN
cms/plugins/pagemanager/images/_delete.gif
Normal file
After Width: | Height: | Size: 631 B |
BIN
cms/plugins/pagemanager/images/collapse.gif
Normal file
After Width: | Height: | Size: 1018 B |
BIN
cms/plugins/pagemanager/images/copy.gif
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
cms/plugins/pagemanager/images/create.gif
Normal file
After Width: | Height: | Size: 1019 B |
BIN
cms/plugins/pagemanager/images/create_after.gif
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
cms/plugins/pagemanager/images/cut.gif
Normal file
After Width: | Height: | Size: 539 B |
BIN
cms/plugins/pagemanager/images/delete.gif
Normal file
After Width: | Height: | Size: 581 B |
BIN
cms/plugins/pagemanager/images/expand.gif
Normal file
After Width: | Height: | Size: 632 B |
BIN
cms/plugins/pagemanager/images/help.gif
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
cms/plugins/pagemanager/images/new.gif
Normal file
After Width: | Height: | Size: 1019 B |
BIN
cms/plugins/pagemanager/images/paste.gif
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
cms/plugins/pagemanager/images/paste_after.gif
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
cms/plugins/pagemanager/images/problem.gif
Normal file
After Width: | Height: | Size: 312 B |
BIN
cms/plugins/pagemanager/images/question.gif
Normal file
After Width: | Height: | Size: 530 B |
BIN
cms/plugins/pagemanager/images/rename.gif
Normal file
After Width: | Height: | Size: 992 B |
BIN
cms/plugins/pagemanager/images/save.gif
Normal file
After Width: | Height: | Size: 648 B |
BIN
cms/plugins/pagemanager/images/separator.gif
Normal file
After Width: | Height: | Size: 45 B |
BIN
cms/plugins/pagemanager/images/separator_v.gif
Normal file
After Width: | Height: | Size: 45 B |
BIN
cms/plugins/pagemanager/images/showpage.gif
Normal file
After Width: | Height: | Size: 596 B |
114
cms/plugins/pagemanager/jstree/jquery.cookie.js
Normal file
@ -0,0 +1,114 @@
|
||||
/*!
|
||||
* jQuery Cookie Plugin v1.4.1
|
||||
* https://github.com/carhartl/jquery-cookie
|
||||
*
|
||||
* Copyright 2006, 2014 Klaus Hartl
|
||||
* Released under the MIT license
|
||||
*/
|
||||
(function (factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
// AMD (Register as an anonymous module)
|
||||
define(['jquery'], factory);
|
||||
} else if (typeof exports === 'object') {
|
||||
// Node/CommonJS
|
||||
module.exports = factory(require('jquery'));
|
||||
} else {
|
||||
// Browser globals
|
||||
factory(jQuery);
|
||||
}
|
||||
}(function ($) {
|
||||
|
||||
var pluses = /\+/g;
|
||||
|
||||
function encode(s) {
|
||||
return config.raw ? s : encodeURIComponent(s);
|
||||
}
|
||||
|
||||
function decode(s) {
|
||||
return config.raw ? s : decodeURIComponent(s);
|
||||
}
|
||||
|
||||
function stringifyCookieValue(value) {
|
||||
return encode(config.json ? JSON.stringify(value) : String(value));
|
||||
}
|
||||
|
||||
function parseCookieValue(s) {
|
||||
if (s.indexOf('"') === 0) {
|
||||
// This is a quoted cookie as according to RFC2068, unescape...
|
||||
s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
|
||||
}
|
||||
|
||||
try {
|
||||
// Replace server-side written pluses with spaces.
|
||||
// If we can't decode the cookie, ignore it, it's unusable.
|
||||
// If we can't parse the cookie, ignore it, it's unusable.
|
||||
s = decodeURIComponent(s.replace(pluses, ' '));
|
||||
return config.json ? JSON.parse(s) : s;
|
||||
} catch(e) {}
|
||||
}
|
||||
|
||||
function read(s, converter) {
|
||||
var value = config.raw ? s : parseCookieValue(s);
|
||||
return $.isFunction(converter) ? converter(value) : value;
|
||||
}
|
||||
|
||||
var config = $.cookie = function (key, value, options) {
|
||||
|
||||
// Write
|
||||
|
||||
if (arguments.length > 1 && !$.isFunction(value)) {
|
||||
options = $.extend({}, config.defaults, options);
|
||||
|
||||
if (typeof options.expires === 'number') {
|
||||
var days = options.expires, t = options.expires = new Date();
|
||||
t.setMilliseconds(t.getMilliseconds() + days * 864e+5);
|
||||
}
|
||||
|
||||
return (document.cookie = [
|
||||
encode(key), '=', stringifyCookieValue(value),
|
||||
options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
|
||||
options.path ? '; path=' + options.path : '',
|
||||
options.domain ? '; domain=' + options.domain : '',
|
||||
options.secure ? '; secure' : ''
|
||||
].join(''));
|
||||
}
|
||||
|
||||
// Read
|
||||
|
||||
var result = key ? undefined : {},
|
||||
// To prevent the for loop in the first place assign an empty array
|
||||
// in case there are no cookies at all. Also prevents odd result when
|
||||
// calling $.cookie().
|
||||
cookies = document.cookie ? document.cookie.split('; ') : [],
|
||||
i = 0,
|
||||
l = cookies.length;
|
||||
|
||||
for (; i < l; i++) {
|
||||
var parts = cookies[i].split('='),
|
||||
name = decode(parts.shift()),
|
||||
cookie = parts.join('=');
|
||||
|
||||
if (key === name) {
|
||||
// If second argument (value) is a function it's a converter...
|
||||
result = read(cookie, value);
|
||||
break;
|
||||
}
|
||||
|
||||
// Prevent storing a cookie that we couldn't decode.
|
||||
if (!key && (cookie = read(cookie)) !== undefined) {
|
||||
result[name] = cookie;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
};
|
||||
|
||||
config.defaults = {};
|
||||
|
||||
$.removeCookie = function (key, options) {
|
||||
// Must not alter options, thus extending a fresh object...
|
||||
$.cookie(key, '', $.extend({}, options, { expires: -1 }));
|
||||
return !$.cookie(key);
|
||||
};
|
||||
|
||||
}));
|
4558
cms/plugins/pagemanager/jstree/jquery.jstree.js
Normal file
BIN
cms/plugins/pagemanager/jstree/themes/cmsimple/d.gif
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
cms/plugins/pagemanager/jstree/themes/cmsimple/d.png
Normal file
After Width: | Height: | Size: 7.4 KiB |
BIN
cms/plugins/pagemanager/jstree/themes/cmsimple/dot_for_ie.gif
Normal file
After Width: | Height: | Size: 43 B |
90
cms/plugins/pagemanager/jstree/themes/cmsimple/style.css
Normal file
@ -0,0 +1,90 @@
|
||||
/*
|
||||
* jsTree cmsimple theme 1.0
|
||||
* Supported features: dots/no-dots, icons/no-icons, focused, loading
|
||||
* Supported plugins: ui (hovered, clicked), checkbox, contextmenu, search
|
||||
*
|
||||
* cmb: dropped png support
|
||||
*/
|
||||
|
||||
.jstree-cmsimple li,
|
||||
.jstree-cmsimple ins { background-image:url("d.gif"); background-repeat:no-repeat; background-color:transparent; }
|
||||
.jstree-cmsimple li { background-position:-90px 0; background-repeat:repeat-y; }
|
||||
.jstree-cmsimple li.jstree-last { background:transparent; }
|
||||
.jstree-cmsimple .jstree-open > ins { background-position:-72px 0; }
|
||||
.jstree-cmsimple .jstree-closed > ins { background-position:-54px 0; }
|
||||
.jstree-cmsimple .jstree-leaf > ins { background-position:-36px 0; }
|
||||
|
||||
.jstree-cmsimple .jstree-hovered { background:#cde; border:1px solid #cde; padding:0 1px; }
|
||||
.jstree-cmsimple .jstree-clicked { background:navy; color: #fff!important; border:1px solid navy; padding:0 1px; }
|
||||
.jstree-cmsimple .jstree-clicked a {color: #fff!important;}
|
||||
.jstree-cmsimple a .jstree-icon { background-position:-56px -19px; }
|
||||
.jstree-cmsimple .jstree-open > a .jstree-icon { background-position:-56px -36px; }
|
||||
.jstree-cmsimple a.jstree-loading .jstree-icon { background:url("throbber.gif") center center no-repeat !important; }
|
||||
|
||||
.jstree-cmsimple.jstree-focused { background:white; }
|
||||
|
||||
.jstree-cmsimple .jstree-no-dots li,
|
||||
.jstree-cmsimple .jstree-no-dots .jstree-leaf > ins { background:transparent; }
|
||||
.jstree-cmsimple .jstree-no-dots .jstree-open > ins { background-position:-18px 0; }
|
||||
.jstree-cmsimple .jstree-no-dots .jstree-closed > ins { background-position:0 0; }
|
||||
|
||||
.jstree-cmsimple .jstree-no-icons a .jstree-icon { display:none; }
|
||||
|
||||
.jstree-cmsimple .jstree-search { font-style:italic; }
|
||||
|
||||
.jstree-cmsimple .jstree-no-icons .jstree-checkbox { display:inline-block; }
|
||||
.jstree-cmsimple .jstree-no-checkboxes .jstree-checkbox { display:none !important; }
|
||||
.jstree-cmsimple .jstree-checked > a > .jstree-checkbox { background-position:-38px -19px; }
|
||||
.jstree-cmsimple .jstree-unchecked > a > .jstree-checkbox { background-position:-2px -19px; }
|
||||
.jstree-cmsimple .jstree-undetermined > a > .jstree-checkbox { background-position:-20px -19px; }
|
||||
.jstree-cmsimple .jstree-checked > a > .jstree-checkbox:hover { background-position:-38px -37px; }
|
||||
.jstree-cmsimple .jstree-unchecked > a > .jstree-checkbox:hover { background-position:-2px -37px; }
|
||||
.jstree-cmsimple .jstree-undetermined > a > .jstree-checkbox:hover { background-position:-20px -37px; }
|
||||
|
||||
#vakata-dragged.jstree-cmsimple ins { background:transparent !important; }
|
||||
#vakata-dragged.jstree-cmsimple .jstree-ok { background:url("d.gif") -2px -53px no-repeat !important; }
|
||||
#vakata-dragged.jstree-cmsimple .jstree-invalid { background:url("d.gif") -18px -53px no-repeat !important; }
|
||||
#jstree-marker.jstree-cmsimple { background:url("d.gif") -41px -57px no-repeat !important; }
|
||||
#jstree-marker-line {background: #060; width: 160px; border: 1px solid #060; margin: 0; box-shadow: none!important;}
|
||||
|
||||
.jstree-cmsimple a.jstree-search { color:aqua; }
|
||||
.jstree-cmsimple .jstree-locked a { color:silver; cursor:default; }
|
||||
|
||||
#vakata-contextmenu.jstree-cmsimple-context,
|
||||
#vakata-contextmenu.jstree-cmsimple-context li ul { background:#f0f0f0; border:1px solid #979797; }
|
||||
#vakata-contextmenu.jstree-cmsimple-context li { }
|
||||
#vakata-contextmenu.jstree-cmsimple-context a { color:black; }
|
||||
#vakata-contextmenu.jstree-cmsimple-context a:hover,
|
||||
#vakata-contextmenu.jstree-cmsimple-context .vakata-hover > a { padding:0 5px; background:#e8eff7; border:1px solid #aecff7; color:black; }
|
||||
#vakata-contextmenu.jstree-cmsimple-context li.jstree-contextmenu-disabled a,
|
||||
#vakata-contextmenu.jstree-cmsimple-context li.jstree-contextmenu-disabled a:hover { color:silver; background:transparent; border:0; padding:1px 5px; }
|
||||
#vakata-contextmenu.jstree-cmsimple-context li.vakata-separator { background:white; border-top:1px solid #e0e0e0; margin:0; }
|
||||
#vakata-contextmenu.jstree-cmsimple-context li ul { margin-left:-4px; }
|
||||
|
||||
|
||||
/* links to pages */
|
||||
.jstree-cmsimple span.pagelink {font-size: 20px; line-height: 12px; font-weight: 900; color: #069; padding-left: 6px; cursor: pointer;}
|
||||
.jstree-cmsimple span.pagelink:hover {color: #c60;}
|
||||
.jstree-cmsimple .jstree-rename-input {width: 80%!important; height: 20px!important; font-size: 15px; padding: 0 4px 1px 4px!important;}
|
||||
|
||||
|
||||
/* IE6 BEGIN */
|
||||
/*
|
||||
.jstree-cmsimple li,
|
||||
.jstree-cmsimple ins,
|
||||
#vakata-dragged.jstree-cmsimple .jstree-invalid,
|
||||
#vakata-dragged.jstree-cmsimple .jstree-ok,
|
||||
#jstree-marker.jstree-cmsimple { _background-image:url("d.gif"); }
|
||||
.jstree-cmsimple .jstree-open ins { _background-position:-72px 0; }
|
||||
.jstree-cmsimple .jstree-closed ins { _background-position:-54px 0; }
|
||||
.jstree-cmsimple .jstree-leaf ins { _background-position:-36px 0; }
|
||||
.jstree-cmsimple .jstree-open a ins.jstree-icon { _background-position:-56px -36px; }
|
||||
.jstree-cmsimple .jstree-closed a ins.jstree-icon { _background-position:-56px -19px; }
|
||||
.jstree-cmsimple .jstree-leaf a ins.jstree-icon { _background-position:-56px -19px; }
|
||||
#vakata-contextmenu.jstree-cmsimple-context ins { _display:none; }
|
||||
#vakata-contextmenu.jstree-cmsimple-context li { _zoom:1; }
|
||||
.jstree-cmsimple .jstree-undetermined a .jstree-checkbox { _background-position:-20px -19px; }
|
||||
.jstree-cmsimple .jstree-checked a .jstree-checkbox { _background-position:-38px -19px; }
|
||||
.jstree-cmsimple .jstree-unchecked a .jstree-checkbox { _background-position:-2px -19px; }
|
||||
*/
|
||||
/* IE6 END */
|
BIN
cms/plugins/pagemanager/jstree/themes/cmsimple/throbber.gif
Normal file
After Width: | Height: | Size: 1.8 KiB |
674
cms/plugins/pagemanager/license.txt
Normal file
@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
376
cms/plugins/pagemanager/pagemanager.js
Normal file
@ -0,0 +1,376 @@
|
||||
/**
|
||||
* Page administration of Pagemanager_XH
|
||||
*
|
||||
* Copyright (c) 2011-2012 Christoph M. Becker (see license.txt)
|
||||
*/
|
||||
|
||||
|
||||
// utf-8 marker: äöüß
|
||||
|
||||
|
||||
function pagemanager_do(op) {
|
||||
// save_selected('pm');
|
||||
switch (op) {
|
||||
case 'expand': realOp = 'open_all'; break;
|
||||
case 'collapse': realOp = 'close_all'; break;
|
||||
case 'create_after': realOp = 'create'; break;
|
||||
case 'delete': realOp = 'remove'; break;
|
||||
case 'paste_after': realOp = 'pasteAfter'; break;
|
||||
default: realOp = op;
|
||||
}
|
||||
(function ($) {
|
||||
switch (op) {
|
||||
case 'expand':
|
||||
case 'collapse':
|
||||
$('#pagemanager').jstree(realOp);
|
||||
break;
|
||||
case 'save':
|
||||
$('#pagemanager-xml')[0].value = $('#pagemanager').jstree(
|
||||
'get_xml', 'nest', -1, new Array('id', 'title', 'pdattr'));
|
||||
$('#pagemanager-form').submit();
|
||||
break;
|
||||
default:
|
||||
sel = $('#pagemanager').jstree('get_selected');
|
||||
if (sel.length > 0) {
|
||||
if (op == 'create_after') {
|
||||
$('#pagemanager').jstree(realOp, sel, 'after');
|
||||
} else {
|
||||
$('#pagemanager').jstree(realOp, sel);
|
||||
}
|
||||
} else {
|
||||
if (('<<<PC_verbose>>>').toLowerCase() == 'true') {
|
||||
$('#pagemanager-alert').html('<<<PT_message_no_selection>>>');
|
||||
$('#pagemanager-alert').dialog('open');
|
||||
}
|
||||
}
|
||||
}
|
||||
})(jQuery);
|
||||
}
|
||||
|
||||
|
||||
function pagemanager_confirmStructureWarning() {
|
||||
jQuery('#pagemanager-structure-warning').hide(500);
|
||||
jQuery('#pagemanager-toolbar a:first-child').show();
|
||||
jQuery('#pagemanager-submit').show();
|
||||
}
|
||||
|
||||
|
||||
function pagemanager_level(obj) {
|
||||
var res = 0;
|
||||
while (obj.attr('id') != 'pagemanager') {
|
||||
obj = obj.parent().parent();
|
||||
res++;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
function pagemanager_childLevels(obj) {
|
||||
var res = -1;
|
||||
while (obj.length > 0) {
|
||||
obj = obj.find('li');
|
||||
res++;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
function pagemanager_markDuplicates(node, duplicates) {
|
||||
var pagemanager = jQuery.jstree._reference('#pagemanager');
|
||||
var children = pagemanager._get_children(node);
|
||||
for (var i = 0; i < children.length; i++) {
|
||||
duplicates = pagemanager_markDuplicates(children[i], duplicates);
|
||||
for (var j = i+1; j < children.length; j++) {
|
||||
if (pagemanager.get_text(children[i]) == pagemanager.get_text(children[j])) {
|
||||
pagemanager.set_text(children[j], '<<<TOC_DUPL>>> ' + ++duplicates);
|
||||
}
|
||||
}
|
||||
}
|
||||
return duplicates;
|
||||
};
|
||||
|
||||
|
||||
var pagemanager_modified = false;
|
||||
|
||||
|
||||
(function ($) {
|
||||
$(function () {
|
||||
if (typeof $.jstree == 'undefined') {
|
||||
alert('<<<PT_error_offending_extension>>>');
|
||||
return;
|
||||
}
|
||||
$.jstree.plugin('crrm', {
|
||||
_fn: {
|
||||
pasteAfter: function(obj) {
|
||||
obj = this._get_node(obj);
|
||||
if(!obj || !obj.length) { return false; }
|
||||
var nodes = this.data.crrm.ct_nodes ? this.data.crrm.ct_nodes : this.data.crrm.cp_nodes;
|
||||
if(!this.data.crrm.ct_nodes && !this.data.crrm.cp_nodes) { return false; }
|
||||
if(this.data.crrm.ct_nodes) { this.move_node(this.data.crrm.ct_nodes, obj, 'after'); this.data.crrm.ct_nodes = false; }
|
||||
if(this.data.crrm.cp_nodes) { this.move_node(this.data.crrm.cp_nodes, obj, 'after', true); }
|
||||
this.__callback({ "obj" : obj, "nodes" : nodes });
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$('#pagemanager-confirmation').dialog({
|
||||
'autoOpen': false,
|
||||
'modal': true
|
||||
});
|
||||
|
||||
$('#pagemanager-alert').dialog({
|
||||
'autoOpen': false,
|
||||
'modal': true,
|
||||
'buttons': {
|
||||
'<<<PT_button_ok>>>': function () {$(this).dialog('close');}
|
||||
}
|
||||
});
|
||||
|
||||
$('#pagemanager').bind('loaded.jstree', function () {
|
||||
if ($('#pagemanager-structure-warning').length == 0) {
|
||||
$('#pagemanager-toolbar a:first-child').show();
|
||||
$('#pagemanager-submit').show();
|
||||
}
|
||||
});
|
||||
|
||||
/* initialize checkboxes */
|
||||
$('#pagemanager').bind('loaded.jstree', function () {
|
||||
var checkNodes = (function (parent) {
|
||||
var nodes = pagemanager._get_children(parent);
|
||||
for (var i = 0; i < nodes.length; ++i) {
|
||||
var node = pagemanager._get_node(nodes[i]);
|
||||
if (node.attr('pdattr') == '1') {
|
||||
pagemanager.check_node(node);
|
||||
}
|
||||
checkNodes(node);
|
||||
}
|
||||
});
|
||||
checkNodes(-1);
|
||||
$('#pagemanager').bind('move_node.jstree create_node.jstree rename_node.jstree remove.jstree change_state.jstree', function () {
|
||||
pagemanager_modified = true;
|
||||
});
|
||||
});
|
||||
|
||||
$('#pagemanager').bind('before.jstree', function (e, data) {
|
||||
switch (data.func) {
|
||||
case 'create_node':
|
||||
if (pagemanager_level(pagemanager._get_node(data.args[0]))
|
||||
>= <<<MENU_LEVELS>>> + (data.args[1] == 'after' ? 1 : 0)) {
|
||||
if (('<<<PC_verbose>>>').toLowerCase() == 'true') {
|
||||
$('#pagemanager-alert').html('<<<PT_message_menu_level>>>');
|
||||
$('#pagemanager-alert').dialog('open');
|
||||
}
|
||||
e.stopImmediatePropagation();
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case 'rename':
|
||||
if ($(data.args[0][0]).hasClass('pagemanager-no-rename')) {
|
||||
alert('<<<PT_error_cant_rename>>>');
|
||||
e.stopImmediatePropagation();
|
||||
return false;
|
||||
}
|
||||
pagemanager.set_text(data.args[0][0], pagemanager._get_node(data.args[0][0]).attr('title'));
|
||||
break;
|
||||
case 'remove':
|
||||
var toplevels = pagemanager._get_children(-1);
|
||||
if (toplevels.length == 1 && data.args[0][0] == toplevels[0]) {
|
||||
if (('<<<PC_verbose>>>').toLowerCase() == 'true') {
|
||||
$('#pagemanager-alert').html('<<<PT_message_delete_last>>>');
|
||||
$('#pagemanager-alert').dialog('open');
|
||||
}
|
||||
e.stopImmediatePropagation();
|
||||
return false;
|
||||
}
|
||||
if (data.args[1] != 'confirmed') {
|
||||
if (('<<<PC_verbose>>>').toLowerCase() == 'true') {
|
||||
$('#pagemanager-confirmation').html('<<<PT_message_confirm_deletion>>>');
|
||||
$('#pagemanager-confirmation').dialog('option', 'buttons', {
|
||||
'<<<PT_button_delete>>>': function () {
|
||||
pagemanager.remove(data.args[0], 'confirmed');
|
||||
$(this).dialog('close');
|
||||
},
|
||||
'<<<PT_button_cancel>>>': function () {
|
||||
$(this).dialog('close');
|
||||
}
|
||||
});
|
||||
$('#pagemanager-confirmation').dialog('open');
|
||||
e.stopImmediatePropagation();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
}
|
||||
});
|
||||
|
||||
$('#pagemanager').bind('change_state.jstree', function (e, data) {
|
||||
data.rslt.attr('pdattr', data.args[1] ? '0' : '1');
|
||||
});
|
||||
|
||||
$('#pagemanager').bind('create_node.jstree', function (e, data) {
|
||||
pagemanager.set_type('new', data.rslt.obj);
|
||||
pagemanager.check_node(data.rslt.obj);
|
||||
});
|
||||
|
||||
$('#pagemanager').bind('rename_node.jstree', function (e, data) {
|
||||
pagemanager._get_node(data.rslt.obj).attr('title', pagemanager.get_text(data.rslt.obj));
|
||||
});
|
||||
|
||||
/* mark copied nodes as new */
|
||||
$('#pagemanager').bind('move_node.jstree', function (e, data) {
|
||||
if ('cy' in data.rslt && data.rslt.cy) {
|
||||
var traverse = (function (node) {
|
||||
var children = pagemanager._get_children(node);
|
||||
for (var i = 0; i < children.length; ++i) {
|
||||
pagemanager.set_type('new', children[i]);
|
||||
traverse(children[i]);
|
||||
}
|
||||
});
|
||||
pagemanager.set_type('new', data.rslt.oc);
|
||||
traverse(data.rslt.oc);
|
||||
}
|
||||
});
|
||||
|
||||
/* restore page titles */
|
||||
$('#pagemanager').bind('rename_node.jstree remove.jstree move_node.jstree', function (e, data) {
|
||||
var restoreTitles = (function (node) {
|
||||
var children = pagemanager._get_children(node);
|
||||
for (var i = 0; i < children.length; ++i) {
|
||||
pagemanager.set_text(children[i], pagemanager._get_node(children[i]).attr('title'));
|
||||
restoreTitles(children[i]);
|
||||
}
|
||||
});
|
||||
restoreTitles(-1);
|
||||
});
|
||||
|
||||
/* mark duplicate headers */
|
||||
$('#pagemanager').bind('loaded.jstree rename_node.jstree remove.jstree move_node.jstree', function (e, data) {
|
||||
pagemanager_markDuplicates(-1, 0);
|
||||
});
|
||||
|
||||
if (!window.opera) {
|
||||
window.onbeforeunload = function () {
|
||||
if (pagemanager_modified && $('#pagemanager-xml')[0].value == '') {
|
||||
return '<<<PT_message_warning_leave>>>';
|
||||
}
|
||||
};
|
||||
} else {
|
||||
$(window).unload(function () {
|
||||
if (pagemanager_modified && $('#pagemanager-xml')[0].value == '') {
|
||||
if (confirm('<<<PT_message_confirm_leave>>>')) {
|
||||
$('#pagemanager-xml')[0].value = pagemanager.get_xml(
|
||||
'nest', -1, new Array('id', 'title', 'pdattr'));
|
||||
$('#pagemanager-form').submit();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize jsTree.
|
||||
*/
|
||||
|
||||
$('#pagemanager').jstree({
|
||||
'plugins': ['themes', 'html_data', 'xml_data', 'dnd', 'ui',
|
||||
'crrm', 'contextmenu', 'checkbox', 'types', 'cookies'],
|
||||
'core': {
|
||||
'animation': <<<PC_treeview_animation>>>,
|
||||
'strings': {
|
||||
loading:'<<<PT_treeview_loading>>>',
|
||||
new_node:'<<<PT_treeview_new>>>'
|
||||
}
|
||||
},
|
||||
'types': {
|
||||
'types': {
|
||||
'new': {
|
||||
'icon': {
|
||||
'image': '<<<IMAGE_DIR>>>new.gif'
|
||||
}
|
||||
},
|
||||
'default': {
|
||||
}
|
||||
}
|
||||
},
|
||||
'checkbox': {
|
||||
'checked_parent_open': false,
|
||||
'two_state': true
|
||||
},
|
||||
'ui': {
|
||||
'select_limit': 1
|
||||
},
|
||||
'crrm': {
|
||||
'move': {
|
||||
'check_move': function (m) {
|
||||
var sc = pagemanager_childLevels(m.o),
|
||||
tl = pagemanager_level(m.r);
|
||||
var allowed =
|
||||
(typeof(m.r) == 'object' && pagemanager_childLevels(m.o) // of source
|
||||
+ pagemanager_level(m.r) // of target
|
||||
+ (m.p == 'last' || m.p == 'inside' ? 1 : 0) // paste vs. dnd
|
||||
<= <<<MENU_LEVELS>>>);
|
||||
if (!m.ot.data.dnd.active && !allowed
|
||||
&& ('<<<PC_verbose>>>').toLowerCase() == 'true') {
|
||||
$('#pagemanager-alert').html('<<<PT_message_menu_level>>>');
|
||||
$('#pagemanager-alert').dialog('open');
|
||||
}
|
||||
return allowed;
|
||||
}
|
||||
}
|
||||
},
|
||||
'themes': {
|
||||
'theme': '<<<PC_treeview_theme>>>'
|
||||
},
|
||||
'contextmenu': {
|
||||
'show_at_node': false,
|
||||
'select_node': true,
|
||||
'items': function (node) {
|
||||
return {
|
||||
'create': {
|
||||
'label': '<<<PT_op_create>>>',
|
||||
'icon': '<<<IMAGE_DIR>>>create<<<IMAGE_EXT>>>',
|
||||
'action': function (obj) {this.create(obj);}
|
||||
},
|
||||
'create-after': {
|
||||
'label': '<<<PT_op_create_after>>>',
|
||||
'icon': '<<<IMAGE_DIR>>>create_after<<<IMAGE_EXT>>>',
|
||||
'action': function(obj) {this.create(obj, 'after');}
|
||||
},
|
||||
'rename': {
|
||||
'label': '<<<PT_op_rename>>>',
|
||||
'icon': '<<<IMAGE_DIR>>>rename<<<IMAGE_EXT>>>',
|
||||
'action': function(obj) {this.rename(obj);}
|
||||
},
|
||||
'remove' : {
|
||||
'label': '<<<PT_op_delete>>>',
|
||||
'icon': '<<<IMAGE_DIR>>>delete<<<IMAGE_EXT>>>',
|
||||
'action': function(obj) {this.remove(obj);}
|
||||
},
|
||||
'cut': {
|
||||
'label': '<<<PT_op_cut>>>',
|
||||
'separator_before': true,
|
||||
'icon': '<<<IMAGE_DIR>>>cut<<<IMAGE_EXT>>>',
|
||||
'action': function(obj) {this.cut(obj);}
|
||||
},
|
||||
'copy': {
|
||||
'label': '<<<PT_op_copy>>>',
|
||||
'icon': '<<<IMAGE_DIR>>>copy<<<IMAGE_EXT>>>',
|
||||
'action': function(obj) {this.copy(obj);}
|
||||
},
|
||||
'paste': {
|
||||
'label': '<<<PT_op_paste>>>',
|
||||
'icon': '<<<IMAGE_DIR>>>paste<<<IMAGE_EXT>>>',
|
||||
'action': function(obj) {this.paste(obj);}
|
||||
},
|
||||
'paste-after': {
|
||||
'label': '<<<PT_op_paste_after>>>',
|
||||
'icon': '<<<IMAGE_DIR>>>paste_after<<<IMAGE_EXT>>>',
|
||||
'action': function(obj) {this.pasteAfter(obj);}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
var pagemanager = $.jstree._reference('#pagemanager');
|
||||
});
|
||||
})(jQuery);
|
BIN
cms/plugins/pagemanager/pagemanager.png
Normal file
After Width: | Height: | Size: 19 KiB |