Dotclear

source: admin/category.php @ 2189:eda746478da6

Revision 2189:eda746478da6, 7.2 KB checked in by Dsls, 12 years ago (diff)
  • Removed superfluous space in addNotice
  • Non-repeatable notifications, step 2 : blogs and categories
  • Fixed blogs breadcrumb

see #1710

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               dcPage::addSuccessNotice(__('The category has been successfully moved'));
87               http::redirect('categories.php');
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          http::redirect('categories.php');
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               http::redirect('category.php?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               http::redirect('categories.php');
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') => 'categories.php'
168     );
169if ($cat_id) {
170     while($parents->fetch()) {
171          $elements[html::escapeHTML($parents->cat_title)] = 'category.php?id='.$parents->cat_id;
172     }
173}
174$elements[$title] = '';
175
176dcPage::open($title,
177     dcPage::jsConfirmClose('category-form').
178     dcPage::jsToolBar().
179     dcPage::jsLoad('js/_category.js'),
180     dcPage::breadcrumb($elements)
181);
182
183if (!empty($_GET['upd'])) {
184     dcPage::success(__('Category has been successfully updated.'));
185}
186
187echo
188'<form action="category.php" method="post" id="category-form">'.
189'<h3>'.__('Category information').'</h3>'.
190'<p><label class="required" for="cat_title"><abbr title="'.__('Required field').'">*</abbr> '.__('Name:').'</label> '.
191form::field('cat_title',40,255,html::escapeHTML($cat_title)).
192'</p>';
193if (!$cat_id)
194{
195     $rs = $core->blog->getCategories(array('post_type'=>'post'));
196     echo
197     '<p><label for="new_cat_parent">'.__('Parent:').' '.
198     '<select id="new_cat_parent" name="new_cat_parent" >'.
199     '<option value="0">'.__('(none)').'</option>';
200     while ($rs->fetch()) {
201          echo '<option value="'.$rs->cat_id.'" '.(!empty($_POST['new_cat_parent']) && $_POST['new_cat_parent'] == $rs->cat_id ? 'selected="selected"' : '').'>'.
202          str_repeat('&nbsp;&nbsp;',$rs->level-1).($rs->level-1 == 0 ? '' : '&bull; ').html::escapeHTML($rs->cat_title).'</option>';   
203     }
204     echo
205     '</select></label></p>';
206     unset($rs);
207}
208echo
209'<div class="lockable">'.
210'<p><label for="cat_url">'.__('URL:').'</label> '
211.form::field('cat_url',40,255,html::escapeHTML($cat_url)).
212'</p>'.
213'<p class="form-note warn" id="note-cat-url">'.
214__('Warning: If you set the URL manually, it may conflict with another category.').'</p>'.
215'</div>'.
216
217'<p class="area"><label for="cat_desc">'.__('Description:').'</label> '.
218form::textarea('cat_desc',50,8,html::escapeHTML($cat_desc)).
219'</p>'.
220
221'<p><input type="submit" accesskey="s" value="'.__('Save').'" />'.
222($cat_id ? form::hidden('id',$cat_id) : '').
223$core->formNonce().
224'</p>'.
225'</form>';
226
227if ($cat_id)
228{
229     echo
230     '<h3 class="border-top">'.__('Move this category').'</h3>'.
231     '<div class="two-cols">'.
232     '<div class="col">'.
233     
234     '<form action="category.php" method="post" class="fieldset">'.
235     '<h4>'.__('Category parent').'</h4>'.
236     '<p><label for="cat_parent" class="classic">'.__('Parent:').'</label> '.
237     form::combo('cat_parent',$allowed_parents,$cat_parent).'</p>'.
238     '<p><input type="submit" accesskey="s" value="'.__('Save').'" />'.
239     form::hidden(array('id'),$cat_id).$core->formNonce().'</p>'.
240     '</form>'.
241     '</div>';
242     
243     if (count($siblings) > 0) {
244          echo
245          '<div class="col">'.
246          '<form action="category.php" method="post" class="fieldset">'.
247          '<h4>'.__('Category sibling').'</h4>'.
248          '<p><label class="classic" for="cat_sibling">'.__('Move current category').'</label> '.
249          form::combo('cat_move',array(__('before')=>'before',__('after')=>'after'),'','','',false,'title="'.__('position: ').'"').' '.
250          form::combo('cat_sibling',$siblings).'</p>'.
251          '<p><input type="submit" accesskey="s" value="'.__('Save').'" />'.
252          form::hidden(array('id'),$cat_id).$core->formNonce().'</p>'.
253          '</form>'.
254          '</div>';
255     }
256     
257     echo '</div>';
258}
259
260dcPage::helpBlock('core_categories');
261dcPage::close();
262?>
Note: See TracBrowser for help on using the repository browser.

Sites map