123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- define("dojox/image/FlickrBadge", ["dojo", "dojox/main", "dojox/image/Badge", "dojox/data/FlickrRestStore"], function(dojo, dojox){
-
- dojo.getObject("image", true, dojox);
- return dojo.declare("dojox.image.FlickrBadge", dojox.image.Badge, {
- children: "a.flickrImage",
- // userid: String
- // If you know your Flickr userid, you can set it to prevent a call to fetch the id
- userid: "",
- // username: String
- // Your Flickr username
- username: "",
- // setid: String
- // The id of the set to display
- setid: "",
- // tags: String|Array
- // A comma separated list of tags or an array of tags to grab from Flickr
- tags: "",
- // searchText: String
- // Free text search. Photos who's title, description, or tags contain the text will be displayed
- searchText: "",
- // target: String
- // Where to display the pictures when clicked on. Valid values are the same as the target attribute
- // of the A tag.
- target: "",
- apikey: "8c6803164dbc395fb7131c9d54843627",
- _store: null,
- postCreate: function(){
- if(this.username && !this.userid){
- var def = dojo.io.script.get({
- url: "http://www.flickr.com/services/rest/",
- preventCache: true,
- content: {
- format: "json",
- method: "flickr.people.findByUsername",
- api_key: this.apikey,
- username: this.username
- },
- callbackParamName: "jsoncallback"
- });
- def.addCallback(this, function(data){
- if(data.user && data.user.nsid){
- this.userid = data.user.nsid;
- if(!this._started){
- this.startup();
- }
- }
- });
- }
- },
- startup: function(){
- if(this._started){ return; }
- if(this.userid){
- var query = {
- userid: this.userid
- };
- if(this.setid){
- query["setid"] = this.setid;
- }
- if(this.tags){
- query.tags = this.tags;
- }
- if(this.searchText){
- query.text = this.searchText;
- }
- var args = arguments;
- this._store = new dojox.data.FlickrRestStore({ apikey: this.apikey });
- this._store.fetch({
- count: this.cols * this.rows,
- query: query,
- onComplete: dojo.hitch(this, function(items){
- dojo.forEach(items, function(item){
- var a = dojo.doc.createElement("a");
- dojo.addClass(a, "flickrImage");
- a.href = this._store.getValue(item, "link");
- if(this.target){
- a.target = this.target;
- }
- var img = dojo.doc.createElement("img");
- img.src = this._store.getValue(item, "imageUrlThumb");
- dojo.style(img, {
- width: "100%",
- height: "100%"
- });
- a.appendChild(img);
- this.domNode.appendChild(a);
- }, this);
- dojox.image.Badge.prototype.startup.call(this, args);
- })
- });
- }
- }
- });
-
- });
|