]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-15488, searching specific photos in flickr repository.
authordongsheng <dongsheng>
Mon, 14 Jul 2008 04:34:26 +0000 (04:34 +0000)
committerdongsheng <dongsheng>
Mon, 14 Jul 2008 04:34:26 +0000 (04:34 +0000)
repository/ajax.php
repository/flickr/lang/en_utf8/repository_flickr.php
repository/flickr/repository.class.php
repository/ws.php

index 4aa8b2dd4ead27e8077ed98718c7f1e6eb0584f0..9c15086b063a240c83a50b40b11e464d3a427c30 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /*******************************************************\
 
-  This file is a demo page for ajax repository file 
+  This file is a demo page for ajax repository file
   picker.
 
 \*******************************************************/
@@ -10,8 +10,8 @@ $itempic = $CFG->pixpath.'/i/item.gif';
 $meta = <<<EOD
 <style type="text/css">
 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:'<div class="yui-buttongroup" id="viewbar"></div>', gutter: '2'},
                     { position: 'left', width: 150, resize: true, body: '<ul id="list"></ul>', gutter: '0 5 0 2', minWidth: 150, maxWidth: 300 },
-                    { position: 'bottom', 
-                    height: 30, 
+                    { position: 'bottom',
+                    height: 30,
                     body: '<div id="toolbar">'+
                     '<input type="button" id="select" value="Select" />'+
                     '<input type="button" id="search" value="Search" />'+
                     '<input type="button" id="logout" value="Logout" />'+
-                    '</div>', 
+                    '</div>',
                     gutter: '2'},
                     { position: 'center', body: '<div id="panel"></div>', 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 += '</a> ';
         }
         str += '</div>';
-    }  
+    }
     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');
index cfacf996bf3471a2a03cc4e4d797740e0c97b78b..ce54de8abaa3d235434e545b1b20b75f3c89e4c4 100644 (file)
@@ -1,3 +1,4 @@
 <?php
 $string['repositoryname'] = 'Flickr';
 $string['repositorydesc'] = 'Repository for flickr.com';
+$string['notitle'] = 'notitle';
index fd08b439cc34bc39c22f7d197e3029115b03f157..ba98b625e27876795b68fa21aa7d31f8f11a094f 100755 (executable)
@@ -77,13 +77,23 @@ EOD;
         global $SESSION;
         $people = $this->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 .= "</a>";
             $i++;
-            
+
             if ($i % 4 == 0) {
                 $str .= "<br/>";
             }
index 8853c6592eeb9913bf044638ac11d0b0691389f2..c767a679cc28f8940bb84925a1e13b56df87dfc0 100644 (file)
@@ -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());
 }