forked from extern/egroupware
fixed old "'%1' is NOT allowed ('%2')!" error:
the ajax search now opens the pending eTemplate request and stores the new allowed id's from this search
This commit is contained in:
parent
ea295a1165
commit
0f0b5c9639
@ -30,6 +30,8 @@
|
||||
*
|
||||
* Ajax request can use this object to open the original request by using the id, they have to transmitt back,
|
||||
* and register further variables, modify the registered ones or delete them.
|
||||
*
|
||||
* For an example look in link_widget::ajax_search()
|
||||
*/
|
||||
class etemplate_request
|
||||
{
|
||||
@ -60,7 +62,7 @@ class etemplate_request
|
||||
*/
|
||||
function __construct($id=null)
|
||||
{
|
||||
if (!$id) $id = $this->request_id();
|
||||
if (!$id) $id = self::request_id();
|
||||
|
||||
$this->id = $id;
|
||||
}
|
||||
@ -79,7 +81,7 @@ class etemplate_request
|
||||
* Read the request via it's id, returns a request_object or false
|
||||
*
|
||||
* @param string $id
|
||||
* @return etempalte_request/boolean the object or false if $id is not found
|
||||
* @return etempalte_request|boolean the object or false if $id is not found
|
||||
*/
|
||||
static function read($id)
|
||||
{
|
||||
@ -174,7 +176,7 @@ class etemplate_request
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function _request_id()
|
||||
static function request_id()
|
||||
{
|
||||
list($msec,$sec) = explode(' ',microtime());
|
||||
$time = 100 * $sec + (int)(100 * $msec); // gives precision of 1/100 sec
|
||||
|
@ -58,7 +58,6 @@ class link_widget
|
||||
var $public_functions = array(
|
||||
'pre_process' => True,
|
||||
'post_process' => True,
|
||||
'ajax_search' => True,
|
||||
);
|
||||
/**
|
||||
* @var array availible extensions and there names for the editor
|
||||
@ -106,7 +105,7 @@ class link_widget
|
||||
$extension_data['needed'] = $cell['needed'];
|
||||
$help = $cell['help'] ? ($value['help'] ? $value['help'] : $cell['help']) : lang('view this linked entry in its application');
|
||||
|
||||
if (($type == 'link-to' || $type == 'link-add' || $type == 'link-entry' && !$value) && ($cell['readonly'] || $readonlys))
|
||||
if ((in_array($type,array('link-to','link-add','link-entry')) && !$value) && ($cell['readonly'] || $readonlys))
|
||||
{
|
||||
//echo "<p>link-to is readonly, cell=".print_r($cell,true).", readonlys=".print_r($readonlys).", value='$value'</p>\n";
|
||||
// readonly ==> omit the whole widget
|
||||
@ -575,7 +574,9 @@ class link_widget
|
||||
}
|
||||
|
||||
/**
|
||||
* ajax callback to search in $app for $pattern, result is displayed in $id
|
||||
* Ajax callback to search in $app for $pattern, result is displayed in $id
|
||||
*
|
||||
* Called via onClick from etemplate.link_widget.(to|entry)'s search button
|
||||
*
|
||||
* @param string $app app-name to search
|
||||
* @param string $pattern search-pattern
|
||||
@ -583,11 +584,14 @@ class link_widget
|
||||
* @param string $id_hide id(s) of the search-box/-line to hide after a successful search
|
||||
* @param string $id_show id(s) of the select-box/-line to show after a successful search
|
||||
* @param string $id_input id of the search input-field
|
||||
* @param string $etemplate_exec_id of the calling etemplate, to upate the allowed ids
|
||||
* @return string xajax xml response
|
||||
*/
|
||||
function ajax_search($app,$pattern,$id_res,$id_hide,$id_show,$id_input)
|
||||
static function ajax_search($app,$pattern,$id_res,$id_hide,$id_show,$id_input,$etemplate_exec_id)
|
||||
{
|
||||
$response = new xajaxResponse();
|
||||
//$args = func_get_args(); $response->addAlert("link_widget::ajax_search('".implode("','",$args)."')");
|
||||
//$args = func_get_args(); error_log(__METHOD__."('".implode("','",$args)."')");
|
||||
|
||||
if (!($found = egw_link::query($app,$pattern == lang('Search') ? '' : $pattern))) // ignore the blur-text
|
||||
{
|
||||
@ -622,6 +626,14 @@ class link_widget
|
||||
//$response->addAlert($script);
|
||||
$response->addScript($script);
|
||||
}
|
||||
// store new allowed id's in the eT request
|
||||
if ($etemplate_exec_id && ($et_request = etemplate_request::read($etemplate_exec_id)))
|
||||
{
|
||||
$data = $et_request->get_to_process($id_res);
|
||||
//error_log($id_res.'='.array2string($data));
|
||||
$data['allowed'] = $found ? array_keys($found) : array();
|
||||
$et_request->set_to_process($id_res,$data);
|
||||
}
|
||||
return $response->getXML();
|
||||
}
|
||||
}
|
||||
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user