diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index efa9b9268..409950078 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -26,6 +26,7 @@ - Hide encryption settings for edit branch when SSL disabled - fix: Edit Branch doesn't follow auto commit settings - fix: Importing a package doesn't follow auto commit settings + - add: DataForm template variable for the group to view entries 7.4.5 - fix: Apostrophy incorrectly escaped as double quote in some places diff --git a/lib/WebGUI/Asset.pm b/lib/WebGUI/Asset.pm index cdf77ab11..b681b65b8 100644 --- a/lib/WebGUI/Asset.pm +++ b/lib/WebGUI/Asset.pm @@ -1898,7 +1898,7 @@ sub processPropertiesFromFormPost { Returns the content generated from this template. It adds the Asset control bar to the template variables, as well as all Asset properties and metadata. -=head3 hashRef +=head3 vars A hash reference containing variables and loops to pass to the template engine. @@ -1917,6 +1917,13 @@ sub processTemplate { my $var = shift; my $templateId = shift; my $template = shift; + + # Sanity checks + if (ref $var ne "HASH") { + $self->session->errorHandler->error("First argument to processTemplate() should be a hash reference."); + return "Error: Can't process template for asset ".$self->getId." of type ".$self->get("className"); + } + $template = WebGUI::Asset->new($self->session, $templateId,"WebGUI::Asset::Template") unless (defined $template); if (defined $template) { my $meta = {}; diff --git a/lib/WebGUI/Asset/Wobject/DataForm.pm b/lib/WebGUI/Asset/Wobject/DataForm.pm index 939c41cbf..16e1f8d36 100644 --- a/lib/WebGUI/Asset/Wobject/DataForm.pm +++ b/lib/WebGUI/Asset/Wobject/DataForm.pm @@ -350,20 +350,9 @@ sub getListTemplateVars { my $self = shift; my $var = shift; my $i18n = WebGUI::International->new($self->session,"Asset_DataForm"); - my @fieldLoop; $var->{"back.url"} = $self->getFormUrl; $var->{"back.label"} = $i18n->get('go to form'); - $var->{"deleteAllEntries.url"} = $self->getUrl("func=deleteAllEntriesConfirm"); - $var->{"javascript.confirmation.deleteAll"} = sprintf("return confirm('%s');",$i18n->get('confirm delete all')); - $var->{"deleteAllEntries.label"} = $i18n->get(91); - $var->{"hasEntries"} = $self->hasEntries; - $var->{canEdit} = ($self->canEdit); - $var->{"export.tab.url"} = $self->getUrl('func=exportTab'); - $var->{"export.tab.label"} = $i18n->get(84); - $var->{"addField.url"} = $self->getUrl('func=editField'); - $var->{"addField.label"} = $i18n->get(76); - $var->{"addTab.label"}= $i18n->get(105);; - $var->{"addTab.url"}= $self->getUrl('func=editTab'); + my @fieldLoop; my $fields = $self->session->db->read("select DataForm_fieldId,name,label,isMailField,type from DataForm_field where assetId=".$self->session->db->quote($self->getId)." order by sequenceNumber"); while (my $field = $fields->hashRef) { @@ -450,27 +439,9 @@ sub getRecordTemplateVars { my $self = shift; my $var = shift; my $i18n = WebGUI::International->new($self->session,"Asset_DataForm"); - $var->{error_loop} = [] unless (exists $var->{error_loop}); - $var->{canEdit} = ($self->canEdit); - $var->{"entryList.url"} = $self->getListUrl; - $var->{"entryList.label"} = $i18n->get(86); - $var->{"export.tab.url"} = $self->getUrl('func=exportTab'); - $var->{"export.tab.label"} = $i18n->get(84); - $var->{"delete.url"} = $self->getUrl('func=deleteEntry;entryId='.$var->{entryId}); - $var->{"delete.label"} = $i18n->get(90); $var->{"back.url"} = $self->getUrl; $var->{"back.label"} = $i18n->get(18); - $var->{"addField.url"} = $self->getUrl('func=editField'); - $var->{"addField.label"} = $i18n->get(76); - $var->{"deleteAllEntries.url"} = $self->getUrl("func=deleteAllEntriesConfirm"); - $var->{"deleteAllEntries.label"} = $i18n->get(91); - $var->{"javascript.confirmation.deleteAll"} = sprintf("return confirm('%s');",$i18n->get('confirm delete all')); - $var->{"javascript.confirmation.deleteOne"} = sprintf("return confirm('%s');",$i18n->get('confirm delete one')); - $var->{"hasEntries"} = $self->hasEntries; - # add Tab label, url, header and init - $var->{"addTab.label"}= $i18n->get(105);; - $var->{"addTab.url"}= $self->getUrl('func=editTab'); - $var->{"tab.init"}= $self->_createTabInit($self->getId); + $var->{error_loop} = [] unless (exists $var->{error_loop}); $var->{"form.start"} = WebGUI::Form::formHeader($self->session,{action=>$self->getUrl}) .WebGUI::Form::hidden($self->session,{name=>"func",value=>"process"}); my @tabs; @@ -593,6 +564,42 @@ sub getRecordTemplateVars { return $var; } +#---------------------------------------------------------------------------- + +=head2 getTemplateVars ( ) + +Gets the default template vars for the asset. Includes the asset properties +as well as shared template vars. + +=cut + +sub getTemplateVars { + my $self = shift; + my $var = $self->get; + my $i18n = WebGUI::International->new($self->session,"Asset_DataForm"); + + $var->{canEdit} = ($self->canEdit); + $var->{canViewEntries} = ($self->session->user->isInGroup($self->get("groupToViewEntries"))); + $var->{"hasEntries"} = $self->hasEntries; + $var->{"entryList.url"} = $self->getListUrl; + $var->{"entryList.label"} = $i18n->get(86); + $var->{"export.tab.url"} = $self->getUrl('func=exportTab'); + $var->{"export.tab.label"} = $i18n->get(84); + $var->{"delete.url"} = $self->getUrl('func=deleteEntry;entryId='.$var->{entryId}); + $var->{"delete.label"} = $i18n->get(90); + $var->{"addField.url"} = $self->getUrl('func=editField'); + $var->{"addField.label"} = $i18n->get(76); + $var->{"deleteAllEntries.url"} = $self->getUrl("func=deleteAllEntriesConfirm"); + $var->{"deleteAllEntries.label"} = $i18n->get(91); + $var->{"javascript.confirmation.deleteAll"} = sprintf("return confirm('%s');",$i18n->get('confirm delete all')); + $var->{"javascript.confirmation.deleteOne"} = sprintf("return confirm('%s');",$i18n->get('confirm delete one')); + $var->{"addTab.label"}= $i18n->get(105);; + $var->{"addTab.url"}= $self->getUrl('func=editTab'); + $var->{"tab.init"}= $self->_createTabInit($self->getId); + + return $var; +} + #------------------------------------------------------------------- =head2 hasEntries ( ) @@ -795,17 +802,18 @@ sub view { #------------------------------------------------------------------- sub viewList { - my $self = shift; + my $self = shift; + my $var = $self->getTemplateVars; return $self->session->privilege->insufficient() unless ($self->session->user->isInGroup($self->get("groupToViewEntries"))); - return $self->processTemplate($self->getListTemplateVars,$self->get("listTemplateId")); + return $self->processTemplate($self->getListTemplateVars($var),$self->get("listTemplateId")); } #------------------------------------------------------------------- sub viewForm { - my $self = shift; - my $passedVars = shift; - my $var; + my $self = shift; + my $passedVars = shift; + my $var = $self->getTemplateVars; $self->session->style->setLink($self->session->url->extras('tabs/tabs.css'), {"type"=>"text/css"}); $self->session->style->setScript($self->session->url->extras('tabs/tabs.js'), {"type"=>"text/javascript"}); $var->{entryId} = $self->session->form->process("entryId") if ($self->canEdit); @@ -1190,6 +1198,7 @@ sub www_process { submissionDate=>$self->session->datetime->time() },0); my ($var, %row, @errors, $updating, $hadErrors); + $var = $self->getTemplateVars; $var->{entryId} = $entryId; my $i18n = WebGUI::International->new($self->session,"Asset_DataForm"); tie %row, "Tie::CPHash"; diff --git a/lib/WebGUI/Help/Asset_DataForm.pm b/lib/WebGUI/Help/Asset_DataForm.pm index a4ac48dfa..3448c3558 100644 --- a/lib/WebGUI/Help/Asset_DataForm.pm +++ b/lib/WebGUI/Help/Asset_DataForm.pm @@ -15,6 +15,7 @@ our $HELP = { ], variables => [ { 'name' => 'canEdit' }, + { 'name' => 'canViewEntries' }, { 'name' => 'entryId' }, { 'required' => 1, 'name' => 'form.start' @@ -137,6 +138,7 @@ our $HELP = { { 'name' => 'deleteAllEntries.label', }, { 'name' => 'javascript.confirmation.deleteAll', }, { 'name' => 'canEdit', }, + { 'name' => 'canViewEntries' }, { 'name' => 'hasEntries', }, { 'name' => 'export.tab.url', }, { 'name' => 'export.tab.label', }, diff --git a/lib/WebGUI/i18n/English/Asset_DataForm.pm b/lib/WebGUI/i18n/English/Asset_DataForm.pm index 503fa786e..6840a0730 100644 --- a/lib/WebGUI/i18n/English/Asset_DataForm.pm +++ b/lib/WebGUI/i18n/English/Asset_DataForm.pm @@ -933,6 +933,11 @@ below to see which template variables may be used inside this loop.|, lastUpdated => 1164910794, }, + 'canViewEntries' => { + message => 'This template variable is true when the current user is allowed to view the list of submitted DataForm entries.', + lastUpdated => 0, + }, + 'data form asset template variables title' => { message => q|DataForm Asset Template Variables|, lastUpdated => 1164910794,