From dd9ba38e965cfc3c06fbb80fed65556dbfbfda1c Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva <pshns@ukr.net>
Date: Thu, 14 Jul 2011 11:36:48 +0300
Subject: [PATCH] mediamanager tabs, upload form fix

---
 inc/lang/en/lang.php             |   3 +-
 inc/media.php                    | 101 ++++++++++++++++---------------
 lib/scripts/media.js             |   6 +-
 lib/tpl/default/mediamanager.css |   7 ++-
 4 files changed, 65 insertions(+), 52 deletions(-)

diff --git a/inc/lang/en/lang.php b/inc/lang/en/lang.php
index ea6bf2646..93f0f4ce7 100644
--- a/inc/lang/en/lang.php
+++ b/inc/lang/en/lang.php
@@ -334,7 +334,8 @@ $lang['media_historytab'] = 'History';
 $lang['media_thumbsview'] = 'Thumbnails';
 $lang['media_listview']   = 'List';
 $lang['media_sort']       = 'Sort';
-$lang['media_search']     = 'Search in the <b>%s</b> namespace.';
+$lang['media_upload']     = 'Upload to the <strong>%s</strong> namespace.';
+$lang['media_search']     = 'Search in the <strong>%s</strong> namespace.';
 $lang['media_edit']       = 'Edit';
 $lang['media_history']    = 'These are the older revisions of the file.';
 $lang['media_meta_edited']= 'metadata edited';
diff --git a/inc/media.php b/inc/media.php
index 341692f5f..d72b228d4 100644
--- a/inc/media.php
+++ b/inc/media.php
@@ -557,30 +557,30 @@ function media_tabs_files($selected=false){
     global $lang;
 
     echo '<div class="mediamanager-tabs" id="mediamanager__tabs_files">';
-    $tab = '<a href="'.media_managerURL(array('tab_files' => 'files')).'"';
-    if (!empty($selected) && $selected == 'files') $class = 'files selected';
-    else $class = 'files';
-    $tab .= ' class="'.$class.'" >'.$lang['mediaselect'].'</a>';
-    echo $tab;
-
-    $tab = '<a href="'.media_managerURL(array('tab_files' => 'upload')).
-        '" rel=".mediamanager-tab-upload"';
-    if (!empty($selected) && $selected == 'upload') $class = 'upload selected';
-    else $class = 'upload';
-    $tab .= ' class="'.$class.'" >'.$lang['media_uploadtab'].'</a>';
-    echo $tab;
 
-    $tab = '<a href="'.media_managerURL(array('tab_files' => 'search')).
-        '" rel=".mediamanager-tab-search"';
-    if (!empty($selected) && $selected == 'search') $class = 'search selected';
-    else $class = 'search';
-    $tab .= ' class="'.$class.'" >'.$lang['media_searchtab'].'</a>';
-    echo $tab;
+    media_tab(media_managerURL(array('tab_files' => 'files')), 'files', $lang['mediaselect'], $selected);
+    media_tab(media_managerURL(array('tab_files' => 'upload')), 'upload', $lang['media_uploadtab'], $selected);
+    media_tab(media_managerURL(array('tab_files' => 'search')), 'search', $lang['media_searchtab'], $selected);
 
     echo '<div class="clearer"></div>';
     echo '</div>';
 }
 
+/**
+ * Prints mediamanager tab
+ *
+ * @author Kate Arzamastseva <pshns@ukr.net>
+ * @param string $link
+ * @param string $class
+ * @param string $name
+ * @param string $selected
+ */
+function media_tab($link, $class, $name, $selected=false) {
+    if (!empty($selected) && $selected == $class) $class .= ' selected';
+    $tab = '<a href="'.$link.'" class="'.$class.'" >'.$name.'</a>';
+    echo $tab;
+}
+
 /**
  * Prints tabs for files details actions
  *
@@ -591,26 +591,14 @@ function media_tabs_details($image, $selected=false){
     global $lang;
 
     echo '<div class="mediamanager-tabs" id="mediamanager__tabs_details">';
-    $tab = '<a href="'.media_managerURL(array('tab_details' => 'view', 'image' => $image)).
-        '" rel=".mediamanager-tab-view"';
-    if (!empty($selected) && $selected == 'view') $class = 'view selected';
-    else $class = 'view';
-    $tab .= ' class="'.$class.'" >'.$lang['media_viewtab'].'</a>';
-    echo $tab;
 
-    $tab = '<a href="'.media_managerURL(array('tab_details' => 'edit', 'image' => $image)).
-        '" rel=".mediamanager-tab-edit"';
-    if (!empty($selected) && $selected == 'edit') $class = 'edit selected';
-    else $class = 'edit';
-    $tab .= ' class="'.$class.'" >'.$lang['media_edittab'].'</a>';
-    echo $tab;
+    media_tab(media_managerURL(array('tab_details' => 'view')), 'view', $lang['media_viewtab'], $selected);
 
-    $tab = '<a href="'.media_managerURL(array('tab_details' => 'history', 'image' => $image)).
-        '" rel=".mediamanager-tab-history"';
-    if (!empty($selected) && $selected == 'history') $class = 'history selected';
-    else $class = 'history';
-    $tab .= ' class="'.$class.'" >'.$lang['media_historytab'].'</a>';
-    echo $tab;
+    list($ext, $mime) = mimetype($image);
+    if ($mime == 'image/jpeg') {
+        media_tab(media_managerURL(array('tab_details' => 'edit')), 'edit', $lang['media_edittab'], $selected);
+    }
+    media_tab(media_managerURL(array('tab_details' => 'history')), 'history', $lang['media_historytab'], $selected);
 
     echo '<div class="clearer"></div>';
     echo '</div>';
@@ -679,10 +667,11 @@ function media_tab_upload($ns,$auth=null,$jump='') {
     if(is_null($auth)) $auth = auth_quickaclcheck("$ns:*");
 
     echo '<div class="background-container">';
-    echo $lang['mediaupload'];
+    echo sprintf($lang['media_upload'], $ns);
     echo '</div>';
 
     echo '<div class="scroll-container">';
+    if ($auth >= AUTH_UPLOAD) echo '<div class="upload">' . $lang['mediaupload'] . '</div>';
     media_uploadform($ns, $auth, true);
     echo '</div>';
 }
@@ -733,8 +722,9 @@ function media_tab_view($image, $ns, $auth=null, $rev=false) {
     echo '</div>';
 
     echo '<div class="scroll-container">';
-    media_preview($image, $auth, $rev);
-    media_details($image, $auth, $rev);
+    $meta = new JpegMeta(mediaFN($image, $rev));
+    media_preview($image, $auth, $rev, $meta);
+    media_details($image, $auth, $rev, $meta);
     echo '</div>';
 }
 
@@ -792,7 +782,7 @@ function media_tab_history($image, $ns, $auth=null) {
  *
  * @author Kate Arzamastseva <pshns@ukr.net>
  */
-function media_preview($image, $auth, $rev=false) {
+function media_preview($image, $auth, $rev=false, $meta=false) {
     global $lang;
     if (!$image) return '';
     if ($auth < AUTH_READ) {
@@ -801,6 +791,7 @@ function media_preview($image, $auth, $rev=false) {
     }
     $info = getimagesize(mediaFN($image, $rev));
     $w = (int) $info[0];
+    $h = (int) $info[1];
 
     $more = '';
     if ($rev) {
@@ -809,12 +800,20 @@ function media_preview($image, $auth, $rev=false) {
         $t = @filemtime(mediaFN($image));
         $more = "t=$t";
     }
+    $link = ml($image,$more,true,'&');
+
+    $size = 500;
+    if($meta && ($w > $size || $h > $size)){
+        $ratio = $meta->getResizeRatio($size, $size);
+        $w = floor($w * $ratio);
+        $h = floor($h * $ratio);
+        $more .= "&h=$h&w=$w";
+    }
+
     $src = ml($image, $more);
     echo '<div class="mediamanager-preview">';
     echo '<img src="'.$src.'" alt="" width="99%" style="max-width: '.$w.'px;" /><br /><br />';
 
-    $link = ml($image,$more,true,'&');
-
     $form = new Doku_Form(array('action'=>$link, 'target'=>'_blank'));
     $form->addElement(form_makeButton('submit','',$lang['mediaview']));
     $form->printForm();
@@ -847,7 +846,7 @@ function media_preview($image, $auth, $rev=false) {
  *
  * @author Kate Arzamastseva <pshns@ukr.net>
  */
-function media_details($image, $auth, $rev=false) {
+function media_details($image, $auth, $rev=false, $meta=false) {
     global $lang, $config_cascade;;
 
     if (!$image) return '';
@@ -865,8 +864,8 @@ function media_details($image, $auth, $rev=false) {
         }
     }
 
-    $src = mediaFN($image, $rev);
-    $meta = new JpegMeta($src);
+    if (!$meta) $meta = new JpegMeta(mediaFN($image, $rev));
+
     echo '<dl class="img_tags">';
     foreach($fields as $key => $tag){
         $t = array();
@@ -937,16 +936,20 @@ function media_diff($image, $ns, $auth) {
         $revs = getRevisions($image, 0, 1, 8192, true);
         $l_rev = $revs[0];
     }
+
+    $l_meta = new JpegMeta(mediaFN($image, $l_rev));
+    $r_meta = new JpegMeta(mediaFN($image, $r_rev));
+
     echo '<ul class="mediamanager-table-50"><li><div>';
-    media_preview($image, $auth, $l_rev);
+    media_preview($image, $auth, $l_rev, $l_meta);
     echo '</div></li>';
     echo '<li><div>';
-    media_preview($image, $auth, $r_rev);
+    media_preview($image, $auth, $r_rev, $r_meta);
     echo '</div></li><li><div>';
-    media_details($image, $auth, $l_rev);
+    media_details($image, $auth, $l_rev, $l_meta);
     echo '</div></li>';
     echo '<li><div>';
-    media_details($image, $auth, $r_rev);
+    media_details($image, $auth, $r_rev, $r_meta);
     echo '</div></li></ul>';
 }
 
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index af5346cbe..de3d03dfe 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -64,7 +64,8 @@ var dw_mediamanager = {
         jQuery('#mediamanager__layout_list').delegate('#mediamanager__tabs_files a', 'click', dw_mediamanager.list)
             .delegate('#mediamanager__tabs_list a', 'click', dw_mediamanager.list_view)
             .delegate('#mediamanager__file_list a', 'click', dw_mediamanager.details)
-            .delegate('#dw__mediasearch', 'submit', dw_mediamanager.list);
+            .delegate('#dw__mediasearch', 'submit', dw_mediamanager.list)
+            .delegate('#upload__file', 'change', dw_mediamanager.suggest);
 
         jQuery('#mediamanager__layout_detail').delegate('#mediamanager__tabs_details a', 'click', dw_mediamanager.details)
             .delegate('#mediamanager__btn_update', 'submit', dw_mediamanager.list)
@@ -216,6 +217,9 @@ var dw_mediamanager = {
 
         $file = jQuery(this);
         $name = jQuery('#upload__name');
+
+        if ($name.val() != '') return;
+
         if(!$file.length || !$name.length) {
             return;
         }
diff --git a/lib/tpl/default/mediamanager.css b/lib/tpl/default/mediamanager.css
index 55ac39fd2..e87473687 100644
--- a/lib/tpl/default/mediamanager.css
+++ b/lib/tpl/default/mediamanager.css
@@ -246,5 +246,10 @@ form.meta textarea.edit {
 }
 
 .idx .selected {
-    color: red !important;
+    background-color: __highlight__;
+    font-weight: bold;
+}
+
+.mediamanager div.upload {
+    padding-bottom: 0.5em;
 }
\ No newline at end of file
-- 
GitLab