"fixed fatal error: creating custom fields delete application config:

caused by a missing config::read_repository() before calling config::save_repository(), which then only stores the custom fields, but not the rest of the config"
This commit is contained in:
Ralf Becker 2009-04-23 11:18:51 +00:00
parent 4245df1f29
commit 9aed38299f

View File

@ -1,28 +1,22 @@
<?php <?php
/**************************************************************************\ /**
* eGroupWare - admin: Custom fields * * eGgroupWare admin - UI for adding custom fields
* http://www.egroupware.org *
* -------------------------------------------- *
* 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$ */
/**
* Custiomfields class - manages customfield definitions in egw_config table
* *
* The repository name (config_name) is 'customfields'. * @link http://www.egroupware.org
* * @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @license GPL
* @author Ralf Becker <ralfbecker-AT-outdoor-training.de>
* @author Cornelius Weiss <nelius-AT-von-und-zu-weiss.de> * @author Cornelius Weiss <nelius-AT-von-und-zu-weiss.de>
* @package admin * @package admin
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/ */
class customfields
{ /**
* Custiomfields class - manages customfield definitions in egw_config table
*
* The repository name (config_name) is 'customfields'.
*/
class customfields
{
/** /**
* appname of app which want to add / edit its customfields * appname of app which want to add / edit its customfields
@ -43,20 +37,23 @@
'edit' => True 'edit' => True
); );
/** /**
* Instance of the config class for the instancated applications * Instance of etemplate class
* *
* @var config * @var etemplate
*/ */
var $config; var $tmpl;
function customfields($appname='') /**
* Constructor
*
* @param string $appname
*/
function __construct($appname='')
{ {
$this->config =& new config($this->appname=$appname); if (($this->appname = $appname))
if ($appname)
{ {
$this->fields = $this->get_customfields(true); $this->fields = config::get_customfields($this->appname,true);
$this->content_types = $this->get_content_types(); $this->content_types = config::get_content_types($this->appname);
} }
} }
@ -75,12 +72,11 @@
if(!$this->appname) die(lang('Error! No appname found')); if(!$this->appname) die(lang('Error! No appname found'));
$GLOBALS['egw']->translation->add_app('infolog'); // til we move the translations $GLOBALS['egw']->translation->add_app('infolog'); // til we move the translations
$this->tmpl =& CreateObject('etemplate.etemplate'); $this->tmpl = new etemplate();
$this->config =& CreateObject('phpgwapi.config',$this->appname);
// do we manage content-types? // do we manage content-types?
if($this->tmpl->read($this->appname.'.admin.types')) $this->manage_content_types = true; if($this->tmpl->read($this->appname.'.admin.types')) $this->manage_content_types = true;
$this->fields = $this->get_customfields(true); $this->fields = config::get_customfields($this->appname,true);
$this->tmpl->read('admin.customfields'); $this->tmpl->read('admin.customfields');
if($this->manage_content_types) $this->content_types = $this->get_content_types(); if($this->manage_content_types) $this->content_types = $this->get_content_types();
@ -348,9 +344,11 @@
function save_repository() function save_repository()
{ {
//echo '<p>uicustomfields::save_repository() \$this->fields=<pre style="text-aling: left;">'; print_r($this->fields); echo "</pre>\n"; //echo '<p>uicustomfields::save_repository() \$this->fields=<pre style="text-aling: left;">'; print_r($this->fields); echo "</pre>\n";
$this->config->value('customfields',$this->fields); $config = new config($this->appname);
$this->config->value('types',$this->content_types); $config->read_repository();
$this->config->save_repository(); $config->value('customfields',$this->fields);
$config->value('types',$this->content_types);
$config->save_repository();
} }
/** /**
@ -378,4 +376,4 @@
return config::get_content_types($this->appname); return config::get_content_types($this->appname);
} }
} }