| 
									
										
										
										
											2008-08-26 21:38:35 -04:00
										 |  |  | /* | 
					
						
							|  |  |  |  * Laconica - a distributed open-source microblogging tool | 
					
						
							|  |  |  |  * Copyright (C) 2008, Controlez-Vous, Inc. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  |  * it under the terms of the GNU Affero General Public License as published by | 
					
						
							|  |  |  |  * the Free Software Foundation, either version 3 of the License, or | 
					
						
							|  |  |  |  * (at your option) any later version. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  |  * GNU Affero General Public License for more details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * You should have received a copy of the GNU Affero General Public License | 
					
						
							|  |  |  |  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-24 13:46:13 -04:00
										 |  |  | $(document).ready(function(){ | 
					
						
							| 
									
										
										
										
											2008-11-14 22:35:49 -05:00
										 |  |  | 	// count character on keyup
 | 
					
						
							|  |  |  | 	function counter(event){ | 
					
						
							|  |  |  | 		var maxLength = 140; | 
					
						
							| 
									
										
										
										
											2009-01-16 17:02:46 +00:00
										 |  |  | 		var currentLength = $("#notice_data-text").val().length; | 
					
						
							| 
									
										
										
										
											2008-11-14 22:35:49 -05:00
										 |  |  | 		var remaining = maxLength - currentLength; | 
					
						
							| 
									
										
										
										
											2009-01-16 18:14:20 +00:00
										 |  |  | 		var counter = $("#notice_text-count"); | 
					
						
							| 
									
										
										
										
											2008-11-14 22:35:49 -05:00
										 |  |  | 		counter.text(remaining); | 
					
						
							|  |  |  | 		 | 
					
						
							|  |  |  | 		if (remaining <= 0) { | 
					
						
							| 
									
										
										
										
											2009-01-16 18:14:20 +00:00
										 |  |  | 			$("#form_notice").addClass("warning"); | 
					
						
							| 
									
										
										
										
											2008-11-14 22:35:49 -05:00
										 |  |  | 		} else { | 
					
						
							| 
									
										
										
										
											2009-01-16 18:14:20 +00:00
										 |  |  | 			$("#form_notice").removeClass("warning"); | 
					
						
							| 
									
										
										
										
											2008-11-14 22:35:49 -05:00
										 |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2008-06-24 13:46:13 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-11-14 22:35:49 -05:00
										 |  |  | 	function submitonreturn(event) { | 
					
						
							|  |  |  | 		if (event.keyCode == 13) { | 
					
						
							| 
									
										
										
										
											2009-01-16 17:02:46 +00:00
										 |  |  | 			$("#form_notice").submit(); | 
					
						
							| 
									
										
										
										
											2008-11-14 22:35:49 -05:00
										 |  |  | 			event.preventDefault(); | 
					
						
							|  |  |  | 			event.stopPropagation(); | 
					
						
							|  |  |  | 			return false; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		return true; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2008-09-18 11:04:38 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-16 17:02:46 +00:00
										 |  |  | 	if ($("#notice_data-text").length) { | 
					
						
							|  |  |  | 		$("#notice_data-text").bind("keyup", counter); | 
					
						
							|  |  |  | 		$("#notice_data-text").bind("keydown", submitonreturn); | 
					
						
							| 
									
										
										
										
											2008-11-14 22:35:49 -05:00
										 |  |  | 		 | 
					
						
							|  |  |  | 		// run once in case there's something in there
 | 
					
						
							|  |  |  | 		counter(); | 
					
						
							|  |  |  | 		 | 
					
						
							|  |  |  | 		// set the focus
 | 
					
						
							| 
									
										
										
										
											2009-01-16 17:02:46 +00:00
										 |  |  | 		$("#notice_data-text").focus(); | 
					
						
							| 
									
										
										
										
											2008-11-14 22:35:49 -05:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2008-09-18 11:04:38 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-11-14 22:35:49 -05:00
										 |  |  | 	// XXX: refactor this code
 | 
					
						
							| 
									
										
										
										
											2008-09-18 11:04:38 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-11-14 22:35:49 -05:00
										 |  |  | 	var favoptions = { dataType: 'xml', | 
					
						
							| 
									
										
										
										
											2008-11-23 16:34:58 -05:00
										 |  |  | 					   success: function(xml) { var new_form = document._importNode($('form', xml).get(0), true); | 
					
						
							| 
									
										
										
										
											2008-11-14 22:35:49 -05:00
										 |  |  | 												var dis = new_form.id; | 
					
						
							|  |  |  | 												var fav = dis.replace('disfavor', 'favor'); | 
					
						
							|  |  |  | 												$('form#'+fav).replaceWith(new_form); | 
					
						
							|  |  |  | 												$('form#'+dis).ajaxForm(disoptions).each(addAjaxHidden); | 
					
						
							|  |  |  | 											  } | 
					
						
							|  |  |  | 					 }; | 
					
						
							| 
									
										
										
										
											2008-09-18 11:04:38 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-11-14 22:35:49 -05:00
										 |  |  | 	var disoptions = { dataType: 'xml', | 
					
						
							|  |  |  | 					   success: function(xml) { var new_form = document._importNode($('form', xml).get(0), true); | 
					
						
							|  |  |  | 												var fav = new_form.id; | 
					
						
							|  |  |  | 												var dis = fav.replace('favor', 'disfavor'); | 
					
						
							|  |  |  | 												$('form#'+dis).replaceWith(new_form); | 
					
						
							|  |  |  | 												$('form#'+fav).ajaxForm(favoptions).each(addAjaxHidden); | 
					
						
							|  |  |  | 											  } | 
					
						
							|  |  |  | 					 }; | 
					
						
							| 
									
										
										
										
											2008-09-17 23:20:48 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-11-14 22:35:49 -05:00
										 |  |  | 	function addAjaxHidden() { | 
					
						
							|  |  |  | 		var ajax = document.createElement('input'); | 
					
						
							|  |  |  | 		ajax.setAttribute('type', 'hidden'); | 
					
						
							|  |  |  | 		ajax.setAttribute('name', 'ajax'); | 
					
						
							|  |  |  | 		ajax.setAttribute('value', 1); | 
					
						
							|  |  |  | 		this.appendChild(ajax); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2008-09-17 23:20:48 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-11-14 22:35:49 -05:00
										 |  |  | 	$("form.favor").ajaxForm(favoptions); | 
					
						
							|  |  |  | 	$("form.disfavor").ajaxForm(disoptions); | 
					
						
							|  |  |  | 	$("form.favor").each(addAjaxHidden); | 
					
						
							|  |  |  | 	$("form.disfavor").each(addAjaxHidden); | 
					
						
							| 
									
										
										
										
											2008-11-15 21:27:35 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	$("#nudge").ajaxForm ({ dataType: 'xml', | 
					
						
							| 
									
										
										
										
											2008-12-08 00:58:12 -05:00
										 |  |  | 							beforeSubmit: function(xml) { $("form#nudge input[type=submit]").attr("disabled", "disabled"); | 
					
						
							|  |  |  | 														  $("form#nudge input[type=submit]").addClass("disabled"); | 
					
						
							|  |  |  | 														}, | 
					
						
							|  |  |  | 							success: function(xml) { $("#nudge").replaceWith(document._importNode($("#nudge_response", xml).get(0),true));  | 
					
						
							|  |  |  | 												     $("#nudge input[type=submit]").removeAttr("disabled"); | 
					
						
							|  |  |  | 												     $("#nudge input[type=submit]").removeClass("disabled"); | 
					
						
							|  |  |  | 												   } | 
					
						
							| 
									
										
										
										
											2008-11-15 21:27:35 -05:00
										 |  |  | 						 }); | 
					
						
							| 
									
										
										
										
											2008-11-17 12:31:44 -05:00
										 |  |  | 	$("#nudge").each(addAjaxHidden); | 
					
						
							| 
									
										
										
										
											2008-11-20 18:26:55 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	var Subscribe = { dataType: 'xml', | 
					
						
							| 
									
										
										
										
											2008-12-08 00:12:12 -05:00
										 |  |  | 					  beforeSubmit: function(formData, jqForm, options) { $("form.subscribe input[type=submit]").attr("disabled", "disabled"); | 
					
						
							|  |  |  | 																	      $("form.subscribe input[type=submit]").addClass("disabled"); | 
					
						
							|  |  |  | 																	    }, | 
					
						
							| 
									
										
										
										
											2008-11-20 18:26:55 -05:00
										 |  |  | 					  success: function(xml) { var form_unsubscribe = document._importNode($('form', xml).get(0), true); | 
					
						
							|  |  |  | 										  	   var form_unsubscribe_id = form_unsubscribe.id; | 
					
						
							|  |  |  | 											   var form_subscribe_id = form_unsubscribe_id.replace('unsubscribe', 'subscribe'); | 
					
						
							|  |  |  | 											   $("form#"+form_subscribe_id).replaceWith(form_unsubscribe); | 
					
						
							|  |  |  | 											   $("form#"+form_unsubscribe_id).ajaxForm(UnSubscribe).each(addAjaxHidden); | 
					
						
							| 
									
										
										
										
											2008-11-26 13:23:17 -05:00
										 |  |  | 											   $("dd.subscribers").text(parseInt($("dd.subscribers").text())+1); | 
					
						
							| 
									
										
										
										
											2008-12-08 00:12:12 -05:00
										 |  |  | 											   $("form.subscribe input[type=submit]").removeAttr("disabled"); | 
					
						
							|  |  |  | 											   $("form.subscribe input[type=submit]").removeClass("disabled"); | 
					
						
							| 
									
										
										
										
											2008-11-20 18:26:55 -05:00
										 |  |  | 										     } | 
					
						
							|  |  |  | 					}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	var UnSubscribe = { dataType: 'xml', | 
					
						
							| 
									
										
										
										
											2008-12-08 00:12:12 -05:00
										 |  |  | 						beforeSubmit: function(formData, jqForm, options) { $("form.unsubscribe input[type=submit]").attr("disabled", "disabled"); | 
					
						
							|  |  |  | 																		    $("form.unsubscribe input[type=submit]").addClass("disabled"); | 
					
						
							|  |  |  | 																		  }, | 
					
						
							| 
									
										
										
										
											2008-11-20 18:26:55 -05:00
										 |  |  | 					    success: function(xml) { var form_subscribe = document._importNode($('form', xml).get(0), true); | 
					
						
							|  |  |  | 										  		 var form_subscribe_id = form_subscribe.id; | 
					
						
							|  |  |  | 												 var form_unsubscribe_id = form_subscribe_id.replace('subscribe', 'unsubscribe'); | 
					
						
							|  |  |  | 												 $("form#"+form_unsubscribe_id).replaceWith(form_subscribe); | 
					
						
							|  |  |  | 												 $("form#"+form_subscribe_id).ajaxForm(Subscribe).each(addAjaxHidden); | 
					
						
							|  |  |  | 												 $("#profile_send_a_new_message").remove(); | 
					
						
							|  |  |  | 												 $("#profile_nudge").remove(); | 
					
						
							| 
									
										
										
										
											2008-11-26 13:23:17 -05:00
										 |  |  | 											     $("dd.subscribers").text(parseInt($("dd.subscribers").text())-1); | 
					
						
							| 
									
										
										
										
											2008-12-08 00:12:12 -05:00
										 |  |  | 												 $("form.unsubscribe input[type=submit]").removeAttr("disabled"); | 
					
						
							|  |  |  | 												 $("form.unsubscribe input[type=submit]").removeClass("disabled"); | 
					
						
							| 
									
										
										
										
											2008-11-20 18:26:55 -05:00
										 |  |  | 											   } | 
					
						
							|  |  |  | 					  }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	$("form.subscribe").ajaxForm(Subscribe); | 
					
						
							|  |  |  | 	$("form.unsubscribe").ajaxForm(UnSubscribe); | 
					
						
							|  |  |  | 	$("form.subscribe").each(addAjaxHidden); | 
					
						
							|  |  |  | 	$("form.unsubscribe").each(addAjaxHidden); | 
					
						
							| 
									
										
										
										
											2008-11-22 20:55:59 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	var PostNotice = { dataType: 'xml', | 
					
						
							| 
									
										
										
										
											2009-01-16 17:02:46 +00:00
										 |  |  | 					   beforeSubmit: function(formData, jqForm, options) { if ($("#notice_data-text").get(0).value.length == 0) { | 
					
						
							|  |  |  | 																				$("#form_notice").addClass("warning"); | 
					
						
							| 
									
										
										
										
											2008-11-22 20:55:59 -05:00
										 |  |  | 																				return false; | 
					
						
							|  |  |  | 																		   } | 
					
						
							| 
									
										
										
										
											2009-01-16 17:02:46 +00:00
										 |  |  | 																		   $("#notice_action-submit").attr("disabled", "disabled"); | 
					
						
							|  |  |  | 																		   $("#notice_action-submit").addClass("disabled"); | 
					
						
							| 
									
										
										
										
											2008-11-22 20:55:59 -05:00
										 |  |  | 																		   return true; | 
					
						
							|  |  |  | 												 						 }, | 
					
						
							| 
									
										
										
										
											2008-12-16 02:18:18 -05:00
										 |  |  | 					   success: function(xml) {	if ($("#error", xml).length > 0 || $("#command_result", xml).length > 0) { | 
					
						
							|  |  |  | 													var result = document._importNode($("p", xml).get(0), true); | 
					
						
							|  |  |  | 													result = result.textContent || result.innerHTML; | 
					
						
							|  |  |  | 													alert(result); | 
					
						
							| 
									
										
										
										
											2008-12-11 17:58:08 -05:00
										 |  |  | 												} | 
					
						
							| 
									
										
										
										
											2008-11-22 20:55:59 -05:00
										 |  |  | 												else { | 
					
						
							| 
									
										
										
										
											2009-01-16 17:02:46 +00:00
										 |  |  | 													$("#notices_primary .notices").prepend(document._importNode($("li", xml).get(0), true)); | 
					
						
							|  |  |  | 													$("#notice_data-text").val(""); | 
					
						
							| 
									
										
										
										
											2008-11-22 20:55:59 -05:00
										 |  |  | 													counter(); | 
					
						
							| 
									
										
										
										
											2009-01-16 17:02:46 +00:00
										 |  |  | 													$("#notices_primary .notice:first").css({display:"none"}); | 
					
						
							|  |  |  | 													$("#notices_primary .notice:first").fadeIn(2500); | 
					
						
							| 
									
										
										
										
											2008-11-22 20:55:59 -05:00
										 |  |  | 												} | 
					
						
							| 
									
										
										
										
											2009-01-16 17:02:46 +00:00
										 |  |  | 												$("#notice_action-submit").removeAttr("disabled"); | 
					
						
							|  |  |  | 												$("#notice_action-submit").removeClass("disabled"); | 
					
						
							| 
									
										
										
										
											2008-11-22 20:55:59 -05:00
										 |  |  | 											 } | 
					
						
							| 
									
										
										
										
											2008-12-16 02:18:18 -05:00
										 |  |  | 					   }; | 
					
						
							| 
									
										
										
										
											2009-01-16 17:02:46 +00:00
										 |  |  | 	$("#form_notice").ajaxForm(PostNotice); | 
					
						
							|  |  |  | 	$("#form_notice").each(addAjaxHidden); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $(".notice").hover( | 
					
						
							|  |  |  |         function () { | 
					
						
							|  |  |  |             $(this).addClass('hover'); | 
					
						
							|  |  |  |         },  | 
					
						
							|  |  |  |         function () { | 
					
						
							|  |  |  |             $(this).removeClass('hover'); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     ); | 
					
						
							| 
									
										
										
										
											2008-06-24 13:46:13 -04:00
										 |  |  | }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-10-20 13:02:45 -04:00
										 |  |  | function doreply(nick,id) { | 
					
						
							| 
									
										
										
										
											2008-11-14 22:35:49 -05:00
										 |  |  | 	rgx_username = /^[0-9a-zA-Z\-_.]*$/; | 
					
						
							|  |  |  | 	if (nick.match(rgx_username)) { | 
					
						
							|  |  |  | 		replyto = "@" + nick + " "; | 
					
						
							| 
									
										
										
										
											2009-01-16 17:02:46 +00:00
										 |  |  | 		if ($("#notice_data-text").length) { | 
					
						
							|  |  |  | 			$("#notice_data-text").val(replyto); | 
					
						
							| 
									
										
										
										
											2009-01-17 03:03:53 +00:00
										 |  |  | 			$("#form_notice input#notice_in-reply-to").val(id); | 
					
						
							| 
									
										
										
										
											2009-01-16 17:02:46 +00:00
										 |  |  | 			$("#notice_data-text").focus(); | 
					
						
							| 
									
										
										
										
											2008-11-14 22:35:49 -05:00
										 |  |  | 			return false; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return true; | 
					
						
							| 
									
										
										
										
											2008-11-17 12:31:44 -05:00
										 |  |  | } |