From 1420162a3a752c22c136f4946b63a38f4077e425 Mon Sep 17 00:00:00 2001 From: samhemelryk Date: Mon, 6 Jul 2009 03:16:17 +0000 Subject: [PATCH] form-filemanager MDL-16706 Removed inline JS and added PAGE methods --- lib/form/editor.php | 34 +++++++------------- lib/form/filemanager.js | 42 +++++++++++++++++++++++++ lib/form/filemanager.php | 67 ++++++---------------------------------- 3 files changed, 63 insertions(+), 80 deletions(-) create mode 100644 lib/form/filemanager.js diff --git a/lib/form/editor.php b/lib/form/editor.php index d891c54740..4f78544f80 100644 --- a/lib/form/editor.php +++ b/lib/form/editor.php @@ -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 .= 'Error'; // TODO: localise, fix styles, etc. $str .= ''; - require_once($CFG->dirroot.'/repository/lib.php'); - $client_id = uniqid(); - $repojs = repository_get_client($ctx, $client_id, array('image', 'video', 'media'), '*'); - - $str .= $repojs; - $str .= << -id2clientid['$id'] = '$client_id'; -id2itemid['$id'] = '$draftitemid'; - -EOD; - - if ($editor->supports_repositories()) { - $str .= << -// - -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 index 0000000000..5e5e552bf2 --- /dev/null +++ b/lib/form/filemanager.js @@ -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 = '
  • '+obj['file']+' '; + html += ''; + html += '
  • '; + 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 diff --git a/lib/form/filemanager.php b/lib/form/filemanager.php index defa26fb2f..1d2198962b 100644 --- a/lib/form/filemanager.php +++ b/lib/form/filemanager.php @@ -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; + $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 .= << -//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 = '
  • '+obj['file']+' '; - html += '';; - html += '
  • '; - 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; -} -//]]> - - -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; -- 2.39.5