author | Michael Krelin <hacker@klever.net> | 2006-09-28 19:40:39 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2006-09-28 19:40:39 (UTC) |
commit | 438c60c606a15792893c38415d0f405ae21e433d (patch) (side-by-side diff) | |
tree | d8a56268d5ebedf8669587af7469fedbe1527154 | |
parent | b62171950ffbbdae7826b1b8cdd4cfd0bde8cc93 (diff) | |
download | fireflix-438c60c606a15792893c38415d0f405ae21e433d.zip fireflix-438c60c606a15792893c38415d0f405ae21e433d.tar.gz fireflix-438c60c606a15792893c38415d0f405ae21e433d.tar.bz2 |
Better tracking of auth state, added possibility to sign off and reauth
git-svn-id: http://svn.klever.net/kin/fireflix/trunk@164 fe716a7a-6dde-0310-88d9-d003556173a8
-rw-r--r-- | content/fireflix-panel.xul | 33 | ||||
-rw-r--r-- | content/fireflix.js | 52 | ||||
-rw-r--r-- | locale/en-US/fireflix.dtd | 10 |
3 files changed, 67 insertions, 28 deletions
diff --git a/content/fireflix-panel.xul b/content/fireflix-panel.xul index 75d6c2d..70a58fe 100644 --- a/content/fireflix-panel.xul +++ b/content/fireflix-panel.xul @@ -21,6 +21,27 @@ <stringbundle id="loc_strings" src="chrome://fireflix/locale/fireflix.properties" /> </stringbundleset> + <commandset> + <command id="cmd_auth_auth" label="&panel.auth.auth.label;" + oncommand="fireflix.on_cmd_auth()"/> + <command id="cmd_auth_done" label="&panel.auth.done.label;" + oncommand="fireflix.on_cmd_auth_done()" disabled="true"/> + <command id="cmd_auth_open_flickr" label="&panel.auth.flickr.label;" + oncommand="fireflix.openTab('htp://www.flickr.com/')" /> + <command id="cmd_auth_unauth" label="&panel.auth.unauth.label;" + oncommand="fireflix.on_cmd_auth_unauth()" /> + </commandset> + + <popupset> + <popup id="auth_menu"> + <menuitem command="cmd_auth_auth"/> + <menuitem command="cmd_auth_done" hidden="true" id="menu_auth_done"/> + <menuitem command="cmd_auth_unauth" /> + <menuseparator/> + <menuitem command="cmd_auth_open_flickr"/> + </popup> + </popupset> + <commandset id="cmdset_search"> <command id="cmd_search" label="&panel.search.cmd_search.label;" oncommand="fireflix.foundphotos.search_photos()"/> @@ -69,16 +90,14 @@ <vbox class="wholething" flex="1"> - <groupbox> + <groupbox context="auth_menu"> <caption label="&panel.auth_info;"/> <hbox> <label id="auth_info" value="&panel.no_auth_info;" flex="1" disabled="true"/> - <button id="b_auth" label="&panel.auth_button;" oncommand="fireflix.on_auth()"/> - <button id="b_auth_done" label="&panel.auth_complete_button;" hidden="true" - oncommand="fireflix.on_auth_done()"/> - <button label="&panel.flickr_button.label;" - tooltiptext="&panel.flickr_button.tip;" - oncommand="fireflix.openTab('http://www.flickr.com/')" /> + <button id="b_auth" command="cmd_auth_auth"/> + <button id="b_auth_done" command="cmd_auth_done" hidden="true"/> + <button command="cmd_auth_open_flickr" + tooltiptext="&panel.auth.flickr.tip;"/> </hbox> </groupbox> diff --git a/content/fireflix.js b/content/fireflix.js index 9518480..82c7b0c 100644 --- a/content/fireflix.js +++ b/content/fireflix.js @@ -12,6 +12,13 @@ function splitascii(s) { var fireflix = { flickr: new Flickr(), init: function() { + this.cmd_auth_auth = document.getElementById('cmd_auth_auth'); + this.cmd_auth_done = document.getElementById('cmd_auth_done'); + this.cmd_auth_unauth = document.getElementById('cmd_auth_unauth'); + this.menu_auth_done = document.getElementById('menu_auth_done'); + this.b_auth = document.getElementById('b_auth'); + this.b_auth_done = document.getElementById('b_auth_done'); + this.auth_info = document.getElementById('auth_info'); this.loc_strings = document.getElementById('loc_strings'); this.build_menus(); this.cmd_set_props = document.getElementById('cmd_set_props'); @@ -27,42 +34,55 @@ var fireflix = { document.getElementById('setslist').view = this.photosets; document.getElementById('setphotos').view = this.photoset; document.getElementById('uploadlist').view = this.uploads; - this.flickr.no_auth_info_label = document.getElementById('auth_info').value; + this.no_auth_info_label = this.auth_info.value; + this.set_auth_state(this.flickr.token,false); if(this.flickr.token) { this.refresh_stuff(); - document.getElementById('auth_info').value = - this.flickr.user.fullname+' ['+this.flickr.user.username+']'; - document.getElementById('auth_info').disabled = false; - document.getElementById('b_auth').hidden = true; } }, - on_auth: function() { + set_auth_state: function(au,inp) { /* authorized, in progress */ + this.cmd_auth_unauth.disabled = !au; + this.b_auth.hidden = au || inp; + this.b_auth_done.hidden = !inp; + this.menu_auth_done.hidden = !inp; + this.cmd_auth_done.setAttribute('disabled',!inp); + this.auth_info.disabled = !au; + if(au) { + this.auth_info.value = this.flickr.user.fullname+' ['+this.flickr.user.username+']'; /* TODO: move to locale */ + }else{ + this.auth_info.value = this.no_auth_info_label; + } + }, + on_cmd_auth: function() { var _this = this; this.flickr.authorize_0( function() { - document.getElementById('b_auth').hidden = true; - document.getElementById('b_auth_done').hidden = false; + _this.set_auth_state(_this.flickr.token,true); }, function(x,s,c,m) { _this.flickr_failure(x,s,c,m); } ); }, - on_auth_done: function() { - document.getElementById('b_auth_done').hidden = true; + on_cmd_auth_done: function() { + this.set_auth_state(this.flickr.token,false); var _this = this; this.flickr.authorize_1( function() { _this.flickr.save_token(); _this.refresh_stuff(); - document.getElementById('auth_info').value = + _this.set_auth_state(_this.flickr.token,false); + _this.auth_info.value = _this.flickr.user.fullname+' ['+_this.flickr.user.username+']'; - document.getElementById('auth_info').disabled = false; }, function(x,s,c,m) { - document.getElementById('b_auth').hidden = false; + _this.set_auth_state(_this.flickr.token,false); /* XXX: no reset token? */ _this.flickr_failure(x,s,c,m); } ); }, + on_cmd_auth_unauth: function() { + this.flickr.reset_token(); + this.set_auth_state(false,false); + }, refresh_sets: function() { this.photosets.refresh_sets(); }, refresh_stuff: function() { @@ -866,12 +886,10 @@ var fireflix = { flickr_failure: function(x,s,c,m) { if(c==98) { // Invalid auth token this.flickr.reset_token(); - document.getElementById('auth_info').value = this.no_auth_info_label; - document.getElementById('auth_info').disabled = true; - document.getElementById('b_auth').hidden = false; + this.set_auth_state(false,false); return; } - // TODO: is that beauty + // TODO: is that beauty? alert('flickr api call failed\n'+c+' '+m); } diff --git a/locale/en-US/fireflix.dtd b/locale/en-US/fireflix.dtd index 2b6e72a..f4ceb79 100644 --- a/locale/en-US/fireflix.dtd +++ b/locale/en-US/fireflix.dtd @@ -16,10 +16,12 @@ <!ENTITY panel.auth_info "Authorization info"> <!ENTITY panel.no_auth_info "No auth info available"> -<!ENTITY panel.auth_button "Authorize"> -<!ENTITY panel.auth_complete_button "Authorization complete"> -<!ENTITY panel.flickr_button.label "Flickr"> -<!ENTITY panel.flickr_button.tip "Open Flickr in new tab"> + +<!ENTITY panel.auth.auth.label "Authorize"> +<!ENTITY panel.auth.done.label "Authorization complete"> +<!ENTITY panel.auth.flickr.label "Flickr"> +<!ENTITY panel.auth.flickr.tip "Open Flickr in new tab"> +<!ENTITY panel.auth.unauth.label "Sign off"> <!ENTITY panel.tabs.search "Search" > <!ENTITY panel.tabs.sets "Sets" > |