[Pkg-mediawiki-commits] r462 - in mediawiki-extensions/trunk: . debian dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img

Thorsten Glaser tg at alioth.debian.org
Tue Jun 11 11:05:06 UTC 2013


Author: tg
Date: 2013-06-11 11:05:06 +0000 (Tue, 11 Jun 2013)
New Revision: 462

Added:
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/TreeAndMenu.i18n.magic.php
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/TreeAndMenu.i18n.php
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/TreeAndMenu.php
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/dtree.js
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/base.gif
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/cd.gif
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/empty.gif
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/folder.gif
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/folderopen.gif
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/globe.gif
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/imgfolder.gif
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/join.gif
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/joinbottom.gif
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/line.gif
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/minus.gif
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/minusbottom.gif
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/musicfolder.gif
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/nolines_minus.gif
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/nolines_plus.gif
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/page.gif
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/plus.gif
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/plusbottom.gif
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/question.gif
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/star-node-empty.gif
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/star-node-minus.gif
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/star-node-plus.gif
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/trash.gif
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/star.js
   mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/treeandmenu.css
Modified:
   mediawiki-extensions/trunk/debian/changelog
   mediawiki-extensions/trunk/debian/control.in
   mediawiki-extensions/trunk/debian/mediawiki-extensions-base.links
   mediawiki-extensions/trunk/svn-revisions
Log:
Add TreeAndMenu extension (Closes: #645067)

Modified: mediawiki-extensions/trunk/debian/changelog
===================================================================
--- mediawiki-extensions/trunk/debian/changelog	2013-06-05 12:31:24 UTC (rev 461)
+++ mediawiki-extensions/trunk/debian/changelog	2013-06-11 11:05:06 UTC (rev 462)
@@ -1,3 +1,9 @@
+mediawiki-extensions (3.4) UNRELEASED; urgency=low
+
+  * Add TreeAndMenu extension (Closes: #645067)
+
+ -- Thorsten Glaser <tg at mirbsd.de>  Tue, 11 Jun 2013 13:03:56 +0200
+
 mediawiki-extensions (3.3) unstable; urgency=low
 
   * Upload to unstable

Modified: mediawiki-extensions/trunk/debian/control.in
===================================================================
--- mediawiki-extensions/trunk/debian/control.in	2013-06-05 12:31:24 UTC (rev 461)
+++ mediawiki-extensions/trunk/debian/control.in	2013-06-11 11:05:06 UTC (rev 462)
@@ -33,6 +33,7 @@
   * Polyglot             -- provide redirects based on user language
   * RSS_Reader           -- embed RSS feed content into a page
   * SpecialRenameuser    -- special page to rename users
+  * TreeAndMenu          -- dynamic dropdown and folder tree menus
  .
  These extensions are set together for the Debian mediawiki
  package, but they may also be used separately.

Modified: mediawiki-extensions/trunk/debian/mediawiki-extensions-base.links
===================================================================
--- mediawiki-extensions/trunk/debian/mediawiki-extensions-base.links	2013-06-05 12:31:24 UTC (rev 461)
+++ mediawiki-extensions/trunk/debian/mediawiki-extensions-base.links	2013-06-11 11:05:06 UTC (rev 462)
@@ -33,3 +33,5 @@
 usr/share/mediawiki-extensions/base/Renameuser/SpecialRenameuser.php etc/mediawiki-extensions/extensions-available/SpecialRenameuser.php
 usr/share/mediawiki-extensions/base/RSS_Reader var/lib/mediawiki/extensions/RSS_Reader
 usr/share/mediawiki-extensions/base/RSS_Reader/RSSReader.php etc/mediawiki-extensions/extensions-available/RSSReader.php
+usr/share/mediawiki-extensions/base/TreeAndMenu var/lib/mediawiki/extensions/TreeAndMenu
+usr/share/mediawiki-extensions/base/TreeAndMenu/TreeAndMenu.php etc/mediawiki-extensions/extensions-available/TreeAndMenu.php

Added: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/TreeAndMenu.i18n.magic.php
===================================================================
--- mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/TreeAndMenu.i18n.magic.php	                        (rev 0)
+++ mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/TreeAndMenu.i18n.magic.php	2013-06-11 11:05:06 UTC (rev 462)
@@ -0,0 +1,12 @@
+<?php
+/**
+ * Internationalization file for magic words.
+ */
+
+$magicWords = array();
+
+$magicWords['en'] = array(
+	'menu' => array( 0, 'menu' ),
+	'tree' => array( 0, 'tree' ),
+	'_tree' => array( 0, '_tree' ),
+);

Added: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/TreeAndMenu.i18n.php
===================================================================
--- mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/TreeAndMenu.i18n.php	                        (rev 0)
+++ mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/TreeAndMenu.i18n.php	2013-06-11 11:05:06 UTC (rev 462)
@@ -0,0 +1,202 @@
+<?php
+/**
+ * Internationalisation file for the TreeAndMenu extension.
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+$messages = array();
+
+/** English */
+$messages['en'] = array(
+	'treeandmenu-desc' => "Adds <code><nowiki>#tree</nowiki></code> and <code><nowiki>#menu</nowiki></code> parser functions which contain bullet-lists to be rendered as collapsible treeviews or dropdown menus.
+The treeviews use the [http://www.destroydrop.com/javascripts/tree dTree] JavaScript tree menu, and the dropdown menus use [http://www.htmldog.com/articles/suckerfish/dropdowns/ Son of Suckerfish]",
+);
+
+/** Message documentation (Message documentation)
+ * @author Purodha
+ */
+$messages['qqq'] = array(
+	'treeandmenu-desc' => '{{desc}}',
+);
+
+/** Asturian (asturianu)
+ * @author Xuacu
+ */
+$messages['ast'] = array(
+	'treeandmenu-desc' => "Amiesta les funciones d'analís <code><nowiki>#tree</nowiki></code> y <code><nowiki>#menu</nowiki></code>, que contienen llistes con asteriscos qu'apaecerán como vistes d'árbol contraíbles o menús estenderexables.
+Les vistes d'árbol usen el menú d'árbol JavaScript [http://www.destroydrop.com/javascripts/tree dTree], y los menús estenderexables usen [http://www.htmldog.com/articles/suckerfish/dropdowns/ Son of Suckerfish]",
+);
+
+/** Belarusian (Taraškievica orthography) (‪беларуская (тарашкевіца)‬)
+ * @author EugeneZelenko
+ * @author Renessaince
+ */
+$messages['be-tarask'] = array(
+	'treeandmenu-desc' => 'Дадае функцыі парсэру <code><nowiki>#tree</nowiki></code> і <code><nowiki>#menu</nowiki></code>, якія зьмяшчаюць маркіраваныя сьпісы, што могуць выводзіцца як разгортваемыя дрэвы або выпадаючыя мэню.
+Разгортваемыя дрэвы выкарыстоўваюць JavaScript [http://www.destroydrop.com/javascripts/tree dTree], а выпадаючыя мэню — [http://www.htmldog.com/articles/suckerfish/dropdowns/ Son of Suckerfish]',
+);
+
+/** German (Deutsch)
+ * @author Kghbln
+ */
+$messages['de'] = array(
+	'treeandmenu-desc' => 'Fügt die Parserfunktionen <code><nowiki>#tree</nowiki></code> und <code><nowiki>#menu</nowiki></code> hinzu, die Aufzählungslisten in Form einer Baumansicht ein- und ausklappbar machen oder als Aufklappmenü darstellen können.
+Die Baumansicht nutzt hierzu [http://www.destroydrop.com/javascripts/tree dTree] sowie das Aufklappmenü [http://www.htmldog.com/articles/suckerfish/dropdowns/ Son of Suckerfish]',
+);
+
+/** Lower Sorbian (dolnoserbski)
+ * @author Michawiki
+ */
+$messages['dsb'] = array(
+	'treeandmenu-desc' => 'Pśidawa parserowe funkcije <code><nowiki>#tree</nowiki></code> a <code><nowiki>#menu</nowiki></code>, kótarež zwobraznjaju nalicenja ako złožujobne bomowe naglědy abo padajuce menije.
+Bomowe naglědy wužywaju JavaScriptowy bomowy meni [http://www.destroydrop.com/javascripts/tree dTree] a padajuce menije wužywaju [http://www.htmldog.com/articles/suckerfish/dropdowns/ Son of Suckerfish]',
+);
+
+/** Spanish (español)
+ * @author Armando-Martin
+ */
+$messages['es'] = array(
+	'treeandmenu-desc' => 'Añade las funciones del analizador (parser) <code><nowiki>#tree</nowiki></code> y <code><nowiki>#menu</nowiki></code>, que contienen listas con viñetass que se renderizarán como árboles contraíbles o menús desplegables.
+Los árboles emplean un menú de [http://www.destroydrop.com/javascripts/árbol dTree] de JavaScript y los menús desplegables utilizan [http://www.htmldog.com/articles/suckerfish/dropdowns/ Son of Suckerfish]',
+);
+
+/** French (français)
+ * @author Gomoko
+ */
+$messages['fr'] = array(
+	'treeandmenu-desc' => "Ajoute les fonctions d'analyse <code><nowiki>#tree</nowiki></code> et <code><nowiki>#menu</nowiki></code> qui permettent aux listes à puces d'être rendues comme des arbres pliables ou des menus déroulants.
+Les arbres pliables utilisent le menu par arbre JavaScript [http://www.destroydrop.com/javascripts/tree dTree], et les menus déroulants utilisent [http://www.htmldog.com/articles/suckerfish/dropdowns/ Son of Suckerfish]",
+);
+
+/** Galician (galego)
+ * @author Toliño
+ */
+$messages['gl'] = array(
+	'treeandmenu-desc' => 'Endade as funcións analíticas <code><nowiki>#tree</nowiki></code> e <code><nowiki>#menu</nowiki></code>, que conteñen listas con asteriscos que se renderizarán como árbores contraíbles ou menús despregables.
+As árbores empregan o menú de árbore [http://www.destroydrop.com/javascripts/tree dTree] do JavaScript e os menús despregables usan [http://www.htmldog.com/articles/suckerfish/dropdowns/ Son of Suckerfish]',
+);
+
+/** Hebrew (עברית)
+ * @author Amire80
+ */
+$messages['he'] = array(
+	'treeandmenu-desc' => 'הוספת פונקציות המפענח <code dir="ltr"><nowiki>#tree</nowiki></code> ו־<code dir="ltr"><nowiki>#menu</nowiki></code> שמכילות רשימות תבליטים שיוצגו כעצים שאפשר לקפל או תפריטים נפתחים.
+תצוגת העץ משתמשת בתפריט [http://www.destroydrop.com/javascripts/tree dTree] והפתריטים המפתחים משתמשים ב־[http://www.htmldog.com/articles/suckerfish/dropdowns/ Son of Suckerfish]',
+);
+
+/** Upper Sorbian (hornjoserbsce)
+ * @author Michawiki
+ */
+$messages['hsb'] = array(
+	'treeandmenu-desc' => 'Přidawa parserowe funkcije <code><nowiki>#tree</nowiki></code> a <code><nowiki>#menu</nowiki></code>, kotrež naličenja jako fałdujomne štomowe napohlady abo padace menije zwobraznjeja.
+Štomowe napohlady wužiwaja JavaScriptowy štomowy meni [http://www.destroydrop.com/javascripts/tree dTree] a padace menije wužiwaja [http://www.htmldog.com/articles/suckerfish/dropdowns/ Son of Suckerfish]',
+);
+
+/** Interlingua (interlingua)
+ * @author McDutchie
+ */
+$messages['ia'] = array(
+	'treeandmenu-desc' => 'Adde le functiones analysator <code><nowiki>#tree</nowiki></code> e <code><nowiki>#menu</nowiki></code> le quales contine listas a punctos a presentar como vistas arborescente plicabile o menus disrolante.
+Le vistas arborescente usa le menu JavaScript arborescente [http://www.destroydrop.com/javascripts/tree dTree], e le menus disrolante usa [http://www.htmldog.com/articles/suckerfish/dropdowns/ Son of Suckerfish]',
+);
+
+/** Italian (italiano)
+ * @author Beta16
+ * @author Ximo17
+ */
+$messages['it'] = array(
+	'treeandmenu-desc' => 'Aggiunge le funzioni parser <code><nowiki>#tree</nowiki></code> e <code><nowiki>#menu</nowiki></code> che permettono di visualizzare gli elenchi puntati come menù ad albero o a discesa.
+Per i menù ad albero utilizza il menù [http://www.destroydrop.com/javascripts/tree dTree] di JavaScript, mentre per i menù a tendina utilizza [http://www.htmldog.com/articles/suckerfish/dropdowns/ Son of Suckerfish]',
+);
+
+/** Korean (한국어)
+ * @author 아라
+ */
+$messages['ko'] = array(
+	'treeandmenu-desc' => '축소 가능한 트리보기 또는 드롭 다운 메뉴로 표시하는 순서 없는 목록을 포함하는 <code><nowiki>#tree</nowiki></code>와 <code><nowiki>#menu</nowiki></code> 파서 함수를 추가.
+트리 보기는 [http://www.destroydrop.com/javascripts/tree dTree] 자바 스크립트 메뉴를 사용하고 드롭 다운 메뉴는 [http://www.htmldog.com/articles/suckerfish/dropdowns/ Son of Suckerfish]를 사용합니다.',
+);
+
+/** Colognian (Ripoarisch)
+ * @author Purodha
+ */
+$messages['ksh'] = array(
+	'treeandmenu-desc' => 'Deiht de Paaserfunkßjuhne <code lang="en">#tree</code> un <code lang="en">#menu</code> en et Wiki, woh mer Leste met Punkte als op- un zohklappbaa Bäum udder als Ußwahlleste zom erongerträcke aanzeije lohße kann.
+De Bäum bruche et <i lang="en">[http://www.destroydrop.com/javascripts/tree dTree]</i>-JavaSkrepp, un de Ußwahlleste zom erongerträcke bruche dä <i lang="en">[http://www.htmldog.com/articles/suckerfish/dropdowns/ Son of Suckerfish]</i>.',
+);
+
+/** Macedonian (македонски)
+ * @author Bjankuloski06
+ */
+$messages['mk'] = array(
+	'treeandmenu-desc' => 'Додава парсерски функции <code><nowiki>#tree</nowiki></code> и <code><nowiki>#menu</nowiki></code> што содржат списоци со потточки што ќе се прикажат како расклопни разгранети претстави или паѓачки менија or dropdown menus.
+Разгранетите претстави го користат стеблото [http://www.destroydrop.com/javascripts/tree dTree] од JavaScript, а паѓачките менија користат [http://www.htmldog.com/articles/suckerfish/dropdowns/ Son of Suckerfish]',
+);
+
+/** Malay (Bahasa Melayu)
+ * @author Anakmalaysia
+ */
+$messages['ms'] = array(
+	'treeandmenu-desc' => 'Membubuh fungsi penghurai <code><nowiki>#tree</nowiki></code> dan <code><nowiki>#menu</nowiki></code> yang mengandungi senarai berbulet untuk dipaparkan dalam bentuk paparan pepohon boleh lipat atau juntai bawah.
+Paparan pepohon menggunakan menu pepohon JavaScript [http://www.destroydrop.com/javascripts/tree dTree], sementara menu juntai bawah menggunakan [http://www.htmldog.com/articles/suckerfish/dropdowns/ Son of Suckerfish]',
+);
+
+/** Norwegian Bokmål (‪norsk (bokmål)‬)
+ * @author Event
+ */
+$messages['nb'] = array(
+	'treeandmenu-desc' => 'Legger til <code><nowiki>#tree-</nowiki></code> og <code><nowiki>#menu-</nowiki></code>parser-funksjoner som inneholder punktlister som fremstilles som sammenleggbare trevisninger eller nedtrekksmenyer.
+Trevisningene bruker [http://www.destroydrop.com/javascripts/tree dTree] JavaScript-tremenyen, mens nedtrekksmenyen bruker [http://www.htmldog.com/articles/suckerfish/dropdowns/ Son of Suckerfish]',
+);
+
+/** Dutch (Nederlands)
+ * @author Siebrand
+ */
+$messages['nl'] = array(
+	'treeandmenu-desc' => "Voegt de parserfuncties <code><nowiki>#tree</nowiki></code> en <code><nowiki>#menu</nowiki></code> toe die ervoor zorgen dat ongenummerde lijsten worden weergegeven als inklapbare boomstructuren of dropdownmenu's.
+Hiervoor worden de componenten [http://www.destroydrop.com/javascripts/tree dTree] en [http://www.htmldog.com/articles/suckerfish/dropdowns/ Son of Suckerfish] gebruikt",
+);
+
+/** Polish (polski)
+ * @author BeginaFelicysym
+ */
+$messages['pl'] = array(
+	'treeandmenu-desc' => 'Dodaje funkcje analizator składni <code><nowiki>#tree</nowiki></code> i <code><nowiki>#menu</nowiki></code>, które zawierają listy punktowane do wyświetlenia jako zwijanej drzewidoki lub menu rozwijane.
+Drzewidoki używają generowanych przez JavaScript menu drzewiastych [http://www.destroydrop.com/javascripts/tree dTree], a menu rozwijane wykorzystują [http://www.htmldog.com/articles/suckerfish/dropdowns/ Son of Suckerfish]',
+);
+
+/** Piedmontese (Piemontèis)
+ * @author Borichèt
+ * @author Dragonòt
+ */
+$messages['pms'] = array(
+	'treeandmenu-desc' => "A gionta le funsion d'anàlisi <code><nowiki>#tree</nowiki></code> e <code><nowiki>#menu</nowiki></code> ch'a conten-o liste ëd boton da visualisé com erbo strenzìbij o liste a ridò.
+J'erbo a deuvro ël la lista për erbo JavaScript [http://www.destroydrop.com/javascripts/tree dTree], e le liste a ridò a deuvro [http://www.htmldog.com/articles/suckerfish/dropdowns/ Son of Suckerfish]",
+);
+
+/** Portuguese (português)
+ * @author Hamilton Abreu
+ */
+$messages['pt'] = array(
+	'treeandmenu-desc' => 'Adiciona as funções do analisador sintáctico <code><nowiki>#tree</nowiki></code> e <code><nowiki>#menu</nowiki></code>, que contêm listas com marcadores, para serem apresentadas na forma de árvore recolhível ou menus descendentes.
+As árvores usam o menu árvore [http://www.destroydrop.com/javascripts/tree dTree] do JavaScript e os menus descendentes usam [http://www.htmldog.com/articles/suckerfish/dropdowns/ Son of Suckerfish]',
+);
+
+/** Russian (русский)
+ * @author Александр Сигачёв
+ */
+$messages['ru'] = array(
+	'treeandmenu-desc' => 'Добавляет функции парсера <code><nowiki>#tree</nowiki></code> и <code><nowiki>#menu</nowiki></code>, позволяющие выводить списки как раскрываемые деревья или выпадающие меню.
+Для раскрывающихся деревьев используется JavaScript-скрипт [http://www.destroydrop.com/javascripts/tree dTree], для выпадающих меню — [http://www.htmldog.com/articles/suckerfish/dropdowns/ Son of Suckerfish]',
+);
+
+/** Tagalog (Tagalog)
+ * @author AnakngAraw
+ */
+$messages['tl'] = array(
+	'treeandmenu-desc' => 'Nagdaragdag ng mga tungkuling pambanghay na <code><nowiki>#tree</nowiki></code> at <code><nowiki>#menu</nowiki></code> na naglalaman ng mga listahang napupungluan na ihaharap bilang isang nababaklas na mga tanawin ng puno o mga menu naibabagsak na paibaba.
+Ang mga tanawin ng puno ay gumagamit ng [http://www.destroydrop.com/javascripts/tree dTree] ng menu ng puno ng JavaScript, at ang mga menung naibabagsak paibaba ay gumagamit ng [http://www.htmldog.com/articles/suckerfish/dropdowns/ Anak na Lalaki ng Suckerfish]',
+);
+

Added: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/TreeAndMenu.php
===================================================================
--- mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/TreeAndMenu.php	                        (rev 0)
+++ mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/TreeAndMenu.php	2013-06-11 11:05:06 UTC (rev 462)
@@ -0,0 +1,259 @@
+<?php
+/**
+ * TreeAndMenu extension - Adds #tree and #menu parser functions for collapsible treeview's and dropdown menus
+ *
+ * See http://www.mediawiki.org/wiki/Extension:TreeAndMenu for installation and usage details
+ * See http://www.organicdesign.co.nz/Extension_talk:TreeAndMenu.php for development notes and disucssion
+ * 
+ * @file
+ * @ingroup Extensions
+ * @author Aran Dunkley [http://www.organicdesign.co.nz/nad User:Nad]
+ * @copyright © 2007 Aran Dunkley
+ * @licence GNU General Public Licence 2.0 or later
+ */
+
+if( !defined( 'MEDIAWIKI' ) ) die( 'Not an entry point.' );
+
+define( 'TREEANDMENU_VERSION','3.0.4, 2013-02-27' );
+
+// Tree defaults
+if( !isset( $wgTreeViewImages ) || !is_array( $wgTreeViewImages ) ) $wgTreeViewImages = array();
+$wgTreeViewShowLines = false;  // whether to render the dotted lines joining nodes
+
+$wgExtensionFunctions[] = 'wfSetupTreeAndMenu';
+$wgExtensionCredits['parserhook'][] = array(
+	'path'           => __FILE__,
+	'name'           => 'TreeAndMenu',
+	'author'         => array( '[http://www.organicdesign.co.nz/User:Nad Nad]', '[http://www.organicdesign.co.nz/User:Sven Sven]' ),
+	'url'            => 'http://www.mediawiki.org/wiki/Extension:TreeAndMenu',
+	'descriptionmsg' => 'treeandmenu-desc',
+	'version'        => TREEANDMENU_VERSION,
+);
+
+$dir = dirname( __FILE__ ) . '/';
+$wgExtensionMessagesFiles['TreeAndMenu'] = $dir . 'TreeAndMenu.i18n.php';
+$wgExtensionMessagesFiles['TreeAndMenuMagic'] = $dir . 'TreeAndMenu.i18n.magic.php';
+
+// @todo FIXME: Move classes out of init file.
+
+class TreeAndMenu {
+
+	var $version    = TREEANDMENU_VERSION;
+	var $uniq       = '';      // uniq part of all tree id's
+	var $uniqname   = 'tam';   // input name for uniqid
+	var $id         = '';      // id for specific tree
+	var $baseDir    = '';      // internal absolute path to treeview directory
+	var $baseUrl    = '';      // external URL to treeview directory (relative to domain)
+	var $images     = '';      // internal JS to update dTree images
+	var $useLines   = true;    // internal variable determining whether to render connector lines
+	var $args       = array(); // args for each tree
+
+	/**
+	 * Constructor
+	 */
+	function __construct() {
+		global $wgOut, $wgHooks, $wgParser, $wgJsMimeType, $wgExtensionAssetsPath, $wgResourceModules, $wgTreeViewImages, $wgTreeViewShowLines;
+
+global $wgDisableParserCache;
+$wgDisableParserCache = true;
+
+		// Add hooks
+		$wgParser->setFunctionHook( 'tree', array( $this, 'expandTreeAndMenu' ) );
+
+		// Update general tree paths and properties
+		$this->baseDir  = dirname( __FILE__ );
+		$this->baseUrl  = $wgExtensionAssetsPath . '/' . basename( dirname( __FILE__ ) );
+		$this->useLines = $wgTreeViewShowLines ? 'true' : 'false';
+		$this->uniq     = uniqid( $this->uniqname );
+
+		// Convert image titles to file paths and store as JS to update dTree
+		foreach( $wgTreeViewImages as $k => $v ) {
+			$image = wfLocalFile( $v );
+			$v = ( is_object( $image ) && $image->exists() ) ? $image->getURL() : $wgTreeViewImages[$k];
+			$this->images .= "tree.icon['$k'] = '$v';";
+		}
+
+		// Set up JavaScript and CSS resources
+		$wgResourceModules['ext.treeandmenu'] = array(
+			'styles'         => array( 'treeandmenu.css' ),
+			'localBasePath'  => dirname( __FILE__ ),
+			'remoteBasePath' => $this->baseUrl,
+		);
+		$wgOut->addModules( 'ext.treeandmenu' );
+		$wgOut->addHeadItem( 'treeBaseUrl', "<script type=\"$wgJsMimeType\">window.tamBaseUrl='{$this->baseUrl}'</script>\n" );
+		$wgOut->addHeadItem( 'dTree', "<script type=\"$wgJsMimeType\" src=\"{$this->baseUrl}/dtree.js\"></script>\n" );
+	}
+
+	/**
+	 * Expand either kind of parser-function (reformats tree rows for matching later) and store args
+	 */
+	public function expandTreeAndMenu( &$parser ) {
+		global $wgUser;
+		$args = func_get_args();
+		array_shift( $args );
+	
+		// Store args for this tree for later use
+		$text = '';
+		foreach( $args as $arg ) if ( preg_match( '/^(\\w+?)\\s*=\\s*(.+)$/s', $arg, $m ) ) $args[$m[1]] = $m[2]; else $text = $arg;
+
+		// If root, parse as wikitext
+		if( isset( $args['root'] ) ) {
+			$p = clone $parser;
+			$o = clone $parser->mOptions;
+			$o->mTidy = $o->mEnableLimitReport = false;
+			$html = $p->parse( $args['root'], $parser->mTitle, $o, false, true )->getText();
+			$args['root'] = addslashes( $html );
+		}
+
+		// Create a unique id for this tree or use id supplied in args and store args wrt id
+		$this->id = isset($args['id']) ? $args['id'] : uniqid( '' ) .'t';
+		$this->args[$this->id] = $args;
+
+		// Reformat tree rows
+		$text = preg_replace( '/(?<=\\*)\\s*\\[\\[Image:(.+?)\\]\\]/', "{$this->uniq}3$1{$this->uniq}4", $text );
+		$text = str_replace( '$', '\$', $text );
+		$text = preg_replace_callback( '/^(\\*+)(.*?)$/m', array( $this, 'formatRow' ), $text );
+
+		// Parse the structure
+		$psr = new Parser;
+		$opt = ParserOptions::newFromUser( $wgUser );
+		$html = $psr->parse( $text, $parser->mTitle, $opt, true, true )->getText();
+
+		// Do the final rendering
+		$html = $this->renderTreeAndMenu( $html );
+
+		// Hack to undo Parser::doBlockLevels adding <p>'s to the html
+		global $wgHooks;
+		$wgHooks['ParserBeforeTidy'][] = "TreeAndMenu::removeP";
+
+		return array( $html, 'isHTML' => true );
+	}
+
+	/**
+	 * Hack to undo Parser::doBlockLevels adding <p>'s to the html
+	 * - this will be called shortly after it's added in the parsing of the parser-function
+	 * - it removes itself from $wgHooks so it's only called once during the parse that installed it
+	 */
+	static function removeP( $parser, &$text ) {
+		global $wgHooks;
+		$tmp = array();
+		foreach( $wgHooks['ParserBeforeTidy'] as $hook ) {
+			if( $hook !== "TreeAndMenu::removeP" ) $tmp[] = $hook;
+		}
+		$wgHooks['ParserBeforeTidy'] = $tmp;
+		$text = preg_replace( "|</?p>|", "", $text );
+		return true;
+	}
+
+	/**
+	 * Reformat tree bullet structure recording row, depth and id in a format which is not altered by wiki-parsing
+	 * - format is: 1{uniq}-{id}-{depth}-{item}-2{uniq}
+	 * - sequences of this format will be matched in ParserAfterTidy and converted into dTree JavaScript
+	 * - NOTE: we can't encode a unique row-id because if the same tree instranscluded twice a cached version
+	 *         may be used (even if parser-cache disabled) this also means that tree id's may be repeated
+	 */
+	private function formatRow( $m ) {
+		return "~x7f1{$this->uniq}~x7f{$this->id}~x7f" . ( strlen( $m[1] )-1 ) . "~x7f$m[2]~x7f2{$this->uniq}";
+	}
+
+
+	/**
+	 * Called after parser has finished (ParserAfterTidy) so all transcluded parts can be assembled into final trees
+	 */
+	public function renderTreeAndMenu( $text ) {
+		global $wgJsMimeType, $wgOut;
+		$u = $this->uniq;
+
+
+		// Extract all the formatted tree rows in the page and if any, replace with dTree JavaScript
+		if( preg_match_all( "/~x7f1$u~x7f(.+?)~x7f([0-9]+)~x7f({$u}3(.+?){$u}4)?(.*?)(?=~x7f[12]$u)/", $text, $matches, PREG_SET_ORDER ) ) {
+
+			// PASS-1: build $rows array containing depth, and tree start/end information
+			$subs   = array( 1 => array() );
+			$rows   = array();
+			$depths = array( '' => 0 ); // depth of each tree root
+			$rootId = '';               // the id of the current root-tree (used as tree id in PASS2)
+			$lastId = '';
+			$lastDepth = 0;
+			foreach( $matches as $match ) {
+				list( , $id, $depth,, $icon, $item ) = $match;
+				$start = false;
+				if( $id != $lastId ) {
+					if( !isset( $depths[$id] ) ) $depths[$id] = $depths[$lastId]+$lastDepth;
+					if( $start = $rootId != $id && !in_array( $id, $subs[1] ) ) $depths[$rootId = $id] = 0;
+				}
+				if( $item ) $rows[] = array( $rootId, $depth + $depths[$id], $icon, addslashes( $item ), $start );
+				$lastId    = $id;
+				$lastDepth = $depth;
+			}
+
+			// PASS-2: build the JavaScript and replace into $text
+			$parents   = array(); // parent node for each depth
+			$parity    = array(); // keep track of odd/even rows for each depth
+			$node      = 0;
+			$last      = -1;
+			$nodes     = '';
+			$opennodes = array();
+			foreach( $rows as $i => $info ) {
+				$node++;
+				list( $id, $depth, $icon, $item, $start ) = $info;
+				$objid = $this->uniqname . preg_replace( '/\W/', '', $id );
+				$args  = $this->args[$id];
+				$end   = $i == count( $rows )-1 || $rows[$i+1][4];
+				if( !isset( $args['root'] ) ) $args['root'] = ''; // tmp - need to handle rootless trees
+				$openlevels = isset( $args['openlevels'] ) ? $args['openlevels']+1 : 0;
+				if( $start ) $node = 1;
+
+				// Append node script for this row
+				if( $depth > $last ) $parents[$depth] = $node-1;
+				$parent = $parents[$depth];
+				$nodes .= "$objid.add($node, $parent, '$item');\n";
+				if( $depth > 0 && $openlevels > $depth ) $opennodes[$parent] = true;
+				$last = $depth;
+
+				// Last row of current root, surround nodes dtree or menu script and div etc
+				if( $end ) {
+					$class = isset( $args['class'] ) ? $args['class'] : "dtree";
+					$add = isset( $args['root'] ) ? "tree.add(0,-1,'" . $args['root'] . "');" : '';
+					$top = $bottom = $root = $opennodesjs = '';
+					foreach( array_keys( $opennodes ) as $i ) $opennodesjs .= "$objid.o($i);";
+					foreach( $args as $arg => $pos )
+						if( ( $pos == 'top' || $pos == 'bottom' || $pos == 'root' ) && ( $arg == 'open' || $arg == 'close' ) )
+							$$pos .= "<a href=\"javascript: $objid.{$arg}All();\"> {$arg} all</a> ";
+					if( $top ) $top = "<p> $top</p>";
+					if( $bottom ) $bottom = "<p> $bottom</p>";
+
+					// Define the script to build this tree
+					$script = "tree = new dTree('$objid');
+						for (i in tree.icon) tree.icon[i] = '{$this->baseUrl}/'+tree.icon[i];{$this->images}
+						tree.config.useLines = {$this->useLines};
+						$add
+						$objid = tree;
+						$nodes
+						document.getElementById('$id').innerHTML = $objid.toString();
+						$opennodesjs
+						for(i in window.tamOnload_$objid) { window.tamOnload_{$objid}[i](); }";
+					$html = "$top<div class='$class' id='$id'></div>$bottom";
+					$html .= "<script type=\"$wgJsMimeType\">window.tamOnload_$objid=[];$script</script>";
+					$html = str_replace( '$', '\$', $html );
+					$text  = preg_replace( "/~x7f1$u~x7f$id~x7f.+?$/m", $html, $text, 1 ); // replace first occurrence of this trees root-id
+					$nodes = '';
+					$last  = -1;
+				}
+			}
+		}
+
+		// Remove all unreplaced row information
+		$html = preg_replace( "/~x7f1$u~x7f.+?[\\r\\n]+/m", '', $text );
+
+		return $html;
+	}
+}
+
+/**
+ * Called from $wgExtensionFunctions array when initialising extensions
+ */
+function wfSetupTreeAndMenu() {
+	global $wgTreeAndMenu;
+	$wgTreeAndMenu = new TreeAndMenu();
+}

Added: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/dtree.js
===================================================================
--- mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/dtree.js	                        (rev 0)
+++ mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/dtree.js	2013-06-11 11:05:06 UTC (rev 462)
@@ -0,0 +1,347 @@
+/*--------------------------------------------------|
+| dTree 2.05 | www.destroydrop.com/javascript/tree/ |
+|---------------------------------------------------|
+| Copyright (c) 2002-2003 Geir Landrö               |
+|                                                   |
+| This script can be used freely as long as all     |
+| copyright messages are intact.                    |
+|                                                   |
+| Updated: 17.04.2003                               |
+|--------------------------------------------------*/
+
+// Node object
+function Node(id, pid, name, url, title, target, icon, iconOpen, open) {
+	this.id = id;
+	this.pid = pid;
+	this.name = name;
+	this.url = url;
+	this.title = title;
+	this.target = target;
+	this.icon = icon;
+	this.iconOpen = iconOpen;
+	this._io = open || false;
+	this._is = false;
+	this._ls = false;
+	this._hc = false;
+	this._ai = 0;
+	this._p;
+};
+
+// Tree object
+function dTree(objName) {
+	this.config = {
+		target					: null,
+		folderLinks			: true,
+		useSelection		: true,
+		useCookies			: true,
+		useLines				: true,
+		useIcons				: true,
+		useStatusText		: false,
+		closeSameLevel	: false,
+		inOrder					: false
+	};
+	this.icon = {
+		root				: 'img/base.gif',
+		folder			: 'img/folder.gif',
+		folderOpen	: 'img/folderopen.gif',
+		node				: 'img/page.gif',
+		empty				: 'img/empty.gif',
+		line				: 'img/line.gif',
+		join				: 'img/join.gif',
+		joinBottom	: 'img/joinbottom.gif',
+		plus				: 'img/plus.gif',
+		plusBottom	: 'img/plusbottom.gif',
+		minus				: 'img/minus.gif',
+		minusBottom	: 'img/minusbottom.gif',
+		nlPlus			: 'img/nolines_plus.gif',
+		nlMinus			: 'img/nolines_minus.gif'
+	};
+	this.obj = objName;
+	this.aNodes = [];
+	this.aIndent = [];
+	this.root = new Node(-1);
+	this.selectedNode = null;
+	this.selectedFound = false;
+	this.completed = false;
+};
+
+// Adds a new node to the node array
+dTree.prototype.add = function(id, pid, name, url, title, target, icon, iconOpen, open) {
+	this.aNodes[this.aNodes.length] = new Node(id, pid, name, url, title, target, icon, iconOpen, open);
+};
+
+// Open/close all nodes
+dTree.prototype.openAll = function() {
+	this.oAll(true);
+};
+dTree.prototype.closeAll = function() {
+	this.oAll(false);
+};
+
+// Outputs the tree to the page
+dTree.prototype.toString = function() {
+	var str = '<div class="dtree">\n';
+	if (document.getElementById) {
+		if (this.config.useCookies) this.selectedNode = this.getSelected();
+		str += this.addNode(this.root);
+	} else str += 'Browser not supported.';
+	str += '</div>';
+	if (!this.selectedFound) this.selectedNode = null;
+	this.completed = true;
+	return str;
+};
+
+// Creates the tree structure
+dTree.prototype.addNode = function(pNode) {
+	var str = '';
+	var n=0;
+	if (this.config.inOrder) n = pNode._ai;
+	for (n; n<this.aNodes.length; n++) {
+		if (this.aNodes[n].pid == pNode.id) {
+			var cn = this.aNodes[n];
+			cn._p = pNode;
+			cn._ai = n;
+			this.setCS(cn);
+			if (!cn.target && this.config.target) cn.target = this.config.target;
+			if (cn._hc && !cn._io && this.config.useCookies) cn._io = this.isOpen(cn.id);
+			if (!this.config.folderLinks && cn._hc) cn.url = null;
+			if (this.config.useSelection && cn.id == this.selectedNode && !this.selectedFound) {
+					cn._is = true;
+					this.selectedNode = n;
+					this.selectedFound = true;
+			}
+			str += this.node(cn, n);
+			if (cn._ls) break;
+		}
+	}
+	return str;
+};
+
+// Creates the node icon, url and text
+dTree.prototype.node = function(node, nodeId) {
+	var str = '<div class="dTreeNode">' + this.indent(node, nodeId);
+	if (this.config.useIcons) {
+		if (!node.icon) node.icon = (this.root.id == node.pid) ? this.icon.root : ((node._hc) ? this.icon.folder : this.icon.node);
+		if (!node.iconOpen) node.iconOpen = (node._hc) ? this.icon.folderOpen : this.icon.node;
+		if (this.root.id == node.pid) {
+			node.icon = this.icon.root;
+			node.iconOpen = this.icon.root;
+		}
+		str += '<img id="i' + this.obj + nodeId + '" src="' + ((node._io) ? node.iconOpen : node.icon) + '" alt="" />';
+	}
+	if (node.url) {
+		str += '<a id="s' + this.obj + nodeId + '" class="' + ((this.config.useSelection) ? ((node._is ? 'nodeSel' : 'node')) : 'node') + '" href="' + node.url + '"';
+		if (node.title) str += ' title="' + node.title + '"';
+		if (node.target) str += ' target="' + node.target + '"';
+		if (this.config.useStatusText) str += ' onmouseover="window.status=\'' + node.name + '\';return true;" onmouseout="window.status=\'\';return true;" ';
+		if (this.config.useSelection && ((node._hc && this.config.folderLinks) || !node._hc))
+			str += ' onclick="javascript: ' + this.obj + '.s(' + nodeId + ');"';
+		str += '>';
+	}
+	else if ((!this.config.folderLinks || !node.url) && node._hc && node.pid != this.root.id)
+		str += '<a href="javascript: ' + this.obj + '.o(' + nodeId + ');" class="node">';
+	str += node.name;
+	if (node.url || ((!this.config.folderLinks || !node.url) && node._hc)) str += '</a>';
+	str += '</div>';
+	if (node._hc) {
+		str += '<div id="d' + this.obj + nodeId + '" class="clip" style="display:' + ((this.root.id == node.pid || node._io) ? 'block' : 'none') + ';">';
+		str += this.addNode(node);
+		str += '</div>';
+	}
+	this.aIndent.pop();
+	return str;
+};
+
+// Adds the empty and line icons
+dTree.prototype.indent = function(node, nodeId) {
+	var str = '';
+	if (this.root.id != node.pid) {
+		for (var n=0; n<this.aIndent.length; n++)
+			str += '<img src="' + ( (this.aIndent[n] == 1 && this.config.useLines) ? this.icon.line : this.icon.empty ) + '" alt="" />';
+		(node._ls) ? this.aIndent.push(0) : this.aIndent.push(1);
+		if (node._hc) {
+			str += '<a href="javascript: ' + this.obj + '.o(' + nodeId + ');"><img id="j' + this.obj + nodeId + '" src="';
+			if (!this.config.useLines) str += (node._io) ? this.icon.nlMinus : this.icon.nlPlus;
+			else str += ( (node._io) ? ((node._ls && this.config.useLines) ? this.icon.minusBottom : this.icon.minus) : ((node._ls && this.config.useLines) ? this.icon.plusBottom : this.icon.plus ) );
+			str += '" alt="" /></a>';
+		} else str += '<img src="' + ( (this.config.useLines) ? ((node._ls) ? this.icon.joinBottom : this.icon.join ) : this.icon.empty) + '" alt="" />';
+	}
+	return str;
+};
+
+// Checks if a node has any children and if it is the last sibling
+dTree.prototype.setCS = function(node) {
+	var lastId;
+	for (var n=0; n<this.aNodes.length; n++) {
+		if (this.aNodes[n].pid == node.id) node._hc = true;
+		if (this.aNodes[n].pid == node.pid) lastId = this.aNodes[n].id;
+	}
+	if (lastId==node.id) node._ls = true;
+};
+
+// Returns the selected node
+dTree.prototype.getSelected = function() {
+	var sn = this.getCookie('cs' + this.obj);
+	return (sn) ? sn : null;
+};
+
+// Highlights the selected node
+dTree.prototype.s = function(id) {
+	if (!this.config.useSelection) return;
+	var cn = this.aNodes[id];
+	if (cn._hc && !this.config.folderLinks) return;
+	if (this.selectedNode != id) {
+		if (this.selectedNode || this.selectedNode==0) {
+			eOld = document.getElementById("s" + this.obj + this.selectedNode);
+			eOld.className = "node";
+		}
+		eNew = document.getElementById("s" + this.obj + id);
+		eNew.className = "nodeSel";
+		this.selectedNode = id;
+		if (this.config.useCookies) this.setCookie('cs' + this.obj, cn.id);
+	}
+};
+
+// Toggle Open or close
+dTree.prototype.o = function(id) {
+	var cn = this.aNodes[id];
+	this.nodeStatus(!cn._io, id, cn._ls);
+	cn._io = !cn._io;
+	if (this.config.closeSameLevel) this.closeLevel(cn);
+	if (this.config.useCookies) this.updateCookie();
+};
+
+// Open or close all nodes
+dTree.prototype.oAll = function(status) {
+	for (var n=0; n<this.aNodes.length; n++) {
+		if (this.aNodes[n]._hc && this.aNodes[n].pid != this.root.id) {
+			this.nodeStatus(status, n, this.aNodes[n]._ls);
+			this.aNodes[n]._io = status;
+		}
+	}
+	if (this.config.useCookies) this.updateCookie();
+};
+
+// Opens the tree to a specific node
+dTree.prototype.openTo = function(nId, bSelect, bFirst) {
+	if (!bFirst) {
+		for (var n=0; n<this.aNodes.length; n++) {
+			if (this.aNodes[n].id == nId) {
+				nId=n;
+				break;
+			}
+		}
+	}
+	var cn=this.aNodes[nId];
+	if (cn.pid==this.root.id || !cn._p) return;
+	cn._io = true;
+	cn._is = bSelect;
+	if (this.completed && cn._hc) this.nodeStatus(true, cn._ai, cn._ls);
+	if (this.completed && bSelect) this.s(cn._ai);
+	else if (bSelect) this._sn=cn._ai;
+	this.openTo(cn._p._ai, false, true);
+};
+
+// Closes all nodes on the same level as certain node
+dTree.prototype.closeLevel = function(node) {
+	for (var n=0; n<this.aNodes.length; n++) {
+		if (this.aNodes[n].pid == node.pid && this.aNodes[n].id != node.id && this.aNodes[n]._hc) {
+			this.nodeStatus(false, n, this.aNodes[n]._ls);
+			this.aNodes[n]._io = false;
+			this.closeAllChildren(this.aNodes[n]);
+		}
+	}
+};
+
+// Closes all children of a node
+dTree.prototype.closeAllChildren = function(node) {
+	for (var n=0; n<this.aNodes.length; n++) {
+		if (this.aNodes[n].pid == node.id && this.aNodes[n]._hc) {
+			if (this.aNodes[n]._io) this.nodeStatus(false, n, this.aNodes[n]._ls);
+			this.aNodes[n]._io = false;
+			this.closeAllChildren(this.aNodes[n]);
+		}
+	}
+};
+
+// Change the status of a node(open or closed)
+dTree.prototype.nodeStatus = function(status, id, bottom) {
+	eDiv	= document.getElementById('d' + this.obj + id);
+	eJoin	= document.getElementById('j' + this.obj + id);
+	if (this.config.useIcons) {
+		eIcon	= document.getElementById('i' + this.obj + id);
+		eIcon.src = (status) ? this.aNodes[id].iconOpen : this.aNodes[id].icon;
+	}
+	eJoin.src = (this.config.useLines)?
+	((status)?((bottom)?this.icon.minusBottom:this.icon.minus):((bottom)?this.icon.plusBottom:this.icon.plus)):
+	((status)?this.icon.nlMinus:this.icon.nlPlus);
+	eDiv.style.display = (status) ? 'block': 'none';
+};
+
+
+// [Cookie] Clears a cookie
+dTree.prototype.clearCookie = function() {
+	var now = new Date();
+	var yesterday = new Date(now.getTime() - 1000 * 60 * 60 * 24);
+	this.setCookie('co'+this.obj, 'cookieValue', yesterday);
+	this.setCookie('cs'+this.obj, 'cookieValue', yesterday);
+};
+
+// [Cookie] Sets value in a cookie
+dTree.prototype.setCookie = function(cookieName, cookieValue, expires, path, domain, secure) {
+	document.cookie =
+		escape(cookieName) + '=' + escape(cookieValue)
+		+ (expires ? '; expires=' + expires.toGMTString() : '')
+		+ (path ? '; path=' + path : '')
+		+ (domain ? '; domain=' + domain : '')
+		+ (secure ? '; secure' : '');
+};
+
+// [Cookie] Gets a value from a cookie
+dTree.prototype.getCookie = function(cookieName) {
+	var cookieValue = '';
+	var posName = document.cookie.indexOf(escape(cookieName) + '=');
+	if (posName != -1) {
+		var posValue = posName + (escape(cookieName) + '=').length;
+		var endPos = document.cookie.indexOf(';', posValue);
+		if (endPos != -1) cookieValue = unescape(document.cookie.substring(posValue, endPos));
+		else cookieValue = unescape(document.cookie.substring(posValue));
+	}
+	return (cookieValue);
+};
+
+// [Cookie] Returns ids of open nodes as a string
+dTree.prototype.updateCookie = function() {
+	var str = '';
+	for (var n=0; n<this.aNodes.length; n++) {
+		if (this.aNodes[n]._io && this.aNodes[n].pid != this.root.id) {
+			if (str) str += '.';
+			str += this.aNodes[n].id;
+		}
+	}
+	this.setCookie('co' + this.obj, str);
+};
+
+// [Cookie] Checks if a node id is in a cookie
+dTree.prototype.isOpen = function(id) {
+	var aOpen = this.getCookie('co' + this.obj).split('.');
+	for (var n=0; n<aOpen.length; n++)
+		if (aOpen[n] == id) return true;
+	return false;
+};
+
+// If Push and pop is not implemented by the browser
+if (!Array.prototype.push) {
+	Array.prototype.push = function array_push() {
+		for(var i=0;i<arguments.length;i++)
+			this[this.length]=arguments[i];
+		return this.length;
+	}
+};
+if (!Array.prototype.pop) {
+	Array.prototype.pop = function array_pop() {
+		lastElement = this[this.length-1];
+		this.length = Math.max(this.length-1,0);
+		return lastElement;
+	}
+};

Added: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/base.gif
===================================================================
(Binary files differ)


Property changes on: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/base.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/cd.gif
===================================================================
(Binary files differ)


Property changes on: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/cd.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/empty.gif
===================================================================
(Binary files differ)


Property changes on: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/empty.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/folder.gif
===================================================================
(Binary files differ)


Property changes on: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/folder.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/folderopen.gif
===================================================================
(Binary files differ)


Property changes on: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/folderopen.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/globe.gif
===================================================================
(Binary files differ)


Property changes on: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/globe.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/imgfolder.gif
===================================================================
(Binary files differ)


Property changes on: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/imgfolder.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/join.gif
===================================================================
(Binary files differ)


Property changes on: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/join.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/joinbottom.gif
===================================================================
(Binary files differ)


Property changes on: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/joinbottom.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/line.gif
===================================================================
(Binary files differ)


Property changes on: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/line.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/minus.gif
===================================================================
(Binary files differ)


Property changes on: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/minus.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/minusbottom.gif
===================================================================
(Binary files differ)


Property changes on: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/minusbottom.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/musicfolder.gif
===================================================================
(Binary files differ)


Property changes on: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/musicfolder.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/nolines_minus.gif
===================================================================
(Binary files differ)


Property changes on: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/nolines_minus.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/nolines_plus.gif
===================================================================
(Binary files differ)


Property changes on: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/nolines_plus.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/page.gif
===================================================================
(Binary files differ)


Property changes on: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/page.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/plus.gif
===================================================================
(Binary files differ)


Property changes on: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/plus.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/plusbottom.gif
===================================================================
(Binary files differ)


Property changes on: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/plusbottom.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/question.gif
===================================================================
(Binary files differ)


Property changes on: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/question.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/star-node-empty.gif
===================================================================
(Binary files differ)


Property changes on: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/star-node-empty.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/star-node-minus.gif
===================================================================
(Binary files differ)


Property changes on: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/star-node-minus.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/star-node-plus.gif
===================================================================
(Binary files differ)


Property changes on: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/star-node-plus.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/trash.gif
===================================================================
(Binary files differ)


Property changes on: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/img/trash.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/star.js
===================================================================
--- mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/star.js	                        (rev 0)
+++ mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/star.js	2013-06-11 11:05:06 UTC (rev 462)
@@ -0,0 +1,261 @@
+/**
+ * Initalise bullet lists with class "tam-star"
+ */
+window.stars = [];
+$( function() {
+	$('div.tam-star').each( function() {
+		var tree = $(this);
+		var root = 'starnode' + window.stars.length;
+		var w = window.star_config.width;
+		var h = window.star_config.height;
+		tree.html( '<ul><li><a href="/">' + window.star_config.root + '</a>' + tree.html() + '</li></ul>' ).css({
+			width: w,
+			height: h
+		});
+		$('ul', tree).css('list-style','none');
+
+		if( window.star_config.spokes ) tree.append(
+			'<svg xmlns="http://www.w3.org/2000/svg" version="1.1" id="spokes" width="' + w + '" height="' + h + '">'
+		);
+
+		// Change all the bullet list li's content into star nodes (divs with an image, a spoke and the li content)
+		$('a', this).each( function() {
+			var a = $(this);
+			var img = window.tamBaseUrl + window.star_config.img_leaf;
+			a.wrap('div').css({
+				padding: 0,
+				margin: 0,
+				'background-image': 'none',
+				color: 'black',
+			});
+			var div = a.parent();
+			div.attr('class','starnode').html( '<div><img src="' + img + '" /></div>' + div.html() ).css({
+				'text-align': 'center',
+				position: 'absolute',
+				display: 'none'
+			});
+		});
+
+		// Position all the nodes and add their animation events
+		$('div.starnode', this).each( function() {
+			var e = $(this);
+
+			// Allow all nodes to access tree root data
+			var root;
+
+			// Get the depth of this element
+			var li = e.parent();
+			var d = 0;
+			while( li[0].tagName == 'LI' ) {
+				li = li.parent().parent();
+				d++;
+			}
+
+			// Get the parent <a> or <div> and add item to parents children
+			var p = e.parent().parent().parent();
+			if( d > 1 ) {
+				p = p.children().first();
+				$('img', p).attr('src', window.tamBaseUrl + window.star_config.img_node);
+				var pdata = getData(p);
+				pdata.children.push(e);
+				root = pdata.root;
+
+				// Set initial position to parent
+				var ox = p.position().left + p.width() / 2;
+				var oy = p.position().top + p.height() / 2;
+				e.css({
+					left: ox - e.width() / 2,
+					top: oy - e.height() / 2
+				});
+			}
+
+			// If root, initialise the commonly accessible root data
+			else {
+				var div = e.parent().parent().parent();
+				root = {
+					x: div.width() / 2,
+					y: div.height() / 2,
+					openDepth: 0
+				};
+			}
+
+			// Add spoke for this node
+			var spoke = false;
+			if( window.star_config.spokes ) {
+				var spoke = document.createElementNS('http://www.w3.org/2000/svg', 'line');
+				spoke.setAttribute('x1',0);
+				spoke.setAttribute('y1',0);
+				spoke.setAttribute('x2',0);
+				spoke.setAttribute('y2',0);
+				spoke.setAttribute('style', 'stroke: rgb(128,128,255); stroke-width: 1');
+				document.getElementById('spokes').appendChild(spoke);
+			}
+
+			// Create a unique ID and persistent data for this element
+			e.attr('id', 'starnode' + window.stars.length);
+			window.stars.push( {
+				root: root,
+				children: [],
+				parent: p,
+				depth: d,
+				open: false,
+				anim: false,
+				spoke: spoke
+			});
+
+			// Set a callback to open or close the node when clicked
+			e.click( function() { animateNode(this); });
+		});
+
+		// Make the root node visible
+		var e = $('#'+root);
+		e.css({
+			display: 'block',
+			left: window.star_config.crumbsy - e.width() / 2,
+			top: window.star_config.crumbsy - e.height() / 2
+		});
+	});
+});
+
+// Animate the passed node and its children from it's current state to the opposite state
+function animateNode(node) {
+	var e = $(node);
+	var data = getData(e);
+	if( data.children.length > 0 ) e.animate( { t: 100 }, {
+		duration: window.star_config.duration,
+		easing: window.star_config.easing,
+		step: function(now, fx) {
+			var t = fx.pos;
+			var e = $(fx.elem);
+			var data = getData(e);
+			var root = data.root;
+			var display = 'block';
+			var o = t * window.star_config.out_spin;
+			var d = data.depth;
+
+			// Set node state as animating
+			data.anim = true;
+
+			// Hide the labels during animation
+			var col = t < 0.9 ? 'white' : 'black';
+
+			// Set initial origin for the children to this elements center
+			var ox = e.position().left + e.width() / 2;
+			var oy = e.position().top + e.height() / 2;
+
+			// If closing, flip t, and move to depth position in crumbs area
+			if( data.open ) {
+
+				// At start of close sequence, change icon to "plus" and set crumbs to parent crumbs state
+				if( fx.pos == 0 ) {
+					$('img', e).attr('src', window.tamBaseUrl + window.star_config.img_node);
+				}
+
+				// Hide node at end of animation
+				if( t > 0.9 ) display = 'none';
+
+				// Animate the circle's center to the crumbs
+				if( root.openDepth >= d ) {
+					ox += ( window.star_config.crumbsx + ( d - 1 ) * ( e.width() + 50 ) - ox ) * t;
+					oy += ( window.star_config.crumbsy - oy ) * t;
+				}
+
+				// animate to parents location
+				else {
+					ox += ( root.x - ox ) * t;
+					oy += ( root.y - oy ) * t;
+				}
+
+				// Set the angle and radius to match the final opening's state
+				o = window.star_config.out_spin + t * window.star_config.in_spin;
+				t = 1 - t;
+			}
+
+			// If opening,
+			else {
+
+				// At start of open sequence,
+				if( fx.pos == 0 ) {
+
+					// Record depth of currently open node
+					root.openDepth = d;
+
+					// Change icon to "minus"
+					$('img', e).attr('src', window.tamBaseUrl + window.star_config.img_open);
+
+					// Set any open non-animating nodes to begin closing
+					for( var i = 0; i < window.stars.length; i++ ) {
+						var id = 'starnode' + i;
+						if( id != e.attr('id') ) {
+							var ndata = window.stars[i];
+							if( ndata.open && !ndata.anim ) animateNode($('#'+id));
+						}
+					}
+				}
+
+				// Animate the circle's center to the root center
+				ox += ( root.x - ox ) * t;
+				oy += ( root.y - oy ) * t;
+			}
+
+			// Position the node at the current origin
+			e.css({
+				display: 'block',
+				left: ox - e.width() / 2,
+				top: oy - e.height() / 2
+			});
+
+			// Position the children to their locations around the origin
+			var n = data.children.length;
+			var k = Math.PI * 2 / n;
+			var r = t * n * window.star_config.radius;
+			for( var i in data.children ) {
+				var child = data.children[i];
+				var cdata = getData(child);
+
+				// Update this childs node position
+				var a = k * i + o;
+				var x = Math.cos(a) * r;
+				var y = Math.sin(a) * r;
+				child.css({
+					display: display,
+					left: ox + x - child.width() / 2,
+					top: oy + y - child.height() / 2,
+					color: col
+				});
+
+				// Update this childs spoke position
+				var spoke = cdata.spoke;
+				if( spoke ) {
+					if( display == 'none' ) $(spoke).attr({ x1: 0, y1: 0, x2: 0, y2: 0 });
+					else $(spoke).attr({
+						x1: ox,
+						y1: oy - window.star_config.spokev,
+						x2: ox + x,
+						y2: oy + y - window.star_config.spokev
+					})
+				}
+			}
+		},
+
+		// Toggle the status on completion
+		complete: function() {
+			var e = $(this);
+			var data = getData(e);
+			var root = data.root;
+
+			// Toggle open state
+			data.open = !data.open;
+
+			// Set state to not animating
+			data.anim = false;
+		}
+	});
+}
+
+/**
+ * Return the passed star node elements data array
+ */
+function getData(e) {
+	return window.stars[e.attr('id').substr(8)];
+}

Added: mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/treeandmenu.css
===================================================================
--- mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/treeandmenu.css	                        (rev 0)
+++ mediawiki-extensions/trunk/dist/mediawiki-extensions-base/usr/share/mediawiki-extensions/base/TreeAndMenu/treeandmenu.css	2013-06-11 11:05:06 UTC (rev 462)
@@ -0,0 +1,123 @@
+/**
+ * Tree view styles
+ * dTree 2.05 - www.destroydrop.com/javascript/tree/
+ * Copyright (c) 2002-2003 Geir Landrö
+ */
+.dtree {
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 11px;
+	color: #666;
+	white-space: nowrap;
+}
+.dtree img {
+	border: 0px;
+	vertical-align: middle;
+}
+.dTreeNode { height: 18px }
+.dtree a {
+	color: black;
+	text-decoration: none;
+}
+.dtree a.node, .dtree a.nodeSel {
+	white-space: nowrap;
+	padding: 1px 2px 1px 2px;
+}
+.dtree a:hover, .dtree a.node:hover, .dtree a.nodeSel:hover {
+	color: black;
+	text-decoration: underline;
+}
+.dtree a.nodeSel {
+	background-color: #c0d2ec;
+}
+.dtree .clip {
+	overflow: hidden;
+	padding-bottom: 1px;
+}
+
+/**
+ * Dynamic menu styles
+ */
+.dmenu {
+	width: 180px;
+}
+.dmenu, .dmenu ul {
+	padding: 0;
+	margin: 0;
+	list-style: none;
+}
+.dmenu .selflink {
+	font-weight: normal;
+}
+.dmenu li {
+	position: relative;
+	float: left;
+	width: 172px;
+	padding: 4px;
+	z-index: 100;
+}
+.dmenu li,
+.dmenu li.even a,
+.dmenu li.odd a,
+.dmenu li li,
+.dmenu li li a,
+.dmenu li li li,
+.dmenu li li li a {
+	color : black;
+}
+.dmenu li li {
+	margin: 0;
+}
+.dmenu li ul {
+	position: absolute;
+	left: -999em;
+	z-index: 101;
+	border: 1px solid #ccc;
+}
+.dmenu li ul ul {
+	position: absolute;
+	left: -999em;
+	margin: 0 0 0 0;
+	z-index: 102;
+}
+.dmenu li.odd .submenu {
+	width: 12px;
+	height: 15px;
+	float: right;
+	background: url(/wiki/skins/common/images/Arr_r.png) 0 3px no-repeat;
+}
+.dmenu li.even .submenu {
+	width: 12px;
+	height: 15px;
+	float: right;
+	background: url(/wiki/skins/common/images/Arr_r.png) 0 3px no-repeat;
+}
+.dmenu li.odd {
+	background: #E9EDF4;
+	border: 2px solid #E9EDF4;
+}
+.dmenu li.even {
+	background: #D0D8E8;
+	border: 2px solid #D0D8E8;
+}
+.dmenu li:hover, .dmenu li.sfhover {
+	border: 2px solid #385D8A;
+}
+.dmenu li:hover ul ul,
+.dmenu li:hover ul ul ul,
+.dmenu li.sfhover ul ul,
+.dmenu li.sfhover ul ul ul {
+	left: -999em;
+}
+.dmenu li:hover ul,
+.dmenu li li:hover ul,
+.dmenu li li li:hover ul,
+.dmenu li.sfhover ul,
+.dmenu li li.sfhover ul,
+.dmenu li li li.sfhover ul {
+	left: 182px;
+	top: -3px;
+}
+
+/**
+ * Star menu styles
+ */

Modified: mediawiki-extensions/trunk/svn-revisions
===================================================================
--- mediawiki-extensions/trunk/svn-revisions	2013-06-05 12:31:24 UTC (rev 461)
+++ mediawiki-extensions/trunk/svn-revisions	2013-06-11 11:05:06 UTC (rev 462)
@@ -209,3 +209,10 @@
 svn://svn.debian.org/svn/pkg-mediawiki/unversioned/RSS_Reader/RSSReader.css - RSS_Reader - base - usr/share - no - 157
 svn://svn.debian.org/svn/pkg-mediawiki/unversioned/RSS_Reader/RSSReader.php - RSS_Reader - base - usr/share - yes - 418
 svn://svn.debian.org/svn/pkg-mediawiki/unversioned/RSS_Reader/lastRSS.php - RSS_Reader - base - usr/share - no - 156
+http://extensions.organicdesign.co.nz/svn/extensions/TreeAndMenu/TreeAndMenu.i18n.magic.php - TreeAndMenu - base - usr/share - no - 1388
+http://extensions.organicdesign.co.nz/svn/extensions/TreeAndMenu/TreeAndMenu.i18n.php - TreeAndMenu - base - usr/share - no - 1242
+http://extensions.organicdesign.co.nz/svn/extensions/TreeAndMenu/TreeAndMenu.php - TreeAndMenu - base - usr/share - yes - 1609
+http://extensions.organicdesign.co.nz/svn/extensions/TreeAndMenu/dtree.js - TreeAndMenu - base - usr/share - no - 1242
+http://extensions.organicdesign.co.nz/svn/extensions/TreeAndMenu/img/ - TreeAndMenu - base - usr/share - no - 1242
+http://extensions.organicdesign.co.nz/svn/extensions/TreeAndMenu/star.js - TreeAndMenu - base - usr/share - no - 1242
+http://extensions.organicdesign.co.nz/svn/extensions/TreeAndMenu/treeandmenu.css - TreeAndMenu - base - usr/share - no - 1242




More information about the Pkg-mediawiki-commits mailing list