]> git.mjollnir.org Git - moodle.git/commitdiff
"MDL-13766, improve search form in file picker, improve error handing"
authordongsheng <dongsheng>
Thu, 25 Jun 2009 04:12:43 +0000 (04:12 +0000)
committerdongsheng <dongsheng>
Thu, 25 Jun 2009 04:12:43 +0000 (04:12 +0000)
repository/flickr_public/repository.class.php
repository/lib.php
repository/local/repository.class.php
repository/picasa/repository.class.php
repository/repository.css
repository/repository.src.js
repository/ws.php

index 8aeb95d05c355e3fab691b9700ace823ddcff500..468535e0c334e5e251497b388a634d1bde7653ee 100644 (file)
@@ -208,6 +208,7 @@ class repository_flickr_public extends repository {
      */
     public function search($search_text) {
         global $SESSION;
+        $ret = array();
         if (!empty($this->flickr_account)) {
             $people = $this->flickr->people_findByEmail($this->flickr_account);
             $this->nsid = $people['nsid'];
@@ -218,6 +219,11 @@ class repository_flickr_public extends repository {
         }
         if (empty($this->nsid)) {
             $this->nsid = null;
+            // user specify a flickr account, but it is not valid
+            if (!empty($this->flickr_account) or !empty($SESSION->{$this->sess_account})) {
+                $ret['e'] = get_string('invalidemail', 'repository_flickr_public');
+                return $ret;
+            }
         }
         $is_paging = optional_param('search_paging', '', PARAM_RAW);
         if (!empty($is_paging)) {
@@ -270,7 +276,6 @@ class repository_flickr_public extends repository {
                 )
             );
         }
-        $ret = array();
         $ret['total'] = $photos['total'];
         $ret['perpage'] = $photos['perpage'];
         if (empty($photos)) {
@@ -326,8 +331,10 @@ class repository_flickr_public extends repository {
                     $format = 'jpg';
                 }
                 $format = '.'.$format;
-                // append extensions to the files
                 if (substr($p['title'], strlen($p['title'])-strlen($format)) != $format) {
+                    // append author id
+                    $p['title'] .= '-'.$p['owner'];
+                    // append file extension
                     $p['title'] .= $format; 
                 }
                 $ret['list'][] = array('title'=>$p['title'], 'source'=>$p['id'],
@@ -375,6 +382,10 @@ class repository_flickr_public extends repository {
         $c = new curl;
         $c->download(array(array('url'=>$url, 'file'=>$fp)));
 
+        $watermark = get_config('flickr_public', 'watermark');
+        if (!empty($watermark)) {
+            // process watermark
+        }
         return $path;
     }
 
@@ -405,8 +416,13 @@ class repository_flickr_public extends repository {
             $api_key = '';
         }
         $strrequired = get_string('required');
+
+        $mform->addElement('checkbox', 'watermark', get_string('watermark', 'repository_flickr_public'));
+
         $mform->addElement('text', 'api_key', get_string('apikey', 'repository_flickr_public'), array('value'=>$api_key,'size' => '40'));
         $mform->addRule('api_key', $strrequired, 'required', null, 'client');
+
+
         $mform->addElement('static', null, '',  get_string('information','repository_flickr_public'));
     }
 
@@ -415,7 +431,7 @@ class repository_flickr_public extends repository {
      * @return <type>
      */
     public static function get_type_option_names() {
-        return array('api_key');
+        return array('api_key', 'watermark');
     }
 
     /**
index c0fc1f93c8a7f9db534b8b9afbc501cc66545ce6..350941fb9289deee93082ed1d8244733a1c9d451 100644 (file)
@@ -1482,7 +1482,7 @@ abstract class repository {
      * Show the search screen, if required
      * @return null
      */
-    public function print_search() {
+    public function print_search($client_id) {
         $str = '';
         $str .= '<input type="hidden" name="repo_id" value="'.$this->id.'" />';
         $str .= '<input type="hidden" name="ctx_id" value="'.$this->context->id.'" />';
@@ -1783,6 +1783,7 @@ function repository_get_client($context, $id = '',  $accepted_filetypes = '*', $
         $lang['download']  = get_string('downloadsucc', 'repository');
         $lang['date']      = get_string('date', 'repository').': ';
         $lang['error']     = get_string('error', 'repository');
+        $lang['emptylist'] = get_string('emptylist', 'repository');
         $lang['filenotnull'] = get_string('filenotnull', 'repository');
         $lang['federatedsearch'] = get_string('federatedsearch', 'repository');
         $lang['help']      = get_string('help');
index d94b03dfa260a31cd14ddbc391314809bbb37443..5461647c9bbdc852a5e2d1f35a1e6523171d670c 100755 (executable)
@@ -49,6 +49,7 @@ class repository_local extends repository {
         global $CFG, $USER;
         $ret = array();
         $ret['dynload'] = true;
+        $ret['nosearch'] = true;
         $list = array();
 
         // list draft files
index c325e41707b3a92589f92a4cb6ff98a02cdbceb4..629b820f9cbf211a4b237f44c92057c085c78642 100644 (file)
@@ -22,6 +22,7 @@ class repository_picasa extends repository {
             $gauth = new google_authsub(false, $googletoken); // will throw exception if fails
             google_picasa::set_sesskey($gauth->get_sessiontoken(), $USER->id);
         }
+        $this->check_login();
     }
 
     public function check_login() {
index 71a4c20ef23362e2e95cda974292b53ca91676ed..75146effcfb38d03f08f557134c56a85b9298c8b 100644 (file)
 .fp-grid p{margin:0;padding:0;background: #FFFFCC}
 .fp-grid .label{height:48px;text-align:center}
 .fp-grid span{color:gray}
+.fp-error {padding: 2em 0; margin: 3em 5px;text-align:center;background: #FFBBBB}
+/* file picker search dialog */
+div.bd{text-align:left}
 
 
 /* TODO: Fix IE6 somehow
 .yui-skin-sam .yui-panel .hd{}
-*/
\ No newline at end of file
+*/
index ea55965f6c4cc20e673cb3a5caf43b1702ee7f40..d802a5b7a271424a145cc5fefbc6845cce1e140c 100644 (file)
@@ -263,7 +263,7 @@ repository_client.req_cb = {
          repo.viewbar.set('disabled', false);
          var panel = new YAHOO.util.Element('panel-'+data.client_id);
          if(data && data.e) {
-             panel.get('element').innerHTML = data.e;
+             panel.get('element').innerHTML = '<div class="fp-error">'+data.e+'</div>';
              return;
          }
          // save data
@@ -339,7 +339,7 @@ repository_client.print_login = function(id, data) {
                 field_id = ' id="'+login[k].id+'"';
             }
             if (login[k].label) {
-                str += '<td align="right"><label'+label_id+'>'+login[k].label+'</label> </td>';
+                str += '<td align="right" valign="top"><label'+label_id+'>'+login[k].label+'</label> </td>';
             } else {
                 str += '<td></td>';
             }
@@ -834,6 +834,9 @@ repository_client.view_as_icons = function(client_id, data) {
         }
         count++;
     }
+    if (list.length == 0) {
+        panel.innerHTML = '<div class="fp-error">'+fp_lang.emptylist+'</div>';
+    }
     container.appendChild(panel);
     repository_client.print_footer(client_id);
 }
@@ -1099,23 +1102,23 @@ success: function(o) {
      var fp = repository_client.fp[data.client_id];
      if(el) {
          el.innerHTML = '';
-     } else {
-         var el = document.createElement('DIV');
-         el.id = 'fp-search-dlg';
+         el.parentNode.removeChild(el);
      }
-     var div1 = document.createElement('DIV');
-     div1.className = 'hd';
-     div1.innerHTML = fp_lang.searching+"\"" + repository_listing[data.client_id][fp.fs.repo_id].name + '"';
-     var div2 = document.createElement('DIV');
-     div2.className = 'bd';
+     var el = document.createElement('DIV');
+     el.id = 'fp-search-dlg';
+     var dlg_title = document.createElement('DIV');
+     dlg_title.className = 'hd';
+     dlg_title.innerHTML = fp_lang.searching+"\"" + repository_listing[data.client_id][fp.fs.repo_id].name + '"';
+     var dlg_body = document.createElement('DIV');
+     dlg_body.className = 'bd';
      var sform = document.createElement('FORM');
      sform.method = 'POST';
      sform.id = "fp-search-form";
      sform.action = moodle_cfg.wwwroot+'/repository/ws.php?action=search';
      sform.innerHTML = data['form'];
-     div2.appendChild(sform);
-     el.appendChild(div1);
-     el.appendChild(div2);
+     dlg_body.appendChild(sform);
+     el.appendChild(dlg_title);
+     el.appendChild(dlg_body);
      document.body.appendChild(el);
      var dlg_handler = function() {
          var client_id=dlg_handler.client_id;
@@ -1144,7 +1147,7 @@ success: function(o) {
             handler: dlg_handler,
             isDefault:true
         },
-        {text:fp_lang.cancel,handler:function(){this.cancel()}}
+        {text:fp_lang.cancel,handler:function(){this.destroy()}}
         ]
     });
     dlg.render();
index 37198f4d946b4be02fecedbede8edb949b861116..f711bc8d2464ccccbedf760e785bc6c297557b78 100644 (file)
@@ -5,6 +5,7 @@
     require_once('../config.php');
     require_once('../lib/filelib.php');
     require_once('lib.php');
+    require_login();
 
 /// Parameters
     $page  = optional_param('page', '', PARAM_RAW);           // page
         // If Moodle is working on HTTPS mode, then we are not allowed to access
         // parent window, in this case, we need to alert user to refresh the repository
         // manually.
+        $strhttpsbug = get_string('cannotaccessparentwin', 'repository');
+        $strrefreshnonjs = get_string('refreshnonjsfilepicker', 'repository');
         $js  =<<<EOD
 <html><head>
 <script type="text/javascript">
@@ -127,12 +130,12 @@ if(window.opener){
     window.opener.repository_callback($repo_id);
     window.close();
 } else {
-    alert("If parent window is on HTTPS, then we are not allowed to access window.opener object, so we cannot refresh the repository for you automatically, but we already got your session, just go back to file picker and select the repository again, it should work now.");
+    alert("{$strhttpsbug }");
 }
 </script>
 <body>
 <noscript>
-Close this window and refresh file picker.
+{$strrefreshnonjs}
 </noscript>
 </body>
 </html>
@@ -178,7 +181,7 @@ EOD;
             echo json_encode($logout);
             break;
         case 'searchform':
-            $search_form['form'] = $repo->print_search();
+            $search_form['form'] = $repo->print_search($client_id);
             $search_form['client_id'] = $client_id;
             echo json_encode($search_form);
             break;