Changeset 407

Show
Ignore:
Timestamp:
09/12/07 17:41:31 (15 months ago)
Author:
ogawa
Message:

Support template duplication.

Location:
DuplicateEntries/trunk/DuplicateEntries
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • DuplicateEntries/trunk/DuplicateEntries/DuplicateEntries.pl

    r406 r407  
    1616use MT::Page; 
    1717use MT::Placement; 
     18use MT::Template; 
    1819 
    19 our $VERSION = '0.01'; 
     20our $VERSION = '0.02'; 
    2021 
    2122my $plugin = __PACKAGE__->new({ 
    2223    id => 'duplicate_entries', 
    2324    name => 'DuplicateEntries', 
    24     description => q(<MT_TRANS phrase="DuplicateEntries plugin allows you to duplicate Movable Type entries and pages.">), 
     25    description => q(<MT_TRANS phrase="DuplicateEntries plugin allows you to duplicate Movable Type entries, pages, and templates.">), 
    2526    doc_link => 'http://code.as-is.net/wiki/DuplicateEntries', 
    2627    author_name => 'Hirotaka Ogawa', 
     
    4041                        duplicate_entry => { 
    4142                            label      => $plugin->translate('Duplicate Entries'), 
    42                             code       => \&list_action_duplicate_entries, 
     43                            code       => \&_duplicate_entries, 
    4344                            permission => 'create_post', 
    4445                        }, 
     
    4748                        duplicate_page => { 
    4849                            label      => $plugin->translate('Duplicate Pages'), 
    49                             code       => \&list_action_duplicate_entries, 
     50                            code       => \&_duplicate_entries, 
    5051                            permission => 'create_post', 
     52                        }, 
     53                    }, 
     54                    template => { 
     55                        duplicate_template => { 
     56                            label      => $plugin->translate('Duplicate Templates'), 
     57                            code       => \&_duplicate_templates, 
     58                            permission => 'edit_templates', 
    5159                        }, 
    5260                    }, 
     
    5765} 
    5866 
    59 sub list_action_duplicate_entries { 
     67sub _duplicate_entries { 
    6068    my $app = shift; 
    6169    my $perms = $app->permissions; 
     
    97105        } 
    98106    } 
    99     $app->mode($type eq 'entry' ? 'list_entries' : 'list_pages'); 
    100     $app->list_entries({ type => $type }); 
     107 
     108    $app->call_return; 
     109} 
     110 
     111sub _duplicate_templates { 
     112    my $app = shift; 
     113    my $perms = $app->permissions; 
     114    return $app->trans_error('Permission Denied.') 
     115        unless $perms && $perms->can_edit_templates; 
     116 
     117    my $type = 'template'; 
     118    my $class = MT->model($type); 
     119 
     120    my @tmpl_ids = $app->param('id') 
     121        or return $app->trans_error('No template was selected to duplicate.'); 
     122    for my $tmpl_id (@tmpl_ids) { 
     123        my $tmpl = $class->load($tmpl_id) 
     124            or return $app->trans_error('Invalid template_id'); 
     125        my $tmpl_cloned = $tmpl->clone({ 
     126            except => { 
     127                id       => 1, 
     128            }, 
     129        }); 
     130 
     131        # generate a unique template name 
     132        my $blog_id = $tmpl->blog_id; 
     133        my $name = $tmpl->name; 
     134        my $name_cloned = $name . ' (1)'; 
     135        my $i = 1; 
     136        while ($class->count({ 
     137            name    => $name_cloned, 
     138            blog_id => $blog_id, 
     139        })) { 
     140            $name_cloned = $name . ' (' . $i++ . ')'; 
     141        } 
     142        $tmpl_cloned->name($name_cloned); 
     143 
     144        $tmpl_cloned->save 
     145            or return $app->trans_error('Error saving template: [_1]', $tmpl_cloned->errstr); 
     146    } 
     147 
     148    $app->call_return; 
    101149} 
    102150 
  • DuplicateEntries/trunk/DuplicateEntries/lib/DuplicateEntries/L10N/ja.pm

    r406 r407  
    77 
    88our %Lexicon = ( 
    9     'DuplicateEntries plugin allows you to duplicate Movable Type entries and pages.' => 'DuplicateEntriesプラグインを用いると、Movable Typeのブログ記事・ウェブページを複製することができます。', 
     9    'DuplicateEntries plugin allows you to duplicate Movable Type entries, pages, and templates.' => 'DuplicateEntriesプラグインを用いると、Movable Typeのブログ記事・ウェブページ・テンプレートを複製することができます。', 
    1010    'Duplicate Entries' => 'ブログ記事の複製', 
    1111    'Duplicate Pages' => 'ウェブページの複製', 
     12    'Duplicate Templates' => 'テンプレートの複製', 
    1213); 
    1314