MoyaSystem

もやしです。

@jazzに一斉メッセージ送信機能追加したった

そもそも

趣味でビッグバンドジャズをやってまして、そこの情報共有に @jazz http://www.jazz.co.jp/ というサイトを使ってるんですが、ユーザへの一斉メッセージ送信機能が無く不便。
ソースを覗いたところリクエストが単純だったので、これはなんとかなるんじゃないのってことでChrome拡張で作ってみた。

できた

すべてのソースはこちらに上げてあります。
https://github.com/hashikuchi/atJazzExtension

$(function(){
	function sendToAllMembers(IDList){
		$.each(IDList, function(){
			sendMessage(this);
		});
		alert("送信完了しました!");
	}

	function sendMessage(recipientID){
		var title = $("[name='title']").val();
		var article = $("[name='article']").val();
		$.ajax({
			beforeSend: function(xhr){
				xhr.overrideMimeType("text/html;charset=Shift_JIS");
			},
			type: "POST",
			url: "message_send.html",
			data:"to_Menber_ID=" + recipientID
				+ "&title=" + EscapeSJIS(title)
				+ "&article=" + EscapeSJIS(article)
			,
			failure:function(){
				alert("送信に失敗しました。送信先:" + recipientID);
			},
		});
	}

	// Recipients ID Lists
	var IDList = new Array(
			// example
			"XXXXX",
			"YYYYY",
			"ZZZZZ"
		)

	var normalcss = {
		"border": "1px #1a5bb0 solid",
		"padding": "2px 30px",
		"margin-left": "20px",
		"color": "#fff",
		"background-color": "#206fd8",
		"font-size": "1.2em",
		"font-weight": "bold",
		"cursor": "pointer"
	}

	var hovercss = {
		"background-color": "#87c339",
		"border": "1px #72b023 solid"
	}

	var sendToAllMembersButton =
		$("<input>").attr({
			type: "button",
			value: "全員に送信する"
		}).css(normalcss).hover(function(){
			$(this).css(hovercss);
		},function(){
			$(this).css(normalcss);
		}).click(function(){
			sendToAllMembers(IDList);
		});

	$("[value='送信する']").after(sendToAllMembersButton);
})();

苦労したところ

日本語の文字化けを解消するのが時間かかりました。はてな人力検索にお願いしたところ、すぐに回答をいただけました!id:Lhankor_Mhy さんありがとうございました。
dataにオブジェクト渡していたのを、Shift_JISエンコードした文字列を渡すようにして解決。このあたりの挙動の違いがよくわかっていないな。勉強せねば。。。