diff --git a/EditRowPlugin/lib/Foswiki/Plugins/EditRowPlugin/Get.pm b/EditRowPlugin/lib/Foswiki/Plugins/EditRowPlugin/Get.pm index e568f5aaa1..7fcf75607d 100644 --- a/EditRowPlugin/lib/Foswiki/Plugins/EditRowPlugin/Get.pm +++ b/EditRowPlugin/lib/Foswiki/Plugins/EditRowPlugin/Get.pm @@ -17,7 +17,7 @@ use constant TRACE => 0; # * erp_row # * erp_col sub process { - my ( $session, $plugin, $verb, $response ) = @_; + my ( $app, $plugin, $verb, $response ) = @_; my $query = Foswiki::Func::getCgiQuery(); unless ($query) { diff --git a/EditRowPlugin/lib/Foswiki/Plugins/EditRowPlugin/JQuery.pm b/EditRowPlugin/lib/Foswiki/Plugins/EditRowPlugin/JQuery.pm index 2719c6bd94..9aa8c5e7b5 100644 --- a/EditRowPlugin/lib/Foswiki/Plugins/EditRowPlugin/JQuery.pm +++ b/EditRowPlugin/lib/Foswiki/Plugins/EditRowPlugin/JQuery.pm @@ -14,31 +14,21 @@ # http://www.gnu.org/copyleft/gpl.html package Foswiki::Plugins::EditRowPlugin::JQuery; -use strict; +use v5.14; -use Assert; +use Moo; +extends qw( Foswiki::Plugins::JQueryPlugin::Plugin ); -use Foswiki::Plugins::JQueryPlugin::Plugin (); -our @ISA = qw( Foswiki::Plugins::JQueryPlugin::Plugin ); - -sub new { - my $class = shift; - my $session = shift || $Foswiki::Plugins::SESSION; - - my $this = $class->SUPER::new( - $session, - name => 'EditRow', - version => '1.0', - author => 'Crawford Currie', - homepage => 'http://foswiki.org/Extensions/EditRowPlugin', - puburl => '%PUBURLPATH%/%SYSTEMWEB%/EditRowPlugin', - css => ["erp.css"], - documentation => "$Foswiki::cfg{SystemWebName}.EditRowPlugin", - javascript => [ "erp.js", "TableSort.js" ], - dependencies => [ 'UI', 'JEditable' ] - ); - - return $this; -} +our %pluginParams = ( + name => 'EditRow', + version => '1.0', + author => 'Crawford Currie', + homepage => 'http://foswiki.org/Extensions/EditRowPlugin', + puburl => '%PUBURLPATH%/%SYSTEMWEB%/EditRowPlugin', + css => ["erp.css"], + documentation => "$Foswiki::cfg{SystemWebName}.EditRowPlugin", + javascript => [ "erp.js", "TableSort.js" ], + dependencies => [ 'UI', 'JEditable' ] +); 1; diff --git a/EditRowPlugin/lib/Foswiki/Plugins/EditRowPlugin/Save.pm b/EditRowPlugin/lib/Foswiki/Plugins/EditRowPlugin/Save.pm index 10e3c14a37..00898fa134 100644 --- a/EditRowPlugin/lib/Foswiki/Plugins/EditRowPlugin/Save.pm +++ b/EditRowPlugin/lib/Foswiki/Plugins/EditRowPlugin/Save.pm @@ -24,7 +24,7 @@ use constant TRACE => 0; # match the latest rev of the topic, the save will be aborted. # * erp_stop_edit - if true, stop editing after save complete sub process { - my ( $session, $plugin, $verb, $response ) = @_; + my ( $app, $plugin, $verb, $response ) = @_; my $query = Foswiki::Func::getCgiQuery(); unless ($query) { @@ -230,7 +230,7 @@ sub process { require Foswiki::Validation; my $context = $query->url( -full => 1, -path => 1, -query => 1 ) . time(); - my $cgis = $session->getCGISession(); + my $cgis = $app->users->getCGISession(); my $nonce; if ( Foswiki::Validation->can('generateValidationKey') ) { $nonce = diff --git a/EditRowPlugin/lib/Foswiki/Plugins/EditRowPlugin/View.pm b/EditRowPlugin/lib/Foswiki/Plugins/EditRowPlugin/View.pm index d9a63d9b63..43f462f7e9 100644 --- a/EditRowPlugin/lib/Foswiki/Plugins/EditRowPlugin/View.pm +++ b/EditRowPlugin/lib/Foswiki/Plugins/EditRowPlugin/View.pm @@ -17,7 +17,7 @@ use Foswiki::Func(); # * erp_table # * erp_row sub process { - my ( $text, $web, $topic, $meta ) = @_; + my ( $app, $text, $web, $topic, $meta ) = @_; my $macro = $Foswiki::cfg{Plugins}{EditRowPlugin}{Macro} || 'EDITTABLE'; @@ -33,15 +33,20 @@ sub process { return 0 if Foswiki::Func::getPreferencesFlag('EDITROWPLUGIN_DISABLE') =~ /full/; - Foswiki::Plugins::JQueryPlugin::registerPlugin( 'EditRow', + my $pluginName = "EditRow"; + Foswiki::Plugins::JQueryPlugin::registerPlugin( $pluginName, 'Foswiki::Plugins::EditRowPlugin::JQuery' ); - unless ( - Foswiki::Plugins::JQueryPlugin::createPlugin( - "EditRow", $Foswiki::Plugins::SESSION - ) - ) + unless ( Foswiki::Plugins::JQueryPlugin::createPlugin( $pluginName, $app ) ) { - die 'Failed to register JQuery plugin'; + Foswiki::Exception::Fatal->throw( + text => "Failed to register JQuery plugin $pluginName: " + . ( + DEBUG + ? Foswiki::Plugins::JQueryPlugin::Plugins::getPluginError( + 'EditRow') + : '' + ) + ); } require Foswiki::Plugins::EditRowPlugin::TableParser; @@ -245,7 +250,7 @@ sub process { } if ($hasTables) { - $_[0] = join( "\n", @$content ) . ( $endsWithNewline ? "\n" : '' ); + $_[1] = join( "\n", @$content ) . ( $endsWithNewline ? "\n" : '' ); return 1; } return 0; diff --git a/EditRowPlugin/test/unit/EditRowPlugin/HTML.pm b/EditRowPlugin/test/unit/EditRowPlugin/HTML.pm index 5fd9ec57ee..0fe0af1980 100644 --- a/EditRowPlugin/test/unit/EditRowPlugin/HTML.pm +++ b/EditRowPlugin/test/unit/EditRowPlugin/HTML.pm @@ -15,19 +15,27 @@ around loadExtraConfig => sub { $Foswiki::cfg{Plugins}{EditTablePlugin}{Enabled} = 0; }; +around createNewFoswikiApp => sub { + my $orig = shift; + my $this = shift; + + my $app = $orig->( $this, @_ ); + + $app->plugins->enable; + + return $app; +}; + sub test_simple_view { my $this = shift; require Foswiki::Plugins::EditRowPlugin::View; $this->assert( !$@, $@ ); $this->clear_test_topicObject; - $this->clear_session; - my $query = Unit::Request->new( initializer => {} ); - $this->session( - Foswiki->new( - user => $this->test_user_login, - request => $query, - context => { view => 1 } - ) + $this->createNewFoswikiApp( + requestParams => { initializer => {}, }, + engineParams => + { initialAttributes => { user => $this->test_user_login, }, }, + context => { view => 1 } ); $this->test_topicObject( ( Foswiki::Func::readTopic( $this->test_web, $this->test_topic ) )[0] ); @@ -38,8 +46,9 @@ sub test_simple_view { INPUT $this->assert( Foswiki::Plugins::EditRowPlugin::View::process( - $in, $this->test_web, - $this->test_topic, $this->test_topicObject + $this->app, $in, + $this->test_web, $this->test_topic, + $this->test_topicObject ) ); $this->assert( $in =~ s/\s*(.*)\s*\s*(.*)\s*\s*(.*)\s*\s*(.*)\s*