CmsType2Test02

構成

$MT_DIR/
|__ plugins/
|  |__ CmsType2Test02/
|     |__ config.yaml
|     |__ lib/                    
|     |  |__ CmsType2Test02
|            |__ CMS.pm
|     |__ tmpl/                    
|     |  |__ test2_mode.tmpl
 
 
 

ソース

config.yaml

id: cmstype2test02
key: CmsType2Test02
name: CmsType2Test02
version: 0.00
 
# アプリケーション
applications:
    # CMS管理画面
    cms:
        # メニュー画面
        menus:
            # カスタムメニュー
            custom_menu:
                # 表示名
                label: Custom Menu
                # 表示順
                order: 1000
            # リストメニューサブ1
            custom_menu:test2:
                # 表示名
                label: test2
                # 表示順
                order: 200
                # 表示スコープ
                view:
                    - website
                    - blog
                # モード
                mode: test2_mode
        # メソッド定義
        methods:
            # "custom_menu:test2"をクリックした場合に呼び出される
            test2_mode: $CmsType2Test02::CmsType2Test02::CMS::test2_mode
            do_test2: $CmsType2Test02::CmsType2Test02::CMS::do_test2
 
 
 

lib/CmsType2Test01/CMS.pm

package CmsType2Test02::CMS;
 
use strict;
 
use MT::FileMgr;
use Data::Dumper;
 
use Encode qw(decode);
use utf8;
 
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 do_test2{
 
    # パラメータ取得
    my ($app) = @_;
 
    # 返却用パラメータ定義
    my ( %param, %args, %terms );
 
    # パラメータコンテキスト取得
    my $q = $app->param;
 
    # ブログID取得
    my $blog_id = $q->param('blog_id');
 
    # パラメータ取得
    my $test2_name = $q->param('test2_name');
    my $test2_id = $q->param('test2_id');
    my $test2_version = $q->param('test2_version');
    my $description = $q->param('description');
    my $test2_author_name = $q->param('test2_author_name');
    my $test2_author_link = $q->param('test2_author_link');
 
    if($test2_id eq ""){
        return $app->redirect(
                   $app->uri(
                       mode => 'test2_mode',
                       args => {
                           success => 0,
                           blog_id => $blog_id,
                      },
                   )
            );
    }
 
    # データ編集
    my $outdata;
    $outdata .= "param01:".$test2_name . "\n";
    $outdata .= "param02:".$test2_id . "\n";
    $outdata .= "param03:".$test2_version . "\n";
    $outdata .= "param04:".$description . "\n";
    $outdata .= "param05:".$test2_author_name . "\n";
    $outdata .= "param06:".$test2_author_link . "\n";
 
    # 文字数
    use bytes();
    my $size = bytes::length($outdata);
 
    # 出力
    $app->{no_print_body} = 1;
    $app->set_header("Content-Disposition" => "attachment; filename=$test2_id" );
    $app->set_header("Content-Length" => "$size");
    $app->send_http_header("application/octet-stream");
 
    binmode STDOUT, ':encoding(utf8)';
    $app->print($outdata);
 
 
    return $app->redirect(
               $app->uri(
                   mode => 'test2_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/test2_mode.tmpl

<mt:setvarblock name="page_title"><__trans phrase="Test2"></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="Test2 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_test2" />
  <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="test2-name-field"
       required="1"
       label="<__trans phrase="Test2 Name">"
       show_hint="1"
       hint="<__trans phrase="test2 name">">
      <input type="text" name="test2_name" id="test2_name" class="text required" value="<mt:var name="test2_name" escape="html">" />
    </mtapp:setting>
 
    <mtapp:setting
       id="test2-id-field"
       required="1"
       label="<__trans phrase="Test2 Basename">"
       show_hint="1"
       hint="<__trans phrase="Test Basename">">
      <input type="text" name="test2_id" id="test2_id" class="text required" value="<mt:var name="test2_id" escape="html">" />
    </mtapp:setting>
 
    <mtapp:setting
       id="test2-version-field"
       required="1"
       label="<__trans phrase="Test2 Version">"
       show_hint="1"
       hint="<__trans phrase="test2 version">">
       <input type="text" name="test2_version" id="test2_version" class="text required" value="<mt:var name="test2_version" escape="html">" />
    </mtapp:setting>
 
    <mtapp:setting
       id="test2-description-field"
       label="<__trans phrase="Test2 Description">"
       show_hint="1"
       hint="<__trans phrase="test2 description">">
       <textarea name="description" id="description" class="text low"><mt:var name="description" escape="html"></textarea>
    </mtapp:setting>
 
    <mtapp:setting
       id="test2-author-name-field"
       label="<__trans phrase="Test2 Author">"
       show_hint="1"
       hint="<__trans phrase="test2 author">">
       <input type="text" name="test2_author_name" id="test2_author_name" class="text" value="<mt:var name="test2_author_name" escape="html">" />
    </mtapp:setting>
 
    <mtapp:setting
       id="test2-author-link-field"
       label="<__trans phrase="Test2 Author link">"
       show_hint="1"
       hint="<__trans phrase="Test2 Author link">">
      <input type="text" name="test2_author_link" id="test2_author_link" class="text" value="<mt:var name="test2_author_link" escape="html">" />
    </mtapp:setting>
 
  </fieldset>
 
<mt:setvarblock name="action_buttons">
  <button
     type="submit"
     accesskey="s"
     title="<__trans phrase="Test2Action">"
     class="export action button primary">
    <__trans phrase="Test2 Action"></button>
</mt:setvarblock>
<mt:include name="include/actions_bar.tmpl" bar_position="bottom" hide_pager="1" settings_bar="1">
 
</form>
 
<script type="text/javascript">
/* <![CDATA[ */
jQuery.mtCheckbox();
 
jQuery(function() {
    $("button").click(function(){
        alert("111");
        return false;
    });
 
});
    <mt:var name="js_include_footer" />
/* ]]> */
</script>
 
<!-- フッター -->
<mt:include name="include/footer.tmpl">
 
 

結果

独自画面

ダウンロード





最終更新:2012年02月06日 00:03