diff --git a/etemplate/js/et2_extension_nextmatch_controller.js b/etemplate/js/et2_extension_nextmatch_controller.js index 1ba5baed86..2058344f72 100644 --- a/etemplate/js/et2_extension_nextmatch_controller.js +++ b/etemplate/js/et2_extension_nextmatch_controller.js @@ -335,7 +335,10 @@ var et2_nextmatch_controller = et2_dataview_controller.extend(et2_IDataProvider, this.append('
'); }, span); } - return helper; + // As we wanted to have a general defaul helper interface, we return null here and not using customize helper for links + // TODO: Need to decide if we need to create a customized helper interface for links anyway + //return helper; + return null; },true); } if(this._actionLinks.indexOf(drag_action.id) < 0) diff --git a/etemplate/templates/default/etemplate2.css b/etemplate/templates/default/etemplate2.css index 3d7225eee8..13eae7dd60 100644 --- a/etemplate/templates/default/etemplate2.css +++ b/etemplate/templates/default/etemplate2.css @@ -1643,6 +1643,7 @@ div.et2_image_tooltipPopup { div.et2_egw_action_ddHelper { } +/* The last div which shows Ctrl tip to user*/ div.et2_egw_action_ddHelper_tip { position: relative; text-overflow: ellipsis; @@ -1664,10 +1665,20 @@ table.et2_egw_action_ddHelper_row tr { background: none; max-height: 20px; } +/* Apply to all displaied rows in order to get same result*/ table.et2_egw_action_ddHelper_row * { white-space: nowrap !important; + max-height: 15px; + overflow:hidden; + text-overflow: ellipsis; + max-width: 400px; } -span.et2_egw_action_ddHelper_itemCnt { +/* Last row of items which shows the number of more items*/ +tr.et2_egw_action_ddHelper_moreRow{ + +} +/* The big total item counter*/ +span.et2_egw_action_ddHelper_itemsCnt { background: transparent; position: absolute; left: 20px; diff --git a/filemanager/js/app.js b/filemanager/js/app.js index b75bbeaaa7..17d4044517 100644 --- a/filemanager/js/app.js +++ b/filemanager/js/app.js @@ -612,85 +612,6 @@ app.classes.filemanager = AppJS.extend( return false; }, - /** - * Get drag helper, called on drag start - * - * @param {egwAction} _action - * @param {array} _elems - * @return some dome objects - */ - drag: function(_action, _elems) - { - var icons = []; - for (var i = 0; i < _elems.length; i++) - { - var data = egw.dataGetUIDdata(_elems[i].id); - var src = egw.mime_icon(data.data.mime, data.data.path); - - if (_elems[i].getFocused()) - { - icons.unshift(src); - } - else - { - icons.push(src); - } - } - - // Only take a maximum of 10 icons - var maxCnt = 10; - - var div = $j(document.createElement("div")) - .css({ - position: 'absolute', - top: '0px', - left: '0px', - width: '300px' - }); - - var lastIcon = ""; - var idx = 0; - - for (var i = 0; i < icons.length; i++) - { - if (icons[i] != lastIcon) - { - lastIcon = icons[i]; - - // Create a stack of images - var img = $j(document.createElement('img')); - img.css({ - position: 'absolute', - 'z-index': 10000-i, - top: idx*5, - left: idx*5, - opacity: (maxCnt - idx) / maxCnt - }); - img.attr('src', icons[i]); - div.append(img); - - idx++; - if (idx == maxCnt) - { - break; - } - } - } - var text = $j(document.createElement('div')).css({left: '30px', position: 'absolute'}); - // add filename or number of files for multiple files - text.text(_elems.length > 1 ? _elems.length+' '+this.egw.lang('files') : this.basename(_elems[0].id)); - div.append(text); - - // Add notice of Ctrl key, if supported - if(window.FileReader && 'draggable' in document.createElement('span') && - navigator && navigator.userAgent.indexOf('Chrome') >= 0) - { - var key = ["Mac68K","MacPPC","MacIntel"].indexOf(window.navigator.platform) < 0 ? 'Ctrl' : 'Command'; - text.append('
' + this.egw.lang('Hold %1 to drag files to your computer',key)); - } - return div; - }, - /** * Change readonly state for given directory * diff --git a/phpgwapi/js/egw_action/egw_action_dragdrop.js b/phpgwapi/js/egw_action/egw_action_dragdrop.js index 4fce6ee152..a3ac2ae195 100644 --- a/phpgwapi/js/egw_action/egw_action_dragdrop.js +++ b/phpgwapi/js/egw_action/egw_action_dragdrop.js @@ -84,22 +84,15 @@ function egwDragActionImplementation() ai.selected = []; // Define default helper DOM + // default helper also can be called later in application code in order to customization ai.defaultDDHelper = function (_selected) { // Table containing clone of rows var table = $j(document.createElement("table")).addClass('egwGridView_grid et2_egw_action_ddHelper_row'); // tr element to use as last row to show lable more ... - var moreRow = $j(document.createElement('tr')).addClass('et2_egw_action_ddHelper_tip'); + var moreRow = $j(document.createElement('tr')).addClass('et2_egw_action_ddHelper_moreRow'); // Main div helper container var div = $j(document.createElement("div")).append(table); - // Lable to show number of items - var spanCnt = $j(document.createElement('span')) - .addClass('et2_egw_action_ddHelper_itemsCnt') - .appendTo(div); - - // TODO: get the right drag item next to the number - var itemsLabel = ''; - spanCnt.text(_selected.length + itemsLabel); var rows = []; // Maximum number of rows to show @@ -117,14 +110,26 @@ function egwDragActionImplementation() index++; if (index == maxRows) { + // Lable to show number of items + var spanCnt = $j(document.createElement('span')) + .addClass('et2_egw_action_ddHelper_itemsCnt') + .appendTo(div); + + // TODO: get the right drag item next to the number + var itemLabel = ''; + spanCnt.text(_selected.length + itemLabel); + var restRows = _selected.length - maxRows; - if (restRows) moreRow.text((_selected.length - maxRows) +' '+egw.lang('more selected ...')); + if (restRows) + { + moreRow.text((_selected.length - maxRows) +' '+egw.lang('more %1 selected ...', itemLabel)); + } table.append(moreRow); break; } } - var text = $j(document.createElement('div')).addClass('et2_egw_action_ddHelper_textArea'); + var text = $j(document.createElement('div')).addClass('et2_egw_action_ddHelper_tip'); div.append(text); // Add notice of Ctrl key, if supported @@ -132,9 +137,9 @@ function egwDragActionImplementation() navigator && navigator.userAgent.indexOf('Chrome') >= 0) { var key = ["Mac68K","MacPPC","MacIntel"].indexOf(window.navigator.platform) < 0 ? 'Ctrl' : 'Command'; - - text.text(egw.lang('Hold %1 to drag %2 to your computer',key, itemsLabel)); + text.text(egw.lang('Hold %1 to drag %2 to your computer',key, itemLabel)); } + // Final html DOM return as helper structor return div; } @@ -288,7 +293,7 @@ function egwDragActionImplementation() } // Return an empty div if the helper dom node is not set - return $j(document.createElement("div")).addClass('et2_egw_action_ddHelper'); + return ai.defaultDDHelper(ai.selected);//$j(document.createElement("div")).addClass('et2_egw_action_ddHelper'); }, "start": function(e) { return ai.helper != null;