ListMenu.class.php (3490B)
1 <?php 2 // --------------------------------------------------------------------------- 3 // $Id$ 4 // --------------------------------------------------------------------------- 5 // OpenRat Content Management System 6 // Copyright (C) 2002 Jan Dankert, jandankert@jandankert.de 7 // 8 // This program is free software; you can redistribute it and/or 9 // modify it under the terms of the GNU General Public License 10 // as published by the Free Software Foundation; either version 2 11 // of the License, or (at your option) any later version. 12 // 13 // This program is distributed in the hope that it will be useful, 14 // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 // GNU General Public License for more details. 17 // 18 // You should have received a copy of the GNU General Public License 19 // along with this program; if not, write to the Free Software 20 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 21 // --------------------------------------------------------------------------- 22 // $Log$ 23 // Revision 1.1 2005-01-28 23:06:10 dankert 24 // Neues Menue in Listenform (HTML-Listen), aehnlich "BlockMenu" 25 // 26 // Revision 1.2 2004/12/25 21:05:14 dankert 27 // erbt von Klasse Dynamic 28 // 29 // Revision 1.1 2004/10/14 21:16:12 dankert 30 // Erzeugen eines Menues in Bloecken 31 // 32 // --------------------------------------------------------------------------- 33 use cms\model\Folder; 34 use cms\model\BaseObject; 35 36 37 /** 38 * Erstellen eines Hauptmenues 39 * @author Jan Dankert 40 */ 41 class ListMenu extends Macro 42 { 43 /** 44 * Bitte immer alle Parameter in dieses Array schreiben, dies ist fuer den Web-Developer hilfreich. 45 * @type String 46 */ 47 var $parameters = Array( 48 'arrowChar'=>'String between menu entries, default: "·"' 49 ); 50 51 52 var $arrowChar = ' · '; 53 54 /** 55 * Bitte immer eine Beschreibung benutzen, dies ist fuer den Web-Developer hilfreich. 56 * @type String 57 */ 58 var $description = 'Creates a main menu.'; 59 var $version = '$Id$'; 60 var $api; 61 62 // Erstellen des Hauptmenues 63 function execute() 64 { 65 // Erstellen des Hauptmenues 66 67 // Lesen des Root-Ordners 68 $folder = new Folder( $this->getRootObjectId() ); 69 70 // Schleife ueber alle Inhalte des Root-Ordners 71 foreach( $folder->getObjectIds() as $id ) 72 { 73 $o = new BaseObject( $id ); 74 $o->languageid = $this->page->languageid; 75 $o->load(); 76 if ( $o->isFolder ) // Nur wenn Ordner 77 { 78 $f = new Folder( $id ); 79 $f->load(); 80 81 // Ermitteln eines Objektes mit dem Dateinamen index 82 // $oid = $f->getObjectIdByFileName('index'); 83 84 if ( count($f->getLinks())+count($f->getPages()) > 0 ) 85 { 86 $this->output( '<h1 class="title">'.$o->name.'</h1><ul>'); 87 // Untermenue 88 // Schleife ber alle Objekte im aktuellen Ordner 89 foreach( $f->getObjectIds() as $xid ) 90 { 91 $o = new BaseObject( $xid ); 92 $o->languageid = $this->page->languageid; 93 $o->load(); 94 95 // Nur Seiten und Verknuepfungen anzeigen 96 if (!$o->isPage && !$o->isLink && !$o->isUrl ) continue; 97 98 // Wenn aktuelle Seite, dann markieren, sonst Link 99 if ( $this->getObjectId() == $xid ) 100 { 101 // aktuelle Seite 102 $this->output( '<li class="menu">'.$o->name.'</li>' ); 103 } 104 else 105 { 106 $this->output( '<li class="menu"><a class="menu" href="'.$this->pathToObject($xid).'">'.$o->name.'</a></li>' ); 107 } 108 } 109 110 $this->output( '</ul><br />' ); 111 } 112 } 113 } 114 } 115 }