summaryrefslogtreecommitdiffabout
path: root/content
Unidiff
Diffstat (limited to 'content') (more/less context) (ignore whitespace changes)
-rw-r--r--content/fireflix.js14
1 files changed, 8 insertions, 6 deletions
diff --git a/content/fireflix.js b/content/fireflix.js
index 98b6d41..337354e 100644
--- a/content/fireflix.js
+++ b/content/fireflix.js
@@ -73,48 +73,49 @@ var fireflix = {
73 _this.flickr.user.fullname+' ['+_this.flickr.user.username+']'; 73 _this.flickr.user.fullname+' ['+_this.flickr.user.username+']';
74 }, function(x,s,c,m) { 74 }, function(x,s,c,m) {
75 _this.set_auth_state(_this.flickr.token,false); /* XXX: no reset token? */ 75 _this.set_auth_state(_this.flickr.token,false); /* XXX: no reset token? */
76 _this.flickr_failure(x,s,c,m); 76 _this.flickr_failure(x,s,c,m);
77 } 77 }
78 ); 78 );
79 }, 79 },
80 on_cmd_auth_unauth: function() { 80 on_cmd_auth_unauth: function() {
81 this.flickr.reset_token(); 81 this.flickr.reset_token();
82 this.set_auth_state(false,false); 82 this.set_auth_state(false,false);
83 }, 83 },
84 84
85 refresh_sets: function() { this.photosets.refresh_sets(); }, 85 refresh_sets: function() { this.photosets.refresh_sets(); },
86 refresh_stuff: function() { 86 refresh_stuff: function() {
87 this.refresh_sets(); 87 this.refresh_sets();
88 this.refresh_user_tags(); 88 this.refresh_user_tags();
89 }, 89 },
90 90
91 /* photoset treeview */ 91 /* photoset treeview */
92 photoset: { 92 photoset: {
93 photos: new Array(), 93 photos: new Array(),
94 fireflix: null, 94 fireflix: null,
95 init: function(f) { 95 init: function(f) {
96 this.fireflix = f; 96 this.fireflix = f;
97 pull_elements(this,document,[ 'set_photo' ]);
97 }, 98 },
98 rowCount: 0, 99 rowCount: 0,
99 getCellText: function(r,c) { 100 getCellText: function(r,c) {
100 var p = this.photos[r]; 101 var p = this.photos[r];
101 if(c.id=='sp_title') return p.title; 102 if(c.id=='sp_title') return p.title;
102 if(c.id=='sp_taken') return p.datetaken; 103 if(c.id=='sp_taken') return p.datetaken;
103 if(c.id=='sp_upload') return p.dateupload; /* TODO: unixtime conversion */ 104 if(c.id=='sp_upload') return p.dateupload; /* TODO: unixtime conversion */
104 return c.id; 105 return c.id;
105 }, 106 },
106 setTree: function(t) { this.tree = t }, 107 setTree: function(t) { this.tree = t },
107 isContainer: function(r) { return false; }, 108 isContainer: function(r) { return false; },
108 isSeparator: function(r) { return false; }, 109 isSeparator: function(r) { return false; },
109 isSorted: function(r) { return false; }, 110 isSorted: function(r) { return false; },
110 getLevel: function(r) { return 0; }, 111 getLevel: function(r) { return 0; },
111 getImageSrc: function(r,c) { return null }, 112 getImageSrc: function(r,c) { return null },
112 getRowProperties: function(r,p) {}, 113 getRowProperties: function(r,p) {},
113 getCellProperties: function(cid,cel,p) {}, 114 getCellProperties: function(cid,cel,p) {},
114 getColumnProperties: function(cid,cel,p) { }, 115 getColumnProperties: function(cid,cel,p) { },
115 cycleHeader: function(cid,e) { }, 116 cycleHeader: function(cid,e) { },
116 getParentIndex: function(r) { return -1; }, 117 getParentIndex: function(r) { return -1; },
117 drop: function(r,o) { }, 118 drop: function(r,o) { },
118 canDropBeforeAfter: function(r,b) { return false }, 119 canDropBeforeAfter: function(r,b) { return false },
119 120
120 importXPR: function(xp) { 121 importXPR: function(xp) {
@@ -127,53 +128,53 @@ var fireflix = {
127 this.tree.endUpdateBatch(); 128 this.tree.endUpdateBatch();
128 }, 129 },
129 load_photos: function(psid) { 130 load_photos: function(psid) {
130 var _this = this; 131 var _this = this;
131 this.fireflix.flickr.api_call( 132 this.fireflix.flickr.api_call(
132 { 133 {
133 method: 'flickr.photosets.getPhotos', 134 method: 'flickr.photosets.getPhotos',
134 auth_token: 'default', 135 auth_token: 'default',
135 photoset_id: psid, 136 photoset_id: psid,
136 extras: 'license,date_upload,date_taken,owner_name,icon_server,original_format,last_update' 137 extras: 'license,date_upload,date_taken,owner_name,icon_server,original_format,last_update'
137 }, function(xr) { 138 }, function(xr) {
138 var x = xr.responseXML; 139 var x = xr.responseXML;
139 var xp = x.evaluate( 140 var xp = x.evaluate(
140 '/rsp/photoset/photo', x, null, 141 '/rsp/photoset/photo', x, null,
141 XPathResult.ORDERED_NODE_ITERATOR_TYPE, null ); 142 XPathResult.ORDERED_NODE_ITERATOR_TYPE, null );
142 _this.importXPR(xp); 143 _this.importXPR(xp);
143 }, function(x,s,c,m) { 144 }, function(x,s,c,m) {
144 _this.fireflix.flickr_failure(x,s,c,m); 145 _this.fireflix.flickr_failure(x,s,c,m);
145 } 146 }
146 ); 147 );
147 }, 148 },
148 on_select: function() { 149 on_select: function() {
149 if(this.selection.count==1) { 150 if(this.selection.count==1) {
150 var p = this.photos[this.selection.currentIndex]; 151 var p = this.photos[this.selection.currentIndex];
151 document.getElementById('set_photo').src = 152 this.set_photo.src =
152 this.fireflix.flickr.get_photo_url(p.server,p.id,p.secret,'t'); 153 this.fireflix.flickr.get_photo_url(p.server,p.id,p.secret,'t');
153 document.getElementById('set_photo').hidden = false; 154 this.set_photo.hidden = false;
154 }else{ 155 }else{
155 document.getElementById('set_photo').hidden = true; 156 this.set_photo.hidden = true;
156 } 157 }
157 } 158 }
158 }, 159 },
159 160
160 /* photosets treeview */ 161 /* photosets treeview */
161 photosets: { 162 photosets: {
162 sets: new Array(), 163 sets: new Array(),
163 fireflix: null, 164 fireflix: null,
164 init: function(f) { 165 init: function(f) {
165 this.fireflix = f; 166 this.fireflix = f;
166 }, 167 },
167 rowCount: 0, 168 rowCount: 0,
168 getCellText: function(r,c) { 169 getCellText: function(r,c) {
169 var s = this.sets[r]; 170 var s = this.sets[r];
170 if(c.id=='sl_name') return s.title; 171 if(c.id=='sl_name') return s.title;
171 if(c.id=='sl_photos') return s.photos; 172 if(c.id=='sl_photos') return s.photos;
172 return c.id; 173 return c.id;
173 }, 174 },
174 setTree: function(t) { this.tree = t }, 175 setTree: function(t) { this.tree = t },
175 isContainer: function(r) { return false; }, 176 isContainer: function(r) { return false; },
176 isSeparator: function(r) { return false; }, 177 isSeparator: function(r) { return false; },
177 isSorted: function() { return false; }, 178 isSorted: function() { return false; },
178 getLevel: function(r) { return 0; }, 179 getLevel: function(r) { return 0; },
179 getImageSrc: function(r,c) { return null }, 180 getImageSrc: function(r,c) { return null },
@@ -289,49 +290,50 @@ var fireflix = {
289 case 'text/uri-list': 290 case 'text/uri-list':
290 // is it ascii or could it be utf8? 291 // is it ascii or could it be utf8?
291 this.drop_urilist(ev,splitascii(d.data),s); 292 this.drop_urilist(ev,splitascii(d.data),s);
292 break; 293 break;
293 default: alert(d.flavour.contentType+':'+d.data); break; 294 default: alert(d.flavour.contentType+':'+d.data); break;
294 }; 295 };
295 }, 296 },
296 drop_urilist: function(ev,ul,s) { 297 drop_urilist: function(ev,ul,s) {
297 // TODO: check for being a file? 298 // TODO: check for being a file?
298 var us = decodeURIComponent(ul).split(/[\r\n]/); 299 var us = decodeURIComponent(ul).split(/[\r\n]/);
299 for(var ui in us) 300 for(var ui in us)
300 if(/\S/.test(us[ui])) 301 if(/\S/.test(us[ui]))
301 this.fireflix.uploads.add(us[ui]); 302 this.fireflix.uploads.add(us[ui]);
302 document.getElementById('fireflix_tabs').selectedTab 303 document.getElementById('fireflix_tabs').selectedTab
303 = document.getElementById('tab_upload'); 304 = document.getElementById('tab_upload');
304 } 305 }
305 }, 306 },
306 307
307 uploads: { 308 uploads: {
308 fireflix: null, 309 fireflix: null,
309 init: function(f) { 310 init: function(f) {
310 this.fireflix=f; 311 this.fireflix=f;
311 pull_elements(this,document,[ 312 pull_elements(this,document,[
312 'upload_filename','upload_title','upload_file_preview', 313 'upload_filename','upload_title','upload_file_preview',
313 'upload_file_props','upload_progress','upload_tags' 314 'upload_file_props','upload_progress','upload_tags',
315 'cmd_uploads_upload'
314 ]); 316 ]);
315 }, 317 },
316 files: new Array(), 318 files: new Array(),
317 rowCount: 0, 319 rowCount: 0,
318 getCellText: function(r,c) { 320 getCellText: function(r,c) {
319 var f = this.files[r]; 321 var f = this.files[r];
320 if(c.id=='up_file') return f.file; 322 if(c.id=='up_file') return f.file;
321 if(c.id=='up_title') return f.title; 323 if(c.id=='up_title') return f.title;
322 if(c.id=='up_status') return f.state; 324 if(c.id=='up_status') return f.state;
323 return c.id; 325 return c.id;
324 }, 326 },
325 setTree: function(t) { this.tree = t }, 327 setTree: function(t) { this.tree = t },
326 isContainer: function(r) { return false; }, 328 isContainer: function(r) { return false; },
327 isSeparator: function(r) { return false; }, 329 isSeparator: function(r) { return false; },
328 isSorted: function(r) { return false; }, 330 isSorted: function(r) { return false; },
329 getLevel: function(r) { return 0; }, 331 getLevel: function(r) { return 0; },
330 getImageSrc: function(r,c) { return null }, 332 getImageSrc: function(r,c) { return null },
331 getRowProperties: function(r,p) { 333 getRowProperties: function(r,p) {
332 try { 334 try {
333 if(!Components) return; 335 if(!Components) return;
334 }catch(e) { return } 336 }catch(e) { return }
335 var f = this.files[r]; 337 var f = this.files[r];
336 var as = Components.classes['@mozilla.org/atom-service;1']. 338 var as = Components.classes['@mozilla.org/atom-service;1'].
337 getService(Components.interfaces.nsIAtomService); 339 getService(Components.interfaces.nsIAtomService);
@@ -380,96 +382,96 @@ var fireflix = {
380 this.fireflix.flickr.upload_file( 382 this.fireflix.flickr.upload_file(
381 ff.file, { title: ff.title, tags: ff.tags }, 383 ff.file, { title: ff.title, tags: ff.tags },
382 function(x,p) { 384 function(x,p) {
383 ff.photoid = p; 385 ff.photoid = p;
384 _this.batch_ids.push(p); 386 _this.batch_ids.push(p);
385 ff.state='completed'; 387 ff.state='completed';
386 _this.tree.invalidate(); 388 _this.tree.invalidate();
387 window.setTimeout(_this.upload_to,0,_this); 389 window.setTimeout(_this.upload_to,0,_this);
388 }, function(x,s,c,m) { 390 }, function(x,s,c,m) {
389 ff.state='failed'; 391 ff.state='failed';
390 ff.flickr_errcode = c; 392 ff.flickr_errcode = c;
391 ff.flickr_errmsg = m; 393 ff.flickr_errmsg = m;
392 _this.tree.invalidate(); 394 _this.tree.invalidate();
393 window.setTimeout(_this.upload_to,0,_this); 395 window.setTimeout(_this.upload_to,0,_this);
394 } 396 }
395 ); 397 );
396 return; 398 return;
397 } 399 }
398 } 400 }
399 dump('uploading done\n'); 401 dump('uploading done\n');
400 this.on_finish_upload(); 402 this.on_finish_upload();
401 }, 403 },
402 upload_to: function(_this) { _this.upload_worker(); }, 404 upload_to: function(_this) { _this.upload_worker(); },
403 on_file_upload: function(f) { 405 on_file_upload: function(f) {
404 document.getElementById('cmd_uploads_upload').setAttribute('disabled','true'); 406 this.cmd_uploads_upload.setAttribute('disabled','true');
405 for(var fi in this.files) { 407 for(var fi in this.files) {
406 if(this.files[fi].file==f.file) { 408 if(this.files[fi].file==f.file) {
407 this.tree.ensureRowIsVisible(fi); 409 this.tree.ensureRowIsVisible(fi);
408 this.selection.rangedSelect(fi,fi,false); 410 this.selection.rangedSelect(fi,fi,false);
409 this.selection.currentIndex = fi; 411 this.selection.currentIndex = fi;
410 this.selToProps(); 412 this.selToProps();
411 break; 413 break;
412 } 414 }
413 } 415 }
414 }, 416 },
415 on_finish_upload: function() { 417 on_finish_upload: function() {
416 if(this.batch_ids.length) { 418 if(this.batch_ids.length) {
417 var psn = prompt(this.fireflix.loc_strings.getString('postUploadPhotoset')); 419 var psn = prompt(this.fireflix.loc_strings.getString('postUploadPhotoset'));
418 if(psn!=null) { 420 if(psn!=null) {
419 var pids = this.batch_ids.join(','); 421 var pids = this.batch_ids.join(',');
420 var ppid = this.batch_ids[0]; 422 var ppid = this.batch_ids[0];
421 var _this = this; 423 var _this = this;
422 this.fireflix.flickr.api_call( 424 this.fireflix.flickr.api_call(
423 { 425 {
424 method: 'flickr.photosets.create', 426 method: 'flickr.photosets.create',
425 auth_token: 'default', 427 auth_token: 'default',
426 title: psn, 428 title: psn,
427 primary_photo_id: ppid 429 primary_photo_id: ppid
428 }, function(x) { 430 }, function(x) {
429 var npid = 431 var npid =
430 x.responseXML.getElementsByTagName('photoset').item(0).getAttribute('id'); 432 x.responseXML.getElementsByTagName('photoset').item(0).getAttribute('id');
431 _this.fireflix.flickr.api_call( 433 _this.fireflix.flickr.api_call(
432 { 434 {
433 method: 'flickr.photosets.editPhotos', 435 method: 'flickr.photosets.editPhotos',
434 auth_token: 'default', 436 auth_token: 'default',
435 photoset_id: npid, 437 photoset_id: npid,
436 primary_photo_id: ppid, 438 primary_photo_id: ppid,
437 photo_ids: pids 439 photo_ids: pids
438 }, function(x) { 440 }, function(x) {
439 _this.fireflix.refresh_sets(); 441 _this.fireflix.refresh_sets();
440 }, function(x,s,c,m) { 442 }, function(x,s,c,m) {
441 _this.fireflix.flickr_failure(x,s,c,m); 443 _this.fireflix.flickr_failure(x,s,c,m);
442 } 444 }
443 ); 445 );
444 }, function(x,s,c,m) { 446 }, function(x,s,c,m) {
445 _this.fireflix.flickr_failure(x,s,c,m); 447 _this.fireflix.flickr_failure(x,s,c,m);
446 } 448 }
447 ); 449 );
448 } 450 }
449 } 451 }
450 this.selection.clearSelection(); 452 this.selection.clearSelection();
451 document.getElementById('cmd_uploads_upload').setAttribute('disabled','false'); 453 this.cmd_uploads_upload.setAttribute('disabled','false');
452 this.upload_progress.setAttribute('hidden','true'); 454 this.upload_progress.setAttribute('hidden','true');
453 }, 455 },
454 456
455 clear_list: function() { 457 clear_list: function() {
456 this.tree.beginUpdateBatch(); 458 this.tree.beginUpdateBatch();
457 this.rowCount = 0; 459 this.rowCount = 0;
458 this.files = new Array(); 460 this.files = new Array();
459 this.tree.endUpdateBatch(); 461 this.tree.endUpdateBatch();
460 this.selToProps(); 462 this.selToProps();
461 }, 463 },
462 selectionChanged: function() { 464 selectionChanged: function() {
463 this.selToProps(); 465 this.selToProps();
464 }, 466 },
465 disableProps: function() { 467 disableProps: function() {
466 this.upload_filename.value=''; 468 this.upload_filename.value='';
467 this.upload_filename.disabled = true; 469 this.upload_filename.disabled = true;
468 this.upload_title.value=''; 470 this.upload_title.value='';
469 this.upload_title.disabled = true; 471 this.upload_title.disabled = true;
470 this.upload_file_preview.src = null; 472 this.upload_file_preview.src = null;
471 this.upload_file_props.hidden = true; 473 this.upload_file_props.hidden = true;
472 this.upload_tags.value=''; 474 this.upload_tags.value='';
473 this.upload_tags.disabled = true; 475 this.upload_tags.disabled = true;
474 }, 476 },
475 selToProps: function() { 477 selToProps: function() {