diff --git a/addressbook/inc/class.uifields.inc.php b/addressbook/inc/class.uifields.inc.php new file mode 100644 index 0000000000..f8c8a0defb --- /dev/null +++ b/addressbook/inc/class.uifields.inc.php @@ -0,0 +1,432 @@ + and * + * Miles Lott * + * ----------------------------------------------- * + * This program is free software; you can redistribute it and/or modify it * + * under the terms of the GNU General Public License as published by the * + * Free Software Foundation; either version 2 of the License, or (at your * + * option) any later version. * + \**************************************************************************/ + + /* $Id$ */ + + class uifields + { + var $public_functions = array( + 'index' => True, + 'add' => True, + 'edit' => True, + 'delete' => True + ); + + function uifields($only_bo=False) + { + if (!$only_bo) + { + $GLOBALS['phpgw']->template = CreateObject('phpgwapi.Template',PHPGW_APP_TPL); + $GLOBALS['phpgw']->nextmatchs = CreateObject('phpgwapi.nextmatchs'); + } + $this->config = CreateObject('phpgwapi.config','addressbook'); + } + + 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_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 = $_POST['field']; + $start = $_POST['start'] ? $_POST['start'] : $_GET['start']; + $query = $_POST['query'] ? $_POST['query'] : $_GET['query']; + $sort = $_POST['sort'] ? $_POST['sort'] : $_GET['sort']; + + $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); + $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']; + $title = $fields[$i]['title']; + + $GLOBALS['phpgw']->template->set_var('cfield',$title); + + $params = array( + 'menuaction' => 'addressbook.uifields.edit', + 'field' => urlencode($field), + 'start' => $start, + 'query' => $query, + 'sort' => $sort, + 'order' => $order, + 'filter' => $filter + ); + $GLOBALS['phpgw']->template->set_var('edit',$GLOBALS['phpgw']->link('/index.php',$params)); + $GLOBALS['phpgw']->template->set_var('lang_edit_entry',lang('Edit')); + + $params['menuaction'] = 'addressbook.uifields.delete'; + $GLOBALS['phpgw']->template->set_var('delete',$GLOBALS['phpgw']->link('/index.php',$params)); + $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'); + } + + 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_exit(); + } + + $field = stripslashes($_POST['field']); + $field_name = stripslashes($_POST['field_name']); + $start = $_POST['start']; + $query = $_POST['query']; + $sort = $_POST['sort']; + $submit = $_POST['submit']; + + $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($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) + { + $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 %1 has been added !', $field_name)); + } + if((!$submit) && (!$error) && (!$errorcount)) + { + $GLOBALS['phpgw']->template->set_var('message',''); + } + + $GLOBALS['phpgw']->template->set_var('title_fields',lang('Add 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_exit(); + } + + $field = stripslashes($_POST['field'] ? $_POST['field'] : $_GET['field']); + $field_name = stripslashes($_POST['field_name']); + $start = $_POST['start'] ? $_POST['start'] : $_GET['start']; + $query = $_POST['query'] ? $_POST['query'] : $_GET['query']; + $sort = $_POST['sort'] ? $_POST['sort'] : $_GET['sort']; + $submit = $_POST['submit']; + + 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($submit) + { + $errorcount = 0; + if(!$field_name) + { + $error[$errorcount++] = lang('Please enter a name for that field !'); + } + + 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 %1 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]['title']); + $fn = $fields[0]['name']; + } + + $GLOBALS['phpgw']->template->set_var('title_fields',lang('Edit Custom 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.uifields.delete&field=$fn&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() + { + 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_exit(); + } + + $field = urldecode($_POST['field'] ? $_POST['field'] : $_GET['field']); + $field_id = $_POST['field_id'] ? $_POST['field_id'] : $_GET['field_id']; + $start = $_POST['start'] ? $_POST['start'] : $_GET['start']; + $query = $_POST['query'] ? $_POST['query'] : $_GET['query']; + $sort = $_POST['sort'] ? $_POST['sort'] : $_GET['sort']; + + if(!$field) + { + Header('Location: ' . $GLOBALS['phpgw']->link('/index.php','menuaction=addressbook.uifields.index')); + } + + if($_POST['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($start=0,$limit=5,$query='') + { + $i = 0; + $fields = array(); + + $this->config->read_repository(); + + while(list($name,$descr) = @each($this->config->config_data['custom_fields'])) + { + /* + if($start < $i) + { + continue; + } + */ + + $test = @strtolower($name); + //if($query && !strstr($test,strtolower($query))) + if($query && ($query != $test)) + { + } + else + { + $fields[$i]['name'] = $name; + $fields[$i]['title'] = $descr; + $fields[$i]['id'] = $i; + + /* + if($i >= $limit) + { + break; + } + */ + $i++; + } + } + switch($sort) + { + case 'DESC'; + krsort($fields); + break; + case 'ASC': + default: + ksort($fields); + } + @reset($fields); + + return $fields; + } + + function save_custom_field($old='',$new='') + { + $this->config->read_repository(); + + if(!is_array($this->config->config_data['custom_fields'])) + { + $this->config->config_data['custom_fields'] = array(); + } + + if($old) + { + unset($this->config->config_data['custom_fields'][$old]); + } + if($new) + { + $tmp = strtolower(str_replace(' ','_',$new)); + $this->config->config_data['custom_fields'][$tmp] = $new; + } + + $this->config->save_repository(); + } + } +?>