Show
Ignore:
Timestamp:
04/04/08 06:40:48 (20 months ago)
Author:
takayama
Message:

Resolved BugId:68759
* Implemented new copy template feature.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/release-33/lib/MT/CMS/Template.pm

    r1743 r1770  
    573573    $params->{refreshed} = $app->param('refreshed'); 
    574574    $params->{published} = $app->param('published'); 
     575    $params->{saved_copied} = $app->param('saved_copied'); 
    575576 
    576577    # determine list of system template types: 
     
    17731774} 
    17741775 
     1776sub clone_templates { 
     1777    my ($app) = @_; 
     1778 
     1779    my $user = $app->user; 
     1780    my $perms = $app->permissions; 
     1781    return $app->error( 
     1782        $app->translate( 
     1783            "Permission denied.") 
     1784      ) 
     1785      #TODO: system level-designer permission 
     1786      unless $user->is_superuser() || $user->can_edit_templates() 
     1787      || ( $perms 
     1788        && ( $perms->can_edit_templates() 
     1789          || $perms->can_administer_blog ) ); 
     1790 
     1791    my @id = $app->param('id'); 
     1792    require MT::Template; 
     1793    foreach my $tmpl_id (@id) { 
     1794        my $tmpl = MT::Template->load($tmpl_id); 
     1795        next unless $tmpl; 
     1796 
     1797        my $new_tmpl = $tmpl->clone({ 
     1798            Except => { 
     1799                id => 1, 
     1800                name => 1, 
     1801                identifier => 1, 
     1802            }, 
     1803        }); 
     1804 
     1805        my $new_basename = $app->translate("Copy of [_1]", $tmpl->name); 
     1806        my $new_name = $new_basename; 
     1807        my $i = 0; 
     1808        while (MT::Template->count({ name => $new_name, blog_id => $tmpl->blog_id })) { 
     1809            $new_name = $new_basename . ' (' . ++$i . ')'; 
     1810        } 
     1811 
     1812        $new_tmpl->name($new_name); 
     1813        $new_tmpl->save; 
     1814    } 
     1815 
     1816    $app->add_return_arg( 'saved_copied' => 1 ); 
     1817    $app->call_return; 
     1818} 
     1819 
    17751820sub publish_index_templates { 
    17761821    my $app = shift;