Dotclear

Changeset 3099:82ce3d85c6be


Ignore:
Timestamp:
09/26/15 09:59:43 (10 years ago)
Author:
franck <carnet.franck.paul@…>
Branch:
default
Message:

Add a search engine on media management page, closes #2138

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • admin/media.php

    r3094 r3099  
    5656} 
    5757 
     58# Get query in any 
     59$q = isset($_REQUEST['q']) ? $_REQUEST['q'] : null; 
     60 
    5861# Sort combo 
    5962$sort_combo = array( 
     
    8285     $page_url_params['plugin_id'] = $plugin_id; 
    8386} 
     87if ($q) { 
     88     $page_url_params['q'] = $q; 
     89} 
    8490 
    8591$core->callBehavior('adminMediaURLParams',$page_url_params); 
     
    100106          $core->media->setFileSort($file_sort); 
    101107     } 
    102      $core->media->chdir($d); 
    103      $core->media->getDir(); 
     108     $query = false; 
     109     if ($q) { 
     110          $query = $core->media->searchMedia($q); 
     111     } 
     112     if (!$query) { 
     113          $core->media->chdir($d); 
     114          $core->media->getDir(); 
     115     } else { 
     116          $d = null; 
     117          $core->media->chdir($d); 
     118     } 
    104119     $core_media_writable = $core->media->writable(); 
    105120     $dir =& $core->media->dir; 
     
    170185                    'name' => $upfile['name'], 
    171186                    'size' => $upfile['size'], 
    172                     'html' => mediaItemLine($core->media->getFile($new_file_id), 1) 
     187                    'html' => mediaItemLine($core->media->getFile($new_file_id),1,$query) 
    173188               ); 
    174189          } catch (Exception $e) { 
     
    187202               $f_private = (isset($_POST['upfilepriv']) ? $_POST['upfilepriv'] : false); 
    188203 
    189                $core->media->uploadFile($upfile['tmp_name'], $upfile['name'], $f_title, $f_private); 
     204               $core->media->uploadFile($upfile['tmp_name'],$upfile['name'],$f_title,$f_private); 
    190205 
    191206               dcPage::addSuccessNotice(__('Files have been successfully uploaded.')); 
     
    273288     ' &nbsp; <input type="submit" name="rmyes" value="'.__('Yes').'" />'. 
    274289     form::hidden('d',$d). 
     290     form::hidden('q',$q). 
    275291     $core->adminurl->getHiddenFormFields('admin.media',$page_url_params). 
    276292     $core->formNonce(). 
     
    296312     ); 
    297313} else { 
    298      $temp_params = $page_url_params; 
    299      $temp_params['d']='%s'; 
    300      $bc_template = $core->adminurl->get('admin.media',$temp_params,'&amp;',true); 
    301      $breadcrumb_media = $core->media->breadCrumb($bc_template,'<span class="page-title">%s</span>'); 
    302      if ($breadcrumb_media == '') { 
     314     if ($query || (!$query && $q)) { 
     315          $count = $query ? count($dir['files']) : 0; 
     316          $home_params = $page_url_params; 
     317          $home_params['d']=''; 
     318          $home_params['q']=''; 
    303319          $breadcrumb = dcPage::breadcrumb( 
    304320               array( 
    305321                    html::escapeHTML($core->blog->name) => '', 
    306                     __('Media manager') => '' 
     322                    __('Media manager') => $core->adminurl->get('admin.media',$home_params), 
     323                    __('Search:').' '.$q.' ('.sprintf(__('%s file found','%s files found',$count),$count).')' => '' 
    307324               ), 
    308325               array('home_link' => !$popup) 
    309326          ); 
    310327     } else { 
    311           $home_params = $page_url_params; 
    312           $home_params['d']=''; 
    313  
    314           $breadcrumb = dcPage::breadcrumb( 
    315                array( 
    316                     html::escapeHTML($core->blog->name) => '', 
    317                     __('Media manager') => $core->adminurl->get('admin.media',$home_params), 
    318                     $breadcrumb_media => '' 
    319                ), 
    320                array( 
    321                     'home_link' => !$popup, 
    322                     'hl' => false 
    323                ) 
    324           ); 
     328          $temp_params = $page_url_params; 
     329          $temp_params['d']='%s'; 
     330          $bc_template = $core->adminurl->get('admin.media',$temp_params,'&amp;',true); 
     331          $breadcrumb_media = $core->media->breadCrumb($bc_template,'<span class="page-title">%s</span>'); 
     332          if ($breadcrumb_media == '') { 
     333               $breadcrumb = dcPage::breadcrumb( 
     334                    array( 
     335                         html::escapeHTML($core->blog->name) => '', 
     336                         __('Media manager') => '' 
     337                    ), 
     338                    array('home_link' => !$popup) 
     339               ); 
     340          } else { 
     341               $home_params = $page_url_params; 
     342               $home_params['d']=''; 
     343 
     344               $breadcrumb = dcPage::breadcrumb( 
     345                    array( 
     346                         html::escapeHTML($core->blog->name) => '', 
     347                         __('Media manager') => $core->adminurl->get('admin.media',$home_params), 
     348                         $breadcrumb_media => '' 
     349                    ), 
     350                    array( 
     351                         'home_link' => !$popup, 
     352                         'hl' => false 
     353                    ) 
     354               ); 
     355          } 
    325356     } 
    326357} 
     
    402433$fmt_form_media = '<form action="'.$core->adminurl->get("admin.media").'" method="post" id="form-medias">'. 
    403434     '<div class="files-group">%s</div>'. 
    404      '<p class="hidden">'.$core->formNonce() . form::hidden(array('d'),$d).form::hidden(array('plugin_id'),$plugin_id).'</p>'; 
     435     '<p class="hidden">'.$core->formNonce(). 
     436     form::hidden(array('d'),$d). 
     437     form::hidden(array('q'),$q). 
     438     form::hidden(array('plugin_id'),$plugin_id). 
     439     '</p>'; 
    405440 
    406441if (!$popup) { 
     
    426461 
    427462     echo 
     463     '<form action="'.$core->adminurl->get("admin.media").'" method="get" id="search-form">'. 
     464     '<p><label for="search" class="classic">'.__('Search:').'</label> '. 
     465     form::field('q',20,255,$q).' '. 
     466     '<input type="submit" value="'.__('OK').'" />'.' '. 
     467     '<span class="form-note">'.__('Will search into media filename (including path), title and description').'</span>'. 
     468     form::hidden(array('popup'),$popup). 
     469     form::hidden(array('plugin_id'),$plugin_id). 
     470     form::hidden(array('post_id'),$post_id). 
     471     '</p>'. 
     472     '</form>'. 
    428473     '<form action="'.$core->adminurl->get("admin.media").'" method="get" id="filters-form">'. 
    429474     '<p class="two-boxes"><label for="file_sort" class="classic">'.__('Sort files:').'</label> '. 
     
    435480     form::hidden(array('plugin_id'),$plugin_id). 
    436481     form::hidden(array('post_id'),$post_id). 
     482     form::hidden(array('q'),$q). 
    437483     '</p>'. 
    438484     '</form>'. 
     
    444490     { 
    445491          if ($items[$i]->d) { 
    446                $dgroup .= mediaItemLine($items[$i],$j); 
     492               $dgroup .= mediaItemLine($items[$i],$j,$query); 
    447493          } else { 
    448                $fgroup .= mediaItemLine($items[$i],$j); 
     494               $fgroup .= mediaItemLine($items[$i],$j,$query); 
    449495          } 
    450496     } 
     
    466512     !(count($items) == 0 || (count($items) == 1 && $items[0]->parent)); 
    467513 
    468 if ($core_media_writable || $core_media_archivable) { 
     514if ((!$query) && ($core_media_writable || $core_media_archivable)) { 
    469515     echo 
    470516     '<div class="vertical-separator">'. 
     
    472518} 
    473519 
    474 if ($core_media_writable || $core_media_archivable) { 
     520if ((!$query) && ($core_media_writable || $core_media_archivable)) { 
    475521     echo 
    476522     '<div class="two-boxes odd">'; 
     
    508554} 
    509555 
    510 if ($core_media_writable) 
     556if (!$query && $core_media_writable) 
    511557{ 
    512558     echo 
     
    569615form::hidden('rmyes',1).form::hidden('d',html::escapeHTML($d)). 
    570616form::hidden(array('plugin_id'),$plugin_id).form::hidden('remove',''). 
     617form::hidden(array('q'),$q). 
    571618$core->formNonce(). 
    572619'</div>'. 
    573620'</form>'; 
    574621 
    575 if ($core_media_writable || $core_media_archivable) { 
     622if ((!$query) && ($core_media_writable || $core_media_archivable)) { 
    576623     echo 
    577624     '</div>'; 
     
    586633 
    587634/* ----------------------------------------------------- */ 
    588 function mediaItemLine($f,$i) 
     635function mediaItemLine($f,$i,$query) 
    589636{ 
    590637     global $core, $page_url, $popup, $post_id, $plugin_id,$page_url_params; 
    591638 
    592639     $fname = $f->basename; 
     640     $file = $query ? $f->relname : $f->basename; 
    593641 
    594642     $class = 'media-item media-col-'.($i%2); 
     
    625673     $res = 
    626674     '<div class="'.$class.'"><p><a class="media-icon media-link" href="'.rawurldecode($link).'">'. 
    627      '<img src="'.$f->media_icon.'" alt="" />'.$fname.'</a></p>'; 
     675     '<img src="'.$f->media_icon.'" alt="" />'.($query ? $file : $fname).'</a></p>'; 
    628676 
    629677     $lst = ''; 
     
    657705     if ($f->del) { 
    658706          if (!$popup && !$f->d) { 
    659                $act .= form::checkbox(array('medias[]', 'media_'.rawurlencode($f->basename)),rawurlencode($f->basename)); 
     707               $act .= form::checkbox(array('medias[]', 'media_'.rawurlencode($file)),$file); 
    660708          } else { 
    661709               $act .= '<a class="media-remove" '. 
    662                'href="'.html::escapeURL($page_url).'&amp;plugin_id='.$plugin_id.'&amp;d='. 
    663                rawurlencode($GLOBALS['d']).'&amp;remove='.rawurlencode($f->basename).'">'. 
     710               'href="'.html::escapeURL($page_url). 
     711               '&amp;plugin_id='.$plugin_id. 
     712               '&amp;d='.rawurlencode($GLOBALS['d']). 
     713               '&amp;q='.rawurlencode($GLOBALS['q']). 
     714               '&amp;remove='.rawurlencode($file).'">'. 
    664715               '<img src="images/trash.png" alt="'.__('Delete').'" title="'.__('delete').'" /></a>'; 
    665716          } 
  • inc/core/class.dc.media.php

    r2768 r3099  
    368368                    return strcasecmp($a->basename,$b->basename); 
    369369          } 
    370  
    371370     } 
    372371 
     
    520519 
    521520     /** 
     521     Search into media db (only). 
     522 
     523     @param    query          <b>string</b>       Search query 
     524     @return boolean     true or false if nothing found 
     525     */ 
     526     public function searchMedia($query) 
     527     { 
     528          if ($query == '') { 
     529               return false; 
     530          } 
     531 
     532          $strReq = 
     533          'SELECT media_file, media_id, media_path, media_title, media_meta, media_dt, '. 
     534          'media_creadt, media_upddt, media_private, user_id '. 
     535          'FROM '.$this->table.' '. 
     536          "WHERE media_path = '".$this->path."' ". 
     537          "AND (media_title LIKE '%".$this->con->escape($query)."%' ". 
     538          "    OR media_file LIKE '%".$this->con->escape($query)."%' ". 
     539          "    OR media_meta LIKE '<Description>%".$this->con->escape($query)."%</Description>')"; 
     540 
     541          if (!$this->core->auth->check('media_admin',$this->core->blog->id)) 
     542          { 
     543               $strReq .= 'AND (media_private <> 1 '; 
     544 
     545               if ($this->core->auth->userID()) { 
     546                    $strReq .= "OR user_id = '".$this->con->escape($this->core->auth->userID())."'"; 
     547               } 
     548               $strReq .= ') '; 
     549          } 
     550 
     551          $rs = $this->con->select($strReq); 
     552 
     553          $this->dir = array('dirs' => array(),'files' => array()); 
     554          $f_res = array(); 
     555          while ($rs->fetch()) 
     556          { 
     557               $fr = $this->fileRecord($rs); 
     558               if ($fr) { 
     559                    $f_res[] = $fr; 
     560               } 
     561          } 
     562          $this->dir['files'] = $f_res; 
     563 
     564          try { 
     565               usort($this->dir['files'],array($this,'sortFileHandler')); 
     566          } catch (Exception $e) {} 
     567 
     568          return (count($f_res) > 0 ? true : false); 
     569     } 
     570 
     571     /** 
    522572     Returns media items attached to a blog post. Result is an array containing 
    523573     fileItems objects. 
  • locales/fr/main.po

    r3094 r3099  
    14881488msgstr "Les réglages actuels pour les médias et les images sont définis dans les %s" 
    14891489 
     1490#, php-format 
     1491msgid "%s file found" 
     1492msgid_plural "%s files found" 
     1493msgstr[0] "%s fichier trouvé" 
     1494msgstr[1] "%s fichiers trouvés" 
     1495 
     1496msgid "Will search into media filename (including path), title and description" 
     1497msgstr "Recherche parmi les noms des fichiers (incluant leur chemin), les titres et descriptions" 
     1498 
    14901499msgid "Blog parameters" 
    14911500msgstr "Paramètres du blog" 
Note: See TracChangeset for help on using the changeset viewer.

Sites map