Dotclear

source: admin/category.php @ 1358:f117338392dc

Revision 1358:f117338392dc, 6.9 KB checked in by franck <carnet.franck.paul@…>, 11 years ago (diff)

Messages are now displayed below the breadcrumb, fixes #1528

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$cat_id = '';
18$cat_title = '';
19$cat_url = '';
20$cat_desc = '';
21$cat_position = '';
22
23# Getting existing category
24if (!empty($_REQUEST['id']))
25{
26     try {
27          $rs = $core->blog->getCategory($_REQUEST['id']);
28     } catch (Exception $e) {
29          $core->error->add($e->getMessage());
30     }
31     
32     if (!$core->error->flag() && !$rs->isEmpty())
33     {
34          $cat_id = (integer) $rs->cat_id;
35          $cat_title = $rs->cat_title;
36          $cat_url = $rs->cat_url;
37          $cat_desc = $rs->cat_desc;
38     }
39     unset($rs);
40     
41     # Getting hierarchy information
42     $parents = $core->blog->getCategoryParents($cat_id);
43     $rs = $core->blog->getCategoryParent($cat_id);
44     $cat_parent = $rs->isEmpty() ? 0 : (integer) $rs->cat_id;
45     unset($rs);
46     
47     # Allowed parents list
48     $children = $core->blog->getCategories(array('post_type'=>'post','start'=>$cat_id));
49     $allowed_parents = array(__('Top level')=>0);
50     
51     $p = array();
52     while ($children->fetch()) {
53          $p[$children->cat_id] = 1;
54     }
55     
56     $rs = $core->blog->getCategories(array('post_type'=>'post'));
57     while ($rs->fetch()) {
58          if (!isset($p[$rs->cat_id])) {
59               $allowed_parents[] = new formSelectOption(
60                    str_repeat('&nbsp;&nbsp;',$rs->level-1).($rs->level-1 == 0 ? '' : '&bull; ').html::escapeHTML($rs->cat_title),
61                    $rs->cat_id
62               );
63          }
64     }
65     unset($rs);
66     
67     # Allowed siblings list
68     $siblings = array();
69     $rs = $core->blog->getCategoryFirstChildren($cat_parent);
70     while ($rs->fetch()) {
71          if ($rs->cat_id != $cat_id) {
72               $siblings[html::escapeHTML($rs->cat_title)] = $rs->cat_id;
73          }
74     }
75     unset($rs);
76}
77
78# Changing parent
79if ($cat_id && isset($_POST['cat_parent']))
80{
81     $new_parent = (integer) $_POST['cat_parent'];
82     if ($cat_parent != $new_parent)
83     {
84          try {
85               $core->blog->setCategoryParent($cat_id,$new_parent);
86               http::redirect('categories.php?moved=1');
87          } catch (Exception $e) {
88               $core->error->add($e->getMessage());
89          }
90     }
91}
92
93# Changing sibling
94if ($cat_id && isset($_POST['cat_sibling']))
95{
96     try {
97          $core->blog->setCategoryPosition($cat_id,(integer) $_POST['cat_sibling'],$_POST['cat_move']);
98          http::redirect('categories.php?moved=1');
99     } catch (Exception $e) {
100          $core->error->add($e->getMessage());
101     }
102}
103
104# Create or update a category
105if (isset($_POST['cat_title']))
106{
107     $cur = $core->con->openCursor($core->prefix.'category');
108     
109     $cur->cat_title = $cat_title = $_POST['cat_title'];
110     
111     if (isset($_POST['cat_desc'])) {
112          $cur->cat_desc = $cat_desc = $_POST['cat_desc'];
113     }
114     
115     if (isset($_POST['cat_url'])) {
116          $cur->cat_url = $cat_url = $_POST['cat_url'];
117     } else {
118          $cur->cat_url = $cat_url;
119     }
120     
121     try
122     {
123          # Update category
124          if ($cat_id)
125          {
126               # --BEHAVIOR-- adminBeforeCategoryUpdate
127               $core->callBehavior('adminBeforeCategoryUpdate',$cur,$cat_id);
128               
129               $core->blog->updCategory($_POST['id'],$cur);
130               
131               # --BEHAVIOR-- adminAfterCategoryUpdate
132               $core->callBehavior('adminAfterCategoryUpdate',$cur,$cat_id);
133               
134               http::redirect('category.php?id='.$_POST['id'].'&upd=1');
135          }
136          # Create category
137          else
138          {
139               # --BEHAVIOR-- adminBeforeCategoryCreate
140               $core->callBehavior('adminBeforeCategoryCreate',$cur);
141               
142               $id = $core->blog->addCategory($cur,(integer) $_POST['new_cat_parent']);
143               
144               # --BEHAVIOR-- adminAfterCategoryCreate
145               $core->callBehavior('adminAfterCategoryCreate',$cur,$id);
146               
147               http::redirect('categories.php?add=1');
148          }
149     }
150     catch (Exception $e)
151     {
152          $core->error->add($e->getMessage());
153     }
154}
155
156
157$title = $cat_id ? html::escapeHTML($cat_title) : __('New category');
158
159$elements = array(
160     html::escapeHTML($core->blog->name) => '',
161     __('Categories') => 'categories.php'
162     );
163if ($cat_id) {
164     while($parents->fetch()) {
165          $elements[html::escapeHTML($parents->cat_title)] = 'category.php?id='.$parents->cat_id;
166     }
167}
168$elements['<span class="page-title">'.$title.'</span>'] = '';
169
170dcPage::open($title,
171     dcPage::jsConfirmClose('category-form').
172     dcPage::jsToolBar().
173     dcPage::jsLoad('js/_category.js'),
174     dcPage::breadcrumb($elements)
175);
176
177if (!empty($_GET['upd'])) {
178     dcPage::message(__('Category has been successfully updated.'));
179}
180
181echo
182'<form action="category.php" method="post" id="category-form">'.
183'<fieldset><legend>'.__('Category information').'</legend>'.
184'<p><label class="required" for="cat_title"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').' '.
185form::field('cat_title',40,255,html::escapeHTML($cat_title)).
186'</label></p>';
187if (!$cat_id)
188{
189     $rs = $core->blog->getCategories(array('post_type'=>'post'));
190     echo
191     '<p><label for="new_cat_parent">'.__('Parent:').' '.
192     '<select id="new_cat_parent" name="new_cat_parent" >'.
193     '<option value="0">'.__('Top level').'</option>';
194     while ($rs->fetch()) {
195          echo '<option value="'.$rs->cat_id.'" '.(!empty($_POST['new_cat_parent']) && $_POST['new_cat_parent'] == $rs->cat_id ? 'selected="selected"' : '').'>'.
196          str_repeat('&nbsp;&nbsp;',$rs->level).html::escapeHTML($rs->cat_title).'</option>';
197     }
198     echo
199     '</select></label></p>';
200     unset($rs);
201}
202echo
203'<div class="lockable">'.
204'<p><label for="cat_url">'.__('URL:').' '.form::field('cat_url',40,255,html::escapeHTML($cat_url)).
205'</label></p>'.
206'<p class="form-note warn" id="note-cat-url">'.
207__('Warning: If you set the URL manually, it may conflict with another category.').'</p>'.
208'</div>'.
209
210'<p class="area"><label for="cat_desc">'.__('Description:').'</label> '.
211form::textarea('cat_desc',50,8,html::escapeHTML($cat_desc)).
212'</p>'.
213
214'<p><input type="submit" accesskey="s" value="'.__('Save').'" />'.
215($cat_id ? form::hidden('id',$cat_id) : '').
216$core->formNonce().
217'</p>'.
218'</fieldset>'.
219'</form>';
220
221if ($cat_id)
222{
223     echo
224     '<h3>'.__('Move this category').'</h3>'.
225     '<div class="two-cols">'.
226     '<div class="col">'.
227     
228     '<form action="category.php" method="post">'.
229     '<fieldset><legend>'.__('Category parent').'</legend>'.
230     '<p><label for="cat_parent" class="classic">'.__('Parent:').' '.
231     form::combo('cat_parent',$allowed_parents,$cat_parent).'</label></p>'.
232     '<p><input type="submit" accesskey="s" value="'.__('Save').'" />'.
233     form::hidden(array('id'),$cat_id).$core->formNonce().'</p>'.
234     '</fieldset>'.
235     '</form>'.
236     '</div>';
237     
238     if (count($siblings) > 0) {
239          echo
240          '<div class="col">'.
241          '<form action="category.php" method="post">'.
242          '<fieldset><legend>'.__('Category sibling').'</legend>'.
243          '<p><label class="classic" for="cat_sibling">'.__('Move current category').'</label> '.
244          form::combo('cat_move',array(__('before')=>'before',__('after')=>'after'),'','','',false,'title="'.__('position: ').'"').' '.
245          form::combo('cat_sibling',$siblings).'</p>'.
246          '<p><input type="submit" accesskey="s" value="'.__('Save').'" />'.
247          form::hidden(array('id'),$cat_id).$core->formNonce().'</p>'.
248          '</fieldset>'.
249          '</form>'.
250          '</div>';
251     }
252     
253     echo '</div>';
254}
255
256dcPage::helpBlock('core_categories');
257dcPage::close();
258?>
Note: See TracBrowser for help on using the repository browser.

Sites map