summaryrefslogtreecommitdiffstats
path: root/src/usr/local/www/themes/the_wall/menu.inc
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/local/www/themes/the_wall/menu.inc')
-rw-r--r--src/usr/local/www/themes/the_wall/menu.inc177
1 files changed, 177 insertions, 0 deletions
diff --git a/src/usr/local/www/themes/the_wall/menu.inc b/src/usr/local/www/themes/the_wall/menu.inc
new file mode 100644
index 0000000..a274410
--- /dev/null
+++ b/src/usr/local/www/themes/the_wall/menu.inc
@@ -0,0 +1,177 @@
+<?php
+/* $Id$ */
+/* ========================================================================== */
+/*
+ menu.inc
+ Copyright (C) 2006 Daniel S. Haischt <me@daniel.stefan.haischt.name>
+ All rights reserved.
+ */
+/* ========================================================================== */
+/*
+ Originally part of m0n0wall (http://m0n0.ch/wall)
+ Copyright (C) 2003-2004 Manuel Kasper <mk@neon1.net>.
+ 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 =<<<EOD
+ <div id="menu">
+ @@CHILD_ELEMENTS@@
+ </div>
+
+EOD;
+ } else {
+ $name = gettext($this->getID());
+ $id = "mnua_" . str_replace(" ", "", strtolower($this->getID()));
+
+ $menuMarkup =<<<EOD
+ <a id="{$id}" href="#">{$name}</a>
+ @@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 "";
+ }
+}
+
+?>
OpenPOWER on IntegriCloud