Fixed page menu form
authorMarcel Werk <burntime@woltlab.com>
Sun, 14 Jul 2013 21:38:20 +0000 (23:38 +0200)
committerMarcel Werk <burntime@woltlab.com>
Sun, 14 Jul 2013 21:38:20 +0000 (23:38 +0200)
wcfsetup/install/files/acp/templates/pageMenuItemAdd.tpl
wcfsetup/install/files/lib/acp/form/PageMenuItemAddForm.class.php
wcfsetup/install/files/lib/acp/form/PageMenuItemEditForm.class.php
wcfsetup/install/lang/de.xml
wcfsetup/install/lang/en.xml

index e8f3877f2628274b65740842afc06a6b48828060..3a91ab27a7cccfe02492c4e4fc3e8aaafb78ad6b 100644 (file)
@@ -8,6 +8,7 @@
                var $isInternalLink = $('input[name=isInternalLink]').filter('[value=1]');
                var $menuItemControllerContainer = $('#menuItemControllerContainer');
                var $menuItemLinkContainer = $('#menuItemLinkContainer');
+               var $menuItemParametersContainer = $('#menuItemParametersContainer');
                
                function handleMenuPosition() {
                        if ($menuPosition.val() === 'header') {
                function handleIsInternalLink() {
                        if ($isInternalLink.is(':checked')) {
                                $menuItemControllerContainer.show();
+                               $menuItemParametersContainer.show();
                                $menuItemLinkContainer.hide();
                        }
                        else {
                                $menuItemControllerContainer.hide();
+                               $menuItemParametersContainer.hide();
                                $menuItemLinkContainer.show();
                        }
                }
                        <legend>{lang}wcf.acp.pageMenu.link{/lang}</legend>
                        
                        <dl>
+                               <dt></dt>
                                <dd class="floated">
                                        <label><input type="radio" name="isInternalLink" value="1"{if $isInternalLink} checked="checked"{/if} /> {lang}wcf.acp.pageMenu.link.internal{/lang}</label>
                                        <label><input type="radio" name="isInternalLink" value="0"{if !$isInternalLink} checked="checked"{/if} /> {lang}wcf.acp.pageMenu.link.external{/lang}</label>
                                </dd>
                        </dl>
                        
+                       <dl id="menuItemParametersContainer"{if $errorField == 'menuItemParameters'} class="formError"{/if}>
+                               <dt><label for="menuItemParameters">{lang}wcf.acp.pageMenu.menuItemParameters{/lang}</label></dt>
+                               <dd>
+                                       <input type="text" name="menuItemParameters" id="menuItemParameters" value="{$menuItemParameters}" class="long" />
+                                       {if $errorField == 'menuItemParameters'}
+                                               <small class="innerError">
+                                                       {if $errorType == 'empty'}
+                                                               {lang}wcf.global.form.error.empty{/lang}
+                                                       {else}
+                                                               {lang}wcf.acp.pageMenu.menuItemParameters.error.{$errorType}{/lang}
+                                                       {/if}
+                                               </small>
+                                       {/if}
+                               </dd>
+                       </dl>
+                       
                        <dl id="menuItemLinkContainer"{if $errorField == 'menuItemLink'} class="formError"{/if}>
                                <dt><label for="menuItemLink">{lang}wcf.acp.pageMenu.menuItemLink{/lang}</label></dt>
                                <dd>
                        </dl>
                        
                        <dl>
+                               <dt></dt>
                                <dd>
                                        <label><input type="checkbox" name="isDisabled" id="isDisabled" value="1"{if $isDisabled} checked="checked"{/if} /> <span>{lang}wcf.acp.pageMenu.isDisabled{/lang}</span></label>
                                </dd>
index 1fcdd774a9e76f3f4fa8d947f12ce57baf761c6b..57f4c1e4f8ec1c2ceeb2dd6d4a2f39aec7476a6d 100644 (file)
@@ -49,6 +49,12 @@ class PageMenuItemAddForm extends AbstractForm {
         */
        public $menuItemController = '';
        
+       /**
+        * menu item parameters
+        * @var string
+        */
+       public $menuItemParameters = '';
+       
        /**
         * menu item link
         * @var string
@@ -127,6 +133,7 @@ class PageMenuItemAddForm extends AbstractForm {
                if (isset($_POST['isDisabled'])) $this->isDisabled = true;
                if (isset($_POST['isInternalLink'])) $this->isInternalLink = (bool) $_POST['isInternalLink'];
                if (isset($_POST['menuItemController'])) $this->menuItemController = StringUtil::trim($_POST['menuItemController']);
+               if (isset($_POST['menuItemParameters'])) $this->menuItemParameters = StringUtil::trim($_POST['menuItemParameters']);
                if (isset($_POST['menuPosition'])) $this->menuPosition = StringUtil::trim($_POST['menuPosition']);
                if (isset($_POST['parentMenuItem'])) $this->parentMenuItem = StringUtil::trim($_POST['parentMenuItem']);
                if (isset($_POST['showOrder'])) $this->showOrder = intval($_POST['showOrder']);
@@ -204,7 +211,7 @@ class PageMenuItemAddForm extends AbstractForm {
                        'isDisabled' => ($this->isDisabled) ? 1 : 0,
                        'menuItem' => $this->pageMenuItem,
                        'menuItemController' => $this->menuItemController,
-                       'menuItemLink' => $this->menuItemLink,
+                       'menuItemLink' => ($this->menuItemController ? $this->menuItemParameters : $this->menuItemLink),
                        'menuPosition' => $this->menuPosition,
                        'parentMenuItem' => $this->parentMenuItem,
                        'showOrder' => $this->showOrder
@@ -236,7 +243,7 @@ class PageMenuItemAddForm extends AbstractForm {
                // reset variables
                $this->isDisabled = $this->isInternalLink = false;
                $this->menuPosition = 'header';
-               $this->menuItemController = $this->menuItemLink = $this->pageMenuItem = $this->parentMenuItem = '';
+               $this->menuItemController = $this->menuItemLink = $this->pageMenuItem = $this->parentMenuItem = $this->menuItemParameters = '';
                $this->showOrder = 0;
                
                I18nHandler::getInstance()->reset();
@@ -261,6 +268,7 @@ class PageMenuItemAddForm extends AbstractForm {
                        'isDisabled' => $this->isDisabled,
                        'isInternalLink' => $this->isInternalLink,
                        'menuItemController' => $this->menuItemController,
+                       'menuItemParameters' => $this->menuItemParameters,
                        'menuItemLink' => $this->menuItemLink,
                        'menuPosition' => $this->menuPosition,
                        'pageMenuItem' => $this->pageMenuItem,
index fc7bca4896e6090aac149020f0431029735e5adc..da2054713c9b21dfe1915d5b15c0eb440f4237d8 100644 (file)
@@ -71,7 +71,12 @@ class PageMenuItemEditForm extends PageMenuItemAddForm {
                        $this->isDisabled = ($this->menuItem->isDisabled) ? true : false;
                        $this->isInternalLink = ($this->menuItem->menuItemController) ? true : false;
                        $this->menuItemController = $this->menuItem->menuItemController;
-                       $this->menuItemLink = $this->menuItem->menuItemLink;
+                       if ($this->isInternalLink) {
+                               $this->menuItemParameters = $this->menuItem->menuItemLink;
+                       }
+                       else {
+                               $this->menuItemLink = $this->menuItem->menuItemLink;
+                       }
                        $this->menuPosition = $this->menuItem->menuPosition;
                        $this->pageMenuItem = $this->menuItem->menuItem;
                        $this->parentMenuItem = $this->menuItem->parentMenuItem;
@@ -102,7 +107,7 @@ class PageMenuItemEditForm extends PageMenuItemAddForm {
                $this->objectAction = new PageMenuItemAction(array($this->menuItem), 'update', array('data' => array(
                        'isDisabled' => ($this->isDisabled) ? 1 : 0,
                        'menuItemController' => $this->menuItemController,
-                       'menuItemLink' => $this->menuItemLink,
+                       'menuItemLink' => ($this->menuItemController ? $this->menuItemParameters : $this->menuItemLink),
                        'parentMenuItem' => ($this->menuPosition == 'header' ? $this->parentMenuItem : ''),
                        'menuPosition' => $this->menuPosition,
                        'showOrder' => $this->showOrder
index 616962ef8a195b4370d462d4d89055bbcd7844f2..1c91912644983ff656088706bfcfca5666bbea53 100644 (file)
                <item name="wcf.acp.pageMenu.pageMenuItem"><![CDATA[Name]]></item>
                <item name="wcf.acp.pageMenu.parentMenuItem"><![CDATA[Übergeordneter Menüpunkt]]></item>
                <item name="wcf.acp.pageMenu.showOrder"><![CDATA[Reihenfolge]]></item>
+               <item name="wcf.acp.pageMenu.menuItemParameters"><![CDATA[Parameter]]></item>
        </category>
        
        <category name="wcf.acp.rebuildData">
index 0ff102e000dd10f7df4640834823bc31a89d9ec5..f116304cf3c6efaed073bcb670a6a9ebbccd4208 100644 (file)
@@ -948,6 +948,7 @@ Examples for medium ID detection:
                <item name="wcf.acp.pageMenu.pageMenuItem"><![CDATA[Title]]></item>
                <item name="wcf.acp.pageMenu.parentMenuItem"><![CDATA[Parent Menu Item]]></item>
                <item name="wcf.acp.pageMenu.showOrder"><![CDATA[Display Order]]></item>
+               <item name="wcf.acp.pageMenu.menuItemParameters"><![CDATA[TODO: Parameter]]></item>
        </category>
        
        <category name="wcf.acp.rebuildData">