Dotclear

source: plugins/breadcrumb/_public.php @ 3009:461a5ca8e825

Revision 3009:461a5ca8e825, 5.6 KB checked in by franck <carnet.franck.paul@…>, 10 years ago (diff)

Includes breadcrumb plugin to the distribution, fixes #1902

  • Property exe set to *
Line 
1<?php
2# -- BEGIN LICENSE BLOCK ----------------------------------
3# This file is part of breadcrumb, a plugin for Dotclear 2.
4#
5# Copyright (c) Franck Paul and contributors
6# carnet.franck.paul@gmail.com
7#
8# Licensed under the GPL version 2.0 license.
9# A copy of this license is available in LICENSE file or at
10# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
11# -- END LICENSE BLOCK ------------------------------------
12
13if (!defined('DC_RC_PATH')) { return; }
14
15# Breadcrumb template functions
16$core->tpl->addValue('Breadcrumb',array('tplBreadcrumb','breadcrumb'));
17
18class tplBreadcrumb
19{
20     # Template function
21     public static function breadcrumb($attr)
22     {
23          $separator = isset($attr['separator']) ? $attr['separator'] : '';
24
25          return '<?php echo tplBreadcrumb::displayBreadcrumb('.
26                    "'".addslashes($separator)."'".
27               '); ?>';
28     }
29
30     public static function displayBreadcrumb($separator)
31     {
32          global $core,$_ctx;
33
34          $ret = '';
35
36          # Check if breadcrumb enabled for the current blog
37          $core->blog->settings->addNameSpace('breadcrumb');
38          if (!$core->blog->settings->breadcrumb->breadcrumb_enabled) {
39               return $ret;
40          }
41
42          if ($separator == '') $separator = ' &rsaquo; ';
43
44          // Get current page if set
45          $page = isset($GLOBALS['_page_number']) ? (integer) $GLOBALS['_page_number'] : 0;
46
47          switch ($core->url->type) {
48
49               case 'default':
50                    // Home (first page only)
51                    $ret = '<span id="bc-home">'.__('Home').'</span>';
52                    break;
53
54               case 'default-page':
55                    // Home`(page 2 to n)
56                    $ret = '<a id="bc-home" href="'.$core->blog->url.'">'.__('Home').'</a>';
57                    $ret .= $separator.sprintf(__('page %d'),$page);
58                    break;
59
60               case 'category':
61                    // Category
62                    $ret = '<a id="bc-home" href="'.$core->blog->url.'">'.__('Home').'</a>';
63                    $categories = $core->blog->getCategoryParents($_ctx->categories->cat_id);
64                    while ($categories->fetch()) {
65                         $ret .= $separator.'<a href="'.$core->blog->url.$core->url->getBase('category')."/".$categories->cat_url.'">'.$categories->cat_title.'</a>';
66                    }
67                    if ($page == 0) {
68                         $ret .= $separator.$_ctx->categories->cat_title;
69                    } else {
70                         $ret .= $separator.'<a href="'.$core->blog->url.$core->url->getBase('category')."/".$_ctx->categories->cat_url.'">'.$_ctx->categories->cat_title.'</a>';
71                         $ret .= $separator.sprintf(__('page %d'),$page);
72                    }
73                    break;
74
75               case 'post':
76                    // Post
77                    $ret = '<a id="bc-home" href="'.$core->blog->url.'">'.__('Home').'</a>';
78                    if ($_ctx->posts->cat_id) {
79                         // Parents cats of post's cat
80                         $categories = $core->blog->getCategoryParents($_ctx->posts->cat_id);
81                         while ($categories->fetch()) {
82                              $ret .= $separator.'<a href="'.$core->blog->url.$core->url->getBase('category')."/".$categories->cat_url.'">'.$categories->cat_title.'</a>';
83                         }
84                         // Post's cat
85                         $categories = $core->blog->getCategory($_ctx->posts->cat_id);
86                         $ret .= $separator.'<a href="'.$core->blog->url.$core->url->getBase('category')."/".$categories->cat_url.'">'.$categories->cat_title.'</a>';
87                    }
88                    $ret .= $separator.$_ctx->posts->post_title;
89                    break;
90
91               case 'lang':
92                    // Lang
93                    $ret = '<a id="bc-home" href="'.$core->blog->url.'">'.__('Home').'</a>';
94                    $langs = l10n::getISOCodes();
95                    $ret .= $separator.(isset($langs[$_ctx->cur_lang]) ? $langs[$_ctx->cur_lang] : $_ctx->cur_lang);
96                    break;
97
98               case 'archive':
99                    // Archives
100                    $ret = '<a id="bc-home" href="'.$core->blog->url.'">'.__('Home').'</a>';
101                    if (!$_ctx->archives) {
102                         // Global archives
103                         $ret .= $separator.__('Archives');
104                    } else {
105                         // Month archive
106                         $ret .= $separator.'<a href="'.$core->blog->url.$core->url->getBase("archive").'">'.__('Archives').'</a>';
107                         $ret .= $separator.dt::dt2str('%B %Y',$_ctx->archives->dt);
108                    }
109                    break;
110
111               case 'pages':
112                    // Page
113                    $ret = '<a id="bc-home" href="'.$core->blog->url.'">'.__('Home').'</a>';
114                    $ret .= $separator.$_ctx->posts->post_title;
115                    break;
116
117               case 'tags':
118                    // All tags
119                    $ret = '<a id="bc-home" href="'.$core->blog->url.'">'.__('Home').'</a>';
120                    $ret .= $separator.__('All tags');
121                    break;
122
123               case 'tag':
124                    // Tag
125                    $ret = '<a id="bc-home" href="'.$core->blog->url.'">'.__('Home').'</a>';
126                    $ret .= $separator.'<a href="'.$core->blog->url.$core->url->getBase("tags").'">'.__('All tags').'</a>';
127                    if ($page == 0) {
128                         $ret .= $separator.$_ctx->meta->meta_id;
129                    } else {
130                         $ret .= $separator.'<a href="'.$core->blog->url.$core->url->getBase("tag").'/'.rawurlencode($_ctx->meta->meta_id).'">'.$_ctx->meta->meta_id.'</a>';
131                         $ret .= $separator.sprintf(__('page %d'),$page);
132                    }
133                    break;
134
135               case 'search':
136                    // Search
137                    $ret = '<a id="bc-home" href="'.$core->blog->url.'">'.__('Home').'</a>';
138                    if ($page == 0) {
139                         $ret .= $separator.__('Search:').' '.$GLOBALS['_search'];
140                    } else {
141                         $ret .= $separator.'<a href="'.$core->blog->url.'?q='.rawurlencode($GLOBALS['_search']).'">'.__('Search:').' '.$GLOBALS['_search'].'</a>';
142                         $ret .= $separator.sprintf(__('page %d'),$page);
143                    }
144                    break;
145
146               case '404':
147                    // 404
148                    $ret = '<a id="bc-home" href="'.$core->blog->url.'">'.__('Home').'</a>';
149                    $ret .= $separator.__('404');
150                    break;
151
152               default:
153                    $ret = '<a id="bc-home" href="'.$core->blog->url.'">'.__('Home').'</a>';
154                    # --BEHAVIOR-- publicBreadcrumb
155                    # Should specific breadcrumb if any, will be added after home page url
156                    $special = $core->callBehavior('publicBreadcrumb',$core->url->type,$separator);
157                    if ($special) {
158                         $ret .= $separator.$special;
159                    }
160                    break;
161          }
162
163          # Encapsulate breadcrumb in <p>…</p>
164          if (!$core->blog->settings->breadcrumb->breadcrumb_alone) {
165               $ret = '<p id="breadcrumb">'.$ret.'</p>';
166          }
167
168          return $ret;
169     }
170}
Note: See TracBrowser for help on using the repository browser.

Sites map