You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
2.6 KiB
105 lines
2.6 KiB
define(["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: "https://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); |
|
}) |
|
}); |
|
} |
|
} |
|
}); |
|
}); |
|
|
|
|