2010年09月13日

cakephp用 dreamweaver拡張。携帯用ビュー一括作成。

お願いします♪いいねとかつぶやいたりして下さい
 
表題の通り。
携帯サイトを作るとき、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>



修正とかだるいのでパッケージ化しませんでした。
どんどん使ってやって下さいねぇ。
あなたにとって有用な記事でしたか?是非ブックマークしておくことをおすすめします。
 




ライブラリを配布しちゃったり
webデザイン
Fireworks
HTMLコーディング
CSS
Dreamweaver
携帯サイト
webプログラム
PHP
正規表現
cakephp
MYSQL
javascript
webマーケティング
adwords
analytics
windows7
ショートカットキー
おすすめ情報
サイト
facebook
ライブラリ
配布
アプリ
iphone
ipad
サーバー
さくらサーバー
全ての記事を読む




トップ - 最新の記事一覧 - お問い合わせ