]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-15906 file picker improvements - it now keeps current file after failed server...
authorskodak <skodak>
Thu, 11 Sep 2008 23:11:24 +0000 (23:11 +0000)
committerskodak <skodak>
Thu, 11 Sep 2008 23:11:24 +0000 (23:11 +0000)
lib/form/filepicker.php

index 88f6c4452c44df90eaad3612f9df3038ecb140c9..1efc69dffb7e164a1ffaaf2e4ce123b032e1223b 100644 (file)
@@ -12,34 +12,33 @@ require_once(dirname(dirname(dirname(__FILE__))) . '/repository/lib.php');
  * @since        Moodle 2.0
  * @access       public
  */
-class MoodleQuickForm_filepicker extends HTML_QuickForm_button {
+class MoodleQuickForm_filepicker extends HTML_QuickForm_input {
     var $_helpbutton='';
 
-    function MoodleQuickForm_filepicker($elementName=null, $value=null, $attributes=null) {
-        HTML_QuickForm_input::HTML_QuickForm_input($elementName, $value, $attributes); // Set label cause button doesn't
-        parent::HTML_QuickForm_button($elementName, $value, $attributes);
+    function MoodleQuickForm_filepicker($elementName=null, $elementLabel=null, $attributes=null) {
+        parent::HTML_QuickForm_input($elementName, $elementLabel, $attributes);
     }
 
-    function setHelpButton($helpbuttonargs, $function='helpbutton'){
-        if (!is_array($helpbuttonargs)){
-            $helpbuttonargs=array($helpbuttonargs);
-        }else{
-            $helpbuttonargs=$helpbuttonargs;
+    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 ;
+            $defaultargs = array('', '', 'moodle', true, false, '', true);
+            $helpbuttonargs = $helpbuttonargs + $defaultargs ;
         }
         $this->_helpbutton=call_user_func_array($function, $helpbuttonargs);
     }
 
-    function getHelpButton(){
+    function getHelpButton() {
         return $this->_helpbutton;
     }
 
-    function getElementTemplateType(){
+    function getElementTemplateType() {
         if ($this->_flagFrozen){
             return 'nodisplay';
         } else {
@@ -48,47 +47,56 @@ class MoodleQuickForm_filepicker extends HTML_QuickForm_button {
     }
 
     function toHtml() {
-        global $CFG, $COURSE;
+        global $CFG, $COURSE, $USER;
+
         if ($this->_flagFrozen) {
             return $this->getFrozenHtml();
-        } else {
-            $currentvalue = $this->getValue();
+        }
 
-            $strsaved = get_string('filesaved', 'repository');
-            if (empty($COURSE->context)) {
-                $context = get_context_instance(CONTEXT_SYSTEM);
-            } else {
-                $context = $COURSE->context;
+        $currentfile = '';
+        $draftvalue  = '';
+        if ($draftid = (int)$this->getValue()) {
+            $fs = get_file_storage();
+            $usercontext = get_context_instance(CONTEXT_USER, $USER->id);
+            if ($files = $fs->get_area_files($usercontext->id, 'user_draft', $draftid, '', false)) {
+                $file = reset($files);
+                $currentfile = $file->get_filename();
+                $draftvalue = 'value="'.$draftid.'"';
             }
-            $repository_info = repository_get_client($context);
-            $suffix = $repository_info['suffix'];
+        }
+        $strsaved = get_string('filesaved', 'repository');
+        if ($COURSE->id == SITEID) {
+            $context = get_context_instance(CONTEXT_SYSTEM);
+        } else {
+            $context = get_context_instance(CONTEXT_COURSE, $COURSE->id);
+        }
+        $repository_info = repository_get_client($context);
+        $suffix = $repository_info['suffix'];
 
-            $id     = $this->_attributes['id'];
-            $elname = $this->_attributes['name'];
+        $id     = $this->_attributes['id'];
+        $elname = $this->_attributes['name'];
 
-            $str = $this->_getTabs();
-            $str .= '<input type="hidden" value="'.$currentvalue.'" name="'.$this->_attributes['name'].'" id="'.$this->_attributes['id'].'_'.$suffix.'" />';
-            $id = $this->_attributes['id'];
+        $str = $this->_getTabs();
+        $str .= '<input type="hidden" name="'.$elname.'" id="'.$id.'" '.$draftvalue.' />';
 
-            $str .= <<<EOD
+        $str .= <<<EOD
 <script type="text/javascript">
-function updatefile_$suffix(str){
+function updatefile_$suffix(str) {
     document.getElementById('repo_info_$suffix').innerHTML = str;
 }
-function callpicker_$suffix(){
+function callpicker_$suffix() {
     document.body.className += ' yui-skin-sam';
     var picker = document.createElement('DIV');
     picker.id = 'file-picker-$suffix';
-    picker.className = "file-picker";
+    picker.className = 'file-picker';
     document.body.appendChild(picker);
-    var el=document.getElementById('${id}_${suffix}');
-    openpicker_$suffix({"env":"form", 'target':el, 'callback':updatefile_$suffix})
+    var el=document.getElementById('$id');
+    openpicker_$suffix({'env':'form', 'target':el, 'callback':updatefile_$suffix})
 }
 </script>
 EOD;
-            $str .= '<input value ="'.get_string('openpicker', 'repository').'" type="button" onclick=\'callpicker_'.$suffix.'()\' />'.'<span id="repo_info_'.$suffix.'" class="notifysuccess">'.$currentvalue.'</span>'.$repository_info['css'].$repository_info['js'];
-            return $str;
-        }
+        $str .= '<input value="'.get_string('openpicker', 'repository').'" type="button" onclick=\'callpicker_'.$suffix.'()\' />'.'<span id="repo_info_'.$suffix.'" class="notifysuccess">'.$currentfile.'</span>'.$repository_info['css'].$repository_info['js'];
+        return $str;
     }
 
     function exportValue(&$submitValues, $assoc = false) {