独自画面を作成して、画面からダイアログを使用(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