メールフォーム
メールフォームをCGIではなくプラグインで行なっています。
詳しくは、The blog of H.FujimotoのメールフォームプラグインV1.20(その1・概要とインストール)をご覧ください。
エントリーは1から12までありますが、基本は1から10まで、ajax化する場合は11も、さらにサイドバーへ表示する方法は12で書かれています。
メールフォームプラグインと、補助的に使用するGetQueryParamプラグインは、以下からダウンロードすることができます。ajax化する場合はprototype.jsもダウンロードします。また、ajaxのロード中に表示する画像はajaxload.infoというサイトで作成したものを使用しています。
なお、XHTML 1.0 Transitionalの場合はそのままでかまいませんが、Strictの場合は、テンプレートとスクリプトに若干の変更を加えます。
form要素にはname属性が使えませんからid属性に置き換えます。具体には、
<form method="post" action="<$MTCGIPath$>plugins/MailForm/mt-mail-form.cgi" name="mail_form">
を、
<form method="post" action="<$MTCGIPath$>plugins/MailForm/mt-mail-form.cgi" id="mail_form">
と書き換えます。
次に、「document.mail_form」では、form要素のname属性の値を得ることになり、id属性の値が得られないためスクリプトエラーになります。そのため、「document.name属性の値」ではなく、「document.forms['id属性の値']」としてやる必要があります。オリジナルのコードは、
<script type="text/javascript">
<!--
function mail_ajax(mode)
{
$("send_status").style.display = 'block';
document.mail_form.mail_preview.disabled = true;
document.mail_form.mail_post.disabled = true;
var params = Form.serialize("mail_form");
if (mode == "post") {
params += "&mail_post=1";
}
else if (mode == "preview") {
params += "&mail_preview=1";
}
new Ajax.Request("<$MTCGIPath$>plugins/MailForm/mt-mail-form.cgi",
{ method : "post",
parameters : params,
onComplete : displayMailResult,
onFailure : failureMailResult });
return false;
}
function displayMailResult(obj)
{
document.mail_form.mail_preview.disabled = false;
document.mail_form.mail_post.disabled = false;
$("send_status").style.display = 'none';
$("ajax_mail").innerHTML = obj.responseText;
}
function failureMailResult(obj)
{
alert('メールの処理が失敗しました。');
document.mail_form.mail_preview.disabled = false;
document.mail_form.mail_post.disabled = false;
$("send_status").style.display = 'none';
}
//-->
</script>
ですが、次のコードに書き換えます。
<script type="text/javascript">
<!--
function mail_ajax(mode)
{
$("send_status").style.display = 'block';
document.forms['mail_form'].mail_preview.disabled = true;
document.forms['mail_form'].mail_post.disabled = true;
var params = Form.serialize("mail_form");
if (mode == "post") {
params += "&mail_post=1";
}
else if (mode == "preview") {
params += "&mail_preview=1";
}
new Ajax.Request("<$MTCGIPath$>plugins/MailForm/mt-mail-form.cgi",
{ method : "post",
parameters : params,
onComplete : displayMailResult,
onFailure : failureMailResult });
return false;
}
function displayMailResult(obj)
{
document.forms['mail_form'].mail_preview.disabled = false;
document.forms['mail_form'].mail_post.disabled = false;
$("send_status").style.display = 'none';
$("ajax_mail").innerHTML = obj.responseText;
}
function failureMailResult(obj)
{
alert('メールの処理が失敗しました。');
document.forms['mail_form'].mail_preview.disabled = false;
document.forms['mail_form'].mail_post.disabled = false;
$("send_status").style.display = 'none';
}
//-->
</script>
とします。
コメント