瀏覽代碼

[fb] Skip current folder on select all

Added logic to skip current folder from the select all action
Disabled copy/rename/move/trash if the current folder is selected
Enrico Berti 11 年之前
父節點
當前提交
0ebf65b

+ 6 - 6
apps/filebrowser/src/filebrowser/templates/listdir.mako

@@ -44,9 +44,9 @@ ${ fb_components.menubar() }
 
       <%def name="actions()">
         <div class="btn-toolbar" style="display: inline; vertical-align: middle">
-          <button class="btn fileToolbarBtn" title="${_('Rename')}" data-bind="visible: !inTrash(), click: renameFile, enable: selectedFiles().length == 1"><i class="fa fa-font"></i> ${_('Rename')}</button>
-          <button class="btn fileToolbarBtn" title="${_('Move')}" data-bind="click: move, enable: selectedFiles().length > 0"><i class="fa fa-random"></i> ${_('Move')}</button>
-          <button class="btn fileToolbarBtn" title="${_('Copy')}" data-bind="click: copy, enable: selectedFiles().length > 0"><i class="fa fa-files-o"></i> ${_('Copy')}</button>
+          <button class="btn fileToolbarBtn" title="${_('Rename')}" data-bind="visible: !inTrash(), click: renameFile, enable: selectedFiles().length == 1 && isCurrentDirSelected().length == 0"><i class="fa fa-font"></i> ${_('Rename')}</button>
+          <button class="btn fileToolbarBtn" title="${_('Move')}" data-bind="click: move, enable: selectedFiles().length > 0 && isCurrentDirSelected().length == 0"><i class="fa fa-random"></i> ${_('Move')}</button>
+          <button class="btn fileToolbarBtn" title="${_('Copy')}" data-bind="click: copy, enable: selectedFiles().length > 0 && isCurrentDirSelected().length == 0"><i class="fa fa-files-o"></i> ${_('Copy')}</button>
           %if is_fs_superuser:
           <div id="ch-dropdown" class="btn-group" style="vertical-align: middle">
             <button href="#" class="btn dropdown-toggle" title="${_('Chown / Chmod')}" data-toggle="dropdown" data-bind="visible: !inTrash(), enable: selectedFiles().length > 0">
@@ -62,11 +62,11 @@ ${ fb_components.menubar() }
             <button class="btn fileToolbarBtn" title="${_('Change permissions')}" data-bind="visible: !inTrash(), click: changePermissions, enable: selectedFiles().length > 0"><i class="fa fa-list-alt"></i> ${_('Change permissions')}</button>
           %endif
           <button class="btn fileToolbarBtn" title="${_('Download')}" data-bind="visible: !inTrash(), click: downloadFile, enable: selectedFiles().length == 1 && selectedFile().type == 'file'"><i class="fa fa-arrow-circle-o-down"></i> ${_('Download')}</button>
-          <button class="btn fileToolbarBtn" title="${_('Restore from trash')}" data-bind="visible: inRestorableTrash(), click: restoreTrashSelected, enable: selectedFiles().length > 0"><i class="fa fa-cloud-upload"></i> ${_('Restore')}</button>
+          <button class="btn fileToolbarBtn" title="${_('Restore from trash')}" data-bind="visible: inRestorableTrash(), click: restoreTrashSelected, enable: selectedFiles().length > 0 && isCurrentDirSelected().length == 0"><i class="fa fa-cloud-upload"></i> ${_('Restore')}</button>
           <!-- ko ifnot: inTrash -->
               <div id="delete-dropdown" class="btn-group" style="vertical-align: middle">
-                <button id="trash-btn" class="btn toolbarBtn" data-bind="enable: selectedFiles().length > 0, click: trashSelected"><i class="fa fa-times"></i> ${_('Move to trash')}</button>
-                <button id="trash-btn-caret" class="btn toolbarBtn dropdown-toggle" data-toggle="dropdown" data-bind="enable: selectedFiles().length > 0">
+                <button id="trash-btn" class="btn toolbarBtn" data-bind="enable: selectedFiles().length > 0 && isCurrentDirSelected().length == 0, click: trashSelected"><i class="fa fa-times"></i> ${_('Move to trash')}</button>
+                <button id="trash-btn-caret" class="btn toolbarBtn dropdown-toggle" data-toggle="dropdown" data-bind="enable: selectedFiles().length > 0 && isCurrentDirSelected().length == 0">
                   <span class="caret"></span>
                 </button>
                 <ul class="dropdown-menu">

+ 7 - 1
apps/filebrowser/src/filebrowser/templates/listdir_components.mako

@@ -609,6 +609,12 @@ from django.utils.translation import ugettext as _
         });
       }, self);
 
+      self.isCurrentDirSelected = ko.computed(function () {
+        return ko.utils.arrayFilter(self.files(), function (file) {
+          return file.name == "." && file.selected();
+        });
+      }, self);
+
       self.selectedFile = ko.computed(function () {
         return self.selectedFiles()[0];
       }, self);
@@ -713,7 +719,7 @@ from django.utils.translation import ugettext as _
         self.allSelected(! self.allSelected());
 
         ko.utils.arrayForEach(self.files(), function (file) {
-          if (file.name != "..") {
+          if (file.name != "." && file.name != "..") {
             file.selected(self.allSelected());
           }
         });