Changeset 4594

Show
Ignore:
Timestamp:
01/14/08 22:40:15 (5 years ago)
Author:
machu
Message:

lang/javascript/flickr2blog: add fiture, search Flickr Photos

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/javascript/flickr2blog/flickr2blog.js

    r4592 r4594  
    5757  // 最新の画像を取得する 
    5858  getRecentPhotos: function() { 
     59    jQuery('#flickr_to_blog_loading').show(); 
    5960    this.flickrClient.peoplePhotos(this.user.id, function(photos) { 
     61      jQuery('#flickr_to_blog_loading').hide(); 
    6062      flickrToBlog.photos = photos.photo; 
    6163      flickrToBlog.showWindow(); 
     
    6567 
    6668  // 画像を検索する 
    67   // TODO Searchボタンのclickと関連付け 
    6869  searchPhotos: function() { 
    69     //this.flickrClient.searchPhotos(this.user.id, function(photos) { 
    70     //  flickrToBlog.photos = photos; 
    71     //}); 
    72     flickrToBlog.showWindow(); 
    73     flickrToBlog.window.updatePhotos(flickrToBlog.photos); 
     70    var text = jQuery('#flickr_to_blog_photo_search_text').val(); 
     71    jQuery('#flickr_to_blog_loading').show(); 
     72    this.flickrClient.searchPhotos(this.user.id, text, function(photos) { 
     73      jQuery('#flickr_to_blog_loading').hide(); 
     74      flickrToBlog.photos = photos.photo; 
     75      flickrToBlog.showWindow(); 
     76      flickrToBlog.window.updatePhotos(flickrToBlog.photos); 
     77    }); 
    7478  }, 
    7579 
     
    8993    var main_id = 'flickr_to_blog'; 
    9094    var photos_id = 'flickr_to_blog_photos'; 
    91     // 写真サイズ選択領域 
    92     var control = jQuery('<div id="flickr_to_blog_control">').text("photo size: "); 
    93     // 写真表示領域 
    94     this.photos = jQuery('<div id="' + photos_id + '">'); 
    9595    // メインウィンドウ 
    9696    this.main = jQuery('<div id="' + main_id + '">') 
    9797      .css({ display: "none" }) 
    98       .append(control) 
    99       .append(this.photos) 
    10098      .appendTo(jQuery('body')); 
     99    // コントロール領域 
     100    var control = jQuery('<div id="flickr_to_blog_control">') 
     101      .appendTo(this.main); 
     102    // 読み込み中のアイコン 
     103    jQuery('<img id="flickr_to_blog_loading" src="' + imgLoader.src + '" />') 
     104      .css({display: "none", float: "right", margin: "1em"}) 
     105      .appendTo(control); 
     106    // 写真検索領域 
     107    var search = jQuery('<div>') 
     108      .append('<form id="flickr_to_blog_photo_search"></form>') 
     109      .appendTo(control); 
     110    jQuery('#flickr_to_blog_photo_search') 
     111      .append('photo search: ') 
     112      .css({padding: "0.5em", borderBottom: "solid 1px #999"}) 
     113      .append('<input type="text" id="flickr_to_blog_photo_search_text"> ') 
     114      .append('<button id="flickr_to_blog_photo_search_submit">Search</button>') 
     115      .submit(function() { flickrToBlog.searchPhotos();  return false; }); 
     116    // 写真サイズ選択領域 
     117    var photoSize = jQuery('<div id="flickr_to_blog_photo_size">') 
     118      .css({margin: "0.5em"}) 
     119      .append("photo size: ") 
     120      .appendTo(control); 
    101121    jQuery.each(["square", "thumbnail", "small", "medium", "large"], function(i, size) { 
    102       control.append('<input type="radio" id="flickr_to_blog_photo_size_' + size + '" name="flickr_to_blog_photo_size" value="' + size + '">') 
     122      photoSize.append('<input type="radio" id="flickr_to_blog_photo_size_' + size + '" name="flickr_to_blog_photo_size" value="' + size + '">') 
    103123      .append('<label for="flickr_to_blog_photo_size_' + size + '">' + size + '</label> '); 
    104124    }); 
     125    // 写真表示領域 
     126    this.photos = jQuery('<div id="' + photos_id + '">').appendTo(this.main); 
    105127    // IEだとtb_show()のタイミングでradioのcheckedが外れるので、 
    106128    // 選択内容を退避するためのフック 
     
    112134  }, 
    113135 
    114   // 引数で受け取った画像を取得する 
     136  // 引数で受け取った画像を表示する 
    115137  updatePhotos: function(photos) { 
    116138    var main = this.main; 
     
    268290  }, 
    269291 
     292  searchPhotos: function(userId, text, callback) { 
     293    var params = { 
     294      api_key: this.apiKey, 
     295      method: 'flickr.photos.search', 
     296      user_id: userId, 
     297      text: text, 
     298      per_page: 10, 
     299      format: 'json' 
     300    }; 
     301    // TODO: 以下の処理を他の関数とひとつにまとめる 
     302    var url = this.baseUrl + this.serialize(params); 
     303    jQuery.ajax({ 
     304      url: url, 
     305      dataType: "jsonp", 
     306      jsonp: "jsoncallback", 
     307      success: function(data, textStatus) { 
     308        if (data.stat != "ok") { 
     309          alert('Sorry, failed to connect to Flickr server.'); 
     310          return; 
     311        } 
     312        callback(data.photos); 
     313      } 
     314    }); 
     315  }, 
     316 
    270317  // 写真ファイルのURLを返す 
    271318  photoUrl: function(photo, size) {