From 267ca571688d8abcbaf657de3c6bc2208bbb3208 Mon Sep 17 00:00:00 2001 From: Miles Lott Date: Mon, 24 Dec 2001 17:35:58 +0000 Subject: [PATCH] new version of custom field editor in ui form --- addressbook/inc/class.uifields.inc.php | 384 +++++++++++++++++++++++++ 1 file changed, 384 insertions(+) create mode 100644 addressbook/inc/class.uifields.inc.php diff --git a/addressbook/inc/class.uifields.inc.php b/addressbook/inc/class.uifields.inc.php new file mode 100644 index 0000000000..0ffc9456ca --- /dev/null +++ b/addressbook/inc/class.uifields.inc.php @@ -0,0 +1,384 @@ + True, + 'add' => True, + 'edit' => True, + 'delete' => True + ); + + function uifields() + { + $GLOBALS['phpgw']->template = CreateObject('phpgwapi.Template',PHPGW_APP_TPL); + $GLOBALS['phpgw']->nextmatchs = CreateObject('phpgwapi.nextmatchs'); + } + + function index() + { + if(!$GLOBALS['phpgw']->acl->check('run',1,'admin')) + { + $GLOBALS['phpgw']->common->phpgw_header(); + echo parse_navbar(); + echo lang('access not permitted'); + $GLOBALS['phpgw']->common->phpgw_footer(); + $GLOBALS['phpgw']->common->phpgw_exit(); + } + + $GLOBALS['phpgw']->template->set_file(array( + 'field_list_t' => 'listfields.tpl', + 'field_list' => 'listfields.tpl' + )); + $GLOBALS['phpgw']->template->set_block('field_list_t','field_list','list'); + + $field = $GLOBALS['HTTP_POST_VARS']['field']; + $start = $GLOBALS['HTTP_POST_VARS']['start']; + $query = $GLOBALS['HTTP_POST_VARS']['query']; + $sort = $GLOBALS['HTTP_POST_VARS']['sort']; + $order = $GLOBALS['HTTP_POST_VARS']['order']; + $filter = $GLOBALS['HTTP_POST_VARS']['filter']; + + $common_hidden_vars = + '' . "\n" + . '' . "\n" + . '' . "\n" + . '' . "\n" + . '' . "\n"; + + $GLOBALS['phpgw']->template->set_var('lang_action',lang('Custom Fields')); + $GLOBALS['phpgw']->template->set_var('add_action',$GLOBALS['phpgw']->link('/index.php','menuaction=addressbook.uifields.add')); + $GLOBALS['phpgw']->template->set_var('lang_add',lang('Add')); + $GLOBALS['phpgw']->template->set_var('title_fields',lang('addressbook').' - '.lang('Custom Fields')); + $GLOBALS['phpgw']->template->set_var('lang_search',lang('Search')); + $GLOBALS['phpgw']->template->set_var('actionurl',$GLOBALS['phpgw']->link('/index.php','menuaction=addressbook.uifields.index')); + $GLOBALS['phpgw']->template->set_var('lang_done',lang('Done')); + $GLOBALS['phpgw']->template->set_var('doneurl',$GLOBALS['phpgw']->link('/admin/index.php')); + + if (!$start) + { + $start = 0; + } + + if (!$sort) + { + $sort = 'ASC'; + } + + $fields = $this->read_custom_fields($start,$limit,$query,$sort,$order); + $total_records = count($fields); + + $GLOBALS['phpgw']->common->phpgw_header(); + echo parse_navbar(); + + $GLOBALS['phpgw']->template->set_var('left',$GLOBALS['phpgw']->nextmatchs->left('/index.php',$start,$total_records,'menuaction=addressbook.uifields.index')); + $GLOBALS['phpgw']->template->set_var('right',$GLOBALS['phpgw']->nextmatchs->right('/index.php',$start,$total_records,'menuaction=addressbook.uifields.index')); + + $GLOBALS['phpgw']->template->set_var('lang_showing',$GLOBALS['phpgw']->nextmatchs->show_hits($total_records,$start)); + + $GLOBALS['phpgw']->template->set_var('th_bg',$GLOBALS['phpgw_info']['theme']['th_bg']); + $GLOBALS['phpgw']->template->set_var('sort_field',$GLOBALS['phpgw']->nextmatchs->show_sort_order($sort,'name',$order,'/index.php',lang('Name')),'menuaction=addressbook.uifields.index'); + $GLOBALS['phpgw']->template->set_var('lang_edit',lang('Edit')); + $GLOBALS['phpgw']->template->set_var('lang_delete',lang('Delete')); + + for ($i=0;$inextmatchs->alternate_row_color($tr_color); + $GLOBALS['phpgw']->template->set_var(tr_color,$tr_color); + + $field = $fields[$i]['name']; + + $GLOBALS['phpgw']->template->set_var('cfield',$field); + + $GLOBALS['phpgw']->template->set_var('edit',$GLOBALS['phpgw']->link('/index.php',"menuaction=addressbook.uifields.edit&field=$field&start=$start&query=$query&sort=$sort&order=$order&filter=$filter")); + $GLOBALS['phpgw']->template->set_var('lang_edit_entry',lang('Edit')); + + $GLOBALS['phpgw']->template->set_var('delete',$GLOBALS['phpgw']->link('/index.php',"menuaction=addressbook.uifields.delete&field=$field&start=$start&query=$query&sort=$sort&order=$order&filter=$filter")); + $GLOBALS['phpgw']->template->set_var('lang_delete_entry',lang('Delete')); + $GLOBALS['phpgw']->template->parse('list','field_list',True); + } + + $GLOBALS['phpgw']->template->parse('out','field_list_t',True); + $GLOBALS['phpgw']->template->p('out'); + + $GLOBALS['phpgw']->common->phpgw_footer(); + } + + function add() + { + if(!$GLOBALS['phpgw']->acl->check('run',1,'admin')) + { + $GLOBALS['phpgw']->common->phpgw_header(); + echo parse_navbar(); + echo lang('access not permitted'); + $GLOBALS['phpgw']->common->phpgw_footer(); + $GLOBALS['phpgw']->common->phpgw_exit(); + } + + $field = $GLOBALS['HTTP_POST_VARS']['field']; + $field_name = $GLOBALS['HTTP_POST_VARS']['field_name']; + $start = $GLOBALS['HTTP_POST_VARS']['start']; + $query = $GLOBALS['HTTP_POST_VARS']['query']; + $sort = $GLOBALS['HTTP_POST_VARS']['sort']; + + $GLOBALS['phpgw']->template->set_file(array('form' => 'field_form.tpl')); + $GLOBALS['phpgw']->template->set_block('form','add','addhandle'); + $GLOBALS['phpgw']->template->set_block('form','edit','edithandle'); + + if ($GLOBALS['HTTP_POST_VARS']['submit']) + { + $errorcount = 0; + + if (!$field_name) + { + $error[$errorcount++] = lang('Please enter a name for that field !'); + } + + $fields = $this->read_custom_fields($start,$limit,$field_name); + if ($fields[0]['name']) + { + $error[$errorcount++] = lang('That field name has been used already !'); + } + + if (! $error) + { + $field_name = addslashes($field_name); + $this->save_custom_field($field,$field_name); + } + } + + $GLOBALS['phpgw']->common->phpgw_header(); + echo parse_navbar(); + + if ($errorcount) + { + $GLOBALS['phpgw']->template->set_var('message',$GLOBALS['phpgw']->common->error_list($error)); + } + if (($submit) && (! $error) && (! $errorcount)) + { + $GLOBALS['phpgw']->template->set_var('message',lang('Field x has been added !', $field_name)); + } + if ((! $submit) && (! $error) && (! $errorcount)) + { + $GLOBALS['phpgw']->template->set_var('message',''); + } + + $GLOBALS['phpgw']->template->set_var('title_fields',lang('Add'). ' ' . lang('Custom Field')); + $GLOBALS['phpgw']->template->set_var('actionurl',$GLOBALS['phpgw']->link('/index.php','menuaction=addressbook.uifields.add')); + $GLOBALS['phpgw']->template->set_var('doneurl',$GLOBALS['phpgw']->link('/index.php','menuaction=addressbook.uifields.index')); + $GLOBALS['phpgw']->template->set_var('hidden_vars',''); + + $GLOBALS['phpgw']->template->set_var('lang_name',lang('Field name')); + + $GLOBALS['phpgw']->template->set_var('lang_add',lang('Add')); + $GLOBALS['phpgw']->template->set_var('lang_reset',lang('Clear Form')); + $GLOBALS['phpgw']->template->set_var('lang_done',lang('Done')); + + $GLOBALS['phpgw']->template->set_var('field_name',$field_name); + + $GLOBALS['phpgw']->template->set_var('edithandle',''); + $GLOBALS['phpgw']->template->set_var('addhandle',''); + $GLOBALS['phpgw']->template->pparse('out','form'); + $GLOBALS['phpgw']->template->pparse('addhandle','add'); + } + + function edit() + { + if(!$GLOBALS['phpgw']->acl->check('run',1,'admin')) + { + $GLOBALS['phpgw']->common->phpgw_header(); + echo parse_navbar(); + echo lang('access not permitted'); + $GLOBALS['phpgw']->common->phpgw_footer(); + $GLOBALS['phpgw']->common->phpgw_exit(); + + } + + $field = $GLOBALS['HTTP_POST_VARS']['field'] ? $GLOBALS['HTTP_POST_VARS']['field'] : $GLOBALS['HTTP_GET_VARS']['field']; + $field_name = $GLOBALS['HTTP_POST_VARS']['field_name']; + $start = $GLOBALS['HTTP_POST_VARS']['start'] ? $GLOBALS['HTTP_POST_VARS']['start'] : $GLOBALS['HTTP_GET_VARS']['start']; + $query = $GLOBALS['HTTP_POST_VARS']['query'] ? $GLOBALS['HTTP_POST_VARS']['query'] : $GLOBALS['HTTP_GET_VARS']['query']; + $sort = $GLOBALS['HTTP_POST_VARS']['sort'] ? $GLOBALS['HTTP_POST_VARS']['sort'] : $GLOBALS['HTTP_GET_VARS']['sort']; + + if (!$field) + { + Header('Location: ' . $GLOBALS['phpgw']->link('/index.php',"menuaction=addressbook.uifields.index&sort=$sort&query=$query&start=$start")); + } + + $GLOBALS['phpgw']->template->set_file(array('form' => 'field_form.tpl')); + $GLOBALS['phpgw']->template->set_block('form','add','addhandle'); + $GLOBALS['phpgw']->template->set_block('form','edit','edithandle'); + + $hidden_vars = '' . "\n" + . '' . "\n" + . '' . "\n" + . '' . "\n"; + + if ($GLOBALS['HTTP_POST_VARS']['submit']) + { + $errorcount = 0; + if (!$field_name) { $error[$errorcount++] = lang('Please enter a name for that field!'); } + + $field_name = addslashes($field_name); + + if (! $error) + { + $this->save_custom_field($field,$field_name); + } + } + + $GLOBALS['phpgw']->common->phpgw_header(); + echo parse_navbar(); + + if ($errorcount) + { + $GLOBALS['phpgw']->template->set_var('message',$GLOBALS['phpgw']->common->error_list($error)); + } + if (($submit) && (! $error) && (! $errorcount)) + { + $GLOBALS['phpgw']->template->set_var('message',lang('Field x has been updated !', $field_name)); + } + if ((! $submit) && (! $error) && (! $errorcount)) + { + $GLOBALS['phpgw']->template->set_var('message',''); + } + + if ($submit) + { + $field = $field_name; + } + else + { + $fields = $this->read_custom_fields($start,$limit,$field); + $field = $GLOBALS['phpgw']->strip_html($fields[0]['name']); + } + + $GLOBALS['phpgw']->template->set_var('title_fields',lang('Edit Field')); + $GLOBALS['phpgw']->template->set_var('actionurl',$GLOBALS['phpgw']->link('/index.php','menuaction=addressbook.uifields.edit')); + $GLOBALS['phpgw']->template->set_var('deleteurl',$GLOBALS['phpgw']->link('/index.php',"menuaction=addressbook.uifieldsdelete&field=$field&start=$start&query=$query&sort=$sort")); + $GLOBALS['phpgw']->template->set_var('doneurl',$GLOBALS['phpgw']->link('/index.php',"menuaction=addressbook.uifields.index&start=$start&query=$query&sort=$sort")); + + $GLOBALS['phpgw']->template->set_var('hidden_vars',$hidden_vars); + $GLOBALS['phpgw']->template->set_var('lang_name',lang('Field name')); + + $GLOBALS['phpgw']->template->set_var('lang_done',lang('Done')); + $GLOBALS['phpgw']->template->set_var('lang_edit',lang('Edit')); + $GLOBALS['phpgw']->template->set_var('lang_delete',lang('Delete')); + + $GLOBALS['phpgw']->template->set_var('field_name',$field); + + $GLOBALS['phpgw']->template->set_var('edithandle',''); + $GLOBALS['phpgw']->template->set_var('addhandle',''); + + $GLOBALS['phpgw']->template->pparse('out','form'); + $GLOBALS['phpgw']->template->pparse('edithandle','edit'); + } + + function delete() + { + $field = $GLOBALS['HTTP_POST_VARS']['field'] ? $GLOBALS['HTTP_POST_VARS']['field'] : $GLOBALS['HTTP_GET_VARS']['field']; + $field_id = $GLOBALS['HTTP_POST_VARS']['field_id'] ? $GLOBALS['HTTP_POST_VARS']['field_id'] : $GLOBALS['HTTP_GET_VARS']['field_id']; + $start = $GLOBALS['HTTP_POST_VARS']['start'] ? $GLOBALS['HTTP_POST_VARS']['start'] : $GLOBALS['HTTP_GET_VARS']['start']; + $query = $GLOBALS['HTTP_POST_VARS']['query'] ? $GLOBALS['HTTP_POST_VARS']['query'] : $GLOBALS['HTTP_GET_VARS']['query']; + $sort = $GLOBALS['HTTP_POST_VARS']['sort'] ? $GLOBALS['HTTP_POST_VARS']['sort'] : $GLOBALS['HTTP_GET_VARS']['sort']; + + if (!$field) + { + Header('Location: ' . $GLOBALS['phpgw']->link('/index.php','menuaction=addressbook.uifields.index')); + } + + if ($GLOBALS['HTTP_POST_VARS']['confirm']) + { + $this->save_custom_field($field); + Header('Location: ' . $GLOBALS['phpgw']->link('/index.php',"menuaction=addressbook.uifields.index&start=$start&query=$query&sort=$sort")); + } + else + { + $GLOBALS['phpgw']->common->phpgw_header(); + echo parse_navbar(); + + $hidden_vars = '' . "\n" + . '' . "\n" + . '' . "\n" + . '' . "\n" + . '' . "\n"; + + $GLOBALS['phpgw']->template->set_file(array('field_delete' => 'delete_common.tpl')); + $GLOBALS['phpgw']->template->set_var('messages',lang('Are you sure you want to delete this field?')); + + $nolinkf = $GLOBALS['phpgw']->link('/index.php',"menuaction=addressbook.uifields.index&field_id=$field_id&start=$start&query=$query&sort=$sort"); + $nolink = '' . lang('No') . ''; + $GLOBALS['phpgw']->template->set_var('no',$nolink); + + $yeslinkf = $GLOBALS['phpgw']->link('/index.php','menuaction=addressbook.uifieldsdelete&field_id=' . $field_id . '&confirm=True'); + $yeslinkf = '
' + . $hidden_vars + . '' + . '' + . '' + . '
'; + + $yeslink = '' . lang('Yes') . ''; + $yeslink = $yeslinkf; + $GLOBALS['phpgw']->template->set_var('yes',$yeslink); + + $GLOBALS['phpgw']->template->pparse('out','field_delete'); + } + } + + function read_custom_fields() + { + $i = 0; $j = 0; + $fields = array(); + @reset($GLOBALS['phpgw_info']['user']['preferences']['addressbook']); + while (list($col,$descr) = @each($GLOBALS['phpgw_info']['user']['preferences']['addressbook'])) + { + if ( substr($col,0,6) == 'extra_' ) + { + $fields[$j]['name'] = ereg_replace('extra_','',$col); + $fields[$j]['name'] = ereg_replace(' ','_',$fields[$j]['name']); + $fields[$j]['id'] = $i; + + if ($query && ($fields[$j]['name'] != $query)) + { + unset($fields[$j]['name']); + unset($fields[$j]['id']); + } + else + { + /* echo "
".$j.": '".$fields[$j]['name']."'"; */ + $j++; + } + } + $i++; + } + @reset($fields); + return $fields; + } + + function save_custom_field($old='',$new='') + { + $GLOBALS['phpgw']->preferences->read_repository($GLOBALS['phpgw_info']['user']['account_id']); + if ($old) + { + $GLOBALS['phpgw']->preferences->delete("addressbook","extra_".$old); + } + if($new) + { + $GLOBALS['phpgw']->preferences->add("addressbook","extra_".$new); + } + $GLOBALS['phpgw']->preferences->save_repository(1); + } + } +?>