Project

General

Profile

« Previous | Next » 

Revision 20

Added by stefan over 18 years ago

Rewrote menu function. Parameters are now given as attributes to frontend class.

View differences:

class.frontend.php
322 322
		}
323 323
	}
324 324
	
325
	function menu($menu_number = 1, $start_level=0, $recurse = -1, $collapse = true, $item_template = '<li><span[class]>[a][menu_title][/a]</span>', $item_footer = '</li>', $menu_header = '<ul>', $menu_footer = '</ul>', $default_class = ' class="menu_default"', $current_class = ' class="menu_current"', $parent = 0) {
326
	   global $database;
327
	   if ($recurse==0)
328
	       return;
325
	function menu() {
326
	   if (!isset($this->menu_number)) {
327
	   	$this->menu_number = 1;
328
	   }
329
	   if (!isset($this->menu_start_level)) {
330
	   	$this->menu_start_level = 0;
331
	   }
332
	   if (!isset($this->menu_recurse)) {
333
	   	$this->menu_recurse = -1;
334
	   }
335
	   if (!isset($this->menu_collapse)) {
336
	   	$this->menu_collapse = true;
337
	   }
338
	   if (!isset($this->menu_item_template)) {
339
	   	$this->menu_item_template = '<li><span[class]>[a][menu_title][/a]</span>';
340
	   }
341
	   if (!isset($this->menu_item_footer)) {
342
	   	$this->menu_item_footer = '</li>';
343
	   }
344
	   if (!isset($this->menu_header)) {
345
	   	$this->menu_header = '<ul>';
346
	   }
347
	   if (!isset($this->menu_footer)) {
348
	   	$this->menu_footer = '<ul>';
349
	   }
350
	   if (!isset($this->menu_default_class)) {
351
	   	$this->menu_default_class = ' class="menu_default"';
352
	   }
353
	   if (!isset($this->menu_current_class)) {
354
	   	$this->menu_current_class = ' class="menu_current"';
355
	   }
356
       if (!isset($this->menu_parent)) {
357
     	$this->menu_parent = 0;
358
	   }
359
	   $this->show_menu();
329 360
	   if ($start_level>0) {
330 361
	       $key_array=array_keys($this->page_trail);
331 362
	       $real_start=$key_array[$start_level-1];
332 363
	       if (isset($real_start))
333 364
	       {
334
	          menu($menu_number, 0, $recurse,$collapse,$item_template, $item_footer, $menu_header, $menu_footer, $default_class, $current_class, $real_start);
335
	      }
365
	       		$this->menu_parent=$real_start;
366
	          $this->show_menu();
367
	       }
336 368
	       return;
337 369
	   }
370

  
371
	}
372
	
373
	function show_menu() {
374
	   global $database;
375
	   if ($this->menu_recurse==0)
376
	       return;
338 377
	   // Check if we should add menu number check to query
339
	   if($parent == 0) {
340
	       $menu_number = "menu = '$menu_number'";
378
	   if($menu_parent == 0) {
379
	       $menu_number = "menu = '$this->menu_number'";
341 380
	   } else {
342 381
	      $menu_number = '1';
343 382
	   }
344 383
	   // Query pages
345 384
	   $query_menu = $database->query("SELECT page_id,menu_title,page_title,link,target,level,visibility$this->extra_sql FROM ".
346
	TABLE_PREFIX."pages WHERE parent = '$parent' AND $menu_number AND $this->extra_where_sql ORDER BY position ASC");
385
	TABLE_PREFIX."pages WHERE parent = '$this->menu_parent' AND $menu_number AND $this->extra_where_sql ORDER BY position ASC");
347 386
	   // Check if there are any pages to show
348 387
	   if($query_menu->numRows() > 0) {
349
	      // Print menu header
350
	      echo "\n".$menu_header;
388
	   	  // Print menu header
389
	   	  echo "\n".$this->menu_header;
351 390
	      // Loop through pages
352 391
	      while($page = $query_menu->fetchRow()) {
353
	         // Check if this page should be shown
392
	      	 // Check if this page should be shown
354 393
	         // Create vars
355 394
	         $vars = array('[class]','[a]', '[/a]', '[menu_title]', '[page_title]');
356 395
	         // Work-out class
357 396
	         if($page['page_id'] == PAGE_ID) {
358
	            $class = $current_class;
397
	            $class = $this->menu_current_class;
359 398
	         } else {
360
	            $class = $default_class;
399
	            $class = $this->menu_default_class;
361 400
	         }
362 401
	         // Check if link is same as first page link, and if so change to WB URL
363
	         if($page['link'] == $default_link AND !INTRO_PAGE) {
402
	         if($page['link'] == $this->default_link AND !INTRO_PAGE) {
364 403
	            $link = WB_URL;
365 404
	         } else {
366
	            $link = page_link($page['link']);
405
	            $link = $this->page_link($page['link']);
367 406
	         }
368 407
	         // Create values
369 408
	         $values = array($class,'<a href="'.$link.'" target="'.$page['target'].'" '.$class.'>', '</a>', stripslashes($page['menu_title']), stripslashes($page['page_title']));
370 409
	         // Replace vars with value and print
371
	         echo "\n".str_replace($vars, $values, $item_template);
410
	         echo "\n".str_replace($vars, $values, $this->menu_item_template);
372 411
	         // Generate sub-menu
373
	         if($collapse==false OR ($collapse==true AND isset($this->page_trail[$page['page_id']]))) {
374
	            $this->menu($menu_number, 0, $recurse-1, $collapse, $item_template, $item_footer, $menu_header, $menu_footer, $default_class, $current_class, $page['page_id']);
412
	         if($this->menu_collapse==false OR ($this->menu_collapse==true AND isset($this->page_trail[$page['page_id']]))) {
413
	            $this->menu_recurse--;
414
	            $this->menu_parent=$page['page_id'];
415
	            $this->show_menu();
375 416
	         }
376
	         echo "\n".$item_footer;
417
	         echo "\n".$this->menu_item_footer;
377 418
	      }
378 419
	      // Print menu footer
379
	      echo "\n".$menu_footer;
420
	      echo "\n".$this->menu_footer;
380 421
	   }
381 422
	}
382 423

  

Also available in: Unified diff