diff --git a/infolog/inc/class.boinfolog.inc.php b/infolog/inc/class.boinfolog.inc.php index 210b74ecfd..25c69cb387 100644 --- a/infolog/inc/class.boinfolog.inc.php +++ b/infolog/inc/class.boinfolog.inc.php @@ -99,6 +99,12 @@ class boinfolog * @var array */ var $customfields=array(); + /** + * Group owners for certain types read from the infolog config + * + * @var array + */ + var $group_owners=array(); /** * Constructor Infolog BO @@ -145,8 +151,6 @@ class boinfolog 'done' => 'done' )); - $this->so =& new soinfolog(); - if (!is_object($GLOBALS['egw']->link) && $instanciate_link) { $GLOBALS['egw']->link =& CreateObject('phpgwapi.bolink'); @@ -185,6 +189,9 @@ class boinfolog if (($val = lang($key)) != $key.'*') $this->enums['type'][$key] = lang($key); } natcasesort($this->enums['type']); + + if ($this->config->config_data['group_owners']) $this->group_owners = $this->config->config_data['group_owners']; + if (isset($this->config->config_data['customfields']) && is_array($this->config->config_data['customfields'])) { if (!($this->customfields = $this->config->config_data['customfields'])) $this->customfields = array(); @@ -220,6 +227,9 @@ class boinfolog $this->tz_offset_s = 60*60*$this->tz_offset; $this->user_time_now = time() + $this->tz_offset_s; + $this->grants = $GLOBALS['egw']->acl->get_grants('infolog',$this->group_owners ? $this->group_owners : true); + $this->so =& new soinfolog($this->grants); + // are we called via xmlrpc? $this->xmlrpc = is_object($GLOBALS['server']) && $GLOBALS['server']->last_method; @@ -558,7 +568,15 @@ class boinfolog $values['info_subject'] = $this->subject_from_des($values['info_des']); } } - if (!$values['info_id'] && !$values['info_owner']) + if (isset($this->group_owners[$values['info_type']])) + { + $values['info_owner'] = $this->group_owners[$values['info_type']]; + if (!($this->grants[$this->group_owners[$values['info_type']]] & EGW_ACL_EDIT)) + { + return false; // no edit rights from the group-owner + } + } + elseif (!$values['info_id'] && !$values['info_owner'] || $GLOBALS['egw']->accounts->get_type($values['info_owner']) == 'g') { $values['info_owner'] = $this->so->user; } diff --git a/infolog/inc/class.soinfolog.inc.php b/infolog/inc/class.soinfolog.inc.php index 388dc4af41..4c259101a5 100644 --- a/infolog/inc/class.soinfolog.inc.php +++ b/infolog/inc/class.soinfolog.inc.php @@ -73,22 +73,23 @@ class soinfolog // DB-Layer * @var int */ var $tz_offset; - + /** - * constructor + * Constructor + * + * @param array $grants + * @return soinfolog */ - function soinfolog( $info_id = 0) + function soinfolog( &$grants ) { $this->db = clone($GLOBALS['egw']->db); $this->db->set_app('infolog'); - $this->grants = $GLOBALS['egw']->acl->get_grants('infolog'); + $this->grants =& $grants; $this->user = $GLOBALS['egw_info']['user']['account_id']; $this->links =& new solink(); $this->tz_offset = $GLOBALS['egw_info']['user']['preferences']['common']['tz_offset']; - - $this->read( $info_id ); } /** diff --git a/infolog/inc/class.uicustomfields.inc.php b/infolog/inc/class.uicustomfields.inc.php index 69c8806ae6..2ff6710fb4 100644 --- a/infolog/inc/class.uicustomfields.inc.php +++ b/infolog/inc/class.uicustomfields.inc.php @@ -49,6 +49,12 @@ class uicustomfields * @var config */ var $config; + /** + * Group owners for certain types read from the infolog config + * + * @var array + */ + var $group_owners; function uicustomfields( ) { @@ -58,6 +64,7 @@ class uicustomfields $this->status = &$this->bo->status; $this->config = &$this->bo->config; $this->fields = &$this->bo->customfields; + $this->group_owners =& $this->bo->group_owners; $GLOBALS['egw']->translation->add_app('etemplate'); foreach($this->cf_types as $name => $label) $this->cf_types[$name] = lang($label); @@ -159,6 +166,8 @@ class uicustomfields } $content['fields'][++$n] = array('type2'=>'','order' => 10 * $n); // new line for create $readonlys['fields']["delete[]"] = True; + + $content['group_owner'] = $this->group_owners[$content['type2']]; //echo '

uicustomfields.edit(content =

'; print_r($content); echo "
\n"; //echo 'readonlys =
'; print_r($readonlys); echo "
\n"; @@ -316,7 +325,15 @@ class uicustomfields { $this->update_status($content); $this->update_fields($content); - + + if ($content['group_owner']) + { + $this->group_owners[$content['type2']] = $content['group_owner']; + } + else + { + unset($this->group_owners[$content['type2']]); + } // save changes to repository $this->save_repository(); } @@ -371,6 +388,8 @@ class uicustomfields $this->config->value('status',$this->status); //echo '

uicustomfields::save_repository() \$this->fields=

'; print_r($this->fields); echo "
\n"; $this->config->value('customfields',$this->fields); + + $this->config->value('group_owners',$this->group_owners); $this->config->save_repository(); } diff --git a/infolog/inc/class.uiinfolog.inc.php b/infolog/inc/class.uiinfolog.inc.php index 63ba2f2079..518782e849 100644 --- a/infolog/inc/class.uiinfolog.inc.php +++ b/infolog/inc/class.uiinfolog.inc.php @@ -941,6 +941,42 @@ class uiinfolog $content['info_type'] = 'note'; } } + // group owners + $types = $this->bo->enums['type']; + if ($this->bo->group_owners) + { + // remove types owned by groups the user has no edit grant (current type is made readonly) + foreach($this->bo->group_owners as $type => $group) + { + if (!($this->bo->grants[$group] & EGW_ACL_EDIT)) + { + if ($type == $content['info_type']) + { + //echo "

setting type to r/o as user has no edit rights from group #$group

\n"; + $readonlys['info_type'] = true; + } + else + { + unset($types[$type]); + } + } + } + // set group as owner if type has a group-owner set + if (isset($this->bo->group_owners[$content['info_type']])) + { + $content['info_owner'] = $this->bo->group_owners[$content['info_type']]; + // Dont allow to change the type, if user has no delete rights from the group-owner + if ($info_id && !($this->bo->grants[$content['info_owner']] & EGW_ACL_DELETE)) + { + //echo "

setting type to r/o as user has no delete rights from group #$group

\n"; + $readonlys['info_type'] = true; + } + } + elseif($GLOBALS['egw']->accounts->get_type($content['info_owner']) == 'g') + { + $content['info_owner'] = $this->user; + } + } // for implizit edit of responsible user make all fields readonly, but status and percent if ($info_id && !$this->bo->check_access($info_id,EGW_ACL_EDIT) && $this->bo->is_responsible($content)) { @@ -984,7 +1020,8 @@ class uiinfolog !isset($GLOBALS['egw_info']['user']['apps']['admin']); $content['duration_format'] = $this->duration_format; - + if ($this->prefs['show_id']) $content['info_number'] = $info_id; + $old_pm_id = is_array($pm_links) ? array_shift($pm_links) : $content['old_pm_id']; if (!isset($content['pm_id']) && $old_pm_id) $content['pm_id'] = $old_pm_id; @@ -993,7 +1030,7 @@ class uiinfolog $GLOBALS['egw_info']['flags']['params']['manual'] = array('page' => ($info_id ? 'ManualInfologEdit' : 'ManualInfologAdd')); //echo "

uiinfolog.edit(info_id='$info_id',action='$action',action_id='$action_id') readonlys="; print_r($readonlys); echo ", content = "; _debug_array($content); $this->tmpl->exec('infolog.uiinfolog.edit',$content,array( - 'info_type' => $this->bo->enums['type'], + 'info_type' => $types, 'info_priority' => $this->bo->enums['priority'], 'info_confirm' => $this->bo->enums['confirm'], 'info_status' => $this->bo->status[$content['info_type']] @@ -1016,6 +1053,8 @@ class uiinfolog 'info_price' => $content['info_price'], 'info_used_time' => $content['info_used_time'], 'info_planned_time' => $content['info_planned_time'], + // preserve the type in case it's readonly (no delete rights from group owner) + 'info_type' => $content['info_type'], ),$no_popup ? 0 : 2); } diff --git a/infolog/setup/etemplates.inc.php b/infolog/setup/etemplates.inc.php index 8fc443439f..85198c9cd9 100644 --- a/infolog/setup/etemplates.inc.php +++ b/infolog/setup/etemplates.inc.php @@ -2,7 +2,7 @@ /** * eGroupWare - eTemplates for Application infolog * http://www.egroupware.org - * generated by soetemplate::dump4setup() 2007-03-06 12:12 + * generated by soetemplate::dump4setup() 2007-03-12 10:59 * * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @package infolog @@ -12,18 +12,14 @@ $templ_version=1; -$templ_data[] = array('name' => 'infolog%','template' => '','lang' => '','group' => '0','version' => '1.0.1.001','data' => 'a:1:{i:0;a:5:{s:4:"type";s:4:"grid";s:4:"data";a:5:{i:0;a:3:{s:1:"A";s:3:"95%";s:2:"h1";s:2:",1";s:2:"h2";s:7:",!@main";}i:1;a:3:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"span";s:11:",headertext";s:4:"name";s:9:"appheader";}s:1:"B";a:4:{s:4:"type";s:5:"label";s:4:"span";s:11:",headertext";s:5:"label";s:4:"Add:";s:5:"align";s:5:"right";}s:1:"C";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"3";i:1;a:6:{s:4:"type";s:6:"button";s:4:"size";s:4:"task";s:5:"label";s:4:"ToDo";s:5:"align";s:5:"right";s:4:"name";s:9:"add[task]";s:4:"help";s:14:"Add a new ToDo";}i:2;a:5:{s:4:"type";s:6:"button";s:4:"size";s:5:"phone";s:5:"label";s:9:"Phonecall";s:4:"name";s:10:"add[phone]";s:4:"help";s:19:"Add a new Phonecall";}i:3;a:5:{s:4:"type";s:6:"button";s:4:"size";s:4:"note";s:5:"label";s:4:"Note";s:4:"name";s:9:"add[note]";s:4:"help";s:14:"Add a new Note";}}}i:2;a:3:{s:1:"A";a:4:{s:4:"type";s:8:"template";s:4:"size";s:4:"main";s:4:"span";s:3:"all";s:4:"name";s:27:"infolog.index.rows-noheader";}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:3;a:3:{s:1:"A";a:4:{s:4:"type";s:9:"nextmatch";s:4:"size";s:20:"infolog.index.rows,1";s:4:"span";s:3:"all";s:4:"name";s:2:"nm";}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:4;a:3:{s:1:"A";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";s:4:"span";s:3:"all";i:1;a:4:{s:4:"type";s:6:"button";s:5:"label";s:3:"Add";s:4:"name";s:9:"add[note]";s:4:"help";s:15:"Add a new Entry";}i:2;a:4:{s:4:"type";s:6:"button";s:5:"label";s:6:"Cancel";s:4:"name";s:6:"cancel";s:4:"help";s:17:"Back to main list";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:4;s:4:"cols";i:3;s:4:"size";s:12:"100%,,0,,0,0";}}','size' => '100%,,0,,0,0','style' => '.headertext { color: black; font-size: 120%; }','modified' => '1121355520',); - -$templ_data[] = array('name' => 'infolog.customfields','template' => '','lang' => '','group' => '0','version' => '0.9.15.001','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:7:{i:0;a:3:{s:1:"F";s:3:"80%";s:2:"c2";s:6:"header";s:2:"c4";s:6:"header";}i:1;a:6:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:3:"Typ";}s:1:"B";a:4:{s:4:"type";s:6:"select";s:4:"name";s:3:"typ";s:8:"onchange";s:1:"1";s:4:"help";s:52:"select a typ to edit it\'s status-values or delete it";}s:1:"C";a:4:{s:4:"type";s:6:"button";s:5:"label";s:6:"Delete";s:4:"name";s:14:"button[delete]";s:4:"help";s:24:"deletes the selected typ";}s:1:"D";a:5:{s:4:"type";s:4:"text";s:4:"size";s:5:"10,10";s:4:"name";s:8:"new_name";s:4:"help";s:26:"name of new type to create";s:4:"blur";s:8:"new name";}s:1:"E";a:4:{s:4:"type";s:6:"button";s:5:"label";s:6:"Create";s:4:"name";s:14:"button[create]";s:4:"help";s:37:"creates a new typ with the given name";}s:1:"F";a:5:{s:4:"type";s:5:"label";s:4:"span";s:10:",error_msg";s:7:"no_lang";s:1:"1";s:5:"align";s:6:"center";s:4:"name";s:9:"error_msg";}}i:2;a:6:{s:1:"A";a:4:{s:4:"type";s:5:"label";s:4:"span";s:3:"all";s:5:"label";s:21:"Custom status for typ";s:4:"name";s:3:"typ";}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:1:{s:4:"type";s:5:"label";}s:1:"E";a:1:{s:4:"type";s:5:"label";}s:1:"F";a:1:{s:4:"type";s:5:"label";}}i:3;a:6:{s:1:"A";a:4:{s:4:"type";s:8:"template";s:4:"size";s:6:"status";s:4:"span";s:3:"all";s:4:"name";s:6:"status";}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:1:{s:4:"type";s:5:"label";}s:1:"E";a:1:{s:4:"type";s:5:"label";}s:1:"F";a:1:{s:4:"type";s:5:"label";}}i:4;a:6:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"span";s:3:"all";s:5:"label";s:13:"Custom fields";}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:1:{s:4:"type";s:5:"label";}s:1:"E";a:1:{s:4:"type";s:5:"label";}s:1:"F";a:1:{s:4:"type";s:5:"label";}}i:5;a:6:{s:1:"A";a:4:{s:4:"type";s:8:"template";s:4:"size";s:6:"fields";s:4:"span";s:3:"all";s:4:"name";s:6:"fields";}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:1:{s:4:"type";s:5:"label";}s:1:"E";a:1:{s:4:"type";s:5:"label";}s:1:"F";a:1:{s:4:"type";s:5:"label";}}i:6;a:6:{s:1:"A";a:6:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"3";s:4:"span";s:3:"all";i:1;a:4:{s:4:"type";s:6:"button";s:5:"label";s:4:"Save";s:4:"name";s:12:"button[save]";s:4:"help";s:33:"saves the changes made and leaves";}i:2;a:4:{s:4:"type";s:6:"button";s:5:"label";s:5:"Apply";s:4:"name";s:13:"button[apply]";s:4:"help";s:19:"applies the changes";}i:3;a:4:{s:4:"type";s:6:"button";s:5:"label";s:6:"Cancel";s:4:"name";s:14:"button[cancel]";s:4:"help";s:22:"leaves without saveing";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:1:{s:4:"type";s:5:"label";}s:1:"E";a:1:{s:4:"type";s:5:"label";}s:1:"F";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:6;s:4:"cols";i:6;}}','size' => '','style' => '.header { font-weight: bold; font-size: 120%; } -.error_msg { color: red; font-style: italics; }','modified' => '1061729975',); - $templ_data[] = array('name' => 'infolog.customfields','template' => '','lang' => '','group' => '0','version' => '1.2.001','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:7:{i:0;a:3:{s:1:"F";s:3:"80%";s:2:"c2";s:6:"header";s:2:"c4";s:6:"header";}i:1;a:6:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:3:"Typ";}s:1:"B";a:4:{s:4:"type";s:6:"select";s:4:"name";s:3:"typ";s:8:"onchange";s:1:"1";s:4:"help";s:52:"select a typ to edit it\'s status-values or delete it";}s:1:"C";a:4:{s:4:"type";s:6:"button";s:5:"label";s:6:"Delete";s:4:"name";s:14:"button[delete]";s:4:"help";s:24:"deletes the selected typ";}s:1:"D";a:5:{s:4:"type";s:4:"text";s:4:"size";s:5:"10,40";s:4:"name";s:8:"new_name";s:4:"help";s:26:"name of new type to create";s:4:"blur";s:8:"new name";}s:1:"E";a:4:{s:4:"type";s:6:"button";s:5:"label";s:6:"Create";s:4:"name";s:14:"button[create]";s:4:"help";s:37:"creates a new typ with the given name";}s:1:"F";a:5:{s:4:"type";s:5:"label";s:4:"span";s:10:",error_msg";s:7:"no_lang";s:1:"1";s:5:"align";s:6:"center";s:4:"name";s:9:"error_msg";}}i:2;a:6:{s:1:"A";a:4:{s:4:"type";s:5:"label";s:4:"span";s:3:"all";s:5:"label";s:21:"Custom status for typ";s:4:"name";s:3:"typ";}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:1:{s:4:"type";s:5:"label";}s:1:"E";a:1:{s:4:"type";s:5:"label";}s:1:"F";a:1:{s:4:"type";s:5:"label";}}i:3;a:6:{s:1:"A";a:4:{s:4:"type";s:8:"template";s:4:"size";s:6:"status";s:4:"span";s:3:"all";s:4:"name";s:6:"status";}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:1:{s:4:"type";s:5:"label";}s:1:"E";a:1:{s:4:"type";s:5:"label";}s:1:"F";a:1:{s:4:"type";s:5:"label";}}i:4;a:6:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"span";s:3:"all";s:5:"label";s:13:"Custom fields";}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:1:{s:4:"type";s:5:"label";}s:1:"E";a:1:{s:4:"type";s:5:"label";}s:1:"F";a:1:{s:4:"type";s:5:"label";}}i:5;a:6:{s:1:"A";a:4:{s:4:"type";s:8:"template";s:4:"size";s:6:"fields";s:4:"span";s:3:"all";s:4:"name";s:6:"fields";}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:1:{s:4:"type";s:5:"label";}s:1:"E";a:1:{s:4:"type";s:5:"label";}s:1:"F";a:1:{s:4:"type";s:5:"label";}}i:6;a:6:{s:1:"A";a:6:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"3";s:4:"span";s:3:"all";i:1;a:4:{s:4:"type";s:6:"button";s:5:"label";s:4:"Save";s:4:"name";s:12:"button[save]";s:4:"help";s:33:"saves the changes made and leaves";}i:2;a:4:{s:4:"type";s:6:"button";s:5:"label";s:5:"Apply";s:4:"name";s:13:"button[apply]";s:4:"help";s:19:"applies the changes";}i:3;a:4:{s:4:"type";s:6:"button";s:5:"label";s:6:"Cancel";s:4:"name";s:14:"button[cancel]";s:4:"help";s:22:"leaves without saveing";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:1:{s:4:"type";s:5:"label";}s:1:"E";a:1:{s:4:"type";s:5:"label";}s:1:"F";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:6;s:4:"cols";i:6;}}','size' => '','style' => '.header { font-weight: bold; font-size: 120%; } .error_msg { color: red; font-style: italics; }','modified' => '1061729975',); $templ_data[] = array('name' => 'infolog.customfields','template' => '','lang' => '','group' => '0','version' => '1.3.001','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:7:{i:0;a:3:{s:1:"F";s:3:"80%";s:2:"c2";s:6:"header";s:2:"c4";s:6:"header";}i:1;a:6:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:3:"Typ";}s:1:"B";a:5:{s:4:"type";s:6:"select";s:4:"name";s:5:"type2";s:8:"onchange";i:1;s:4:"help";s:52:"select a typ to edit it\'s status-values or delete it";s:7:"no_lang";s:1:"1";}s:1:"C";a:4:{s:4:"type";s:6:"button";s:5:"label";s:6:"Delete";s:4:"name";s:14:"button[delete]";s:4:"help";s:24:"deletes the selected typ";}s:1:"D";a:5:{s:4:"type";s:4:"text";s:4:"size";s:5:"10,40";s:4:"name";s:8:"new_name";s:4:"help";s:26:"name of new type to create";s:4:"blur";s:8:"new name";}s:1:"E";a:4:{s:4:"type";s:6:"button";s:5:"label";s:6:"Create";s:4:"name";s:14:"button[create]";s:4:"help";s:37:"creates a new typ with the given name";}s:1:"F";a:5:{s:4:"type";s:5:"label";s:4:"span";s:10:",error_msg";s:7:"no_lang";s:1:"1";s:5:"align";s:6:"center";s:4:"name";s:9:"error_msg";}}i:2;a:6:{s:1:"A";a:4:{s:4:"type";s:5:"label";s:4:"span";s:3:"all";s:5:"label";s:21:"Custom status for typ";s:4:"name";s:3:"typ";}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:1:{s:4:"type";s:5:"label";}s:1:"E";a:1:{s:4:"type";s:5:"label";}s:1:"F";a:1:{s:4:"type";s:5:"label";}}i:3;a:6:{s:1:"A";a:4:{s:4:"type";s:8:"template";s:4:"size";s:6:"status";s:4:"span";s:3:"all";s:4:"name";s:6:"status";}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:1:{s:4:"type";s:5:"label";}s:1:"E";a:1:{s:4:"type";s:5:"label";}s:1:"F";a:1:{s:4:"type";s:5:"label";}}i:4;a:6:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"span";s:3:"all";s:5:"label";s:13:"Custom fields";}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:1:{s:4:"type";s:5:"label";}s:1:"E";a:1:{s:4:"type";s:5:"label";}s:1:"F";a:1:{s:4:"type";s:5:"label";}}i:5;a:6:{s:1:"A";a:4:{s:4:"type";s:8:"template";s:4:"size";s:6:"fields";s:4:"span";s:3:"all";s:4:"name";s:6:"fields";}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:1:{s:4:"type";s:5:"label";}s:1:"E";a:1:{s:4:"type";s:5:"label";}s:1:"F";a:1:{s:4:"type";s:5:"label";}}i:6;a:6:{s:1:"A";a:6:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"3";s:4:"span";s:3:"all";i:1;a:4:{s:4:"type";s:6:"button";s:5:"label";s:4:"Save";s:4:"name";s:12:"button[save]";s:4:"help";s:33:"saves the changes made and leaves";}i:2;a:4:{s:4:"type";s:6:"button";s:5:"label";s:5:"Apply";s:4:"name";s:13:"button[apply]";s:4:"help";s:19:"applies the changes";}i:3;a:4:{s:4:"type";s:6:"button";s:5:"label";s:6:"Cancel";s:4:"name";s:14:"button[cancel]";s:4:"help";s:22:"leaves without saveing";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:1:{s:4:"type";s:5:"label";}s:1:"E";a:1:{s:4:"type";s:5:"label";}s:1:"F";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:6;s:4:"cols";i:6;}}','size' => '','style' => '.header { font-weight: bold; font-size: 120%; } .error_msg { color: red; font-style: italics; }','modified' => '1159943136',); -$templ_data[] = array('name' => 'infolog.customfields.fields','template' => '','lang' => '','group' => '0','version' => '0.9.15.001','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:2:{s:2:"c1";s:2:"th";s:2:"c2";s:7:"row,top";}i:1;a:7:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:3:"Typ";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"Name";}s:1:"C";a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Label";}s:1:"D";a:2:{s:4:"type";s:5:"label";s:5:"label";s:20:"Values for selectbox";}s:1:"E";a:2:{s:4:"type";s:5:"label";s:5:"label";s:14:"Length
Rows";}s:1:"F";a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Order";}s:1:"G";a:4:{s:4:"type";s:5:"label";s:5:"label";s:6:"Action";s:5:"align";s:6:"center";s:4:"help";s:18:"deletes this field";}}i:2;a:7:{s:1:"A";a:4:{s:4:"type";s:6:"select";s:4:"size";s:3:"All";s:4:"name";s:11:"${row}[typ]";s:4:"help";s:41:"for which types should this field be used";}s:1:"B";a:4:{s:4:"type";s:4:"text";s:4:"size";s:5:"20,32";s:4:"name";s:12:"${row}[name]";s:4:"help";s:83:"the name used internaly (<= 20 chars), changeing it makes existing data unavailible";}s:1:"C";a:4:{s:4:"type";s:4:"vbox";s:4:"size";s:1:"2";i:1;a:4:{s:4:"type";s:4:"text";s:4:"size";s:4:",255";s:4:"name";s:13:"${row}[label]";s:4:"help";s:30:"the text displayed to the user";}i:2;a:2:{s:4:"type";s:5:"label";s:4:"name";s:13:"${row}[label]";}}s:1:"D";a:4:{s:4:"type";s:8:"textarea";s:4:"size";s:4:"2,30";s:4:"name";s:14:"${row}[values]";s:4:"help";s:40:"each value is a line like [=