summaryrefslogtreecommitdiffabout
path: root/content/fireflix.js
authorMichael Krelin <hacker@klever.net>2006-12-18 18:56:09 (UTC)
committer Michael Krelin <hacker@klever.net>2006-12-18 18:56:09 (UTC)
commit71a2c8a80f3c7a99e893efb32c6bbf5080e16ff1 (patch) (unidiff)
tree1f9051339dee22f5c64206568638675ca9f7636a /content/fireflix.js
parent1838bc18394967371d7a1c00516db5e290f80ea3 (diff)
downloadfireflix-71a2c8a80f3c7a99e893efb32c6bbf5080e16ff1.zip
fireflix-71a2c8a80f3c7a99e893efb32c6bbf5080e16ff1.tar.gz
fireflix-71a2c8a80f3c7a99e893efb32c6bbf5080e16ff1.tar.bz2
doubleclicking files in upload
git-svn-id: http://svn.klever.net/kin/fireflix/trunk@241 fe716a7a-6dde-0310-88d9-d003556173a8
Diffstat (limited to 'content/fireflix.js') (more/less context) (ignore whitespace changes)
-rw-r--r--content/fireflix.js17
1 files changed, 13 insertions, 4 deletions
diff --git a/content/fireflix.js b/content/fireflix.js
index 78e56c2..225e21c 100644
--- a/content/fireflix.js
+++ b/content/fireflix.js
@@ -503,256 +503,267 @@ var fireflix = {
503 }, 503 },
504 disableProps: function() { 504 disableProps: function() {
505 this.upload_filename.value=''; 505 this.upload_filename.value='';
506 this.upload_filename.disabled = true; 506 this.upload_filename.disabled = true;
507 this.upload_title.value=''; 507 this.upload_title.value='';
508 this.upload_title.disabled = true; 508 this.upload_title.disabled = true;
509 this.upload_file_preview.src = null; 509 this.upload_file_preview.src = null;
510 this.upload_tags.value=''; 510 this.upload_tags.value='';
511 this.upload_tags.disabled = true; 511 this.upload_tags.disabled = true;
512 this.upload_is_public.disabled = true; 512 this.upload_is_public.disabled = true;
513 this.upload_is_friends.disabled = true; 513 this.upload_is_friends.disabled = true;
514 this.upload_is_family.disabled = true; 514 this.upload_is_family.disabled = true;
515 /* this.upload_file_props.hidden = true; */ 515 /* this.upload_file_props.hidden = true; */
516 }, 516 },
517 selToProps: function() { 517 selToProps: function() {
518 if(!this.selection.count) { 518 if(!this.selection.count) {
519 this.disableProps(); 519 this.disableProps();
520 this.upload_file_props.hidden = true; 520 this.upload_file_props.hidden = true;
521 }else if(this.selection.count==1) { 521 }else if(this.selection.count==1) {
522 var f=this.files[this.selection.currentIndex]; 522 var f=this.files[this.selection.currentIndex];
523 if(f==null) { 523 if(f==null) {
524 this.disableProps(); 524 this.disableProps();
525 this.upload_file_props.hidden = true; 525 this.upload_file_props.hidden = true;
526 }else{ 526 }else{
527 var inactives = f.state!='pending'; 527 var inactives = f.state!='pending';
528 this.upload_filename.value = f.file; this.upload_filename.disabled = inactives; 528 this.upload_filename.value = f.file; this.upload_filename.disabled = inactives;
529 this.upload_title.value = f.title; this.upload_title.disabled = inactives; 529 this.upload_title.value = f.title; this.upload_title.disabled = inactives;
530 this.upload_file_preview.src = 'file:///'+f.file; 530 this.upload_file_preview.src = 'file:///'+f.file;
531 this.upload_tags.value = f.tags; this.upload_tags.disabled = inactives; 531 this.upload_tags.value = f.tags; this.upload_tags.disabled = inactives;
532 this.upload_is_public.checked = f.is_public; this.upload_is_public.disabled = inactives; 532 this.upload_is_public.checked = f.is_public; this.upload_is_public.disabled = inactives;
533 this.upload_is_friends.checked = f.is_friend; this.upload_is_friends.disabled = inactives; 533 this.upload_is_friends.checked = f.is_friend; this.upload_is_friends.disabled = inactives;
534 this.upload_is_family.checked = f.is_family; this.upload_is_family.disabled = inactives; 534 this.upload_is_family.checked = f.is_family; this.upload_is_family.disabled = inactives;
535 if(f.state=='failed') { 535 if(f.state=='failed') {
536 this.upload_failure.textContent=((f.flickr_errcode<0)?'':f.flickr_errcode+': ')+f.flickr_errmsg; 536 this.upload_failure.textContent=((f.flickr_errcode<0)?'':f.flickr_errcode+': ')+f.flickr_errmsg;
537 this.upload_failure.hidden = false; 537 this.upload_failure.hidden = false;
538 }else{ 538 }else{
539 this.upload_failure.hidden = true; 539 this.upload_failure.hidden = true;
540 } 540 }
541 this.upload_file_props.hidden = false; 541 this.upload_file_props.hidden = false;
542 } 542 }
543 }else{ 543 }else{
544 var ftitle = null; var onetitle = true; 544 var ftitle = null; var onetitle = true;
545 var ftags = null; var onetag = true; 545 var ftags = null; var onetag = true;
546 var fs = 0; 546 var fs = 0;
547 for(var ff in this.files) { 547 for(var ff in this.files) {
548 if(this.selection.isSelected(ff) && this.files[ff].state=='pending' ) { 548 if(this.selection.isSelected(ff) && this.files[ff].state=='pending' ) {
549 ++fs; 549 ++fs;
550 if(ftitle==null) { 550 if(ftitle==null) {
551 ftitle = this.files[ff].title; 551 ftitle = this.files[ff].title;
552 }else if(ftitle!=this.files[ff].title) { 552 }else if(ftitle!=this.files[ff].title) {
553 onetitle = false; 553 onetitle = false;
554 } 554 }
555 if(ftags==null) { 555 if(ftags==null) {
556 ftags = this.files[ff].tags; 556 ftags = this.files[ff].tags;
557 }else if(ftags!=this.files[ff].tags) { 557 }else if(ftags!=this.files[ff].tags) {
558 onetag = false; 558 onetag = false;
559 } 559 }
560 } 560 }
561 } 561 }
562 if(fs) { 562 if(fs) {
563 this.upload_filename.value=''; 563 this.upload_filename.value='';
564 this.upload_filename.disabled = true; 564 this.upload_filename.disabled = true;
565 if(onetitle) 565 if(onetitle)
566 this.upload_title.value = ftitle; 566 this.upload_title.value = ftitle;
567 this.upload_title.disabled = false; 567 this.upload_title.disabled = false;
568 if(onetag) 568 if(onetag)
569 this.upload_tags.value = ftags; 569 this.upload_tags.value = ftags;
570 this.upload_tags.disabled = false; 570 this.upload_tags.disabled = false;
571 this.upload_file_preview.src = null; 571 this.upload_file_preview.src = null;
572 this.upload_failure.hidden = true; 572 this.upload_failure.hidden = true;
573 this.upload_file_props.hidden = false; 573 this.upload_file_props.hidden = false;
574 }else 574 }else
575 this.disableProps(); 575 this.disableProps();
576 this.upload_file_props.hidden = true; 576 this.upload_file_props.hidden = true;
577 } 577 }
578 }, 578 },
579 propsToSel: function(prop) { 579 propsToSel: function(prop) {
580 if(this.selection.count<=0) return; 580 if(this.selection.count<=0) return;
581 for(var ff in this.files) { 581 for(var ff in this.files) {
582 if(this.selection.isSelected(ff) && this.files[ff].state=='pending') { 582 if(this.selection.isSelected(ff) && this.files[ff].state=='pending') {
583 if(prop=='filename') this.files[ff].file = this.upload_filename.value; 583 if(prop=='filename') this.files[ff].file = this.upload_filename.value;
584 if(prop=='title') this.files[ff].title = this.upload_title.value; 584 if(prop=='title') this.files[ff].title = this.upload_title.value;
585 if(prop=='tags') this.files[ff].tags = this.upload_tags.value; 585 if(prop=='tags') this.files[ff].tags = this.upload_tags.value;
586 if(prop=='is_public') this.files[ff].is_public = this.upload_is_public.checked; 586 if(prop=='is_public') this.files[ff].is_public = this.upload_is_public.checked;
587 if(prop=='is_friends') this.files[ff].is_friend = this.upload_is_friends.checked; 587 if(prop=='is_friends') this.files[ff].is_friend = this.upload_is_friends.checked;
588 if(prop=='is_family') this.files[ff].is_family = this.upload_is_family.checked; 588 if(prop=='is_family') this.files[ff].is_family = this.upload_is_family.checked;
589 this.tree.invalidateRow(ff); 589 this.tree.invalidateRow(ff);
590 } 590 }
591 } 591 }
592 }, 592 },
593 593
594 on_upload: function() { 594 on_upload: function() {
595 this.selToProps(); 595 this.selToProps();
596 this.batch_ids = new Array(); 596 this.batch_ids = new Array();
597 this.upload_progress.value=0; 597 this.upload_progress.value=0;
598 this.upload_progress.setAttribute('hidden','false'); 598 this.upload_progress.setAttribute('hidden','false');
599 this.upload_worker(); 599 this.upload_worker();
600 }, 600 },
601 on_clear: function() { 601 on_clear: function() {
602 this.clear_list(); 602 this.clear_list();
603 }, 603 },
604 on_remove: function() { 604 on_remove: function() {
605 if(this.selection.count) { 605 if(this.selection.count) {
606 this.tree.beginUpdateBatch(); 606 this.tree.beginUpdateBatch();
607 for(var i=this.files.length-1;i>=0;--i) { 607 for(var i=this.files.length-1;i>=0;--i) {
608 if(this.selection.isSelected(i)) { 608 if(this.selection.isSelected(i)) {
609 this.files.splice(i,1); 609 this.files.splice(i,1);
610 this.rowCount--; 610 this.rowCount--;
611 } 611 }
612 } 612 }
613 this.tree.endUpdateBatch(); 613 this.tree.endUpdateBatch();
614 this.selection.clearSelection(); 614 this.selection.clearSelection();
615 } 615 }
616 }, 616 },
617 on_add: function() { 617 on_add: function() {
618 var ifp = Components.interfaces.nsIFilePicker; 618 var ifp = Components.interfaces.nsIFilePicker;
619 var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(ifp); 619 var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(ifp);
620 fp.init(window, "Select a File", ifp.modeOpenMultiple); 620 fp.init(window, "Select a File", ifp.modeOpenMultiple);
621 fp.appendFilters(ifp.filterImages); 621 fp.appendFilters(ifp.filterImages);
622 var rv = fp.show(); 622 var rv = fp.show();
623 if(rv==ifp.returnOK) { 623 if(rv==ifp.returnOK) {
624 var ff = fp.files; 624 var ff = fp.files;
625 while(ff.hasMoreElements()) { 625 while(ff.hasMoreElements()) {
626 var f = ff.getNext(); 626 var f = ff.getNext();
627 f.QueryInterface(Components.interfaces.nsIFile); 627 f.QueryInterface(Components.interfaces.nsIFile);
628 this.add(f.path); 628 this.add(f.path);
629 } 629 }
630 } 630 }
631 },
632 on_cmd_open: function(ev) {
633 if(this.selection.currentIndex<0) return;
634 var f = this.files[this.selection.currentIndex];
635 if(f.photoid) {
636 this.fireflix.openTab(
637 this.fireflix.flickr.make_uploader_edit_url(f.photoid)
638 );
639 }else{
640 this.fireflix.openTab( 'file://'+f.file);
641 }
631 } 642 }
632 }, 643 },
633 644
634 on_set_props: function() { 645 on_set_props: function() {
635 var pset = this.photosets.sets[this.photosets.selection.currentIndex]; 646 var pset = this.photosets.sets[this.photosets.selection.currentIndex];
636 window.openDialog( 647 window.openDialog(
637 "chrome://fireflix/content/photoset-props.xul", 648 "chrome://fireflix/content/photoset-props.xul",
638 null, "dependent,modal,dialog,chrome", this, 649 null, "dependent,modal,dialog,chrome", this,
639 pset ); 650 pset );
640 if(pset.dirty) { 651 if(pset.dirty) {
641 var _this = this; 652 var _this = this;
642 this.flickr.api_call( 653 this.flickr.api_call(
643 { 654 {
644 method: 'flickr.photosets.editMeta', 655 method: 'flickr.photosets.editMeta',
645 auth_token: 'default', 656 auth_token: 'default',
646 photoset_id: pset.id, 657 photoset_id: pset.id,
647 title: pset.title, 658 title: pset.title,
648 description: pset.description 659 description: pset.description
649 }, function(xr) { 660 }, function(xr) {
650 pset.dirty = false; 661 pset.dirty = false;
651 _this.flickr.api_call( 662 _this.flickr.api_call(
652 { 663 {
653 method: 'flickr.photosets.getPhotos', 664 method: 'flickr.photosets.getPhotos',
654 auth_token: 'default', 665 auth_token: 'default',
655 photoset_id: pset.id 666 photoset_id: pset.id
656 }, function(xr) { 667 }, function(xr) {
657 var x = xr.responseXML; 668 var x = xr.responseXML;
658 var xp = x.evaluate( 669 var xp = x.evaluate(
659 '/rsp/photoset/photo', x, null, 670 '/rsp/photoset/photo', x, null,
660 XPathResult.ORDERED_NODE_ITERATOR_TYPE, null ); 671 XPathResult.ORDERED_NODE_ITERATOR_TYPE, null );
661 var phids = new Array(); 672 var phids = new Array();
662 var priph = null; 673 var priph = null;
663 var n; while(n=xp.iterateNext()) { 674 var n; while(n=xp.iterateNext()) {
664 var pid = n.getAttribute('id'); 675 var pid = n.getAttribute('id');
665 phids.push( pid ); 676 phids.push( pid );
666 if(pid==pset.primary && n.getAttribute('isprimary')!='1') 677 if(pid==pset.primary && n.getAttribute('isprimary')!='1')
667 priph = pid; 678 priph = pid;
668 } 679 }
669 if(priph) { 680 if(priph) {
670 _this.flickr.api_call( 681 _this.flickr.api_call(
671 { 682 {
672 method: 'flickr.photosets.editPhotos', 683 method: 'flickr.photosets.editPhotos',
673 auth_token: 'default', 684 auth_token: 'default',
674 photoset_id: pset.id, 685 photoset_id: pset.id,
675 primary_photo_id: priph, 686 primary_photo_id: priph,
676 photo_ids: phids.join(',') 687 photo_ids: phids.join(',')
677 }, function() { }, function(x,s,c,m) { /* flickr.photosets.editPhotos */ 688 }, function() { }, function(x,s,c,m) { /* flickr.photosets.editPhotos */
678 _this.flickr_failure(x,s,c,m); 689 _this.flickr_failure(x,s,c,m);
679 } 690 }
680 ); 691 );
681 } 692 }
682 }, function(x,s,c,m) { /* flickr.photosets.getPhotos */ 693 }, function(x,s,c,m) { /* flickr.photosets.getPhotos */
683 _this.flickr_failure(x,s,c,m); 694 _this.flickr_failure(x,s,c,m);
684 } 695 }
685 ); 696 );
686 }, function(x,s,c,m) { /* flickr.photosets.editMeta */ 697 }, function(x,s,c,m) { /* flickr.photosets.editMeta */
687 _this.flickr_failure(x,s,c,m); 698 _this.flickr_failure(x,s,c,m);
688 } 699 }
689 ); 700 );
690 } 701 }
691 }, 702 },
692 on_refresh_sets: function() { 703 on_refresh_sets: function() {
693 this.refresh_sets(); 704 this.refresh_sets();
694 }, 705 },
695 on_cmd_sets_html: function(csfx,ev) { 706 on_cmd_sets_html: function(csfx,ev) {
696 var uti = csfx.charAt(0); var utl = csfx.charAt(1); 707 var uti = csfx.charAt(0); var utl = csfx.charAt(1);
697 var rv = this.build_html(this.photoset.photos,uti,utl); 708 var rv = this.build_html(this.photoset.photos,uti,utl);
698 this.popup_content(rv); 709 this.popup_content(rv);
699 }, 710 },
700 on_cmd_setphotos_html: function(csfx,ev) { 711 on_cmd_setphotos_html: function(csfx,ev) {
701 var uti = csfx.charAt(0); var utl = csfx.charAt(1); 712 var uti = csfx.charAt(0); var utl = csfx.charAt(1);
702 var rv = ''; 713 var rv = '';
703 for(var p in this.photoset.photos) { 714 for(var p in this.photoset.photos) {
704 if(this.photoset.selection.isSelected(p)) 715 if(this.photoset.selection.isSelected(p))
705 rv += this.photo_html(this.photoset.photos[p],uti,utl)+'\n'; 716 rv += this.photo_html(this.photoset.photos[p],uti,utl)+'\n';
706 } 717 }
707 this.popup_content(rv); 718 this.popup_content(rv);
708 }, 719 },
709 720
710 on_cmd_uploads_html: function(csfx,ev) { 721 on_cmd_uploads_html: function(csfx,ev) {
711 var uti = csfx.charAt(0); var utl = csfx.charAt(1); 722 var uti = csfx.charAt(0); var utl = csfx.charAt(1);
712 var pids = new Array(); 723 var pids = new Array();
713 for(var f in this.uploads.files) { 724 for(var f in this.uploads.files) {
714 if(this.uploads.selection.isSelected(f)) 725 if(this.uploads.selection.isSelected(f))
715 if(this.uploads.files[f].photoid) 726 if(this.uploads.files[f].photoid)
716 pids.push(this.uploads.files[f].photoid); 727 pids.push(this.uploads.files[f].photoid);
717 } 728 }
718 var pp = this.uploads.rowCount*2; if(pp>500) pp = 500; 729 var pp = this.uploads.rowCount*2; if(pp>500) pp = 500;
719 var _this = this; 730 var _this = this;
720 this.flickr.api_call( 731 this.flickr.api_call(
721 { 732 {
722 method: 'flickr.photos.search', 733 method: 'flickr.photos.search',
723 auth_token: 'default', 734 auth_token: 'default',
724 extras: 'original_format', 735 extras: 'original_format',
725 user_id: 'me', 736 user_id: 'me',
726 per_page: pp 737 per_page: pp
727 }, 738 },
728 function(xr) { 739 function(xr) {
729 var x = xr.responseXML; 740 var x = xr.responseXML;
730 var rv = ''; 741 var rv = '';
731 for(var pn in pids) { 742 for(var pn in pids) {
732 var p = pids[pn]; 743 var p = pids[pn];
733 var pp = new Photo(xp_node('/rsp/photos/photo[@id='+p+']',x)); 744 var pp = new Photo(xp_node('/rsp/photos/photo[@id='+p+']',x));
734 rv += _this.photo_html(pp,uti,utl)+'\n'; 745 rv += _this.photo_html(pp,uti,utl)+'\n';
735 } 746 }
736 _this.popup_content(rv); 747 _this.popup_content(rv);
737 }, function(x,s,c,m) { 748 }, function(x,s,c,m) {
738 _this.flickr_failure(x,s,c,m); 749 _this.flickr_failure(x,s,c,m);
739 } 750 }
740 ); 751 );
741 }, 752 },
742 753
743 /* 754 /*
744 * 755 *
745 */ 756 */
746 foundphotos: { 757 foundphotos: {
747 fireflix: null, 758 fireflix: null,
748 init: function(f) { 759 init: function(f) {
749 this.fireflix = f; 760 this.fireflix = f;
750 pull_elements(this,document,[ 761 pull_elements(this,document,[
751 'search_for','search_tags','search_mine', 762 'search_for','search_tags','search_mine',
752 'searchresult_props','search_photo', 763 'searchresult_props','search_photo',
753 'searchresult_title','searchresult_description', 764 'searchresult_title','searchresult_description',
754 'search_page','cmd_search_prev_page','cmd_search_next_page' 765 'search_page','cmd_search_prev_page','cmd_search_next_page'
755 ]); 766 ]);
756 document.getElementById('searchresults').view = this; 767 document.getElementById('searchresults').view = this;
757 }, 768 },
758 photos: new Array(), 769 photos: new Array(),
@@ -788,228 +799,226 @@ var fireflix = {
788 this.rowCount = this.photos.length; 799 this.rowCount = this.photos.length;
789 this.tree.endUpdateBatch(); 800 this.tree.endUpdateBatch();
790 }, 801 },
791 paging: { 802 paging: {
792 pars: null, 803 pars: null,
793 page: null, pages: null, perpage: null, total: null 804 page: null, pages: null, perpage: null, total: null
794 }, 805 },
795 search_photos: function() { 806 search_photos: function() {
796 var pars = { 807 var pars = {
797 method: 'flickr.photos.search', 808 method: 'flickr.photos.search',
798 auth_token: 'default', 809 auth_token: 'default',
799 extras: 'license,date_upload,date_taken,owner_name,icon_server,original_format,last_update,geo' 810 extras: 'license,date_upload,date_taken,owner_name,icon_server,original_format,last_update,geo'
800 }; 811 };
801 if(this.search_mine.checked) 812 if(this.search_mine.checked)
802 pars.user_id='me'; 813 pars.user_id='me';
803 if(this.search_tags.checked) { 814 if(this.search_tags.checked) {
804 pars.tags=this.search_for.value.split(/ +/).join(','); 815 pars.tags=this.search_for.value.split(/ +/).join(',');
805 }else{ 816 }else{
806 pars.text=this.search_for.value; 817 pars.text=this.search_for.value;
807 } 818 }
808 this.paging.pars = new Object(); 819 this.paging.pars = new Object();
809 this.paging.page = null; this.paging.pages = null; 820 this.paging.page = null; this.paging.pages = null;
810 this.paging.perpage = null; this.paging.total = null; 821 this.paging.perpage = null; this.paging.total = null;
811 for(var p in pars) this.paging.pars[p] = pars[p]; 822 for(var p in pars) this.paging.pars[p] = pars[p];
812 this.perform_search(pars); 823 this.perform_search(pars);
813 }, 824 },
814 perform_search: function(p) { 825 perform_search: function(p) {
815 var _this = this; 826 var _this = this;
816 this.fireflix.flickr.api_call( p, 827 this.fireflix.flickr.api_call( p,
817 function(xr) { 828 function(xr) {
818 var x = xr.responseXML; 829 var x = xr.responseXML;
819 var xp = xp_nodes('/rsp/photos/photo',x); 830 var xp = xp_nodes('/rsp/photos/photo',x);
820 _this.importXPR(xp); 831 _this.importXPR(xp);
821 _this.tree.ensureRowIsVisible(0); 832 _this.tree.ensureRowIsVisible(0);
822 xp = xp_node('/rsp/photos',x); 833 xp = xp_node('/rsp/photos',x);
823 _this.paging.page = parseInt(xp.getAttribute('page')); 834 _this.paging.page = parseInt(xp.getAttribute('page'));
824 _this.paging.pages = parseInt(xp.getAttribute('pages')); 835 _this.paging.pages = parseInt(xp.getAttribute('pages'));
825 _this.paging.perpage = parseInt(xp.getAttribute('perpage')); 836 _this.paging.perpage = parseInt(xp.getAttribute('perpage'));
826 _this.paging.total = parseInt(xp.getAttribute('total')); 837 _this.paging.total = parseInt(xp.getAttribute('total'));
827 _this.update_paging(); 838 _this.update_paging();
828 _this.on_select(); 839 _this.on_select();
829 }, function(x,s,c,m) { 840 }, function(x,s,c,m) {
830 _this.fireflix.flickr_failure(x,s,c,m); 841 _this.fireflix.flickr_failure(x,s,c,m);
831 } 842 }
832 ); 843 );
833 }, 844 },
834 on_cmd_prev: function(ev) { 845 on_cmd_prev: function(ev) {
835 var pars = new Object(); 846 var pars = new Object();
836 for(var p in this.paging.pars) pars[p] = this.paging.pars[p]; 847 for(var p in this.paging.pars) pars[p] = this.paging.pars[p];
837 pars.page=this.paging.page-1; pars.per_page=this.paging.perpage; 848 pars.page=this.paging.page-1; pars.per_page=this.paging.perpage;
838 this.perform_search(pars); 849 this.perform_search(pars);
839 }, 850 },
840 on_cmd_next: function(ev) { 851 on_cmd_next: function(ev) {
841 var pars = new Object(); 852 var pars = new Object();
842 for(var p in this.paging.pars) pars[p] = this.paging.pars[p]; 853 for(var p in this.paging.pars) pars[p] = this.paging.pars[p];
843 pars.page=this.paging.page+1; pars.per_page=this.paging.perpage; 854 pars.page=this.paging.page+1; pars.per_page=this.paging.perpage;
844 this.perform_search(pars); 855 this.perform_search(pars);
845 }, 856 },
846 update_paging: function() { 857 update_paging: function() {
847 if(! (this.paging.pars && this.paging.page && this.paging.pages) ) { 858 if(! (this.paging.pars && this.paging.page && this.paging.pages) ) {
848 this.search_page.value=''; this.search_page.hidden = true; 859 this.search_page.value=''; this.search_page.hidden = true;
849 this.cmd_search_prev_page.setAttribute('disabled','true'); 860 this.cmd_search_prev_page.setAttribute('disabled','true');
850 this.cmd_search_next_page.setAttribute('disabled','true'); 861 this.cmd_search_next_page.setAttribute('disabled','true');
851 }else{ 862 }else{
852 this.search_page.value=this.fireflix.loc_strings.getFormattedString('search_page',[this.paging.page,this.paging.pages]); 863 this.search_page.value=this.fireflix.loc_strings.getFormattedString('search_page',[this.paging.page,this.paging.pages]);
853 this.search_page.hidden=false; 864 this.search_page.hidden=false;
854 this.cmd_search_prev_page.setAttribute('disabled',(this.paging.page>1)?'false':'true'); 865 this.cmd_search_prev_page.setAttribute('disabled',(this.paging.page>1)?'false':'true');
855 this.cmd_search_next_page.setAttribute('disabled',(this.paging.page<this.paging.pages)?'false':'true'); 866 this.cmd_search_next_page.setAttribute('disabled',(this.paging.page<this.paging.pages)?'false':'true');
856 } 867 }
857 }, 868 },
858 render_description_frame: function(content) { 869 render_description_frame: function(content) {
859 this.searchresult_description.innerHTML = ''; 870 this.searchresult_description.innerHTML = '';
860 if(content) { 871 if(content) {
861 var dp = new DOMParser(); 872 var dp = new DOMParser();
862 var pd = dp.parseFromString( 873 var pd = dp.parseFromString(
863 '<div xmlns="http://www.w3.org/1999/xhtml">'+content+'</div>', 'text/xml' ); 874 '<div xmlns="http://www.w3.org/1999/xhtml">'+content+'</div>', 'text/xml' );
864 var de = pd.documentElement; 875 var de = pd.documentElement;
865 if(de.tagName=='parsererror') 876 if(de.tagName=='parsererror')
866 this.searchresult_description.innerHTML=this.fireflix.loc_strings.getString('broken_description'); 877 this.searchresult_description.innerHTML=this.fireflix.loc_strings.getString('broken_description');
867 else 878 else
868 this.searchresult_description.appendChild(de); 879 this.searchresult_description.appendChild(de);
869 /* of all linking elements flickr only allows a */ 880 /* of all linking elements flickr only allows a */
870 var as = this.searchresult_description.getElementsByTagName('a'); 881 var as = this.searchresult_description.getElementsByTagName('a');
871 for(var a=0;a<as.length;++a) 882 for(var a=0;a<as.length;++a)
872 as.item(a).setAttribute('target','_blank'); 883 as.item(a).setAttribute('target','_blank');
873 } 884 }
874 }, 885 },
875 on_select: function() { 886 on_select: function() {
876 if(this.selection.currentIndex<0) { 887 if(this.selection.currentIndex<0) {
877 this.searchresult_props.hidden = true; 888 this.searchresult_props.hidden = true;
878 }else{ 889 }else{
879 var p = this.photos[this.selection.currentIndex]; 890 var p = this.photos[this.selection.currentIndex];
880 if(!p) { 891 if(!p) {
881 this.searchresult_props.hidden = true; 892 this.searchresult_props.hidden = true;
882 }else{ 893 }else{
883 this.search_photo.src = this.fireflix.flickr.make_photo_url(p,'t'); 894 this.search_photo.src = this.fireflix.flickr.make_photo_url(p,'t');
884 this.searchresult_title.value = p.title; 895 this.searchresult_title.value = p.title;
885 this.searchresult_title.tooltipText = p.title; 896 this.searchresult_title.tooltipText = p.title;
886 this.render_description_frame(null); 897 this.render_description_frame(null);
887 if(p.description==null && p.description==undefined) { 898 if(p.description==null && p.description==undefined) {
888 var pid = p.id; 899 var pid = p.id;
889 var ci = this.selection.currentIndex; 900 var ci = this.selection.currentIndex;
890 var _this = this; 901 var _this = this;
891 this.fireflix.flickr.api_call( 902 this.fireflix.flickr.api_call(
892 { 903 {
893 method: 'flickr.photos.getInfo', 904 method: 'flickr.photos.getInfo',
894 auth_token: 'default', 905 auth_token: 'default',
895 photo_id: p.id, 906 photo_id: p.id,
896 secret: p.secret 907 secret: p.secret
897 }, function(xr) { 908 }, function(xr) {
898 var pp = _this.photos[ci]; 909 var pp = _this.photos[ci];
899 if(ci==_this.selection.currentIndex && pp.id==pid) { 910 if(ci==_this.selection.currentIndex && pp.id==pid) {
900 var n = xp_node('/rsp/photo',xr.responseXML); 911 var n = xp_node('/rsp/photo',xr.responseXML);
901 pp.fromNode_(n); 912 pp.fromNode_(n);
902 _this.render_description_frame(pp.description); 913 _this.render_description_frame(pp.description);
903 } 914 }
904 }, function(x,s,c,m) { 915 }, function(x,s,c,m) {
905 _this.fireflix.flickr_failure(x,s,c,m); 916 _this.fireflix.flickr_failure(x,s,c,m);
906 } 917 }
907 ); 918 );
908 this.searchresult_props.hidden = false; 919 this.searchresult_props.hidden = false;
909 }else{ 920 }else{
910 this.render_description_frame(p.description); 921 this.render_description_frame(p.description);
911 } 922 }
912 } 923 }
913 } 924 }
914 }, 925 },
915 on_cmd_open: function(ev) { 926 on_cmd_open: function(ev) {
916 if(this.selection.currentIndex<0) 927 if(this.selection.currentIndex<0) return;
917 return;
918 var p = this.photos[this.selection.currentIndex]; 928 var p = this.photos[this.selection.currentIndex];
919 if(!p.id) 929 if(!p.id) return;
920 return;
921 this.fireflix.openTab(this.fireflix.flickr.make_photo_url(p,'p')); 930 this.fireflix.openTab(this.fireflix.flickr.make_photo_url(p,'p'));
922 } 931 }
923 }, 932 },
924 933
925 photo_html: function(p,i,l) { 934 photo_html: function(p,i,l) {
926 // TODO: add alt/title when possible 935 // TODO: add alt/title when possible
927 var rv = 936 var rv =
928 '<a href="'+this.flickr.make_photo_url(p,l)+'">' + 937 '<a href="'+this.flickr.make_photo_url(p,l)+'">' +
929 '<img src="'+this.flickr.make_photo_url(p,i)+'" />'+ 938 '<img src="'+this.flickr.make_photo_url(p,i)+'" />'+
930 '</a>'; 939 '</a>';
931 return rv; 940 return rv;
932 }, 941 },
933 build_html: function(photos,uti,utl) { 942 build_html: function(photos,uti,utl) {
934 var rv = ''; 943 var rv = '';
935 for(var i in photos) { 944 for(var i in photos) {
936 var p = photos[i]; 945 var p = photos[i];
937 rv += this.photo_html(p,uti,utl)+'\n'; 946 rv += this.photo_html(p,uti,utl)+'\n';
938 } 947 }
939 return rv; 948 return rv;
940 }, 949 },
941 950
942 popup_content: function(s) { 951 popup_content: function(s) {
943 window.openDialog( 952 window.openDialog(
944 "chrome://fireflix/content/generated-content.xul", 953 "chrome://fireflix/content/generated-content.xul",
945 null, "dialog,chrome", this, s ); 954 null, "dialog,chrome", this, s );
946 }, 955 },
947 copy_to_clipboard: function(s) { 956 copy_to_clipboard: function(s) {
948 var ch = Components.classes["@mozilla.org/widget/clipboardhelper;1"] 957 var ch = Components.classes["@mozilla.org/widget/clipboardhelper;1"]
949 .getService(Components.interfaces.nsIClipboardHelper); 958 .getService(Components.interfaces.nsIClipboardHelper);
950 ch.copyString(s); 959 ch.copyString(s);
951 }, 960 },
952 openTab: function(l) { 961 openTab: function(l) {
953 var wm = Components.classes['@mozilla.org/appshell/window-mediator;1'].getService( 962 var wm = Components.classes['@mozilla.org/appshell/window-mediator;1'].getService(
954 Components.interfaces.nsIWindowMediator ); 963 Components.interfaces.nsIWindowMediator );
955 var bw = wm.getMostRecentWindow('navigator:browser'); 964 var bw = wm.getMostRecentWindow('navigator:browser');
956 var b = bw.getBrowser(); 965 var b = bw.getBrowser();
957 var t = b.addTab(l); 966 var t = b.addTab(l);
958 b.selectedTab = t; 967 b.selectedTab = t;
959 }, 968 },
960 969
961 build_menus: function() { 970 build_menus: function() {
962 this.append_html_menu( 971 this.append_html_menu(
963 document.getElementById('sets_html_menu'), 972 document.getElementById('sets_html_menu'),
964 'stm_','m_bop','cmdset_sets','cmd_sets_html' 973 'stm_','m_bop','cmdset_sets','cmd_sets_html'
965 ); 974 );
966 this.append_html_menu( 975 this.append_html_menu(
967 document.getElementById('setphotos_html_menu'), 976 document.getElementById('setphotos_html_menu'),
968 'stm_','m_bop','cmdset_setphotos','cmd_setphotos_html' 977 'stm_','m_bop','cmdset_setphotos','cmd_setphotos_html'
969 ); 978 );
970 this.append_html_menu( 979 this.append_html_menu(
971 document.getElementById('uploads_html_menu'), 980 document.getElementById('uploads_html_menu'),
972 'stm_','m_bop','cmdset_uploads','cmd_uploads_html' 981 'stm_','m_bop','cmdset_uploads','cmd_uploads_html'
973 ); 982 );
974 return; 983 return;
975 }, 984 },
976 append_html_menu: function(m,imgt,lnkt,csid,cpfx) { 985 append_html_menu: function(m,imgt,lnkt,csid,cpfx) {
977 var mp = m.appendChild(document.createElement('menupopup')); 986 var mp = m.appendChild(document.createElement('menupopup'));
978 var t; 987 var t;
979 t=mp.appendChild(document.createElement('menuitem')); 988 t=mp.appendChild(document.createElement('menuitem'));
980 t.setAttribute('label',this.loc_strings.getString('menutitle_Images')); 989 t.setAttribute('label',this.loc_strings.getString('menutitle_Images'));
981 t.setAttribute('class','menuhead');t.setAttribute('disabled','true'); 990 t.setAttribute('class','menuhead');t.setAttribute('disabled','true');
982 mp.appendChild(document.createElement('menuseparator')); 991 mp.appendChild(document.createElement('menuseparator'));
983 var cs = document.getElementById(csid); 992 var cs = document.getElementById(csid);
984 for(var iti=0;iti<imgt.length;++iti) { 993 for(var iti=0;iti<imgt.length;++iti) {
985 t = mp.appendChild(document.createElement('menu')); 994 t = mp.appendChild(document.createElement('menu'));
986 t.setAttribute('label',this.loc_strings.getString('urltype_'+imgt.charAt(iti))); 995 t.setAttribute('label',this.loc_strings.getString('urltype_'+imgt.charAt(iti)));
987 var smp = t.appendChild(document.createElement('menupopup')); 996 var smp = t.appendChild(document.createElement('menupopup'));
988 t=smp.appendChild(document.createElement('menuitem')); 997 t=smp.appendChild(document.createElement('menuitem'));
989 t.setAttribute('label',this.loc_strings.getString('menutitle_Links')); 998 t.setAttribute('label',this.loc_strings.getString('menutitle_Links'));
990 t.setAttribute('class','menuhead');t.setAttribute('disabled','true'); 999 t.setAttribute('class','menuhead');t.setAttribute('disabled','true');
991 smp.appendChild(document.createElement('menuseparator')); 1000 smp.appendChild(document.createElement('menuseparator'));
992 for(var lti=0;lti<lnkt.length;++lti) { 1001 for(var lti=0;lti<lnkt.length;++lti) {
993 var csfx = imgt.charAt(iti)+lnkt.charAt(lti); 1002 var csfx = imgt.charAt(iti)+lnkt.charAt(lti);
994 t=smp.appendChild(document.createElement('menuitem')); 1003 t=smp.appendChild(document.createElement('menuitem'));
995 t.setAttribute('label',this.loc_strings.getString('urltype_'+lnkt.charAt(lti))); 1004 t.setAttribute('label',this.loc_strings.getString('urltype_'+lnkt.charAt(lti)));
996 t.setAttribute('command',cpfx+'_'+csfx); 1005 t.setAttribute('command',cpfx+'_'+csfx);
997 t=cs.appendChild(document.createElement('command')); 1006 t=cs.appendChild(document.createElement('command'));
998 t.setAttribute('id',cpfx+'_'+csfx); 1007 t.setAttribute('id',cpfx+'_'+csfx);
999 t.setAttribute('oncommand','fireflix.on_'+cpfx+"('"+csfx+"',event)"); 1008 t.setAttribute('oncommand','fireflix.on_'+cpfx+"('"+csfx+"',event)");
1000 } 1009 }
1001 } 1010 }
1002 return mp; 1011 return mp;
1003 }, 1012 },
1004 1013
1005 flickr_failure: function(x,s,c,m) { 1014 flickr_failure: function(x,s,c,m) {
1006 if(c==98) { // Invalid auth token 1015 if(c==98) { // Invalid auth token
1007 this.flickr.reset_token(); 1016 this.flickr.reset_token();
1008 this.set_auth_state(false,false); 1017 this.set_auth_state(false,false);
1009 return; 1018 return;
1010 } 1019 }
1011 // TODO: is that beauty? 1020 // TODO: is that beauty?
1012 alert('flickr api call failed\n'+c+' '+m); 1021 alert('flickr api call failed\n'+c+' '+m);
1013 } 1022 }
1014 1023
1015}; 1024};