summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--content/fireflix.js30
1 files changed, 13 insertions, 17 deletions
diff --git a/content/fireflix.js b/content/fireflix.js
index 34cfd3e..f30daee 100644
--- a/content/fireflix.js
+++ b/content/fireflix.js
@@ -441,431 +441,427 @@ var fireflix = {
var ppid = this.batch_ids[0];
var that = this;
this.fireflix.flickr.api_call_json(
{
method: 'flickr.photosets.create',
auth_token: 'default',
title: psn,
primary_photo_id: ppid
}, function(x,j) {
var npid = j.photoset.id;
that.fireflix.flickr.api_call_json(
{
method: 'flickr.photosets.editPhotos',
auth_token: 'default',
photoset_id: npid,
primary_photo_id: ppid,
photo_ids: pids
}, function(x,j) {
that.fireflix.refresh_sets();
}, function(x,s,c,m) {
that.fireflix.flickr_failure(x,s,c,m);
}
);
}, function(x,s,c,m) {
that.fireflix.flickr_failure(x,s,c,m);
}
);
}
}
this.selection.clearSelection();
this.cmd_uploads_upload.setAttribute('disabled','false');
this.upload_progress.setAttribute('hidden','true');
},
clear_list: function() {
this.tree.beginUpdateBatch();
this.rowCount = 0;
this.files = new Array();
this.tree.endUpdateBatch();
this.selToProps();
},
selectionChanged: function() {
this.selToProps();
},
disableProps: function() {
this.upload_filename.value='';
this.upload_filename.disabled = true;
this.upload_title.value='';
this.upload_title.disabled = true;
this.upload_file_preview.src = null;
this.upload_tags.value='';
this.upload_tags.disabled = true;
this.upload_is_public.disabled = true;
this.upload_is_friends.disabled = true;
this.upload_is_family.disabled = true;
/* this.upload_file_props.hidden = true; */
},
selToProps: function() {
if(!this.selection.count) {
this.disableProps();
this.upload_file_props.hidden = true;
}else if(this.selection.count==1) {
var f=this.files[this.selection.currentIndex];
if(f==null) {
this.disableProps();
this.upload_file_props.hidden = true;
}else{
var inactives = f.state!='pending';
this.upload_filename.value = f.file; this.upload_filename.disabled = inactives;
this.upload_title.value = f.title; this.upload_title.disabled = inactives;
this.upload_file_preview.src = 'file:///'+f.file;
this.upload_tags.value = f.tags; this.upload_tags.disabled = inactives;
this.upload_is_public.checked = f.is_public; this.upload_is_public.disabled = inactives;
this.upload_is_friends.checked = f.is_friend; this.upload_is_friends.disabled = inactives;
this.upload_is_family.checked = f.is_family; this.upload_is_family.disabled = inactives;
if(f.state=='failed') {
this.upload_failure.textContent=((f.flickr_errcode<0)?'':f.flickr_errcode+': ')+f.flickr_errmsg;
this.upload_failure.hidden = false;
}else{
this.upload_failure.hidden = true;
}
this.upload_file_props.hidden = false;
}
}else{
var ftitle = null; var onetitle = true;
var ftags = null; var onetag = true;
var fs = 0;
for(var ff in this.files) {
if(this.selection.isSelected(ff) && this.files[ff].state=='pending' ) {
++fs;
if(ftitle==null) {
ftitle = this.files[ff].title;
}else if(ftitle!=this.files[ff].title) {
onetitle = false;
}
if(ftags==null) {
ftags = this.files[ff].tags;
}else if(ftags!=this.files[ff].tags) {
onetag = false;
}
}
}
if(fs) {
this.upload_filename.value='';
this.upload_filename.disabled = true;
if(onetitle)
this.upload_title.value = ftitle;
this.upload_title.disabled = false;
if(onetag)
this.upload_tags.value = ftags;
this.upload_tags.disabled = false;
this.upload_file_preview.src = null;
this.upload_failure.hidden = true;
this.upload_file_props.hidden = false;
}else
this.disableProps();
this.upload_file_props.hidden = true;
}
},
propsToSel: function(prop) {
if(this.selection.count<=0) return;
for(var ff in this.files) {
if(this.selection.isSelected(ff) && this.files[ff].state=='pending') {
if(prop=='filename') this.files[ff].file = this.upload_filename.value;
if(prop=='title') this.files[ff].title = this.upload_title.value;
if(prop=='tags') this.files[ff].tags = this.upload_tags.value;
if(prop=='is_public') this.files[ff].is_public = this.upload_is_public.checked;
if(prop=='is_friends') this.files[ff].is_friend = this.upload_is_friends.checked;
if(prop=='is_family') this.files[ff].is_family = this.upload_is_family.checked;
this.tree.invalidateRow(ff);
}
}
},
on_upload: function() {
this.selToProps();
this.batch_ids = new Array();
this.upload_progress.value=0;
this.upload_progress.setAttribute('hidden','false');
this.upload_worker();
},
on_clear: function() {
this.clear_list();
},
on_remove: function() {
if(this.selection.count) {
this.tree.beginUpdateBatch();
for(var i=this.files.length-1;i>=0;--i) {
if(this.selection.isSelected(i)) {
this.files.splice(i,1);
this.rowCount--;
}
}
this.tree.endUpdateBatch();
this.selection.clearSelection();
}
},
on_add: function() {
var ifp = Components.interfaces.nsIFilePicker;
var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(ifp);
fp.init(window, "Select a File", ifp.modeOpenMultiple);
fp.appendFilters(ifp.filterImages);
var rv = fp.show();
if(rv==ifp.returnOK) {
var ff = fp.files;
while(ff.hasMoreElements()) {
var f = ff.getNext();
f.QueryInterface(Components.interfaces.nsIFile);
this.add(f.path);
}
}
},
on_cmd_open: function(ev) {
if(this.selection.currentIndex<0) return;
var f = this.files[this.selection.currentIndex];
if(f.photoid) {
this.fireflix.openTab(
this.fireflix.flickr.make_uploader_edit_url(f.photoid)
);
}else{
this.fireflix.openTab( 'file://'+f.file);
}
}
},
on_set_props: function() {
var pset = this.photosets.sets[this.photosets.selection.currentIndex];
window.openDialog(
"chrome://fireflix/content/photoset-props.xul",
null, "dependent,modal,dialog,chrome", this,
pset );
if(pset.dirty) {
- var _this = this;
- this.flickr.api_call(
+ var that = this;
+ this.flickr.api_call_json(
{
method: 'flickr.photosets.editMeta',
auth_token: 'default',
photoset_id: pset.id,
title: pset.title,
description: pset.description
- }, function(xr) {
+ }, function(x,j) {
pset.dirty = false;
- _this.flickr.api_call(
+ that.flickr.api_call_json(
{
method: 'flickr.photosets.getPhotos',
auth_token: 'default',
photoset_id: pset.id
- }, function(xr) {
- var x = xr.responseXML;
- var xp = x.evaluate(
- '/rsp/photoset/photo', x, null,
- XPathResult.ORDERED_NODE_ITERATOR_TYPE, null );
+ }, function(x,j) {
+ var pp = j.photoset.photo;
var phids = new Array();
var priph = null;
- var n; while(n=xp.iterateNext()) {
- var pid = n.getAttribute('id');
+ for(var i in pp) {
+ var pid = pp[i].id;
phids.push( pid );
- if(pid==pset.primary && n.getAttribute('isprimary')!='1')
- priph = pid;
+ if(pid==pset.primary && pp[i].isprimary) priph = pid;
}
if(priph) {
- _this.flickr.api_call(
+ that.flickr.api_call_json(
{
method: 'flickr.photosets.editPhotos',
auth_token: 'default',
photoset_id: pset.id,
primary_photo_id: priph,
photo_ids: phids.join(',')
}, function() { }, function(x,s,c,m) { /* flickr.photosets.editPhotos */
- _this.flickr_failure(x,s,c,m);
+ that.flickr_failure(x,s,c,m);
}
);
}
}, function(x,s,c,m) { /* flickr.photosets.getPhotos */
- _this.flickr_failure(x,s,c,m);
+ that.flickr_failure(x,s,c,m);
}
);
}, function(x,s,c,m) { /* flickr.photosets.editMeta */
- _this.flickr_failure(x,s,c,m);
+ that.flickr_failure(x,s,c,m);
}
);
}
},
on_refresh_sets: function() {
this.refresh_sets();
},
on_cmd_sets_html: function(csfx,ev) {
var uti = csfx.charAt(0); var utl = csfx.charAt(1);
var rv = this.build_html(this.photoset.photos,uti,utl);
this.popup_content(rv);
},
on_cmd_setphotos_html: function(csfx,ev) {
var uti = csfx.charAt(0); var utl = csfx.charAt(1);
var rv = '';
for(var p in this.photoset.photos) {
if(this.photoset.selection.isSelected(p))
rv += this.photo_html(this.photoset.photos[p],uti,utl)+'\n';
}
this.popup_content(rv);
},
on_cmd_uploads_html: function(csfx,ev) {
var uti = csfx.charAt(0); var utl = csfx.charAt(1);
var pids = new Array();
for(var f in this.uploads.files) {
if(this.uploads.selection.isSelected(f))
if(this.uploads.files[f].photoid)
pids.push(this.uploads.files[f].photoid);
}
var pp = this.uploads.rowCount*2; if(pp>500) pp = 500;
var _this = this;
this.flickr.api_call(
{
method: 'flickr.photos.search',
auth_token: 'default',
extras: 'original_format',
user_id: 'me',
per_page: pp
},
function(xr) {
var x = xr.responseXML;
var rv = '';
for(var pn in pids) {
var p = pids[pn];
var pp = new Photo(xp_node('/rsp/photos/photo[@id='+p+']',x));
rv += _this.photo_html(pp,uti,utl)+'\n';
}
_this.popup_content(rv);
}, function(x,s,c,m) {
_this.flickr_failure(x,s,c,m);
}
);
},
/*
*
*/
foundphotos: {
fireflix: null,
init: function(f) {
this.fireflix = f;
pull_elements(this,document,[
'search_for','search_tags','search_mine',
'searchresult_props','search_photo',
'searchresult_title','searchresult_description',
'search_page','cmd_search_prev_page','cmd_search_next_page'
]);
document.getElementById('searchresults').view = this;
},
photos: new Array(),
rowCount: 0,
getCellText: function(r,c) {
var p = this.photos[r];
if(c.id=='sr_title') return p.title;
return c.id;
},
setTree: function(t) { this.tree = t },
isContainer: function(r) { return false },
isSeparator: function(r) { return false },
isSorted: function(r) { return false },
getLevel: function(r) { return 0 },
getImageSrc: function(r,c) { return null },
getRowProperties: function(r,p) { },
getCellProperties: function(cid,cel,p) { },
getColumnProperties: function(cid,cel,p) { },
cycleHeader: function(cid,e) { },
getParentIndex: function(r) { return -1 },
drop: function(r,o) { },
canDropBeforeAfter: function(r,b) { return false },
import_json: function(jp) {
this.selection.clearSelection();
this.selection.currentIndex=-1;
this.searchresult_props.hidden=true;
this.tree.beginUpdateBatch();
this.photos = new Array();
for(var i in jp) {
this.photos.push(new Photo(jp[i]));
}
this.rowCount = this.photos.length;
this.tree.endUpdateBatch();
},
paging: {
pars: null,
page: null, pages: null, perpage: null, total: null
},
search_photos: function() {
var pars = {
method: 'flickr.photos.search',
auth_token: 'default',
extras: 'license,date_upload,date_taken,owner_name,icon_server,original_format,last_update,geo'
};
if(this.search_mine.checked)
pars.user_id='me';
if(this.search_tags.checked) {
pars.tags=this.search_for.value.split(/ +/).join(',');
}else{
pars.text=this.search_for.value;
}
this.paging.pars = new Object();
this.paging.page = null; this.paging.pages = null;
this.paging.perpage = null; this.paging.total = null;
for(var p in pars) this.paging.pars[p] = pars[p];
this.perform_search(pars);
},
perform_search: function(p) {
var that = this;
this.fireflix.flickr.api_call_json( p,
function(x,j) {
that.import_json(j.photos.photo);
that.tree.ensureRowIsVisible(0);
var pp=j.photos;
that.paging.page = pp.page; that.paging.pages = pp.pages;
that.paging.perpage = pp.perpage;
that.paging.total = pp.total;
that.update_paging();
that.on_select();
}, function(x,s,c,m) {
that.fireflix.flickr_failure(x,s,c,m);
}
);
},
on_cmd_prev: function(ev) {
var pars = new Object();
for(var p in this.paging.pars) pars[p] = this.paging.pars[p];
pars.page=this.paging.page-1; pars.per_page=this.paging.perpage;
this.perform_search(pars);
},
on_cmd_next: function(ev) {
var pars = new Object();
for(var p in this.paging.pars) pars[p] = this.paging.pars[p];
pars.page=this.paging.page+1; pars.per_page=this.paging.perpage;
this.perform_search(pars);
},
update_paging: function() {
if(! (this.paging.pars && this.paging.page && this.paging.pages) ) {
this.search_page.value=''; this.search_page.hidden = true;
this.cmd_search_prev_page.setAttribute('disabled','true');
this.cmd_search_next_page.setAttribute('disabled','true');
}else{
this.search_page.value=this.fireflix.loc_strings.getFormattedString('search_page',[this.paging.page,this.paging.pages]);
this.search_page.hidden=false;
this.cmd_search_prev_page.setAttribute('disabled',(this.paging.page>1)?'false':'true');
this.cmd_search_next_page.setAttribute('disabled',(this.paging.page<this.paging.pages)?'false':'true');
}
},
render_description_frame: function(content) {
this.searchresult_description.innerHTML = '';
if(content) {
var dp = new DOMParser();
var pd = dp.parseFromString(
'<div xmlns="http://www.w3.org/1999/xhtml">'+content+'</div>', 'text/xml' );
var de = pd.documentElement;
if(de.tagName=='parsererror')
this.searchresult_description.innerHTML=this.fireflix.loc_strings.getString('broken_description');
else
this.searchresult_description.appendChild(de);
/* of all linking elements flickr only allows a */
var as = this.searchresult_description.getElementsByTagName('a');
for(var a=0;a<as.length;++a)
as.item(a).setAttribute('target','_blank');
}
},
on_select: function() {
if(this.selection.currentIndex<0) {
this.searchresult_props.hidden = true;
}else{
var p = this.photos[this.selection.currentIndex];
if(!p) {
this.searchresult_props.hidden = true;
}else{