独自画面を作成して、画面からダイアログを使用(CmsType2Test04)

構成

$MT_DIR/
|__ plugins/
|  |__ CmsType2Test04/
|     |__ config.yaml
|     |__ lib/
|     |  |__ CmsType2Test04
|     |      |__ CMS.pm
|     |__ tmpl/
|     |  |__ test1_mode.tmpl
|     |  |__ test2_mode.tmpl
|     |  |__ test2_set_mode.tmpl
 
 
 


ソース

config.yaml

id: CmsType2Test04
key: CmsType2Test04
name: CmsType2Test04
version: 1.00
description: 独自画面のテスト
author_name: CmsType2Test04の作成者
author_link: http://www.example.com/about/
doc_link: http://www.example.com/docs/
 
# アプリケーション
applications:
    # CMS管理画面
    cms:
        # メニュー画面
        menus:
            # カスタムメニュー
            custom_menu:
                # 表示名
                label: Custom Menu
                # 表示順
                order: 1000
            # リストメニューサブ1
            custom_menu:test1:
                # 表示名
                label: test1
                # 表示順
                order: 100
                # 表示スコープ
                view:
                    - website
                    - blog
                # モード
                mode: test1_mode
 
        # メソッド定義
        methods:
            # "custom_menu:test1"をクリックした場合に呼び出される
            test1_mode: $CmsType2Test04::CmsType2Test04::CMS::test1_mode
            do_test1: $CmsType2Test04::CmsType2Test04::CMS::do_test1
            test2_mode: $CmsType2Test04::CmsType2Test04::CMS::test2_mode
            test2_set_mode: $CmsType2Test04::CmsType2Test04::CMS::test2_set_mode
 
 

lib/CmsType2Test04/CMS.pm

package CmsType2Test04::CMS;
 
use strict;
 
use MT::FileMgr;
use Data::Dumper;
 
use Encode;
use utf8;
 
sub test1_mode{
 
    # パラメータ取得
    my ($app) = @_;
 
    # 返却用パラメータ定義
    my ( %param, %args, %terms );
 
    # パラメータコンテキスト取得
    my $q = $app->param;
 
    # ブログID取得
    my $blog_id = $q->param('blog_id');
 
    $param{save_success} = $q->param('success');
 
    # テンプレートを設定
    $app->load_tmpl('test1_mode.tmpl', \%param );
}
 
sub test2_mode{
 
    # パラメータ取得
    my ($app) = @_;
 
    # 返却用パラメータ定義
    my ( %param, %args, %terms );
 
    # パラメータコンテキスト取得
    my $q = $app->param;
 
    # ブログID取得
    my $blog_id = $q->param('blog_id');
 
    $param{save_success} = $q->param('success');
 
    # テンプレートを設定
    $app->load_tmpl('test2_mode.tmpl', \%param );
}
 
sub test2_set_mode{
 
    # パラメータ取得
    my ($app) = @_;
 
    # 返却用パラメータ定義
    my ( %param, %args, %terms );
 
    # パラメータコンテキスト取得
    my $q = $app->param;
 
    # ブログID取得
    my $blog_id = $q->param('blog_id');
 
    $param{save_success} = $q->param('success');
 
    # テンプレートを設定
    $app->load_tmpl('test2_set_mode.tmpl', \%param );
}
 
sub do_test1{
 
    # パラメータ取得
    my ($app) = @_;
 
    # 返却用パラメータ定義
    my ( %param, %args, %terms );
 
    # パラメータコンテキスト取得
    my $q = $app->param;
 
    # ブログID取得
    my $blog_id = $q->param('blog_id');
 
    # パラメータ取得
    my $test1_name = $q->param('test1_name');
    my $test1_id = $q->param('test1_id');
    my $test1_version = $q->param('test1_version');
    my $description = $q->param('description');
    my $test1_author_name = $q->param('test1_author_name');
    my $test1_author_link = $q->param('test1_author_link');
 
    if($test1_id eq ""){
        return $app->redirect(
                   $app->uri(
                       mode => 'test1_mode',
                       args => {
                           success => 0,
                           blog_id => $blog_id,
                      },
                   )
            );
    }
 
    # エクスポートパスを取得
    my $mt_path = MT->instance->mt_dir;
 
    # ファイルマネージャー
    my $fmgr = MT::FileMgr->new('Local');
 
    # エクスポートパスの設定
    my $outpath = $mt_path . "/$test1_id";
 
    # データ編集
    my $outdata;
    $outdata .= "param01:".$test1_name . "\n";
    $outdata .= "param02:".$test1_id . "\n";
    $outdata .= "param03:".$test1_version . "\n";
    $outdata .= "param04:".$description . "\n";
    $outdata .= "param05:".$test1_author_name . "\n";
    $outdata .= "param06:".$test1_author_link . "\n";
 
    # 出力
    $fmgr->put_data($outdata, $outpath);
 
    return $app->redirect(
               $app->uri(
                   mode => 'test1_mode',
                   args => {
                       success => 1,
                       blog_id => $blog_id,
                  },
               )
        );
 
}
 
sub debug{
 
    my ($data) = @_;
 
    $Data::Dumper::Terse = 1;
    $Data::Dumper::Indent = 1;
    my $dump = Dumper($data);
 
    my $file = "/home/httpd/cgi-bin/mt/aaa.txt";
    my $fmgr = MT::FileMgr->new('Local');
    $fmgr->put_data($dump, $file);
}
 
1;
 
 

tmpl/test1_mode.tmpl

<mt:setvarblock name="page_title"><__trans phrase="Test1"></mt:setvarblock>
 
<mt:setvar name="export_webpage" value="1">
 
<mt:setvarblock name="html_head" append="1">
<script type="text/javascript" src="<mt:var name="static_uri">js/tc/client.js"></script>
<script type="text/javascript" src="<mt:var name="static_uri">js/dialog.js"></script>
</mt:setvarblock>
 
<mt:setvarblock name="system_msg">
<div id="msg-block">
  <mt:if name="save_success">
    <mtapp:statusmsg
       id="saved-theme"
       class="success">
      <__trans phrase="Test1 Success">
    </mtapp:statusmsg>
  </mt:if>
</div>
</mt:setvarblock>
 
<mt:include name="include/header.tmpl">
 
<form id="webpage_settings" method="post" enctype="multipart/form-data" action="<mt:var name="script_url">">
  <input type="hidden" name="__mode" value="do_test1" />
  <input type="hidden" name="blog_id" value="<mt:var name="blog_id">" />
  <input type="hidden" name="magic_token" value="<mt:var name="magic_token">" />
 
  <fieldset>
    <mtapp:setting
       id="test1-name-field"
       required="1"
       label="<__trans phrase="Test1 Name">"
       show_hint="1"
       hint="<__trans phrase="test1 name">">
      <input type="text" name="test1_name" id="test1_name" class="text required" value="<mt:var name="test1_name" escape="html">" />
    </mtapp:setting>
 
    <mtapp:setting
       id="test1-id-field"
       required="1"
       label="<__trans phrase="Test1 Basename">"
       show_hint="1"
       hint="<__trans phrase="Test Basename">">
      <input type="text" name="test1_id" id="test1_id" class="text required" value="<mt:var name="test1_id" escape="html">" />
    </mtapp:setting>
 
    <mtapp:setting
       id="test1-version-field"
       required="1"
       label="<__trans phrase="Test1 Version">"
       show_hint="1"
       hint="<__trans phrase="test1 version">">
       <input type="text" name="test1_version" id="test1_version" class="text required" value="<mt:var name="test1_version" escape="html">" />
    </mtapp:setting>
 
    <mtapp:setting
       id="test1-description-field"
       label="<__trans phrase="Test1 Description">"
       show_hint="1"
       hint="<__trans phrase="test1 description">">
       <textarea name="description" id="description" class="text low"><mt:var name="description" escape="html"></textarea>
    </mtapp:setting>
 
    <mtapp:setting
       id="test1-author-name-field"
       label="<__trans phrase="Test1 Author">"
       show_hint="1"
       hint="<__trans phrase="test1 author">">
       <input type="text" name="test1_author_name" id="test1_author_name" class="text" value="<mt:var name="test1_author_name" escape="html">" />
    </mtapp:setting>
 
    <mtapp:setting
       id="test1-author-link-field"
       label="<__trans phrase="Test1 Author link">"
       show_hint="1"
       hint="<__trans phrase="Test1 Author link">">
      <input type="text" name="test1_author_link" id="test1_author_link" class="text" value="<mt:var name="test1_author_link" escape="html">" />
    </mtapp:setting>
 
    <mtapp:setting
       id="test1-author-link-dialog"
       label="dialog">
       <a href="<mt:var name="script_url">?__mode=test2_mode&blog_id=<mt:var name="blog_id">" class="mt-open-dialog">dialog</a>
    </mtapp:setting>
 
  </fieldset>
 
<mt:setvarblock name="action_buttons">
  <button
     type="submit"
     accesskey="s"
     title="<__trans phrase="Test1Action">"
     class="export action button primary">
    <__trans phrase="Test1 Action"></button>
</mt:setvarblock>
<mt:include name="include/actions_bar.tmpl" bar_position="bottom" hide_pager="1" settings_bar="1">
 
</form>
 
<mt:include name="include/footer.tmpl">
 
 

tmpl/test2_mode.tmpl

<mt:include name="dialog/header.tmpl" page_title="New Dialog Menu">
 
<form method="post" action="<mt:var name="script_url">">
 
  <input type="hidden" name="__mode" value="test2_set_mode" />
  <input type="hidden" name="blog_id" value="<mt:var name="blog_id">" />
  <input type="hidden" name="magic_token" value="<mt:var name="magic_token">" />
 
  <fieldset>
    <mtapp:setting
       id="test1-name-field"
       required="1"
       label="<__trans phrase="Test1 Name">"
       show_hint="1"
       hint="<__trans phrase="test1 name">">
      <input type="text" name="test1_name" id="test1_name" class="text required" value="<mt:var name="test1_name" escape="html">" />
    </mtapp:setting>
 
  </fieldset>
 
  <div class="actions-bar">
      <div class="actions-bar-inner pkg actions">
          <button
              type="submit"
              class="action button primary primary-button"
              title="Action"
              >Action</button>
          <button
              type="submit"
              class="action button primary primary-button mt-close-dialog"
              title="Close"
              >Close</button>
      </div>
  </div>
 
</form>
 
</div><mt:include name="dialog/footer.tmpl">
 
 

tmpl/test2_set_mode.tmpl

<mt:include name="dialog/header.tmpl">
 
<script type="text/javascript">
/* <![CDATA[ */
    parent.jQuery.fn.mtDialog.close();
/* ]]> */
</script>
 
<mt:include name="dialog/footer.tmpl">
 

結果

独自画面

処理1
処理2
処理3



最終更新:2012年03月11日 23:51