diff options
Diffstat (limited to 'inc')
-rw-r--r-- | inc/lang/en/lang.php | 2 | ||||
-rw-r--r-- | inc/media.php | 23 | ||||
-rw-r--r-- | inc/search.php | 10 |
3 files changed, 27 insertions, 8 deletions
diff --git a/inc/lang/en/lang.php b/inc/lang/en/lang.php index b9d4bf2a3..2435f9771 100644 --- a/inc/lang/en/lang.php +++ b/inc/lang/en/lang.php @@ -336,6 +336,8 @@ $lang['media_historytab'] = 'History'; $lang['media_thumbsview'] = 'Thumbnails'; $lang['media_listview'] = 'List'; $lang['media_sort'] = 'Sort'; +$lang['media_sort_name'] = 'by name'; +$lang['media_sort_date'] = 'by date'; $lang['media_upload'] = 'Upload to the <strong>%s</strong> namespace.'; $lang['media_search'] = 'Search in the <strong>%s</strong> namespace.'; $lang['media_edit'] = 'Edit'; diff --git a/inc/media.php b/inc/media.php index 43a3a07ca..a249e9b54 100644 --- a/inc/media.php +++ b/inc/media.php @@ -521,7 +521,7 @@ function media_notify($id,$file,$mime,$old_rev=false){ /** * List all files in a given Media namespace */ -function media_filelist($ns,$auth=null,$jump='',$fullscreenview=false){ +function media_filelist($ns,$auth=null,$jump='',$fullscreenview=false,$sort=false){ global $conf; global $lang; $ns = cleanID($ns); @@ -540,7 +540,7 @@ function media_filelist($ns,$auth=null,$jump='',$fullscreenview=false){ $dir = utf8_encodeFN(str_replace(':','/',$ns)); $data = array(); search($data,$conf['mediadir'],'search_media', - array('showmsg'=>true,'depth'=>1),$dir); + array('showmsg'=>true,'depth'=>1),$dir,1,$sort); if(!count($data)){ echo '<div class="nothing">'.$lang['nothingfound'].'</div>'.NL; @@ -614,7 +614,7 @@ function media_tabs_details($image, $selected=false){ * * @author Kate Arzamastseva <pshns@ukr.net> */ -function media_tab_files_options($ns){ +function media_tab_files_options($ns, $sort){ global $lang; echo '<div class="background-container">'; @@ -633,7 +633,16 @@ function media_tab_files_options($ns){ echo '</div>'; echo '<div id="mediamanager__sort">'; - echo $lang['media_sort']; + $form = new Doku_Form(array('action'=>media_managerURL(array(), '&'), 'id' => 'mediamanager__form_sort')); + $form->addElement(form_makeListboxField( + 'sort', + array( + 'name' => $lang['media_sort_name'], + 'date' => $lang['media_sort_date']), + $sort, + $lang['media_sort'])); + $form->addElement(form_makeButton('submit', '', $lang['btn_apply'])); + $form->printForm(); echo '</div>'; echo '<div class="clearer"></div>'; @@ -649,10 +658,12 @@ function media_tab_files($ns,$auth=null,$jump='') { global $lang; if(is_null($auth)) $auth = auth_quickaclcheck("$ns:*"); - media_tab_files_options($ns); + $sort = $_REQUEST['sort']; + media_tab_files_options($ns, $sort); echo '<div class="scroll-container" >'; $view = $_REQUEST['view']; + if($auth < AUTH_READ){ echo '<div class="nothing">'.$lang['media_perm_read'].'</div>'.NL; }else{ @@ -661,7 +672,7 @@ function media_tab_files($ns,$auth=null,$jump='') { } else { echo '<ul class="mediamanager-thumbs" id="mediamanager__file_list">'; } - media_filelist($ns,$auth,$jump,true); + media_filelist($ns,$auth,$jump,true,$sort); echo '</ul>'; } echo '</div>'; diff --git a/inc/search.php b/inc/search.php index 7b53edabe..c11111efc 100644 --- a/inc/search.php +++ b/inc/search.php @@ -21,9 +21,10 @@ if(!defined('DOKU_INC')) die('meh.'); * @param int $lvl Recursion Level * @author Andreas Gohr <andi@splitbrain.org> */ -function search(&$data,$base,$func,$opts,$dir='',$lvl=1){ +function search(&$data,$base,$func,$opts,$dir='',$lvl=1,$sort=false){ $dirs = array(); $files = array(); + $filepaths = array(); //read in directories and files $dh = @opendir($base.'/'.$dir); @@ -35,9 +36,14 @@ function search(&$data,$base,$func,$opts,$dir='',$lvl=1){ continue; } $files[] = $dir.'/'.$file; + $filepaths[] = $base.'/'.$dir.'/'.$file; } closedir($dh); - sort($files); + if ($sort == 'date') { + @array_multisort(array_map('filemtime', $filepaths), SORT_NUMERIC, SORT_ASC, $files); + } else { + sort($files); + } sort($dirs); //give directories to userfunction then recurse |