diff --git a/repository/flickr_public/repository.class.php b/repository/flickr_public/repository.class.php index 9552347043f21..57c8530250dd5 100644 --- a/repository/flickr_public/repository.class.php +++ b/repository/flickr_public/repository.class.php @@ -120,19 +120,39 @@ public function print_login($ajax = true) { * @return */ public function search($search_text) { + global $SESSION; $people = $this->flickr->people_findByEmail($this->flickr_account); + $sess_tag = 'flickr_public_'.$this->id.'_tag'; + $sess_text = 'flickr_public_'.$this->id.'_text'; $this->nsid = $people['nsid']; $tag = optional_param('tag', '', PARAM_CLEANHTML); + $is_paging = optional_param('search_paging', '', PARAM_RAW); + $page = 1; + if (!empty($is_paging)) { + $page = optional_param('p', '', PARAM_INT); + if (!empty($SESSION->$sess_tag)) { + $tag = $SESSION->$sess_tag; + } + if (!empty($SESSION->$sess_text)) { + $search_text = $SESSION->$sess_text; + } + } if (!empty($tag)) { $photos = $this->flickr->photos_search(array( - 'tags'=>$tag + 'tags'=>$tag, + 'page'=>$page )); + $SESSION->$sess_tag = $tag; + } else { $photos = $this->flickr->photos_search(array( 'user_id'=>$this->nsid, 'text'=>$search_text)); + $SESSION->$sess_text = $search_text; } - return $this->build_list($photos); + $ret = array(); + $ret['search_result'] = true; + return $this->build_list($photos, $page, &$ret); } /** @@ -144,8 +164,9 @@ public function get_listing($path = '1') { $people = $this->flickr->people_findByEmail($this->flickr_account); $this->nsid = $people['nsid']; $photos = $this->flickr->people_getPublicPhotos($people['nsid'], 'original_format', 25, $path); + $ret = array(); - return $this->build_list($photos, $path); + return $this->build_list($photos, $path, &$ret); } /** @@ -154,9 +175,8 @@ public function get_listing($path = '1') { * @param $path * @return */ - private function build_list($photos, $path = 1) { + private function build_list($photos, $path = 1, $ret) { $photos_url = $this->flickr->urls_getUserPhotos($this->nsid); - $ret = array(); $ret['manage'] = $photos_url; $ret['list'] = array(); $ret['pages'] = $photos['pages']; @@ -284,7 +304,7 @@ public static function get_type_option_names() { */ public static function plugin_init() { //here we create a default instance for this type - repository_static_function('flickr_public','create', 'flickr_public', 0, get_system_context(), array('name' => get_string('repositoryname', 'repository_public'),'email_address' => null),1); + repository_static_function('flickr_public','create', 'flickr_public', 0, get_system_context(), array('name' => get_string('repositoryname', 'repository_flickr_public'),'email_address' => null),1); } } diff --git a/repository/javascript.php b/repository/javascript.php index 8b03fa645c4a9..d6005e5295fb6 100644 --- a/repository/javascript.php +++ b/repository/javascript.php @@ -407,7 +407,7 @@ function _client() { search.innerHTML = ' $strsearch'; oDiv.appendChild(search); search.onclick = function() { - repository_client_$suffix.search(repository_client_$suffix.repositoryid); + repository_client_$suffix.search_form(repository_client_$suffix.repositoryid); } } // weather we use cache for this instance, this button will reload listing anyway @@ -666,7 +666,11 @@ function _client() { if(_client.ds.pages) { str += '
'; for(var i = 1; i <= _client.ds.pages; i++) { - str += ''; + if(!_client.ds.search_result){ + str += ''; + } else { + str += ''; + } str += String(i); str += ' '; } @@ -674,6 +678,20 @@ function _client() { } return str; } +_client.search_paging = function(id, path) { + _client.viewbar.set('disabled', false); + _client.loading('load'); + _client.repositoryid = id; + var params = []; + params['p'] = path; + params['env']=_client.env; + params['action']='search'; + params['search_paging']='true'; + params['sesskey']='$sesskey'; + params['ctx_id']=$context->id; + params['repo_id']=id; + var trans = YAHOO.util.Connect.asyncRequest('POST', '$CFG->httpswwwroot/repository/ws.php?action='+action, _client.req_cb, _client.postdata(params)); +} _client.makepath = function() { if(_client.viewmode == 0) { return; @@ -823,7 +841,7 @@ function _client() { dlg.show(); } } -_client.search = function(id) { +_client.search_form = function(id) { var params = []; params['env']=_client.env; params['sesskey']='$sesskey';