new ajax_submit() function with submitts the whole form via ajax to a given callback

This commit is contained in:
Ralf Becker 2009-04-29 14:15:35 +00:00
parent 76caa7db75
commit 0930d0a739
2 changed files with 15 additions and 6 deletions

View File

@ -439,7 +439,7 @@ class etemplate extends boetemplate
$content = $this->complete_array_merge(self::$request->changes,$content);
//echo "process_exec($this->name) merge(changes,content) ="; _debug_array($content);
if (self::$loop)
if (self::$loop && $type == 'regular') // only loop for regular (not ajax_submit) requests
{
if (self::$request->hooked != '') // set previous phpgw_body if we are called as hook
{
@ -476,7 +476,8 @@ class etemplate extends boetemplate
else
{
//echo "<p>process_exec($this->name): calling $session_data[method]</p>\n";
return ExecMethod(self::$request->method,$this->complete_array_merge(self::$request->preserv,$content));
return ExecMethod($type == 'regular' ? self::$request->method : $_GET['menuaction'],
$this->complete_array_merge(self::$request->preserv,$content));
}
}
@ -1879,11 +1880,11 @@ class etemplate extends boetemplate
* @internal
* @param array $content $_POST[$cname], on return the adjusted content
* @param array $to_process list of widgets/form-fields to process
* @param string $cname basename of our returnt content (same as in call to show)
* @param string $type type of request
* @param string $cname='' basename of our returnt content (same as in call to show)
* @param string $_type='regular' type of request
* @return int number of validation errors (the adjusted content is returned by the var-param &$content !)
*/
function process_show(&$content,$to_process,$cname='', $type = 'regular')
function process_show(&$content,$to_process,$cname='',$_type='regular')
{
if (!isset($content) || !is_array($content) || !is_array($to_process))
{
@ -1916,7 +1917,7 @@ class etemplate extends boetemplate
$value = etemplate::get_array($content_in,$form_name,True,$GLOBALS['egw_info']['flags']['currentapp'] == 'etemplate' ? false : true );
// The comment below does only aplay to normal posts, not for xajax. Files are not supported anyway by xajax atm.
// not checked checboxes are not returned in HTML and file is in $_FILES and not in $content_in
if($value === false && $type == 'xajaxResponse' /*!in_array($type,array('checkbox','file'))*/) continue;
if($value === false && $_type == 'xajaxResponse' /*!in_array($type,array('checkbox','file'))*/) continue;
if (isset($attr['blur']) && $attr['blur'] == $value)
{

View File

@ -192,6 +192,14 @@ function values2url(form,names)
return url+'&etemplate_exec_id='+form['etemplate_exec_id'].value;
}
// submits the whole form via ajax to a given menuaction or the current one if '' passed
function ajax_submit(form,menuaction)
{
if(!menuaction) menuaction = form.action.replace(/.+menuaction=/,'');
xajax_doXMLHTTP(menuaction+'./etemplate/process_exec', xajax.getFormValues(form));
}
// sets value (v) of style property (p) for all given elements of type (t) and class (c)
// eg. set_style_by_class('td','hide','visibility','visible')
function set_style_by_class(t,c,p,v)