携帯サイトを作るとき、PCサイト→携帯サイトの順で作るのだが、
ビューを作るのがだるすぎる。
ということで一括で対応した携帯用ビューを作るプログラムを作ってました。
[使い方]
① /ユーザー/[ユーザー名]/Appdata/Roaming/Adobe/DreamweaverCS5/ja-JP/configuration/Commands/
にこの html を makemobileview.htm として保存。
② cakephpのルートフォルダに m_template.ctp を作り、適当な view を開き、 コマンド > makemobileview と進む
③ ダイアログが出てくるので m_ など、どのprefixのviewを作るかを入力。
するとびっくり、PC用のviewに対応した全てのビューが一括で生成される。
[仕様]
・既にあるファイル は 上書きされない
・helepers フォルダ内は ファイルが作成されない
バグなどがあれば http://www.hideblog.net までどんどんお寄せ下さい。
<HTML>
<HEAD>
<TITLE>携帯用viewを一気に作成 v0.1</TITLE>
<SCRIPT LANGUAGE="javascript">
/*
[使い方]
① /ユーザー/[ユーザー名]/Appdata/Roaming/Adobe/DreamweaverCS5/ja-JP/configuration/Commands/
にこの html を makemobileview.htm として保存。
② cakephpのルートフォルダに m_template.ctp を作り、適当な view を開き、 コマンド > makemobileview と進む
③ ダイアログが出てくるので m_ など、どのprefixのviewを作るかを入力。
するとびっくり、PC用のviewに対応した全てのビューが一括で生成される。
[仕様]
・既にあるファイル は 上書きされない
・helepers フォルダ内は ファイルが作成されない
バグなどがあれば http://www.hideblog.net までどんどんお寄せ下さい。
*/
var prefix = '';//_dialogで指定
var rootDir = '';
var appDir = '';
var viewDir = '';//携帯用データを作るviewのフォルダ指定
var viewNgDir = ["helpers"];//このフォルダだった場合は携帯用viewを作らない
var templatectp = 'm_template.ctp';//テンプレートファイルの名前
/*
テンプレートファイルがなければ作るように促す。
あればそのまま。
*/
function runCommand()
{
//テンプレートのパス
template = rootDir + templatectp;
_getDirName();//ディレクトリの名前を読み出す
if(DWfile.exists(template)){
if(_dialog()){
//ビューフォルダのディレクトリ一覧を返す
dirList = DWfile.listFolder(viewDir,'directories');
makeFile(dirList);
}
} else {
alert('テンプレートファイル\n' + template + '\nを用意して下さい。');
}
}
/*
ディレクトリ一覧のファイルを全て読み出す
m_がなければ新規作成。コピーして。
*/
function makeFile(dirList)
{
i = 0;
res = '';
while(i < dirList.length){
//res += dirList[i] + ' a ';
// element , pages などの各ビューディレクトリのファイル一覧を取得
fileList = DWfile.listFolder(viewDir + dirList[i],'files');
//ビューを作らないフォルダ じゃなければ。
if(viewNgDir.indexOf(dirList[i])){
s = 0;
while(s < fileList.length){
// 各ビューフォルダ の index.ctp など。
//ここで m_index.ctp がなければテンプレートをコピーして保存するようにすればOK!
//すでにそのファイルがあれば作らない
fname = viewDir + dirList[i] + '/' + prefix + fileList[s];//今回作成されるべき携帯用ビューのファイル名
if(!DWfile.exists(fname)){
flag = isMake(fileList[s]);
if(flag){
//作る
DWfile.copy(template,fname);//ファイルをコピーして
//res += fileList[s] + "\n";
res += fname;
} else {
//すでにあれば作らない
}
}
s++;
}
}
i++;
}
alert('以下のファイルを作成\n' + res);
}
function isMake(fname)
{
var res = false;
flag = fname.indexOf(prefix); //m_ を持っているものを探す
if(flag != '0'){
res = true;
flag = fname.indexOf('Copy'); //copyファイルは作成しない
if(flag == '-1'){
//copyの文字が見つからなければ
res = true;
} else {
res = false;
}
}
return res;
}
/*
携帯用viewを一気に作る際にプレフィックスを指定する
*/
function _dialog() {
prefix = prompt('携帯サイトのprefixを記入 ex.( m_ )','m_');
if (prefix == null) {
alert("キャンセルします");
} else {
//alert(answer + ' でファイルを新規作成');
return true;
}
}
/*
viewディレクトリの名前を読み出す
*/
function _getDirName()
{
rootDir = dw.getSiteRoot();
appDir = rootDir + 'app/';
viewDir = appDir + 'views/';
}
/*
デバッグ
*/
function pr(){
alert(
"prefix => " + prefix +
"\nrootDir => " + rootDir +
"\nappDir => " + appDir +
"\nviewDir => " + viewDir
);
}
</SCRIPT>
</HEAD>
<BODY onLoad="runCommand()" >
</BODY>
</HTML>
修正とかだるいのでパッケージ化しませんでした。
どんどん使ってやって下さいねぇ。



