| 20 | | id => 'WidgetManager', |
| 21 | | name => 'Widget Manager', |
| 22 | | description => q(<MT_TRANS phrase="Maintain your blog's widget content using a handy drag and drop interface.">), |
| 23 | | version => $VERSION, |
| 24 | | author_name => 'Six Apart', |
| 25 | | key => 'widget-manager', |
| 26 | | l10n_class => 'WidgetManager::L10N', |
| | 24 | id => 'WidgetManager', |
| | 25 | name => 'Widget Manager Upgrade Assistant', |
| | 26 | description => q(<MT_TRANS phrase="Widget Manager version 1.1; This version of the plugin is to upgrade data from older version of Widget Manager that has been shipped with Movable Type to the Movable Type core schema. No other features are included. You can safely remove this plugin after installing/upgrading Movable Type.\">), |
| | 27 | version => $VERSION, |
| | 28 | schema_version => $VERSION, |
| | 29 | author_name => 'Six Apart, Ltd.', |
| | 30 | key => 'widget-manager', |
| | 31 | l10n_class => 'WidgetManager::L10N', |
| 41 | | }, |
| 42 | | callbacks => { |
| 43 | | 'clone_blog_widgets' => { |
| 44 | | callback => 'MT::Blog::post_clone', |
| 45 | | handler => '$WidgetManager::WidgetManager::Plugin::clone_blog_widgemanagers', |
| 46 | | }, |
| 47 | | 'remove_blog_widgets' => { |
| 48 | | callback => 'MT::Blog::post_remove', |
| 49 | | handler => '$WidgetManager::WidgetManager::Plugin::remove_blog_widgetmanager', |
| 50 | | }, |
| 51 | | 'DefaultTemplateFilter' => '$WidgetManager::MT::Plugin::WidgetManager::default_templates', |
| 52 | | 'MT::Blog::post_create_default_templates' => '$WidgetManager::WidgetManager::Plugin::create_default_widgetsets', |
| 53 | | 'restore' => '$WidgetManager::WidgetManager::Plugin::restore_widgetmanagers', |
| 54 | | }, |
| 55 | | applications => { |
| 56 | | cms => { |
| 57 | | methods => { |
| 58 | | list_widget => '$WidgetManager::WidgetManager::CMS::list', |
| 59 | | edit_widget => '$WidgetManager::WidgetManager::CMS::edit', |
| 60 | | delete_widget => '$WidgetManager::WidgetManager::CMS::delete', |
| 61 | | save_widget => '$WidgetManager::WidgetManager::CMS::save', |
| 62 | | }, |
| 63 | | menus => { |
| 64 | | 'design:widgets' => { |
| 65 | | label => 'Widgets', |
| 66 | | mode => 'list_widget', |
| 67 | | order => 200, |
| 68 | | permission => 'edit_templates', |
| 69 | | view => "blog", |
| 70 | | }, |
| 71 | | }, |
| 72 | | template_snippets => { |
| 73 | | 'widget_manager' => { |
| 74 | | label => 'Widget Set', |
| 75 | | content => '<$mt:WidgetSet name="$0"$>', |
| 76 | | trigger => 'widget', |
| 77 | | }, |
| 78 | | }, |
| 79 | | }, |
| | 45 | 'upgrade_widgetmanagers' => { |
| | 46 | version_limit => 1.1, |
| | 47 | code => \&upgrade_widgetmanagers, |
| | 48 | } |
| 84 | | sub load_selected_modules { |
| 85 | | require WidgetManager::Plugin; |
| 86 | | WidgetManager::Plugin::load_selected_modules(@_); |
| 87 | | } |
| | 54 | sub _disable_widgetmanager { |
| | 55 | my $switch = MT->config('PluginSwitch') || {}; |
| | 56 | $switch->{$plugin->{plugin_sig}} = 0; |
| | 57 | MT->config('PluginSwitch', $switch, 1); |
| | 58 | MT->config->save_config(); |
| | 59 | } |
| 98 | | sub templates { |
| 99 | | my $plugin = shift; |
| 100 | | my ($app) = @_; |
| 101 | | my $default_widget_templates; |
| 102 | | |
| 103 | | use File::Spec; |
| 104 | | my $widgets_dir = File::Spec->catfile($plugin->{full_path}, 'default_widgets'); |
| 105 | | my $cfg_file = File::Spec->catfile($widgets_dir, 'widgets.cfg'); |
| 106 | | |
| 107 | | local(*FH, $_, $/); |
| 108 | | $/ = "\n"; |
| 109 | | open FH, $cfg_file or |
| 110 | | return $app->error(MT->translate( |
| 111 | | "Error opening file '[_1]': [_2]", $cfg_file, "$!" )); |
| 112 | | my $cfg = join('',<FH>); |
| 113 | | eval "$cfg;"; |
| 114 | | close FH; |
| 115 | | |
| 116 | | my @tmpls; |
| 117 | | require MT::Template; |
| 118 | | foreach (@$default_widget_templates) { |
| 119 | | open(TMPL, File::Spec->catfile($widgets_dir, $_->{template})) or die "Error: $!\n"; |
| 120 | | while (my $line = <TMPL>) { |
| 121 | | $_->{text} .= $line; |
| | 71 | require MT::PluginData; |
| | 72 | my $iter = MT::PluginData->load_iter( |
| | 73 | { plugin => $plugin->key } |
| | 74 | ); |
| | 75 | while ( my $pd = $iter->() ) { |
| | 76 | next unless $plugin->key eq $pd->plugin; |
| | 77 | my ( $blog_id ) = $pd->key =~ /configuration:blog:(\d+)/; |
| | 78 | next unless $blog_id; |
| | 79 | my $config = $pd->data; |
| | 80 | next unless $config; |
| | 81 | my $modulesets = $config->{modulesets}; |
| | 82 | next unless $modulesets; |
| | 83 | foreach my $mod_key ( keys %$modulesets ) { |
| | 84 | $upg->progress(_translate_escape('Moving storage of Widget Manager [_1]...', $mod_key)); |
| | 85 | my $tmpl_ids = $modulesets->{$mod_key}; |
| | 86 | my $tmpl = MT::Template->new; |
| | 87 | $tmpl->blog_id($blog_id); |
| | 88 | $tmpl->name($mod_key); |
| | 89 | $tmpl->type('widgetset'); |
| | 90 | $tmpl->build_dynamic(0); |
| | 91 | $tmpl->rebuild_me(0); |
| | 92 | $tmpl->modulesets($tmpl_ids); |
| | 93 | $tmpl->save_widgetset |
| | 94 | or $upg->progress(_translate_escape('Failed.')), next; |
| | 95 | $upg->progress(_translate_escape('Done.')); |