2010-01-01から1年間の記事一覧

インストーラ改修(2) エラー検出とロールバック

app/config関連の権限設定を間違えていると、database.phpを作成する過程でエラーになります。 その付近のエラー検出追加と、ロールバック処理を追加しました。 app/config関連で必要な権限設定は以下の通り app/config (777) app/config/database.php.insta…

インストーラ関連まとめ

CakePHPベースのプロジェクト管理システム、 「CandyCane」 http://thechaw.com/candycane/ のソース(概ね2010/04時点)をベースとした、CakePHPでの「インストーラ実装方法」まとめです。私的残件課題:「多言語化対応」ができてない、という問題点が、残…

インストーラ改修(5) core.phpの書換え:Security.salt

CandyCaneベースのインストーラで、core.phpの設定(Security.salt)をランダムハッシュで行なう改修です。この機能追加は、概ねCroogo ver.1.3の仕様ベースです。

インストーラ改修(1) システムメッセージ表示

CandyCaneのインストーラプラグインを改修してみます。 ベースソースは、昨日時点の http://thechaw.com/candycane/source/ です。 まずは、ふと気づいた 「コントローラで $this->Session->setFlash()してるはずのメッセージがテンプレートで表示されていな…

CandyCaneインストーラを使ってみた。

CandyCaneのインストーラプラグインを使ってみて、エラーになった箇所・私が勘違いしてた実仕様は以下の通り。 app/configディレクトリを読み書き可にしないとdatabase.phpを作成できない 権限を変えてないと、database.php.installをdatabase.phpにリネーム…

インストーラの作り方調査

インストーラを作りたい。 できれば、サーバにソースをアップロード→ブラウザアクセス、一部データ(管理ID,パスワードなど)を入力→実行 で、できるだけ全てが済むようなインストーラを。 基本的なインストーラの作り方の一例を記載した記事を見つけたので、…

CakeSchemaはENUMやInnoDBを扱えない

CakePHPには、テーブルを初期化・作成するSchema機能があります。 現在のDBからSchema設定を作成したり、 以前のSchemaとの差分を更新するSchema設定を作成したり、 database.phpのテーブル名prefixにも対応しているので、 システムのインストール・アップデ…

$form->inputで日時選択フォームのカスタマイズ

Formヘルパーで、日時選択フォームの出力をカスタマイズする方法。 以下の参考サイト:dateTime()による指定方法をベースに、 input()による指定方法 および 月を英語以外で表示する方法 プルダウンの最初を空欄にする/しない方法 参考サイト CakePHP1.2 For…

controllerでset済みの値を取得

コントローラの $this->set(〜〜)でセットした値を参照する属性 $this->viewVars[変数名] $this->viewVarsは配列なので、値のチェックは if (in_array('isOwner', $this->viewVars)や if ($this->viewVars['isOwner'] !== true) {などでできる。

SaveAll()とafretSave()の関係

saveAll()使う場合は、afterSave()の設定に要注意、というお話です。

多言語化対応メモ

翻訳テキストを設定する方法で、多言語化(国際化)対応を行なった作業メモです。 データベースに設定する方法もあるそうですが、ただでさえACLでDBに負担かけているので、翻訳テキスト方を採用しました。 参考サイト CakePHP1.2の簡単国際化: CakePHP のおい…

テーマ機能のソース読み

CakePHPには「テーマ」機能というものがあり、ビューテンプレートを変更することができます。 http://book.cakephp.org/ja/view/488/Themesつまりこれで、「スキンチェンジャー機能」を実装できる(はず)。でも情報が少ないので、CakePHPの関連ソースを読んで…

DBデータをUTF-8に統一するための設定

CakePHPデフォルトのデータベース設定(database.php)では、サーバ環境によってはデータがUTF-8で保存されない場合があります。文字化けや、VARCHAR文字数上限のエラーに繋がるので、CakePHP側で「DBにUTF-8で保存する」ための設定を追加して置く方が良いです…

ビューでコントーラ名とアクションを取得

コントローラ名 $this->viewPath アクション名 $this->action あるいは コントローラ名 $this->params["controller"] アクション名 $this->params["action"]

ページネーション:ビューの詳細

CakePHPのページネーション(ページャ)機能のヘルパーについて。 以下CookBookから抜粋と補足。 http://book.cakephp.org/ja/view/166/Pagination-in-Views

Textヘルパーで文字列処理

テンプレートで、文字列に特定の処理を施して表示したい場合、Textヘルパーが便利です。 http://book.cakephp.org/ja/view/216/Texttruncate (長文省略)、autoLink/autoLinkUrls (URL自動リンク)あたりが頻度が高そうですが、 toList (配列を文字列リストに…

IE6〜8のトンデモな違い:修正

前述の表示状態を修正しました。特にIE6*1の表示は、CakePHPのgeneric.css(ver1.2.5)に由来していたので注意が要りそうです*2 *1:InternetExplorerCollectionの他、本家IE6でも同様の表示になることを確認 *2:但し、私の独自CSSの影響もあります

IE6〜8の、トンデモな違い。

IEが、今までHTMLタグ要素やCSSやJavaScriptで独自路線をとってきていて。 ても、バージョンを重ねる毎*1に、『他ブラウザとの違いを埋めて、標準化しよう』と・・・してる、のじゃあないかな?という事を感じてはいて、そうなれば、と歓迎していたのですが…

特定のコミットの差分を見たい場合

コミットハッシュを指定して、特定のコミットで反映した差分を見たい場合のコマンド。 git show [コミットハッシュ] コミットハッシュは、 HEAD や HEAD^2 でもOK

IE8でIE7のレンダリングを使う

IE8で、以下のメタタグを記載すると「IE7標準モード」でレンダリングされるそうです。 <meta http-equiv="X-UA-Compatible" content="IE=7">IE8のレンダリングモードに関するまとめ | SummerWind IE5と同等モードというのもあるそうです。 本来の目的は以前IE対応でデザインしたページを改修せずに表示するため</meta>…

302エラーの解消方法

302エラーになる場合。コントローラやモデル、コンポーネントなどのソースでPHPタグを閉じた後*1に余白があるのが原因で、発生している場合があるそうです。 http://old.nabble.com/Re%3A-TCPDF-error%3A-Some-data-has-already-been-output%2C-can%27t-send…

エムブリオマシンの英語スペル

Twitterより。 cake67: エムブリオマシンを英語でつづった場合のスペル不明。。 #TRPG 520%◎級 on Twitter: "語感だけでEmbryo Machineと言ってみますRT @cake67: エムブリオマシンを英語でつづった場合のスペル不明。。 #TRPG" GK_Ozwald: 語感だけでEmbry…

Formatを自由に設定できるTimeヘルパー(2)

id:hiromi2424さんからの情報を受け、ヘルパー名は「Time」のまま、nice()とniceShort()で日時の出力書式を設定する改修を行ないました。 前記事

Formatを自由に設定できるTimeヘルパー

CakePHPには、日付の文字列(2010-03-03 16:57:22など)をフォーマットしてくれるTimeヘルパ−があります。 http://book.cakephp.org/ja/view/275/Formattingこれを使うと、「XX時間前」や「今日、15:44」のような表示を、容易に実現できます。しかし、「今日…

mediaプラグインまとめ

Mediaプラグインによる画像のアップロード機能作成で、書いた記事のまとめリンクです。

mediaプラグイン応用(11) アップロードユーザ情報の追加

Mediaプラグインは、「どのユーザがアップロードしたか」の情報を保管しません。 そのため、別のユーザがアップロードしたファイルであっても、IDを正しく指定すれば削除できてしまいます。attachmentsテーブルにuser_idを追加して、ファイル保存時の登録と…

メディアビュー機能

静的ファイルを、コントローラを通してアクセスさせる方法。 http://book.cakephp.org/ja/view/489/Media-Viewsログイン済みメンバーのみ、あるいは権限のあるメンバーにのみダウンロードを許可させる場合などに使えます。サンプルはダウンロードですが、画…

mediaプラグイン応用(10) 画像サイズを変更しない

Mediaプラグインで画像のVersionファイルを作成する際、サイズを変更しない方法。拍子抜けするくらい、簡単です。 core.phpのVersionファイル設定で、fitCrop/fit/zoomCropなどの、縮小設定を一切いれないだけです。差分 /* 画像 */ + 'orig' => array('conv…

土曜の買い物&日曜の例会

土曜は、ダブルクロス3rdのサプリ&リプレイx3など買い、読み。 日曜は、地元のサークルの例会と、ゲーム漬けな週末でした。

mediaプラグインのGIFAR対策

Mediaプラグインは、アップロードファイルしたファイルそのもの(transfer/以下)への直接アクセス表示を非推奨として、代わりにfilter/以下に出力したVersionファイルの表示を推奨しています。 特に画像ファイル等に、セキュリティ上の理由があるためだそう…