CmfFormMail2の製作を始めました。

要望の多かったCmfFormMailのスキン対応については、現行のものを改良して実装するにはちょっと無理があるので、CmfFormMail2として作成することにしました。

とりあえずスキン部分の仕様がほぼ固まったので、ここで紹介したいと思います。
下記はスキン(HTMLファイル)内に記述することで自動的に置換して表示されます。

[1行テキスト]

TEXT(’
  LINK=NO;
  SUBJECT=件名;
  NAME=TITLE;
  VALUE=件名を入力して下さい。;
  SIZE=30;
  INPUT=NO;
  REP=件名なし;
  FORMAT=NORMAL;
  ETC=class=”inputfm”;
‘);

・LINKは入力文字中にURL、メアドが含まれる場合にオートリンクさせるかどうかを指定
・SUBJECTはエラー時に使用する項目名
・NAMEはINPUTタグのNAME属性
・VALUEは入力欄に最初に表示する値
・SIZEはINPUTタグのSIZE属性
・INPUTはこの項目を必須項目にするかどうか
・REPは未入力だった際に表示する値
・FORMATは入力した値が正しいかどうかをチェックするためのフォーマットタイプを指定します。
 NORMAL:指定なし
 MAIL:メールアドレスのフォーマットに制限
 URL:URLのフォーマットに制限
 LENGTH**:文字数(Byte数、**は数字)で制限
 NUMBER**:数字(Byte数、**は数字)のみに制限

・ETCはINPUTタグ内に追加したい任意の文字列を指定します。(classやid等)
 
[プルダウン]

PULLDOWN(’
  TYPE=PREF;
  LINK=NO;
  SUBJECT=住所(都道府県);
  NAME=PREFECTURE;
  HEADER=—–選択して下さい—–;
  VALUE=;
  SELECTED=東京都;
  SKIP=;
  SIZE=1;
  INPUT=YES;
  REP=;
  ETC=class=”inputfm”;
‘);

・TYPEはPREF(都道府県)、SCOPE(数字の範囲指定)、NORMAL(任意)のいずれかを指定します。
・HEADERはプルダウンの最初に表示したい値を指定します。
・VALUEは
 TYPEがSCOPEの場合は数字の範囲を指定します。(1970-2000、30-1など)
 TYPEがNORMALの場合は任意の値を指定します(月,火,水,木など)
・SELECTEDは最初に選択しておきたい値を指定します。
・SKIPは除外したい値を指定します。

[マルチプル]

MULTIPLE(’
  TYPE=PREF;
  LINK=NO;
  SUBJECT=都道府県;
  NAME=PREFECTURE2;
  HEADER=—–選択して下さい—–;
  VALUE=;
  SELECTED=;
  SKIP=;
  SEPARATOR=/;
  SIZE=5;
  INPUT=NO;
  REP=;
  ETC=class=”inputfm”;
‘);

ほとんどプルダウンと同じです。
・SELECTEDは「,」で区切って複数指定できます。
・SEPARATORは複数選択された場合の区切り文字を指定します。

[ラジオボタン]

RADIO(’
  LINK=NO;
  SUBJECT=年齢;
  NAME=AGE;
  VALUE=10歳未満,10代,20代,30代,[BR],40代,50代,60歳[ZSP]以上;
  SELECTED=20代;
  INPUT=NO;
  REP=;
  ETC=class=”inputfm”;
‘);

各項目は上記とほぼ同じです。

[チェックボックス]

CHECKBOX(’
  LINK=NO;
  SUBJECT=通信環境;
  NAME=NETWORK;
  VALUE=ダイヤルアップ,ISDN,ADSL,[BR],ケーブル,FTTH,その他;
  SELECTED=ADSL,FTTH;
  SEPARATOR=[BR];
  INPUT=NO;
  REP=;
  ETC=class=”inputfm”;
‘);

各項目は上記とほぼ同じです。

[添付ファイル]

TEMPFILE(’
  SUBJECT=添付ファイル;
  NAME=TEMP;
  VALUE=;
  SIZE=40;
  LIMIT=524288;
  INPUT=NO;
  REP=;
  ETC=class=”inputfm”;
‘);

各項目は上記とほぼ同じです。
・LIMITは添付ファイルのサイズを指定します。

[テキストエリア]

TEXTAREA(’
  SUBJECT=メッセージ;
  NAME=MESSAGE;
  VALUE=その他連絡事項がある場合はここに記述してください。;
  SIZE=5,60;
  WRAP=SOFT;
  INPUT=NO;
  REP=;
  ETC=class=”inputfm”;
‘);

各項目は上記とほぼ同じです。
・SIZEは行数、列数を指定します。
・WRAPはTEXTAREAタグのWRAP属性を指定します。

各関数「TEXT(’***’);等」内では全半角スペース、タブ改行はすべて無視されます。

関数内では下記の自動変換タグが使用できます。
[YEAR]:現在の西暦
[MONTH]:現在の月
[DAY]:現在の日
[HOUR]:現在の時
[MINUTE]:現在の分
[SECOND]:現在の秒
[BR]:改行
[SP]:半角スペース
[ZSP]:全角スペース
[SC]:セミコロン

かなり大雑把ですがこんな感じになる予定です。
また上記の関数を使用せずに手書きで記述してもイケるようにする予定です。

↓にサンプルのスキンを置いておきます。
スキン
cmfmail2-skin.txt
実行結果
cmfmail2-result.html