update edit_cats to move the subtree with the cat if the parent changes

This commit is contained in:
ceb 2002-10-12 21:18:23 +00:00
parent 6b1588ada5
commit be05bc6e25
5 changed files with 62 additions and 57 deletions

View File

@ -52,6 +52,11 @@
if($this->debug) { echo '<br>overriding start: "' . $this->start . '" now "' . $start . '"'; }
$this->start = $start;
}
else
{
$this->start = 0;
}
if((empty($query) && !empty($this->query)) || !empty($query))
{
if($this->debug) { echo '<br>setting query to: "' . $query . '"'; }

View File

@ -125,11 +125,6 @@
$GLOBALS['phpgw']->template->set_var('actionurl',$GLOBALS['phpgw']->link('/index.php',$link_data));
$GLOBALS['phpgw']->template->set_var('doneurl',$GLOBALS['phpgw']->link('/admin/index.php'));
if(!$start)
{
$start = 0;
}
if (!$global_cats)
{
$global_cats = False;
@ -295,9 +290,9 @@
}
$GLOBALS['phpgw']->template->set_var('category_list',$this->bo->cats->formated_list(array('format' => 'select',
'type' => 'all',
'selected' => $parent,
'globals' => $global_cats)));
'type' => 'all',
'selected' => $parent,
'globals' => $global_cats)));
$GLOBALS['phpgw']->template->set_var('cat_name',$values['name']);
$GLOBALS['phpgw']->template->set_var('cat_description',$values['descr']);
@ -343,8 +338,6 @@
$values['access'] = 'public';
}
//_debug_array($values);
$error = $this->bo->check_values($values);
if (is_array($error))
{
@ -369,7 +362,7 @@
}
$link_data['menuaction'] = 'admin.uicategories.edit';
$link_data['cat_id'] = $this->cat_id;
$link_data['cat_id'] = $this->cat_id;
$GLOBALS['phpgw']->template->set_var('actionurl',$GLOBALS['phpgw']->link('/index.php',$link_data));
$link_data['menuaction'] = 'admin.uicategories.delete';

View File

@ -145,7 +145,7 @@
}
$filter = $this->filter($type);
if (!$sort)
{
$sort = 'ASC';
@ -194,7 +194,7 @@
$sql = "SELECT * from phpgw_categories WHERE (cat_appname='" . $this->app_name . "' AND" . $grant_cats . $global_cats . ")"
. $parent_filter . $querymethod . $filter;
if ($limit)
{
$this->db->limit_query($sql . $ordermethod,$start,__LINE__,__FILE__);
@ -330,23 +330,9 @@
{
$this->db->query('SELECT * FROM phpgw_categories WHERE cat_id=' . intval($id),__LINE__,__FILE__);
if ($this->db->next_record())
{
$cats = array
(
'cat_id' => $this->db->f('cat_id'),
'owner' => $this->db->f('cat_owner'),
'access' => $this->db->f('cat_access'),
'app_name' => $this->db->f('cat_appname'),
'main' => $this->db->f('cat_main'),
'level' => $this->db->f('cat_level'),
'parent' => $this->db->f('cat_parent'),
'name' => $this->db->f('cat_name'),
'descr' => $this->db->f('cat_description'),
'data' => $this->db->f('cat_data')
);
}
return $cats;
list($cat) = $this->db2cats();
return $cat;
}
/*!
@ -539,8 +525,8 @@
{
if ($values['parent'] && $values['parent'] != 0)
{
$values['main'] = intval($this->id2item(array('cat_id' => $values['parent'],'item' => 'main')));
$values['level'] = intval($this->id2item(array('cat_id' => $values['parent'],'item' => 'level'))+1);
$values['main'] = intval($this->id2item(array('cat_id' => $values['parent'],'item' => 'main')));
$values['level'] = intval($this->id2item(array('cat_id' => $values['parent'],'item' => 'level'))+1);
}
$values['descr'] = $this->db->db_addslashes($values['descr']);
@ -551,17 +537,11 @@
$id_col = 'cat_id,';
$id_val = $values['cat_id'].',';
}
$this->db->query("INSERT INTO phpgw_categories (${id_col}cat_parent,cat_owner,cat_access,cat_appname,cat_name,cat_description,cat_data,"
. "cat_main,cat_level) VALUES ($id_val'" . intval($values['parent']) . "','" . $this->account_id . "','" . $values['access']
. "','" . $this->app_name . "','" . $values['name'] . "','" . $values['descr'] . "','" . $values['data']
. "','" . $values['main'] . "','" . $values['level'] . "')",__LINE__,__FILE__);
if (isset($values['cat_id']))
{
$max = intval($values['cat_id']);
}
$max = $this->db->get_last_insert_id('phpgw_categories','cat_id');
if (!$values['parent'] || $values['parent'] == 0)
@ -603,9 +583,9 @@
{
if ($cats[$i]['level'] == 1)
{
$this->db->query("UPDATE phpgw_categories set cat_level=0, cat_parent=0, cat_main='" . intval($cats[$i]['id'])
. "' WHERE cat_id='" . intval($cats[$i]['id']) . "' AND cat_appname='" . $this->app_name . "'",__LINE__,__FILE__);
$new_main = $cats[$i]['id'];
$this->db->query("UPDATE phpgw_categories set cat_level=0, cat_parent=0, cat_main='" . intval($cats[$i]['cat_id'])
. "' WHERE cat_id='" . intval($cats[$i]['cat_id']) . "' AND cat_appname='" . $this->app_name . "'",__LINE__,__FILE__);
$new_main = $cats[$i]['cat_id'];
}
else
{
@ -620,7 +600,7 @@
}
$this->db->query("UPDATE phpgw_categories set cat_level='" . ($cats[$i]['level']-1) . "'" . $update_main . $update_parent
. " WHERE cat_id='" . intval($cats[$i]['id']) . "' AND cat_appname='" . $this->app_name . "'",__LINE__,__FILE__);
. " WHERE cat_id='" . intval($cats[$i]['cat_id']) . "' AND cat_appname='" . $this->app_name . "'",__LINE__,__FILE__);
}
}
}
@ -634,7 +614,7 @@
{
if (!is_array($main))
{
$this->db->query("SELECT * from phpgw_categories WHERE cat_main = $main");
$this->db->query("SELECT * from phpgw_categories WHERE cat_main = $main",__LINE__,__FILE__);
$main = $this->db2cats();
//echo "main: "; _debug_array($main);
}
@ -644,8 +624,8 @@
$cat = $main[$n];
if ($cat['parent'] == $parent)
{
//echo "Adding($cat['cat_id'])<br>";
$subs[] = $cat;
//echo "Adding($cat[cat_id])<br>";
$subs[$cat['cat_id']] = $cat;
$this->subs($cat['cat_id'],$subs,$main);
}
}
@ -656,11 +636,28 @@
$id = $values['cat_id'];
$parent = $values['parent'];
$old_parent = $values['old_parent'];
$main = $old_parent ? intval($this->id2item(array('cat_id' => $old_parent,'item' => 'main'))) : $id;
//echo "<p>reparent($id,$parent,$old_parent,$main)</p>\n";
$main = $old_parent ? intval($this->id2name($old_parent,'main')) : $id;
//echo "<p>reparent: $id/$main: $old_parent --> $parent</p>\n";
$subs = array();
$this->subs($id,$subs,$main);
//echo "<p>subs($id) = "; _debug_array($subs);
if (isset($subs[$parent]))
{
//echo "<p>new parent $parent is sub of $id</p>\n";
$parent = $subs[$parent];
$parent['old_parent'] = $parent['parent'];
$parent['parent'] = intval($values['old_parent']);
$this->reparent($parent);
unset($parent['old_parent']);
unset($parent['main']);
$this->edit($parent);
$this->reparent($values);
return;
}
$new_main = $parent ? $this->id2name($parent,'main') : $id;
$new_parent_level = $parent ? $this->id2name($parent,'level') : -1;
@ -672,6 +669,7 @@
{
$subs[$n]['main'] = $new_main;
$subs[$n]['level'] -= $level_adj;
//echo "<p>$n: id=".$subs[$n]['cat_id']." set main to $new_main, subs[$n] = \n"; _debug_array($subs[$n]);
$this->edit($subs[$n]);
}
}
@ -693,17 +691,17 @@
$this->reparent($values);
}
else
if (!isset($values['main']) || !isset($values['level']))
{
if ($values['parent'] && ($values['parent'] != 0))
{
$values['main'] = intval($this->id2item(array('cat_id' => $values['parent'],'item' => 'main')));
$values['level'] = intval($this->id2item(array('cat_id' => $values['parent'],'item' => 'level'))+1);
$values['main'] = intval($this->id2item(array('cat_id' => $values['parent'],'item' => 'main')));
$values['level'] = intval($this->id2item(array('cat_id' => $values['parent'],'item' => 'level'))+1);
}
else
{
$values['main'] = intval($values['id']);
$values['level'] = 0;
$values['main'] = intval($values['cat_id']);
$values['parent'] = $values['level'] = 0; // parent need to be set to 0, as it can be ''
}
}
@ -714,7 +712,6 @@
. "', cat_data='" . $values['data'] . "', cat_parent=" . intval($values['parent']) . ", cat_access='"
. $values['access'] . "', cat_main=" . $values['main'] . ", cat_level=" . $values['level']
. " WHERE cat_appname='" . $this->app_name . "' AND cat_id=" . intval($values['cat_id']);
$this->db->query($sql,__LINE__,__FILE__);
return intval($values['cat_id']);
}

View File

@ -19,6 +19,7 @@
var $query;
var $sort;
var $order;
var $cat_id;
function bocategories($cats_app)
{
@ -81,7 +82,10 @@
$this->query = $data['query'];
$this->sort = $data['sort'];
$this->order = $data['order'];
$this->cat_id = $data['cat_id'];
if(isset($data['cat_id']))
{
$this->cat_id = $data['cat_id'];
}
}
function get_list($global_cats)

View File

@ -52,9 +52,13 @@
'start' => $this->start,
'query' => $this->query,
'sort' => $this->sort,
'order' => $this->order,
'cat_id' => $this->cat_id
'order' => $this->order
);
if(isset($this->cat_id))
{
$data['cat_id'] = $this->cat_id;
}
$this->bo->save_sessiondata($data,$cats_app);
}
@ -350,7 +354,7 @@
$edata = explode(',',$extra);
for($i=0;$i<count($edata);$i++)
{
$GLOBALS['phpgw']->template->set_var('td_data$categories[$i]['cat_id']$categories[$i]['cat_id']','<input name="cat_data[' . $edata[$i] . ']" size="50" value="' . $cat_data[$edata[$i]] . '">');
$GLOBALS['phpgw']->template->set_var('td_data','<input name="cat_data[' . $edata[$i] . ']" size="50" value="' . $cat_data[$edata[$i]] . '">');
$GLOBALS['phpgw']->template->set_var('lang_data',lang($edata[$i]));
$GLOBALS['phpgw']->template->fp('rows','data_row',True);
}
@ -430,6 +434,7 @@
$GLOBALS['phpgw']->template->set_var('doneurl',$GLOBALS['phpgw']->link('/index.php',$link_data));
$link_data['menuaction'] = 'preferences.uicategories.edit';
$link_data['cat_id'] = $this->cat_id;
$GLOBALS['phpgw']->template->set_var('actionurl',$GLOBALS['phpgw']->link('/index.php',$link_data));
$GLOBALS['phpgw']->template->set_var('old_parent',$cats['parent']);
@ -555,6 +560,7 @@
$GLOBALS['phpgw']->template->set_var('lang_no',lang('No'));
$link_data['menuaction'] = 'preferences.uicategories.delete';
$link_data['cat_id'] = $this->cat_id;
$GLOBALS['phpgw']->template->set_var('action_url',$GLOBALS['phpgw']->link('/index.php',$link_data));
$GLOBALS['phpgw']->template->set_var('lang_yes',lang('Yes'));
$GLOBALS['phpgw']->template->fp('phpgw_body','category_delete');