mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-12-27 09:09:04 +01:00
merge from trunk(revision 23930:23943) to 1.4 branch
This commit is contained in:
commit
f32da9bdc0
@ -145,7 +145,10 @@ class socontacts_sql extends so_sql
|
||||
else // by adr_one_location or org_unit
|
||||
{
|
||||
// org total for more then one $by
|
||||
$append = "GROUP BY org_name HAVING {$by}_count > 1 ORDER BY org_name $sort";
|
||||
$by_expr = $by == 'org_unit_count' ? "COUNT(DISTINCT CASE WHEN org_unit IS NULL THEN '' ELSE org_unit END)" :
|
||||
"COUNT(DISTINCT CASE WHEN adr_one_locality IS NULL THEN '' ELSE adr_one_locality END)";
|
||||
// $append = "GROUP BY org_name HAVING {$by}_count > 1 ORDER BY org_name $sort";
|
||||
$append = "GROUP BY org_name HAVING $by_expr > 1 ORDER BY org_name $sort";
|
||||
parent::search($param['search'],array('org_name'),$append,array(
|
||||
"NULL AS $by",
|
||||
'COUNT(org_name) AS org_count',
|
||||
@ -292,7 +295,7 @@ class socontacts_sql extends so_sql
|
||||
case 'boolean':
|
||||
// only return the egw_addressbook columns, to not generate dublicates by the left join
|
||||
// and to not return the NULL for contact_{id|owner} of not found custom fields!
|
||||
$only_keys = 'DISTINCT '.$this->table_name.'.'.($only_keys ? 'contact_id' : '*');
|
||||
$only_keys = 'DISTINCT '.$this->table_name.'.'.($only_keys ? 'contact_id AS contact_id' : '*');
|
||||
break;
|
||||
case 'string':
|
||||
$only_keys = explode(',',$only_keys);
|
||||
@ -413,7 +416,7 @@ class socontacts_sql extends so_sql
|
||||
* @param string $name list-name
|
||||
* @param int $owner user- or group-id
|
||||
* @param array $contacts=array() contacts to add
|
||||
* @return list_id or false on error
|
||||
* @return int/boolean integer list_id, true if the list already exists or false on error
|
||||
*/
|
||||
function add_list($name,$owner,$contacts=array())
|
||||
{
|
||||
@ -424,7 +427,7 @@ class socontacts_sql extends so_sql
|
||||
'list_owner' => $owner,
|
||||
),__LINE__,__FILE__) && $this->db->next_record())
|
||||
{
|
||||
return $this->db->f('list_id'); // return existing list-id
|
||||
return true; // return existing list-id
|
||||
}
|
||||
if (!$this->db->insert($this->lists_table,array(
|
||||
'list_name' => $name,
|
||||
|
@ -80,8 +80,10 @@ class uicontacts extends bocontacts
|
||||
|
||||
// our javascript
|
||||
// to be moved in a seperate file if rewrite is over
|
||||
$GLOBALS['egw_info']['flags']['java_script'] .= $this->js();
|
||||
|
||||
if (strpos($GLOBALS['egw_info']['flags']['java_script'],'add_new_list') === false)
|
||||
{
|
||||
$GLOBALS['egw_info']['flags']['java_script'].= $this->js();
|
||||
}
|
||||
$this->config =& $GLOBALS['egw_info']['server'];
|
||||
}
|
||||
|
||||
@ -140,7 +142,12 @@ class uicontacts extends bocontacts
|
||||
}
|
||||
elseif($_GET['add_list'])
|
||||
{
|
||||
if (($list = $this->add_list($_GET['add_list'],$_GET['owner']?$_GET['owner']:$this->user)))
|
||||
$list = $this->add_list($_GET['add_list'],$_GET['owner']?$_GET['owner']:$this->user);
|
||||
if ($list === true)
|
||||
{
|
||||
$msg = lang('List already exists!');
|
||||
}
|
||||
elseif ($list)
|
||||
{
|
||||
$msg = lang('List created');
|
||||
}
|
||||
@ -152,6 +159,7 @@ class uicontacts extends bocontacts
|
||||
$preserv = array(
|
||||
'do_email' => $do_email,
|
||||
);
|
||||
$to = $content['nm']['to'];
|
||||
$content = array(
|
||||
'msg' => $msg ? $msg : $_GET['msg'],
|
||||
);
|
||||
@ -180,7 +188,14 @@ class uicontacts extends bocontacts
|
||||
'do_email' => $do_email,
|
||||
'default_cols' => '!cat_id,contact_created_contact_modified',
|
||||
'filter2_onchange' => "if(this.value=='add') { add_new_list(document.getElementById(form::name('filter')).value); this.value='';} else this.form.submit();",
|
||||
'manual' => $do_email ? ' ' : false, // space for the manual icon
|
||||
);
|
||||
if ($do_email)
|
||||
{
|
||||
$content['nm']['filter2_onchange'] = str_replace('this.form.submit();',
|
||||
"{ if (this.value && confirm('Add business email of whole distribution list?')) add_whole_list(this.value); else this.form.submit(); }",
|
||||
$content['nm']['filter2_onchange']);
|
||||
}
|
||||
// use the state of the last session stored in the user prefs
|
||||
if (($state = @unserialize($this->prefs[$do_email ? 'email_state' : 'index_state'])))
|
||||
{
|
||||
@ -199,6 +214,10 @@ class uicontacts extends bocontacts
|
||||
$content['nm']['to'] = 'to';
|
||||
$content['nm']['search'] = '@';
|
||||
}
|
||||
else
|
||||
{
|
||||
$content['nm']['to'] = $to;
|
||||
}
|
||||
$content['nm']['header_left'] = 'addressbook.email.left';
|
||||
}
|
||||
// Organisation stuff is not (yet) availible with ldap
|
||||
@ -215,6 +234,7 @@ class uicontacts extends bocontacts
|
||||
$sel_options['action'] = array();
|
||||
if ($do_email)
|
||||
{
|
||||
$GLOBALS['egw_info']['flags']['include_xajax'] = true;
|
||||
$sel_options['action'] = array(
|
||||
'email' => lang('Add %1',lang('business email')),
|
||||
'email_home' => lang('Add %1',lang('home email')),
|
||||
@ -290,16 +310,8 @@ class uicontacts extends bocontacts
|
||||
*/
|
||||
function emailpopup($content=null,$msg=null)
|
||||
{
|
||||
switch($_POST['exec']['nm']['to']) {
|
||||
case 'to':
|
||||
case 'bcc':
|
||||
case 'cc':
|
||||
$to = $_POST['exec']['nm']['to'];
|
||||
break;
|
||||
default:
|
||||
$to = 'to';
|
||||
}
|
||||
|
||||
if (strpos($GLOBALS['egw_info']['flags']['java_script'],'addEmail') === false)
|
||||
{
|
||||
if ($_GET['compat']) // 1.2 felamimail or old email
|
||||
{
|
||||
$handler = "if (opener.document.doit[to].value != '')
|
||||
@ -312,31 +324,29 @@ class uicontacts extends bocontacts
|
||||
{
|
||||
$handler = 'opener.addEmail(to,email)';
|
||||
}
|
||||
|
||||
$GLOBALS['egw_info']['flags']['java_script'] .= "
|
||||
$GLOBALS['egw_info']['flags']['java_script'].= "
|
||||
<script>
|
||||
window.focus();
|
||||
|
||||
function addEmail(email)
|
||||
{
|
||||
var to = '$to';
|
||||
// this does not work, as always to is selected after page reload
|
||||
//if (document.getElementById('exec[nm][to][cc]').checked == true)
|
||||
//{
|
||||
// to = 'cc';
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// if (document.getElementById('exec[nm][to][bcc]').checked == true)
|
||||
// {
|
||||
// to = 'bcc';
|
||||
// }
|
||||
//}
|
||||
//alert(to+': '+email);
|
||||
var to = 'to';
|
||||
if (document.getElementById('exec[nm][to][cc]').checked == true)
|
||||
{
|
||||
to = 'cc';
|
||||
}
|
||||
else
|
||||
{
|
||||
if (document.getElementById('exec[nm][to][bcc]').checked == true)
|
||||
{
|
||||
to = 'bcc';
|
||||
}
|
||||
}
|
||||
$handler;
|
||||
}
|
||||
</script>
|
||||
";
|
||||
}
|
||||
return $this->index($content,$msg,true);
|
||||
}
|
||||
|
||||
@ -375,6 +385,34 @@ class uicontacts extends bocontacts
|
||||
));
|
||||
}
|
||||
|
||||
function ajax_add_whole_list($list)
|
||||
{
|
||||
$query = $GLOBALS['egw']->session->appsession('email','addressbook');
|
||||
$query['filter2'] = (int)$list;
|
||||
$action_msg = lang('%1 added',lang('Business email'));
|
||||
$this->action('email',array(),true,$success,$failed,$action_msg,$query,$msg);
|
||||
|
||||
$response =& new xajaxResponse();
|
||||
|
||||
if ($success) $response->addScript($GLOBALS['egw']->js->body['onLoad']);
|
||||
|
||||
// close window only if no errors AND something added
|
||||
if ($failed || !$success)
|
||||
{
|
||||
if (!$msg) $msg = $failed ? lang('%1 contact(s) %2, %3 failed because of insufficent rights !!!',$success,$action_msg,$failed) :
|
||||
lang('%1 contact(s) %2',$success,$action_msg);
|
||||
|
||||
$response->addScript("alert('".addslashes($msg)."')");
|
||||
// reset the filter
|
||||
$response->addScript("document.getElementById('exec[nm][filter2]').value='';");
|
||||
}
|
||||
else
|
||||
{
|
||||
$response->addScript('window.close();');
|
||||
}
|
||||
return $response->getXML();
|
||||
}
|
||||
|
||||
/**
|
||||
* apply an action to multiple contacts
|
||||
*
|
||||
@ -384,7 +422,7 @@ class uicontacts extends bocontacts
|
||||
* @param int &$success number of succeded actions
|
||||
* @param int &$failed number of failed actions (not enought permissions)
|
||||
* @param string &$action_msg translated verb for the actions, to be used in a message like %1 contacts 'deleted'
|
||||
* @param string $session_name 'index' or 'email' depending if we are in the main list or the popup
|
||||
* @param string/array $session_name 'index' or 'email', or array with session-data depending if we are in the main list or the popup
|
||||
* @return boolean true if all actions succeded, false otherwise
|
||||
*/
|
||||
function action($action,$checked,$use_all,&$success,&$failed,&$action_msg,$session_name,&$msg)
|
||||
@ -395,7 +433,7 @@ class uicontacts extends bocontacts
|
||||
if ($use_all || in_array($action,array('remove_from_list','delete_list')))
|
||||
{
|
||||
// get the whole selection
|
||||
$query = $GLOBALS['egw']->session->appsession($session_name,'addressbook');
|
||||
$query = is_array($session_name) ? $session_name : $GLOBALS['egw']->session->appsession($session_name,'addressbook');
|
||||
|
||||
if ($use_all)
|
||||
{
|
||||
@ -1519,7 +1557,6 @@ $readonlys['button[vcard]'] = true;
|
||||
|
||||
}
|
||||
$GLOBALS['egw_info']['flags']['include_xajax'] = true;
|
||||
$GLOBALS['egw_info']['flags']['java_script'] .= $this->js();
|
||||
$GLOBALS['egw_info']['flags']['java_script'] .= "<script>window.focus()</script>";
|
||||
$GLOBALS['egw_info']['etemplate']['advanced_search'] = true;
|
||||
|
||||
@ -1681,6 +1718,11 @@ $readonlys['button[vcard]'] = true;
|
||||
xajax_doXMLHTTP("addressbook.uicontacts.ajax_setFileasOptions",prefix,given,middle,family,suffix,org);
|
||||
}
|
||||
|
||||
function add_whole_list(list)
|
||||
{
|
||||
xajax_doXMLHTTP("addressbook.uicontacts.ajax_add_whole_list",list);
|
||||
}
|
||||
|
||||
function setOptions(options_str)
|
||||
{
|
||||
var options = options_str.split("\\\\b");
|
||||
@ -1711,7 +1753,7 @@ $readonlys['button[vcard]'] = true;
|
||||
if (name)
|
||||
{
|
||||
document.location.href = "'.$GLOBALS['egw']->link('/index.php',array(
|
||||
'menuaction'=>'addressbook.uicontacts.index',
|
||||
'menuaction'=>$_GET['menuaction'],//'addressbook.uicontacts.index',
|
||||
'add_list'=>'',
|
||||
)).'"+encodeURIComponent(name)+"&owner="+owner;
|
||||
}
|
||||
|
File diff suppressed because one or more lines are too long
@ -16,6 +16,7 @@ add a contact to this organisation addressbook de Einen Kontakt zu dieser Organi
|
||||
add a new contact addressbook de Neuen Kontakt anlegen
|
||||
add a new list addressbook de Neuen Verteiler hinzufügen
|
||||
add a single entry by passing the fields. addressbook de Hinzufügen eines einzelnen Eintrags durch Übergeben der Felder.
|
||||
add business email of whole distribution list? addressbook de E-Mail geschäftl. der kompletten Liste hinzufügen?
|
||||
add custom field addressbook de Benutzerdefiniertes Feld hinzufügen
|
||||
add to distribution list: addressbook de Hinzufügen zu Verteiler:
|
||||
added by synchronisation addressbook de Hinzugefügt über die Synchronisation
|
||||
|
@ -16,6 +16,7 @@ add a contact to this organisation addressbook en Add a contact to this organisa
|
||||
add a new contact addressbook en Add a new contact
|
||||
add a new list addressbook en Add a new list
|
||||
add a single entry by passing the fields. addressbook en Add a single entry by passing the fields.
|
||||
add business email of whole distribution list? addressbook en Add business email of whole distribution list?
|
||||
add custom field addressbook en Add Custom Field
|
||||
add to distribution list: addressbook en Add to distribution list:
|
||||
added by synchronisation addressbook en added by synchronisation
|
||||
@ -196,6 +197,7 @@ link title for contacts show addressbook en Link title for contacts show
|
||||
links addressbook en Links
|
||||
list all categories addressbook en List all categories
|
||||
list all customfields addressbook en List all customfields
|
||||
list already exists! addressbook en List already exists!
|
||||
list created addressbook en List created
|
||||
list creation failed, no rights! addressbook en List creation failed, no rights!
|
||||
load vcard addressbook en Load VCard
|
||||
|
@ -6,10 +6,14 @@
|
||||
<menupopup rows="1" cols="1" id="org_view" no_lang="1" statustext="Select a view" onchange="1" options="All contacts"/>
|
||||
</menulist>
|
||||
</template>
|
||||
<template id="addressbook.index.right" template="" lang="" group="0" version="1.3.001">
|
||||
<menulist>
|
||||
<menupopup label="Type" id="col_filter[tid]" statustext="Select addressbook type" onchange="1"/>
|
||||
</menulist>
|
||||
<template id="addressbook.index.right_add" template="" lang="" group="0" version="1.3.005">
|
||||
<hbox>
|
||||
<buttononly id="search" label="Advanced search" onclick="window.open(egw::link('/index.php','menuaction=addressbook.uicontacts.search'),'_blank','dependent=yes,width=850,height=440,scrollbars=yes,status=yes'); return false;"/>
|
||||
<buttononly id="add" label="Add" statustext="Add a new contact" onclick="window.open(egw::link('/index.php','menuaction=addressbook.uicontacts.edit'),'_blank','dependent=yes,width=850,height=440,scrollbars=yes,status=yes'); return false;" class="rightPadAdd"/>
|
||||
</hbox>
|
||||
<styles>
|
||||
.rightPadAdd { padding-right: 40px; }
|
||||
</styles>
|
||||
</template>
|
||||
<template id="addressbook.index.rows" template="" lang="" group="0" version="1.3.002">
|
||||
<grid width="100%">
|
||||
@ -185,7 +189,7 @@
|
||||
</row>
|
||||
<row disabled="1">
|
||||
<template id="addressbook.index.left"/>
|
||||
<template align="right" id="addressbook.index.right"/>
|
||||
<template align="right" id="addressbook.index.right_add"/>
|
||||
</row>
|
||||
<row>
|
||||
<nextmatch options="addressbook.index.rows" id="nm" span="all"/>
|
||||
|
@ -105,7 +105,7 @@
|
||||
);
|
||||
|
||||
$this->IMAPServerType = array(
|
||||
'1' => array(
|
||||
/* '1' => array(
|
||||
'fieldNames' => array(
|
||||
'imapServer',
|
||||
'imapPort',
|
||||
@ -118,7 +118,7 @@
|
||||
'description' => 'standard POP3 server',
|
||||
'protocol' => 'pop3',
|
||||
'classname' => 'defaultpop'
|
||||
),
|
||||
),*/
|
||||
'2' => array(
|
||||
'fieldNames' => array(
|
||||
'imapServer',
|
||||
@ -578,7 +578,7 @@
|
||||
'imapPort' => 993,
|
||||
'imapTLSEncryption' => 'yes',
|
||||
),
|
||||
'pop3' => array(
|
||||
/* 'pop3' => array(
|
||||
'imapType' => 1,
|
||||
'imapPort' => 110,
|
||||
'imapTLSEncryption' => 0,
|
||||
@ -587,7 +587,7 @@
|
||||
'imapType' => 1,
|
||||
'imapPort' => 995,
|
||||
'imapTLSEncryption' => '1',
|
||||
),
|
||||
),*/
|
||||
),
|
||||
'mail_login_type' => 'imapLoginType',
|
||||
'mail_suffix' => 'defaultDomain',
|
||||
|
@ -395,7 +395,7 @@
|
||||
$rows = array(
|
||||
lang('description'),
|
||||
lang('smtp server name'),
|
||||
lang('imap/pop3 server name'),
|
||||
lang('imap server name'),
|
||||
lang('application'),
|
||||
lang('group'),
|
||||
lang('delete'),
|
||||
@ -556,7 +556,7 @@
|
||||
$this->t->set_var('lang_LDAP_server_base_dn',lang('LDAP server accounts DN'));
|
||||
$this->t->set_var('lang_use_LDAP_defaults',lang('use LDAP defaults'));
|
||||
$this->t->set_var('lang_LDAP_settings',lang('LDAP settings'));
|
||||
$this->t->set_var('lang_select_type_of_imap/pop3_server',lang('select type of IMAP/POP3 server'));
|
||||
$this->t->set_var('lang_select_type_of_imap/pop3_server',lang('select type of IMAP server'));
|
||||
$this->t->set_var('lang_pop3_server_hostname_or_IP_address',lang('POP3 server hostname or ip address'));
|
||||
$this->t->set_var('lang_pop3_server_port',lang('POP3 server port'));
|
||||
$this->t->set_var('lang_imap_server_hostname_or_IP_address',lang('IMAP server hostname or ip address'));
|
||||
|
@ -21,6 +21,7 @@ cyrus imap server emailadmin de Cyrus IMAP-Server
|
||||
cyrus imap server administration emailadmin de Cyrus IMAP-Server Administration
|
||||
default emailadmin de Vorgabe
|
||||
deliver extern emailadmin de extern ausliefern
|
||||
do not validate certificate emailadmin de Zertifikat nicht überprüfen
|
||||
do you really want to delete this profile emailadmin de Wollen Sie dieses Profil wirklich löschen
|
||||
domainname emailadmin de Domänenname
|
||||
edit email settings emailadmin de E-Mail-Einstellungen
|
||||
@ -30,6 +31,7 @@ email settings common de E-Mail-Konto
|
||||
emailadmin emailadmin de EMailAdmin
|
||||
enable cyrus imap server administration emailadmin de Cyrus IMAP-Server Administration aktivieren
|
||||
enable sieve emailadmin de Sieve aktivieren
|
||||
encrypted connection emailadmin de verschlüsselte Verbindung
|
||||
encryption settings emailadmin de Verschlüsselungseinstellungen
|
||||
enter your default mail domain (from: user@domain) emailadmin de Standard E-Mail-Domain (Von: benutzer@domain)
|
||||
error connecting to imap server. %s : %s. emailadmin de Fehler beim Verbinden mit dem IMAP Server. %s : %s.
|
||||
@ -46,6 +48,7 @@ imap server closed the connection. emailadmin de IMAP Server hat die Verbindung
|
||||
imap server closed the connection. server responded: %s emailadmin de IMAP Server hat die Verbindung beendet. Server Antwort: %s
|
||||
imap server hostname or ip address emailadmin de IMAP-Server Hostname oder IP-Adresse
|
||||
imap server logintyp emailadmin de IMAP-Server Loginverfahren
|
||||
imap server name emailadmin de IMAP-Server Name
|
||||
imap server port emailadmin de IMAP-Server Port
|
||||
imap/pop3 server name emailadmin de IMAP/POP3-Server Name
|
||||
in mbyte emailadmin de in MByte
|
||||
@ -81,6 +84,7 @@ qmaildotmode emailadmin de qmaildotmode
|
||||
qouta size in mbyte emailadmin de Quota Größe in MByte
|
||||
quota settings emailadmin de Quota Einstellungen
|
||||
remove emailadmin de Entfernen
|
||||
select type of imap server emailadmin de IMAP-Server Typ auswählen
|
||||
select type of imap/pop3 server emailadmin de IMAP/POP3-Server Typ auswählen
|
||||
select type of smtp server emailadmin de SMTP-Server Typ auswählen
|
||||
server settings emailadmin de Server-Einstellungen
|
||||
|
@ -21,6 +21,7 @@ cyrus imap server emailadmin en Cyrus IMAP Server
|
||||
cyrus imap server administration emailadmin en Cyrus IMAP server administration
|
||||
default emailadmin en default
|
||||
deliver extern emailadmin en deliver extern
|
||||
do not validate certificate emailadmin en do not validate certificate
|
||||
do you really want to delete this profile emailadmin en Do you really want to delete this Profile
|
||||
domainname emailadmin en Domainname
|
||||
edit email settings emailadmin en Edit email settings
|
||||
@ -30,6 +31,7 @@ email settings common en Email settings
|
||||
emailadmin emailadmin en EMailAdmin
|
||||
enable cyrus imap server administration emailadmin en enable Cyrus IMAP server administration
|
||||
enable sieve emailadmin en Enable Sieve
|
||||
encrypted connection emailadmin en encrypted connection
|
||||
encryption settings emailadmin en Encryption settings
|
||||
enter your default mail domain (from: user@domain) emailadmin en Enter your default mail domain (from: user@domain)
|
||||
error connecting to imap server. %s : %s. emailadmin en Error connecting to IMAP server. %s : %s.
|
||||
@ -46,6 +48,7 @@ imap server closed the connection. emailadmin en IMAP server closed the connecti
|
||||
imap server closed the connection. server responded: %s emailadmin en IMAP Server closed the connection. Server Responded: %s
|
||||
imap server hostname or ip address emailadmin en IMAP server hostname or ip address
|
||||
imap server logintyp emailadmin en IMAP server login type
|
||||
imap server name emailadmin en imap server name
|
||||
imap server port emailadmin en IMAP server port
|
||||
imap/pop3 server name emailadmin en IMAP/POP3 server name
|
||||
in mbyte emailadmin en in MByte
|
||||
@ -81,6 +84,7 @@ qmaildotmode emailadmin en qmaildotmode
|
||||
qouta size in mbyte emailadmin en Qouta size in MByte
|
||||
quota settings emailadmin en Quota settings
|
||||
remove emailadmin en Remove
|
||||
select type of imap server emailadmin en select type of IMAP server
|
||||
select type of imap/pop3 server emailadmin en Select type of IMAP/POP3 server
|
||||
select type of smtp server emailadmin en Select type of SMTP Server
|
||||
server settings emailadmin en Server settings
|
||||
|
@ -6,7 +6,7 @@
|
||||
<tr>
|
||||
<th width="33%" id="tab1" class="activetab" onclick="javascript:tab.display(1);"><a href="#" tabindex="1" accesskey="1" onfocus="tab.display(1);" onclick="tab.display(1); return(false);">Global</a></th>
|
||||
<th width="33%" id="tab2" class="activetab" onclick="javascript:tab.display(2);"><a href="#" tabindex="2" accesskey="2" onfocus="tab.display(2);" onclick="tab.display(2); return(false);">SMTP</a></th>
|
||||
<th width="33%" id="tab3" class="activetab" onclick="javascript:tab.display(3);"><a href="#" tabindex="3" accesskey="3" onfocus="tab.display(3);" onclick="tab.display(3); return(false);">POP3/IMAP</a></th>
|
||||
<th width="33%" id="tab3" class="activetab" onclick="javascript:tab.display(3);"><a href="#" tabindex="3" accesskey="3" onfocus="tab.display(3);" onclick="tab.display(3); return(false);">IMAP</a></th>
|
||||
<!-- <th id="tab4" class="activetab" onclick="javascript:tab.display(4);"><a href="#" tabindex="4" accesskey="4" onfocus="tab.display(4);" onclick="tab.display(4); return(false);">extern</a></th> -->
|
||||
</tr>
|
||||
</table>
|
||||
|
@ -25,10 +25,13 @@
|
||||
{
|
||||
var $public_functions = array(
|
||||
'pre_process' => True,
|
||||
'post_process' => True
|
||||
'post_process' => True,
|
||||
'ajax_search' => True,
|
||||
);
|
||||
var $human_name = 'AJAX Select'; // this is the name for the editor
|
||||
|
||||
private $debug = false;
|
||||
|
||||
function ajax_select_widget($ui='')
|
||||
{
|
||||
|
||||
@ -59,7 +62,21 @@
|
||||
*/
|
||||
function pre_process($name,&$value,&$cell,&$readonlys,&$extension_data,&$tmpl)
|
||||
{
|
||||
//echo "<p>ajax_select_widget::pre_process('$name',$value," . print_r($cell, true) . "," . print_r($extension_data, true) . ")</p>\n";
|
||||
if($this->debug) {
|
||||
echo __METHOD__ . '<br />';
|
||||
printf("Name:%20s<br />", $name);
|
||||
echo 'Value:';
|
||||
_debug_array($value);
|
||||
echo 'Cell:';
|
||||
_debug_array($cell);
|
||||
|
||||
echo 'Readonlys:';
|
||||
_debug_array($readonlys);
|
||||
|
||||
echo 'Extension_data:';
|
||||
_debug_array($extension_data);
|
||||
|
||||
}
|
||||
|
||||
// Get Options
|
||||
if(!is_array($cell['size'])) {
|
||||
@ -69,7 +86,9 @@
|
||||
$options['id_field'],
|
||||
$options['template'],
|
||||
$options['filter'],
|
||||
$options['filter2']
|
||||
$options['filter2'],
|
||||
$options['link'],
|
||||
$options['icon']
|
||||
) = explode(',', $cell['size']);
|
||||
} else {
|
||||
$options = $cell['size'];
|
||||
@ -128,6 +147,21 @@
|
||||
$widget =& new etemplate('etemplate.ajax_select_widget');
|
||||
$widget->no_onclick = True;
|
||||
|
||||
// Link if readonly & link is set
|
||||
$search =& $widget->get_widget_by_name('search');
|
||||
if(($cell['readonly'] || $readonlys['search']) && $options['link']) {
|
||||
$search['type'] = 'label';
|
||||
$search['no_lang'] = 1;
|
||||
$search['size'] = ',' . $options['link'];
|
||||
} else {
|
||||
$search['type'] = 'text';
|
||||
$search['size'] = '';
|
||||
}
|
||||
|
||||
// Icon
|
||||
$icon =& $widget->get_widget_by_path('/0/1A');
|
||||
$icon['name'] = $options['icon'];
|
||||
|
||||
$cell['obj'] = &$widget;
|
||||
|
||||
// Save options for post_processing
|
||||
@ -173,27 +207,29 @@
|
||||
|
||||
if($count == 1) {
|
||||
$value = $results[0][$extension_data['id_field']];
|
||||
echo 'Match found';
|
||||
return true;
|
||||
} else {
|
||||
} elseif ($count > 1) {
|
||||
$GLOBALS['egw_info']['etemplate']['validation_errors'][$name] = lang("More than 1 match for '%1'",$value_in['search']);
|
||||
$loop = true;
|
||||
return false;
|
||||
} else {
|
||||
$value = $value_in['search'];
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
} elseif (!$value_in['value'] && !$value_in['search']) {
|
||||
$value = null;
|
||||
$loop = $extension_data['required'];
|
||||
$loop = $GLOBALS['egw_info']['etemplate']['loop'] || $extension_data['required'];
|
||||
return !$extension_data['required'];
|
||||
} else {
|
||||
$value = $value_in['value'];
|
||||
$loop = false;
|
||||
$loop = $GLOBALS['egw_info']['etemplate']['loop'] || false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
function change($id, $value, $set_id, $query) {
|
||||
function ajax_search($id, $value, $set_id, $query) {
|
||||
$base_id = substr($id, 0, strrpos($id, '['));
|
||||
$result_id = ($set_id ? $set_id : $base_id . '[results]');
|
||||
$response = new xajaxResponse();
|
||||
@ -233,8 +269,7 @@
|
||||
if(!$query['template'] || $query['template'] == 'etemplate.ajax_select_widget.row') {
|
||||
$query['template'] = 'etemplate.ajax_select_widget.row';
|
||||
}
|
||||
foreach($result_list as $key => $nul) {
|
||||
$row =& $result_list[$key]; // $key => &$row is php5!
|
||||
foreach($result_list as $key => &$row) {
|
||||
if(!is_array($row)) {
|
||||
continue;
|
||||
}
|
||||
|
@ -209,7 +209,7 @@
|
||||
}
|
||||
if (!isset($value['cat_app'])) $value['cat_app'] = $app; // if no cat_app set, use the app from the get_rows func
|
||||
|
||||
$max = $GLOBALS['egw_info']['user']['preferences']['common']['maxmatchs'];
|
||||
$max = (int)$GLOBALS['egw_info']['user']['preferences']['common']['maxmatchs'];
|
||||
$row_options = array();
|
||||
foreach(array(5,12,25,50,100,200,500,999) as $n)
|
||||
{
|
||||
@ -226,7 +226,7 @@
|
||||
if (!isset($value['num_rows'])) $value['num_rows'] = $max;
|
||||
if ($value['num_rows'] != $max)
|
||||
{
|
||||
$GLOBALS['egw_info']['user']['preferences']['common']['maxmatchs'] = $max = $value['num_rows'];
|
||||
$GLOBALS['egw_info']['user']['preferences']['common']['maxmatchs'] = $max = (int)$value['num_rows'];
|
||||
}
|
||||
if (!$value['no_columnselection'])
|
||||
{
|
||||
@ -590,7 +590,8 @@
|
||||
{
|
||||
$loop = true; // num_rows changed
|
||||
}
|
||||
$max = $value['num_rows'] ? $value['num_rows'] : $GLOBALS['egw_info']['user']['preferences']['common']['maxmatchs'];
|
||||
$value['num_rows'] = (int) $value['num_rows'];
|
||||
$max = $value['num_rows'] ? $value['num_rows'] : (int)$GLOBALS['egw_info']['user']['preferences']['common']['maxmatchs'];
|
||||
|
||||
|
||||
if(strpos($value['search'],'xjxquery')) {
|
||||
|
@ -311,7 +311,7 @@
|
||||
$GLOBALS['egw']->xslttpl->set_var('phpgw',array('body_data' => $html));
|
||||
}
|
||||
}
|
||||
$this->save_appsession($this->as_array(2) + array(
|
||||
$this->save_appsession($sess = $this->as_array(2) + array(
|
||||
'readonlys' => $readonlys,
|
||||
'content' => $content,
|
||||
'changes' => $changes,
|
||||
@ -322,6 +322,7 @@
|
||||
'java_script' => $GLOBALS['egw_info']['etemplate']['java_script'],
|
||||
'java_script_from_flags' => $GLOBALS['egw_info']['flags']['java_script'],
|
||||
'java_script_body_tags' => $GLOBALS['egw']->js->body,
|
||||
'include_xajax' => $GLOBALS['egw_info']['flags']['include_xajax'],
|
||||
'dom_enabled' => $GLOBALS['egw_info']['etemplate']['dom_enabled'],
|
||||
'hooked' => $hooked != '' ? $hooked : $GLOBALS['egw_info']['etemplate']['hook_content'],
|
||||
'hook_app' => $hooked ? $GLOBALS['egw_info']['flags']['currentapp'] : $GLOBALS['egw_info']['etemplate']['hook_app'],
|
||||
@ -332,7 +333,27 @@
|
||||
'method' => $method,
|
||||
'name_vars' => $this->name_vars,
|
||||
),$id);
|
||||
|
||||
/*
|
||||
echo "<p><b>total size session data = ".($total=strlen(serialize($sess)))."</b></p>\n";
|
||||
echo "<p>shares bigger then 1.0% percent of it:</p>\n";
|
||||
foreach($sess as $key => $val)
|
||||
{
|
||||
$len = strlen(is_array($val) ? serialize($val) : $val);
|
||||
$len .= ' ('.sprintf('%2.1lf',($percent = 100.0 * $len / $total)).'%)';
|
||||
if ($percent < 1.0) continue;
|
||||
echo "<p><b>$key</b>: strlen(\$val)=$len</p>\n";
|
||||
if (is_array($val) && $len > 2000)
|
||||
{
|
||||
foreach($val as $k => $v)
|
||||
{
|
||||
$l = strlen(is_array($v) ? serialize($v) : $v);
|
||||
$l .= ' ('.sprintf('%2.1lf',($p = 100.0 * $l / $total)).'%)';
|
||||
if ($p < 1.0) continue;
|
||||
echo "<p> - {$key}[$k]: strlen(\$v)=$l</p>\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
if ($this->sitemgr || (int) $output_mode == 1 || (int) $output_mode == -1) // return html
|
||||
{
|
||||
return $html;
|
||||
@ -441,6 +462,8 @@
|
||||
$GLOBALS['egw']->xslttpl->set_var('phpgw',array('body_data' => $session_data['hooked']));
|
||||
}
|
||||
}
|
||||
if($session_data['include_xajax']) $GLOBALS['egw_info']['flags']['include_xajax'] = true;
|
||||
|
||||
if (!empty($session_data['app_header']))
|
||||
{
|
||||
$GLOBALS['egw_info']['flags']['app_header'] = $session_data['app_header'];
|
||||
|
@ -44,8 +44,7 @@ function ajax_select_widget_setup(widget_id, onchange, options) {
|
||||
|
||||
var widget = document.getElementById(widget_id + '[search]');
|
||||
if(widget) {
|
||||
widget.form.disableautocomplete = true;
|
||||
widget.form.autocomplete = 'off';
|
||||
widget.setAttribute('autocomplete', 'off');
|
||||
|
||||
if(widget.addEventListener) {
|
||||
widget.addEventListener('keyup', change, true);
|
||||
@ -118,7 +117,7 @@ function change(e, value) {
|
||||
selects[i].style.visibility = 'hidden';
|
||||
}
|
||||
}
|
||||
xajax_doXMLHTTP("etemplate.ajax_select_widget.change", id, value, set_id, query);
|
||||
xajax_doXMLHTTP("etemplate.ajax_select_widget.ajax_search.etemplate", id, value, set_id, query);
|
||||
}
|
||||
|
||||
|
||||
|
File diff suppressed because one or more lines are too long
18
etemplate/templates/default/ajax_select_widget.row.xet
Normal file
18
etemplate/templates/default/ajax_select_widget.row.xet
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- $Id$ -->
|
||||
<overlay>
|
||||
<template id="etemplate.ajax_select_widget.row" template="" lang="" group="0" version="">
|
||||
<grid>
|
||||
<columns>
|
||||
<column/>
|
||||
<column/>
|
||||
</columns>
|
||||
<rows>
|
||||
<row>
|
||||
<description no_lang="1" id="id_field"/>
|
||||
<description no_lang="1" id="title"/>
|
||||
</row>
|
||||
</rows>
|
||||
</grid>
|
||||
</template>
|
||||
</overlay>
|
31
etemplate/templates/default/ajax_select_widget.xet
Normal file
31
etemplate/templates/default/ajax_select_widget.xet
Normal file
@ -0,0 +1,31 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- $Id$ -->
|
||||
<overlay>
|
||||
<template id="etemplate.ajax_select_widget" template="" lang="" group="0" version="">
|
||||
<grid>
|
||||
<columns>
|
||||
<column/>
|
||||
<column/>
|
||||
</columns>
|
||||
<rows>
|
||||
<row>
|
||||
<textbox id="search"/>
|
||||
<textbox id="value" class="select_value"/>
|
||||
</row>
|
||||
</rows>
|
||||
</grid>
|
||||
<styles>
|
||||
.select_value {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.resultBox {
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.resultBox div:hover {
|
||||
background-color: #D3DCE3;
|
||||
}
|
||||
</styles>
|
||||
</template>
|
||||
</overlay>
|
@ -89,3 +89,13 @@
|
||||
.tab_body {
|
||||
border: black solid 2px;
|
||||
}
|
||||
|
||||
.nextmatch_header {
|
||||
border: 1px solid black;
|
||||
}
|
||||
.nextmatch_header select {
|
||||
width: 140px;
|
||||
}
|
||||
.nm_num_rows select {
|
||||
width: 40px;
|
||||
}
|
@ -2,7 +2,7 @@
|
||||
<!-- $Id$ -->
|
||||
<overlay>
|
||||
<template id="etemplate.nextmatch_widget.nm_row" template="" lang="" group="0" version="1.3.002">
|
||||
<grid width="100%" spacing="0" padding="5">
|
||||
<grid width="100%" spacing="0" padding="3">
|
||||
<columns>
|
||||
<column width="1%"/>
|
||||
<column width="1%"/>
|
||||
@ -21,17 +21,17 @@
|
||||
<button image="first.gif" ro_image="first-grey.gif" label="First" id="first" statustext="go to the first entry"/>
|
||||
<button image="left.gif" ro_image="left-grey.gif" label="Left" id="left" statustext="go to the previous page of entries"/>
|
||||
<menulist>
|
||||
<menupopup type="select-cat" options="-1,,,$cont[cat_app]" label="Category" id="cat_id" onchange="1" statustext="select a Category"/>
|
||||
<menupopup type="select-cat" options="-1,,,$cont[cat_app]" label="Category" id="cat_id" onchange="1" statustext="select a Category" align="center"/>
|
||||
</menulist>
|
||||
<menulist>
|
||||
<menupopup label="@filter_label" align="center" id="filter" onchange="@filter_onchange" statustext="@filter_help"/>
|
||||
</menulist>
|
||||
<menulist>
|
||||
<menupopup label="@filter2_label" align="right" id="filter2" onchange="@filter2_onchange" statustext="@filter2_help"/>
|
||||
<menupopup label="@filter2_label" align="center" id="filter2" onchange="@filter2_onchange" statustext="@filter2_help"/>
|
||||
</menulist>
|
||||
<textbox align="right" id="search" onchange="1" statustext="a pattern to be searched for"/>
|
||||
<textbox align="right" id="search" onchange="1" statustext="a pattern to be searched for" size="12"/>
|
||||
<button label="Search" id="start_search" statustext="to start the search"/>
|
||||
<menulist>
|
||||
<menulist class="nm_num_rows">
|
||||
<menupopup id="num_rows" no_lang="1" onchange="1" statustext="How many entries should the list show"/>
|
||||
</menulist>
|
||||
<button image="right.gif" ro_image="right-grey.gif" label="Right" id="right" statustext="go to the next page of entries"/>
|
||||
@ -51,9 +51,6 @@
|
||||
</row>
|
||||
</rows>
|
||||
</grid>
|
||||
<styles>
|
||||
.thinBorder { border: 1px solid black; }
|
||||
</styles>
|
||||
</template>
|
||||
<template id="etemplate.nextmatch_widget" template="" lang="" group="0" version="1.3.001">
|
||||
<grid width="100%">
|
||||
|
@ -39,7 +39,7 @@ function emptyTrash() {
|
||||
}
|
||||
|
||||
function onNodeSelect(_nodeID) {
|
||||
|
||||
if(tree.getUserData(_nodeID, 'folderName')) {
|
||||
if(document.getElementsByName("folderAction")[0].value == "moveMessage") {
|
||||
resetMessageSelect();
|
||||
formData = xajax.getFormValues('formMessageList');
|
||||
@ -52,6 +52,7 @@ function onNodeSelect(_nodeID) {
|
||||
document.getElementById('divMessageList').innerHTML = '';
|
||||
xajax_doXMLHTTP("felamimail.ajaxfelamimail.updateMessageView",_nodeID);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function quickSearch() {
|
||||
|
@ -1108,7 +1108,7 @@
|
||||
// access includes ties in result
|
||||
if ($isaccess) {
|
||||
$sql = preg_replace(
|
||||
'/(^\s*select\s+(distinctrow|distinct)?)/i','\\1 '.$this->hasTop.' '.$nrows.' ',$sql);
|
||||
'/(^\s*select\s+(distinctrow|distinct)?)/i','\\1 '.$this->hasTop.' '.(int)$nrows.' ',$sql);
|
||||
|
||||
if ($secs2cache>0) {
|
||||
$ret =& $this->CacheExecute($secs2cache, $sql,$inputarr);
|
||||
@ -1118,10 +1118,10 @@
|
||||
return $ret; // PHP5 fix
|
||||
} else if ($ismssql){
|
||||
$sql = preg_replace(
|
||||
'/(^\s*select\s+(distinctrow|distinct)?)/i','\\1 '.$this->hasTop.' '.$nrows.' ',$sql);
|
||||
'/(^\s*select\s+(distinctrow|distinct)?)/i','\\1 '.$this->hasTop.' '.(int)$nrows.' ',$sql);
|
||||
} else {
|
||||
$sql = preg_replace(
|
||||
'/(^\s*select\s)/i','\\1 '.$this->hasTop.' '.$nrows.' ',$sql);
|
||||
'/(^\s*select\s)/i','\\1 '.$this->hasTop.' '.(int)$nrows.' ',$sql);
|
||||
}
|
||||
} else {
|
||||
$nn = $nrows + $offset;
|
||||
@ -1151,7 +1151,7 @@
|
||||
}
|
||||
$ADODB_COUNTRECS = $savec;
|
||||
if ($rs && !$rs->EOF) {
|
||||
$rs =& $this->_rs2rs($rs,$nrows,$offset);
|
||||
$rs =& $this->_rs2rs($rs,(int)$nrows,(int)$offset);
|
||||
}
|
||||
//print_r($rs);
|
||||
return $rs;
|
||||
|
@ -469,10 +469,11 @@ class ADODB_mysql extends ADOConnection {
|
||||
// parameters use PostgreSQL convention, not MySQL
|
||||
function &SelectLimit($sql,$nrows=-1,$offset=-1,$inputarr=false,$secs=0)
|
||||
{
|
||||
$offsetStr =($offset>=0) ? "$offset," : '';
|
||||
// jason judge, see http://phplens.com/lens/lensforum/msgs.php?id=9220
|
||||
if ($nrows < 0) $nrows = '18446744073709551615';
|
||||
|
||||
$offsetStr = (($offset>=0) ? (int)$offset.',' : '').(int)$nrows;
|
||||
|
||||
//if the sql ends by a 'for update' it should be AFTER the LIMIT
|
||||
$FORUPDATE = '';
|
||||
//with PHP5 we could have used stripos and str_ireplace
|
||||
@ -485,9 +486,9 @@ class ADODB_mysql extends ADOConnection {
|
||||
}
|
||||
|
||||
if ($secs)
|
||||
$rs =& $this->CacheExecute($secs,$sql." LIMIT $offsetStr$nrows $FORUPDATE",$inputarr);
|
||||
$rs =& $this->CacheExecute($secs,$sql.' LIMIT '.$offsetStr.' '.$FORUPDATE,$inputarr);
|
||||
else
|
||||
$rs =& $this->Execute($sql." LIMIT $offsetStr$nrows $FORUPDATE",$inputarr);
|
||||
$rs =& $this->Execute($sql.' LIMIT '.$offsetStr.' '.$FORUPDATE,$inputarr);
|
||||
return $rs;
|
||||
}
|
||||
|
||||
|
@ -35,12 +35,12 @@ class ADODB_postgres7 extends ADODB_postgres64 {
|
||||
// which makes obsolete the LIMIT limit,offset syntax
|
||||
function &SelectLimit($sql,$nrows=-1,$offset=-1,$inputarr=false,$secs2cache=0)
|
||||
{
|
||||
$offsetStr = ($offset >= 0) ? " OFFSET $offset" : '';
|
||||
$limitStr = ($nrows >= 0) ? " LIMIT $nrows" : '';
|
||||
$offsetStr = ($offset >= 0) ? ' OFFSET '.(int)$offset : '';
|
||||
$limitStr = ($nrows >= 0) ? ' LIMIT '.(int)$nrows : '';
|
||||
if ($secs2cache)
|
||||
$rs =& $this->CacheExecute($secs2cache,$sql."$limitStr$offsetStr",$inputarr);
|
||||
$rs =& $this->CacheExecute($secs2cache,$sql.$limitStr.$offsetStr,$inputarr);
|
||||
else
|
||||
$rs =& $this->Execute($sql."$limitStr$offsetStr",$inputarr);
|
||||
$rs =& $this->Execute($sql.$limitStr.$offsetStr,$inputarr);
|
||||
|
||||
return $rs;
|
||||
}
|
||||
|
@ -1,92 +0,0 @@
|
||||
<?php
|
||||
/**************************************************************************\
|
||||
* eGroupWare - API htmlarea translations (according to lang in user prefs) *
|
||||
* http://www.eGroupWare.org *
|
||||
* Modified by Ralf Becker <RalfBecker@outdoor-training.de> *
|
||||
* This file is derived from htmlareas's lang/en.js file *
|
||||
* -------------------------------------------- *
|
||||
* This program is free software; you can redistribute it and/or modify it *
|
||||
* under the terms of the GNU General Public License as published by the *
|
||||
* Free Software Foundation; either version 2 of the License, or (at your *
|
||||
* option) any later version. *
|
||||
\**************************************************************************/
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
$GLOBALS['egw_info']['flags'] = Array(
|
||||
'currentapp' => 'home', // can't be phpgwapi, nor htmlarea (no own directory)
|
||||
'noheader' => True,
|
||||
'nonavbar' => True,
|
||||
'noappheader' => True,
|
||||
'noappfooter' => True,
|
||||
'nofooter' => True,
|
||||
'nocachecontrol' => True // allow cacheing
|
||||
);
|
||||
|
||||
include('../../header.inc.php');
|
||||
header('Content-type: text/javascript; charset='.$GLOBALS['egw']->translation->charset());
|
||||
$GLOBALS['egw']->translation->add_app('htmlarea');
|
||||
|
||||
// I18N constants
|
||||
|
||||
// LANG: "en", ENCODING: UTF-8 | ISO-8859-1
|
||||
// Author: Mihai Bazon, <mishoo@infoiasi.ro>
|
||||
|
||||
// FOR TRANSLATORS:
|
||||
//
|
||||
// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE
|
||||
// (at least a valid email address)
|
||||
//
|
||||
// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING;
|
||||
// (if this is not possible, please include a comment
|
||||
// that states what encoding is necessary.)
|
||||
?>
|
||||
HTMLArea.I18N = {
|
||||
|
||||
// the following should be the filename without .js extension
|
||||
// it will be used for automatically load plugin language.
|
||||
lang: "<?php echo $GLOBALS['egw_info']['user']['preferences']['common']['lang']; ?>",
|
||||
|
||||
tooltips: {
|
||||
bold: "<?php echo lang('Bold'); ?>",
|
||||
italic: "<?php echo lang('Italic'); ?>",
|
||||
underline: "<?php echo lang('Underline'); ?>",
|
||||
strikethrough: "<?php echo lang('Strikethrough'); ?>",
|
||||
subscript: "<?php echo lang('Subscript'); ?>",
|
||||
superscript: "<?php echo lang('Superscript'); ?>",
|
||||
justifyleft: "<?php echo lang('Justify Left'); ?>",
|
||||
justifycenter: "<?php echo lang('Justify Center'); ?>",
|
||||
justifyright: "<?php echo lang('Justify Right'); ?>",
|
||||
justifyfull: "<?php echo lang('Justify Full'); ?>",
|
||||
insertorderedlist: "<?php echo lang('Ordered List'); ?>",
|
||||
insertunorderedlist: "<?php echo lang('Bulleted List'); ?>",
|
||||
outdent: "<?php echo lang('Decrease Indent'); ?>",
|
||||
indent: "<?php echo lang('Increase Indent'); ?>",
|
||||
forecolor: "<?php echo lang('Font Color'); ?>",
|
||||
hilitecolor: "<?php echo lang('Background Color'); ?>",
|
||||
inserthorizontalrule: "<?php echo lang('Horizontal Rule'); ?>",
|
||||
createlink: "<?php echo lang('Insert Web Link'); ?>",
|
||||
insertimage: "<?php echo lang('Insert Image'); ?>",
|
||||
inserttable: "<?php echo lang('Insert Table'); ?>",
|
||||
htmlmode: "<?php echo lang('Toggle HTML Source'); ?>",
|
||||
popupeditor: "<?php echo lang('Enlarge Editor'); ?>",
|
||||
about: "<?php echo lang('About this editor'); ?>",
|
||||
showhelp: "<?php echo lang('Help using editor'); ?>",
|
||||
textindicator: "<?php echo lang('Current style'); ?>",
|
||||
undo: "<?php echo lang('Undoes your last action'); ?>",
|
||||
redo: "<?php echo lang('Redoes your last action'); ?>",
|
||||
cut: "<?php echo lang('Cut selection'); ?>",
|
||||
copy: "<?php echo lang('Copy selection'); ?>",
|
||||
paste: "<?php echo lang('Paste from clipboard'); ?>"
|
||||
},
|
||||
|
||||
buttons: {
|
||||
"ok": "<?php echo lang('OK'); ?>",
|
||||
"cancel": "<?php echo lang('Cancel'); ?>"
|
||||
},
|
||||
|
||||
msg: {
|
||||
"Path": "<?php echo lang('Path'); ?>",
|
||||
"TEXT_MODE": "<?php echo lang('You are in TEXT MODE. Use the [<>] button to switch back to WYSIWIG.'); ?>"
|
||||
}
|
||||
};
|
@ -132,9 +132,7 @@
|
||||
<td>
|
||||
<select name="newsettings[mail_server_type]">
|
||||
<option value="imap" {selected_mail_server_type_imap}>IMAP</option>
|
||||
<option value="pop3" {selected_mail_server_type_pop3}>POP-3</option>
|
||||
<option value="imaps" {selected_mail_server_type_imaps}>IMAPS</option>
|
||||
<option value="pop3s" {selected_mail_server_type_pop3s}>POP-3S</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
Loading…
Reference in New Issue
Block a user