Dotclear

source: plugins/simpleMenu/index.php @ 533:a087e219d108

Revision 533:a087e219d108, 9.1 KB checked in by Franck <carnet.franck.paul@…>, 14 years ago (diff)

Un peu de mise en forme

Line 
1<?php
2# -- BEGIN LICENSE BLOCK ---------------------------------------
3#
4# This file is part of Dotclear 2.
5#
6# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
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_CONTEXT_ADMIN')) { return; }
13
14dcPage::check('admin');
15
16$page_title = __('Simple menu');
17
18# Url de base
19$p_url = 'plugin.php?p=simpleMenu';
20
21# Récupération paramètres postés
22$item_type = isset($_POST['item_type']) ? $_POST['item_type'] : '';
23$item_select = isset($_POST['item_select']) ? $_POST['item_select'] : '';
24
25# Liste des catégories
26$categories_combo = array();
27$categories_label = array();
28try {
29     $rs = $core->blog->getCategories(array('post_type'=>'post'));
30     while ($rs->fetch()) {
31          $categories_combo[] = new formSelectOption(
32               str_repeat('&nbsp;&nbsp;',$rs->level-1).($rs->level-1 == 0 ? '' : '&bull; ').html::escapeHTML($rs->cat_title),
33               $rs->cat_url
34          );
35          $categories_label[$rs->cat_url] = html::escapeHTML($rs->cat_title);
36     }
37} catch (Exception $e) { }
38
39# Liste des langues utilisées
40$langs_combo = array();
41try {
42     $rs = $core->blog->getLangs(array('order'=>'asc'));
43     if ($rs->count() > 1)
44     {
45          $all_langs = l10n::getISOcodes(0,1);
46          while ($rs->fetch()) {
47               $lang_name = isset($all_langs[$rs->post_lang]) ? $all_langs[$rs->post_lang] : $rs->post_lang;
48               $langs_combo[$lang_name] = $rs->post_lang;
49          }
50          unset($all_langs);
51     }
52     unset($rs);
53} catch (Exception $e) { }
54
55# Liste des mois d'archive
56$months_combo = array();
57try {
58     $rs = $core->blog->getDates(array('type'=>'month'));
59     $months_combo[__('All months')] = '-';
60     $first_year = $last_year = 0;
61     while ($rs->fetch()) {
62          $months_combo[dt::str('%B %Y',$rs->ts())] = $rs->year().$rs->month();
63          if (($first_year == 0) || ($rs->year() < $first_year)) $first_year = $rs->year();
64          if (($last_year == 0) || ($rs->year() > $last_year)) $last_year = $rs->year();
65     }
66     unset($rs);
67} catch (Exception $e) { }
68
69# Liste des pages -- Doit être pris en charge plus tard par le plugin ?
70$pages_combo = array();
71try {
72     $rs = $core->blog->getPosts(array('post_type'=>'page'));
73     while ($rs->fetch()) {
74          $pages_combo[$rs->post_title] = $rs->getURL();
75     }
76     unset($rs);
77} catch (Exception $e) { }
78
79# Liste des tags -- Doit être pris en charge plus tard par le plugin ?
80$tags_combo = array();
81try {
82     $rs = $core->meta->getMetadata(array('meta_type' => 'tag'));
83     $tags_combo[__('All tags')] = '-';
84     while ($rs->fetch()) {
85          $tags_combo[$rs->meta_id] = $rs->meta_id;
86     }
87     unset($rs);
88} catch (Exception $e) { }
89
90# Liste des types d'item de menu
91$items = array('home' => array(__('Page d‘accueil'),0));
92
93if (count($langs_combo) > 1) {
94     $items['lang'] = array(__('Langue'),1);
95}
96if (count($categories_combo)) {
97     $items['category'] = array(__('Category'),1);
98}
99if (count($months_combo) > 1) {
100     $items['archive'] = array(__('Archive'),1);
101}
102if ($core->plugins->moduleExists('pages')) {
103     if(count($pages_combo))
104          $items['pages'] = array(__('Page'),1);
105}
106if ($core->plugins->moduleExists('tags')) {
107     if (count($tags_combo) > 1)
108          $items['tags'] = array(__('Tags'),1);
109}
110$items['special'] = array(__('User defined'),0);
111
112$items_combo = array();
113foreach ($items as $k => $v) {
114     $items_combo[$v[0]] = $k;
115}
116
117# Traitement
118$step = (!empty($_GET['add']) ? (integer) $_GET['add'] : 0);
119if (($step > 4) || ($step < 0)) $step = 0;
120if ($step) {
121
122     # Récupération libellés des choix
123     $item_type_label = isset($items[$item_type]) ? $items[$item_type][0] : '';
124
125     switch ($step) {
126          case 1:
127               $item_type = $item_select = '';
128               break;
129          case 2:
130               if ($items[$item_type][1] > 0) {
131                    $item_select = '';
132                    break;
133               }
134          case 3:
135               $item_select_label = '';
136               $item_label = __('Title');
137               $item_descr = __('Description');
138               $item_url = html::stripHostURL($core->blog->url);
139               switch ($item_type) {
140                    case 'home':
141                         $item_label = __('Home');
142                         $item_descr = __('Recent posts');
143                         break;
144                    case 'lang':
145                         $item_select_label = array_search($item_select,$langs_combo);
146                         $item_label = $item_select_label;
147                         $item_descr = sprintf(__('Switch to %s language'),$item_select_label);
148                         $item_url .= $core->url->getBase('lang').$item_select;
149                         break;
150                    case 'category':
151                         $item_select_label = $categories_label[$item_select];
152                         $item_label = $item_select_label;
153                         $item_descr = __('Recent Posts from this category');
154                         $item_url .= $core->url->getBase('category').'/'.$item_select;
155                         break;
156                    case 'archive':
157                         $item_select_label = array_search($item_select,$months_combo);
158                         if ($item_select == '-') {
159                              $item_label = __('Archives');
160                              $item_descr = $first_year.($first_year != $last_year ? ' - '.$last_year : '');
161                              $item_url .= $core->url->getBase('archive');
162                         } else {
163                              $item_label = $item_select_label;
164                              $item_descr = sprintf(__('Posts from %s'),$item_select_label);
165                              $item_url .= $core->url->getBase('archive').'/'.substr($item_select,0,4).'/'.substr($item_select,-2);
166                         }
167                         break;
168                    case 'pages':
169                         $item_select_label = array_search($item_select,$pages_combo);
170                         $item_label = $item_select_label;
171                         $item_descr = '';
172                         $item_url = html::stripHostURL($item_select);
173                         break;
174                    case 'tags':
175                         $item_select_label = array_search($item_select,$tags_combo);
176                         if ($item_select == '-') {
177                              $item_label = __('All tags');
178                              $item_descr = '';
179                              $item_url .= $core->url->getBase('tags');
180                         } else {
181                              $item_label = $item_select_label;
182                              $item_descr = sprintf(__('Recent posts for %s tag'),$item_select_label);
183                              $item_url .= $core->url->getBase('tag').'/'.$item_select;
184                         }
185                         break;
186                    case 'special':
187                         break;
188               }
189               break;
190     }
191}
192
193# Display
194?>
195
196<html>
197<head>
198  <title><?php echo $page_title; ?></title>
199</head>
200
201<body>
202
203<?php
204
205if ($step) 
206{
207     // Formulaire d'ajout d'un item
208     echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <a href="'.$p_url.'">'.$page_title.'</a> &rsaquo; <span class="page-title">'.__('Add item').'</span></h2>';
209     
210     switch ($step) {
211          case 1:
212               // Selection du type d'item
213               echo '<form id="additem" action="'.$p_url.'&add=2" method="post">';
214               echo '<fieldset><legend>'.__('Select type').'</legend>';
215               echo '<p class="field"><label for"item_type" class="classic">'.__('Type of item menu:').'</label>'.form::combo('item_type',$items_combo,'').'</p>';
216               echo '<p>'.$core->formNonce().'<input type="submit" name="append" value="'.__('Continue').'" />'.'</p>';
217               echo '</fieldset>';
218               echo '</form>';
219               break;
220          case 2:
221               if ($items[$item_type][1] > 0) {
222                    // Choix à faire
223                    echo '<form id="additem" action="'.$p_url.'&add=3" method="post">';
224                    echo '<fieldset><legend>'.$item_type_label.'</legend>';
225                    switch ($item_type) {
226                         case 'lang':
227                              echo '<p class="field"><label for"item_select" class="classic">'.__('Select language:').'</label>'.
228                                   form::combo('item_select',$langs_combo,'');
229                              break;
230                         case 'category':
231                              echo '<p class="field"><label for"item_select" class="classic">'.__('Select category:').'</label>'.
232                                   form::combo('item_select',$categories_combo,'');
233                              break;
234                         case 'archive':
235                              echo '<p class="field"><label for"item_select" class="classic">'.__('Select month:').'</label>'.
236                                   form::combo('item_select',$months_combo,'');
237                              break;
238                         case 'pages':
239                              echo '<p class="field"><label for"item_select" class="classic">'.__('Select page:').'</label>'.
240                                   form::combo('item_select',$pages_combo,'');
241                              break;
242                         case 'tags':
243                              echo '<p class="field"><label for"item_select" class="classic">'.__('Select tag:').'</label>'.
244                                   form::combo('item_select',$tags_combo,'');
245                              break;
246                    }
247                    echo form::hidden('item_type',$item_type);
248                    echo '<p>'.$core->formNonce().'<input type="submit" name="append" value="'.__('Continue').'" /></p>';
249                    echo '</fieldset>';
250                    echo '</form>';
251                    break;
252               }
253          case 3:
254               // Libellé et description
255               echo '<form id="additem" action="'.$p_url.'&add=4" method="post">';
256               echo '<fieldset><legend>'.$item_type_label.($item_select_label != '' ? ' ('.$item_select_label.')' : '').'</legend>';
257               echo '<p class="field"><label for"item_label" class="classic">'.__('Label of item menu:').'</label>'.form::field('item_label',10,255,$item_label).'</p>';
258               echo '<p class="field"><label for"item_descr" class="classic">'.__('Description of item menu:').'</label>'.form::field('item_label',20,255,$item_descr).'</p>';
259               echo '<p class="field"><label for"item_url" class="classic">'.__('URL of item menu:').'</label>'.form::field('item_url',40,255,$item_url).'</p>';
260               echo form::hidden('item_type',$item_type).form::hidden('item_select',$item_select);
261               echo '<p>'.$core->formNonce().'<input type="submit" name="append" value="'.__('Add item').'" /></p>';
262               echo '</fieldset>';
263               echo '</form>';
264               break;
265     }
266} else {
267     // Liste des items
268     echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.$page_title.'</span></h2>';
269
270     echo '<form id="menuitems" action="'.$p_url.'&add=1" method="post">';
271     echo '<p>'.$core->formNonce().'<input type="submit" name="append" value="'.__('Add an item').'" /></p>';
272     echo '</form>';
273}
274
275?>
276
277</body>
278</html>
Note: See TracBrowser for help on using the repository browser.

Sites map