Subversion Repositories travelsized

Rev

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("&", "&amp;", $edit_menu["title"]);
        $edit_menu["content"] = str_replace("&", "&amp;", $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>";
}
?>