Changeset 238

Show
Ignore:
Timestamp:
04/23/07 12:01:30 (3 years ago)
Author:
jallen
Message:

Made cloner/WidgetManager work in MT Enterprise with modal dialog reporting

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/WidgetManager-refactor/plugins/WidgetManager/lib/WidgetManager/Plugin.pm

    r237 r238  
    6262 
    6363sub clone_blog_widgemanagers { 
     64 
     65# Cloner plugin: 
     66    # $app->run_callbacks('ClonerPlugin::CloneBlog', $app, 
     67    #     OldBlogId => $blog_id, NewBlogId => $new_blog_id, 
     68    #     EntryMap => \%entry_map, 
     69    #     CategoryMap => \%cat_map, 
     70    #     TrackbackMap => \%tb_map, 
     71    #     TemplateMap => \%tmpl_map); 
     72 
     73# MTE: 
     74#     MT->run_callbacks(ref($blog). '::post_clone', 
     75#         OldObject => $blog, 
     76#         NewObject => $new_blog, 
     77#         EntryMap => \%entry_map, 
     78#         CategoryMap => \%cat_map, 
     79#         TrackbackMap => \%tb_map, 
     80#         TemplateMap => \%tmpl_map, 
     81#         Callback => $callback 
     82#     ); 
     83 
    6484    my $plugin  = shift; 
    65     my $eh      = shift; 
    66     my $app     = shift; 
     85    my $cb      = shift; 
     86    my $app     = ref($_[0]) ? shift : MT->instance; 
    6787    my (%params) = @_; 
    6888 
    69     my $report_meth = sub { }; 
    70     if (    $MT::Plugin::Cloner::VERSION 
    71         and $report_meth = MT::Plugin::Cloner->can('progress')) { 
    72         $report_meth->($app, $app->translate('Cloning WidgetManagers for weblog')); 
     89    my $report = sub {}; 
     90    my $label = 'widgetmgr'; 
     91 
     92    my %arg; 
     93    if ($cb->{method} eq 'ClonerPlugin::CloneBlog') { 
     94        %arg = ( 
     95            old_blog_id     => $params{OldBlogId}, 
     96            new_blog_id     => $params{NewBlogId}, 
     97            template_map    => $params{TemplateMap}, 
     98        ); 
     99        if ($MT::Plugin::Cloner::VERSION and MT::Plugin::Cloner->can('progress')) { 
     100            my $callback = MT::Plugin::Cloner->can('progress'); 
     101            $report = sub { $callback->($app, $app->translate(@_), $label) }; 
     102        } 
     103    } elsif ($cb->{method} eq 'MT::Blog::post_clone') { 
     104        %arg = ( 
     105            old_blog_id     => $params{OldObject}->id, 
     106            new_blog_id     => $params{NewObject}->id, 
     107            template_map    => $params{TemplateMap}, 
     108        ); 
     109        if (defined $params{Callback}) { 
     110            my $state; 
     111            my $callback = $params{Callback}; 
     112            $report = sub {  
     113                my $msg; 
     114                if ($state) { 
     115                    $msg = $state . ' ' . (+shift); 
     116                } else { 
     117                    $msg = $state = shift; 
     118                } 
     119                $callback->($msg, $label) }; 
     120        } 
     121    } else { 
     122        die $app->translate( 
     123            "Unknown blog cloning callback method '[_1]' encountered in WidgetManager.", $cb->{method}); 
    73124    } 
    74125 
    75     my $modulesets = $plugin->load_blog_modules($params{OldBlogId});     
     126    $report->($app->translate('Cloning WidgetManagers for weblog...')); 
     127 
     128    my $modulesets = $plugin->load_blog_modules($arg{old_blog_id});     
    76129    if ( ! $modulesets or ! keys %$modulesets ) { 
    77         # $report_meth->($app, $app->translate('0 records processed')); 
    78         return; 
     130        return $report->($app->translate('[_1] records processed.', 0)); 
    79131    } 
    80132 
     
    84136        my @w = (); 
    85137        for my $w ( split /\s*,\s*/o, $modulesets->{$key} ) { 
    86             push @w, $params{TemplateMap}->{$w} if $params{TemplateMap}->{$w}; 
     138            push @w, $arg{template_map}->{$w} if $arg{template_map}->{$w}; 
    87139        } 
    88140        $modulesets->{$key} = join(', ', @w); 
     
    91143 
    92144    my $vars = { modulesets => $modulesets, installed => 1 }; 
    93     my $pdata_obj = $plugin->get_config_obj('blog:'.$params{NewBlogId}); 
     145    my $pdata_obj = $plugin->get_config_obj('blog:'.$arg{new_blog_id}); 
    94146    my $configuration = $pdata_obj->data() || {}; 
    95147    $configuration->{$_} = $vars->{$_} for keys %$vars; 
     
    97149    $pdata_obj->save(); 
    98150 
    99     my $count = scalar keys %$modulesets; 
    100     $report_meth->($app, $app->translate('[_1] records processed.', $count)); 
    101  
     151    $report->($app->translate('[_1] records processed.', (scalar keys %$modulesets))); 
    102152} 
    103153