logo

2011年10月アーカイブ

MovableType フォームプラグイン CreamForm その3

5. 入力チェックについて
入力チェックは下記の9つ用意されています。
    email      メール
    tel        電話番号
    zip        郵便番号
    integer    整数
    alphabet   アルファベット
    alphadigit  英数
    uri        URL
    max_length  最大入力字数
    min_length  最小入力字数

フォームの入力値とこの9つの入力チェックを結びつけているのは
 plugins/CreamForm/lib/CreamForm/Cream.pm
のファイルになります。

該当箇所は下記。
use constant RULE => [
  {
    name        => 'email',
    check       => [qw(email not_null)],
    max_length  => undef,
    min_length  => undef,
    label       => 'メールアドレス',
  },
  {
    name => 'name',
    check => [qw(not_null)],
    max_length => 50,
    min_length => 1,
    label       => '名前',
  },
  {
    name => 'type',
    check => [qq(not_null)],
    max_length => undef,
    min_length => undef,
    label       => 'お問い合わせ理由',
  },
  {
    name => 'content',
    check => [qw(not_null max_length)],
    max_length => 200,
    min_length => undef,
    label       => '本文',
  },
];


name フォームテンプレートのnameと紐づきます。
check 9つのうちどのチェックを適用するかを指定します。複数可。
max_length 最大文字数
min_length 最小文字数
label エラー時の項目表示名です。



例としてメールアドレス入力について見てみましょう。
  {
    name        => 'email',          
  →フォームテンプレのnameがemailの入力値について
   判定をすることになります。
    check       => [qw(email not_null)],    
  →9つのチェックのうちemailとnot_nulの判定をします。
    max_length  => undef,         
  →最大値文字数はチェックしません
    min_length  => undef,         
  →最小値文字数はチェックしません
    label       => 'メールアドレス',      
  →エラー時の表示名称は「メールアドレス」と表示されます
  },


上記の例でフォームのメールアドレスを必須項目から任意入力にする場合は
not_nullを削除してしまえば良い訳です。

また最大文字数を30文字までにするなら
    max_length  => 30,
とすればよいです。         



6. 項目の追加や拡張について
準備中。




MTフォームプラグインCreamFormの使用方法その2です。


3. テンプレートの設置
設定が完了したら、フォームのテンプレートを設置しましょう。
インデックステンプレートに3つのテンプレートを追加します。どのウェブサイト、ブログのインデックステンプレートでもかまいません。

・CreamForm入力
・CreamForm確認
・CreamForm完了

※テンプレートの名前を必ず上記の名前にしてください。上記のテンプレート名でフォームのテンプレートを判別していますので間違えないようにしてください。


各テンプレートに下記のMTタグ、HTMLタグを挿入してください。
スタイルやHTMLタグはお好みで変更してください。あくまでサンプルです。


formのactionにはドキュメントルートからCreamFormプラグインのcm.cgiへ送信してください。
本サイトでは下記のサンプルの通りです。
hiddenで__modeの値も渡しています。こちらには確認なのか完了なのかを判別するための値が入っています。


○ CreamForm入力

<p class="error">
    <mt:Loop name="errors">
    <mt:getvar name="__value__{label}" /><br />
    </mt:Loop>
</p>

<form action="/mt/plugins/CreamForm/cm.cgi" method="post">
    <input type="hidden" name="__mode" value="confirm">
            <table class="tableCreamForm" cellspacing="1">
                <tr>
                    <th>名前</th>
                    <td>
                        <input id="mail_author" name="name" size="30" 
value="<mt:var name="param" key="name">" style="width:90%;" />
                    </td>
                </tr>
                <tr>
                    <th>メールアドレス</th>
                    <td>
                        <input id="mail_email" name="email" size="30" 
value="<mt:var name="param" key="email">" style="width : 90%;" />
                    </td>
                </tr>
                <tr>
                    <th>お問い合わせ理由</th>
                    <td>
                    <select name="type" >
<option value="">選択する</option>
<option value="アプリについて">サイトについて</option>
<option value="MovableTypeについて">MovableTypeについて</option>
<option value="Perlについて">Perlについて</option>                    
<option value="イラスト・デザインについて">イラスト・デザインについて</option>
<option value="その他について">その他について</option>
                    </select>                      
                    </td>
                </tr>
                <tr>
                    <th>本文</th>
                    <td>
 <textarea id="mail_text" name="content" rows="15" 
cols="20" style="width : 90%;">
<mt:var name="param" key="content">
 </textarea>
                    </td>
                </tr>
            </table> <br />
            <input type="submit" value="確認">
        </form>



○ CreamForm確認
<table class="tableCreamForm" cellspacing="1">
    <tr>
        <th>名前</th>
        <td>
        <mt:var name="name" />
        </td>
    </tr>
    <tr>
        <th>お問い合わせ理由</th>
        <td><mt:var name="type" /></td>
    </tr>
    <tr>
        <th>メールアドレス</th>
        <td><mt:var name="email" /></td>
    </tr>
    <tr>
        <th>本文</th>
        <td><mt:var name="content"  remove_html="1" nl2br="xhtml"/></td>
    </tr>
</table>

<form action="/mt/plugins/CreamForm/cm.cgi" method="post">
    <input type="hidden" name="__mode" value="finish">
    <input type="hidden" name="name" value="<mt:var name="name">">
    <input type="hidden" name="type" value="<mt:var name="type">">
    <input type="hidden" name="email" value="<mt:var name="email">">
    <input type="hidden" name="content" value="<mt:var name="content">">
    <input type="hidden" name="token" value="<mt:var name="token">"><br />
    <a href="#" onClick="history.back(); return false;" >戻る</a>
    <input type="submit" value="送信する"/>
</form>


○ CreamForm完了
完了フォームには完了のメッセージを入力してください。





4. 管理画面について
入力されたデータはすべてDBに保存されます。保存されたデータを確認するには管理画面のシステムの左メニューに追加されお「お問い合わせ」メニューにアクセスしてください。
otoiawase.jpg


送信された一覧が表示されます。

削除の場合はチェックボックスにチェックを入れて削除ボタンを押してください。
CSVダウンロードを押すとCSVファイルがダウンロードされます。文字コードはShit-jisになってます。

また詳細を押すと内容が全て表示されます。




MovableType フォームプラグイン CreamForm

MovableType フォームプラグインを作ってみました。 
MT plugin Creamシリーズ第一弾 CreamForm です。

Plugin作成を勉強しようと思い、どうせ作るなら企業サイトでも使えるものにしたいということでお問い合わせフォームプラグインを作成してみました。ソースコードが汚い部分がありますが(特にテンプレ周り)後々修正して行きます。

基本的に使用は無料です。
詳しくはプラグインのご利用についてをお読みください。


CreamFormの主な機能については下記の通りです。


基本機能について
 ・フォーム機能(入力チェック、リロード対策)
 ・メール送信機能
 ・メール送信テンプレート編集機能
 ・DBデータ保存機能
 ・データ参照機能
 ・CSVダウンロード機能

デフォルトで用意されているフォーム入力項目は限られていますが、
プラグインをインストールする前にファイルに修正を加えておけば追加が可能です。


○ダウンロード
CreamForm.1.0.zip(MT5で動作します。MT4では動作未検証です。)
本プラグインをご利用される方は必ずプラグインのご利用についてをお読みください。

フォームについては、本サイトのお問い合わせフォームがCreamFormでできているので
必要があれば確認して頂ければと思います。



使用方法について
 1. インストールについて
 2. プラグインの設定
 3. テンプレートの設置
 4. 管理画面について
 5. 入力チェックの変更について
 6. 項目の追加や拡張について


1. インストールについて

まずはプラグインをダウンロードしてプラグインディレクトリにアップロードしましょう。

次にCreamFormディレクトリ配下にあるdataディレクトリのパーミッションを777に
cm.cgiのパーミッションを755にして実行権限を与えておきます。

管理画面にアクセスするとアップグレードが開始され、スキーマが拡張されます。
up2.png


databaseupgrade.jpg


最初から用意されているカラムは下記です。

name 名前
email メールアドレス
type お問い合わせ理由
content お問い合わせ内容

他にも項目が必要な場合は、6. 項目の追加や拡張についてを参照してください。


2. プラグインの設定
管理画面にログインして、システムからプラグインの一覧を開きましょう。
CreamFormが表示されているはずです。
sysplug.jpg


設定を開いて必要情報を入力しましょう。
sysmailnyuuryoku.jpg

管理画面で設定するのは自動返信メールの内容になります。
メール本文ではタグを使うことで、フォームに入力された情報を埋め込むことができます。

・From
 自動返信メールのFromです。必ず実在するアドレス、かつ自分で運用しているアドレスにしてください。

・Cc
 Ccで入力されたアドレスにメールを送信します。

・Bcc
 Bccで入力されたアドレスにメールを送信します。

・メールタイトル
 自動返信メールのタイトルになります。

・メール本文
 自動返信メールの本文になります。フォームで入力された値を挿入するには下記のタグを使用してください。
  {name} 名前
  {email} メールアドレス
  {type} お問い合わせ内容
  {content} 内容





プラグインのご利用について

本サイト内で公開配布しているプラグインはmarooonの著作物です。
これらの著作物は自由にご利用頂けますが,必ず下記の注意事項をお読みの上ご利用ください。
なお,下記の各項に同意頂けない場合はご利用できません。

著作権はmarooonが保有しています。
原則として特に指定がない限り、個人・法人を問わず無償でご利用頂けます。

対価を設定して販売したり、サポートを販売したり、商品に組み込んで製品の一部として販売することはできません。
ただし特に指定がない限り、制作会社などの代理者が納品物に組み込んで利用することができますが、プラグインに対価を設定することはできません。

公開配布されているプラグインやテンプレートを利用された結果のデータ破損、システム破損などあらゆる損害や不具合はこれを補償いたしません。
利用者の責任においてご利用ください。

サポート業務は行っておりませんが、できる限り質問等にはお答え致します。

これらの著作物の二次著作物を再配布することはできません。

これらの著作物の著作権表示を改変しないでください。
最近スマートフォン対応で位置情報を取り扱うことが多くなっています。
postgresqlで在地から半径500m内にある地点の検索はどうしたらよいでしょうか?

postgresにはpoint型というXY座標を取り扱う型が存在します。
しかし、緯度経度を取り扱う場合は単純にXY座標では表現できません。

北極点周辺と赤道付近を想像してください。
同じ緯度で地球を一周する場合、北極点付近ではおそらく数百メートルで一周するのではないでしょうか?
赤道付近ではどうでしょう?4万km移動することになるでしょう。

地球は丸く、単純に碁盤の目のように正方形ではないのです。
ですからXY座標では表現できないのです。地球は丸い!

そこで緯度経度の情報を取り扱えるpostgisの登場です!
様々な関数が用意されており便利らしいです。(まだ使ってませんが。。)

御託はいいのでひとまずインストール。

まずはpostgisのインストール
yum install postgis


テンプレートDBの作成
postgisの関数を使えるように用意しておく?みたい。
createdb -U postgres template_postgis
createlag -U postgres plpgsql template_postgis
createlang -U postgres plpgsql template_postgis
psql -U postgres -d template_postgis -f /usr/share/pgsql/contrib/lwpostgis.sql
psql -U postgres -d template_postgis -f /usr/share/pgsql/contrib/lwpostgis_upgrade.sql 
psql -U postgres -d template_postgis -f /usr/share/pgsql/contrib/postgis_comments.sql 
psql -U postgres -d template_postgis -f /usr/share/pgsql/contrib/spatial_ref_sys.sql 

後は使用するDBの作成
createdb -U webservice -T template_postgis test_db

postgisが使えるか確認
psql -U webservice -c "select postgis_version();" test_db

            postgis_version            
---------------------------------------
 1.3 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
(1 行)
バージョン情報が表示されればOK

JavaScript Journal | JavaScript総合情報サイト

このアーカイブについて

このページには、2011年10月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2011年9月です。

次のアーカイブは2012年4月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。