]> git.mjollnir.org Git - moodle.git/commitdiff
form-filemanager MDL-16706 Removed inline JS and added PAGE methods
authorsamhemelryk <samhemelryk>
Mon, 6 Jul 2009 03:16:17 +0000 (03:16 +0000)
committersamhemelryk <samhemelryk>
Mon, 6 Jul 2009 03:16:17 +0000 (03:16 +0000)
lib/form/editor.php
lib/form/filemanager.js [new file with mode: 0644]
lib/form/filemanager.php

index d891c5474086d99d86db1c6fc5b0f4a0a0551f9b..4f78544f80f2369ad000630142faa6d8ec1667fe 100644 (file)
@@ -110,7 +110,7 @@ class MoodleQuickForm_editor extends HTML_QuickForm_element {
     }
 
     function toHtml() {
-        global $CFG, $COURSE;
+        global $CFG, $COURSE, $PAGE;
 
         if ($this->_flagFrozen) {
             return $this->getFrozenHtml();
@@ -174,28 +174,16 @@ class MoodleQuickForm_editor extends HTML_QuickForm_element {
             $str .= '<object type="text/html" data="'.$editorurl.'" height="160" width="600" style="border:1px solid #000">Error</object>'; // TODO: localise, fix styles, etc.
             $str .= '</div>';
 
-        require_once($CFG->dirroot.'/repository/lib.php');
-        $client_id = uniqid();
-        $repojs = repository_get_client($ctx, $client_id, array('image', 'video', 'media'), '*');
-
-        $str .= $repojs;
-        $str .= <<<EOD
-<script type="text/javascript">
-id2clientid['$id'] = '$client_id';
-id2itemid['$id']   = '$draftitemid';
-</script>
-EOD;
-
-        if ($editor->supports_repositories()) {
-            $str .= <<<EOD
-<script type="text/javascript">
-//<![CDATA[
-var fileman = document.getElementById("{$id}_filemanager");
-fileman.style.visibility = "hidden";
-fileman.style.height = "0";
-//]]>
-</script>
-EOD;
+            require_once($CFG->dirroot.'/repository/lib.php');
+            $client_id = uniqid();
+            $repojs = repository_get_client($ctx, $client_id, array('image', 'video', 'media'), '*');
+
+            $str .= $repojs;
+            $str .= $PAGE->requires->data_for_js('id2clientid', Array($id, $client_id))->asap();
+            $str .= $PAGE->requires->data_for_js('id2itemid', Array($id, $draftitemid))->asap();
+
+            if ($editor->supports_repositories()) {
+                $str .= $PAGE->requires->js_function_call('hide_item', Array("{$id}_filemanager"))->asap();
             }
         }
 
diff --git a/lib/form/filemanager.js b/lib/form/filemanager.js
new file mode 100644 (file)
index 0000000..5e5e552
--- /dev/null
@@ -0,0 +1,42 @@
+var selected_file = null;
+var rm_cb = {
+    success: function(o) {
+        if(o.responseText){
+            repository_client.files[o.responseText]--;
+            selected_file.parentNode.removeChild(selected_file);
+        }
+    }
+}
+function rm_file(id, name, context) {
+    if (confirm(filemanager.strdelete)) {
+        var trans = YAHOO.util.Connect.asyncRequest('POST',
+            moodle_cfg.wwwroot+'/repository/ws.php?action=delete&itemid='+id,
+                rm_cb,
+                'title='+name+'&client_id='+filemanager.clientid
+                );
+        selected_file = context.parentNode;
+    }
+}
+function fp_callback(obj) {
+    var list = document.getElementById('draftfiles-'+obj.client_id);
+    var html = '<li><a href="'+obj['url']+'"><img src="'+obj['icon']+'" class="icon" /> '+obj['file']+'</a> ';
+    html += '<a href="###" onclick=\'rm_file('+obj['id']+', "'+obj['file']+'", this)\'><img src="'+filemanager.deleteicon+'" class="iconsmall" /></a>';
+    html += '</li>';
+    list.innerHTML += html;
+}
+function callpicker(el_id, client_id, itemid) {
+    var picker = document.createElement('DIV');
+    picker.id = 'file-picker-'+client_id;
+    picker.className = 'file-picker';
+    document.body.appendChild(picker);
+    var el=document.getElementById(el_id);
+    var params = {};
+    params.env = 'filemanager';
+    params.maxbytes = filemanager.maxbytes;
+    params.maxfiles = filemanager.maxfiles;
+    params.itemid = itemid;
+    params.target = el;
+    params.callback = fp_callback;
+    var fp = open_filepicker(client_id, params);
+    return false;
+}
\ No newline at end of file
index defa26fb2f47e20a86fec1f6b2643bd50bb6f845..1d2198962b34d6c6e8d91e4bcc5c9a1c7ccef024 100644 (file)
@@ -128,7 +128,7 @@ class MoodleQuickForm_filemanager extends HTML_QuickForm_element {
     }
 
     function toHtml() {
-        global $CFG, $USER, $COURSE, $OUTPUT;
+        global $CFG, $USER, $COURSE, $PAGE, $OUTPUT;
         require_once("$CFG->dirroot/repository/lib.php");
 
         $strdelete  = get_string('confirmdeletefile', 'repository');
@@ -174,64 +174,17 @@ class MoodleQuickForm_filemanager extends HTML_QuickForm_element {
         $str .= <<<EOD
 <input value="$draftitemid" name="{$this->_attributes['name']}" type="hidden" />
 <a href="###" id="btnadd-{$client_id}" style="display:none" class="btnaddfile" onclick="return callpicker('$id', '$client_id', '$draftitemid')">$straddfile</a>
-<script type="text/javascript">
-//<![CDATA[
-document.getElementById('btnadd-{$client_id}').style.display="inline";
-//]]>
-</script>
 EOD;
+        $PAGE->requires->yui_lib('dom');
+        $PAGE->requires->js_function_call('YAHOO.util.Dom.setStyle', Array("btnadd-{$client_id}", 'display', 'inline'));
         if (empty($CFG->filemanagerjsloaded)) {
-            $str .= <<<EOD
-<script type="text/javascript">
-//<![CDATA[
-var selected_file = null;
-var rm_cb = {
-    success: function(o) {
-        if(o.responseText){
-            repository_client.files[o.responseText]--;
-            selected_file.parentNode.removeChild(selected_file);
-        }
-    }
-}
-function rm_file(id, name, context) {
-    if (confirm('$strdelete')) {
-        var trans = YAHOO.util.Connect.asyncRequest('POST',
-            '{$CFG->httpswwwroot}/repository/ws.php?action=delete&itemid='+id,
-                rm_cb,
-                'title='+name+'&client_id=$client_id'
-                );
-        selected_file = context.parentNode;
-    }
-}
-function fp_callback(obj) {
-    var list = document.getElementById('draftfiles-'+obj.client_id);
-    var html = '<li><a href="'+obj['url']+'"><img src="'+obj['icon']+'" class="icon" /> '+obj['file']+'</a> ';
-    html += '<a href="###" onclick=\'rm_file('+obj['id']+', "'+obj['file']+'", this)\'><img src="{$OUTPUT->old_icon_url('t/delete')}" class="iconsmall" /></a>';;
-    html += '</li>';
-    list.innerHTML += html;
-}
-function callpicker(el_id, client_id, itemid) {
-    var picker = document.createElement('DIV');
-    picker.id = 'file-picker-'+client_id;
-    picker.className = 'file-picker';
-    document.body.appendChild(picker);
-    var el=document.getElementById(el_id);
-    var params = {};
-    params.env = 'filemanager';
-    params.maxbytes = {$this->_options['maxbytes']};
-    params.maxfiles = {$this->_options['maxfiles']};
-    params.itemid = itemid;
-    params.target = el;
-    params.callback = fp_callback;
-    var fp = open_filepicker(client_id, params);
-    return false;
-}
-//]]>
-</script>
-<noscript>
-<object type="text/html" data="{$CFG->httpswwwroot}/repository/filepicker.php?action=embedded&amp;itemid={$draftitemid}&amp;ctx_id=$context->id" height="300" width="800" style="border:1px solid #000">Error</object>
-</noscript>
-EOD;
+            $jsvars = Array('clientid'   => $client_id,
+                            'strdelete'  => $strdelete,
+                            'maxbytes'   => $this->_options['maxbytes'],
+                            'maxfiles'   => $this->_options['maxfiles'],
+                            'deleteicon' => $OUTPUT->old_icon_url('t/delete'));
+            $str .= $PAGE->requires->data_for_js('filemanager', $jsvars)->asap();
+            $str .= $PAGE->requires->js('lib/form/filemanager.js')->asap();
             $CFG->filemanagerjsloaded = true;
         }
         return $str;