From ed69a2ae06c0707fdd5634e18d569c25f0cda6d5 Mon Sep 17 00:00:00 2001
From: Kate Arzamastseva <pshns@ukr.net>
Date: Sun, 3 Jul 2011 23:56:26 +0300
Subject: [PATCH] ajax mediamanager fix

---
 inc/media.php        |  4 +--
 inc/template.php     | 32 ++++++++++-----------
 lib/exe/ajax.php     |  8 ++----
 lib/scripts/media.js | 68 ++++++++++++++++++++++----------------------
 4 files changed, 54 insertions(+), 58 deletions(-)

diff --git a/inc/media.php b/inc/media.php
index fd917a5a0..b668e7be2 100644
--- a/inc/media.php
+++ b/inc/media.php
@@ -807,8 +807,8 @@ function media_preview($image, $auth, $rev=false) {
         $form->addElement(form_makeButton('submit','',$lang['btn_delete']));
         $form->printForm();
 
-        $form = new Doku_Form(array('action'=>media_managerURL(array('image' => $image))));
-        $form->addHidden('mediado','update');
+        $form = new Doku_Form(array('id' => 'mediamanager__btn_update',
+            'action'=>media_managerURL(array('image' => $image, 'mediado' => 'update'))));
         $form->addElement(form_makeButton('submit','',$lang['media_update']));
         $form->printForm();
     }
diff --git a/inc/template.php b/inc/template.php
index c3b705421..70253bb90 100644
--- a/inc/template.php
+++ b/inc/template.php
@@ -1135,7 +1135,7 @@ function tpl_mediaContent($fromajax=false){
  *
  * @author Kate Arzamastseva <pshns@ukr.net>
  */
-function tpl_fileList($fromajax=false){
+function tpl_fileList(){
     global $AUTH;
     global $NS;
     global $JUMPTO;
@@ -1144,22 +1144,22 @@ function tpl_fileList($fromajax=false){
     if (!$opened_tab) $opened_tab = 'files';
     if ($_REQUEST['mediado'] == 'update') $opened_tab = 'upload';
 
-    if(!$fromajax) media_tabs_files($opened_tab);
+    media_tabs_files($opened_tab);
 
     if ($opened_tab == 'files') {
-        if (!$fromajax) echo '<div class="mediamanager-tab-files" id="mediamanager__files">';
+        echo '<div class="mediamanager-tab-files" id="mediamanager__files">';
         media_tab_files($NS,$AUTH,$JUMPTO);
-        if (!$fromajax) echo '</div>';
+        echo '</div>';
 
     } elseif ($opened_tab == 'upload') {
-        if (!$fromajax) echo '<div class="mediamanager-tab-upload" id="mediamanager__files">';
+        echo '<div class="mediamanager-tab-upload" id="mediamanager__files">';
         media_tab_upload($NS,$AUTH,$JUMPTO);
-        if (!$fromajax) echo '</div>';
+        echo '</div>';
 
     } elseif ($opened_tab == 'search') {
-        if (!$fromajax) echo '<div class="mediamanager-tab-search" id="mediamanager__files">';
+        echo '<div class="mediamanager-tab-search" id="mediamanager__files">';
         media_tab_search($NS,$AUTH);
-        if (!$fromajax) echo '</div>';
+        echo '</div>';
     }
 
 }
@@ -1172,7 +1172,7 @@ function tpl_fileList($fromajax=false){
  *
  * @author Kate Arzamastseva <pshns@ukr.net>
  */
-function tpl_fileDetails($image, $rev, $fromajax=false){
+function tpl_fileDetails($image, $rev){
     global $AUTH;
     global $NS;
 
@@ -1186,22 +1186,22 @@ function tpl_fileDetails($image, $rev, $fromajax=false){
     if ($_REQUEST['edit']) $opened_tab = 'edit';
     if ($do == 'restore') $opened_tab = 'view';
 
-    if(!$fromajax) media_tabs_details($image, $opened_tab);
+    media_tabs_details($image, $opened_tab);
 
     if ($opened_tab == 'view') {
-        if (!$fromajax) echo '<div class="mediamanager-tab-detail-view" id="mediamanager__details">';
+        echo '<div class="mediamanager-tab-detail-view" id="mediamanager__details">';
         media_tab_view($image, $NS, $AUTH, $rev);
-        if (!$fromajax) echo '</div>';
+        echo '</div>';
 
     } elseif ($opened_tab == 'edit') {
-        if (!$fromajax) echo '<div class="mediamanager-tab-detail-edit" id="mediamanager__details">';
+        echo '<div class="mediamanager-tab-detail-edit" id="mediamanager__details">';
         media_tab_edit($image, $NS, $AUTH);
-        if (!$fromajax) echo '</div>';
+        echo '</div>';
 
     } elseif ($opened_tab == 'history') {
-        if (!$fromajax) echo '<div class="mediamanager-tab-detail-history" id="mediamanager__details">';
+        echo '<div class="mediamanager-tab-detail-history" id="mediamanager__details">';
         media_tab_history($image,$NS,$AUTH);
-        if (!$fromajax) echo '</div>';
+        echo '</div>';
     }
 }
 
diff --git a/lib/exe/ajax.php b/lib/exe/ajax.php
index 16efd9ac7..8ff0f8eda 100644
--- a/lib/exe/ajax.php
+++ b/lib/exe/ajax.php
@@ -211,7 +211,7 @@ function ajax_medialist(){
 
     $NS = $_POST['ns'];
     if ($_POST['do'] == 'media') {
-        tpl_fileList(true);
+        tpl_fileList();
     } else {
         tpl_mediaContent(true);
     }
@@ -229,11 +229,7 @@ function ajax_mediadetails(){
 
     $NS = $_POST['ns'];
     $image = $_POST['image'];
-    if (isset($_POST['full'])) {
-        tpl_fileDetails($image, false);
-    } else {
-        tpl_fileDetails($image, false, true);
-    }
+    tpl_fileDetails($image, false);
 }
 
 /**
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index e03d1cf7b..a7574b804 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -11,7 +11,7 @@
  * @author Pierre Spring <pierre.spring@caillou.ch>
  */
 (function ($) {
-    var toggle, list, prepare_content, insert, confirmattach, attachoptions, initpopup, updatehide, setalign, setsize, inSet, outSet, media_manager, hasFlash;
+    var toggle, list, prepare_content, insert, confirmattach, attachoptions, initpopup, updatehide, setalign, setsize, inSet, outSet, media_manager, hasFlash, form_params, list_view, details;
 
     var media_manager = {
         keepopen: false,
@@ -321,7 +321,7 @@
      * @author Pierre Spring <pierre.spring@caillou.ch>
      */
     list = function (event) {
-        var link, content;
+        var link, content, params;
         link = $(this);
 
         event.preventDefault();
@@ -329,22 +329,33 @@
         jQuery('div.success, div.info, div.error, div.notify').remove();
 
         if (document.getElementById('media__content')) {
+            //popup
             content = $('#media__content');
+
         } else {
-            content = $('#mediamanager__files');
+            //fullscreen media manager
+            content = $('#mediamanager__layout_list');
+
             if (link.hasClass('idx_dir')) {
-                change_tab($('.files'), '#mediamanager__tabs_files');
+                //changing namespace
                 $('#mediamanager__layout_detail').empty();
-            } else {
-                change_tab(link, '#mediamanager__tabs_files');
             }
         }
-        content.html('<img src="' + DOKU_BASE + 'lib/images/loading.gif" alt="..." class="load" />');
+
+        params = '';
+
+        if (link[0].search) {
+            params = link[0].search.substr(1)+'&call=medialist';
+        } else if (link[0].action) {
+            params = form_params(link)+'&call=medialist';
+        }
+
+        $('.scroll-container', content).html('<img src="' + DOKU_BASE + 'lib/images/loading.gif" alt="..." class="load" />');
 
         // fetch the subtree
         $.post(
             DOKU_BASE + 'lib/exe/ajax.php',
-            link[0].search.substr(1)+'&call=medialist',
+            params,
             function (data) {
                 content.html(data);
                 prepare_content(content);
@@ -356,15 +367,16 @@
     };
 
      /**
-     * Changes selected tab
+     * Returns form parameters
      *
      * @author Kate Arzamastseva <pshns@ukr.net>
      */
-    change_tab = function (tab, tab_menu_id) {
-        $(tab_menu_id + ' a').each(function (i) {
-            $(this).removeClass('selected');
-        });
-        tab.addClass('selected');
+    form_params = function (form) {
+        var elements = form.serialize();
+        var action = '';
+        var i = form[0].action.indexOf('?');
+        if (i >= 0) action = form[0].action.substr(i+1);
+        return elements+'&'+action;
     };
 
      /**
@@ -394,31 +406,19 @@
      * @author Kate Arzamastseva <pshns@ukr.net>
      */
     details = function (event) {
-        var link, content, call, full;
+        var link, content;
         link = $(this);
 
         event.preventDefault();
 
         jQuery('div.success, div.info, div.error, div.notify').remove();
 
-        full='';
-        if (document.getElementById('mediamanager__details')) {
-            content = $('#mediamanager__details');
-        } else {
-            content = $('#mediamanager__layout_detail');
-            full = '&full=true';
-        }
-
-        if (link.hasClass('name')) {
-            change_tab($('.view'), '#mediamanager__tabs_details');
-        } else {
-            change_tab(link, '#mediamanager__tabs_details');
-        }
-        content.html('<img src="' + DOKU_BASE + 'lib/images/loading.gif" alt="..." class="load" />');
+        content = $('#mediamanager__layout_detail');
+        $('.scroll-container', content).html('<img src="' + DOKU_BASE + 'lib/images/loading.gif" alt="..." class="load" />');
 
         $.post(
             DOKU_BASE + 'lib/exe/ajax.php',
-            link[0].search.substr(1)+'&call=mediadetails'+full,
+            link[0].search.substr(1)+'&call=mediadetails',
             function (data) {
                 content.html(data);
             },
@@ -830,11 +830,11 @@
         $('#media__tree').delegate('img', 'click', toggle)
             .delegate('a', 'click', list);
 
-        $('#mediamanager__tabs_files').delegate('a', 'click', list);
-
-        $('#mediamanager__files').delegate('#mediamanager__tabs_list a', 'click', list_view)
+        $('#mediamanager__layout_list').delegate('#mediamanager__tabs_files a', 'click', list)
+            .delegate('#mediamanager__tabs_list a', 'click', list_view)
             .delegate('#mediamanager__file_list a', 'click', details);
 
-        $('#mediamanager__layout_detail').delegate('#mediamanager__tabs_details a', 'click', details);
+        $('#mediamanager__layout_detail').delegate('#mediamanager__tabs_details a', 'click', details)
+            .delegate('#mediamanager__btn_update', 'submit', list);
     });
 }(jQuery));
-- 
GitLab