From 9f50fb5f691088e2e9aa6057b49a08ae3e6b2964 Mon Sep 17 00:00:00 2001 From: dongsheng Date: Fri, 24 Apr 2009 04:54:47 +0000 Subject: [PATCH] "Flickr_public plugin/MDL-18830, support license search for flickr_public" --- repository/flickr_public/repository.class.php | 68 +++++++++++++++---- repository/repository.js | 27 ++++++-- 2 files changed, 79 insertions(+), 16 deletions(-) diff --git a/repository/flickr_public/repository.class.php b/repository/flickr_public/repository.class.php index 6e08c224bc..ecc07e62ee 100644 --- a/repository/flickr_public/repository.class.php +++ b/repository/flickr_public/repository.class.php @@ -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; diff --git a/repository/repository.js b/repository/repository.js index 1873a78f6f..9f16899cf2 100644 --- a/repository/repository.js +++ b/repository/repository.js @@ -275,12 +275,23 @@ repository_client.print_login = function(id, data) { if(login[k].value) { field_value = ' value="'+login[k].value+'"'; } - str += ''; + if(login[k].type=='radio'){ + var list = login[k].value.split('|'); + var labels = login[k].value_label.split('|'); + str += ''; + for(var item in list) { + str +=''+labels[item]+'
'; + } + str += ''; + }else{ + str += ''; + } } str +=''; } str +=''; - 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 += '

'; } 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 = '
'; html += '

'; @@ -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) { -- 2.39.5