diff --git a/inc/media.php b/inc/media.php index e1b80e4de624715431ef239eb2585ad6171d4b2f..ec6548179fa038c494af8b5f99aa73a81d628b99 100644 --- a/inc/media.php +++ b/inc/media.php @@ -458,12 +458,18 @@ function media_filelist($ns,$auth=null,$jump=''){ foreach($data as $item){ media_printfile($item,$auth,$jump); } + + media_searchform($ns); } /** * List all files found by the search request + * + * @author Tobias Sarnowski <sarnowski@cosmocode.de> + * @author Andreas Gohr <gohr@cosmocode.de> + * @triggers MEDIA_SEARCH */ -function media_searchlist($ns,$auth=null,$jump=''){ +function media_searchlist($query,$ns,$auth=null){ global $conf; global $lang; $ns = cleanID($ns); @@ -479,9 +485,9 @@ function media_searchlist($ns,$auth=null,$jump=''){ return; } - media_searchform($ns, $auth); + media_searchform($ns,$query); - if (isset($_REQUEST['key']) && strlen($_REQUEST['key']) > 2) { + if ($query) { if (isset($_REQUEST['key_relative'])) { $dir = utf8_encodeFN(str_replace(':','/',$ns)); @@ -490,11 +496,10 @@ function media_searchlist($ns,$auth=null,$jump=''){ } $data = array(); - $evt = new Doku_Event('ACTION_MEDIA_SEARCH', $dir); + $evt = new Doku_Event('MEDIA_SEARCH', $dir); if ($evt->advise_before()) { - $pattern = '#'.str_replace('#', '\#', $_REQUEST['key']).'#'; + $pattern = '#'.preg_quote($query,'#').'#'; search($data,$conf['mediadir'],'search_media', array('showmsg'=>false,'pattern'=>$pattern),$dir); - } $evt->advise_after(); unset($evt); @@ -505,7 +510,7 @@ function media_searchlist($ns,$auth=null,$jump=''){ } foreach($data as $item){ - media_printfile($item,$auth,$jump,$display_namespace=true); + media_printfile($item,$auth,'',$display_namespace=true); } } } @@ -585,9 +590,13 @@ function media_printfile($item,$auth,$jump,$display_namespace=false){ $info .= ' '; $info .= filesize_h($item['size']); - // ouput + // output echo '<div class="'.$zebra.'"'.$jump.'>'.NL; - echo '<a name="h_'.$item['id'].'" class="'.$class.'">'.$file.'</a> '; + if (!$display_namespace) { + echo '<a name="h_:'.$item['id'].'" class="'.$class.'">'.hsc($file).'</a> '; + } else { + echo '<a name="h_:'.$item['id'].'" class="'.$class.'">'.hsc($item['id']).'</a><br/>'; + } echo '<span class="info">('.$info.')</span>'.NL; media_fileactions($item,$auth); echo '<div class="example" id="ex_'.str_replace(':','_',$item['id']).'">'; @@ -717,23 +726,17 @@ function media_uploadform($ns, $auth){ * * @author Tobias Sarnowski <sarnowski@cosmocode.de> */ -function media_searchform($ns, $auth){ +function media_searchform($ns,$query=''){ global $lang; - if (!isset($_REQUEST['key'])) { - $default = ''; - } else { - $default = htmlspecialchars($_REQUEST['key']); - } - // The default HTML search form $form = new Doku_Form('dw__mediasearch', DOKU_BASE.'lib/exe/mediamanager.php', false); $form->addElement('<div class="upload">' . $lang['mediasearch'] . '</div>'); $form->addElement(formSecurityToken()); - $form->addHidden('ns', hsc($ns)); - $form->addHidden('call', 'mediasearchlist'); + $form->addHidden('ns', $ns); + $form->addHidden('do', 'searchlist'); $form->addElement(form_makeOpenTag('p')); - $form->addElement(form_makeTextField('key', $default, $lang['txt_searchmediakey'].':', 'searchmedia__key')); + $form->addElement(form_makeTextField('q', $query, $lang['txt_searchmediakey'].':', 'searchmedia__key')); $form->addElement(form_makeButton('submit', '', $lang['btn_search'])); $form->addElement(form_makeCloseTag('p')); if ($ns) { diff --git a/inc/template.php b/inc/template.php index 9564dcef84ac672f9d10d0df7d226f7227fa35a5..afd23bf5fbd3832fc46edee8585a8cf9f63a9601 100644 --- a/inc/template.php +++ b/inc/template.php @@ -1190,11 +1190,8 @@ function tpl_mediaContent($fromajax=false){ global $NS; global $JUMPTO; - ptln('<div id="media__content">'); - if($_REQUEST['edit']){ - media_metaform($IMG,$AUTH); - }elseif(is_array($INUSE)){ - media_filesinuse($INUSE,$IMG); + if(is_array($_REQUEST['do'])){ + $do = array_shift(array_keys($_REQUEST['do'])); }else{ $do = $_REQUEST['do']; } @@ -1222,6 +1219,8 @@ function tpl_mediaContent($fromajax=false){ media_filesinuse($INUSE,$IMG); }elseif($do == 'filelist'){ media_filelist($NS,$AUTH,$JUMPTO); + }elseif($do == 'searchlist'){ + media_searchlist($_REQUEST['q'],$NS,$AUTH); }else{ msg('Unknown action '.hsc($do),-1); } diff --git a/lib/scripts/media.js b/lib/scripts/media.js index 7726d06641f3ded88a60c0bad890a9b0421ec187..d88ad6ea1899629801942606389bdf94a2c4e24e 100644 --- a/lib/scripts/media.js +++ b/lib/scripts/media.js @@ -94,22 +94,6 @@ media = { attachoptions: function(obj){ if(!obj) return; - // search link - var searcha = document.createElement('a'); - searcha.id = 'media__search'; - searcha.href = '#'; - addEvent(searcha,'click',function(event){ return media.showsearchfield(event,this); }); - - var searchlbl = document.createElement('label'); - searchlbl.htmlFor = 'media__searchmedia'; - searchlbl.innerHTML = LANG['searchmedia']; - - var searchbr = document.createElement('br'); - - searcha.appendChild(searchlbl); - obj.appendChild(searcha); - obj.appendChild(searchbr); - // keep open if(opener){ var kobox = document.createElement('input');