Dotclear

source: admin/categories.php @ 1566:f6f0d395f125

Revision 1566:f6f0d395f125, 6.4 KB checked in by Anne Kozlika <kozlika@…>, 11 years ago (diff)

Categories page, work in progress
(for Nikrou: see lines 213 and 214 of categories.php)

Line 
1<?php
2# -- BEGIN LICENSE BLOCK ---------------------------------------
3#
4# This file is part of Dotclear 2.
5#
6# Copyright (c) 2003-2013 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 -----------------------------------------
12
13require dirname(__FILE__).'/../inc/admin/prepend.php';
14
15dcPage::check('categories');
16
17# Remove a categories
18if (!empty($_POST['categories'])) {
19     try {
20          # Check if category where to move posts exists
21          $mov_cat = (int) $_POST['mov_cat'];
22          $mov_cat = $mov_cat ? $mov_cat : null;
23          if ($mov_cat !== null) {
24               $c = $core->blog->getCategory($mov_cat);
25               if ($c->isEmpty()) {
26                    throw new Exception(__('Category where to move posts does not exist'));
27               }
28               unset($c);
29
30               if (in_array($mov_cat, $_POST['categories'])) {
31                    throw new Exception(__('The entries cannot be moved to the category you choose to delete.'));
32               }
33          }
34
35          foreach ($_POST['categories'] as $cat_id) {
36               # Check if category to delete exists
37               $c = $core->blog->getCategory((integer) $cat_id);
38               if ($c->isEmpty()) {
39                    continue;
40               }
41               unset($c);
42
43               # Move posts
44               if ($mov_cat != $cat_id) {
45                       $core->blog->changePostsCategory($cat_id,$mov_cat);
46               }
47
48               # Delete category
49               $core->blog->delCategory($cat_id);
50          }
51          http::redirect('categories.php?del='.count($_POST['categories']));
52     } catch (Exception $e) {
53          $core->error->add($e->getMessage());
54     }
55}
56
57# Update order
58if (!empty($_POST['categories_order']))
59{
60        $categories = json_decode($_POST['categories_order']);
61
62     foreach ($categories as $category) {
63             if (!empty($category->item_id)) {
64                  $core->blog->updCategoryPosition($category->item_id, $category->left, $category->right);
65          }
66     }
67     http::redirect('categories.php?reord=1');
68}
69
70# Reset order
71if (!empty($_POST['reset']))
72{
73     try
74     {
75          $core->blog->resetCategoriesOrder();
76          http::redirect('categories.php?reord=1');
77     }
78     catch (Exception $e)
79     {
80          $core->error->add($e->getMessage());
81     }
82}
83
84# Actions combo box
85$combo_action = array();
86if ($core->auth->check('categories',$core->blog->id)) {
87     $combo_action[__('Delete')] = 'delete';
88}
89
90
91/* Display
92-------------------------------------------------------- */
93$rs = $core->blog->getCategories(array('post_type'=>'post'));
94
95$starting_script = dcPage::jsToolMan()."\n";
96if (!$core->auth->user_prefs->accessibility->nodragdrop
97     && $core->auth->check('categories',$core->blog->id)
98     && $rs->count()>1) {
99        $starting_script .= dcPage::jsLoad('js/jquery/jquery-ui.custom.js');
100     $starting_script .= dcPage::jsLoad('js/jquery/jquery.mjs.nestedSortable.js');
101}
102$starting_script .= dcPage::jsLoad('js/_categories.js');
103
104dcPage::open(__('Categories'),$starting_script,
105     dcPage::breadcrumb(
106          array(
107               html::escapeHTML($core->blog->name) => '',
108               '<span class="page-title">'.__('Categories').'</span>' => ''
109          ))
110);
111
112if (!empty($_GET['del'])) {
113        dcPage::success(__('The category has been successfully removed.',
114                  'The categories have been successfully removed.',
115                  (int) $_GET['del']
116                  )
117               );
118}
119if (!empty($_GET['reord'])) {
120     dcPage::success(__('Categories have been successfully reordered.'));
121}
122
123$categories_combo = array();
124if (!$rs->isEmpty())
125{
126     while ($rs->fetch()) {
127          $catparents_combo[] = $categories_combo[] = new formSelectOption(
128               str_repeat('&nbsp;&nbsp;',$rs->level-1).($rs->level-1 == 0 ? '' : '&bull; ').html::escapeHTML($rs->cat_title),
129               $rs->cat_id
130          );
131     }
132}
133
134echo
135'<p class="top-add"><a class="button add" href="category.php">'.__('New category').'</a></p>';
136
137echo
138'<div class="col">';
139if ($rs->isEmpty())
140{
141     echo '<p>'.__('No category yet.').'</p>';
142}
143else
144{
145     echo
146     '<form action="categories.php" method="post" id="form-categories">'.
147     '<h3>'.__('List of blog\'s categories').'</h3>'.
148     '<div id="categories">';
149
150     $ref_level = $level = $rs->level-1;
151     while ($rs->fetch())
152     {
153          $attr = 'id="cat_'.$rs->cat_id.'"';
154
155          if ($rs->level > $level) {
156               echo str_repeat('<ul><li '.$attr.'>',$rs->level - $level);
157          } elseif ($rs->level < $level) {
158               echo str_repeat('</li></ul>',-($rs->level - $level));
159          }
160
161          if ($rs->level <= $level) {
162               echo '</li><li '.$attr.'>';
163          }
164
165          echo
166          '<p>'.
167          form::checkbox(array('categories[]','cat-'.$rs->cat_id),$rs->cat_id,null,$rs->nb_total>0?'notempty':'').
168          '<label class="classic" for="cat-'.$rs->cat_id.'"><a href="category.php?id='.$rs->cat_id.'">'.html::escapeHTML($rs->cat_title).'</a></label>'.
169          ' (<a href="posts.php?cat_id='.$rs->cat_id.'">'.
170          sprintf(($rs->nb_post > 1 ? __('%d entries') : __('%d entry') ),$rs->nb_post).'</a>'.
171          ', '.__('total:').' '.$rs->nb_total.') '.
172          __('URL:').' <code>'.html::escapeHTML($rs->cat_url).'</code></p>';
173
174          $level = $rs->level;
175     }
176
177     if ($ref_level - $level < 0) {
178          echo str_repeat('</li></ul>',-($ref_level - $level));
179     }
180     echo
181     '</div>';
182
183     if (count($combo_action)>0) {
184           echo
185           '<div class="two-cols">'.
186           '<p class="col checkboxes-helpers"></p>'.
187           '<p class="col right" id="mov-cat">'.
188           '<label for="mov_cat" class="classic">'.__('Category which will receive entries of deleted categories:').'</label> '.
189           form::combo('mov_cat',array_merge(array(__('(No cat)') => ''),$categories_combo),'','').
190           '</p>'.
191           '<p class="right">'.
192           $core->formNonce().
193           '<input type="submit" value="'.__('Delete selected categories').'"/>'.
194           '</p>'.
195           '</div>'.
196           '</form>';
197     }
198
199     echo '<h3 class="clear">'.__('Categories order').'</h3>';
200
201     if (!$core->auth->user_prefs->accessibility->nodragdrop
202          && $core->auth->check('categories',$core->blog->id)
203          && $rs->count()>1) {
204          echo
205          '<form action="categories.php" method="post">'.
206          '<p>'.__('To rearrange categories order, move items by drag and drop, then click on “Save categories order” button.').'</p>'.
207          '<p>'.
208          '<input type="hidden" id="categories_order" name="categories_order" value=""/>'.
209          '<input type="submit" id="save-set-order" value="'.__('Save categories order').'" />'.
210          $core->formNonce().'</p>'.
211          '</form>';
212
213// Pour le cas de js désactivé, phrase du formulaire ci-dessus :
214// "To rearrange categories order, change position number and click on “Save categories order” button."
215
216     echo
217     '<form action="categories.php" method="post" id="reset-order">'.
218     '<p><input type="submit" value="'.__('Reorder all categories on the top level').'" />'.
219     form::hidden(array('reset'),1).
220     $core->formNonce().'</p>'.
221     '</form>';
222     }
223}
224
225echo '</div>';
226
227dcPage::helpBlock('core_categories');
228dcPage::close();
229?>
Note: See TracBrowser for help on using the repository browser.

Sites map