浏览代码

HUE-779 [fb] Pagination on following page is not correct

Changed css styles for sortable headers
Fixed page navigation that was forgetting to pass params
Fixed bug in file search
Enrico Berti 13 年之前
父节点
当前提交
76ef2af

+ 65 - 44
apps/filebrowser/src/filebrowser/templates/listdir_components.mako

@@ -24,7 +24,20 @@ from django.utils.translation import ugettext as _
 
 
 <%def name="pageref(num)">
-    href="?pagenum=${num}&pagesize=${pagesize}"
+    <%
+    sortby_param = ""
+    if sortby:
+        sortby_param = "&sortby="+sortby
+
+    descending_param = ""
+    if descending:
+        descending_param = "&descending=true"
+
+    filter_param = ""
+    if filter_str is not None:
+        filter_param = "&filter="+filter_str
+    %>
+    href="?pagenum=${num}&pagesize=${pagesize}${sortby_param}${descending_param}${filter_param}"
 </%def>
 <%def name="prevpage(page)">
   ${pageref(page.previous_page_number())}
@@ -156,45 +169,56 @@ from django.utils.translation import ugettext as _
         </div>
     %endif
 
-<!-- delete modal -->
-<div id="deleteModal" class="modal hide fade">
-    <div class="modal-header">
-        <a href="#" class="close" data-dismiss="modal">&times;</a>
-        <h3>${_('Please Confirm')}</h3>
-    </div>
-    <div class="modal-body">
-        <p>${_('Are you sure you want to delete this file?')}</p>
+%if len(files)>0 :
+    <!-- delete modal -->
+    <div id="deleteModal" class="modal hide fade">
+        <div class="modal-header">
+            <a href="#" class="close" data-dismiss="modal">&times;</a>
+            <h3>${_('Please Confirm')}</h3>
+        </div>
+        <div class="modal-body">
+            <p>${_('Are you sure you want to delete this file?')}</p>
+        </div>
+        <div class="modal-footer">
+            <form id="deleteForm" action="" method="POST" enctype="multipart/form-data" class="form-stacked">
+                <input type="submit" value="${_('Yes')}" class="btn primary" />
+                <a id="cancelDeleteBtn" class="btn">${_('No')}</a>
+                <input id="fileToDeleteInput" type="hidden" name="path" />
+            </form>
+        </div>
     </div>
-    <div class="modal-footer">
-        <form id="deleteForm" action="" method="POST" enctype="multipart/form-data" class="form-stacked">
-            <input type="submit" value="${_('Yes')}" class="btn primary" />
-            <a id="cancelDeleteBtn" class="btn">${_('No')}</a>
-            <input id="fileToDeleteInput" type="hidden" name="path" />
+
+    <!-- rename modal -->
+    <div id="renameModal" class="modal hide fade">
+        <form id="renameForm" action="/filebrowser/rename?next=${current_request_path}" method="POST" enctype="multipart/form-data" class="form-inline form-padding-fix">
+        <div class="modal-header">
+            <a href="#" class="close" data-dismiss="modal">&times;</a>
+            <h3>${_('Renaming:')} <span id="renameFileName">file name</span></h3>
+        </div>
+        <div class="modal-body">
+            <label>${_('New name')} <input id="newNameInput" name="dest_path" value="" type="text" class="input-xlarge"/></label>
+        </div>
+        <div class="modal-footer">
+            <div id="renameNameRequiredAlert" class="hide" style="position: absolute; left: 10;">
+                <span class="label label-important">${_('Sorry, name is required.')}</span>
+            </div>
+
+            <input id="renameSrcPath" type="hidden" name="src_path" type="text">
+            <input type="submit" value="${_('Submit')}" class="btn primary" />
+            <a id="cancelRenameBtn" class="btn">${_('Cancel')}</a>
+        </div>
         </form>
     </div>
-</div>
 
-<!-- rename modal -->
-<div id="renameModal" class="modal hide fade">
-    <form id="renameForm" action="/filebrowser/rename?next=${current_request_path}" method="POST" enctype="multipart/form-data" class="form-inline form-padding-fix">
-    <div class="modal-header">
-        <a href="#" class="close" data-dismiss="modal">&times;</a>
-        <h3>${_('Renaming:')} <span id="renameFileName">file name</span></h3>
+    <div id="changeOwnerModal" class="modal hide fade">
     </div>
-    <div class="modal-body">
-        <label>${_('New name')} <input id="newNameInput" name="dest_path" value="" type="text" class="input-xlarge"/></label>
+
+    <div id="changePermissionModal" class="modal hide fade">
     </div>
-    <div class="modal-footer">
-        <div id="renameNameRequiredAlert" class="hide" style="position: absolute; left: 10;">
-            <span class="label label-important">${_('Sorry, name is required.')}</span>
-        </div>
 
-        <input id="renameSrcPath" type="hidden" name="src_path" type="text">
-        <input type="submit" value="${_('Submit')}" class="btn primary" />
-        <a id="cancelRenameBtn" class="btn">${_('Cancel')}</a>
+    <div id="moveModal" class="modal hide fade">
     </div>
-    </form>
-</div>
+%endif
 
 <!-- upload modal -->
 <div id="uploadModal" class="modal hide fade">
@@ -237,17 +261,9 @@ from django.utils.translation import ugettext as _
     </form>
 </div>
 
-
-<div id="changeOwnerModal" class="modal hide fade">
-</div>
-
-<div id="changePermissionModal" class="modal hide fade">
-</div>
-
-<div id="moveModal" class="modal hide fade">
-</div>
-
 <script type="text/javascript" charset="utf-8">
+
+    %if len(files)>0 :
     // ajax modal windows
     function openChownWindow(path, user, group, next){
         $.ajax({
@@ -305,6 +321,9 @@ from django.utils.translation import ugettext as _
             }
         });
     }
+    %endif
+
+
     //uploader
     var num_of_pending_uploads = 0;
     function createUploader(){
@@ -366,6 +385,7 @@ from django.utils.translation import ugettext as _
     $(document).ready(function(){
         var qs = getQueryString();
 
+    %if len(files)>0 :
         if (qs["sortby"] == null){
             qs["sortby"] = "name";
         }
@@ -455,6 +475,8 @@ from django.utils.translation import ugettext as _
             $("#moveForm").find("input[name='dest_path']").removeClass("fieldError");
         });
 
+        $("a[data-row-selector='true']").jHueRowSelector();
+    %endif
 
         //upload handlers
         $(".upload-link").click(function(){
@@ -480,6 +502,7 @@ from django.utils.translation import ugettext as _
                 $(".filter").click();
             }
         });
+
         $(".filter").click(function(){
             qs["filter"] = $(".search-query").val();
             qs["pagenum"] = "1";
@@ -519,8 +542,6 @@ from django.utils.translation import ugettext as _
             });
             $("#fileChooserRename").slideDown();
         });
-
-        $("a[data-row-selector='true']").jHueRowSelector();
     });
 </script>
 

+ 3 - 1
apps/filebrowser/src/filebrowser/views.py

@@ -392,12 +392,12 @@ def listdir_paged(request, path):
 
     # Sort next
     sortby = request.GET.get('sortby', None)
+    descending_param = request.GET.get('descending', None)
     if sortby is not None:
         if sortby not in ('name', 'atime', 'mtime', 'user', 'group', 'size'):
             logger.info("Invalid sort attribute '%s' for listdir." %
                         (sortby,))
         else:
-            descending_param = request.GET.get('descending', None)
             all_stats = sorted(all_stats,
                                key=operator.attrgetter(sortby),
                                reverse=coerce_bool(descending_param))
@@ -416,6 +416,8 @@ def listdir_paged(request, path):
         'pagesize': pagesize,
         'home_directory': request.fs.isdir(home_dir_path) and home_dir_path or None,
         'filter_str': filter_str,
+        'sortby': sortby,
+        'descending': descending_param,
         # The following should probably be deprecated
         'cwd_set': True,
         'file_filter': 'any',

+ 2 - 4
desktop/core/static/css/hue2.css

@@ -504,26 +504,24 @@ table.display td.center {
 .sorting_asc {
     cursor: pointer;
     background: url('../art/datatables/sort_asc.png') no-repeat center left;
-    border-bottom: 3px solid #EEEEEE!important;
     padding-left: 20px!important;
 }
 
 .sorting_desc {
     cursor: pointer;
     background: url('../art/datatables/sort_desc.png') no-repeat center left;
-    border-bottom: 3px solid #EEEEEE!important;
     padding-left: 20px!important;
 }
 
 .sorting {
     cursor: pointer;
     background: url('../art/datatables/sort_both.png') no-repeat center left;
-    border-bottom: 3px solid #FFFFFF!important;
+    border-top: 3px solid #FFFFFF!important;
     padding-left: 20px!important;
 }
 
 .sorting:hover {
-    border-bottom: 3px solid #EEEEEE!important;
+    border-top: 3px solid #EEEEEE!important;
 }