Changeset 902
- Timestamp:
- 02/29/08 14:05:35
- Files:
-
- apps/notifier/public/js/notifier.js (modified) (15 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
apps/notifier/public/js/notifier.js
r900 r902 63 63 $('#friends-timeline').append(notifier.ui.htmlForNote(notes[i])); 64 64 } 65 notifier.ui.bindNotesControls('friends-timeline'); 65 66 } 66 67 } … … 74 75 params: {'text': text}, 75 76 success: function(note) { 76 notifier.ui.prependNote(note); 77 $('#friends-timeline').prepend(notifier.ui.htmlForNote(note)); 78 notifier.ui.bindNotesControls('note_'+note.id); 77 79 $('#note_text').val(''); 78 80 $('#note_submit').removeAttr('disabled'); … … 85 87 } 86 88 notifier.actions.editNote = function(noteId) { 87 notifier.api.doRequest('users/'+notifier.prefs.username+'/statuses/'+noteId+'.json', { 89 var newText = $('#note_'+noteId+'_new_text').val(); 90 // hack pour Adobe AIR : 91 // apparemment AIR envoie un body vide pour une requête PUT, 92 // même lorsque l'on passe des params à l'objet XHR ; 93 // on place donc les params dans la querystring 94 notifier.api.doRequest('users/'+notifier.prefs.username+'/statuses/'+noteId+'.json?text='+newText, { 88 95 method: 'PUT', 89 params: {'text': $('#note_'+noteId+'_new_text').val()},96 //params: {'text': $('#note_'+noteId+'_new_text').val()}, 90 97 success: function(note) { 91 98 $('#note_'+noteId+' p:first').text(note.text); … … 94 101 }); 95 102 } 96 notifier.actions.deleteNote = function(noteId) { 103 notifier.actions.deleteNote = function() { 104 var noteId = notifier.ui.idFromElt(this.parentNode.parentNode, 'note'); 97 105 if (!confirm('Etes-vous sûr de vouloir supprimer cette note ?')) return; 98 106 … … 114 122 $('#friends-list').append(notifier.ui.htmlForFriend(friends[i])); 115 123 } 124 notifier.ui.bindFriendsControls('friends-list'); 116 125 } 117 126 } … … 125 134 success: function(friend) { 126 135 $('#friends-list').prepend(notifier.ui.htmlForFriend(friend)); 136 notifier.ui.bindFriendsControls('friend_'+friend.id); 127 137 $('#friend_name').val(''); 128 138 $('#friend_submit').removeAttr('disabled'); … … 134 144 }); 135 145 } 136 notifier.actions.removeFriend = function(friendId) { 146 notifier.actions.removeFriend = function() { 147 var friendId = notifier.ui.idFromElt(this.parentNode.parentNode, 'friend'); 137 148 notifier.api.doRequest('users/'+notifier.prefs.username+'/friends/'+friendId+'.json', { 138 149 method: 'DELETE', … … 142 153 }); 143 154 } 144 notifier.actions.addFavorite = function(noteId) { 155 notifier.actions.addFavorite = function() { 156 var noteId = notifier.ui.idFromElt(this.parentNode.parentNode, 'note'); 145 157 notifier.api.doRequest('users/'+notifier.prefs.username+'/favorites.json', { 146 158 method: 'POST', … … 150 162 link.removeClass('not-favorite'); 151 163 link.addClass('favorite'); 152 link.attr('onclick', 'notifier.actions.removeFavorite(\''+noteId+'\');'); 153 } 154 }); 155 } 156 notifier.actions.removeFavorite = function(noteId) { 164 link.unbind('click'); 165 link.click(notifier.actions.removeFavorite); 166 } 167 }); 168 } 169 notifier.actions.removeFavorite = function() { 170 var noteId = notifier.ui.idFromElt(this.parentNode.parentNode, 'note'); 157 171 notifier.api.doRequest('users/'+notifier.prefs.username+'/favorites/'+noteId+'.json', { 158 172 method: 'DELETE', … … 161 175 link.removeClass('favorite'); 162 176 link.addClass('not-favorite'); 163 link.attr('onclick', 'notifier.actions.addFavorite(\''+noteId+'\');'); 164 } 165 }); 166 } 167 notifier.actions.removeFavInList = function(noteId) { 177 link.unbind('click'); 178 link.click(notifier.actions.addFavorite); 179 } 180 }); 181 } 182 notifier.actions.removeFavInList = function() { 183 var noteId = notifier.ui.idFromElt(this.parentNode.parentNode, 'fav'); 168 184 notifier.api.doRequest('users/'+notifier.prefs.username+'/favorites/'+noteId+'.json', { 169 185 method: 'DELETE', … … 183 199 $('#favorites-list').append(notifier.ui.htmlForFav(favs[i])); 184 200 } 201 notifier.ui.bindFavsControls('favorites-list'); 185 202 } 186 203 } … … 191 208 notifier.ui.toggleLoading = function() { 192 209 $('#loading').toggle(); 210 } 211 notifier.ui.idFromElt = function(elt, type) { 212 id = elt.id; 213 return id.replace(new RegExp(type+'_', 'g'), ''); 193 214 } 194 215 notifier.ui.showTab = function(tabLink, tabName) { … … 203 224 +'<p class="note-details">'+note.sender.name+' le '+note.timestamp 204 225 if (note.sender.name == notifier.prefs.username) { 205 html+= ' <a href="#" onclick="notifier.ui.createEditForm(\''+note.id+'\');">edit</a>';206 html+= ' <a href="#" onclick="notifier.actions.deleteNote(\''+note.id+'\');">delete</a>';226 html+= ' <a href="#" class="note-edit">edit</a>'; 227 html+= ' <a href="#" class="note-delete">delete</a>'; 207 228 } else { 208 229 if (note.favorite_id != undefined) { 209 230 var className = 'favorite'; 210 var onclick = 'notifier.actions.removeFavorite(\''+note.id+'\');';211 231 } else { 212 232 var className = 'not-favorite'; 213 var onclick = 'notifier.actions.addFavorite(\''+note.id+'\');'; 214 } 215 html+= ' <a href="#" class="'+className+'" onclick="'+onclick+'"></a>'; 233 } 234 html+= ' <a href="#" class="'+className+'"></a>'; 216 235 } 217 236 html+= '</p></div>'; … … 222 241 +'<p class="note-text">'+note.text+'</p>' 223 242 +'<p class="note-details">'+note.sender.name+' le '+note.timestamp 224 +' <a href="#" class="favorite" onclick="notifier.actions.removeFavInList(\''+note.id+'\');"></a>'243 +' <a href="#" class="favorite"></a>' 225 244 +'</p></div>'; 226 245 } 227 notifier.ui.prependNote = function(note) { 228 $('#friends-timeline').prepend(notifier.ui.htmlForNote(note)); 246 notifier.ui.bindFavsControls = function(eltId) { 247 $('#'+eltId+' a.favorite').click(notifier.actions.removeFavInList); 248 } 249 notifier.ui.bindNotesControls = function(eltId) { 250 $('#'+eltId+' a.note-edit').click(notifier.ui.createEditForm); 251 $('#'+eltId+' a.note-delete').click(notifier.actions.deleteNote); 252 $('#'+eltId+' a.favorite').click(notifier.actions.removeFavorite); 253 $('#'+eltId+' a.not-favorite').click(notifier.actions.addFavorite); 229 254 } 230 255 notifier.ui.htmlForFriend = function(friend) { … … 233 258 +'<p class="friend-name">'+friend.name+'</p>' 234 259 +'<p class="friend-email">'+friend.email 235 +' <a href="#" onclick="notifier.actions.removeFriend(\''+friend.id+'\');">remove</a>'260 +' <a href="#" class="remove">remove</a>' 236 261 +'</p>' 237 262 +'</div>' 238 263 } 239 notifier.ui.createEditForm = function(noteId) { 264 notifier.ui.bindFriendsControls = function(eltId) { 265 $('#'+eltId+' a.remove').click(notifier.actions.removeFriend); 266 } 267 notifier.ui.createEditForm = function() { 268 var noteId = notifier.ui.idFromElt(this.parentNode.parentNode, 'note'); 240 269 var form = document.createElement("form"); 241 270 form.id = 'edit_note_'+noteId;
