Sitemap.class.php (3282B)
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.2 2004-12-28 22:57:56 dankert 24 // Korrektur Vererbung, "api" ausgebaut 25 // 26 // Revision 1.1 2004/10/14 21:15:29 dankert 27 // Erzeugen und Anzeigen einer Sitemap 28 // 29 // --------------------------------------------------------------------------- 30 use cms\model\Folder; 31 use cms\model\BaseObject; 32 use cms\model\Page; 33 34 35 /** 36 * Erstellen eines Menues 37 * @author Jan Dankert 38 */ 39 class Sitemap extends Macro 40 { 41 /** 42 * Bitte immer alle Parameter in dieses Array schreiben, dies ist fuer den Web-Developer hilfreich. 43 * @type String 44 */ 45 var $parameters = Array( 46 'beforeEntry'=>'Chars before an active menu entry' 47 ); 48 49 /** 50 * Bitte immer eine Beschreibung benutzen, dies ist fuer den Web-Developer hilfreich. 51 * @type String 52 */ 53 var $description = 'Creates a main menu.'; 54 55 56 /** 57 * Zeichenkette, die vor einem aktiven Menuepunkt gezeigt wird 58 */ 59 var $beforeEntry = '<li><strong>'; 60 var $afterEntry = '</strong></li>'; 61 62 var $api; 63 64 /** 65 * Erstellen einer Sitemap 66 */ 67 function execute() 68 { 69 // Erstellen eines Untermenues 70 71 // Ermitteln der aktuellen Seite 72 $thispage = new Page( $this->getObjectId() ); 73 $thispage->load(); // Seite laden 74 75 // uebergeordneter Ordner dieser Seite 76 $this->showFolder( $this->getRootObjectId() ); 77 } 78 79 function showFolder( $oid ) 80 { 81 // uebergeordneter Ordner dieser Seite 82 $f = new Folder( $oid ); 83 84 // Schleife ueber alle Objekte im aktuellen Ordner 85 foreach( $f->getObjectIds() as $id ) 86 { 87 $o = new BaseObject( $id ); 88 $o->languageid = $this->page->languageid; 89 $o->load(); 90 91 // Ordner 92 if ($o->isFolder ) 93 { 94 $this->output( '<li><strong>'.$o->name.'</strong><br/>' ); 95 $this->output( '<ul>' ); 96 $this->showFolder( $id ); // Rekursiver Aufruf dieser Methode 97 $this->output( '</ul></li>' ); 98 } 99 100 // Seiten und Verkn?fpungen 101 if ($o->isPage || $o->isLink ) 102 { 103 // Wenn aktuelle Seite, dann markieren, sonst Link 104 if ( $this->getObjectId() == $id ) 105 { 106 // aktuelle Seite 107 $this->output( '<li><strong>'.$o->name.'</strong></li>' ); 108 } 109 else 110 { 111 // Link erzeugen 112 $this->output( '<li><a href="'.$this->pathToObject($id).'">'.$o->name.'</a></li>' ); 113 } 114 } 115 } 116 } 117 } 118 119 ?>