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 . '"'; } if($this->debug) { echo '<br>overriding start: "' . $this->start . '" now "' . $start . '"'; }
$this->start = $start; $this->start = $start;
} }
else
{
$this->start = 0;
}
if((empty($query) && !empty($this->query)) || !empty($query)) if((empty($query) && !empty($this->query)) || !empty($query))
{ {
if($this->debug) { echo '<br>setting query to: "' . $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('actionurl',$GLOBALS['phpgw']->link('/index.php',$link_data));
$GLOBALS['phpgw']->template->set_var('doneurl',$GLOBALS['phpgw']->link('/admin/index.php')); $GLOBALS['phpgw']->template->set_var('doneurl',$GLOBALS['phpgw']->link('/admin/index.php'));
if(!$start)
{
$start = 0;
}
if (!$global_cats) if (!$global_cats)
{ {
$global_cats = False; $global_cats = False;
@ -295,9 +290,9 @@
} }
$GLOBALS['phpgw']->template->set_var('category_list',$this->bo->cats->formated_list(array('format' => 'select', $GLOBALS['phpgw']->template->set_var('category_list',$this->bo->cats->formated_list(array('format' => 'select',
'type' => 'all', 'type' => 'all',
'selected' => $parent, 'selected' => $parent,
'globals' => $global_cats))); 'globals' => $global_cats)));
$GLOBALS['phpgw']->template->set_var('cat_name',$values['name']); $GLOBALS['phpgw']->template->set_var('cat_name',$values['name']);
$GLOBALS['phpgw']->template->set_var('cat_description',$values['descr']); $GLOBALS['phpgw']->template->set_var('cat_description',$values['descr']);
@ -343,8 +338,6 @@
$values['access'] = 'public'; $values['access'] = 'public';
} }
//_debug_array($values);
$error = $this->bo->check_values($values); $error = $this->bo->check_values($values);
if (is_array($error)) if (is_array($error))
{ {
@ -369,7 +362,7 @@
} }
$link_data['menuaction'] = 'admin.uicategories.edit'; $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)); $GLOBALS['phpgw']->template->set_var('actionurl',$GLOBALS['phpgw']->link('/index.php',$link_data));
$link_data['menuaction'] = 'admin.uicategories.delete'; $link_data['menuaction'] = 'admin.uicategories.delete';

View File

@ -330,23 +330,9 @@
{ {
$this->db->query('SELECT * FROM phpgw_categories WHERE cat_id=' . intval($id),__LINE__,__FILE__); $this->db->query('SELECT * FROM phpgw_categories WHERE cat_id=' . intval($id),__LINE__,__FILE__);
if ($this->db->next_record()) list($cat) = $this->db2cats();
{
$cats = array return $cat;
(
'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;
} }
/*! /*!
@ -539,8 +525,8 @@
{ {
if ($values['parent'] && $values['parent'] != 0) if ($values['parent'] && $values['parent'] != 0)
{ {
$values['main'] = intval($this->id2item(array('cat_id' => $values['parent'],'item' => 'main'))); $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['level'] = intval($this->id2item(array('cat_id' => $values['parent'],'item' => 'level'))+1);
} }
$values['descr'] = $this->db->db_addslashes($values['descr']); $values['descr'] = $this->db->db_addslashes($values['descr']);
@ -551,17 +537,11 @@
$id_col = 'cat_id,'; $id_col = 'cat_id,';
$id_val = $values['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," $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'] . "cat_main,cat_level) VALUES ($id_val'" . intval($values['parent']) . "','" . $this->account_id . "','" . $values['access']
. "','" . $this->app_name . "','" . $values['name'] . "','" . $values['descr'] . "','" . $values['data'] . "','" . $this->app_name . "','" . $values['name'] . "','" . $values['descr'] . "','" . $values['data']
. "','" . $values['main'] . "','" . $values['level'] . "')",__LINE__,__FILE__); . "','" . $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'); $max = $this->db->get_last_insert_id('phpgw_categories','cat_id');
if (!$values['parent'] || $values['parent'] == 0) if (!$values['parent'] || $values['parent'] == 0)
@ -603,9 +583,9 @@
{ {
if ($cats[$i]['level'] == 1) if ($cats[$i]['level'] == 1)
{ {
$this->db->query("UPDATE phpgw_categories set cat_level=0, cat_parent=0, cat_main='" . intval($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]['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__);
$new_main = $cats[$i]['id']; $new_main = $cats[$i]['cat_id'];
} }
else else
{ {
@ -620,7 +600,7 @@
} }
$this->db->query("UPDATE phpgw_categories set cat_level='" . ($cats[$i]['level']-1) . "'" . $update_main . $update_parent $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)) 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(); $main = $this->db2cats();
//echo "main: "; _debug_array($main); //echo "main: "; _debug_array($main);
} }
@ -644,8 +624,8 @@
$cat = $main[$n]; $cat = $main[$n];
if ($cat['parent'] == $parent) if ($cat['parent'] == $parent)
{ {
//echo "Adding($cat['cat_id'])<br>"; //echo "Adding($cat[cat_id])<br>";
$subs[] = $cat; $subs[$cat['cat_id']] = $cat;
$this->subs($cat['cat_id'],$subs,$main); $this->subs($cat['cat_id'],$subs,$main);
} }
} }
@ -656,11 +636,28 @@
$id = $values['cat_id']; $id = $values['cat_id'];
$parent = $values['parent']; $parent = $values['parent'];
$old_parent = $values['old_parent']; $old_parent = $values['old_parent'];
$main = $old_parent ? intval($this->id2item(array('cat_id' => $old_parent,'item' => 'main'))) : $id; $main = $old_parent ? intval($this->id2name($old_parent,'main')) : $id;
//echo "<p>reparent($id,$parent,$old_parent,$main)</p>\n"; //echo "<p>reparent: $id/$main: $old_parent --> $parent</p>\n";
$subs = array(); $subs = array();
$this->subs($id,$subs,$main); $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_main = $parent ? $this->id2name($parent,'main') : $id;
$new_parent_level = $parent ? $this->id2name($parent,'level') : -1; $new_parent_level = $parent ? $this->id2name($parent,'level') : -1;
@ -672,6 +669,7 @@
{ {
$subs[$n]['main'] = $new_main; $subs[$n]['main'] = $new_main;
$subs[$n]['level'] -= $level_adj; $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]); $this->edit($subs[$n]);
} }
} }
@ -693,17 +691,17 @@
$this->reparent($values); $this->reparent($values);
} }
else if (!isset($values['main']) || !isset($values['level']))
{ {
if ($values['parent'] && ($values['parent'] != 0)) if ($values['parent'] && ($values['parent'] != 0))
{ {
$values['main'] = intval($this->id2item(array('cat_id' => $values['parent'],'item' => 'main'))); $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['level'] = intval($this->id2item(array('cat_id' => $values['parent'],'item' => 'level'))+1);
} }
else else
{ {
$values['main'] = intval($values['id']); $values['main'] = intval($values['cat_id']);
$values['level'] = 0; $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='" . "', cat_data='" . $values['data'] . "', cat_parent=" . intval($values['parent']) . ", cat_access='"
. $values['access'] . "', cat_main=" . $values['main'] . ", cat_level=" . $values['level'] . $values['access'] . "', cat_main=" . $values['main'] . ", cat_level=" . $values['level']
. " WHERE cat_appname='" . $this->app_name . "' AND cat_id=" . intval($values['cat_id']); . " WHERE cat_appname='" . $this->app_name . "' AND cat_id=" . intval($values['cat_id']);
$this->db->query($sql,__LINE__,__FILE__); $this->db->query($sql,__LINE__,__FILE__);
return intval($values['cat_id']); return intval($values['cat_id']);
} }

View File

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

View File

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