"Flickr_public plugin/MDL-18830, support license search for flickr_public"
authordongsheng <dongsheng>
Fri, 24 Apr 2009 04:54:47 +0000 (04:54 +0000)
committerdongsheng <dongsheng>
Fri, 24 Apr 2009 04:54:47 +0000 (04:54 +0000)
repository/flickr_public/repository.class.php
repository/repository.js

index 6e08c224bc099d7c310c2ac0154625eb00214c17..ecc07e62ee2d46bfe305f464b62fbdc81381bca4 100644 (file)
@@ -77,14 +77,22 @@ class repository_flickr_public extends repository {
 
         $account  = optional_param('flickr_account', '', PARAM_RAW);
         $fulltext = optional_param('flickr_fulltext', '', PARAM_RAW);
+        if (empty($fulltext)) {
+            $fulltext = optional_param('s', '', PARAM_RAW);
+        }
         $tag      = optional_param('flickr_tag', '', PARAM_RAW);
+        $license  = optional_param('flickr_license', '', PARAM_RAW);
+
         $this->sess_account = 'flickr_public_'.$this->id.'_account';
         $this->sess_tag     = 'flickr_public_'.$this->id.'_tag';
         $this->sess_text    = 'flickr_public_'.$this->id.'_text';
-        if (!empty($account) or !empty($fulltext) or !empty($tag)) {
-            $SESSION->{$this->sess_account} = $account;
+        $this->sess_license = 'flickr_public_'.$this->id.'_license';
+
+        if (!empty($account) or !empty($fulltext) or !empty($tag) or !empty($license)) {
             $SESSION->{$this->sess_tag}  = $tag;
             $SESSION->{$this->sess_text} = $fulltext;
+            $SESSION->{$this->sess_account} = $account;
+            $SESSION->{$this->sess_license} = $license;
         }
     }
 
@@ -122,7 +130,26 @@ class repository_flickr_public extends repository {
             $email_field->type = 'text';
             $email_field->name = 'flickr_account';
 
-            $ret['login'] = array($fulltext, $tag, $email_field);
+            $license = new stdclass;
+            $license->label = get_string('license', 'repository_flickr_public').': ';
+            $license->id    = 'flickr_license_type';
+            $license->type  = 'radio';
+            $license->name  = 'flickr_license';
+            // all -> all licenses
+            // cc  -> creative commons
+            // ccc -> reeative commons commercial
+            $license->value = implode('|', array('all', 1, 2, 3, 4, 5, 6));
+            $license->value_label = implode('|', array(
+                get_string('all', 'repository_flickr_public'),
+                get_string('by-nc-sa', 'repository_flickr_public'),
+                get_string('by-nc', 'repository_flickr_public'),
+                get_string('by-nc-nd', 'repository_flickr_public'),
+                get_string('by', 'repository_flickr_public'),
+                get_string('by-sa', 'repository_flickr_public'),
+                get_string('by-nd', 'repository_flickr_public')
+            ));
+
+            $ret['login'] = array($fulltext, $tag, $email_field, $license);
             $ret['login_btn_label'] = get_string('search');
             $ret['login_search_form'] = true;
             return $ret;
@@ -166,17 +193,34 @@ class repository_flickr_public extends repository {
             $page = 1;
         }
         if (!empty($SESSION->{$this->sess_tag}) or !empty($SESSION->{$this->sess_text}) 
-            or !empty($SESSION->{$this->sess_account}) 
-            or !empty($this->nsid)) {
-
-            $photos = $this->flickr->photos_search(array(
-                'tags'=>$SESSION->{$this->sess_tag},
-                'page'=>$page,
-                'per_page'=>24,
-                'user_id'=>$this->nsid,
-                'text'=>$SESSION->{$this->sess_text}));
+            or !empty($SESSION->{$this->sess_account}) or !empty($this->nsid))
+        {
+            if ( empty($SESSION->{$this->sess_license}) or $SESSION->{$this->sess_license}=='all') {
+                $photos = $this->flickr->photos_search(array(
+                    'tags'=>$SESSION->{$this->sess_tag},
+                    'page'=>$page,
+                    'per_page'=>24,
+                    'user_id'=>$this->nsid,
+                    'text'=>$SESSION->{$this->sess_text}
+                    )
+                );
+            } else {
+                $photos = $this->flickr->photos_search(array(
+                    'tags'=>$SESSION->{$this->sess_tag},
+                    'page'=>$page,
+                    'per_page'=>24,
+                    'user_id'=>$this->nsid,
+                    'license'=>$SESSION->{$this->sess_license},
+                    'text'=>$SESSION->{$this->sess_text}
+                    )
+                );
+            }
         }
         $ret = array();
+        if (empty($photos)) {
+            $ret['list'] = array();
+            return $ret;
+        }
         $ret = $this->build_list($photos, $page, $ret);
         $ret['list'] = array_filter($ret['list'], array($this, 'filter'));
         return $ret;
index 1873a78f6f6ffa916c283c1f913720190ed0c165..9f16899cf2d6440c12d940094956e6440ee9a47e 100644 (file)
@@ -275,12 +275,23 @@ repository_client.print_login = function(id, data) {
             if(login[k].value) {
                 field_value = ' value="'+login[k].value+'"';
             }
-            str += '<td align="left"><input type="'+login[k].type+'"'+' name="'+login[k].name+'"'+field_id+field_value+' /></td>';
+            if(login[k].type=='radio'){
+                var list = login[k].value.split('|');
+                var labels = login[k].value_label.split('|');
+                str += '<td align="left">';
+                for(var item in list) {
+                    str +='<input type="'+login[k].type+'"'+' name="'+login[k].name+'"'+
+                        field_id+' value="'+list[item]+'" />'+labels[item]+'<br />'; 
+                }
+                str += '</td>';
+            }else{
+                str += '<td align="left"><input type="'+login[k].type+'"'+' name="'+login[k].name+'"'+field_value+' /></td>';
+            }
         }
         str +='</tr>';
     }
     str +='</table>';
-    var btn_label = login['login_btn_label']?login['login_btn_label']:fp_lang.submit;
+    var btn_label = data['login_btn_label']?data['login_btn_label']:fp_lang.submit;
     if (data['login_search_form']) {
         str += '<p><input type="button" onclick="repository_client.search(\''+id+'\', \''+data.repo_id+'\')" value="'+btn_label+'" /></p>';
     } else {
@@ -324,6 +335,13 @@ repository_client.search = function(id, repo_id) {
             params[data[k].name] = '';
             if(el.type == 'checkbox') {
                 params[data[k].name] = el.checked;
+            } else if(el.type == 'radio') {
+                var tmp = document.getElementsByName(data[k].name);
+                for(var i in tmp) {
+                    if (tmp[i].checked) {
+                        params[data[k].name] = tmp[i].value;
+                    }
+                }
             } else {
                 params[data[k].name] = el.value;
             }
@@ -468,7 +486,9 @@ repository_client.select_file = function(oldname, url, icon, client_id, repo_id)
     var footer = document.getElementById('fp-footer-'+client_id);
     footer.style.display = 'none';
     var pathbar = document.getElementById('path-'+client_id);
-    pathbar.style.display = 'none';
+    if(pathbar){
+        pathbar.style.display = 'none';
+    }
     var panel = new YAHOO.util.Element('panel-'+client_id);
     var html = '<div class="fp-rename-form">';
     html += '<p><img src="'+icon+'" /></p>';
@@ -583,7 +603,6 @@ repository_client.view_as_icons = function(client_id, data) {
     var list = null;
     if (typeof client_id == 'object') {
         // click button
-        alert('from button');
         client_id = data;
         list = repository_client.fp[client_id].fs.list;
     } else if(!data) {