From: Dongsheng Cai <unoter@gmail.com> Date: Mon, 2 Nov 2009 07:18:38 +0000 (+0000) Subject: "MDL-20602, support FILE_INTERNAL and FILE_EXTERNAL in moodle form elements" X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=c2e2d8e3aa279e059b246380d2da60f9550fa2dc;p=moodle.git "MDL-20602, support FILE_INTERNAL and FILE_EXTERNAL in moodle form elements" --- diff --git a/lib/form/editor.php b/lib/form/editor.php index 0eae06bb1a..98000aa6de 100644 --- a/lib/form/editor.php +++ b/lib/form/editor.php @@ -179,7 +179,7 @@ class MoodleQuickForm_editor extends HTML_QuickForm_element { require_once($CFG->dirroot.'/repository/lib.php'); $client_id = uniqid(); - $repojs = repository_get_client($ctx, $client_id, array('image', 'video', 'media'), '*'); + $repojs = repository_get_client($ctx, $client_id, array('image', 'video', 'media'), (FILE_EXTERNAL | FILE_INTERNAL)); $str .= $repojs; $str .= $PAGE->requires->js_function_call('id2_add_clientid', array($id, $client_id))->asap(); diff --git a/lib/form/filemanager.php b/lib/form/filemanager.php index 35e1b90f43..1625cd7578 100644 --- a/lib/form/filemanager.php +++ b/lib/form/filemanager.php @@ -30,7 +30,7 @@ require_once($CFG->dirroot.'/lib/filelib.php'); class MoodleQuickForm_filemanager extends HTML_QuickForm_element { public $_helpbutton = ''; - protected $_options = array('mainfile'=>'', 'subdirs'=>0, 'maxbytes'=>0, 'maxfiles'=>-1, 'filetypes'=>'*', 'returnvalue'=>'*'); + protected $_options = array('mainfile'=>'', 'subdirs'=>0, 'maxbytes'=>0, 'maxfiles'=>-1, 'filetypes'=>'*', 'returntypes'=>FILE_INTERNAL); function MoodleQuickForm_filemanager($elementName=null, $elementLabel=null, $attributes=null, $options=null) { global $CFG, $PAGE; @@ -189,7 +189,7 @@ class MoodleQuickForm_filemanager extends HTML_QuickForm_element { $client_id = uniqid(); // Generate file picker - $repojs = repository_get_client($context, $client_id, $this->_options['filetypes'], $this->_options['returnvalue']); + $repojs = repository_get_client($context, $client_id, $this->_options['filetypes'], $this->_options['returntypes']); $result = new stdclass; $options = file_get_draft_area_files($draftitemid); diff --git a/lib/form/filepicker.php b/lib/form/filepicker.php index 8580ff498d..e7513fcc1c 100644 --- a/lib/form/filepicker.php +++ b/lib/form/filepicker.php @@ -15,7 +15,7 @@ require_once($CFG->dirroot.'/repository/lib.php'); */ class MoodleQuickForm_filepicker extends HTML_QuickForm_input { public $_helpbutton = ''; - protected $_options = array('maxbytes'=>0, 'filetypes'=>'*', 'returnvalue'=>'*'); + protected $_options = array('maxbytes'=>0, 'filetypes'=>'*', 'returntypes'=>FILE_INTERNAL); function MoodleQuickForm_filepicker($elementName=null, $elementLabel=null, $attributes=null, $options=null) { global $CFG; @@ -93,7 +93,7 @@ class MoodleQuickForm_filepicker extends HTML_QuickForm_input { $context = get_context_instance(CONTEXT_COURSE, $COURSE->id); } $client_id = uniqid(); - $repojs = repository_get_client($context, $client_id, $this->_options['filetypes'], $this->_options['returnvalue']); + $repojs = repository_get_client($context, $client_id, $this->_options['filetypes'], $this->_options['returntypes']); $PAGE->requires->data_for_js('filepicker', array('maxbytes'=>$this->_options['maxbytes'],'maxfiles'=>1)); $PAGE->requires->js('lib/form/filepicker.js'); diff --git a/lib/form/texturl.js b/lib/form/texturl.js deleted file mode 100644 index 84ee2112f5..0000000000 --- a/lib/form/texturl.js +++ /dev/null @@ -1,19 +0,0 @@ -function texturl_callback(params) { -} -function texturl_launch_filepicker(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(id); - var params = {}; - params.env = 'texturl'; - params.itemid = itemid; - params.maxbytes = -1; - params.maxfiles = -1; - params.savepath = '/'; - params.target = el; - params.callback = texturl_callback; - var fp = open_filepicker(client_id, params); - return false; -} diff --git a/lib/form/texturl.php b/lib/form/texturl.php deleted file mode 100755 index f7d5dc0798..0000000000 --- a/lib/form/texturl.php +++ /dev/null @@ -1,128 +0,0 @@ -<?php -require_once("HTML/QuickForm/text.php"); - -/** - * HTML class for a texturl type element - * - * @author Jamie Pratt - * @access public - */ -class MoodleQuickForm_texturl extends HTML_QuickForm_text{ - /** - * html for help button, if empty then no help - * - * @var string - */ - var $_helpbutton=''; - var $_hiddenLabel=false; - - function MoodleQuickForm_texturl($elementName=null, $elementLabel=null, $attributes=null, $options=null) { - global $CFG; - require_once("$CFG->dirroot/repository/lib.php"); - $options = (array)$options; - foreach ($options as $name=>$value) { - $this->_options[$name] = $value; - } - parent::HTML_QuickForm_text($elementName, $elementLabel, $attributes); - repository_head_setup(); - } - - function setHiddenLabel($hiddenLabel){ - $this->_hiddenLabel = $hiddenLabel; - } - function toHtml(){ - global $CFG, $COURSE, $USER, $PAGE; - $strsaved = get_string('filesaved', 'repository'); - $straddlink = get_string('choosealink', 'repository'); - if ($COURSE->id == SITEID) { - $context = get_context_instance(CONTEXT_SYSTEM); - } else { - $context = get_context_instance(CONTEXT_COURSE, $COURSE->id); - } - $client_id = uniqid(); - - $repojs = repository_get_client($context, $client_id, '*', 'link'); - - $PAGE->requires->js('lib/form/texturl.js'); - - $id = $this->_attributes['id']; - $elname = $this->_attributes['name']; - - $str = $repojs; - if ($this->_hiddenLabel) { - $this->_generateId(); - $str .= '<label class="accesshide" for="'.$this->getAttribute('id').'" >'. - $this->getLabel().'</label>'.parent::toHtml(); - } else { - $str .= parent::toHtml(); - } - $str .= <<<EOD -<button id="filepicker-btn-{$client_id}" style="display:none" onclick="return texturl_launch_filepicker('$id', '$client_id', 0)">$straddlink</button> -EOD; - // hide the button if javascript is not enabled - $str .= $PAGE->requires->js_function_call('show_item', array("filepicker-btn-{$client_id}"))->asap(); - return $str; - } - /** - * Automatically generates and assigns an 'id' attribute for the element. - * - * Currently used to ensure that labels work on radio buttons and - * checkboxes. Per idea of Alexander Radivanovich. - * Overriden in moodleforms to remove qf_ prefix. - * - * @access private - * @return void - */ - function _generateId() - { - static $idx = 1; - - if (!$this->getAttribute('id')) { - $this->updateAttributes(array('id' => 'id_'. substr(md5(microtime() . $idx++), 0, 6))); - } - } // end func _generateId - /** - * set html for help button - * - * @access public - * @param array $help array of arguments to make a help button - * @param string $function function name to call to get html - */ - function setHelpButton($helpbuttonargs, $function='helpbutton'){ - if (!is_array($helpbuttonargs)){ - $helpbuttonargs=array($helpbuttonargs); - }else{ - $helpbuttonargs=$helpbuttonargs; - } - //we do this to to return html instead of printing it - //without having to specify it in every call to make a button. - if ('helpbutton' == $function){ - $defaultargs=array('', '', 'moodle', true, false, '', true); - $helpbuttonargs=$helpbuttonargs + $defaultargs ; - } - $this->_helpbutton=call_user_func_array($function, $helpbuttonargs); - } - /** - * get html for help button - * - * @access public - * @return string html for help button - */ - function getHelpButton(){ - return $this->_helpbutton; - } - /** - * Slightly different container template when frozen. Don't want to use a label tag - * with a for attribute in that case for the element label but instead use a div. - * Templates are defined in renderer constructor. - * - * @return string - */ - function getElementTemplateType(){ - if ($this->_flagFrozen){ - return 'static'; - } else { - return 'default'; - } - } -} diff --git a/lib/form/url.js b/lib/form/url.js index b5aecf390c..28cdd7271b 100644 --- a/lib/form/url.js +++ b/lib/form/url.js @@ -7,7 +7,7 @@ function url_launch_filepicker(id, client_id, itemid) { document.body.appendChild(picker); var el=document.getElementById(id); var params = {}; - params.env = 'texturl'; + params.env = 'url'; params.itemid = itemid; params.maxbytes = -1; params.maxfiles = -1; diff --git a/lib/form/url.php b/lib/form/url.php index 30dab1ae7b..7d3ace9dfc 100755 --- a/lib/form/url.php +++ b/lib/form/url.php @@ -58,7 +58,7 @@ class MoodleQuickForm_url extends HTML_QuickForm_text{ } $client_id = uniqid(); - $repojs = repository_get_client($context, $client_id, '*', 'link'); + $repojs = repository_get_client($context, $client_id, '*', FILE_EXTERNAL); $PAGE->requires->js('lib/form/url.js'); $str .= $repojs;