From bb4d14d9442a9dc05e92c7661fecdd241ffe9bd4 Mon Sep 17 00:00:00 2001 From: Bart Jol Date: Fri, 2 Oct 2009 15:55:02 +0200 Subject: [PATCH 1/8] Language override file changes --- lib/WebGUI/Content/SetLanguage.pm | 83 +++++++++++++++++++++++++++++++ lib/WebGUI/International.pm | 2 +- lib/WebGUI/Session/Scratch.pm | 50 +++++++++++++++++++ t/Content/SetLanguage.t | 55 ++++++++++++++++++++ t/International.t | 31 +++++++++++- t/Session/Scratch.t | 12 ++++- 6 files changed, 230 insertions(+), 3 deletions(-) create mode 100644 lib/WebGUI/Content/SetLanguage.pm create mode 100644 t/Content/SetLanguage.t diff --git a/lib/WebGUI/Content/SetLanguage.pm b/lib/WebGUI/Content/SetLanguage.pm new file mode 100644 index 000000000..651ad10e0 --- /dev/null +++ b/lib/WebGUI/Content/SetLanguage.pm @@ -0,0 +1,83 @@ +package WebGUI::Content::SetLanguage; + +=head1 LEGAL + + ------------------------------------------------------------------- + WebGUI is Copyright 2001-2009 Plain Black Corporation. + ------------------------------------------------------------------- + Please read the legal notices (docs/legal.txt) and the license + (docs/license.txt) that came with this distribution before using + this software. + ------------------------------------------------------------------- + http://www.plainblack.com info@plainblack.com + ------------------------------------------------------------------- + +=cut + + +use strict; +use WebGUI::Session; +use WebGUI::International; + +=head1 NAME + +Package WebGUI::Content::SetLanguage + +=head1 DESCRIPTION + +Sets or delete an scratch variable that overrides the profile field language + +=head1 SYNOPSIS + +use WebGUI::Content::SetLanguage; +WebGUI::Content::SetLanguage::handler(); + +=head1 SUBROUTINES + +These subroutines are available from this package: + +handler + +=cut + +#------------------------------------------------------------- + +=head2 handler ( session, op, setLanguage ) + +sets or delete scratch variable in a session and returns undef + +=head3 session + +The current WebGUI::Session object. + +=head3 op + +op should be setLanguage to call the handler + +=head3 language + +language should be an installed language or delete + +=cut + + +sub handler { + my ($session) = @_; + return undef unless $session->form->get('op') eq 'setLanguage'; + my $language = $session->form->get('language'); + #check whether a language has been given in the url + if (!$language) { + $session->log->error('There is no language given to this method'); + return undef; + } + #make it possible to delete the language scratch variable from the session + if ($language eq 'delete' ) { + $session->scratch->removeLanguageOverride; + return undef; + } + #set a scratch variable language or throw error if language is not installed + else { + return $session->scratch->setLanguageOverride($language); + } +} +1; diff --git a/lib/WebGUI/International.pm b/lib/WebGUI/International.pm index 900fb9160..942517db0 100644 --- a/lib/WebGUI/International.pm +++ b/lib/WebGUI/International.pm @@ -284,7 +284,7 @@ Specify a default language. Defaults to user preference or "English". sub new { my ($class, $session, $namespace, $language) = @_; $namespace ||= 'WebGUI'; - $language ||= $session->user->profileField('language'); + $language ||= $session->scratch->getLanguageOverride() || $session->user->profileField('language'); my $self = bless { _session => $session, diff --git a/lib/WebGUI/Session/Scratch.pm b/lib/WebGUI/Session/Scratch.pm index fb6add7d3..d069fd694 100644 --- a/lib/WebGUI/Session/Scratch.pm +++ b/lib/WebGUI/Session/Scratch.pm @@ -15,6 +15,7 @@ package WebGUI::Session::Scratch; =cut use strict; +use WebGUI::International; =head1 NAME @@ -160,6 +161,19 @@ sub get { return $self->{_data}{$var}; } +#------------------------------------------------------------------- + +=head2 getLanguageOverride () + +Retrieves the language of the session scratch + +=cut + +sub getLanguageOverride { + my $self = shift; + my $languageOverride = $self->session->scratch->get('language'); + return $languageOverride; +} #------------------------------------------------------------------- @@ -180,7 +194,18 @@ sub new { bless {_session=>$session, _data=>$data}, $class; } +#------------------------------------------------------------------- +=head2 removeLanguageOverride() + +Removes the language scratch variable from the session + +=cut + +sub removeLanguageOverride { + my $self = shift; + $self->session->scratch->delete('language'); +} #------------------------------------------------------------------- =head2 session ( ) @@ -220,5 +245,30 @@ sub set { $self->session->db->write("insert into userSessionScratch (sessionId, name, value) values (?,?,?) on duplicate key update value=VALUES(value)", [$self->session->getId, $name, $value]); } +#---------------------------------------------------------------------- + +=head2 setLanguageOverride ( language ) + +Sets a scratch variable language in the session if the language is installed + +=head3 language + +The language that should be set into the session + +=cut + +sub setLanguageOverride { + my $self = shift; + my $language = shift; + my $i18n = WebGUI::International->new($self->session); + if($i18n->getLanguages()->{$language}) { + $self->session->scratch->set("language",$language); + return undef; + } + else { + $self->session->log->error("Language $language is not installed in this site"); + return undef; + } +} 1; diff --git a/t/Content/SetLanguage.t b/t/Content/SetLanguage.t new file mode 100644 index 000000000..20f6978fd --- /dev/null +++ b/t/Content/SetLanguage.t @@ -0,0 +1,55 @@ +#------------------------------------------------------------------- +# WebGUI is Copyright 2001-2009 Plain Black Corporation. +#------------------------------------------------------------------- +# Please read the legal notices (docs/legal.txt) and the license +# (docs/license.txt) that came with this distribution before using +# this software. +#------------------------------------------------------------------- +# http://www.plainblack.com info@plainblack.com +#------------------------------------------------------------------- + +use FindBin; +use strict; +use lib "$FindBin::Bin/../lib"; +use WebGUI::Test; +use WebGUI::Session; +use WebGUI::Content::SetLanguage; + +# load your modules here + +use Test::More tests => 5; # increment this value for each test you create + +my $session = WebGUI::Test->session; + +# put your tests here +my $formvariables = { + 'op' =>'setLanguage', + 'language' => 'English' +}; +#test 1 +$session->request->setup_body($formvariables); +WebGUI::Content::SetLanguage::handler($session); +is($session->scratch->getLanguageOverride, 'English', 'the language was not set'); +#test2 +$formvariables->{'language'} = 'delete'; +$session->request->setup_body($formvariables); +WebGUI::Content::SetLanguage::handler($session); +is($session->scratch->getLanguageOverride, undef, 'language delete should remove the scratch variable'); +#test3 +$formvariables->{'op'} = 'SetLanguage'; +$formvariables->{'language'} = 'English'; +$session->request->setup_body($formvariables); +WebGUI::Content::SetLanguage::handler($session); +is($session->scratch->getLanguageOverride, undef, 'Naming the method wrongly should not change anything'); +#test4 +$formvariables->{'op'} = 'setLanguage'; +$formvariables->{'language'} = 'MyImaginaryLanguageThatIsNotInstalled'; +$session->request->setup_body($formvariables); +WebGUI::Content::SetLanguage::handler($session); +is($session->scratch->getLanguageOverride, undef, 'Giving a non installed language should not change anything'); +#test5 +$formvariables->{'language'} = undef; +$session->request->setup_body($formvariables); +WebGUI::Content::SetLanguage::handler($session); +is($session->scratch->getLanguageOverride, undef, 'Passing an empty language variable should return undef'); + diff --git a/t/International.t b/t/International.t index 2ed665dda..b608efe59 100644 --- a/t/International.t +++ b/t/International.t @@ -16,12 +16,13 @@ use WebGUI::Session; use Test::More; # increment this value for each test you create use File::Copy; use File::Spec; +use WebGUI::Content::SetLanguage; my $session = WebGUI::Test->session; my $numTests = 1; ##For conditional load check my $langTests = 4; ##For language look-up tests -$numTests += 12 + $langTests; +$numTests += 20 + $langTests; plan tests => $numTests; @@ -50,6 +51,16 @@ is($i18n->get('topicName', 'WebGUI'), 'WebGUI', 'get: test manual namespace over installPigLatin(); +#tests for sub new +my $i18nNew1 = WebGUI::International->new($session); +is($i18nNew1->{_language}, 'English', 'Calling new without parameters should return object with language English'); +is($i18nNew1->{_namespace}, 'WebGUI', 'Calling without parameters should give namespace WebgUI'); +my $i18nNew2 = WebGUI::International->new($session, 'WebGUI::Asset'); +is($i18nNew2->{_language}, 'English', 'Calling new with only namespace parameter should return object with language English'); +is($i18nNew2->{_namespace}, 'WebGUI::Asset', 'Calling with only parameter namespace should give requested namespace'); +my $i18nNew3 = WebGUI::International->new($session, undef , 'PigLatin'); +is($i18nNew3->{_language}, 'PigLatin', 'Calling new with only language parameter should return object with language PigLatin'); +is($i18nNew3->{_namespace}, 'WebGUI', 'Calling with only parameter namespace should give WebGUI '); my $languages = $i18n->getLanguages(); my $gotPigLatin = exists $languages->{PigLatin}; @@ -102,6 +113,24 @@ sub installPigLatin { ); } +#test for sub new with language overridden by scratch +my $formvariables = { + 'op' =>'setLanguage', + 'language' => 'PigLatin' +}; +$session->request->setup_body($formvariables); +WebGUI::Content::SetLanguage::handler($session); +my $newi18n = WebGUI::International->new($session); + is( + $newi18n->get('webgui','WebGUI','PigLatin'), + 'ebGUIWay', + 'if the piglatin language is in the scratch that messages should be retrieved' +); + is( + $newi18n->get('104','Asset','PigLatin'), + $newi18n->get('104', 'WebGUI', 'English'), + 'Language check after SetLanguage contentHandler : key from missing file return English key' +); END { unlink File::Spec->catfile(WebGUI::Test->lib, qw/WebGUI i18n PigLatin WebGUI.pm/); unlink File::Spec->catfile(WebGUI::Test->lib, qw/WebGUI i18n PigLatin.pm/); diff --git a/t/Session/Scratch.t b/t/Session/Scratch.t index 1b56afcbd..948e5bdf8 100644 --- a/t/Session/Scratch.t +++ b/t/Session/Scratch.t @@ -15,7 +15,7 @@ use lib "$FindBin::Bin/../lib"; use WebGUI::Test; use WebGUI::Session; -use Test::More tests => 58; # increment this value for each test you create +use Test::More tests => 62; # increment this value for each test you create use Test::Deep; my $session = WebGUI::Test->session; @@ -117,6 +117,16 @@ is($sessionBank[0]->scratch->deleteNameByValue('',''), undef, 'deleteNameByValue is($sessionBank[3]->scratch->deleteNameByValue('falseValue','0'), 1, 'deleteNameByValue will delete values that are false (0)'); is($sessionBank[2]->scratch->deleteNameByValue('falseValue',''), 1, "deleteNameByValue will delete values that are false ('')"); +$scratch->setLanguageOverride('English'); +is($scratch->getLanguageOverride, 'English', 'session scratch language is not correctly set'); +$scratch->removeLanguageOverride; +is($scratch->getLanguageOverride, undef, 'The session scratch variable language is not removed'); +$scratch->setLanguageOverride('myimmaginarylanguagethatisnotinstalled'); +is($scratch->getLanguageOverride, undef, 'A non-existing language is set'); +$scratch->setLanguageOverride('English'); +$scratch->setLanguageOverride(); +is($scratch->getLanguageOverride, 'English', 'A empty string is falsely recognised as a language'); + END { $session->scratch->deleteAll; foreach my $wgSess ($newSession, @sessionBank) { From bbfcd3c9a2df7c992e1482ed583728115f3251c9 Mon Sep 17 00:00:00 2001 From: Bart Jol Date: Fri, 23 Oct 2009 15:42:22 +0200 Subject: [PATCH 2/8] added SetLanguage to WebGUI.conf.original --- etc/WebGUI.conf.original | 1 + 1 file changed, 1 insertion(+) diff --git a/etc/WebGUI.conf.original b/etc/WebGUI.conf.original index 392c75f9a..ce4471029 100644 --- a/etc/WebGUI.conf.original +++ b/etc/WebGUI.conf.original @@ -968,6 +968,7 @@ "WebGUI::Content::AssetManager", "WebGUI::Content::AssetDiscovery", "WebGUI::Content::PassiveAnalytics", + "WebGUI::Content::SetLanguage", "WebGUI::Content::AjaxI18N", "WebGUI::Content::Account", "WebGUI::Content::AssetHistory", From 951439a017b11d8c495067abc2661b0d0004bd75 Mon Sep 17 00:00:00 2001 From: Bart Jol Date: Fri, 23 Oct 2009 16:16:01 +0200 Subject: [PATCH 3/8] added picklanguage macro to international --- etc/WebGUI.conf.original | 1 + lib/WebGUI/Macro/PickLanguage.pm | 65 +++++++++++++++++++ t/Macro/PickLanguage.t | 104 +++++++++++++++++++++++++++++++ 3 files changed, 170 insertions(+) create mode 100644 lib/WebGUI/Macro/PickLanguage.pm create mode 100644 t/Macro/PickLanguage.t diff --git a/etc/WebGUI.conf.original b/etc/WebGUI.conf.original index ce4471029..b074415c1 100644 --- a/etc/WebGUI.conf.original +++ b/etc/WebGUI.conf.original @@ -811,6 +811,7 @@ "Page" : "Page", "PageTitle" : "PageTitle", "PageUrl" : "PageUrl", + "PickLanguage" : "PickLanguage", "RandomAssetProxy" : "RandomAssetProxy", "RandomThread" : "RandomThread", "RootTitle" : "RootTitle", diff --git a/lib/WebGUI/Macro/PickLanguage.pm b/lib/WebGUI/Macro/PickLanguage.pm new file mode 100644 index 000000000..60fc7c75d --- /dev/null +++ b/lib/WebGUI/Macro/PickLanguage.pm @@ -0,0 +1,65 @@ +package WebGUI::Macro::PickLanguage; # edit this line to match your own macro name + +#------------------------------------------------------------------- +# WebGUI is Copyright 2001-2009 Plain Black Corporation. +#------------------------------------------------------------------- +# Please read the legal notices (docs/legal.txt) and the license +# (docs/license.txt) that came with this distribution before using +# this software. +#------------------------------------------------------------------- +# http://www.plainblack.com info@plainblack.com +#------------------------------------------------------------------- + +use strict; + +=head1 NAME + +Package WebGUI::Macro::PickLanguage + +=head1 DESCRIPTION + +This macro makes a link for each installed language so when clicked the SetLanguage contetntHandler is called and sets the language in the scratch. The link text is the label from the language. + +=head2 process( $session ) + +The main macro class, Macro.pm, will call this subroutine and pass it + +=over 4 + +=item * + +A session variable + +=item templateId + +This macro takes a templateId to show the links + +=back + +=cut + + +#------------------------------------------------------------------- +sub process { + my $session = shift; + my $templateId = shift; + my $template = WebGUI::Asset::Template->new($session, $templateId); + return "Could not instanciate template with id [$templateId]" unless $template; + my $i18n = WebGUI::International->new($session); + my $languages = $i18n->getLanguages(); + my $vars = {'lang_loop' => []}; + foreach my $language ( keys %$languages ) { + my $langVars = {}; + $langVars->{ 'language_url' } = '?op=setLanguage;language=' . $language ; + $langVars->{ 'language_lang' } = $i18n->getLanguage($language , 'label'); + $langVars->{ 'language_langAbbr' } = $i18n->getLanguage($language, 'languageAbbreviation'); + $langVars->{ 'language_langAbbrLoc' } = $i18n->getLanguage($language, 'locale'); + $langVars->{ 'language_langEng' } = $language; + push(@{$vars->{lang_loop}}, $langVars); + } + return $template->process($vars); +} + +1; + +#vim:ft=perl diff --git a/t/Macro/PickLanguage.t b/t/Macro/PickLanguage.t new file mode 100644 index 000000000..16e70fafc --- /dev/null +++ b/t/Macro/PickLanguage.t @@ -0,0 +1,104 @@ +#------------------------------------------------------------------- +# WebGUI is Copyright 2001-2009 Plain Black Corporation. +#------------------------------------------------------------------- +# Please read the legal notices (docs/legal.txt) and the license +# (docs/license.txt) that came with this distribution before using +# this software. +#------------------------------------------------------------------- +# http://www.plainblack.com info@plainblack.com +#------------------------------------------------------------------- +use FindBin; +use strict; +use lib "$FindBin::Bin/../lib"; + +use WebGUI::Test; +use WebGUI::Session; +use WebGUI::Asset::Template; + +use Test::More; # increment this value for each test you create +use Test::Deep; +use Test::MockObject; +use Test::MockObject::Extends; + +my $session = WebGUI::Test->session; + +my $numTests = 3; + +$numTests += 1; #For the use_ok + +plan tests => $numTests; + +my $macro = 'WebGUI::Macro::PickLanguage'; +my $loaded = use_ok($macro); + +my $macroMock = Test::MockObject->new({}); +$macroMock->set_isa('WebGUI::Macro::PickLanguage'); +$macroMock->set_true('process'); + +#test for normal use + +my $templateId = 'PICKLANGUAGE_TEMPLATE_'; + +my $templateMock = Test::MockObject->new({}); +$templateMock->set_isa('WebGUI::Asset::Template'); +$templateMock->set_always('getId', $templateId); +my $templateVars; +$templateMock->mock('process', sub { $templateVars = $_[1]; } ); + + +{ + WebGUI::Test->mockAssetId($templateId, $templateMock); + WebGUI::Macro::PickLanguage::process($session,$templateMock->getId); + + cmp_deeply( + $templateVars, + { + lang_loop => [ + { 'language_url' => '?op=setLanguage;language=English', + 'language_lang' => 'English', + 'language_langAbbr' => 'en', + 'language_langAbbrLoc' => 'US', + 'language_langEng' => 'English' + }, + ], + }, + 'some template variables are created' + ); + WebGUI::Test->unmockAssetId($templateId); +} + +#test when template Id is left empty + +$templateId = ''; +my $templateNoId = $templateMock->mock('process',''); +$templateMock->set_always('getId', $templateId); +$templateMock->mock('process', sub { $templateVars = $_[1]; } ); +my $error; + + +{ + WebGUI::Test->mockAssetId($templateNoId, $templateMock); + $error = WebGUI::Macro::PickLanguage::process($session,$templateMock->getId); + + is($error,'Could not instanciate template with id []',"Empty template Id should return error"); + + WebGUI::Test->unmockAssetId($templateNoId); +} + +#test for an incorrect template Id + +$templateId = '1234567890123456789012'; +my $templateWrongId = $templateMock->mock('process',''); +$templateMock->set_always('getId', $templateId); +$templateMock->mock('process', sub { $templateVars = $_[1]; } ); +my $error; + + +{ + WebGUI::Test->mockAssetId($templateWrongId, $templateMock); + $error = WebGUI::Macro::PickLanguage::process($session,$templateMock->getId); + + is($error,'Could not instanciate template with id [1234567890123456789012]',"Template from the wrong namespace should not be initiated"); + WebGUI::Test->unmockAssetId($templateWrongId); +} + From f03a030f355ebcae3e6d51941907bf9f12c9a3a1 Mon Sep 17 00:00:00 2001 From: Bart Jol Date: Tue, 27 Oct 2009 11:53:26 +0100 Subject: [PATCH 4/8] added i18n and help --- lib/WebGUI/Help/Macro_PickLanguage.pm | 36 ++++++++++++++++ lib/WebGUI/i18n/English/Macro_PickLanguage.pm | 43 +++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 lib/WebGUI/Help/Macro_PickLanguage.pm create mode 100644 lib/WebGUI/i18n/English/Macro_PickLanguage.pm diff --git a/lib/WebGUI/Help/Macro_PickLanguage.pm b/lib/WebGUI/Help/Macro_PickLanguage.pm new file mode 100644 index 000000000..5ca6b601f --- /dev/null +++ b/lib/WebGUI/Help/Macro_PickLanguage.pm @@ -0,0 +1,36 @@ +package WebGUI::Help::Macro_PickLanguage; + +use strict; + + +our $HELP = { + 'template variables' => { + title => 'PickLanguage macro', + body => '', + 'variables' => [ + { + name => "lang_loop", + variables => [ + { + name => "language_lang", + }, + { + name => "language_langAbbr", + }, + { + name => "language_langAbbrLoc", + }, + { + name => "language_langEng", + }, + ], + }, + ], + related => [ + ], + }, + +}; + +1; ##All perl modules must return true +#vim:ft=perl diff --git a/lib/WebGUI/i18n/English/Macro_PickLanguage.pm b/lib/WebGUI/i18n/English/Macro_PickLanguage.pm new file mode 100644 index 000000000..867148bc2 --- /dev/null +++ b/lib/WebGUI/i18n/English/Macro_PickLanguage.pm @@ -0,0 +1,43 @@ +package WebGUI::i18n::English::Macro_PickLanguage; ##Be sure to change the package name to match the filename + +use strict; ##Required for all good Perl::Critic compliant code + +our $I18N = { ##hashref of hashes + 'lang_loop' => { ##key that will be used to reference this entry. Do not translate this. + message => q|A loop that contains all installed languages|, + lastUpdated => 1131394070, #seconds from the epoch + context => q|A template loop| + }, + + 'language_lang' => { + message => q|The name of the language in that language.|, + lastUpdated => 1131394072, + context => q|A template variable to show the name of the language| + }, + + 'language_langAbbr' => { + message => q|An standard code for the language, for instance "en".|, + lastUpdated => 1131394072, + context => q|A label of the language to use in the template| + }, + 'language_langAbbrLoc' => { + message => q|An standard abbreviated label for the language, for instance "US".|, + lastUpdated => 1131394072, + context => q|A label of the language to use in the template| + }, + 'language_langEng' => { + message => q|The English name of the language.|, + lastUpdated => 1131394072, + context => q|A label of the language to use in the template| + }, + 'language_url' => { + message => q|The url that sets the WebGUI language to the selected language.|, + lastUpdated => 1131394072, + context => q|The url to change languages| + }, + + +}; + +1; +#vim:ft=perl From af2b09e8715876f4829ac446115a02d4db021c63 Mon Sep 17 00:00:00 2001 From: Bart Jol Date: Tue, 27 Oct 2009 12:25:11 +0100 Subject: [PATCH 5/8] added default template --- .../root_import_macro_picklanguage.wgpkg | Bin 0 -> 838 bytes lib/WebGUI/Macro/PickLanguage.pm | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 docs/upgrades/packages-7.8.1/root_import_macro_picklanguage.wgpkg diff --git a/docs/upgrades/packages-7.8.1/root_import_macro_picklanguage.wgpkg b/docs/upgrades/packages-7.8.1/root_import_macro_picklanguage.wgpkg new file mode 100644 index 0000000000000000000000000000000000000000..79df80488a7b037c3162772cac8488ae3dd39702 GIT binary patch literal 838 zcmV-M1G)SkiwFP!00000|Ls=WZrU&y&UK$6%Jl{bBxE3lRA@Vpph7EMyNwB%#DLcj zTeibtQ{R2I6Nn3Rld962;fo06_kZwra3~nZU$$-go@W@g?f9N!7-c_Q=62bJnhWREa9*h6Nt3r6RV!zLX2`vuiBmx|c0Ouf>&0)-$W!B8^ zKi;W0!Pyov^ug<=~1_(1su!fGO*P;6aoV13hVpmocQb z4APE@>BBxrS51d>80UQfV~}TQBXH?dK2zuY_`W&$aMJ-ZKqZ{ zmrT`agG}K0cB#i64$%aq(y*M8SE;z-sZGWak1|yrDz6&KvYAo!qmv+5}J`ctyZ72-Rxs zL9e@y7h-~JVWZU9PmF}v1)P8+`YW-jXSM2AtDaxdCZceGm_XrTwjj;r$H`8j2iDv+Jm8k6O##y$`>-ZmYeTHSbmnzSMPjvu5HzyJ#pLHuUOup%AjV zwhu{J-S#`=d2U($!OJ@e%?ZHUIzs literal 0 HcmV?d00001 diff --git a/lib/WebGUI/Macro/PickLanguage.pm b/lib/WebGUI/Macro/PickLanguage.pm index 60fc7c75d..306f4f183 100644 --- a/lib/WebGUI/Macro/PickLanguage.pm +++ b/lib/WebGUI/Macro/PickLanguage.pm @@ -42,7 +42,7 @@ This macro takes a templateId to show the links #------------------------------------------------------------------- sub process { my $session = shift; - my $templateId = shift; + my $templateId = shift || "_aE16Rr1-bXBf8SIaLZjCg"; my $template = WebGUI::Asset::Template->new($session, $templateId); return "Could not instanciate template with id [$templateId]" unless $template; my $i18n = WebGUI::International->new($session); From f1cabe7a25ed2ae14eac698350a7941e5754fde9 Mon Sep 17 00:00:00 2001 From: Bart Jol Date: Tue, 27 Oct 2009 13:07:27 +0100 Subject: [PATCH 6/8] changed template --- .../root_import_macro_picklanguage.wgpkg | Bin 838 -> 837 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/upgrades/packages-7.8.1/root_import_macro_picklanguage.wgpkg b/docs/upgrades/packages-7.8.1/root_import_macro_picklanguage.wgpkg index 79df80488a7b037c3162772cac8488ae3dd39702..30ba71727f5f20a05e5f9a29567bc904950e6667 100644 GIT binary patch literal 837 zcmV-L1G@YliwFP!00000|Ls=WZrU&y=DJT2<$8l85K<6BqNf!JI<(St2PR|^11^c} z*-j~)`tGxxK*FJ$RF&QgUqmSOfADwsL$R>`Wm%Tzx`l#e*`8|`3S}=@#%fsw+jczL zty-RE6%5<5<#|Jf?0>~v047_T!_g#0FRv#rDVMsWS})J@#*w;PTR+SC=@joc!LQnd z%v-Hgp5?#nRO}7@9i9!en;!55fNj<(am2f@H41VJB6cn|n9nNBveR+7vyWH%hL zw%*G(yB4mC4%h%^bphv4q+vsFZdX4u`~B$a$@uuX4LaZNPAA#fn1wn+1Oo(06#26d z;7P3DT-_e=OB4hU>w|XweUA}A#DXT+z!wA)U3yt4;))kAO5<~k@)@F6 zM99iM5Qrp<=irdmi~Ij5tRRcE=1oAQ5AX9{(bBv|k4fj1S|#g>0w&e233vvfdi}EB z?QG+Pc!wwtCAMC35#ncX4C3&w#Oj*0npdm2o|C&RgZGF_6wa3BU-7U8rZVtS1$iu| zWZuRXghdG$xviMP#P!P=uqit%wZbXz6PUWdXQb4VGCUlN01yBGUKW^y literal 838 zcmV-M1G)SkiwFP!00000|Ls=WZrU&y&UK$6%Jl{bBxE3lRA@Vpph7EMyNwB%#DLcj zTeibtQ{R2I6Nn3Rld962;fo06_kZwra3~nZU$$-go@W@g?f9N!7-c_Q=62bJnhWREa9*h6Nt3r6RV!zLX2`vuiBmx|c0Ouf>&0)-$W!B8^ zKi;W0!Pyov^ug<=~1_(1su!fGO*P;6aoV13hVpmocQb z4APE@>BBxrS51d>80UQfV~}TQBXH?dK2zuY_`W&$aMJ-ZKqZ{ zmrT`agG}K0cB#i64$%aq(y*M8SE;z-sZGWak1|yrDz6&KvYAo!qmv+5}J`ctyZ72-Rxs zL9e@y7h-~JVWZU9PmF}v1)P8+`YW-jXSM2AtDaxdCZceGm_XrTwjj;r$H`8j2iDv+Jm8k6O##y$`>-ZmYeTHSbmnzSMPjvu5HzyJ#pLHuUOup%AjV zwhu{J-S#`=d2U($!OJ@e%?ZHUIzs From 151deaf1430cc160c4f0c3d2deee1ecae749d9e1 Mon Sep 17 00:00:00 2001 From: Bart Jol Date: Tue, 27 Oct 2009 13:16:10 +0100 Subject: [PATCH 7/8] updated test for default ID --- t/Macro/PickLanguage.t | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/t/Macro/PickLanguage.t b/t/Macro/PickLanguage.t index 16e70fafc..ad93afb6a 100644 --- a/t/Macro/PickLanguage.t +++ b/t/Macro/PickLanguage.t @@ -73,18 +73,39 @@ $templateId = ''; my $templateNoId = $templateMock->mock('process',''); $templateMock->set_always('getId', $templateId); $templateMock->mock('process', sub { $templateVars = $_[1]; } ); -my $error; - { - WebGUI::Test->mockAssetId($templateNoId, $templateMock); - $error = WebGUI::Macro::PickLanguage::process($session,$templateMock->getId); - is($error,'Could not instanciate template with id []',"Empty template Id should return error"); - - WebGUI::Test->unmockAssetId($templateNoId); + WebGUI::Test->mockAssetId($templateId, $templateMock); + WebGUI::Macro::PickLanguage::process($session,$templateMock->getId); + + cmp_deeply( + $templateVars, + { + lang_loop => [ + { 'language_url' => '?op=setLanguage;language=English', + 'language_lang' => 'English', + 'language_langAbbr' => 'en', + 'language_langAbbrLoc' => 'US', + 'language_langEng' => 'English' + }, + ], + }, + 'some template variables are created, when no templateId is passed on with the macro' + ); + WebGUI::Test->unmockAssetId($templateId); } + +#{ +# WebGUI::Test->mockAssetId($templateNoId, $templateMock); +# $error = WebGUI::Macro::PickLanguage::process($session,$templateMock->getId); +# +# is($error,'Could not instanciate template with id []',"Empty template Id should return error"); +# +# WebGUI::Test->unmockAssetId($templateNoId); +#} + #test for an incorrect template Id $templateId = '1234567890123456789012'; From ba52c38ea34dfab0817c92fda385e36b1a2c9ae1 Mon Sep 17 00:00:00 2001 From: Bart Jol Date: Tue, 27 Oct 2009 16:17:34 +0100 Subject: [PATCH 8/8] configured title so al link appears in help index --- lib/WebGUI/Help/Macro_PickLanguage.pm | 3 ++- lib/WebGUI/i18n/English/Macro_PickLanguage.pm | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/WebGUI/Help/Macro_PickLanguage.pm b/lib/WebGUI/Help/Macro_PickLanguage.pm index 5ca6b601f..f5bb02f61 100644 --- a/lib/WebGUI/Help/Macro_PickLanguage.pm +++ b/lib/WebGUI/Help/Macro_PickLanguage.pm @@ -5,8 +5,9 @@ use strict; our $HELP = { 'template variables' => { - title => 'PickLanguage macro', + title => 'picklanguage title', body => '', + fields =>[], 'variables' => [ { name => "lang_loop", diff --git a/lib/WebGUI/i18n/English/Macro_PickLanguage.pm b/lib/WebGUI/i18n/English/Macro_PickLanguage.pm index 867148bc2..a4f1cc78c 100644 --- a/lib/WebGUI/i18n/English/Macro_PickLanguage.pm +++ b/lib/WebGUI/i18n/English/Macro_PickLanguage.pm @@ -3,6 +3,11 @@ package WebGUI::i18n::English::Macro_PickLanguage; ##Be sure to change the pack use strict; ##Required for all good Perl::Critic compliant code our $I18N = { ##hashref of hashes + 'picklanguage title' => { + message => q|PickLanguage macro template variables|, + lastUpdated => 1131394070, + context => q|Title of the help object| + }, 'lang_loop' => { ##key that will be used to reference this entry. Do not translate this. message => q|A loop that contains all installed languages|, lastUpdated => 1131394070, #seconds from the epoch