From 75e7a38c7db4c44b68ccadd88f5ee7bb622a8450 Mon Sep 17 00:00:00 2001 From: dongsheng Date: Mon, 14 Jul 2008 04:34:26 +0000 Subject: [PATCH] MDL-15488, searching specific photos in flickr repository. --- repository/ajax.php | 39 ++++++++++++------- .../flickr/lang/en_utf8/repository_flickr.php | 1 + repository/flickr/repository.class.php | 18 +++++++-- repository/ws.php | 8 +++- 4 files changed, 46 insertions(+), 20 deletions(-) diff --git a/repository/ajax.php b/repository/ajax.php index 4aa8b2dd4e..9c15086b06 100644 --- a/repository/ajax.php +++ b/repository/ajax.php @@ -1,7 +1,7 @@ pixpath.'/i/item.gif'; $meta = << body { - margin:0; - padding:0; + margin:0; + padding:0; } #demo .yui-resize-handle-br { height: 11px; @@ -105,13 +105,13 @@ function openpicker(){ units: [ {position: 'top', height: 32, resize: false, body:'
', gutter: '2'}, { position: 'left', width: 150, resize: true, body: '', gutter: '0 5 0 2', minWidth: 150, maxWidth: 300 }, - { position: 'bottom', - height: 30, + { position: 'bottom', + height: 30, body: '
'+ ''+ ''+ ''+ - '
', + '', gutter: '2'}, { position: 'center', body: '
', scroll: true, gutter: '0 2 0 0' } ] @@ -141,7 +141,7 @@ function openpicker(){ layout.set('height', bodyContentHeight); layout.set('width', (args.width - PANEL_BODY_PADDING)); layout.resize(); - + }, panel, true); var list = new YAHOO.util.Element('list'); list.on('contentReady', function(e){ @@ -179,7 +179,7 @@ function openpicker(){ viewbar.addButtons([btn_list, btn_thumb]); var select = new YAHOO.util.Element('select'); select.on('click', function(e){ - var nodes = YAHOO.util.Selector.query('input:checked'); + var nodes = YAHOO.util.Selector.query('input:checked'); var str = ''; for(k in nodes){ str += (nodes[k].value+'\n'); @@ -190,9 +190,11 @@ function openpicker(){ }) var search = new YAHOO.util.Element('search'); search.on('click', function(e){ - // TODO - // Call get_listing to search - }) + var data=window.prompt("What are you searching for?"); + if(data != null || data != '') { + dosearch(data); + } + }) }; function postdata(obj) { @@ -219,7 +221,7 @@ function makepage(){ str += ' '; } str += ''; - } + } return str; } @@ -271,7 +273,7 @@ function viewlist(){ return str; } -// produce login html +// produce login html function print_login(){ var panel = new YAHOO.util.Element('panel'); var data = datasource.l; @@ -280,7 +282,11 @@ function print_login(){ var callback = { success: function(o) { - var ret = YAHOO.lang.JSON.parse(o.responseText); + try { + var ret = YAHOO.lang.JSON.parse(o.responseText); + } catch(e) { + alert(e); + } datasource = ret; if(datasource.l){ print_login(); @@ -302,6 +308,11 @@ function cr(id, path, reset){ loading(); var trans = YAHOO.util.Connect.asyncRequest('GET', 'ws.php?id='+id+'&p='+path+'&reset='+reset, callback); } +function dosearch(text){ + viewbar.set('disabled', false); + loading(); + var trans = YAHOO.util.Connect.asyncRequest('GET', 'ws.php?id='+repositoryid+'&s='+text, callback); +} function dologin(){ YAHOO.util.Connect.setForm('moodle-repo-login'); diff --git a/repository/flickr/lang/en_utf8/repository_flickr.php b/repository/flickr/lang/en_utf8/repository_flickr.php index cfacf996bf..ce54de8aba 100644 --- a/repository/flickr/lang/en_utf8/repository_flickr.php +++ b/repository/flickr/lang/en_utf8/repository_flickr.php @@ -1,3 +1,4 @@ flickr->people_findByEmail($SESSION->flickrmail); $photos_url = $this->flickr->urls_getUserPhotos($people['nsid']); - $photos = $this->flickr->people_getPublicPhotos($people['nsid'], null, 36, $path); + + if(!empty($search)) { + // do searching, if $path is not empty, ignore it. + $photos = $this->flickr->photos_search(array('user_id'=>$people['nsid'], 'text'=>$search)); + } elseif(!empty($path) && empty($search)) { + $photos = $this->flickr->people_getPublicPhotos($people['nsid'], null, 36, $path); + } + $ret = new stdclass; $ret->url = $photos_url; $ret->list = array(); - //$ret->page = $photos['page']; - $ret->page = $path; $ret->pages = $photos['pages']; + if(is_int($path) && $path <= $ret->pages) { + $ret->page = $path; + } else { + $ret->page = 1; + } foreach ($photos['photo'] as $p) { if(empty($p['title'])) { $p['title'] = get_string('notitle', 'repository_flickr'); @@ -105,7 +115,7 @@ EOD; "src=" . $photo['thumbnail'] . ">"; $str .= ""; $i++; - + if ($i % 4 == 0) { $str .= "
"; } diff --git a/repository/ws.php b/repository/ws.php index 8853c6592e..c767a679cc 100644 --- a/repository/ws.php +++ b/repository/ws.php @@ -2,10 +2,14 @@ require_once('../config.php'); require_once('lib.php'); $CFG->repository_cache_expire = 12000; +// repository id $id = optional_param('id', PARAM_INT); +// action of client $action = optional_param('action', '', PARAM_RAW); +// path $p = optional_param('p', '', PARAM_RAW); -$search = optional_param('search', '', PARAM_RAW); +// Search text +$search = optional_param('s', '', PARAM_RAW); if(!$repository = $DB->get_record('repository', array('id'=>$id))) { echo json_encode('wrong'); @@ -30,7 +34,7 @@ if($action == 'list') { } else { echo json_encode($repo->get_listing()); } - + } else { echo json_encode($repo->print_login()); } -- 2.39.5