Changeset 2128

Show
Ignore:
Timestamp:
04/28/08 07:25:19 (7 months ago)
Author:
fumiakiy
Message:

Properly handle system level and blog level widgetsets and widgets. BugId:79534

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/release-36/lib/MT/CMS/Template.pm

    r2125 r2128  
    21902190    while (my $m = $iter->()) { 
    21912191        next unless $m; 
    2192         $all_widgets{ $m->id } = $m->name; 
     2192        $all_widgets{ $m->id }{name} = $m->name; 
     2193        $all_widgets{ $m->id }{blog_id} = $m->blog_id; 
    21932194    } 
    21942195 
     
    22222223            my @modules = split ',', $modulesets; 
    22232224            foreach my $mid ( @modules ) { 
    2224                 push @inst_modules, { id => $mid, name => $all_widgets{$mid} }; 
     2225                push @inst_modules, { 
     2226                    id => $mid, 
     2227                    name => $all_widgets{$mid}{name}, 
     2228                    blog_id => $all_widgets{$mid}{blog_id}, 
     2229                }; 
    22252230                delete $all_widgets{$mid}; 
    22262231            } 
     
    22282233    } 
    22292234    $param->{installed} = \@inst_modules if @inst_modules; 
    2230     my @avail_modules = map { { id => $_, name => $all_widgets{$_} } } 
    2231         keys %all_widgets; 
     2235    my @avail_modules = map { { 
     2236        id => $_, name => $all_widgets{$_}{name}, blog_id => $all_widgets{$_}{blog_id} 
     2237    } } keys %all_widgets; 
    22322238    $param->{available} = \@avail_modules; 
    22332239 
     
    22592265        ], 
    22602266    ); 
    2261      
    2262     my $param = { 
    2263         widget_table   => $widget_loop, 
    2264         object_type    => "widgetset", 
    2265         search_type    => "template", 
    2266         search_label   => MT::Template->class_label_plural, 
    2267         listing_screen => 1, 
    2268         screen_id      => "list-widget-set", 
    2269         $blog_id ? ( blog_view => 1, blog_id => $blog_id ) : (), 
    2270         exists($opt{rebuild}) ? ( rebuild => $opt{rebuild} ) : (), 
    2271         exists($opt{error}) ? ( error => $opt{error} ) : (), 
    2272         exists($opt{deleted}) ? ( saved => $opt{deleted} ) : () 
    2273     }; 
    22742267 
    22752268    my $iter = $app->model('template')->load_iter( 
    2276         { type => 'widgetset', blog_id => $blog_id ? [ $blog_id, 0 ] : 0 }, 
     2269        { type => 'widgetset', blog_id => $blog_id ? $blog_id : 0 }, 
    22772270        { sort => 'name', direction => 'ascend' } 
    22782271    ); 
     
    22952288        push @widgetmanagers, $ws; 
    22962289    } 
    2297     $param->{object_loop} = \@widgetmanagers if @widgetmanagers; 
     2290 
     2291    my @widget_loop; 
     2292    if ( $blog_id ) { 
     2293        # Remove system level widgets from the listing 
     2294        @widget_loop = grep { $_->{blog_id} == $blog_id } @$widget_loop; 
     2295    } 
     2296    else { 
     2297        @widget_loop = @$widget_loop; 
     2298    } 
     2299 
     2300    my $param = { 
     2301        @widgetmanagers ? ( object_loop  => \@widgetmanagers ) : (), 
     2302        @widget_loop    ? ( widget_table => \@widget_loop ) : (), 
     2303        object_type    => "widgetset", 
     2304        search_type    => "template", 
     2305        search_label   => MT::Template->class_label_plural, 
     2306        listing_screen => 1, 
     2307        screen_id      => "list-widget-set", 
     2308        $blog_id ? ( blog_view => 1, blog_id => $blog_id ) : (), 
     2309        exists($opt{rebuild}) ? ( rebuild => $opt{rebuild} ) : (), 
     2310        exists($opt{error}) ? ( error => $opt{error} ) : (), 
     2311        exists($opt{deleted}) ? ( saved => $opt{deleted} ) : () 
     2312    }; 
    22982313 
    22992314    $app->load_tmpl('list_widget.tmpl', $param);