(root)/menuedit.php - Rev 496
Rev 476 |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
<?PHP
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* This file is part of Travelsized CMS
* A content management system with modules, based on wiki syntax
*
* Author: Dan Jensen <admin@leinir.dk>
* Copyright 2003/2004
*
* 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 2 of the License, or
* (at your option) any later version.
*
* The GNU General Public License is available at: http://www.gnu.org/copyleft/
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
$page_author = $creator_name;
$page_author_email = $creator_email;
$page_menu = 1;
$page_date = formatTime
( time() );
/**
* Draws an editing dialogue (with built-in previewing system), allowing editing of any page.
*/
class MenuEditDialogue
{
/// \private
var $dialogue; ///< @var optionsPanel The dialogue used for editing the page
/// \private
var $menuChanged; ///< @var bool True if the page has been edited
/// \private
var $menuPreview; ///< @var bool True if the page should be previewed
/**
* Creates a new instance of the menu editing dialogue, which is used for editing the contents of any page data structure
*
* @param string menu_title The title of the menu you wish to edit
* @param string menu_language The language of the menu you wish to edit
* @param string menu_content The content of the menu you wish to edit
*
* @return string
*/
function MenuEditDialogue
( $menu_title, $menu_language, $menu_theme, $menu_content )
{
global $theme_options, $languages, $languages_names, $pagectl;
$theLanguages = array();
foreach( $languages as $key => $value )
$theLanguages[$value] = $languages_names[$key];
$this->dialogue = new optionsPanel
("menuEditor");
$this->dialogue->saveTitle = i18n
("Save");
$this->dialogue->addCommand( i18n
("Preview"), "preview" );
$this->dialogue->showHeader = false;
$this->dialogue->addOption(
i18n
("Title"),
i18n
("The title of the menu"),
$menu_title,
"title",
"text"
);
$this->dialogue->addOption(
i18n
("Language"),
i18n
("Which language version of the menu you currently editing"),
$menu_language,
"language",
"select",
$theLanguages
);
if ($theme_options["theme_follows_menu"] == "1")
{
global $theme_folder, $theme_name;
$theThemes = array( "/none/" => i18n
("Inherit theme from previously shown page (default behaviour)") );
foreach($theme_folder as $key => $value)
$theThemes[$value] = $theme_name[$key];
$this->dialogue->addOption(
i18n
("Theme"),
i18n
("Which theme would you like to show for this menu (section)"),
$menu_theme,
"theme",
"select",
$theThemes
);
}
$this->dialogue->addOption(
i18n
("Content"),
"",
$menu_content,
"content",
"pagedata"
);
$this->menuChanged = $this->dialogue->submitted == "default" ?
true : false;
$this->menuPreview = $this->dialogue->submitted == "preview" ?
true : false;
}
function getTitle
()
{ return $this->dialogue->getValue("title"); }
function getLanguage
()
{ return $this->dialogue->getValue("language"); }
function getTheme
()
{ return $this->dialogue->getValue("theme"); }
function getContent
()
{ return $this->dialogue->getValue("content"); }
/**
* @return bool Describes wether the dialogue has been saved
*/
function menuSaved
()
{ return $this->menuChanged; }
/**
* @return bool Describes wether the user called for a preview
*/
function menuPreview
()
{ return $this->menuPreview; }
/**
* Render a preview of the page content if a preview has been requested
*
* @return string The rendered preview
*/
function renderPreview
()
{
$renderedContent = true;
if( $this->menuPreview() )
$renderedContent .= parse_page_data
( $this->getContent() );
return $renderedContent;
}
function render
()
{
$renderedContent = "";
$renderedContent .= $this->dialogue->render();
$renderedContent .= generate_pagehelplink
();
return $renderedContent;
}
}
if( array_key_exists( "username", $_REQUEST ) && array_key_exists( "password", $_REQUEST ) && !auth
( $_REQUEST["username"], $_REQUEST["password"] ) )
$page_content = loginform
($language, globalIDtoURL
("setup/editmenu/$menuEditLanguage/$menuEditID"), $auth_messages);
else if( isauth
() )
{
$edit_menu["language"] = $menuEditLanguage;
if( $menuEditID )
{ //This means edit this menu
$edit_menu["title"] = $pagectl->fetchMenuTitle($menu_folder, $menuEditID, $menuEditLanguage);
$edit_menu["content"] = $pagectl->fetchMenuMenu($menu_folder, $menuEditID, $menuEditLanguage);
$edit_menu["theme"] = $pagectl->fetchMenuTheme($menu_folder, $menuEditID, $menuEditLanguage);
}
else if( $menuEditTitle )
{ //This means we wanna make a new menu with this name
$menuEditID = $pagectl->getFreeMenuID($menu_folder, $pagectl);
$edit_menu["title"] = $menuEditTitle;
$edit_menu["language"] = $language;
$edit_menu["content"] = i18n
("Write your content here. Formatting help can be found below.");
$edit_menu["theme"] = "/none/";
// Preemptively create the menu...
$pagectl->saveMenuMenu( $menu_folder, $menuEditID, $edit_menu["title"], $edit_menu["content"], $edit_menu["language"], $edit_menu["theme"] );
}
$edit_menu["title"] = str_replace("&", "&", $edit_menu["title"]);
$edit_menu["content"] = str_replace("&", "&", $edit_menu["content"]);
$edit_menu["id"] = $menuEditID;
$page_title = i18n
("Editing menu id ##0##", array($edit_menu["id"]));
$menuDialogue = new MenuEditDialogue
( $edit_menu["title"], $edit_menu["language"], $edit_menu["theme"], $edit_menu["content"] );
if( $menuDialogue->menuSaved() )
{
if( $pagectl->saveMenuMenu( $menu_folder, $menuEditID, $menuDialogue->getTitle(), $menuDialogue->getContent(), $menuDialogue->getLanguage(), $menuDialogue->getTheme() ) )
{
if( !array_key_exists("menu_" . $menuEditID . "_view", $usergroups_default) )
{
setAllowed
("menu_" . $menuEditID . "_view", isAllowed
("global_menus_view"));
setAllowed
("menu_" . $menuEditID . "_edit", isAllowed
("global_menus_edit"));
}
$page_content = renderInformationBox
( i18n
("The menu was saved"), i18n
("The menu was successfully saved. You should be transferred back to the menu setup page momentarily.") );
header("Location: " . globalIDtoURL
("setup/menusetup") );
}
else
$page_content .= renderErrorBox
( i18n
("Menu not saved!"), i18n
("The menu was not saved! Click on your browser's back button and try again.") );
}
else if( $menuDialogue->menuPreview() )
{
$page_content .= renderInformationBox
( i18n
("Menu preview"), i18n
("Please look where the menu is normally found to see how the menu looks in place.") );
$page_menu = parse_page_data
( $menuDialogue->getContent() );
}
// Edit menu
$page_content .= "<form action=\"" . globalIDtoURL
("setup/editmenu/{$edit_menu["language
"]}/{$edit_menu["id
"]}") . "\" method=\"POST\">" . $menuDialogue->render() . "</form>";
}
?>