From d1baaf498377773e1803aaea729ee307adbf9cec Mon Sep 17 00:00:00 2001
From: Ian <aristophian@googlemail.com>
Date: Mon, 26 Oct 2015 11:36:57 +0100
Subject: [PATCH] better listen on toggle_dir and remember

---
 include/admin/images.inc.php        | 10 +++++++++-
 include/functions_images.inc.php    | 14 ++++----------
 templates/2k11/admin/media_pane.tpl |  9 ++++++---
 3 files changed, 19 insertions(+), 14 deletions(-)

diff --git a/include/admin/images.inc.php b/include/admin/images.inc.php
index 327745e4..36fe34c5 100644
--- a/include/admin/images.inc.php
+++ b/include/admin/images.inc.php
@@ -14,10 +14,19 @@ if (!is_object($serendipity['smarty'])) {
     serendipity_smarty_init();
 }
 
+// No echo output here, before the switch, since that matters renaming alerts!
+
 // unset adminAction type to default, if an image was bulkmoved and the origin page reloaded
 if (!is_array($serendipity['POST']) && $serendipity['GET']['adminAction'] == 'multidelete') {
     unset($serendipity['GET']['adminAction']);
 }
+// Listens on toggle_dir STRICT to list items per directory, or include all sub directory items
+if (empty($serendipity['GET']['toggle_dir']) && empty($serendipity['COOKIE']['serendipity_toggle_dir'])) {
+    $serendipity['GET']['toggle_dir'] = 'no'; // default
+}
+if (!empty($serendipity['COOKIE']['serendipity_toggle_dir'])) {
+    serendipity_restoreVar($serendipity['COOKIE']['serendipity_toggle_dir'], $serendipity['GET']['toggle_dir']);
+}
 
 switch ($serendipity['GET']['adminAction']) {
 
@@ -72,7 +81,6 @@ switch ($serendipity['GET']['adminAction']) {
         unset($messages);
         break;
 
-
     case 'doMultiDelete':
         if (!serendipity_checkFormToken() || !serendipity_checkPermission('adminImagesDelete')) {
             break;
diff --git a/include/functions_images.inc.php b/include/functions_images.inc.php
index 4fd18fbf..c4852699 100644
--- a/include/functions_images.inc.php
+++ b/include/functions_images.inc.php
@@ -1452,16 +1452,8 @@ function serendipity_displayImageList($page = 0, $lineBreak = NULL, $manage = fa
     global $serendipity;
     static $debug = false;
 
-    $extraParems = serendipity_generateImageSelectorParems();
-
-    $rootDirStrict = false; // default
-    if (empty($serendipity['GET']['toggle_dir'])) {
-        $serendipity['GET']['toggle_dir'] = $serendipity['COOKIE']['serendipity_toggle_dir'] = 'yes';
-    }
-    serendipity_restoreVar($serendipity['GET']['toggle_dir'], $serendipity['COOKIE']['serendipity_toggle_dir']);
-    if ($serendipity['GET']['toggle_dir'] == 'yes') {
-        $rootDirStrict = true;
-    }
+    $extraParems   = serendipity_generateImageSelectorParems();
+    $rootDirStrict = ($serendipity['GET']['toggle_dir'] == 'yes') ? true : false; // default
 
     $serendipity['GET']['only_path']     = serendipity_uploadSecure($limit_path . $serendipity['GET']['only_path'], true);
     $serendipity['GET']['only_filename'] = serendipity_specialchars(str_replace(array('*', '?'), array('%', '_'), $serendipity['GET']['only_filename']));
@@ -2945,6 +2937,7 @@ function serendipity_showMedia(&$file, &$paths, $url = '', $manage = false, $lin
         'keywords_selected' => $serendipity['GET']['keywords'],
         'filter'            => $serendipity['GET']['filter'],
         'sort_order'        => serendipity_getImageFields(),
+        'toggle_dir'        => empty($serendipity['GET']['toggle_dir']) ? 'no' : $serendipity['GET']['toggle_dir'],
         'authors'           => serendipity_fetchUsers(),
         'sort_row_interval' => array(8, 16, 50, 100),
         'nr_files'          => count($file),
@@ -2965,6 +2958,7 @@ function serendipity_showMedia(&$file, &$paths, $url = '', $manage = false, $lin
 
     $media = array_merge($media, $smarty_vars);
     $media['files'] =& $file;
+
     if (count($paths) > 0) {
         $media['paths'] =& $paths;
     } else {
diff --git a/templates/2k11/admin/media_pane.tpl b/templates/2k11/admin/media_pane.tpl
index eae2d5f0..d5930d61 100644
--- a/templates/2k11/admin/media_pane.tpl
+++ b/templates/2k11/admin/media_pane.tpl
@@ -12,7 +12,7 @@
                 <div class="form_select">
                     <label for="serendipity_only_path" class="visuallyhidden">{$CONST.FILTER_DIRECTORY}</label>
                     <select id="serendipity_only_path" name="serendipity[only_path]">
-                        <option value="">{if NOT $media.limit_path}{$CONST.ALL_DIRECTORIES}{else}{$media.blimit_path}{/if}</option>
+                        <option value="">{if NOT $media.limit_path}{if $media.toggle_dir == 'yes'}{$CONST.BASE_DIRECTORY}{else}{$CONST.ALL_DIRECTORIES}{/if}{else}{$media.blimit_path}{/if}</option>
                     {foreach $media.paths AS $folderHead}
 
                         <option{if ($media.only_path == $media.limit_path|cat:$folderHead.relpath)} selected{/if} value="{$folderHead.relpath}">{'&nbsp;'|str_repeat:($folderHead.depth*2)}{$folderHead.name}</option>
@@ -35,12 +35,12 @@
             <li id="media_dir_radio" class="media_select_strict">
                 <div class="clearfix">
                     <div class="form_radio">
-                        <input id="radio_link_no" name="serendipity[toggle_dir]" type="radio" value="no" {'toggle_dir'|ifRemember:'no'}>
+                        <input id="radio_link_no" name="serendipity[toggle_dir]" type="radio" value="no" {if $media.toggle_dir == 'no'}checked="checked"{/if}>
                         <label for="radio_link_no">Strict {$CONST.NO}</label>
                     </div>
 
                     <div class="form_radio">
-                        <input id="radio_link_yes" name="serendipity[toggle_dir]" type="radio" value="yes" {'toggle_dir'|ifRemember:'yes':true}>
+                        <input id="radio_link_yes" name="serendipity[toggle_dir]" type="radio" value="yes" {if $media.toggle_dir == 'yes'}checked="checked"{/if}>
                         <label for="radio_link_yes">Strict {$CONST.YES}</label>
                     </div>
                 </div>
@@ -169,6 +169,8 @@
         </fieldset>
         <script>
             $(document).ready(function() {
+                // alert(serendipity.GetCookie('serendipity[only_path]'));
+                // write: is plain "foo", read: is "serendipity[foo]"!
             {foreach $media.sortParams AS $sortParam}
 
                 serendipity.SetCookie("sortorder_{$sortParam}","{$get_sortorder_{$sortParam}}");
@@ -178,6 +180,7 @@
                 serendipity.SetCookie("{$filterParam}", "{$get_{$filterParam}}");
             {/foreach}
 
+                serendipity.SetCookie("serendipity_toggle_dir", "{$media.toggle_dir}");
             });
         </script>
     </form>