mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-12-26 00:29:18 +01:00
some css to style the foldertree, move the foldertree around, own app refresh method, handle and visualize NoSelect Folders
This commit is contained in:
parent
33aac37741
commit
cb91c4bb8c
@ -808,6 +808,13 @@ class mail_hooks
|
||||
);
|
||||
|
||||
}
|
||||
// Destination div for folder tree
|
||||
$file[] = array(
|
||||
'no_lang' => true,
|
||||
'text'=>'<span id="tree_target" class="dtree"/>',
|
||||
'link'=>false,
|
||||
'icon' => false
|
||||
);
|
||||
// empty trash (if available -> move to trash )
|
||||
if($preferences->preferences['deleteOptions'] == 'move_to_trash')
|
||||
{
|
||||
@ -836,13 +843,6 @@ class mail_hooks
|
||||
|
||||
}
|
||||
|
||||
// Destination div for folder tree
|
||||
$file[] = array(
|
||||
'no_lang' => true,
|
||||
'text'=>'<span id="tree_target"/>',
|
||||
'link'=>false,
|
||||
'icon' => false
|
||||
);
|
||||
|
||||
// display them all
|
||||
display_sidebox($appname,$menu_title,$file);
|
||||
|
@ -348,6 +348,12 @@ class mail_ui
|
||||
$oA['im2'] = "MailFolderClosed.png"; // has Children
|
||||
}
|
||||
$oA['id'] = $path; // ID holds the PATH
|
||||
if (stripos(array2string($fS['attributes']),'\noselect')!== false)
|
||||
{
|
||||
$oA['im0'] = "folderNoSelectClosed.gif"; // one Level
|
||||
$oA['im1'] = "folderNoSelectOpen.gif";
|
||||
$oA['im2'] = "folderNoSelectClosed.gif"; // has Children
|
||||
}
|
||||
if (stripos(array2string($fS['attributes']),'\hasnochildren')=== false)
|
||||
{
|
||||
$oA['child']=1; // translates to: hasChildren -> dynamicLoading
|
||||
@ -395,7 +401,7 @@ class mail_ui
|
||||
if ($createMissingParents)
|
||||
{
|
||||
unset($item);
|
||||
$item = array('id' => $parent.$component, 'text' => $component, 'tooltip' => '**missing**');
|
||||
$item = array('id' => $parent.$component, 'text' => $component, 'im0' => "folderNoSelectClosed.gif",'im1' => "folderNoSelectOpen.gif",'im2' => "folderNoSelectClosed.gif",'tooltip' => '**missing**');
|
||||
$insert['item'][] =& $item;
|
||||
$insert =& $item;
|
||||
}
|
||||
@ -1221,6 +1227,6 @@ error_log(__METHOD__.__LINE__.' SelectedFolder:'.$query['selectedFolder'].' Star
|
||||
$this->mail_bo->compressFolder($trashFolder);
|
||||
}
|
||||
$response = egw_json_response::get();
|
||||
$response->call('egw_refresh',lang('emptied Trash'),'mail');
|
||||
$response->call('egw_refresh',lang('empty trash'),'mail');
|
||||
}
|
||||
}
|
||||
|
@ -8,10 +8,71 @@
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/**
|
||||
* Refresh given application _targetapp display of entry _app _id, incl. outputting _msg
|
||||
*
|
||||
* Default implementation here only reloads window with it's current url with an added msg=_msg attached
|
||||
*
|
||||
* @param string _msg message (already translated) to show, eg. 'Entry deleted'
|
||||
* @param string _app application name
|
||||
* @param string|int _id=null id of entry to refresh
|
||||
* @param string _type=null either 'edit', 'delete', 'add' or null
|
||||
*/
|
||||
var doStatus;
|
||||
function app_refresh(_msg, _app, _id, _type)
|
||||
{
|
||||
var bufferExists = false;
|
||||
window.clearInterval(doStatus); // whatever message was up to be activated
|
||||
//alert("app_refresh(\'"+_msg+"\',\'"+_app+"\',\'"+_id+"\',\'"+_type+"\')");
|
||||
//myCurrentMsg = getMsg();
|
||||
//if (myCurrentMsg.length) {
|
||||
// clear message after some time
|
||||
myMessageBuffer = ""; //myCurrentMsg;
|
||||
bufferExists = true;
|
||||
//}
|
||||
setMsg('<span style="font-weight: bold;">' +_msg+ '</span>');
|
||||
if (_app=='mail')
|
||||
{
|
||||
//we may want to trigger some actions, like modifying the grid, disable preview and stuff
|
||||
|
||||
// TODO: more actions
|
||||
}
|
||||
if (bufferExists) doStatus = window.setInterval("egw_appWindow('mail').setMsg(myMessageBuffer);", 10000);
|
||||
}
|
||||
|
||||
/**
|
||||
* getMsg - gets the current Message
|
||||
* @return string
|
||||
*/
|
||||
function getMsg()
|
||||
{
|
||||
var msg_wdg = etemplate2.getByApplication('mail')[0].widgetContainer.getWidgetById('msg');
|
||||
if (msg_wdg)
|
||||
{
|
||||
return msg_wdg.valueOf().htmlNode[0].innerHTML;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* setMsg - sets a Message, with the msg container, and controls if the container is enabled/disabled
|
||||
* @param string myMsg - the message
|
||||
*/
|
||||
function setMsg(myMsg)
|
||||
{
|
||||
var msg_wdg = etemplate2.getByApplication('mail')[0].widgetContainer.getWidgetById('msg');
|
||||
if (msg_wdg)
|
||||
{
|
||||
msg_wdg.set_value(myMsg);
|
||||
msg_wdg.set_disabled(myMsg.trim().length==0);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* emptyTrash
|
||||
*/
|
||||
function emptyTrash() {
|
||||
app_refresh(egw.lang('empty trash'), 'mail');
|
||||
var request = new egw_json_request('mail.mail_ui.ajax_emptyTrash');
|
||||
request.sendRequest();
|
||||
}
|
||||
@ -21,8 +82,30 @@ function emptyTrash() {
|
||||
*/
|
||||
function changeFolder(folder,_widget) {
|
||||
//alert('change Folder called:'+folder);
|
||||
app_refresh(egw.lang('change folder'), 'mail');
|
||||
var img = _widget.getSelectedNode().images[0]; // fetch first image
|
||||
if (!(img.search(eval('/'+'NoSelect'+'/'))<0))
|
||||
{
|
||||
if (_widget.event_args.length==2)
|
||||
{
|
||||
folder = _widget.event_args[1];
|
||||
_widget.set_value(folder);
|
||||
}
|
||||
else
|
||||
{
|
||||
_widget.set_value('');
|
||||
}
|
||||
}
|
||||
var nm = _widget.getRoot().getWidgetById('nm');
|
||||
nm.activeFilters["selectedFolder"] = folder;
|
||||
nm.applyFilters();
|
||||
var msg = _widget.getRoot().getWidgetById('msg');
|
||||
if (msg)
|
||||
{
|
||||
window.clearInterval(doStatus);
|
||||
displayname = _widget.getSelectedLabel();
|
||||
myMsg = (displayname?displayname:folder)+' '+egw.lang('selected');
|
||||
app_refresh(myMsg, 'mail');
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -190,3 +190,35 @@ pre {
|
||||
white-space: -o-pre-wrap; /* Opera 7 */
|
||||
width: 99%;
|
||||
}
|
||||
|
||||
.dtree {
|
||||
font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
|
||||
font-size: 11px;
|
||||
color: #666;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.dtree img {
|
||||
border: 0px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.dtree a {
|
||||
color: #333;
|
||||
text-decoration: none;
|
||||
}
|
||||
.dtree a.node, .dtree a.nodeSel {
|
||||
white-space: nowrap;
|
||||
padding: 1px 2px 1px 2px;
|
||||
}
|
||||
.dtree a.node:hover, .dtree a.nodeSel:hover {
|
||||
color: #333;
|
||||
text-decoration: underline;
|
||||
}
|
||||
.dtree a.nodeSel {
|
||||
background-color: #c0d2ec;
|
||||
}
|
||||
.dtree .clip {
|
||||
overflow: hidden;
|
||||
}
|
||||
.dtree table, .dtree tr, .dtree td {
|
||||
border: none;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user