From: <ral...@us...> - 2009-04-29 14:15:39
|
Author: ralfbecker Date: Wed Apr 29 16:15:35 2009 New Revision: 26887 URL: http://www.egroupware.org/viewvc/egroupware?rev=3D26887&view=3Drev Log: new ajax_submit() function with submitts the whole form via ajax to a given= callback Modified: trunk/etemplate/inc/class.etemplate.inc.php trunk/etemplate/js/etemplate.js Modified: trunk/etemplate/inc/class.etemplate.inc.php URL: http://www.egroupware.org/viewvc/egroupware/trunk/etemplate/inc/class.= etemplate.inc.php?rev=3D26887&r1=3D26886&r2=3D26887&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- trunk/etemplate/inc/class.etemplate.inc.php (original) +++ trunk/etemplate/inc/class.etemplate.inc.php Wed Apr 29 16:15:35 2009 @@ -439,7 +439,7 @@ $content =3D $this->complete_array_merge(self::$request->changes,$conten= t); //echo "process_exec($this->name) merge(changes,content) =3D"; _debug_ar= ray($content); = - if (self::$loop) + if (self::$loop && $type =3D=3D 'regular') // only loop for regular (not= ajax_submit) requests { if (self::$request->hooked !=3D '') // set previous phpgw_body if we ar= e called as hook { @@ -476,7 +476,8 @@ else { //echo "<p>process_exec($this->name): calling $session_data[method]</p>= \n"; - return ExecMethod(self::$request->method,$this->complete_array_merge(se= lf::$request->preserv,$content)); + return ExecMethod($type =3D=3D 'regular' ? self::$request->method : $_G= ET['menuaction'], + $this->complete_array_merge(self::$request->preserv,$content)); } } = @@ -1879,11 +1880,11 @@ * @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 t= o show) - * @param string $type type of request + * @param string $cname=3D'' basename of our returnt content (same as in c= all to show) + * @param string $_type=3D'regular' type of request * @return int number of validation errors (the adjusted content is return= ed by the var-param &$content !) */ - function process_show(&$content,$to_process,$cname=3D'', $type =3D 'regul= ar') + function process_show(&$content,$to_process,$cname=3D'',$_type=3D'regular= ') { if (!isset($content) || !is_array($content) || !is_array($to_process)) { @@ -1916,7 +1917,7 @@ $value =3D etemplate::get_array($content_in,$form_name,True,$GLOBALS['e= gw_info']['flags']['currentapp'] =3D=3D 'etemplate' ? false : true ); // The comment below does only aplay to normal posts, not for xajax. Fi= les are not supported anyway by xajax atm. // not checked checboxes are not returned in HTML and file is in $_FILE= S and not in $content_in - if($value =3D=3D=3D false && $type =3D=3D 'xajaxResponse' /*!in_array($= type,array('checkbox','file'))*/) continue; + if($value =3D=3D=3D false && $_type =3D=3D 'xajaxResponse' /*!in_array(= $type,array('checkbox','file'))*/) continue; = if (isset($attr['blur']) && $attr['blur'] =3D=3D $value) { Modified: trunk/etemplate/js/etemplate.js URL: http://www.egroupware.org/viewvc/egroupware/trunk/etemplate/js/etempla= te.js?rev=3D26887&r1=3D26886&r2=3D26887&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- trunk/etemplate/js/etemplate.js (original) +++ trunk/etemplate/js/etemplate.js Wed Apr 29 16:15:35 2009 @@ -192,6 +192,14 @@ return url+'&etemplate_exec_id=3D'+form['etemplate_exec_id'].value; } = +// submits the whole form via ajax to a given menuaction or the current on= e if '' passed +function ajax_submit(form,menuaction) +{ + if(!menuaction) menuaction =3D form.action.replace(/.+menuaction=3D/,''); + + xajax_doXMLHTTP(menuaction+'./etemplate/process_exec', xajax.getFormValue= s(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) |