diff --git a/include/functions_images.inc.php b/include/functions_images.inc.php index 5982c95d..a784f1da 100644 --- a/include/functions_images.inc.php +++ b/include/functions_images.inc.php @@ -46,7 +46,7 @@ function serendipity_isActiveFile($file) { * @param boolean Apply strict directory checks, or include subdirectories? * @return array Resultset of images */ -function serendipity_fetchImagesFromDatabase($start=0, $limit=0, &$total=null, $order = false, $ordermode = false, $directory = '', $filename = '', $keywords = '', $filter = array(), $strict_directory = false) { +function serendipity_fetchImagesFromDatabase($start=0, $limit=0, &$total=null, $order = false, $ordermode = false, $directory = '', $filename = '', $keywords = '', $filter = array(), $hideSubdirFiles = false) { global $serendipity; $cond = array( @@ -75,12 +75,19 @@ function serendipity_fetchImagesFromDatabase($start=0, $limit=0, &$total=null, $ $limitsql = serendipity_db_limit_sql(serendipity_db_limit($start, $limit)); } - if ($strict_directory) { - $cond['parts']['directory'] = " AND i.path = '" . serendipity_db_escape_string($directory) . "'\n"; - } elseif (!empty($directory)) { - $cond['parts']['directory'] = " AND i.path LIKE '" . serendipity_db_escape_string($directory) . "%'\n"; + if ($hideSubdirFiles == false) { + if (!empty($directory)) { + $cond['parts']['directory'] = " AND i.path LIKE '" . serendipity_db_escape_string($directory) . "%'\n"; + } + // if in root, having no directory set, the query fetches all files by default, meaning we are done + } else { + if (!empty($directory)) { + $cond['parts']['directory'] = " AND i.path LIKE '" . serendipity_db_escape_string($directory) . "%'\n"; + } else { + $cond['parts']['directory'] = " AND i.path = ''\n"; + } } - + if (!empty($filename)) { $cond['parts']['filename'] = " AND (i.name like '%" . serendipity_db_escape_string($filename) . "%' OR i.realname like '%" . serendipity_db_escape_string($filename) . "%')\n"; @@ -1452,9 +1459,8 @@ function serendipity_displayImageList($page = 0, $lineBreak = NULL, $manage = fa global $serendipity; static $debug = false; - $extraParems = serendipity_generateImageSelectorParems(); - $rootDirStrict = ($serendipity['GET']['toggle_dir'] == 'yes') ? true : false; // default - + $extraParems = serendipity_generateImageSelectorParems(); + $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'])); @@ -1601,6 +1607,7 @@ function serendipity_displayImageList($page = 0, $lineBreak = NULL, $manage = fa if (!isset($serendipity['GET']['filter'])) { serendipity_restoreVar($serendipity['COOKIE']['filter'], $serendipity['GET']['filter']); } + $serendipity['imageList'] = serendipity_fetchImagesFromDatabase( $start, $perPage, @@ -1611,7 +1618,7 @@ function serendipity_displayImageList($page = 0, $lineBreak = NULL, $manage = fa (isset($serendipity['GET']['only_filename']) ? $serendipity['GET']['only_filename'] : ''), (isset($serendipity['GET']['keywords']) ? $serendipity['GET']['keywords'] : ''), (isset($serendipity['GET']['filter']) ? $serendipity['GET']['filter'] : ''), - $rootDirStrict + isset($serendipity['GET']['hideSubdirFiles']) ); $pages = ceil($totalImages / $perPage); @@ -2945,7 +2952,7 @@ function serendipity_showMedia(&$file, &$paths, $url = '', $manage = false, $lin 'filter' => $serendipity['GET']['filter'], 'sort_order' => $order_fields, 'simpleFilters' => $serendipity['simpleFilters'], - 'toggle_dir' => empty($serendipity['GET']['toggle_dir']) ? 'no' : $serendipity['GET']['toggle_dir'], + 'hideSubdirFiles' => $serendipity['GET']['hideSubdirFiles'], 'authors' => serendipity_fetchUsers(), 'sort_row_interval' => array(8, 16, 50, 100), 'nr_files' => count($file), diff --git a/lang/addlang.txt b/lang/addlang.txt index f5c87105..e121f90e 100644 --- a/lang/addlang.txt +++ b/lang/addlang.txt @@ -8,3 +8,4 @@ @define('DIRECTORY_INFO', 'Directory info'); @define('DIRECTORY_INFO_DESC', 'Directories reflect their physical folder directory name. If you want to change or move directories which contain items, you have two choices. Either create the directory or subdirectory you want, then move the items to the new directory via the media library and afterwards, delete the empty old directory there. Or completely change the whole old directory via the edit directory button below and rename it to whatever you like (existing subdir/ + newname). This will move all directories and items and change referring blog entries.'); @define('MEDIA_RESIZE_EXISTS', 'File dimensions already exist!'); +@define('HIDE_SUBDIR_FILES', 'Hide Files of Subdirectories'); \ No newline at end of file diff --git a/templates/2k11/admin/media_pane.tpl b/templates/2k11/admin/media_pane.tpl index 44a1d221..6bc76bc1 100644 --- a/templates/2k11/admin/media_pane.tpl +++ b/templates/2k11/admin/media_pane.tpl @@ -39,19 +39,6 @@ -
  • -
    -
    - - -
    - -
    - - -
    -
    -
  • @@ -177,6 +164,15 @@ + {if !$media.simpleFilters} +
    +
    + + +
    +
    + {/if} +
    @@ -198,7 +194,7 @@ serendipity.SetCookie("only_filename", "{$media.only_filename}"); - serendipity.SetCookie("serendipity_toggle_dir", "{$media.toggle_dir}"); + serendipity.SetCookie("hideSubdirFiles", "{$media.hideSubdirFiles}"); {foreach $media.filter AS $k => $v} {if !is_array($media.filter[{$k}])}