From 46bc6e545a17e77202aaf01ec0cd8d5a46567525 Mon Sep 17 00:00:00 2001 From: Renato Botelho Date: Tue, 25 Aug 2015 08:08:24 -0300 Subject: Move main pfSense content to src/ --- src/usr/local/www/themes/pfsense_ng/menu.inc | 177 +++++++++++++++++++++++++++ 1 file changed, 177 insertions(+) create mode 100644 src/usr/local/www/themes/pfsense_ng/menu.inc (limited to 'src/usr/local/www/themes/pfsense_ng/menu.inc') diff --git a/src/usr/local/www/themes/pfsense_ng/menu.inc b/src/usr/local/www/themes/pfsense_ng/menu.inc new file mode 100644 index 0000000..d703daf --- /dev/null +++ b/src/usr/local/www/themes/pfsense_ng/menu.inc @@ -0,0 +1,177 @@ + + All rights reserved. + */ +/* ========================================================================== */ +/* + Originally part of m0n0wall (http://m0n0.ch/wall) + Copyright (C) 2003-2004 Manuel Kasper . + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + */ +/* ========================================================================== */ + +require("menu.inc"); + +define("TMENU_STUB", " + // set up drop downs anywhere in the body of the page. I think the bottom of the page is better.. + // but you can experiment with effect on loadtime. + if (TransMenu.isSupported()) { + + //================================================================================================== + // create a set of dropdowns + //================================================================================================== + // the first param should always be down, as it is here + // + // The second and third param are the top and left offset positions of the menus from their actuators + // respectively. To make a menu appear a little to the left and bottom of an actuator, you could use + // something like -5, 5 + // + // The last parameter can be .topLeft, .bottomLeft, .topRight, or .bottomRight to inidicate the corner + // of the actuator from which to measure the offset positions above. Here we are saying we want the + // menu to appear directly below the bottom left corner of the actuator + //================================================================================================== + var ms = new TransMenuSet(TransMenu.direction.down, 1, 0, TransMenu.reference.bottomLeft); + + //================================================================================================== + // create a dropdown menu + //================================================================================================== + // the first parameter should be the HTML element which will act actuator for the menu + //================================================================================================== + + @@MENU_DEFINITIONS@@ + + //================================================================================================== + // write drop downs into page + //================================================================================================== + // this method writes all the HTML for the menus into the page with document.write(). It must be + // called within the body of the HTML page. + //================================================================================================== + TransMenu.renderAll(); + } +"); + +class NervecenterMenu extends Menu { + private $menuJScript = "NOT-SET"; + private $menuJScriptEvents = "NOT-SET"; + private $menuID = "NOT-SET"; + + public function __construct($identification = "", $filename = "", Component $c = NULL) { + parent::__construct($identification, $filename, $c); + + $id = "mnua_" . str_replace(" ", "", strtolower($this->getID())); + $this->menuID = $id; + + if ($this->hasParent()) { + $this->menuJScript = "\tvar {$id} = ms.addMenu(document.getElementById('{$id}'));\n"; + } + } // end __construct + + public function getMenuID() { + return $this->menuID; + } + + public function setMenuID($myMenuID) { + $this->menuID = $myMenuID; + } + + public function getMenuJScript() { + $childJScript = ""; + foreach ($this->getChildren() as $component) { + $childJScript .= $component->getMenuJScript(); + } + + if (! $this->hasParent()) { + $this->menuJScript = str_replace("@@MENU_DEFINITIONS@@", $childJScript, TMENU_STUB); + } else { + $this->menuJScript .= "\n$childJScript\n"; + } + + return $this->menuJScript; + } + + public function getMenuJScriptEvents() { + return $this->menuJScriptEvents; + } + + public function __toString() { + if (! $this->hasParent()) { + $menuMarkup =<< + @@CHILD_ELEMENTS@@ + + +EOD; + } else { + $name = gettext($this->getID()); + $id = "mnua_" . str_replace(" ", "", strtolower($this->getID())); + + $menuMarkup =<<{$name} + @@CHILD_ELEMENTS@@ +EOD; + } + + $childMarkup = ""; + foreach ($this->getChildren() as $component) { + $childMarkup .= $component; + } + + $menuMarkup = str_replace("@@CHILD_ELEMENTS@@", $childMarkup, $menuMarkup); + + return $menuMarkup; + } +} + +class NervecenterMenuItem extends MenuItem { + private $menuJScript = "NOT-SET"; + private $menuJScriptEvents = "NOT-SET"; + + public function __construct($identification = "", $filename = "", $href = "", Component $c = NULL) { + parent::__construct($identification, $filename, $href, $c); + + $href = $this->getHref() <> "" ? $this->getHref() : "{$this->getFile()}"; + $name = gettext($this->getID()); + $file = $this->getFile(); + + $this->menuJScript = $this->check_access("{$file}", "\t{$this->getParent()->getMenuID()}.addItem('{$name}', '{$href}');\n"); + } + + public function getMenuJScript() { + return $this->menuJScript; + } + + public function getMenuJScriptEvents() { + return $this->menuJScriptEvents; + } + + public function __toString() { + return ""; + } +} + +?> -- cgit v1.1