]> git.mjollnir.org Git - moodle.git/commitdiff
"MDL-17391, enable repository filter in html editor"
authordongsheng <dongsheng>
Mon, 8 Dec 2008 06:53:58 +0000 (06:53 +0000)
committerdongsheng <dongsheng>
Mon, 8 Dec 2008 06:53:58 +0000 (06:53 +0000)
lib/editor/tinymce/tinymce.js.php
lib/filelib.php
repository/javascript.php
repository/lib.php

index 61fdaf808ba519da87c9f6d79f0e5f35acd402a1..8ef02b279c787912e2827c4c2b6fac727eb23db5 100644 (file)
@@ -99,7 +99,7 @@ $output .= <<<EOF
         picker.id = 'file-picker-'+suffix;
         document.body.appendChild(picker);
         var el = win.document.getElementById(field_name);
-        eval('openpicker_'+suffix+'({"env":"editor","target":el, "mimetype":type})');
+        eval('openpicker_'+suffix+'({"env":"editor","target":el, "filetype":type})');
     }
 EOF;
 
index 91f3e0a3e6ec10de9438589df5ab0f0f8a2f2b01..0df41dcc533056e35154ab9c7874c22159dc89c6 100644 (file)
@@ -2087,7 +2087,8 @@ class file_type_to_ext {
 
     public function get_file_ext($types) {
         $this->result = array();
-        if (in_array('*', $types)) {
+        if ((is_array($types) && in_array('*', $types)) ||
+            $types == '*') {
             return '*';
         }
         foreach ($types as $key=>$value){
index 33ed7bb2c5bdd2dee62f8230c73b3dc73b829425..bf123c68c6ae98c67e4082ef4ed43e517385023e 100644 (file)
@@ -122,6 +122,16 @@ EOD;
     $js .= <<<EOD
 <script type="text/javascript">
 //<![CDATA[
+//
+Array.prototype.in_array = function(p_val) {
+    for(var i = 0, l = this.length; i < l; i++) {
+        if(this[i] == p_val) {
+            return true;
+        }
+    }
+    return false;
+}
+
 var active_instance = null;
 function repository_callback(id) {
     active_instance.req(id, '', 0);
@@ -278,26 +288,36 @@ this.create_picker = function() {
         });
         for(var i in _client.repos) {
             var repo = _client.repos[i];
-            var li = document.createElement('li');
-            li.id = 'repo-$suffix-'+repo.id;
-            var icon = document.createElement('img');
-            icon.src = repo.icon;
-            icon.width = '16';
-            icon.height = '16';
-            var link = document.createElement('a');
-            link.href = '###';
-            link.id = 'repo-call-$suffix-'+repo.id;
-            link.appendChild(icon);
-            link.className = 'fp-repo-name';
-            link.onclick = function() {
-                var re = /repo-call-$suffix-(\d+)/i;
-                var id = this.id.match(re);
-                repository_client_$suffix.req(id[1], '', 0);
+            var support = false;
+            if(repo.filetype!='*'){
+                for (var j in repo.filetype){
+                    if(repository_client_$suffix.filetype.in_array(repo.filetype[j])){
+                        support = true;
+                    }
+                }
+            }
+            if(repo.filetype == '*' || support){
+                var li = document.createElement('li');
+                li.id = 'repo-$suffix-'+repo.id;
+                var icon = document.createElement('img');
+                icon.src = repo.icon;
+                icon.width = '16';
+                icon.height = '16';
+                var link = document.createElement('a');
+                link.href = '###';
+                link.id = 'repo-call-$suffix-'+repo.id;
+                link.appendChild(icon);
+                link.className = 'fp-repo-name';
+                link.onclick = function() {
+                    var re = /repo-call-$suffix-(\d+)/i;
+                    var id = this.id.match(re);
+                    repository_client_$suffix.req(id[1], '', 0);
+                }
+                link.innerHTML += ' '+repo.name;
+                li.appendChild(link);
+                this.appendChild(li);
+                repo = null;
             }
-            link.innerHTML += ' '+repo.name;
-            li.appendChild(link);
-            this.appendChild(li);
-            repo = null;
         }
     });
 }
@@ -985,7 +1005,7 @@ if (is_array($filetypes) && in_array('*', $filetypes)) {
     $filetypes = '*';
 }
 $repos = repository::get_instances(array($user_context, $context, get_system_context()), null, true, null, $filetypes, $returnvalue);
-$js .= "\r\n".'repository_client_'.$suffix.'repos=[];'."\r\n";
+$js .= "\r\n".'repository_client_'.$suffix.'.repos=[];'."\r\n";
 foreach ($repos as $repo) {
     $info = $repo->ajax_info();
     $js .= "\r\n";
@@ -993,6 +1013,9 @@ foreach ($repos as $repo) {
 }
 $js .= "\r\n";
 
+$ft = new file_type_to_ext();
+$image_file_ext = json_encode($ft->get_file_ext(array('image')));
+$video_file_ext = json_encode($ft->get_file_ext(array('video')));
 $js .= <<<EOD
 function openpicker_$suffix(params) {
     if(!repository_client_$suffix.instance) {
@@ -1001,10 +1024,14 @@ function openpicker_$suffix(params) {
         if(params.itemid){
             repository_client_$suffix.itemid = params.itemid;
         }
-        if(params.mimetype) {
-            repository_client_$suffix.mimetype = params.mimetype;
+        if(params.filetype) {
+            if(params.filetype == 'image') {
+                repository_client_$suffix.filetype = $image_file_ext;
+            } else if(params.filetype == 'video' || params.filetype== 'media') {
+                repository_client_$suffix.filetype = $video_file_ext;
+            }
         } else {
-            repository_client_$suffix.mimetype = '*';
+            repository_client_$suffix.filetype = '*';
         }
         repository_client_$suffix.instance = new repository_client_$suffix();
         repository_client_$suffix.instance.create_picker();
index 30321bf50bec63d42344f91406268af96c662635..b65fe9b9e1563aa6311c059424de001f4e36b042 100644 (file)
@@ -1268,11 +1268,13 @@ abstract class repository {
      */
     final public function ajax_info() {
         global $CFG;
+        $ft = new file_type_to_ext;
         $repo = new stdclass;
         $repo->id   = $this->id;
         $repo->name = $this->get_name();
         $repo->type = $this->options['type'];
         $repo->icon = $CFG->httpswwwroot.'/repository/'.$repo->type.'/icon.png';
+        $repo->filetype = $ft->get_file_ext($this->supported_filetypes());
         return $repo;
     }