summaryrefslogtreecommitdiffabout
authorMichael Krelin <hacker@klever.net>2006-11-16 23:04:06 (UTC)
committer Michael Krelin <hacker@klever.net>2006-11-16 23:04:06 (UTC)
commita5df65b1ec3c86cba0e2f12d5f51e3cb29c99353 (patch) (unidiff)
treecd0f7c5f5506fc599c083d6632a7e74506baf6da
parent77bede81381ed1adbda91a119128712a3688b4bd (diff)
downloadfireflix-a5df65b1ec3c86cba0e2f12d5f51e3cb29c99353.zip
fireflix-a5df65b1ec3c86cba0e2f12d5f51e3cb29c99353.tar.gz
fireflix-a5df65b1ec3c86cba0e2f12d5f51e3cb29c99353.tar.bz2
Building HTML for photos selection in sets browser
git-svn-id: http://svn.klever.net/kin/fireflix/trunk@231 fe716a7a-6dde-0310-88d9-d003556173a8
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--content/fireflix-panel.xul11
-rw-r--r--content/fireflix.js13
-rw-r--r--locale/en-US/fireflix.dtd2
3 files changed, 25 insertions, 1 deletions
diff --git a/content/fireflix-panel.xul b/content/fireflix-panel.xul
index 62862a9..0e511c5 100644
--- a/content/fireflix-panel.xul
+++ b/content/fireflix-panel.xul
@@ -29,96 +29,105 @@
29 oncommand="fireflix.on_cmd_auth_done()" disabled="true"/> 29 oncommand="fireflix.on_cmd_auth_done()" disabled="true"/>
30 <command id="cmd_auth_open_flickr" label="&panel.auth.flickr.label;" 30 <command id="cmd_auth_open_flickr" label="&panel.auth.flickr.label;"
31 oncommand="fireflix.openTab('http://www.flickr.com/')" /> 31 oncommand="fireflix.openTab('http://www.flickr.com/')" />
32 <command id="cmd_auth_unauth" label="&panel.auth.unauth.label;" 32 <command id="cmd_auth_unauth" label="&panel.auth.unauth.label;"
33 oncommand="fireflix.on_cmd_auth_unauth()" /> 33 oncommand="fireflix.on_cmd_auth_unauth()" />
34 <command id="cmd_help" label="?" 34 <command id="cmd_help" label="?"
35 oncommand="fireflix.openTab('chrome://fireflix/content/help.xml')" /> 35 oncommand="fireflix.openTab('chrome://fireflix/content/help.xml')" />
36 </commandset> 36 </commandset>
37 37
38 <popupset> 38 <popupset>
39 <popup id="auth_menu"> 39 <popup id="auth_menu">
40 <menuitem command="cmd_auth_auth"/> 40 <menuitem command="cmd_auth_auth"/>
41 <menuitem command="cmd_auth_done" hidden="true" id="menu_auth_done"/> 41 <menuitem command="cmd_auth_done" hidden="true" id="menu_auth_done"/>
42 <menuitem command="cmd_auth_unauth" /> 42 <menuitem command="cmd_auth_unauth" />
43 <menuseparator/> 43 <menuseparator/>
44 <menuitem command="cmd_auth_open_flickr"/> 44 <menuitem command="cmd_auth_open_flickr"/>
45 </popup> 45 </popup>
46 </popupset> 46 </popupset>
47 47
48 <commandset id="cmdset_search"> 48 <commandset id="cmdset_search">
49 <command id="cmd_search" label="&panel.search.cmd_search.label;" 49 <command id="cmd_search" label="&panel.search.cmd_search.label;"
50 oncommand="fireflix.foundphotos.search_photos()"/> 50 oncommand="fireflix.foundphotos.search_photos()"/>
51 <command id="cmd_search_open" label="&panel.search.cmd_search_open.label;" 51 <command id="cmd_search_open" label="&panel.search.cmd_search_open.label;"
52 oncommand="fireflix.foundphotos.on_cmd_open(event)" /> 52 oncommand="fireflix.foundphotos.on_cmd_open(event)" />
53 <command id="cmd_search_prev_page" 53 <command id="cmd_search_prev_page"
54 label="&panel.search.cmd_search_prev_page.label;" 54 label="&panel.search.cmd_search_prev_page.label;"
55 oncommand="fireflix.foundphotos.on_cmd_prev(event)" disabled="true"/> 55 oncommand="fireflix.foundphotos.on_cmd_prev(event)" disabled="true"/>
56 <command id="cmd_search_next_page" 56 <command id="cmd_search_next_page"
57 label="&panel.search.cmd_search_next_page.label;" 57 label="&panel.search.cmd_search_next_page.label;"
58 oncommand="fireflix.foundphotos.on_cmd_next(event)" disabled="true"/> 58 oncommand="fireflix.foundphotos.on_cmd_next(event)" disabled="true"/>
59 </commandset> 59 </commandset>
60 60
61 <commandset id="cmdset_sets"> 61 <commandset id="cmdset_sets">
62 <command id="cmd_refresh_sets" label="&panel.sets.cmd_refresh_sets;" 62 <command id="cmd_refresh_sets" label="&panel.sets.cmd_refresh_sets;"
63 oncommand="fireflix.on_refresh_sets()" /> 63 oncommand="fireflix.on_refresh_sets()" />
64 <command id="cmd_set_props" label="&panel.sets.cmd_properties;" 64 <command id="cmd_set_props" label="&panel.sets.cmd_properties;"
65 oncommand="fireflix.on_set_props()" disabled="true" /> 65 oncommand="fireflix.on_set_props()" disabled="true" />
66 </commandset> 66 </commandset>
67 67
68 <popupset> 68 <popupset>
69 <popup id="sets_menu"> 69 <popup id="sets_menu">
70 <menuitem command="cmd_set_props"/> 70 <menuitem command="cmd_set_props"/>
71 <menuitem command="cmd_refresh_sets"/> 71 <menuitem command="cmd_refresh_sets"/>
72 <menuseparator/> 72 <menuseparator/>
73 <menu label="&panel.sets.generate_html;" id="sets_html_menu"/> 73 <menu label="&panel.sets.generate_html;" id="sets_html_menu"/>
74 </popup> 74 </popup>
75 </popupset> 75 </popupset>
76 76
77 <commandset id="cmdset_setphotos">
78 </commandset>
79
80 <popupset>
81 <popup id="setphotos_menu">
82 <menu label="&panel.setphotos.generate_html;" id="setphotos_html_menu"/>
83 </popup>
84 </popupset>
85
77 <commandset id="cmdset_uploads"> 86 <commandset id="cmdset_uploads">
78 <command id="cmd_uploads_clear" label="&panel.uploads.clear.label;" 87 <command id="cmd_uploads_clear" label="&panel.uploads.clear.label;"
79 oncommand="fireflix.uploads.on_clear()" /> 88 oncommand="fireflix.uploads.on_clear()" />
80 <command id="cmd_uploads_upload" label="&panel.uploads.upload.label;" 89 <command id="cmd_uploads_upload" label="&panel.uploads.upload.label;"
81 oncommand="fireflix.uploads.on_upload()" /> 90 oncommand="fireflix.uploads.on_upload()" />
82 <command id="cmd_uploads_remove" label="&panel.uploads.remove.label;" 91 <command id="cmd_uploads_remove" label="&panel.uploads.remove.label;"
83 oncommand="fireflix.uploads.on_remove()" /> 92 oncommand="fireflix.uploads.on_remove()" />
84 <command id="cmd_uploads_add" label="&panel.uploads.add.label;" 93 <command id="cmd_uploads_add" label="&panel.uploads.add.label;"
85 oncommand="fireflix.uploads.on_add()" /> 94 oncommand="fireflix.uploads.on_add()" />
86 </commandset> 95 </commandset>
87 96
88 <popupset> 97 <popupset>
89 <popup id="uploads_menu"> 98 <popup id="uploads_menu">
90 <menuitem command="cmd_uploads_add"/> 99 <menuitem command="cmd_uploads_add"/>
91 <menuitem command="cmd_uploads_clear"/> 100 <menuitem command="cmd_uploads_clear"/>
92 <menuitem command="cmd_uploads_remove"/> 101 <menuitem command="cmd_uploads_remove"/>
93 <menuseparator/> 102 <menuseparator/>
94 <menuitem command="cmd_uploads_upload"/> 103 <menuitem command="cmd_uploads_upload"/>
95 <menuseparator/> 104 <menuseparator/>
96 <menu label="&panel.uploads.generate_html;" id="uploads_html_menu"/> 105 <menu label="&panel.uploads.generate_html;" id="uploads_html_menu"/>
97 </popup> 106 </popup>
98 </popupset> 107 </popupset>
99 108
100 <vbox class="wholething" flex="1"> 109 <vbox class="wholething" flex="1">
101 110
102 <groupbox context="auth_menu"> 111 <groupbox context="auth_menu">
103 <caption label="&panel.auth_info;"/> 112 <caption label="&panel.auth_info;"/>
104 <hbox> 113 <hbox>
105 <vbox pack="center" flex="1"> 114 <vbox pack="center" flex="1">
106 <label id="auth_info" value="&panel.no_auth_info;" disabled="true" crop="end"/> 115 <label id="auth_info" value="&panel.no_auth_info;" disabled="true" crop="end"/>
107 </vbox> 116 </vbox>
108 <button class="lean" id="b_auth" command="cmd_auth_auth"/> 117 <button class="lean" id="b_auth" command="cmd_auth_auth"/>
109 <button class="lean" id="b_auth_done" command="cmd_auth_done" hidden="true"/> 118 <button class="lean" id="b_auth_done" command="cmd_auth_done" hidden="true"/>
110 <button class="lean" command="cmd_auth_open_flickr" 119 <button class="lean" command="cmd_auth_open_flickr"
111 tooltiptext="&panel.auth.flickr.tip;"/> 120 tooltiptext="&panel.auth.flickr.tip;"/>
112 <button class="lean" command="cmd_help"/> 121 <button class="lean" command="cmd_help"/>
113 </hbox> 122 </hbox>
114 </groupbox> 123 </groupbox>
115 124
116 <tabbox flex="1" id="fireflix_tabs"> 125 <tabbox flex="1" id="fireflix_tabs">
117 126
118 <tabs> 127 <tabs>
119 <tab label="&panel.tabs.search;"/> 128 <tab label="&panel.tabs.search;"/>
120 <tab label="&panel.tabs.sets;"/> 129 <tab label="&panel.tabs.sets;"/>
121 <tab label="&panel.tabs.tags;" hidden="true"/> <!-- TODO: --> 130 <tab label="&panel.tabs.tags;" hidden="true"/> <!-- TODO: -->
122 <tab id="tab_upload" label="&panel.tabs.upload;"/> 131 <tab id="tab_upload" label="&panel.tabs.upload;"/>
123 </tabs> 132 </tabs>
124 133
@@ -154,97 +163,97 @@
154 ondblclick="fireflix.foundphotos.on_cmd_open(event)" 163 ondblclick="fireflix.foundphotos.on_cmd_open(event)"
155 onkeypress="if(event.keyCode==event.DOM_VK_RETURN) fireflix.foundphotos.on_cmd_open(event)"> 164 onkeypress="if(event.keyCode==event.DOM_VK_RETURN) fireflix.foundphotos.on_cmd_open(event)">
156 <treecols> 165 <treecols>
157 <treecol id="sr_title" label="&panel.search.col.title.label;" flex="2" crop="end" align="start" /> 166 <treecol id="sr_title" label="&panel.search.col.title.label;" flex="2" crop="end" align="start" />
158 </treecols> 167 </treecols>
159 <treechildren/> 168 <treechildren/>
160 </tree> 169 </tree>
161 <groupbox id="searchresult_props" orient="horizontal" hidden="true"> 170 <groupbox id="searchresult_props" orient="horizontal" hidden="true">
162 <vbox width="100" pack="center"> 171 <vbox width="100" pack="center">
163 <hbox pack="center"> 172 <hbox pack="center">
164 <image id="search_photo" 173 <image id="search_photo"
165 ondblclick="fireflix.foundphotos.on_cmd_open(event)"/> 174 ondblclick="fireflix.foundphotos.on_cmd_open(event)"/>
166 </hbox> 175 </hbox>
167 </vbox> 176 </vbox>
168 <vbox flex="1"> 177 <vbox flex="1">
169 <label id="searchresult_title" crop="end"/> 178 <label id="searchresult_title" crop="end"/>
170 <hbox flex="1" pack="center"> 179 <hbox flex="1" pack="center">
171 <div flex="1" id="searchresult_description" xmlns="http://www.w3.org/1999/xhtml"/> 180 <div flex="1" id="searchresult_description" xmlns="http://www.w3.org/1999/xhtml"/>
172 </hbox> 181 </hbox>
173 <hbox pack="end"> 182 <hbox pack="end">
174 <button command="cmd_search_open"/> 183 <button command="cmd_search_open"/>
175 </hbox> 184 </hbox>
176 </vbox> 185 </vbox>
177 </groupbox> 186 </groupbox>
178 </vbox> 187 </vbox>
179 </tabpanel> 188 </tabpanel>
180 189
181 <tabpanel id="tabpanel_sets" flex="1" 190 <tabpanel id="tabpanel_sets" flex="1"
182 onkeypress="if(event.keyCode==event.DOM_VK_RETURN) 191 onkeypress="if(event.keyCode==event.DOM_VK_RETURN)
183 document.getElementById('setphotos').focus()"> 192 document.getElementById('setphotos').focus()">
184 <vbox flex="1"> 193 <vbox flex="1">
185 <tree id="setslist" rows="2" onselect="fireflix.photosets.on_select()" 194 <tree id="setslist" rows="2" onselect="fireflix.photosets.on_select()"
186 flex="1" context="sets_menu" 195 flex="1" context="sets_menu"
187 ondblclick="fireflix.photosets.on_cmd_open_in_flickr(event)" 196 ondblclick="fireflix.photosets.on_cmd_open_in_flickr(event)"
188 > 197 >
189 <treecols> 198 <treecols>
190 <treecol id="sl_name" label="&panel.sets.name.label;" flex="4" crop="end" align="start" tooltiptext="&panel.sets.name.tip;"/> 199 <treecol id="sl_name" label="&panel.sets.name.label;" flex="4" crop="end" align="start" tooltiptext="&panel.sets.name.tip;"/>
191 <splitter class="tree-splitter" /> 200 <splitter class="tree-splitter" />
192 <treecol id="sl_photos" label="&panel.sets.photos.label;" flex="1" align="end" tooltiptext="&panel.sets.photos.tip;" /> 201 <treecol id="sl_photos" label="&panel.sets.photos.label;" flex="1" align="end" tooltiptext="&panel.sets.photos.tip;" />
193 </treecols> 202 </treecols>
194 <treechildren/> 203 <treechildren/>
195 </tree> 204 </tree>
196 <hbox> 205 <hbox>
197 <button command="cmd_refresh_sets" /> 206 <button command="cmd_refresh_sets" />
198 <button command="cmd_set_props" /> 207 <button command="cmd_set_props" />
199 </hbox> 208 </hbox>
200 <tree id="setphotos" rows="2" onselect="fireflix.photoset.on_select()" 209 <tree id="setphotos" rows="2" onselect="fireflix.photoset.on_select()"
201 flex="1" ondblclick="fireflix.photoset.on_cmd_open(event)" 210 flex="1" ondblclick="fireflix.photoset.on_cmd_open(event)"
202 onkeypress="if(event.keyCode==event.DOM_VK_RETURN) fireflix.photoset.on_cmd_open(event)"> 211 onkeypress="if(event.keyCode==event.DOM_VK_RETURN) fireflix.photoset.on_cmd_open(event)" context="setphotos_menu">
203 <treecols> 212 <treecols>
204 <treecol id="sp_title" label="&panel.setphotos.title.label;" flex="1" crop="end" align="start" tooltiptext="&panel.setphotos.title.tip;" /> 213 <treecol id="sp_title" label="&panel.setphotos.title.label;" flex="1" crop="end" align="start" tooltiptext="&panel.setphotos.title.tip;" />
205 <splitter class="tree-splitter" /> 214 <splitter class="tree-splitter" />
206 <treecol id="sp_taken" label="&panel.setphotos.taken.label;" crop="end" align="start" tooltiptext="&panel.setphotos.taken.tip;" hidden="true" /> 215 <treecol id="sp_taken" label="&panel.setphotos.taken.label;" crop="end" align="start" tooltiptext="&panel.setphotos.taken.tip;" hidden="true" />
207 <treecol id="sp_upload" label="&panel.setphotos.upload.label;" crop="end" align="start" tooltiptext="&panel.setphotos.upload.tip;" hidden="true" /> 216 <treecol id="sp_upload" label="&panel.setphotos.upload.label;" crop="end" align="start" tooltiptext="&panel.setphotos.upload.tip;" hidden="true" />
208 </treecols> 217 </treecols>
209 <treechildren/> 218 <treechildren/>
210 </tree> 219 </tree>
211 <groupbox id="set_photo_props" orient="horizontal" hidden="true"> 220 <groupbox id="set_photo_props" orient="horizontal" hidden="true">
212 <vbox width="100" pack="center"> 221 <vbox width="100" pack="center">
213 <hbox pack="center"> 222 <hbox pack="center">
214 <image id="set_photo" 223 <image id="set_photo"
215 ondblclick="fireflix.photoset.on_cmd_open(event)" /> 224 ondblclick="fireflix.photoset.on_cmd_open(event)" />
216 </hbox> 225 </hbox>
217 </vbox> 226 </vbox>
218 <spacer flex="1"/> 227 <spacer flex="1"/>
219 </groupbox> 228 </groupbox>
220 </vbox> 229 </vbox>
221 </tabpanel> 230 </tabpanel>
222 231
223 <tabpanel id="tabpanel_tags"> 232 <tabpanel id="tabpanel_tags">
224 <listbox id="tagslist" rows="8" flex="1"> 233 <listbox id="tagslist" rows="8" flex="1">
225 <listhead> 234 <listhead>
226 <listheader label="&panel.tagslist.tag.label;"/> 235 <listheader label="&panel.tagslist.tag.label;"/>
227 </listhead> 236 </listhead>
228 <listcols> 237 <listcols>
229 <listcol flex="1"/> 238 <listcol flex="1"/>
230 </listcols> 239 </listcols>
231 </listbox> 240 </listbox>
232 </tabpanel> 241 </tabpanel>
233 242
234 <tabpanel id="tabpanel_upload"> 243 <tabpanel id="tabpanel_upload">
235 <vbox flex="1"> 244 <vbox flex="1">
236 <tree id="uploadlist" rows="2" flex="1" 245 <tree id="uploadlist" rows="2" flex="1"
237 onselect="fireflix.uploads.selectionChanged()" 246 onselect="fireflix.uploads.selectionChanged()"
238 context="uploads_menu"> 247 context="uploads_menu">
239 <treecols> 248 <treecols>
240 <treecol id="up_file" label="&panel.uploadlist.file.label;" flex="4" crop="start" align="start"/> 249 <treecol id="up_file" label="&panel.uploadlist.file.label;" flex="4" crop="start" align="start"/>
241 <splitter class="tree-splitter" /> 250 <splitter class="tree-splitter" />
242 <treecol id="up_title" label="&panel.uploadlist.title.label;" flex="5" crop="end" align="start" /> 251 <treecol id="up_title" label="&panel.uploadlist.title.label;" flex="5" crop="end" align="start" />
243 <splitter class="tree-splitter" /> 252 <splitter class="tree-splitter" />
244 <treecol id="up_status" label="&panel.uploadlist.status.label;" flex="1" crop="end" align="start" /> 253 <treecol id="up_status" label="&panel.uploadlist.status.label;" flex="1" crop="end" align="start" />
245 </treecols> 254 </treecols>
246 <treechildren/> 255 <treechildren/>
247 </tree> 256 </tree>
248 <progressmeter id="upload_progress" mode="undetermined" hidden="true" /> 257 <progressmeter id="upload_progress" mode="undetermined" hidden="true" />
249 <groupbox id="upload_file_props" orient="horizontal" hidden="true"> 258 <groupbox id="upload_file_props" orient="horizontal" hidden="true">
250 <image id="upload_file_preview" width="100" height="100" /> 259 <image id="upload_file_preview" width="100" height="100" />
diff --git a/content/fireflix.js b/content/fireflix.js
index 328e9e2..995ec5c 100644
--- a/content/fireflix.js
+++ b/content/fireflix.js
@@ -620,96 +620,105 @@ var fireflix = {
620 { 620 {
621 method: 'flickr.photosets.getPhotos', 621 method: 'flickr.photosets.getPhotos',
622 auth_token: 'default', 622 auth_token: 'default',
623 photoset_id: pset.id 623 photoset_id: pset.id
624 }, function(xr) { 624 }, function(xr) {
625 var x = xr.responseXML; 625 var x = xr.responseXML;
626 var xp = x.evaluate( 626 var xp = x.evaluate(
627 '/rsp/photoset/photo', x, null, 627 '/rsp/photoset/photo', x, null,
628 XPathResult.ORDERED_NODE_ITERATOR_TYPE, null ); 628 XPathResult.ORDERED_NODE_ITERATOR_TYPE, null );
629 var phids = new Array(); 629 var phids = new Array();
630 var priph = null; 630 var priph = null;
631 var n; while(n=xp.iterateNext()) { 631 var n; while(n=xp.iterateNext()) {
632 var pid = n.getAttribute('id'); 632 var pid = n.getAttribute('id');
633 phids.push( pid ); 633 phids.push( pid );
634 if(pid==pset.primary && n.getAttribute('isprimary')!='1') 634 if(pid==pset.primary && n.getAttribute('isprimary')!='1')
635 priph = pid; 635 priph = pid;
636 } 636 }
637 if(priph) { 637 if(priph) {
638 _this.flickr.api_call( 638 _this.flickr.api_call(
639 { 639 {
640 method: 'flickr.photosets.editPhotos', 640 method: 'flickr.photosets.editPhotos',
641 auth_token: 'default', 641 auth_token: 'default',
642 photoset_id: pset.id, 642 photoset_id: pset.id,
643 primary_photo_id: priph, 643 primary_photo_id: priph,
644 photo_ids: phids.join(',') 644 photo_ids: phids.join(',')
645 }, function() { }, function(x,s,c,m) { /* flickr.photosets.editPhotos */ 645 }, function() { }, function(x,s,c,m) { /* flickr.photosets.editPhotos */
646 _this.flickr_failure(x,s,c,m); 646 _this.flickr_failure(x,s,c,m);
647 } 647 }
648 ); 648 );
649 } 649 }
650 }, function(x,s,c,m) { /* flickr.photosets.getPhotos */ 650 }, function(x,s,c,m) { /* flickr.photosets.getPhotos */
651 _this.flickr_failure(x,s,c,m); 651 _this.flickr_failure(x,s,c,m);
652 } 652 }
653 ); 653 );
654 }, function(x,s,c,m) { /* flickr.photosets.editMeta */ 654 }, function(x,s,c,m) { /* flickr.photosets.editMeta */
655 _this.flickr_failure(x,s,c,m); 655 _this.flickr_failure(x,s,c,m);
656 } 656 }
657 ); 657 );
658 } 658 }
659 }, 659 },
660 on_refresh_sets: function() { 660 on_refresh_sets: function() {
661 this.refresh_sets(); 661 this.refresh_sets();
662 }, 662 },
663 on_cmd_sets_html: function(csfx,ev) { 663 on_cmd_sets_html: function(csfx,ev) {
664 var uti = csfx.charAt(0); var utl = csfx.charAt(1); 664 var uti = csfx.charAt(0); var utl = csfx.charAt(1);
665 var rv = this.build_html(this.photoset.photos,uti,utl); 665 var rv = this.build_html(this.photoset.photos,uti,utl);
666 this.popup_content(rv); 666 this.popup_content(rv);
667 }, 667 },
668 on_cmd_setphotos_html: function(csfx,ev) {
669 var uti = csfx.charAt(0); var utl = csfx.charAt(1);
670 var rv = '';
671 for(var p in this.photoset.photos) {
672 if(this.photoset.selection.isSelected(p))
673 rv += this.photo_html(this.photoset.photos[p],uti,utl)+'\n';
674 }
675 this.popup_content(rv);
676 },
668 677
669 on_cmd_uploads_html: function(csfx,ev) { 678 on_cmd_uploads_html: function(csfx,ev) {
670 var uti = csfx.charAt(0); var utl = csfx.charAt(1); 679 var uti = csfx.charAt(0); var utl = csfx.charAt(1);
671 var pids = new Array(); 680 var pids = new Array();
672 for(var f in this.uploads.files) { 681 for(var f in this.uploads.files) {
673 if(this.uploads.selection.isSelected(f)) 682 if(this.uploads.selection.isSelected(f))
674 if(this.uploads.files[f].photoid) 683 if(this.uploads.files[f].photoid)
675 pids.push(this.uploads.files[f].photoid); 684 pids.push(this.uploads.files[f].photoid);
676 } 685 }
677 var pp = this.uploads.rowCount*2; if(pp>500) pp = 500; 686 var pp = this.uploads.rowCount*2; if(pp>500) pp = 500;
678 var _this = this; 687 var _this = this;
679 this.flickr.api_call( 688 this.flickr.api_call(
680 { 689 {
681 method: 'flickr.photos.search', 690 method: 'flickr.photos.search',
682 auth_token: 'default', 691 auth_token: 'default',
683 extras: 'original_format', 692 extras: 'original_format',
684 user_id: 'me', 693 user_id: 'me',
685 per_page: pp 694 per_page: pp
686 }, 695 },
687 function(xr) { 696 function(xr) {
688 var x = xr.responseXML; 697 var x = xr.responseXML;
689 var rv = ''; 698 var rv = '';
690 for(var pn in pids) { 699 for(var pn in pids) {
691 var p = pids[pn]; 700 var p = pids[pn];
692 var pp = new Photo(xp_node('/rsp/photos/photo[@id='+p+']',x)); 701 var pp = new Photo(xp_node('/rsp/photos/photo[@id='+p+']',x));
693 rv += _this.photo_html(pp,uti,utl)+'\n'; 702 rv += _this.photo_html(pp,uti,utl)+'\n';
694 } 703 }
695 _this.popup_content(rv); 704 _this.popup_content(rv);
696 }, function(x,s,c,m) { 705 }, function(x,s,c,m) {
697 _this.flickr_failure(x,s,c,m); 706 _this.flickr_failure(x,s,c,m);
698 } 707 }
699 ); 708 );
700 }, 709 },
701 710
702 /* 711 /*
703 * 712 *
704 */ 713 */
705 foundphotos: { 714 foundphotos: {
706 fireflix: null, 715 fireflix: null,
707 init: function(f) { 716 init: function(f) {
708 this.fireflix = f; 717 this.fireflix = f;
709 pull_elements(this,document,[ 718 pull_elements(this,document,[
710 'search_for','search_tags','search_mine', 719 'search_for','search_tags','search_mine',
711 'searchresult_props','search_photo', 720 'searchresult_props','search_photo',
712 'searchresult_title','searchresult_description', 721 'searchresult_title','searchresult_description',
713 'search_page','cmd_search_prev_page','cmd_search_next_page' 722 'search_page','cmd_search_prev_page','cmd_search_next_page'
714 ]); 723 ]);
715 document.getElementById('searchresults').view = this; 724 document.getElementById('searchresults').view = this;
@@ -878,93 +887,97 @@ var fireflix = {
878 if(!p.id) 887 if(!p.id)
879 return; 888 return;
880 this.fireflix.openTab(this.fireflix.flickr.make_photo_url(p,'p')); 889 this.fireflix.openTab(this.fireflix.flickr.make_photo_url(p,'p'));
881 } 890 }
882 }, 891 },
883 892
884 photo_html: function(p,i,l) { 893 photo_html: function(p,i,l) {
885 // TODO: add alt/title when possible 894 // TODO: add alt/title when possible
886 var rv = 895 var rv =
887 '<a href="'+this.flickr.make_photo_url(p,l)+'">' + 896 '<a href="'+this.flickr.make_photo_url(p,l)+'">' +
888 '<img src="'+this.flickr.make_photo_url(p,i)+'" />'+ 897 '<img src="'+this.flickr.make_photo_url(p,i)+'" />'+
889 '</a>'; 898 '</a>';
890 return rv; 899 return rv;
891 }, 900 },
892 build_html: function(photos,uti,utl) { 901 build_html: function(photos,uti,utl) {
893 var rv = ''; 902 var rv = '';
894 for(var i in photos) { 903 for(var i in photos) {
895 var p = photos[i]; 904 var p = photos[i];
896 rv += this.photo_html(p,uti,utl)+'\n'; 905 rv += this.photo_html(p,uti,utl)+'\n';
897 } 906 }
898 return rv; 907 return rv;
899 }, 908 },
900 909
901 popup_content: function(s) { 910 popup_content: function(s) {
902 window.openDialog( 911 window.openDialog(
903 "chrome://fireflix/content/generated-content.xul", 912 "chrome://fireflix/content/generated-content.xul",
904 null, "dialog,chrome", this, s ); 913 null, "dialog,chrome", this, s );
905 }, 914 },
906 copy_to_clipboard: function(s) { 915 copy_to_clipboard: function(s) {
907 var ch = Components.classes["@mozilla.org/widget/clipboardhelper;1"] 916 var ch = Components.classes["@mozilla.org/widget/clipboardhelper;1"]
908 .getService(Components.interfaces.nsIClipboardHelper); 917 .getService(Components.interfaces.nsIClipboardHelper);
909 ch.copyString(s); 918 ch.copyString(s);
910 }, 919 },
911 openTab: function(l) { 920 openTab: function(l) {
912 var wm = Components.classes['@mozilla.org/appshell/window-mediator;1'].getService( 921 var wm = Components.classes['@mozilla.org/appshell/window-mediator;1'].getService(
913 Components.interfaces.nsIWindowMediator ); 922 Components.interfaces.nsIWindowMediator );
914 var bw = wm.getMostRecentWindow('navigator:browser'); 923 var bw = wm.getMostRecentWindow('navigator:browser');
915 var b = bw.getBrowser(); 924 var b = bw.getBrowser();
916 var t = b.addTab(l); 925 var t = b.addTab(l);
917 b.selectedTab = t; 926 b.selectedTab = t;
918 }, 927 },
919 928
920 build_menus: function() { 929 build_menus: function() {
921 this.append_html_menu( 930 this.append_html_menu(
922 document.getElementById('sets_html_menu'), 931 document.getElementById('sets_html_menu'),
923 'stm_','m_bop','cmdset_sets','cmd_sets_html' 932 'stm_','m_bop','cmdset_sets','cmd_sets_html'
924 ); 933 );
925 this.append_html_menu( 934 this.append_html_menu(
935 document.getElementById('setphotos_html_menu'),
936 'stm_','m_bop','cmdset_setphotos','cmd_setphotos_html'
937 );
938 this.append_html_menu(
926 document.getElementById('uploads_html_menu'), 939 document.getElementById('uploads_html_menu'),
927 'stm_','m_bop','cmdset_uploads','cmd_uploads_html' 940 'stm_','m_bop','cmdset_uploads','cmd_uploads_html'
928 ); 941 );
929 return; 942 return;
930 }, 943 },
931 append_html_menu: function(m,imgt,lnkt,csid,cpfx) { 944 append_html_menu: function(m,imgt,lnkt,csid,cpfx) {
932 var mp = m.appendChild(document.createElement('menupopup')); 945 var mp = m.appendChild(document.createElement('menupopup'));
933 var t; 946 var t;
934 t=mp.appendChild(document.createElement('menuitem')); 947 t=mp.appendChild(document.createElement('menuitem'));
935 t.setAttribute('label',this.loc_strings.getString('menutitle_Images')); 948 t.setAttribute('label',this.loc_strings.getString('menutitle_Images'));
936 t.setAttribute('class','menuhead');t.setAttribute('disabled','true'); 949 t.setAttribute('class','menuhead');t.setAttribute('disabled','true');
937 mp.appendChild(document.createElement('menuseparator')); 950 mp.appendChild(document.createElement('menuseparator'));
938 var cs = document.getElementById(csid); 951 var cs = document.getElementById(csid);
939 for(var iti=0;iti<imgt.length;++iti) { 952 for(var iti=0;iti<imgt.length;++iti) {
940 t = mp.appendChild(document.createElement('menu')); 953 t = mp.appendChild(document.createElement('menu'));
941 t.setAttribute('label',this.loc_strings.getString('urltype_'+imgt.charAt(iti))); 954 t.setAttribute('label',this.loc_strings.getString('urltype_'+imgt.charAt(iti)));
942 var smp = t.appendChild(document.createElement('menupopup')); 955 var smp = t.appendChild(document.createElement('menupopup'));
943 t=smp.appendChild(document.createElement('menuitem')); 956 t=smp.appendChild(document.createElement('menuitem'));
944 t.setAttribute('label',this.loc_strings.getString('menutitle_Links')); 957 t.setAttribute('label',this.loc_strings.getString('menutitle_Links'));
945 t.setAttribute('class','menuhead');t.setAttribute('disabled','true'); 958 t.setAttribute('class','menuhead');t.setAttribute('disabled','true');
946 smp.appendChild(document.createElement('menuseparator')); 959 smp.appendChild(document.createElement('menuseparator'));
947 for(var lti=0;lti<lnkt.length;++lti) { 960 for(var lti=0;lti<lnkt.length;++lti) {
948 var csfx = imgt.charAt(iti)+lnkt.charAt(lti); 961 var csfx = imgt.charAt(iti)+lnkt.charAt(lti);
949 t=smp.appendChild(document.createElement('menuitem')); 962 t=smp.appendChild(document.createElement('menuitem'));
950 t.setAttribute('label',this.loc_strings.getString('urltype_'+lnkt.charAt(lti))); 963 t.setAttribute('label',this.loc_strings.getString('urltype_'+lnkt.charAt(lti)));
951 t.setAttribute('command',cpfx+'_'+csfx); 964 t.setAttribute('command',cpfx+'_'+csfx);
952 t=cs.appendChild(document.createElement('command')); 965 t=cs.appendChild(document.createElement('command'));
953 t.setAttribute('id',cpfx+'_'+csfx); 966 t.setAttribute('id',cpfx+'_'+csfx);
954 t.setAttribute('oncommand','fireflix.on_'+cpfx+"('"+csfx+"',event)"); 967 t.setAttribute('oncommand','fireflix.on_'+cpfx+"('"+csfx+"',event)");
955 } 968 }
956 } 969 }
957 return mp; 970 return mp;
958 }, 971 },
959 972
960 flickr_failure: function(x,s,c,m) { 973 flickr_failure: function(x,s,c,m) {
961 if(c==98) { // Invalid auth token 974 if(c==98) { // Invalid auth token
962 this.flickr.reset_token(); 975 this.flickr.reset_token();
963 this.set_auth_state(false,false); 976 this.set_auth_state(false,false);
964 return; 977 return;
965 } 978 }
966 // TODO: is that beauty? 979 // TODO: is that beauty?
967 alert('flickr api call failed\n'+c+' '+m); 980 alert('flickr api call failed\n'+c+' '+m);
968 } 981 }
969 982
970}; 983};
diff --git a/locale/en-US/fireflix.dtd b/locale/en-US/fireflix.dtd
index 09112dc..668b684 100644
--- a/locale/en-US/fireflix.dtd
+++ b/locale/en-US/fireflix.dtd
@@ -10,76 +10,78 @@
10 10
11<!-- COPYING --> 11<!-- COPYING -->
12 12
13<!ENTITY copying.title "Filreflix: copying policy"> 13<!ENTITY copying.title "Filreflix: copying policy">
14 14
15<!-- Sidebar --> 15<!-- Sidebar -->
16 16
17<!ENTITY panel.auth_info "Authorization info"> 17<!ENTITY panel.auth_info "Authorization info">
18<!ENTITY panel.no_auth_info "No auth info available"> 18<!ENTITY panel.no_auth_info "No auth info available">
19 19
20<!ENTITY panel.auth.auth.label "Authorize"> 20<!ENTITY panel.auth.auth.label "Authorize">
21<!ENTITY panel.auth.done.label "Authorization complete"> 21<!ENTITY panel.auth.done.label "Authorization complete">
22<!ENTITY panel.auth.flickr.label "Flickr"> 22<!ENTITY panel.auth.flickr.label "Flickr">
23<!ENTITY panel.auth.flickr.tip "Open Flickr in new tab"> 23<!ENTITY panel.auth.flickr.tip "Open Flickr in new tab">
24<!ENTITY panel.auth.unauth.label "Sign off"> 24<!ENTITY panel.auth.unauth.label "Sign off">
25 25
26<!ENTITY panel.tabs.search "Search" > 26<!ENTITY panel.tabs.search "Search" >
27<!ENTITY panel.tabs.sets "Sets" > 27<!ENTITY panel.tabs.sets "Sets" >
28<!ENTITY panel.tabs.tags "Tags" > 28<!ENTITY panel.tabs.tags "Tags" >
29<!ENTITY panel.tabs.upload "Upload" > 29<!ENTITY panel.tabs.upload "Upload" >
30 30
31<!ENTITY panel.search.cmd_search.label "Search" > 31<!ENTITY panel.search.cmd_search.label "Search" >
32<!ENTITY panel.search.search_for.label "Search for:" > 32<!ENTITY panel.search.search_for.label "Search for:" >
33<!ENTITY panel.search.mode.tagsonly.label "tags"> 33<!ENTITY panel.search.mode.tagsonly.label "tags">
34<!ENTITY panel.search.mode.tagsonly.tip "Search tags only"> 34<!ENTITY panel.search.mode.tagsonly.tip "Search tags only">
35<!ENTITY panel.search.mode.mine.label "mine"> 35<!ENTITY panel.search.mode.mine.label "mine">
36<!ENTITY panel.search.col.title.label "Title"> 36<!ENTITY panel.search.col.title.label "Title">
37<!ENTITY panel.search.cmd_search_open.label "Open"> 37<!ENTITY panel.search.cmd_search_open.label "Open">
38<!ENTITY panel.search.cmd_search_prev_page.label " « "> 38<!ENTITY panel.search.cmd_search_prev_page.label " « ">
39<!ENTITY panel.search.cmd_search_next_page.label " » "> 39<!ENTITY panel.search.cmd_search_next_page.label " » ">
40 40
41<!ENTITY panel.sets.name.label "Set"> 41<!ENTITY panel.sets.name.label "Set">
42<!ENTITY panel.sets.name.tip "Photoset name"> 42<!ENTITY panel.sets.name.tip "Photoset name">
43<!ENTITY panel.sets.photos.label "Photos"> 43<!ENTITY panel.sets.photos.label "Photos">
44<!ENTITY panel.sets.photos.tip "Number of photos in set"> 44<!ENTITY panel.sets.photos.tip "Number of photos in set">
45 45
46<!ENTITY panel.sets.cmd_refresh_sets "Refresh"> 46<!ENTITY panel.sets.cmd_refresh_sets "Refresh">
47<!ENTITY panel.sets.cmd_properties "Properties"> 47<!ENTITY panel.sets.cmd_properties "Properties">
48 48
49<!ENTITY panel.sets.generate_html "Generate HTML"> 49<!ENTITY panel.sets.generate_html "Generate HTML">
50 50
51<!ENTITY panel.setphotos.title.label "Title"> 51<!ENTITY panel.setphotos.title.label "Title">
52<!ENTITY panel.setphotos.title.tip "Picture title"> 52<!ENTITY panel.setphotos.title.tip "Picture title">
53<!ENTITY panel.setphotos.taken.label "Taken"> 53<!ENTITY panel.setphotos.taken.label "Taken">
54<!ENTITY panel.setphotos.taken.tip "When the picture was taken"> 54<!ENTITY panel.setphotos.taken.tip "When the picture was taken">
55<!ENTITY panel.setphotos.upload.label "Uploaded"> 55<!ENTITY panel.setphotos.upload.label "Uploaded">
56<!ENTITY panel.setphotos.upload.tip "When the picure was uploaded"> 56<!ENTITY panel.setphotos.upload.tip "When the picure was uploaded">
57 57
58<!ENTITY panel.setphotos.generate_html "Generate HTML">
59
58<!ENTITY panel.tagslist.tag.label "Tag"> 60<!ENTITY panel.tagslist.tag.label "Tag">
59 61
60<!ENTITY panel.uploadlist.file.label "File name"> 62<!ENTITY panel.uploadlist.file.label "File name">
61<!ENTITY panel.uploadlist.title.label "Title"> 63<!ENTITY panel.uploadlist.title.label "Title">
62<!ENTITY panel.uploadlist.status.label "Status"> 64<!ENTITY panel.uploadlist.status.label "Status">
63 65
64<!ENTITY panel.upload_props.filename.label "File:"> 66<!ENTITY panel.upload_props.filename.label "File:">
65<!ENTITY panel.upload_props.title.label "Title:"> 67<!ENTITY panel.upload_props.title.label "Title:">
66<!ENTITY panel.upload_props.tags.label "Tags:"> 68<!ENTITY panel.upload_props.tags.label "Tags:">
67 69
68<!ENTITY panel.uploads.upload.label "Upload"> 70<!ENTITY panel.uploads.upload.label "Upload">
69<!ENTITY panel.uploads.clear.label "Clear"> 71<!ENTITY panel.uploads.clear.label "Clear">
70<!ENTITY panel.uploads.remove.label "Remove"> 72<!ENTITY panel.uploads.remove.label "Remove">
71<!ENTITY panel.uploads.add.label "Add"> 73<!ENTITY panel.uploads.add.label "Add">
72<!ENTITY panel.uploads.generate_html "Generate HTML"> 74<!ENTITY panel.uploads.generate_html "Generate HTML">
73 75
74<!ENTITY generated.title "Fireflix: Generated content"> 76<!ENTITY generated.title "Fireflix: Generated content">
75<!ENTITY generated.copy "copy"> 77<!ENTITY generated.copy "copy">
76<!ENTITY generated.nolf "remove linebreaks"> 78<!ENTITY generated.nolf "remove linebreaks">
77 79
78<!ENTITY browser.sidebar.label "Fireflix"> 80<!ENTITY browser.sidebar.label "Fireflix">
79<!ENTITY browser.sidebar.title "Fireflix"> 81<!ENTITY browser.sidebar.title "Fireflix">
80<!ENTITY browser.sidebar.tooltip "Fireflix"> 82<!ENTITY browser.sidebar.tooltip "Fireflix">
81 83
82<!ENTITY photosetprops.title "Photoset properties"> 84<!ENTITY photosetprops.title "Photoset properties">
83<!ENTITY photosetprops.set_title.label "Photoset title:"> 85<!ENTITY photosetprops.set_title.label "Photoset title:">
84<!ENTITY photosetprops.set_desc.label "Photoset description:"> 86<!ENTITY photosetprops.set_desc.label "Photoset description:">
85 87