Dotclear

source: admin/category.php @ 3209:f86399915c78

Revision 3209:f86399915c78, 7.5 KB checked in by franck <carnet.franck.paul@…>, 9 years ago (diff)

Let category be used for other types of entries, should closes #2171

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('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();
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               dcPage::addSuccessNotice(__('The category has been successfully moved'));
87               $core->adminurl->redirect("admin.categories");
88          } catch (Exception $e) {
89               $core->error->add($e->getMessage());
90          }
91     }
92}
93
94# Changing sibling
95if ($cat_id && isset($_POST['cat_sibling']))
96{
97     try {
98          $core->blog->setCategoryPosition($cat_id,(integer) $_POST['cat_sibling'],$_POST['cat_move']);
99          dcPage::addSuccessNotice(__('The category has been successfully moved'));
100          $core->adminurl->redirect("admin.categories");
101     } catch (Exception $e) {
102          $core->error->add($e->getMessage());
103     }
104}
105
106# Create or update a category
107if (isset($_POST['cat_title']))
108{
109     $cur = $core->con->openCursor($core->prefix.'category');
110
111     $cur->cat_title = $cat_title = $_POST['cat_title'];
112
113     if (isset($_POST['cat_desc'])) {
114          $cur->cat_desc = $cat_desc = $_POST['cat_desc'];
115     }
116
117     if (isset($_POST['cat_url'])) {
118          $cur->cat_url = $cat_url = $_POST['cat_url'];
119     } else {
120          $cur->cat_url = $cat_url;
121     }
122
123     try
124     {
125          # Update category
126          if ($cat_id)
127          {
128               # --BEHAVIOR-- adminBeforeCategoryUpdate
129               $core->callBehavior('adminBeforeCategoryUpdate',$cur,$cat_id);
130
131               $core->blog->updCategory($_POST['id'],$cur);
132
133               # --BEHAVIOR-- adminAfterCategoryUpdate
134               $core->callBehavior('adminAfterCategoryUpdate',$cur,$cat_id);
135
136               dcPage::addSuccessNotice(__('The category has been successfully updated.'));
137
138               $core->adminurl->redirect("admin.category",array('id' => $_POST['id']));
139          }
140          # Create category
141          else
142          {
143               # --BEHAVIOR-- adminBeforeCategoryCreate
144               $core->callBehavior('adminBeforeCategoryCreate',$cur);
145
146               $id = $core->blog->addCategory($cur,(integer) $_POST['new_cat_parent']);
147
148               # --BEHAVIOR-- adminAfterCategoryCreate
149               $core->callBehavior('adminAfterCategoryCreate',$cur,$id);
150
151               dcPage::addSuccessNotice(sprintf(__('The category "%s" has been successfully created.'),
152                    html::escapeHTML($cur->cat_title)));
153               $core->adminurl->redirect("admin.categories");
154          }
155     }
156     catch (Exception $e)
157     {
158          $core->error->add($e->getMessage());
159     }
160}
161
162
163$title = $cat_id ? html::escapeHTML($cat_title) : __('New category');
164
165$elements = array(
166     html::escapeHTML($core->blog->name) => '',
167     __('Categories') => $core->adminurl->get("admin.categories")
168     );
169if ($cat_id) {
170     while($parents->fetch()) {
171          $elements[html::escapeHTML($parents->cat_title)] = $core->adminurl->get("admin.category",array('id'=> $parents->cat_id));
172     }
173}
174$elements[$title] = '';
175
176$category_editor = $core->auth->getOption('editor');
177
178dcPage::open($title,
179     dcPage::jsConfirmClose('category-form').
180     dcPage::jsLoad('js/_category.js').
181     $core->callBehavior('adminPostEditor',$category_editor['xhtml'],'category',array('#cat_desc'),'xhtml'),
182     dcPage::breadcrumb($elements)
183);
184
185if (!empty($_GET['upd'])) {
186     dcPage::success(__('Category has been successfully updated.'));
187}
188
189echo
190'<form action="'.$core->adminurl->get("admin.category").'" method="post" id="category-form">'.
191'<h3>'.__('Category information').'</h3>'.
192'<p><label class="required" for="cat_title"><abbr title="'.__('Required field').'">*</abbr> '.__('Name:').'</label> '.
193form::field('cat_title',40,255,html::escapeHTML($cat_title)).
194'</p>';
195if (!$cat_id)
196{
197     $rs = $core->blog->getCategories();
198     echo
199     '<p><label for="new_cat_parent">'.__('Parent:').' '.
200     '<select id="new_cat_parent" name="new_cat_parent" >'.
201     '<option value="0">'.__('(none)').'</option>';
202     while ($rs->fetch()) {
203          echo '<option value="'.$rs->cat_id.'" '.(!empty($_POST['new_cat_parent']) && $_POST['new_cat_parent'] == $rs->cat_id ? 'selected="selected"' : '').'>'.
204          str_repeat('&nbsp;&nbsp;',$rs->level-1).($rs->level-1 == 0 ? '' : '&bull; ').html::escapeHTML($rs->cat_title).'</option>';
205     }
206     echo
207     '</select></label></p>';
208     unset($rs);
209}
210echo
211'<div class="lockable">'.
212'<p><label for="cat_url">'.__('URL:').'</label> '
213.form::field('cat_url',40,255,html::escapeHTML($cat_url)).
214'</p>'.
215'<p class="form-note warn" id="note-cat-url">'.
216__('Warning: If you set the URL manually, it may conflict with another category.').'</p>'.
217'</div>'.
218
219'<p class="area"><label for="cat_desc">'.__('Description:').'</label> '.
220form::textarea('cat_desc',50,8,html::escapeHTML($cat_desc)).
221'</p>'.
222
223'<p><input type="submit" accesskey="s" value="'.__('Save').'" />'.
224($cat_id ? form::hidden('id',$cat_id) : '').
225$core->formNonce().
226'</p>'.
227'</form>';
228
229if ($cat_id)
230{
231     echo
232     '<h3 class="border-top">'.__('Move this category').'</h3>'.
233     '<div class="two-cols">'.
234     '<div class="col">'.
235
236     '<form action="'.$core->adminurl->get("admin.category").'" method="post" class="fieldset">'.
237     '<h4>'.__('Category parent').'</h4>'.
238     '<p><label for="cat_parent" class="classic">'.__('Parent:').'</label> '.
239     form::combo('cat_parent',$allowed_parents,$cat_parent).'</p>'.
240     '<p><input type="submit" accesskey="s" value="'.__('Save').'" />'.
241     form::hidden(array('id'),$cat_id).$core->formNonce().'</p>'.
242     '</form>'.
243     '</div>';
244
245     if (count($siblings) > 0) {
246          echo
247          '<div class="col">'.
248          '<form action="'.$core->adminurl->get("admin.category").'" method="post" class="fieldset">'.
249          '<h4>'.__('Category sibling').'</h4>'.
250          '<p><label class="classic" for="cat_sibling">'.__('Move current category').'</label> '.
251          form::combo('cat_move',array(__('before')=>'before',__('after')=>'after'),'','','',false,'title="'.__('position: ').'"').' '.
252          form::combo('cat_sibling',$siblings).'</p>'.
253          '<p><input type="submit" accesskey="s" value="'.__('Save').'" />'.
254          form::hidden(array('id'),$cat_id).$core->formNonce().'</p>'.
255          '</form>'.
256          '</div>';
257     }
258
259     echo '</div>';
260}
261
262dcPage::helpBlock('core_category');
263dcPage::close();
Note: See TracBrowser for help on using the repository browser.

Sites map