- Add js function to open a edit dialog with some fields pre-filled (type, category, action), use for buttons in nm right header

- Use different DOM ID for list when called from elsewhere
This commit is contained in:
Nathan Gray 2013-11-27 00:17:08 +00:00
parent b86173ad16
commit 5c6cceaa53
3 changed files with 47 additions and 7 deletions

View File

@ -711,11 +711,17 @@ class infolog_ui
{ {
$nm = egw_cache::getSession('infolog', $this->called_by.'session_data'); $nm = egw_cache::getSession('infolog', $this->called_by.'session_data');
unset($nm['rows']); unset($nm['rows']);
if ($values === 'reset_action_view' || $_GET['ajax'] === 'true') if ($values === 'reset_action_view')
{ {
$nm['action'] = $action = ''; $action = '';
$nm['action_id'] = $action_id = 0; $action_id = 0;
$nm['action_title'] = $action_title = ''; $action_title = '';
}
if($_GET['ajax'] === 'true')
{
$nm['action'] = '';
$nm['action_id'] = 0;
$nm['action_title'] = '';
// check if action-view reset filter and restore it // check if action-view reset filter and restore it
if (($filter = egw_cache::getSession('infolog', 'filter_reset_from'))) if (($filter = egw_cache::getSession('infolog', 'filter_reset_from')))
{ {
@ -880,6 +886,8 @@ class infolog_ui
else else
{ {
$values['css'] = '<style type="text/css">@import url('.$GLOBALS['egw_info']['server']['webserver_url'].'/infolog/templates/default/app.css);'."</style>"; $values['css'] = '<style type="text/css">@import url('.$GLOBALS['egw_info']['server']['webserver_url'].'/infolog/templates/default/app.css);'."</style>";
// Avoid DOM conflicts
$this->tmpl->set_dom_id("{$this->tmpl->name}-$action-$action_id");
} }
// add scrollbar to long description, if user choose so in his prefs // add scrollbar to long description, if user choose so in his prefs
if ($this->prefs['limit_des_lines'] > 0 || (string)$this->prefs['limit_des_lines'] == ''); if ($this->prefs['limit_des_lines'] > 0 || (string)$this->prefs['limit_des_lines'] == '');

View File

@ -309,4 +309,36 @@ app.classes.infolog = AppJS.extend(
{ {
egw.open('','infolog','add'); egw.open('','infolog','add');
}, },
/**
* Opens a new edit dialog with some extra url parameters pulled from
* standard locations. Done with a function instead of hardcoding so
* the values can be updated if user changes them in UI.
*
* @param _type string Type of infolog entry
* @param _action string Special action for new infolog entry
* @param _action_id string ID for special action
*/
add_with_extras: function(_type, _action, _action_id)
{
var nm = this.et2.getWidgetById('nm');
var nm_value = nm.getValue() || {};
var extras = {
type: _type || nm_value.filter || null,
cat_id: nm_value.cat_id || null,
action: _action || null,
action_id: _action_id != '0' ? _action_id : null || null
};
// Remove any missing values
for(var key in extras)
{
if(extras[key] == null)
{
delete extras[key];
}
}
egw.open('','infolog','add',extras);
}
}); });

View File

@ -8,9 +8,9 @@
<template id="infolog.index.header_right" template="" lang="" group="0" version="1.9.001"> <template id="infolog.index.header_right" template="" lang="" group="0" version="1.9.001">
<hbox> <hbox>
<description value="Add:" class="infolog_headertext"/> <description value="Add:" class="infolog_headertext"/>
<button statustext="Add a new ToDo" label="ToDo" id="add[task]" onclick="var options = {type: 'task',cat_id:widget.getRoot().getWidgetById('cat_id').getValue()}; if('$cont[action]' != 'null') options.action = '$cont[action]'; egw.open('','infolog','add',options)" image="task"/> <button statustext="Add a new ToDo" label="ToDo" id="add[task]" onclick="app.infolog.add_with_extras('task','$cont[action]','$cont[action_id]');" image="task"/>
<button statustext="Add a new Phonecall" label="Phonecall" id="add[phone]" onclick="var options = {type: 'phone',cat_id:widget.getRoot().getWidgetById('cat_id').getValue()}; if('$cont[action]' != 'null') options.action = '$cont[action]'; egw.open('','infolog','add',options)" image="phone"/> <button statustext="Add a new Phonecall" label="Phonecall" id="add[phone]" onclick="app.infolog.add_with_extras('phone','$cont[action]','$cont[action_id]');" image="phone"/>
<button statustext="Add a new Note" label="Note" id="add[note]" onclick="var options = {type: 'note',cat_id:widget.getRoot().getWidgetById('cat_id').getValue()}; if('$cont[action]' != 'null') options.action = '$cont[action]'; egw.open('','infolog','add',options)" image="note"/> <button statustext="Add a new Note" label="Note" id="add[note]" onclick="app.infolog.add_with_extras('note','$cont[action]','$cont[action_id]');" image="note"/>
</hbox> </hbox>
</template> </template>
<template id="infolog.index.rows" template="" lang="" group="0" version="1.9.005"> <template id="infolog.index.rows" template="" lang="" group="0" version="1.9.005">