diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 41f54146d..043324384 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -8,6 +8,7 @@ - fixed #11759: email template missing - fixed #11769: WebGUI::Asset::File::ZipArchive specifies a default template of '' - fixed #11758: formatting on account stuff is wrong + - fixed #11770: Starter needs to set all account plugins 7.9.10 - fixed #11721: spamStopWords not in WebGUI.conf.original diff --git a/lib/WebGUI/Wizard/HomePage.pm b/lib/WebGUI/Wizard/HomePage.pm index a6d41c158..57c65c233 100644 --- a/lib/WebGUI/Wizard/HomePage.pm +++ b/lib/WebGUI/Wizard/HomePage.pm @@ -89,6 +89,45 @@ sub canView { #---------------------------------------------------------------------------- +=head2 updateDefaultStyle ( styleTemplateId [, asset ]) + +Update the default style to the given style template. If an asset is given, +also update all descendants of that asset. + +=cut + +sub updateDefaultStyle { + my ( $self, $styleTemplateId, $home ) = @_; + my $session = $self->session; + + # WebGUI::Account modules cannot be introspected, so we hard-code the default set here + my @settingStyles = qw( userFunctionStyleId contribStyleTemplateId fmStyleTemplateId + friendsStyleTemplateId inboxStyleTemplateId profileStyleTemplateId + shopStyleTemplateId userAccountStyleTemplateId ); + for my $setting ( @settingStyles ) { + $session->setting->set( $setting, $styleTemplateId ); + } + + # update default content styles + if ( $home ) { + my $assetIter = $home->getLineageIterator( [ "self", "descendants" ] ); + while ( 1 ) { + my $asset; + eval { $asset = $assetIter->() }; + if ( my $x = WebGUI::Error->caught('WebGUI::Error::ObjectNotFound') ) { + $session->log->error($x->full_message); + next; + } + last unless $asset; + $asset->update( { styleTemplateId => $styleTemplateId } ); + } + } + + return; +} + +#---------------------------------------------------------------------------- + =head2 wrapStyle ( $output ) Wrap the output in the wizard style. @@ -255,18 +294,7 @@ sub www_chooseContentSave { } # update default site style - $session->setting->set( "userFunctionStyleId", $self->get('styleTemplateId') ); - my $assetIter = $home->getLineageIterator( [ "self", "descendants" ] ); - while ( 1 ) { - my $asset; - eval { $asset = $assetIter->() }; - if ( my $x = WebGUI::Error->caught('WebGUI::Error::ObjectNotFound') ) { - $session->log->error($x->full_message); - next; - } - last unless $asset; - $asset->update( { styleTemplateId => $self->get("styleTemplateId") } ); - } + $self->updateDefaultStyle( $self->get('styleTemplateId'), $home ); # add new pages if ( $form->get("aboutUs") ) { diff --git a/lib/WebGUI/Wizard/Setup.pm b/lib/WebGUI/Wizard/Setup.pm index 51fc1841a..366b5348d 100644 --- a/lib/WebGUI/Wizard/Setup.pm +++ b/lib/WebGUI/Wizard/Setup.pm @@ -360,22 +360,9 @@ sub www_defaultStyleSave { my ( $self, @args ) = @_; my $output = WebGUI::Wizard::HomePage::www_pickStyleSave( $self, @args ); my $session = $self->session; - # update default site style - $session->setting->set( "userFunctionStyleId", $self->get('styleTemplateId') ); - my $home = WebGUI::Asset->getDefault( $session ); - my $assetIter = $home->getLineageIterator( [ "self", "descendants" ] ); - while ( 1 ) { - my $asset; - eval { $asset = $assetIter->() }; - if ( my $x = WebGUI::Error->caught('WebGUI::Error::ObjectNotFound') ) { - $session->log->error($x->full_message); - next; - } - last unless $asset; - if ( defined $asset ) { - $asset->update( { styleTemplateId => $self->get("styleTemplateId") } ); - } - } + + my $home = WebGUI::Asset->getDefault( $session ); + WebGUI::Wizard::HomePage::updateDefaultStyle( $self, $self->get('styleTemplateId'), $home ); return $output; }