If hooked, keep app in extension_data to persist across etemplate loops. Fixes lost infolog custom fields in addressbook view when changing nm filters

This commit is contained in:
Nathan Gray 2011-09-30 14:59:41 +00:00
parent e34de4afe8
commit 16d010becf

View File

@ -26,6 +26,7 @@ class customfields_widget
{ {
var $public_functions = array( var $public_functions = array(
'pre_process' => True, 'pre_process' => True,
'post_process' => True,
); );
var $human_name = array( var $human_name = array(
'customfields' => 'custom fields', 'customfields' => 'custom fields',
@ -112,10 +113,16 @@ class customfields_widget
function pre_process($form_name,&$value,&$cell,&$readonlys,&$extension_data,etemplate $tmpl) function pre_process($form_name,&$value,&$cell,&$readonlys,&$extension_data,etemplate $tmpl)
{ {
list($app) = explode('.',$tmpl->name); list($app) = explode('.',$tmpl->name);
if($extension_data['app']) $app = $extension_data['app'];
// if we are in the etemplate editor or the app has no cf's, load the cf's from the app the tpl belongs too // if we are in the etemplate editor or the app has no cf's, load the cf's from the app the tpl belongs too
if ($app && $app != 'stylite' && $app != $this->appname && ($this->appname == 'etemplate' || !$this->customfields || etemplate::$hooked)) if ($app && $app != 'stylite' && $app != $this->appname && (
$this->appname == 'etemplate' || !$this->customfields || etemplate::$hooked || $extension_data['app']
))
{ {
self::__construct(null,$app); // app changed self::__construct(null,$app); // app changed
// Need to keep hooked app for things like nm filter changes and validation errors
if(etemplate::$hooked) $extension_data['app'] = $app;
} }
list($type2,$use_private,$field_names) = explode(',',$cell['size'],3); list($type2,$use_private,$field_names) = explode(',',$cell['size'],3);
$fields_with_vals=array(); $fields_with_vals=array();
@ -493,6 +500,12 @@ class customfields_widget
return True; // extra Label is ok return True; // extra Label is ok
} }
/**
* Override to pass along extension_data - doesn't happen otherwise
*/
public function post_process($name,&$value,&$extension_data,&$loop,etemplate &$tmpl,$value_in) {
}
/** /**
* Read the options of a 'select' or 'radio' custom field from a file * Read the options of a 'select' or 'radio' custom field from a file
* *