Dotclear

source: plugins/simpleMenu/_public.php @ 2662:87748fd865ef

Revision 2662:87748fd865ef, 3.8 KB checked in by franck <carnet.franck.paul@…>, 12 years ago (diff)

New rendering method (renderTitle) for widget title, fixes #1827

RevLine 
[532]1<?php
2# -- BEGIN LICENSE BLOCK ---------------------------------------
3#
4# This file is part of Dotclear 2.
5#
[1179]6# Copyright (c) 2003-2013 Olivier Meunier & Association Dotclear
[532]7# Licensed under the GPL version 2.0 license.
8# See LICENSE file or
9# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
10#
11# -- END LICENSE BLOCK -----------------------------------------
12if (!defined('DC_RC_PATH')) { return; }
13
[587]14require dirname(__FILE__).'/_widgets.php';
15
[532]16# Simple menu template functions
17$core->tpl->addValue('SimpleMenu',array('tplSimpleMenu','simpleMenu'));
18
19class tplSimpleMenu
20{
[587]21     # Template function
[532]22     public static function simpleMenu($attr)
23     {
24          $class = isset($attr['class']) ? trim($attr['class']) : '';
[538]25          $id = isset($attr['id']) ? trim($attr['id']) : '';
[566]26          $description = isset($attr['description']) ? trim($attr['description']) : '';
[2566]27
[567]28          if (!preg_match('#^(title|span)$#',$description)) {
29               $description = '';
30          }
[2566]31
[532]32          return '<?php echo tplSimpleMenu::displayMenu('.
[538]33                    "'".addslashes($class)."',".
[566]34                    "'".addslashes($id)."',".
35                    "'".addslashes($description)."'".
[532]36               '); ?>';
37     }
[2566]38
[587]39     # Widget function
40     public static function simpleMenuWidget($w)
41     {
42          global $core, $_ctx;
[2566]43
[945]44          if (($w->homeonly == 1 && $core->url->type != 'default') ||
45               ($w->homeonly == 2 && $core->url->type == 'default')) {
[587]46               return;
47          }
48
[588]49          $menu = tplSimpleMenu::displayMenu('','','title');
[587]50          if ($menu == '') {
51               return;
52          }
53
[1063]54          return
55               ($w->content_only ? '' : '<div class="simple-menu'.($w->class ? ' '.html::escapeHTML($w->class) : '').'">').
[2662]56               ($w->title ? $w->renderTitle(html::escapeHTML($w->title)) : '').$menu.
[1063]57               ($w->content_only ? '' : '</div>');
[587]58     }
[2566]59
[566]60     public static function displayMenu($class='',$id='',$description='')
[532]61     {
[1062]62          global $core;
63
[532]64          $ret = '';
[534]65
66          $menu = $GLOBALS['core']->blog->settings->system->get('simpleMenu');
67          $menu = @unserialize($menu);
68
[2566]69          if (is_array($menu))
[534]70          {
71               // Current relative URL
72               $url = $_SERVER['REQUEST_URI'];
73               $abs_url = http::getHost().$url;
[2566]74
[534]75               // Home recognition var
76               $home_url = html::stripHostURL($GLOBALS['core']->blog->url);
77               $home_directory = dirname($home_url);
78               if ($home_directory != '/')
79                    $home_directory = $home_directory.'/';
[532]80
[534]81               // Menu items loop
82               foreach ($menu as $i => $m) {
83                    # $href = lien de l'item de menu
84                    $href = $m['url'];
85                    $href = html::escapeHTML($href);
86
87                    # Active item test
88                    $active = false;
[2566]89                    if (($url == $href) ||
90                         ($abs_url == $href) ||
91                         ($_SERVER['URL_REQUEST_PART'] == $href) ||
[534]92                         (($_SERVER['URL_REQUEST_PART'] == '') && (($href == $home_url) || ($href == $home_directory)))) {
93                         $active = true;
94                    }
[566]95                    $title = $span = '';
96                    if ($m['descr']) {
97                         if ($description == 'title') {
[2576]98                              $title = ' title="'.html::escapeHTML(__($m['descr'])).'"';
[566]99                         } else {
[2576]100                              $span = ' <span>'.html::escapeHTML(__($m['descr'])).'</span>';
[566]101                         }
102                    }
[2576]103                    $label = html::escapeHTML(__($m['label']));
[1062]104
105                    $item = new ArrayObject(array(
106                         'url' => $href,                         // URL
[2576]107                         'label' => $label,                 // <a> link label
[1062]108                         'title' => $title,                 // <a> link title (optional)
109                         'span' => $span,                   // description (will be displayed after <a> link)
110                         'active' => $active,               // status (true/false)
111                         'class' => ''                      // additional <li> class (optional)
112                         ));
113
114                    # --BEHAVIOR-- publicSimpleMenuItem
115                    $core->callBehavior('publicSimpleMenuItem',$i,$item);
116
[538]117                    $ret .= '<li class="li'.($i+1).
[1062]118                                   ($item['active'] ? ' active' : '').
[538]119                                   ($i == 0 ? ' li-first' : '').
120                                   ($i == count($menu)-1 ? ' li-last' : '').
[1062]121                                   ($item['class'] ? $item['class'] : '').
[538]122                              '">'.
[1062]123                              '<a href="'.$href.'"'.$item['title'].'>'.$item['label'].$item['span'].'</a>'.
[534]124                              '</li>';
125               }
[2566]126
[534]127               // Final rendering
128               if ($ret) {
[2605]129                    $ret = '<ul '.($id ? 'id="'.$id.'"' : '').' class="simple-menu'.($class ? ' '.$class : '').'" role="navigation">'."\n".$ret."\n".'</ul>';
[534]130               }
[532]131          }
[534]132
[532]133          return $ret;
134     }
135}
Note: See TracBrowser for help on using the repository browser.

Sites map