diff --git a/addressbook/inc/class.addressbook_ui.inc.php b/addressbook/inc/class.addressbook_ui.inc.php
index f31df1df74..0a1fd914f4 100644
--- a/addressbook/inc/class.addressbook_ui.inc.php
+++ b/addressbook/inc/class.addressbook_ui.inc.php
@@ -542,6 +542,9 @@ class addressbook_ui extends addressbook_bo
'infolog_add' => array(
'caption' => 'Add a new Infolog',
'icon' => 'new',
+ 'url' => 'menuaction=infolog.infolog_ui.edit&type=task&action=addressbook&action_id=$id',
+ 'popup' => egw_link::get_registry('infolog', 'add_popup'),
+ 'onExecute' => 'javaScript:add_task', // call server for org-view only
),
)
);
@@ -554,6 +557,7 @@ class addressbook_ui extends addressbook_bo
'url' => 'menuaction=calendar.calendar_uiforms.edit&participants=c$id',
'popup' => egw_link::get_registry('calendar', 'add_popup'),
'group' => $group,
+ 'onExecute' => 'javaScript:add_cal', // call server for org-view only
);
}
if ($GLOBALS['egw_info']['user']['apps']['filemanager'])
@@ -862,9 +866,25 @@ class addressbook_ui extends addressbook_bo
return false;
case 'infolog_add':
+ list($width,$height) = explode('x',egw_link::get_registry('infolog', 'add_popup'));
egw_framework::set_onload(
- "win=window.open('".egw::link('/index.php','menuaction=infolog.infolog_ui.edit&type=task&action=addressbook&action_id=').implode(',',$checked)."','_blank','width=750,height=550,left=100,top=200'); win.focus();");
- $msg = lang('New window opened to edit Infolog for your selection');
+ "egw_openWindowCentered2('".egw::link('/index.php',array(
+ 'menuaction' => 'infolog.infolog_ui.edit',
+ 'type' => 'task',
+ 'action' => 'addressbook',
+ 'action_id' => implode(',',$checked),
+ ))."','_blank',$width,$height);");
+ $msg = ''; // no message, as we send none in javascript too and users sees opening popup
+ return false;
+
+ case 'calendar': // add appointment for org-views, other views are handled directly in javascript
+ list($width,$height) = explode('x',egw_link::get_registry('calendar', 'add_popup'));
+ egw_framework::set_onload(
+ "egw_openWindowCentered2('".egw::link('/index.php',array(
+ 'menuaction' => 'calendar.calendar_uiforms.edit',
+ 'participants' => 'c'.implode(',c',$checked),
+ ))."','_blank',$width,$height);");
+ $msg = ''; // no message, as we send none in javascript too and users sees opening popup
return false;
}
foreach($checked as $id)
@@ -983,6 +1003,7 @@ class addressbook_ui extends addressbook_bo
$Ok = $this->add2list($id,$to_list) !== false;
}
break;
+
default: // move to an other addressbook
if (!(int)$action || !($this->grants[(string) (int) $action] & EGW_ACL_EDIT)) // might be ADD in the future
{
@@ -2154,98 +2175,15 @@ class addressbook_ui extends addressbook_bo
}
/**
- * Add javascript functions
+ * Dynamic javascript functions
+ *
+ * All static stuff should go to addressbook/js/app.js
*
* @return string
*/
function js()
{
return '';
+ ';
}
/**
diff --git a/addressbook/js/app.js b/addressbook/js/app.js
new file mode 100644
index 0000000000..dec124ec86
--- /dev/null
+++ b/addressbook/js/app.js
@@ -0,0 +1,165 @@
+/**
+ * EGroupware addressbook static javascript code
+ *
+ * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
+ * @package addressbook
+ * @link http://www.egroupware.org
+ * @author Ralf Becker
+ * @version $Id$
+ */
+
+
+/**
+ * Add appointment for selected contacts, call default nm_action after some checks
+ *
+ * @param _action
+ * @param _senders
+ */
+function add_cal(_action, _senders)
+{
+ if (!_senders[0].id.match(/^[0-9]+$/))
+ {
+ // send org-view requests to server
+ _action.data.nm_action = "submit";
+ }
+ else
+ {
+ // call nm_action's popup, but already replace id's in url, because they need to be prefix with a "c"
+ _action.data.nm_action = "popup";
+ var ids = "";
+ for (var i = 0; i < _senders.length; i++)
+ {
+ ids += "c" + _senders[i].id + ((i < _senders.length - 1) ? "," : "");
+ }
+ _action.data.url = _action.data.url.replace(/participants=.*$/,"participants="+ids);
+ }
+ nm_action(_action, _senders);
+}
+
+/**
+ * Add task for selected contacts, call default nm_action after some checks
+ *
+ * @param _action
+ * @param _senders
+ */
+function add_task(_action, _senders)
+{
+ if (!_senders[0].id.match(/^[0-9]+$/))
+ {
+ // send org-view requests to server
+ _action.data.nm_action = "submit";
+ }
+ else
+ {
+ // call nm_action's popup
+ _action.data.nm_action = "popup";
+ }
+ nm_action(_action, _senders);
+}
+
+function showphones(form)
+{
+ if (form) {
+ copyvalues(form,"tel_home","tel_home2");
+ copyvalues(form,"tel_work","tel_work2");
+ copyvalues(form,"tel_cell","tel_cell2");
+ copyvalues(form,"tel_fax","tel_fax2");
+ }
+}
+
+function hidephones(form)
+{
+ if (form) {
+ copyvalues(form,"tel_home2","tel_home");
+ copyvalues(form,"tel_work2","tel_work");
+ copyvalues(form,"tel_cell2","tel_cell");
+ copyvalues(form,"tel_fax2","tel_fax");
+ }
+}
+
+function copyvalues(form,src,dst)
+{
+ var srcelement = getElement(form,src); //ById("exec["+src+"]");
+ var dstelement = getElement(form,dst); //ById("exec["+dst+"]");
+ if (srcelement && dstelement) {
+ dstelement.value = srcelement.value;
+ }
+}
+
+function getElement(form,pattern)
+{
+ for (i = 0; i < form.length; i++){
+ if(form.elements[i].name){
+ var found = form.elements[i].name.search("\\\\["+pattern+"\\\\]");
+ if (found != -1){
+ return form.elements[i];
+ }
+ }
+ }
+}
+
+function setName(input)
+{
+ var prefix = document.getElementById("exec[n_prefix]").value;
+ var given = document.getElementById("exec[n_given]").value;
+ var middle = document.getElementById("exec[n_middle]").value;
+ var family = document.getElementById("exec[n_family]").value;
+ var suffix = document.getElementById("exec[n_suffix]").value;
+ var org = document.getElementById("exec[org_name]").value;
+
+ var name = document.getElementById("exec[n_fn]");
+
+ name.value = "";
+ if (prefix) name.value += prefix+" ";
+ if (given) name.value += given+" ";
+ if (middle) name.value += middle+" ";
+ if (family) name.value += family+" ";
+ if (suffix) name.value += suffix;
+
+ xajax_doXMLHTTP("addressbook.addressbook_ui.ajax_setFileasOptions",prefix,given,middle,family,suffix,org);
+}
+
+function add_whole_list(list)
+{
+ if (document.getElementById("exec[nm][email_type][email_home]").checked == true)
+ {
+ email_type = "email_home";
+ }
+ else
+ {
+ email_type = "email";
+ }
+ xajax_doXMLHTTP("addressbook.addressbook_ui.ajax_add_whole_list",list,email_type);
+}
+
+function setOptions(options_str)
+{
+ var options = options_str.split("\\\\b");
+ var selbox = document.getElementById("exec[fileas_type]");
+ var i;
+ for (i=0; i < options.length; i++)
+ {
+ selbox.options[i].text = options[i];
+ }
+}
+
+function show_custom_country(selectbox)
+{
+ custom_field_name = selectbox.name.replace("countrycode", "countryname");
+ custom_field = document.getElementById(custom_field_name);
+ if(custom_field && selectbox.value == "-custom-") {
+ custom_field.style.display = "inline";
+ }
+ else if (custom_field)
+ {
+ if(selectbox.value == "" || selectbox.value == null)
+ {
+ selectbox.value = "-custom-";
+ custom_field.style.display = "inline";
+ }
+ else
+ {
+ custom_field.style.display = "none";
+ }
+ }
+}