From 5d4e591d19fd89de6ca65aafb0b574e6c80c62dd Mon Sep 17 00:00:00 2001 From: Ralf Becker Date: Sat, 19 Jan 2008 05:32:51 +0000 Subject: [PATCH] new private custom fields visible only to certain users/groups, only used in addressbook at the moment, easy to add for other apps, only requires to modify the storage method to only save the available cfs, to not delete the hidden ones --- admin/inc/class.customfields.inc.php | 38 ++++++++++++++---------- admin/setup/etemplates.inc.php | 4 ++- admin/templates/default/customfields.xet | 5 +++- 3 files changed, 30 insertions(+), 17 deletions(-) diff --git a/admin/inc/class.customfields.inc.php b/admin/inc/class.customfields.inc.php index 307d1f97fc..03ea52277e 100644 --- a/admin/inc/class.customfields.inc.php +++ b/admin/inc/class.customfields.inc.php @@ -42,13 +42,20 @@ var $public_functions = array( 'edit' => True ); + /** + * Instance of the config class for the instancated applications + * + * @var config + */ + var $config; function customfields($appname='') { - $this->config =& CreateObject('phpgwapi.config',$this->appname=$appname); + $this->config =& new config($this->appname=$appname); + if ($appname) { - $this->fields = $this->get_customfields(); + $this->fields = $this->get_customfields(true); $this->content_types = $this->get_content_types(); } } @@ -73,7 +80,7 @@ // do we manage content-types? if($this->tmpl->read($this->appname.'.admin.types')) $this->manage_content_types = true; - $this->fields = $this->get_customfields(); + $this->fields = $this->get_customfields(true); $this->tmpl->read('admin.customfields'); if($this->manage_content_types) $this->content_types = $this->get_content_types(); @@ -126,6 +133,7 @@ $content_types = array_keys($this->content_types); $this->content_type = $content_types[0]; } + $content['use_private'] = (boolean)$_GET['use_private']; $referer = $GLOBALS['egw']->common->get_referer(); } @@ -151,7 +159,7 @@ } //echo 'customfields=
'; print_r($this->fields); echo "
\n"; - $content['fields'] = array(); + $content['fields'] = array('use_private' => $content['use_private']); $n = 0; foreach($this->fields as $name => $data) { @@ -178,6 +186,7 @@ } $content['fields'][++$n] = array('name'=>'','order' => 10 * $n); // new line for create if($this->manage_content_types) $content['fields']['type2'] = 'enable'; + $readonlys['fields']["delete[]"] = True; //echo '

uicustomfields.edit(content =

'; print_r($content); echo "
\n"; //echo 'readonlys =
'; print_r($readonlys); echo "
\n"; @@ -188,6 +197,7 @@ 'fields' => $preserv_fields, 'appname' => $this->appname, 'referer' => $referer, + 'use_private' => $content['use_private'], )); } @@ -236,8 +246,9 @@ 'help' => $field['help'], 'values'=> $values, 'len' => $field['len'], - 'rows' => intval($field['rows']), - 'order' => intval($field['order']) + 'rows' => (int)$field['rows'], + 'order' => (int)$field['order'], + 'private' => $field['private'], ); if(!$this->fields[$name]['type2'] && $this->manage_content_types) { @@ -345,29 +356,26 @@ /** * get customfields of using application * + * @deprecated use config::get_customfields() direct, no need to instanciate this UI class * @author Cornelius Weiss + * @param boolean $all_private_too=false should all the private fields be returned too * @return array with customfields */ - function get_customfields() + function get_customfields($all_private_too=false) { - $config = $this->config->read_repository(); - //merge old config_name in phpgw_config table - $config_name = isset($config['customfields']) ? 'customfields' : 'custom_fields'; - - return is_array($config[$config_name]) ? $config[$config_name] : array(); + return config::get_customfields($this->appname,$all_private_too); } /** * get_content_types of using application * + * @deprecated use config::get_content_types() direct, no need to instanciate this UI class * @author Cornelius Weiss * @return array with content-types */ function get_content_types() { - $config = $this->config->read_repository(); - - return is_array($config['types']) ? $config['types'] : array(); + return config::get_content_types($this->appname); } } diff --git a/admin/setup/etemplates.inc.php b/admin/setup/etemplates.inc.php index 251baa7303..e55fc68c74 100644 --- a/admin/setup/etemplates.inc.php +++ b/admin/setup/etemplates.inc.php @@ -2,7 +2,7 @@ /** * eGroupWare - eTemplates for Application admin * http://www.egroupware.org - * generated by soetemplate::dump4setup() 2007-11-24 20:46 + * generated by soetemplate::dump4setup() 2008-01-17 01:59 * * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @package admin @@ -31,6 +31,8 @@ $templ_data[] = array('name' => 'admin.customfields.fields','template' => '','la $templ_data[] = array('name' => 'admin.customfields.fields','template' => '','lang' => '','group' => '0','version' => '1.4.001','data' => 'a:1:{i:0;a:5:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:3:{s:2:"c1";s:2:"th";s:2:"c2";s:7:"row,top";s:1:"C";s:8:",!@type2";}i:1;a:8:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:5:"label";s:4:"Name";s:4:"help";s:83:"the name used internaly (<= 20 chars), changeing it makes existing data unavailible";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Label";}s:1:"C";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"Subtype";}s:1:"D";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"Type";}s:1:"E";a:3:{s:4:"type";s:5:"label";s:5:"label";s:7:"Options";s:4:"help";s:40:"each value is a line like [=