[OpenPNE3]管理画面付きプラグイン(opFreepagePlugin)#4 PC/モバイルの動作画面の作成

Written by uechoco 2月 27
このエントリをはてなブックマークに追加[OpenPNE3]管理画面付きプラグイン(opFreepagePlugin)#4 PC/モバイルの動作画面の作成のはてなブックマーク被リンク数このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをBuzzurl(バザール)に追加

前回まででopFreepagePluginの管理画面側は完成しています。今回はいよいよPCとモバイルの動作画面を作ります。

まずはPC版から。symfonyコマンドでpc_frontendのappとmoduleを作ります。moduleはfreepageという名前にします。

BASH:
  1. ./symfony opGenerate:app opFreepagePlugin pc_frontend
  2. ./symfony opGenerate:module opFreepagePlugin pc_frontend freepage

新しく作られたapps/pc_frontend/modules/freepage/actions/actions.class.phpのexecuteIndexメソッドを変更します。

php:
  1. public function executeIndex($request)
  2.   {
  3.     // forward 404 page unless freepage does exist
  4.     $this->forward404Unless($this->freepage = FreepagePeer::retrieveByPk($request->getParameter('id')), sprintf('Object freepage does not exist (%s).', $request->getParameter('id')));
  5.  
  6.     if ($this->freepage->getAuth()) {
  7.       if (($member = $this->getUser()->getMember()) && $member->getIsActive()) {
  8.         // ok
  9.       } else {
  10.         $this->forward404('This page is for sns members.');
  11.       }
  12.     }
  13.  
  14.     // forward 404 page unless app_type is 'pc';
  15.     $this->forward404Unless($this->freepage->getAppType() == 'pc', sprintf('This page is for %s application.', $this->freepage->getAppType()));
  16.  
  17.     $this->getResponse()->setTitle($this->freepage->getTitle());
  18.   }

このIndexアクションでは、

  • idがパラメータとして存在するか
  • パラメータidがfreepageテーブルに存在するか
  • 該当フリーページが認証付きページの場合、認証済みのユーザであるかどうか
  • 該当フリーページがPC用かどうか

をチェックしています。認証済みユーザの認証部分の処理はもっとスマートな方法がありそうですね。近いうちに調べてみます。続いてさきほど自動生成されたapps/pc_frontend/modules/freepage/templates/indexSuccess.phpにも変更を加えます。

php:
  1. <?php echo $sf_data->getRaw('freepage')->getBody(); ?>

今回は本質的ではないのでデザインを考慮していません。大事なポイントは、HTMLエンティティがエスケープされていない生のデータを取得して、表示しているところです。こうしないと管理画面で苦労して書いたタグがそのまま出てしまうことになるので、生データを出力します。

これでPC版は完成です。(http://example.com/freepage/id/1)
03_opfreepage_pc

続いてモバイル版も作りましょう。ほとんど同じ手順で作ることができます。まずはmobile_frontend appを作り、freepage moduleを追加します。

BASH:
  1. ./symfony opGenerate:app opFreepagePlugin mobile_frontend
  2. ./symfony opGenerate:module opFreepagePlugin mobile_frontend freepage

自動生成されたapps/mobile_frontend/modules/freepage/actions/actions.class.phpを書き換えます。PC版との違いはPC/mobile判定部分だけです。

php:
  1. public function executeIndex($request)
  2.   {
  3.     // forward 404 page unless freepage does exist
  4.     $this->forward404Unless($this->freepage = FreepagePeer::retrieveByPk($request->getParameter('id')), sprintf('Object freepage does not exist (%s).', $request->getParameter('id')));
  5.  
  6.     if ($this->freepage->getAuth()) {
  7.       if (($member = $this->getUser()->getMember()) && $member->getIsActive()) {
  8.         // ok
  9.       } else {
  10.         $this->forward404('This page is for sns members.');
  11.       }
  12.     }
  13.  
  14.     // forward 404 page unless app_type is 'mobile';
  15.     $this->forward404Unless($this->freepage->getAppType() == 'mobile', sprintf('This page is for %s application.', $this->freepage->getAppType()));
  16.  
  17.     $this->getResponse()->setTitle($this->freepage->getTitle());
  18.   }
  19. [/phpocde]
  20.  
  21. そしてapps/mobile_frontend/modules/freepage/templates/indexSuccess.phpを変更します。こちらはデザインが入っていないのでPC版の同ファイルと同じ内容です。
  22. [phpcode]
  23. <?php echo $sf_data->getRaw('freepage')->getBody(); ?>

モバイル版も完成です。(http://example.com/mobile_frontend.php/freepage/id/1)
04_opfreepage_mobile

次回はルーティングの調整をします。

このエントリをはてなブックマークに追加[OpenPNE3]管理画面付きプラグイン(opFreepagePlugin)#4 PC/モバイルの動作画面の作成のはてなブックマーク被リンク数このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをBuzzurl(バザール)に追加

No Responses to “[OpenPNE3]管理画面付きプラグイン(opFreepagePlugin)#4 PC/モバイルの動作画面の作成”

コメントはまだありません。

Comments RSS rss うえちょこ@ぼろぐ TrackBack Identifier URI rss うえちょこ@ぼろぐ

コメントをどうぞ