| | 1776 | sub 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 | |