From d971ea8b02ccca4dd879a5db966670e0f3b4f102 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva <pshns@ukr.net>
Date: Sat, 30 Jul 2011 20:50:49 +0300
Subject: [PATCH] issue #39 sort by date desc, saved in cookie

---
 inc/media.php        | 6 ++++++
 inc/search.php       | 2 +-
 lib/scripts/media.js | 7 +++++++
 3 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/inc/media.php b/inc/media.php
index 5f9fb63de..bb3fc22dc 100644
--- a/inc/media.php
+++ b/inc/media.php
@@ -659,6 +659,12 @@ function media_tab_files($ns,$auth=null,$jump='') {
     if(is_null($auth)) $auth = auth_quickaclcheck("$ns:*");
 
     $sort = $_REQUEST['sort'];
+    if (!$sort && @strpos($_COOKIE['DOKU_PREFS'], 'sort')) {
+        $parts = explode('#', $_COOKIE['DOKU_PREFS']);
+            for ($i = 0; $i < count($parts); $i+=2){
+                if ($parts[$i] == 'sort') $sort = $parts[$i+1];
+            }
+    }
     media_tab_files_options($ns, $sort);
 
     echo '<div class="scroll-container" >';
diff --git a/inc/search.php b/inc/search.php
index c11111efc..a6089c479 100644
--- a/inc/search.php
+++ b/inc/search.php
@@ -40,7 +40,7 @@ function search(&$data,$base,$func,$opts,$dir='',$lvl=1,$sort=false){
     }
     closedir($dh);
     if ($sort == 'date') {
-        @array_multisort(array_map('filemtime', $filepaths), SORT_NUMERIC, SORT_ASC, $files);
+        @array_multisort(array_map('filemtime', $filepaths), SORT_NUMERIC, SORT_DESC, $files);
     } else {
         sort($files);
     }
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index ebd9da2f8..ff87299cf 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -292,6 +292,10 @@ var dw_mediamanager = {
             params = dw_mediamanager.form_params($link)+'&call=medialist';
         } else if ($link.parents('form')) {
             params = dw_mediamanager.form_params($link.parents('form'))+'&call=medialist';
+
+            if ($link.parents('form')[0].id == 'mediamanager__form_sort') {
+                DokuCookie.setValue('sort', $link[0].value);
+            }
         }
 
         // fetch the subtree
@@ -305,6 +309,7 @@ var dw_mediamanager = {
      * @author Kate Arzamastseva <pshns@ukr.net>
      */
     form_params: function ($form) {
+        if (!$form.length) return;
         var elements = $form.serialize();
         var action = '';
         var i = $form[0].action.indexOf('?');
@@ -471,6 +476,8 @@ var dw_mediamanager = {
         if (jQuery('#mediamanager__difftype').length) return;
 
         $form = jQuery('#mediamanager__form_diffview');
+        if (!$form.length) return;
+
         $label = jQuery(document.createElement('label'));
         $label.append('<span>'+LANG.media_diff+'</span>');
         $select = jQuery(document.createElement('select'))
-- 
GitLab