diff --git a/lib/WebGUI/Macro/SessionId.pm b/lib/WebGUI/Macro/SessionId.pm index e82f4ed2c..e1a373311 100644 --- a/lib/WebGUI/Macro/SessionId.pm +++ b/lib/WebGUI/Macro/SessionId.pm @@ -18,7 +18,11 @@ Package WebGUI::Macro::SessionId =head1 DESCRIPTION -Returns the current user's session Id. +A macro to return the ID of the user's current session. + +=head2 process( ) + +Really just a wrapper around $session->getId; =cut diff --git a/lib/WebGUI/Operation/Spectre.pm b/lib/WebGUI/Operation/Spectre.pm index 7c3a57e66..01c6d0288 100644 --- a/lib/WebGUI/Operation/Spectre.pm +++ b/lib/WebGUI/Operation/Spectre.pm @@ -42,6 +42,31 @@ sub canView { return $user->isInGroup( $session->setting->get("groupIdAdminSpectre") ); } +#---------------------------------------------------------------------------- + +=head2 getASpectre ( [$session] ) + +Get a connection to spectre. Encapsulated here so outside code can call +something that's carefully encapsulated. + +=head3 $session + +A WebGUI session variable so getASpectre can access information in +the config file. + +=cut + +sub getASpectre { + my $session = shift; + my $remote = create_ikc_client( + port=>$session->config->get("spectrePort"), + ip=>$session->config->get("spectreIp"), + name=>rand(100000), + timeout=>10 + ); + return $remote; +} + #------------------------------------------------------------------- =head2 www_spectreGetSiteData ( ) diff --git a/lib/WebGUI/Operation/VersionTag.pm b/lib/WebGUI/Operation/VersionTag.pm index 922e91ec4..e9f978af8 100644 --- a/lib/WebGUI/Operation/VersionTag.pm +++ b/lib/WebGUI/Operation/VersionTag.pm @@ -21,6 +21,7 @@ use WebGUI::International; use WebGUI::VersionTag; use WebGUI::HTMLForm; use WebGUI::Paginator; +use WebGUI::Operation::Spectre; =head1 NAME @@ -206,7 +207,18 @@ sub www_commitVersionTag { if ($tagId) { my $tag = WebGUI::VersionTag->new($session, $tagId); if (defined $tag && $session->user->isInGroup($tag->get("groupToUse"))) { + my $remote = WebGUI::Operation::Spectre::getASpectre($session); my $i18n = WebGUI::International->new($session, "VersionTag"); + if (!defined $remote) { + $session->errorHandler->warn('Unable to connect to spectre. Canceling the commit'); + my $output = sprintf qq{

%s

\n

%s

%s}, + $i18n->get('broken spectre title', 'WebGUI'), + $i18n->get('broken spectre body', 'WebGUI'), + $session->url->getBackToSiteURL(), + $i18n->get('493', 'WebGUI'); + return $session->style->userStyle($output); + } + $remote->disconnect; my $f = WebGUI::HTMLForm->new($session); $f->submit; $f->readOnly( @@ -228,7 +240,7 @@ sub www_commitVersionTag { hoverHelp=>$i18n->get("comments description commit") ); $f->submit; - my $ac = WebGUI::AdminConsole->new($session,"versions"); + my $ac = WebGUI::AdminConsole->new($session,"versions"); return $ac->render($f->print); } } diff --git a/lib/WebGUI/VersionTag.pm b/lib/WebGUI/VersionTag.pm index 8066b1a99..ca03eb506 100644 --- a/lib/WebGUI/VersionTag.pm +++ b/lib/WebGUI/VersionTag.pm @@ -413,6 +413,7 @@ sub requestCommit { return $errorMessage; } } + return ''; } diff --git a/lib/WebGUI/i18n/English/WebGUI.pm b/lib/WebGUI/i18n/English/WebGUI.pm index e617184a5..2d490dd41 100644 --- a/lib/WebGUI/i18n/English/WebGUI.pm +++ b/lib/WebGUI/i18n/English/WebGUI.pm @@ -3921,6 +3921,16 @@ LongTruncOk=1

lastUpdated => 1193196211, }, + 'broken spectre title' => { + message => q{Cannot connect to Spectre}, + lastUpdated => 1202274234, + }, + + 'broken spectre body' => { + message => q{Your commit is canceled because WebGUI cannot connect to Spectre. Please fix your Spectre problem and attempt to commit again.}, + lastUpdated => 1202274246, + }, + }; 1;