stuff of the day: label/remove all sorted to meet birgits requirements; distinct display schema for listview to send/draft/template folders (address column); some translations for upcomming folder delition for folders with subfolders

This commit is contained in:
Klaus Leithoff 2013-12-10 15:59:54 +00:00
parent 391dde093e
commit 1f438436e1
5 changed files with 69 additions and 38 deletions

View File

@ -590,6 +590,7 @@ class mail_bo
$mailbox=null; $mailbox=null;
if($this->folderExists($this->sessionData['mailbox'])) $mailbox = $this->sessionData['mailbox']; if($this->folderExists($this->sessionData['mailbox'])) $mailbox = $this->sessionData['mailbox'];
if (empty($mailbox)) $mailbox = $this->icServer->getCurrentMailbox(); if (empty($mailbox)) $mailbox = $this->icServer->getCurrentMailbox();
/*
if (isset(emailadmin_imap::$supports_keywords[$_icServerID])) if (isset(emailadmin_imap::$supports_keywords[$_icServerID]))
{ {
$this->icServer->openMailbox($mailbox); $this->icServer->openMailbox($mailbox);
@ -598,6 +599,10 @@ class mail_bo
{ {
$this->icServer->examineMailbox($mailbox); $this->icServer->examineMailbox($mailbox);
} }
*/
// the above should detect if there is a known information about supporting KEYWORDS
// but does not work as expected :-(
$this->icServer->examineMailbox($mailbox);
//error_log(__METHOD__." using existing Connection ProfileID:".$_icServerID.' Status:'.print_r($this->icServer->_connected,true)); //error_log(__METHOD__." using existing Connection ProfileID:".$_icServerID.' Status:'.print_r($this->icServer->_connected,true));
//error_log(__METHOD__.__LINE__."->open connection for Server with profileID:".$_icServerID.function_backtrace()); //error_log(__METHOD__.__LINE__."->open connection for Server with profileID:".$_icServerID.function_backtrace());

View File

@ -187,11 +187,11 @@ class mail_ui
$starttime = microtime (true); $starttime = microtime (true);
$this->mail_bo->restoreSessionData(); $this->mail_bo->restoreSessionData();
$sessionFolder = $this->mail_bo->sessionData['mailbox']; $sessionFolder = $this->mail_bo->sessionData['mailbox'];
$toSchema = false;//decides to select list schema with column to selected (if false fromaddress is default) //$toSchema = false;//decides to select list schema with column to selected (if false fromaddress is default)
if ($this->mail_bo->folderExists($sessionFolder)) if ($this->mail_bo->folderExists($sessionFolder))
{ {
$this->mail_bo->reopen($sessionFolder); // needed to fetch full set of capabilities $this->mail_bo->reopen($sessionFolder); // needed to fetch full set of capabilities
$toSchema = $this->mail_bo->isDraftFolder($sessionFolder)||$this->mail_bo->isSentFolder($sessionFolder)||$this->mail_bo->isTemplateFolder($sessionFolder); //$toSchema = $this->mail_bo->isDraftFolder($sessionFolder)||$this->mail_bo->isSentFolder($sessionFolder)||$this->mail_bo->isTemplateFolder($sessionFolder);
} }
//error_log(__METHOD__.__LINE__.' SessionFolder:'.$sessionFolder.' isToSchema:'.$toSchema); //error_log(__METHOD__.__LINE__.' SessionFolder:'.$sessionFolder.' isToSchema:'.$toSchema);
//_debug_array($content); //_debug_array($content);
@ -213,7 +213,8 @@ class mail_ui
'start' => 0, // IO position in list 'start' => 0, // IO position in list
'order' => 'date', // IO name of the column to sort after (optional for the sortheaders) 'order' => 'date', // IO name of the column to sort after (optional for the sortheaders)
'sort' => 'DESC', // IO direction of the sort: 'ASC' or 'DESC' 'sort' => 'DESC', // IO direction of the sort: 'ASC' or 'DESC'
'default_cols' => 'status,attachments,subject,'.($toSchema?'toaddress':'fromaddress').',date,size', // I columns to use if there's no user or default pref (! as first char uses all but the named columns), default all columns //'default_cols' => 'status,attachments,subject,'.($toSchema?'toaddress':'fromaddress').',date,size', // I columns to use if there's no user or default pref (! as first char uses all but the named columns), default all columns
'default_cols' => 'status,attachments,subject,address,date,size', // I columns to use if there's no user or default pref (! as first char uses all but the named columns), default all columns
'csv_fields' => false, // I false=disable csv export, true or unset=enable it with auto-detected fieldnames, 'csv_fields' => false, // I false=disable csv export, true or unset=enable it with auto-detected fieldnames,
//or array with name=>label or name=>array('label'=>label,'type'=>type) pairs (type is a eT widget-type) //or array with name=>label or name=>array('label'=>label,'type'=>type) pairs (type is a eT widget-type)
'actions' => self::get_actions(), 'actions' => self::get_actions(),
@ -223,7 +224,8 @@ class mail_ui
//$content[self::$nm_index]['path'] = self::get_home_dir(); //$content[self::$nm_index]['path'] = self::get_home_dir();
} }
} }
$content[self::$nm_index]['default_cols'] = 'status,attachments,subject,'.($toSchema?'toaddress':'fromaddress').',date,size'; // I columns to use if there's no user or default pref (! as first char uses all but the named columns), default all columns //$content[self::$nm_index]['default_cols'] = 'status,attachments,subject,'.($toSchema?'toaddress':'fromaddress').',date,size'; // I columns to use if there's no user or default pref (! as first char uses all but the named columns), default all columns
$content[self::$nm_index]['default_cols'] = 'status,attachments,subject,address,date,size'; // I columns to use if there's no user or default pref (! as first char uses all but the named columns), default all columns
$content[self::$nm_index]['csv_fields'] = false; $content[self::$nm_index]['csv_fields'] = false;
if ($msg) if ($msg)
{ {
@ -948,36 +950,6 @@ class mail_ui
'icon' => 'tag_message', 'icon' => 'tag_message',
'group' => ++$group, 'group' => ++$group,
'children' => array( 'children' => array(
'label1' => array(
'caption' => "<font color='#ff0000'>".lang('urgent')."</font>",
'icon' => 'mail_label1',
'onExecute' => 'javaScript:app.mail.mail_flag',
'shortcut' => egw_keymanager::shortcut(egw_keymanager::_1, true, true),
),
'label2' => array(
'caption' => "<font color='#ff8000'>".lang('job')."</font>",
'icon' => 'mail_label2',
'onExecute' => 'javaScript:app.mail.mail_flag',
'shortcut' => egw_keymanager::shortcut(egw_keymanager::_2, true, true),
),
'label3' => array(
'caption' => "<font color='#008000'>".lang('personal')."</font>",
'icon' => 'mail_label3',
'onExecute' => 'javaScript:app.mail.mail_flag',
'shortcut' => egw_keymanager::shortcut(egw_keymanager::_3, true, true),
),
'label4' => array(
'caption' => "<font color='#0000ff'>".lang('to do')."</font>",
'icon' => 'mail_label4',
'onExecute' => 'javaScript:app.mail.mail_flag',
'shortcut' => egw_keymanager::shortcut(egw_keymanager::_4, true, true),
),
'label5' => array(
'caption' => "<font color='#8000ff'>".lang('later')."</font>",
'icon' => 'mail_label5',
'onExecute' => 'javaScript:app.mail.mail_flag',
'shortcut' => egw_keymanager::shortcut(egw_keymanager::_5, true, true),
),
'unlabel' => array( 'unlabel' => array(
'group' => ++$group, 'group' => ++$group,
'caption' => "<font color='#ff0000'>".lang('remove all')."</font>", 'caption' => "<font color='#ff0000'>".lang('remove all')."</font>",
@ -985,6 +957,41 @@ class mail_ui
'onExecute' => 'javaScript:app.mail.mail_flag', 'onExecute' => 'javaScript:app.mail.mail_flag',
'shortcut' => egw_keymanager::shortcut(egw_keymanager::_0, true, true), 'shortcut' => egw_keymanager::shortcut(egw_keymanager::_0, true, true),
), ),
'label1' => array(
'group' => ++$group,
'caption' => "<font color='#ff0000'>".lang('urgent')."</font>",
'icon' => 'mail_label1',
'onExecute' => 'javaScript:app.mail.mail_flag',
'shortcut' => egw_keymanager::shortcut(egw_keymanager::_1, true, true),
),
'label2' => array(
'group' => $group,
'caption' => "<font color='#ff8000'>".lang('job')."</font>",
'icon' => 'mail_label2',
'onExecute' => 'javaScript:app.mail.mail_flag',
'shortcut' => egw_keymanager::shortcut(egw_keymanager::_2, true, true),
),
'label3' => array(
'group' => $group,
'caption' => "<font color='#008000'>".lang('personal')."</font>",
'icon' => 'mail_label3',
'onExecute' => 'javaScript:app.mail.mail_flag',
'shortcut' => egw_keymanager::shortcut(egw_keymanager::_3, true, true),
),
'label4' => array(
'group' => $group,
'caption' => "<font color='#0000ff'>".lang('to do')."</font>",
'icon' => 'mail_label4',
'onExecute' => 'javaScript:app.mail.mail_flag',
'shortcut' => egw_keymanager::shortcut(egw_keymanager::_4, true, true),
),
'label5' => array(
'group' => $group,
'caption' => "<font color='#8000ff'>".lang('later')."</font>",
'icon' => 'mail_label5',
'onExecute' => 'javaScript:app.mail.mail_flag',
'shortcut' => egw_keymanager::shortcut(egw_keymanager::_5, true, true),
),
), ),
), ),
// modified icons from http://creativecommons.org/licenses/by-sa/3.0/ // modified icons from http://creativecommons.org/licenses/by-sa/3.0/
@ -1146,11 +1153,17 @@ unset($query['actions']);
//save selected Folder to sessionData (mailbox)->currentFolder //save selected Folder to sessionData (mailbox)->currentFolder
if (isset($query['selectedFolder'])) $this->mail_bo->sessionData['mailbox']=$_folderName; if (isset($query['selectedFolder'])) $this->mail_bo->sessionData['mailbox']=$_folderName;
$this->mail_bo->saveSessionData(); $this->mail_bo->saveSessionData();
$toSchema = false;//decides to select list schema with column to selected (if false fromaddress is default)
if ($this->mail_bo->folderExists($_folderName))
{
$toSchema = $this->mail_bo->isDraftFolder($_folderName)||$this->mail_bo->isSentFolder($_folderName)||$this->mail_bo->isTemplateFolder($_folderName);
}
$rowsFetched['messages'] = null; $rowsFetched['messages'] = null;
$offset = $query['start']+1; // we always start with 1 $offset = $query['start']+1; // we always start with 1
$maxMessages = $query['num_rows']; $maxMessages = $query['num_rows'];
$sort = $query['order']; //error_log(__METHOD__.__LINE__.$query['order']);
$sort = ($query['order']=='address'?($toSchema?'toaddress':'fromaddress'):$query['order']);
if (!empty($query['search'])) if (!empty($query['search']))
{ {
//([filterName] => Schnellsuche[type] => quick[string] => ebay[status] => any //([filterName] => Schnellsuche[type] => quick[string] => ebay[status] => any
@ -1236,9 +1249,9 @@ unset($query['actions']);
if (empty($rowsFetched['messages'])) $rowsFetched['messages'] = $rowsFetched['rowsFetched']; if (empty($rowsFetched['messages'])) $rowsFetched['messages'] = $rowsFetched['rowsFetched'];
//error_log(__METHOD__.__LINE__.' Rows fetched:'.$rowsFetched.' Data:'.array2string($sortResult)); //error_log(__METHOD__.__LINE__.' Rows fetched:'.$rowsFetched.' Data:'.array2string($sortResult));
$cols = array('row_id','uid','status','attachments','subject','toaddress','fromaddress','ccaddress','additionaltoaddress','date','size','modified'); $cols = array('row_id','uid','status','attachments','subject','address','toaddress','fromaddress','ccaddress','additionaltoaddress','date','size','modified');
if ($GLOBALS['egw_info']['user']['preferences']['common']['select_mode']=='EGW_SELECTMODE_TOGGLE') unset($cols[0]); if ($GLOBALS['egw_info']['user']['preferences']['common']['select_mode']=='EGW_SELECTMODE_TOGGLE') unset($cols[0]);
$rows = $this->header2gridelements($sortResult['header'],$cols, $_folderName, $folderType,$previewMessage); $rows = $this->header2gridelements($sortResult['header'],$cols, $_folderName, $folderType=$toSchema,$previewMessage);
//error_log(__METHOD__.__LINE__.array2string($rows)); //error_log(__METHOD__.__LINE__.array2string($rows));
$endtime = microtime(true) - $starttime; $endtime = microtime(true) - $starttime;
//error_log(__METHOD__.__LINE__. " time used: ".$endtime.' for Folder:'.$_folderName.' Start:'.$query['start'].' NumRows:'.$query['num_rows']); //error_log(__METHOD__.__LINE__. " time used: ".$endtime.' for Folder:'.$_folderName.' Start:'.$query['start'].' NumRows:'.$query['num_rows']);
@ -1560,6 +1573,7 @@ unset($query['actions']);
$data['attachmentsPresent'] = $imageTag; $data['attachmentsPresent'] = $imageTag;
$data['attachmentsBlock'] = $imageHTMLBlock; $data['attachmentsBlock'] = $imageHTMLBlock;
$data['toolbaractions'] = json_encode($actionsenabled); $data['toolbaractions'] = json_encode($actionsenabled);
$data['address'] = ($_folderType?$data["toaddress"]:$data["fromaddress"]);
$rv[] = $data; $rv[] = $data;
//error_log(__METHOD__.__LINE__.array2string($result)); //error_log(__METHOD__.__LINE__.array2string($result));
} }
@ -3330,6 +3344,9 @@ blockquote[type=cite] {
*/ */
function ajax_deleteFolder($_folderName) function ajax_deleteFolder($_folderName)
{ {
//lang("Do you really want to DELETE Folder %1 ?",OldFolderName);
//lang("All subfolders will be deleted too, and all messages in all affected folders will be lost");
//lang("All messages in the folder will be lost");
//error_log(__METHOD__.__LINE__.' OldFolderName:'.array2string($_folderName)); //error_log(__METHOD__.__LINE__.' OldFolderName:'.array2string($_folderName));
$success = false; $success = false;
if ($_folderName) if ($_folderName)

View File

@ -1861,7 +1861,7 @@ app.classes.mail = AppJS.extend(
OldFolderName = OldFolderName.trim(); OldFolderName = OldFolderName.trim();
OldFolderName = OldFolderName.replace(/\([0-9]*\)/g,'').trim(); OldFolderName = OldFolderName.replace(/\([0-9]*\)/g,'').trim();
//console.log(OldFolderName); //console.log(OldFolderName);
reallyDelete = confirm(this.egw.lang("Do you really want to DELETE Folder %1 ? \r\nAll messages in the folder will be lost",OldFolderName)); reallyDelete = confirm(this.egw.lang("Do you really want to DELETE Folder %1 ?",OldFolderName)+" \r\n"+(ftree.hasChildren(_senders[0].iface.id)?this.egw.lang("All subfolders will be deleted too, and all messages in all affected folders will be lost"):this.egw.lang("All messages in the folder will be lost")));
if (reallyDelete) if (reallyDelete)
{ {
app.mail.app_refresh(this.egw.lang("Deleting Folder %1",OldFolderName, 'mail')); app.mail.app_refresh(this.egw.lang("Deleting Folder %1",OldFolderName, 'mail'));

View File

@ -10,7 +10,9 @@ activating by date requires a start- and end-date! mail en Activating by date re
add to addressbook mail en add to addressbook add to addressbook mail en add to addressbook
all adresses: mail en All Adresses: all adresses: mail en All Adresses:
all available info admin en all available info all available info admin en all available info
all messages in the folder will be lost mail en All messages in the folder will be lost
all of mail en all of all of mail en all of
all subfolders will be deleted too, and all messages in all affected folders will be lost mail en All subfolders will be deleted too, and all messages in all affected folders will be lost
allow external images mail en Allow external images allow external images mail en Allow external images
allow images from external sources in html emails mail en allow images from external sources in html emails allow images from external sources in html emails mail en allow images from external sources in html emails
allways a new window mail en allways a new window allways a new window mail en allways a new window
@ -54,6 +56,7 @@ display only when no plain text is available mail en display only when no plain
displaying html messages is disabled mail en displaying html messages is disabled displaying html messages is disabled mail en displaying html messages is disabled
displaying plain messages is disabled mail en displaying plain messages is disabled displaying plain messages is disabled mail en displaying plain messages is disabled
do not auto create folders mail en do not auto create folders do not auto create folders mail en do not auto create folders
do you really want to delete folder %1 ? mail en Do you really want to DELETE Folder %1 ?
do you want to be asked for confirmation before attaching selected messages to new mail? mail en Do you want to be asked for confirmation before attaching selected messages to new mail? do you want to be asked for confirmation before attaching selected messages to new mail? mail en Do you want to be asked for confirmation before attaching selected messages to new mail?
do you want to be asked for confirmation before moving selected messages to another folder? mail en Do you want to be asked for confirmation before moving selected messages to another folder? do you want to be asked for confirmation before moving selected messages to another folder? mail en Do you want to be asked for confirmation before moving selected messages to another folder?
do you want to prevent the editing/setup for forwarding of mails via settings (, even if sieve is enabled)? mail en Do you want to prevent the editing/setup for forwarding of mails via settings (, even if SIEVE is enabled)? do you want to prevent the editing/setup for forwarding of mails via settings (, even if sieve is enabled)? mail en Do you want to prevent the editing/setup for forwarding of mails via settings (, even if SIEVE is enabled)?
@ -150,13 +153,16 @@ new message type mail en New message type
no (valid) send folder set in preferences mail en No (valid) Send Folder set in preferences no (valid) send folder set in preferences mail en No (valid) Send Folder set in preferences
no action defined! mail en No action defined! no action defined! mail en No action defined!
no address to/cc/bcc supplied, and no folder to save message to provided. mail en No Address TO/CC/BCC supplied, and no folder to save message to provided. no address to/cc/bcc supplied, and no folder to save message to provided. mail en No Address TO/CC/BCC supplied, and no folder to save message to provided.
no adress, to send this mail to, supplied mail en no adress, to send this mail to, supplied
no folder destination supplied, and no folder to save message or other measure to store the mail (save to infolog/tracker) provided, but required. mail en No Folder destination supplied, and no folder to save message or other measure to store the mail (save to infolog/tracker) provided, but required. no folder destination supplied, and no folder to save message or other measure to store the mail (save to infolog/tracker) provided, but required. mail en No Folder destination supplied, and no folder to save message or other measure to store the mail (save to infolog/tracker) provided, but required.
no folders mail en no folders no folders mail en no folders
no message body supplied mail en no message body supplied
no plain text part found mail en no plain text part found no plain text part found mail en no plain text part found
no recipient address given! mail en No recipient address given! no recipient address given! mail en No recipient address given!
no send folder set in preferences mail en No Send Folder set in preferences no send folder set in preferences mail en No Send Folder set in preferences
no signature mail en no signature no signature mail en no signature
no subject given! mail en No subject given! no subject given! mail en No subject given!
no subject supplied mail en no subject supplied
none, create all mail en none, create all none, create all mail en none, create all
notify when new mails arrive in these folders mail en notify when new mails arrive in these folders notify when new mails arrive in these folders mail en notify when new mails arrive in these folders
on mail en on on mail en on

View File

@ -11,6 +11,7 @@
<column width="95"/> <column width="95"/>
<column width="120"/> <column width="120"/>
<column width="120"/> <column width="120"/>
<column width="120"/>
<column width="50"/> <column width="50"/>
</columns> </columns>
<rows> <rows>
@ -20,6 +21,7 @@
<nextmatch-header statustext="attachments, ..." label="..." id="attachments"/> <nextmatch-header statustext="attachments, ..." label="..." id="attachments"/>
<nextmatch-sortheader label="subject" id="subject"/> <nextmatch-sortheader label="subject" id="subject"/>
<nextmatch-sortheader align="center" label="date" id="date"/> <nextmatch-sortheader align="center" label="date" id="date"/>
<nextmatch-sortheader label="emailaddress" id="address"/>
<nextmatch-sortheader label="to" id="toaddress"/> <nextmatch-sortheader label="to" id="toaddress"/>
<nextmatch-sortheader label="from" id="fromaddress"/> <nextmatch-sortheader label="from" id="fromaddress"/>
<nextmatch-sortheader align="center" label="size" id="size"/> <nextmatch-sortheader align="center" label="size" id="size"/>
@ -30,6 +32,7 @@
<html id="${row}[attachments]"/> <html id="${row}[attachments]"/>
<description id="${row}[subject]" no_lang="1"/> <description id="${row}[subject]" no_lang="1"/>
<date-time_today align="center" id="${row}[date]" readonly="true"/> <date-time_today align="center" id="${row}[date]" readonly="true"/>
<url-email id="${row}[address]" readonly="true"/>
<url-email id="${row}[toaddress]" readonly="true"/> <url-email id="${row}[toaddress]" readonly="true"/>
<url-email id="${row}[fromaddress]" readonly="true"/> <url-email id="${row}[fromaddress]" readonly="true"/>
<vfs-size align="right" id="${row}[size]" no_lang="1" readonly="true"/> <vfs-size align="right" id="${row}[size]" no_lang="1" readonly="true"/>