Skip to content

Commit

Permalink
Item1709: SignaturePlugin Port and Fixes
Browse files Browse the repository at this point in the history
First the twiki2foswiki script because it does many things automatically for me


git-svn-id: http://svn.foswiki.org/trunk/SignaturePlugin@4095 0b4bb1d4-4e5a-0410-9cc4-b2b747904278
  • Loading branch information
KennethLavrsen authored and KennethLavrsen committed Jun 11, 2009
1 parent b2f6c73 commit 4727600
Show file tree
Hide file tree
Showing 7 changed files with 39 additions and 39 deletions.
File renamed without changes.
Expand Up @@ -14,7 +14,7 @@
#
# For licensing info read LICENSE file in the TWiki root.

package TWiki::Plugins::SignaturePlugin;
package Foswiki::Plugins::SignaturePlugin;

# Always use strict to enforce variable scoping
use strict;
Expand All @@ -39,13 +39,13 @@ $pluginName = 'SignaturePlugin';
sub initPlugin {
my ( $topic, $web, $user, $installWeb ) = @_;

if ( $TWiki::Plugins::VERSION < 1.1 ) {
TWiki::Func::writeWarning(
if ( $Foswiki::Plugins::VERSION < 1.1 ) {
Foswiki::Func::writeWarning(
"This version of $pluginName works only with TWiki 4 and greater.");
return 0;
}

TWiki::Func::registerRESTHandler( 'sign', \&sign );
Foswiki::Func::registerRESTHandler( 'sign', \&sign );
return 1;

}
Expand All @@ -63,13 +63,13 @@ sub preRenderingHandler {
}

sub handleSignature {
require TWiki::Plugins::SignaturePlugin::Signature;
return TWiki::Plugins::SignaturePlugin::Signature::handleSignature(@_);
require Foswiki::Plugins::SignaturePlugin::Signature;
return Foswiki::Plugins::SignaturePlugin::Signature::handleSignature(@_);
}

sub sign {
require TWiki::Plugins::SignaturePlugin::Signature;
TWiki::Plugins::SignaturePlugin::Signature::sign(@_);
require Foswiki::Plugins::SignaturePlugin::Signature;
Foswiki::Plugins::SignaturePlugin::Signature::sign(@_);
}

1;
5 changes: 5 additions & 0 deletions lib/Foswiki/Plugins/SignaturePlugin/MANIFEST
@@ -0,0 +1,5 @@
data/System/SignaturePlugin.txt 0660
lib/Foswiki/Plugins/SignaturePlugin.pm 0440
lib/Foswiki/Plugins/SignaturePlugin/Signature.pm 0440
templates/oopsgeneric.pattern.tmpl_twiki40 0440
templates/oopsgeneric.tmpl_twiki40 0440
@@ -1,34 +1,34 @@
# Detail for SignaturePlugin
#

package TWiki::Plugins::SignaturePlugin::Signature;
package Foswiki::Plugins::SignaturePlugin::Signature;

# Always use strict to enforce variable scoping
use strict;
use TWiki::Attrs;
use Foswiki::Attrs;

sub handleSignature {
my ( $cnt, $attr ) = @_;
my $session = $TWiki::Plugins::SESSION;
my $session = $Foswiki::Plugins::SESSION;

$attr = new TWiki::Attrs($attr);
my $lbl = TWiki::Func::getPreferencesValue(
"\U$TWiki::Plugins::SignaturePlugin::pluginName\E_SIGNATURELABEL")
$attr = new Foswiki::Attrs($attr);
my $lbl = Foswiki::Func::getPreferencesValue(
"\U$Foswiki::Plugins::SignaturePlugin::pluginName\E_SIGNATURELABEL")
|| 'Sign';

my $name = '';
$name = '_(' . $attr->{name} . ')_ &nbsp;' if $attr->{name};

return
"<noautolink> $name </noautolink><form action=\""
. &TWiki::Func::getScriptUrl( 'SignaturePlugin', 'sign', 'rest' )
. &Foswiki::Func::getScriptUrl( 'SignaturePlugin', 'sign', 'rest' )
. "\" /><input type=\"hidden\" name=\"nr\" value=\"$cnt\" /><input type=\"submit\" value=\"$lbl\" /><input type=\"hidden\" name=\"topic\" value=\"$session->{webName}.$session->{topicName}\" /></form>";

}

sub sign {
my $session = shift;
$TWiki::Plugins::SESSION = $session;
$Foswiki::Plugins::SESSION = $session;
my $query = $session->{cgiQuery};
return unless ($query);

Expand All @@ -42,20 +42,20 @@ sub sign {
unless (
&doEnableEdit( $webName, $topic, $user, $query, 'editTableRow' ) );

my ( $meta, $text ) = &TWiki::Func::readTopic( $webName, $topic );
my ( $meta, $text ) = &Foswiki::Func::readTopic( $webName, $topic );
$text =~ s/%SIGNATURE(?:{(.*)})?%/&replaceSignature($cnt--, $user, $1)/geo;

my $error = &TWiki::Func::saveTopicText( $webName, $topic, $text, 1 );
TWiki::Func::setTopicEditLock( $webName, $topic, 0 ); # unlock Topic
my $error = &Foswiki::Func::saveTopicText( $webName, $topic, $text, 1 );
Foswiki::Func::setTopicEditLock( $webName, $topic, 0 ); # unlock Topic
if ($error) {
TWiki::Func::redirectCgiQuery( $query, $error );
Foswiki::Func::redirectCgiQuery( $query, $error );
return 0;
}
else {

# and finally display topic
TWiki::Func::redirectCgiQuery( $query,
&TWiki::Func::getViewUrl( $webName, $topic ) );
Foswiki::Func::redirectCgiQuery( $query,
&Foswiki::Func::getViewUrl( $webName, $topic ) );
}

}
Expand All @@ -65,15 +65,15 @@ sub replaceSignature {

return ( ($attr) ? "%SIGNATURE{$attr}%" : '%SIGNATURE%' ) if $dont;

$attr = new TWiki::Attrs($attr);
$attr = new Foswiki::Attrs($attr);

my $wuser = TWiki::Func::getWikiName($user);
my $wuser = Foswiki::Func::getWikiName($user);
my %list = map { s/.*\.//; $_ => 1 } split( /[, ]+/, $attr->{name} );
unless ( !$attr->{name} || $list{$wuser} ) {
my $session = $TWiki::Plugins::SESSION;
TWiki::Func::setTopicEditLock( $session->{webName},
my $session = $Foswiki::Plugins::SESSION;
Foswiki::Func::setTopicEditLock( $session->{webName},
$session->{topicName}, 0 ); # unlock Topic
throw TWiki::OopsException(
throw Foswiki::OopsException(
'generic',
web => $session->{webName},
topic => $session->{topicName},
Expand All @@ -88,8 +88,8 @@ sub replaceSignature {
}

my $fmt = $attr->{format}
|| TWiki::Func::getPreferencesValue(
"\U$TWiki::Plugins::SignaturePlugin::pluginName\E_SIGNATUREFORMAT")
|| Foswiki::Func::getPreferencesValue(
"\U$Foswiki::Plugins::SignaturePlugin::pluginName\E_SIGNATUREFORMAT")
|| '$wikiusername - $date';

my @months = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
Expand All @@ -111,14 +111,14 @@ sub doEnableEdit {
my ( $theWeb, $theTopic, $user, $query ) = @_;

if (
!&TWiki::Func::checkAccessPermission(
!&Foswiki::Func::checkAccessPermission(
"change", $user, "", $theTopic, $theWeb
)
)
{

# user does not have permission to change the topic
throw TWiki::OopsException(
throw Foswiki::OopsException(
'accessdenied',
def => 'topic_access',
web => $_[2],
Expand All @@ -131,14 +131,14 @@ sub doEnableEdit {

## SMELL: Update for TWiki 4.1 =checkTopicEditLock=
my ( $oopsUrl, $lockUser ) =
&TWiki::Func::checkTopicEditLock( $theWeb, $theTopic, 'edit' );
&Foswiki::Func::checkTopicEditLock( $theWeb, $theTopic, 'edit' );
if ( $lockUser && !( $lockUser eq $user->login ) ) {

# warn user that other person is editing this topic
&TWiki::Func::redirectCgiQuery( $query, $oopsUrl );
&Foswiki::Func::redirectCgiQuery( $query, $oopsUrl );
return 0;
}
TWiki::Func::setTopicEditLock( $theWeb, $theTopic, 1 );
Foswiki::Func::setTopicEditLock( $theWeb, $theTopic, 1 );

return 1;

Expand Down
File renamed without changes.
5 changes: 0 additions & 5 deletions lib/TWiki/Plugins/SignaturePlugin/MANIFEST

This file was deleted.

0 comments on commit 4727600

Please sign in to comment.