Hatena::ブログ(Diary)

脱サラ大学生のプログラム日記 RSSフィード

2008-07-28

EthnaのWebフロントエンドEthnaAdminを作ってみた

| 00:44

コマンドラインを使いたくないのでWeb経由でEthnaコマンドを実行するツールを作ってみました。

必須環境

  • あらかじめEthnaが動く環境であること
  • パーミッションを気にしなくていい環境のこと
  • 本番環境と開発環境が分離していること

まあ、Ethnaが動いていることは必須ですね。構築方法はオフィシャルのサイトか昨日の記事を参考に作ってください。

パーミッションの問題が結構でかい。。。Web経由で動かすからできるファイルの権限がApacheユーザーとかになっていまいそうです。手元の環境はWindowsとCGIモードで動かしているXREA(CORESERVER)なので普通のLinux環境だとつらいかもしれません。

本番環境で使うと結構危ない気がしますので、勉強用か開発用で使ってくださいね。できたファイルだけ使う分には危険はないと思います。

ファイルの設置

├─codes
│
├─ethnaAdmin.php
│
├─neko
│
└─libs
    ├─pear
    │  ├─DB
    │  │  ├─...
    │  └─Ethna
    │      ├─...
    ├─pear-cli
    │  └─Console
    └─Smarty
        ├─...

こんな感じ?

libsは別の場所にあってもいいですが、プロジェクトを作ろうとしているフォルダの上にethnaAdmin.phpを設置します。

プロジェクトフォルダ作成

新しいプロジェクトを neko としますので、neko フォルダをethnaAdmin.phpと同じ場所に作成しておきます。

管理画面を開く

前回作成した codes プロジェクトがありますが、まだnekoは作っていないので表示されません。

f:id:akiraneko:20080728002254p:image

プロジェクトを追加

f:id:akiraneko:20080728002255p:image

追加するプロジェクト名を入れて追加します。

いろいろファイルが作成する画面ができます。TOPに戻るとnekoが増えています。

nekoプロジェクトを開く

f:id:akiraneko:20080728002256p:image

最初に自動的にできるファイルのみある状態です。

アクションを追加する

f:id:akiraneko:20080728002257p:image

こんな感じで追加していきます。フォルダに区切る場合には/で指定しますフォルダに区切る場合には_で指定します。大文字小文字は気をつけなくても自動的にやってくれるはず。。。あとアクション名はloginCheckとか途中に大文字来ると標準的な命名規則から外れるので注意してください。

プロジェクトTOPに戻る

f:id:akiraneko:20080728002258p:image

ある程度追加した画面です。追加するのリンクがあるのが確認できます。実はactionとviewとtemplateフォルダを検索してペアのファイルがあるか確認しています。

アクションにペアのファイルを作成する

f:id:akiraneko:20080728002259p:image

上の画面から作成するリンクをクリックすることで作っていけます。

今後の課題

よくよく考えたらもう少しコマンドたくさんある。。。テスト系とか他の物がすっぽり抜けていますね。使い方を思い出しながら環境構築しているので、オフィシャルのチュートリアルにでてきたコマンドしか作っていません(笑)

パーミッション系もテストしてみたいけれど、ちゃんとパーミッションがあるサーバー環境が手元にないからもう少し先かな。

概ね方向性的には便利だと思う。。。もう少し機能拡張は必要ですが、拡張はそんなに大変じゃないからなんとかなるかな。問題的には今はPHPじゃなくてJavaのプログラムを組んでいることだな(笑)

あっ、2.3系の場合にはtemplateの場所が変わっていますので、ソースの検索部分を変更しないとすべてのtemplateが見つかりません! jaからja_JPに変更だっけ?

作成物

今回1ファイルでやることを目的にしたので、1ファイルのみです(笑)

http://akira.info/labs/ethna/ethnaAdmin20080727.zip

トラックバック - http://d.hatena.ne.jp/akiraneko/20080728/1217173476
Connection: close