# Plugin for TWiki Enterprise Collaboration Platform, http://TWiki.org/
#
# Copyright (C) 2008 Arthur Clemens, arthur@visiblearea.com
# Copyright (C) 2002-2018 Peter Thoeny, peter[at]thoeny.org and TWiki
# Contributors.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 3
# of the License, or (at your option) any later version. For
# more details read LICENSE in the root of this distribution.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# As per the GPL, removal of this notice is prohibited.
#
# This is the EditTablePlugin used to edit tables in place.
package TWiki::Plugins::EditTablePlugin;
use strict;
our $VERSION = '$Rev: 30448 (2018-07-16) $';
our $RELEASE = '2018-07-05';
our $web;
our $topic;
our $user;
our $debug = 0;
our $usesJavascriptInterface = 0;
our $viewModeHeaderDone = 0;
our $editModeHeaderDone = 0;
our $prefsInitialized = 0;
our %editMode = ( 'NONE', 0, 'EDIT', 1 );
our %saveMode = ( 'NONE', 0, 'SAVE', 1, 'SAVEQUIET', 2 );
our $ASSET_URL = '%PUBURL%/%SYSTEMWEB%/EditTablePlugin';
sub initPlugin {
( $topic, $web, $user ) = @_;
# check for Plugins.pm versions
if ( $TWiki::Plugins::VERSION < 1.026 ) {
TWiki::Func::writeWarning(
"Version mismatch between EditTablePlugin and Plugins.pm");
return 0;
}
# disable plugin unless in cgi mode
return 0 unless( TWiki::Func::getCgiQuery() );
# Get plugin debug flag
$debug = TWiki::Func::getPreferencesFlag('EDITTABLEPLUGIN_DEBUG');
$usesJavascriptInterface =
TWiki::Func::getPreferencesFlag('EDITTABLEPLUGIN_JAVASCRIPTINTERFACE');
$viewModeHeaderDone = 0;
$editModeHeaderDone = 0;
$prefsInitialized = 0;
# Plugin correctly initialized
TWiki::Func::writeDebug(
"- TWiki::Plugins::EditTablePlugin::initPlugin( $web.$topic ) is OK")
if $debug;
return 1;
}
sub beforeCommonTagsHandler {
return unless $_[0] =~ /%EDIT(TABLE|CELL)\{(.*)}%/os;
require TWiki::Plugins::EditTablePlugin::Core;
TWiki::Plugins::EditTablePlugin::Core::protectVariables(
$_[0] );
}
sub commonTagsHandler {
return unless $_[0] =~ /%EDIT(TABLE|CELL)\{(.*)}%/os;
addViewModeHeadersToHead();
require TWiki::Plugins::EditTablePlugin::Core;
TWiki::Plugins::EditTablePlugin::Core::process( $_[0], $_[1], $_[2], $topic,
$web );
}
=pod
Style sheet for table in view mode
=cut
sub addViewModeHeadersToHead {
return if $viewModeHeaderDone;
$viewModeHeaderDone = 1;
my $header = <<'EOF';
EOF
TWiki::Func::addToHEAD( 'EDITTABLEPLUGIN', $header );
}
=pod
Style sheet and javascript for table in edit mode
=cut
sub addEditModeHeadersToHead {
my ( $tableNr, $paramJavascriptInterface, $theTopic ) = @_;
return if $editModeHeaderDone;
return
if !$usesJavascriptInterface && ( $paramJavascriptInterface ne 'on' );
require TWiki::Contrib::BehaviourContrib;
TWiki::Contrib::BehaviourContrib::addHEAD();
$editModeHeaderDone = 1;
my $formName = "${theTopic}edittable$tableNr";
my $header = "";
$header .=
'';
$header .= "\n"
. '';
$header .= <<'EOF';
EOF
TWiki::Func::addToHEAD( 'EDITTABLEPLUGIN', $header );
}
sub addJavaScriptInterfaceDisabledToHead {
my ($tableNr) = @_;
my $tableId = "edittable$tableNr";
my $header = "";
$header .=
'';
$header .= "\n";
TWiki::Func::addToHEAD( 'EDITTABLEPLUGIN_NO_JAVASCRIPTINTERFACE', $header );
}
sub addHeaderAndFooterCountToHead {
my ( $headerCount, $footerCount ) = @_;
my $header = "";
$header .= '';
$header .= "\n";
$header .= '';
$header .= "\n";
TWiki::Func::addToHEAD( 'EDITTABLEPLUGIN_HEADERFOOTERCOUNT', $header );
}
1;