| [0] | 1 | <?php | 
|---|
 | 2 | # -- BEGIN LICENSE BLOCK --------------------------------------- | 
|---|
 | 3 | # | 
|---|
 | 4 | # This file is part of Dotclear 2. | 
|---|
 | 5 | # | 
|---|
| [270] | 6 | # Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear | 
|---|
| [0] | 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 |  | 
|---|
 | 13 | require dirname(__FILE__).'/../inc/admin/prepend.php'; | 
|---|
 | 14 |  | 
|---|
 | 15 | dcPage::check('categories'); | 
|---|
 | 16 |  | 
|---|
 | 17 | $cat_id = ''; | 
|---|
 | 18 | $cat_title = ''; | 
|---|
 | 19 | $cat_url = ''; | 
|---|
 | 20 | $cat_desc = ''; | 
|---|
 | 21 | $cat_position = ''; | 
|---|
 | 22 |  | 
|---|
 | 23 | # Getting existing category | 
|---|
 | 24 | if (!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( | 
|---|
| [252] | 60 |                     str_repeat('  ',$rs->level-1).($rs->level-1 == 0 ? '' : '• ').html::escapeHTML($rs->cat_title), | 
|---|
| [0] | 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 | 
|---|
 | 79 | if ($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 | 
|---|
 | 94 | if ($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 | 
|---|
 | 105 | if (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 | dcPage::open($title, | 
|---|
 | 160 |      dcPage::jsConfirmClose('category-form'). | 
|---|
 | 161 |      dcPage::jsToolBar(). | 
|---|
 | 162 |      dcPage::jsLoad('js/_category.js') | 
|---|
 | 163 | ); | 
|---|
 | 164 |  | 
|---|
 | 165 | if (!empty($_GET['upd'])) { | 
|---|
| [907] | 166 |      dcPage::message(__('Category has been successfully updated.')); | 
|---|
| [0] | 167 | } | 
|---|
 | 168 |  | 
|---|
 | 169 | echo | 
|---|
 | 170 | '<h2>'.html::escapeHTML($core->blog->name).' › <a href="categories.php">'. | 
|---|
 | 171 | __('Categories').'</a> › '; | 
|---|
 | 172 |  | 
|---|
 | 173 | if ($cat_id) | 
|---|
 | 174 | { | 
|---|
 | 175 |      while($parents->fetch()) { | 
|---|
 | 176 |           echo '<a href="category.php?id='.$parents->cat_id.'">'.html::escapeHTML($parents->cat_title).'</a>'; | 
|---|
 | 177 |           echo " › "; | 
|---|
 | 178 |      } | 
|---|
 | 179 | } | 
|---|
 | 180 |  | 
|---|
| [500] | 181 | echo '<span class="page-title">'.$title.'</span></h2>'; | 
|---|
| [0] | 182 |  | 
|---|
 | 183 | echo | 
|---|
 | 184 | '<form action="category.php" method="post" id="category-form">'. | 
|---|
 | 185 | '<fieldset><legend>'.__('Category information').'</legend>'. | 
|---|
| [38] | 186 | '<p><label class="required" for="cat_title"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').' '. | 
|---|
| [454] | 187 | form::field('cat_title',40,255,html::escapeHTML($cat_title)). | 
|---|
| [0] | 188 | '</label></p>'; | 
|---|
 | 189 | if (!$cat_id) | 
|---|
 | 190 | { | 
|---|
 | 191 |      $rs = $core->blog->getCategories(array('post_type'=>'post')); | 
|---|
 | 192 |      echo | 
|---|
| [38] | 193 |      '<p><label for="new_cat_parent">'.__('Parent:').' '. | 
|---|
| [454] | 194 |      '<select id="new_cat_parent" name="new_cat_parent" >'. | 
|---|
| [0] | 195 |      '<option value="0">'.__('Top level').'</option>'; | 
|---|
 | 196 |      while ($rs->fetch()) { | 
|---|
 | 197 |           echo '<option value="'.$rs->cat_id.'" '.(!empty($_POST['new_cat_parent']) && $_POST['new_cat_parent'] == $rs->cat_id ? 'selected="selected"' : '').'>'. | 
|---|
 | 198 |           str_repeat('  ',$rs->level).html::escapeHTML($rs->cat_title).'</option>'; | 
|---|
 | 199 |      } | 
|---|
 | 200 |      echo | 
|---|
 | 201 |      '</select></label></p>'; | 
|---|
 | 202 |      unset($rs); | 
|---|
 | 203 | } | 
|---|
 | 204 | echo | 
|---|
 | 205 | '<div class="lockable">'. | 
|---|
| [454] | 206 | '<p><label for="cat_url">'.__('URL:').' '.form::field('cat_url',40,255,html::escapeHTML($cat_url)). | 
|---|
| [0] | 207 | '</label></p>'. | 
|---|
 | 208 | '<p class="form-note warn" id="note-cat-url">'. | 
|---|
 | 209 | __('Warning: If you set the URL manually, it may conflict with another category.').'</p>'. | 
|---|
 | 210 | '</div>'. | 
|---|
 | 211 |  | 
|---|
 | 212 | '<p class="area"><label for="cat_desc">'.__('Description:').'</label> '. | 
|---|
| [454] | 213 | form::textarea('cat_desc',50,8,html::escapeHTML($cat_desc)). | 
|---|
| [0] | 214 | '</p>'. | 
|---|
 | 215 |  | 
|---|
| [454] | 216 | '<p><input type="submit" accesskey="s" value="'.__('Save').'" />'. | 
|---|
| [0] | 217 | ($cat_id ? form::hidden('id',$cat_id) : ''). | 
|---|
 | 218 | $core->formNonce(). | 
|---|
 | 219 | '</p>'. | 
|---|
 | 220 | '</fieldset>'. | 
|---|
 | 221 | '</form>'; | 
|---|
 | 222 |  | 
|---|
 | 223 | if ($cat_id) | 
|---|
 | 224 | { | 
|---|
 | 225 |      echo | 
|---|
 | 226 |      '<h3>'.__('Move this category').'</h3>'. | 
|---|
 | 227 |      '<div class="two-cols">'. | 
|---|
 | 228 |      '<div class="col">'. | 
|---|
 | 229 |       | 
|---|
 | 230 |      '<form action="category.php" method="post">'. | 
|---|
 | 231 |      '<fieldset><legend>'.__('Category parent').'</legend>'. | 
|---|
| [38] | 232 |      '<p><label for="cat_parent" class="classic">'.__('Parent:').' '. | 
|---|
| [0] | 233 |      form::combo('cat_parent',$allowed_parents,$cat_parent).'</label></p>'. | 
|---|
| [454] | 234 |      '<p><input type="submit" accesskey="s" value="'.__('Save').'" />'. | 
|---|
| [0] | 235 |      form::hidden(array('id'),$cat_id).$core->formNonce().'</p>'. | 
|---|
 | 236 |      '</fieldset>'. | 
|---|
 | 237 |      '</form>'. | 
|---|
 | 238 |      '</div>'; | 
|---|
 | 239 |       | 
|---|
 | 240 |      if (count($siblings) > 0) { | 
|---|
 | 241 |           echo | 
|---|
 | 242 |           '<div class="col">'. | 
|---|
 | 243 |           '<form action="category.php" method="post">'. | 
|---|
 | 244 |           '<fieldset><legend>'.__('Category sibling').'</legend>'. | 
|---|
 | 245 |           '<p><label class="classic" for="cat_sibling">'.__('Move current category').'</label> '. | 
|---|
| [38] | 246 |           form::combo('cat_move',array(__('before')=>'before',__('after')=>'after'),'','','',false,'title="'.__('position: ').'"').' '. | 
|---|
| [0] | 247 |           form::combo('cat_sibling',$siblings).'</p>'. | 
|---|
| [454] | 248 |           '<p><input type="submit" accesskey="s" value="'.__('Save').'" />'. | 
|---|
| [0] | 249 |           form::hidden(array('id'),$cat_id).$core->formNonce().'</p>'. | 
|---|
 | 250 |           '</fieldset>'. | 
|---|
 | 251 |           '</form>'. | 
|---|
 | 252 |           '</div>'; | 
|---|
 | 253 |      } | 
|---|
 | 254 |       | 
|---|
 | 255 |      echo '</div>'; | 
|---|
 | 256 | } | 
|---|
 | 257 |  | 
|---|
 | 258 | dcPage::helpBlock('core_categories'); | 
|---|
 | 259 | dcPage::close(); | 
|---|
 | 260 | ?> | 
|---|