]> git.mjollnir.org Git - moodle.git/commitdiff
"MDL-18486, file picker searching form"
authordongsheng <dongsheng>
Tue, 21 Apr 2009 05:53:35 +0000 (05:53 +0000)
committerdongsheng <dongsheng>
Tue, 21 Apr 2009 05:53:35 +0000 (05:53 +0000)
repository/alfresco/repository.class.php
repository/flickr_public/repository.class.php
repository/lib.php
repository/repository.js
repository/upload/repository.class.php
repository/ws.php

index 6d06936374b2ead6c791e364ce87bd71680c2de3..ced2e75cd39872bbf71971d5ae5674c0a923ef90 100755 (executable)
@@ -135,21 +135,21 @@ class repository_alfresco extends repository {
         return $path;
     }
 
-    public function print_search() {
-        parent::print_search();
-        echo '<label>Space: </label><br /><select name="space">';
+    public function print_search($client_id) {
+        $str = parent::print_search($client_id);
+        $str .= '<label>Space: </label><br /><select name="space">';
         foreach ($this->sess->stores as $v) {  
-            echo '<option ';
+            $str .= '<option ';
             if ($v->__toString() === 'workspace://SpacesStore') {
-                echo 'selected ';
+                $str .= 'selected ';
             }
-            echo 'value="';
-            echo $v->__toString().'">';
-            echo $v->__toString();
-            echo '</option>';
+            $str .= 'value="';
+            $str .= $v->__toString().'">';
+            $str .= $v->__toString();
+            $str .= '</option>';
         }
-        echo '</select>';
-        return true;
+        $str .= '</select>';
+        return $str;
     }
 
     public function search($search_text) {
index ae9b7097b1679825e629bf281b3ee36a34ed45f3..6e08c224bc099d7c310c2ac0154625eb00214c17 100644 (file)
@@ -251,12 +251,13 @@ class repository_flickr_public extends repository {
      * @return <type>
      */
     public function print_search() {
-        echo '<input type="hidden" name="repo_id" value="'.$this->id.'" />';
-        echo '<input type="hidden" name="ctx_id" value="'.$this->context->id.'" />';
-        echo '<input type="hidden" name="seekey" value="'.sesskey().'" />';
-        echo '<label>'.get_string('fulltext', 'repository_flickr_public').': </label><br/><input name="s" value="" /><br/>';
-        echo '<label>'.get_string('tag', 'repository_flickr_public').'</label><br /><input type="text" name="tag" /><br />';
-        return true;
+        $str = '';
+        $str .= '<input type="hidden" name="repo_id" value="'.$this->id.'" />';
+        $str .= '<input type="hidden" name="ctx_id" value="'.$this->context->id.'" />';
+        $str .= '<input type="hidden" name="seekey" value="'.sesskey().'" />';
+        $str .= '<label>'.get_string('fulltext', 'repository_flickr_public').': </label><br/><input name="s" value="" /><br/>';
+        $str .= '<label>'.get_string('tag', 'repository_flickr_public').'</label><br /><input type="text" name="tag" /><br />';
+        return $str;
     }
 
     /**
index 26ae869d28293d7073594b76423dbe3c41ab2cfb..4b5583d180f01b66de772fd8ceb4d723fa30d363 100644 (file)
@@ -1593,11 +1593,12 @@ abstract class repository {
      * @return null
      */
     public function print_search() {
-        echo '<input type="hidden" name="repo_id" value="'.$this->id.'" />';
-        echo '<input type="hidden" name="ctx_id" value="'.$this->context->id.'" />';
-        echo '<input type="hidden" name="seekey" value="'.sesskey().'" />';
-        echo '<label>'.get_string('keyword', 'repository').': </label><br/><input name="s" value="" /><br/>';
-        return true;
+        $str = '';
+        $str .= '<input type="hidden" name="repo_id" value="'.$this->id.'" />';
+        $str .= '<input type="hidden" name="ctx_id" value="'.$this->context->id.'" />';
+        $str .= '<input type="hidden" name="seekey" value="'.sesskey().'" />';
+        $str .= '<label>'.get_string('keyword', 'repository').': </label><br/><input name="s" value="" /><br/>';
+        return $str;
     }
 
     /**
index 777b230d6a9ebf49616e54a8808236cc2a33a2a1..b05eb16dc1481aab0a06169dd1ad6fc84451016a 100644 (file)
@@ -196,11 +196,7 @@ repository_client.req = function(client_id, id, path, page) {
 
 repository_client.req_cb = {
     success: function(o){
-         try {
-             var data = YAHOO.lang.JSON.parse(o.responseText);
-         } catch(e) {
-             alert(fp_lang.invalidjson+' - |req_cb| -'+repository_client.stripHTML(o.responseText));
-         };
+         var data = repository_client.parse_json(o.responseText, 'req_cb');    
          var repo = repository_client.fp[data.client_id];
          var panel = new YAHOO.util.Element('panel-'+data.client_id);
          if(data && data.e) {
@@ -373,12 +369,7 @@ repository_client.view_as_list = function(client_id, data) {
     tree.dynload = function (node, fnLoadComplete) {
         var callback = {
             success: function(o) {
-                 try {
-                     var json = YAHOO.lang.JSON.parse(o.responseText);
-                 } catch(e) {
-                     alert(fp_lang.invalidjson+' - |dynload| -'+repository_client.stripHTML(o.responseText));
-                     return;
-                 }
+                 var json = repository_client.parse_json(o.responseText, 'dynload');    
                  for(k in json.list) {
                      repository_client.buildtree(json.client_id, json.list[k], node);
                  }
@@ -565,7 +556,6 @@ repository_client.path = function(client_id) {
                 path_link.path = this.path;
                 path_link.client_id = this.client_id;
                 path_link.onclick = function() {
-                    alert('test');
                     repository_client.req(this.client_id, this.id, this.path);
                 }
             });
@@ -700,20 +690,6 @@ repository_client.view_as_icons = function(client_id, data) {
     container.appendChild(panel);
     repository_client.print_footer(client_id);
 }
-repository_client.create_upload_form = function(client_id) {
-    var str = '';
-    var fs = repository_client.fp[client_id].fs;
-    if(fs.upload) {
-        str += '<div id="'+fs.upload.id+'_div" class="fp-upload-form">';
-        str += '<form id="'+fs.upload.id+'" onsubmit="return false">';
-        str += '<label for="'+fs.upload.id+'-file">'+fs.upload.label+': </label>';
-        str += '<input type="file" id="'+fs.upload.id+'-file" name="repo_upload_file" />';
-        str += '<p class="fp-upload-btn"><a href="###" onclick="return repository_client.upload(\''+client_id+'\');">'+fp_lang.upload+'</a></p>';
-        str += '</form>';
-        str += '</div>';
-    }
-    return str;
-}
 repository_client.print_footer = function(client_id) {
     var fs = this.fp[client_id].fs;
     var panel = document.getElementById('panel-'+client_id);
@@ -730,7 +706,7 @@ repository_client.print_footer = function(client_id) {
         search.innerHTML = '<img src="'+moodle_cfg.pixpath+'/a/search.png" /> '+fp_lang.search;
         oDiv.appendChild(search);
         search.onclick = function() {
-            repository_client.search_form(client_id,repository_client.repositoryid);
+            repository_client.search_form(client_id, fs.repo_id);
         }
     }
     // weather we use cache for this instance, this button will reload listing anyway
@@ -836,11 +812,7 @@ repository_client.download = function(client_id, repo_id) {
 }
 repository_client.download_cb = {
     success: function(o) {
-         try {
-             var data = YAHOO.lang.JSON.parse(o.responseText);
-         } catch(e) {
-             alert(fp_lang.invalidjson+' - |download_cb| -'+repository_client.stripHTML(o.responseText));
-         }
+         var data = repository_client.parse_json(o.responseText, 'download_cb');    
          var panel = new YAHOO.util.Element('panel-'+data.client_id);
          if(data && data.e) {
              panel.get('element').innerHTML = data.e;
@@ -864,14 +836,83 @@ repository_client.end = function(client_id, obj) {
 repository_client.viewfiles = function() {
     alert('Not available yet.');
 }
+repository_client.create_upload_form = function(client_id) {
+    var str = '';
+    var fs = repository_client.fp[client_id].fs;
+    if(fs.upload) {
+        var id = fs.upload.id+'_'+client_id;
+        str += '<div id="'+id+'_div" class="fp-upload-form">';
+        str += '<form id="'+id+'" onsubmit="return false">';
+        str += '<label for="'+id+'_file">'+fs.upload.label+': </label>';
+        str += '<input type="file" id="'+id+'_file" name="repo_upload_file" />';
+        str += '<p class="fp-upload-btn"><a href="###" onclick="return repository_client.upload(\''+client_id+'\');">'+fp_lang.upload+'</a></p>';
+        str += '</form>';
+        str += '</div>';
+    }
+    return str;
+}
+repository_client.upload = function(client_id) {
+    var fp = repository_client.fp[client_id];
+    var u = repository_client.fp[client_id].fs;
+    var id = u.upload.id+'_'+client_id;
+    var aform = document.getElementById(id);
+    var parent = document.getElementById(id+'_div');
+    var d = document.getElementById(id+'_file');
+    if(d.value!='' && d.value!=null) {
+        var container = document.createElement('DIV');
+        container.id = id+'_loading';
+        container.style.textAlign='center';
+        var img = document.createElement('IMG');
+        img.src = moodle_cfg.pixpath+'/i/progressbar.gif';
+        var para = document.createElement('p');
+        para.innerHTML = fp_lang.uploading;
+        container.appendChild(para);
+        container.appendChild(img);
+        parent.appendChild(container);
+        YAHOO.util.Connect.setForm(aform, true, true);
+
+        var trans = YAHOO.util.Connect.asyncRequest('POST',
+                moodle_cfg.wwwroot+'/repository/ws.php?action=upload&itemid='+fp.itemid
+                    +'&sesskey='+moodle_cfg.sesskey
+                    +'&ctx_id='+fp_config.contextid
+                    +'&repo_id='+u.repo_id
+                    +'&client_id='+client_id,
+                repository_client.upload_cb);
+    }else{
+        alert(fp_lang.filenotnull);
+    }
+}
+repository_client.upload_cb = {
+upload: function(o) {
+        var ret = repository_client.parse_json(o.responseText, 'upload');    
+        client_id = ret.client_id;
+        if(ret && ret.e) {
+            var panel = new YAHOO.util.Element('panel-'+client_id);
+            panel.get('element').innerHTML = ret.e;
+            return;
+        }
+        if(ret) {
+            alert(fp_lang.saved);
+            repository_client.end(client_id, ret);
+        }
+    }
+}
+repository_client.parse_json = function(txt, source) {
+    try {
+        var ret = YAHOO.lang.JSON.parse(txt);
+    } catch(e) {
+        alert(fp_lang.invalidjson+' - |'+source+'| -'+this.stripHTML(txt));
+    }
+    return ret;
+}
 repository_client.search_form = function(client_id, id) {
     var fp = repository_client.fp[client_id];
     var params = [];
     params['env']=fp.env;
     params['sesskey']=moodle_cfg.sesskey;
-    params['client_id'] = client_id;
+    params['client_id']=client_id;
     params['ctx_id']=fp_config.contextid;
-    params['repo_id']=fp.fs.id;
+    params['repo_id']=id;
     var trans = YAHOO.util.Connect.asyncRequest('POST',
             moodle_cfg.wwwroot+'/repository/ws.php?action=searchform',
             repository_client.search_form_cb,
@@ -879,8 +920,9 @@ repository_client.search_form = function(client_id, id) {
 }
 repository_client.search_form_cb = {
 success: function(o) {
+     var data = repository_client.parse_json(o.responseText, 'search_form_cb');
      var el = document.getElementById('fp-search-dlg');
-     var _r = repository_client;
+     var fp = repository_client.fp[data.client_id];
      if(el) {
          el.innerHTML = '';
      } else {
@@ -889,18 +931,31 @@ success: function(o) {
      }
      var div1 = document.createElement('DIV');
      div1.className = 'hd';
-     div1.innerHTML = fp_lang.searching+"\"" + _r.repos[_r.repositoryid].name + '"';
+     div1.innerHTML = fp_lang.searching+"\"" + repository_listing[data.client_id][fp.fs.repo_id].name + '"';
      var div2 = document.createElement('DIV');
      div2.className = 'bd';
      var sform = document.createElement('FORM');
      sform.method = 'POST';
      sform.id = "fp-search-form";
-     sform.action = '$CFG->httpswwwroot/repository/ws.php?action=search';
-     sform.innerHTML = o.responseText;
+     sform.action = moodle_cfg.wwwroot+'/repository/ws.php?action=search';
+     sform.innerHTML = data['form'];
      div2.appendChild(sform);
      el.appendChild(div1);
      el.appendChild(div2);
      document.body.appendChild(el);
+     var dlg_handler = function() {
+         var client_id=dlg_handler.client_id;
+         repository_client.fp[client_id].viewbar.set('disabled', false);
+         repository_client.loading(client_id, 'load');
+         YAHOO.util.Connect.setForm('fp-search-form', false, false);
+         this.cancel();
+         var url = moodle_cfg.wwwroot+'/repository/ws.php?action=search&env='+dlg_handler.env
+                +'&client_id='+client_id;
+         var trans = YAHOO.util.Connect.asyncRequest('POST', url,
+             repository_client.req_cb);
+     }
+     dlg_handler.client_id = data.client_id;
+     dlg_handler.env = fp.env;
      var dlg = new YAHOO.widget.Dialog("fp-search-dlg",{
         postmethod: 'async',
         draggable: true,
@@ -910,14 +965,12 @@ success: function(o) {
         visible : false,
         constraintoviewport : true,
         buttons : [
-            { text:fp_lang.submit,handler: function() {
-               repository_client.viewbar.set('disabled', false); repository_client.loading('load');
-                YAHOO.util.Connect.setForm('fp-search-form', false, false);
-                this.cancel();
-                var trans = YAHOO.util.Connect.asyncRequest('POST',
-                    '$CFG->httpswwwroot/repository/ws.php?action=search&env='+repository_client.env, repository_client.req_cb);
-                },isDefault:true},
-            {text:fp_lang.cancel,handler:function() {this.cancel()}}
+        {
+            text:fp_lang.submit,
+            handler: dlg_handler,
+            isDefault:true
+        },
+        {text:fp_lang.cancel,handler:function(){this.cancel()}}
         ]
     });
     dlg.render();
index b20007c1d7c1503bcffb0f11db55d8a2bc1a6e96..78be689e4844138897d94a9c31dc26ddd6703157 100755 (executable)
@@ -7,19 +7,16 @@
  * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
  */
 
-/**
- *
- */
 class repository_upload extends repository {
 
     /**
      *
-     * @global <type> $SESSION
-     * @global <type> $action
-     * @global <type> $CFG
-     * @param <type> $repositoryid
-     * @param <type> $context
-     * @param <type> $options
+     * @global object $SESSION
+     * @global string $action
+     * @global object $CFG
+     * @param int $repositoryid
+     * @param object $context
+     * @param array $options
      */
     public function __construct($repositoryid, $context = SITEID, $options = array()){
         global $SESSION, $action, $CFG;
@@ -33,9 +30,9 @@ class repository_upload extends repository {
 
     /**
      *
-     * @global <type> $SESSION
-     * @param <type> $ajax
-     * @return <type>
+     * @global object $SESSION
+     * @param boolean $ajax
+     * @return mixed
      */
     public function print_login($ajax = true) {
         global $SESSION;
@@ -44,11 +41,11 @@ class repository_upload extends repository {
 
     /**
      *
-     * @global <type> $CFG
-     * @global <type> $action
-     * @param <type> $path
-     * @param <type> $search
-     * @return <type>
+     * @global object $CFG
+     * @global string $action
+     * @param mixed $path
+     * @param string $search
+     * @return array
      */
     public function get_listing($path='', $page='') {
         global $CFG, $action;
@@ -69,22 +66,7 @@ class repository_upload extends repository {
 
     /**
      *
-     */
-    public function print_listing() {
-         // will be used in non-javascript file picker
-    }
-
-    /**
-     *
-     * @return <type>
-     */
-    public function print_search() {
-        return true;
-    }
-
-    /**
-     *
-     * @return <type>
+     * @return string
      */
     public function get_name(){
         return get_string('repositoryname', 'repository_upload');;
index a653dad2fb9dc10a537e4d05d3a2c4271f6944dd..cf028e37dacd7f87f7606e24e8db69aff80ac2bd 100644 (file)
@@ -159,7 +159,9 @@ EOD;
             echo json_encode($logout);
             break;
         case 'searchform':
-            $repo->print_search();
+            $search_form['form'] = $repo->print_search();
+            $search_form['client_id'] = $client_id;
+            echo json_encode($search_form);
             break;
         case 'search':
             try {