package WebGUI::Wizard::Setup; use strict; use base 'WebGUI::Wizard'; =head1 NAME WebGUI::Wizard::Setup -- Initial site setup =head1 DESCRIPTION A WebGUI::Wizard to perform initial site setup tasks like defining the Admin account, entering basic information, and choosing a default style. =head1 METHODS =cut sub _get_steps { return [qw( adminAccount companyInformation siteStats defaultStyle )]; } #---------------------------------------------------------------------------- =head2 canView ( ) A user can view this wizard if the site is newly created or if they are the admin user =cut sub canView { my ( $self ) = @_; my $session = $self->session; # Only specialState="init" or admin user return $session->setting->get('specialState') eq 'init' || $session->user->getId eq '3'; } #---------------------------------------------------------------------------- =head2 wrapStyle ( $output ) Wrap the output in the wizard style. =cut sub wrapStyle { my ( $self, $output ) = @_; my $session = $self->session; my $form = $session->form; $session->http->setCacheControl("none"); my $i18n = WebGUI::International->new( $session, "WebGUI" ); my $page = ' ' . $i18n->get('WebGUI Initial Configuration') . ' ' . $session->style->generateAdditionalHeadTags . '
' . $output . '
'; $session->http->setMimeType("text/html"); return $page; } #---------------------------------------------------------------------------- =head2 www_adminAccount ( ) Display the form to configure the admin account =cut sub www_adminAccount { my ( $self ) = @_; my $session = $self->session; my $form = $session->form; $session->http->setCacheControl("none"); my $i18n = WebGUI::International->new( $session, "WebGUI" ); my $legend = $i18n->get('admin account'); my $u = WebGUI::User->new( $session, '3' ); my $f = $self->getForm; $f->text( -name => "username", -value => $u->username, -label => $i18n->get(50), -hoverHelp => $i18n->get('50 setup description'), ); $f->text( -name => "identifier", -value => "123qwe", -label => $i18n->get(51), -hoverHelp => $i18n->get('51 description'), -subtext => '
(' . $i18n->get("password clear text") . ')
' ); $f->email( -name => "email", -value => $u->profileField("email"), -label => $i18n->get(56), -hoverHelp => $i18n->get('56 description'), ); $f->timeZone( -name => "timeZone", -value => $u->profileField("timeZone"), -label => $i18n->get( 'timezone', 'DateTime' ), -hoverHelp => $i18n->get('timezone help'), ); $f->selectBox( -name => "language", -value => $u->profileField("language"), -label => $i18n->get('304'), -hoverHelp => $i18n->get('language help'), -options => $i18n->getLanguages(), ); $f->submit; return '

' . $legend . '

' . $f->print; } #---------------------------------------------------------------------------- =head2 www_adminAccountSave ( ) Process the form and update the Admin account =cut sub www_adminAccountSave { my ( $self ) = @_; my $session = $self->session; my $form = $session->form; my $timezone = $form->timeZone("timeZone"); my $language = $form->selectBox("language"); ##update Admin and Visitor users my $u = WebGUI::User->new( $session, "3" ); $u->username( $form->process( "username", "text", "Admin" ) ); $u->profileField( "email", $form->email("email") ); $u->profileField( "timeZone", $timezone ); $u->profileField( "language", $language ); $u->identifier( Digest::MD5::md5_base64( $form->process( "identifier", "password", "123qwe" ) ) ); # The user is now Admin $session->user({ userId => "3" }); $u = WebGUI::User->new( $session, "1" ); $u->profileField( "timeZone", $timezone ); $u->profileField( "language", $language ); ##update ProfileField defaults so new users the get the defaults, too my $properties; my $zoneField = WebGUI::ProfileField->new( $session, 'timeZone' ); $properties = $zoneField->get(); $properties->{dataDefault} = $timezone; $zoneField->set($properties); my $languageField = WebGUI::ProfileField->new( $session, 'language' ); $properties = $languageField->get(); $properties->{dataDefault} = $language; $languageField->set($properties); return; } #---------------------------------------------------------------------------- =head2 www_companyInformation ( ) Enter basic company information =cut sub www_companyInformation { my ( $self ) = @_; my $session = $self->session; my $form = $session->form; $session->http->setCacheControl("none"); my $i18n = WebGUI::International->new( $session, "WebGUI" ); my $output = '

' . $i18n->get('company information') . '

'; my $f = $self->getForm; $f->hidden( name => "step", value => "3" ); $f->text( name => "companyName", value => $session->setting->get("companyName"), label => $i18n->get(125), hoverHelp => $i18n->get('125 description'), ); $f->email( name => "companyEmail", value => $session->setting->get("companyEmail"), label => $i18n->get(126), hoverHelp => $i18n->get('126 description'), ); $f->url( name => "companyURL", value => $session->setting->get("companyURL"), label => $i18n->get(127), hoverHelp => $i18n->get('127 description'), ); $f->submit; $output .= $f->print; return $output; } #---------------------------------------------------------------------------- =head2 www_companyInformationSave ( ) Update the company information =cut sub www_companyInformationSave { my ( $self ) = @_; my $session = $self->session; my $form = $session->form; $session->setting->set( 'companyName', $form->text("companyName") ) if ( $form->get("companyName") ); $session->setting->set( 'companyURL', $form->url("companyURL") ) if ( $form->get("companyURL") ); $session->setting->set( 'companyEmail', $form->email("companyEmail") ) if ( $form->get("companyEmail") ); return; } #---------------------------------------------------------------------------- =head2 www_siteStats ( ) Opt-in to the global WebGUI statistics =cut sub www_siteStats { my ( $self ) = @_; my $session = $self->session; my $form = $session->form; $session->http->setCacheControl("none"); my $i18n = WebGUI::International->new( $session, "WebGUI" ); my $enableForm = $self->getForm; $enableForm->hidden( name => "enableStats", value => 1 ); $enableForm->submit( value => $i18n->get( 'enable', 'Activity_SendWebguiStats' ) ); my $disableForm = $self->getForm; $disableForm->hidden( name => "enableStats", value => 0 ); $disableForm->submit( value => $i18n->get( 'disable', 'Activity_SendWebguiStats' ) ); my $output = '

' . $i18n->get( 'topicName', 'Activity_SendWebguiStats' ) . '

'; $output .= '

' . $i18n->get( 'why to send', 'Activity_SendWebguiStats' ) . '

' . $i18n->get( 'would you participate', 'Activity_SendWebguiStats' ) . '

' . $enableForm->print . '
' . $disableForm->print . '
' . '
 
' ; return $output; } #---------------------------------------------------------------------------- =head2 www_siteStatsSave ( ) Opt-in to the global WebGUI statistics =cut sub www_siteStatsSave { my ( $self ) = @_; my $session = $self->session; my $form = $session->form; WebGUI::Operation::Statistics::www_enableSendWebguiStats($session) if ( $form->get("enableStats") ); return; } #---------------------------------------------------------------------------- =head2 www_defaultStyle ( ) Choose the default site style =cut sub www_defaultStyle { return WebGUI::Wizard::HomePage::www_pickStyle( @_ ); } #---------------------------------------------------------------------------- =head2 www_defaultStyleSave ( ) Save the default style to all existing pages and the user function style =cut sub www_defaultStyleSave { my ( $self, @args ) = @_; my $output = WebGUI::Wizard::HomePage::www_pickStyleSave( $self, @args ); my $session = $self->session; my $home = WebGUI::Asset->getDefault( $session ); WebGUI::Wizard::HomePage::updateDefaultStyle( $self, $self->get('styleTemplateId'), $home ); return $output; } #---------------------------------------------------------------------------- =head2 www_cleanup ( ) Give the user a choice to do the Home Page wizard =cut sub www_cleanup { my ( $self ) = @_; my $session = $self->session; my $form = $session->form; $session->http->setCacheControl("none"); my $i18n = WebGUI::International->new( $session, "WebGUI" ); $self->cleanup; # Delete specialState $session->setting->remove( "specialState" ); my $starterForm = WebGUI::HTMLForm->new( $session ); $starterForm->hidden( name => "op", value => "wizard" ); $starterForm->hidden( name => "wizard_class", value => "WebGUI::Wizard::HomePage" ); $starterForm->hidden( name => "wizard_step", value => "pickStyle" ); $starterForm->hidden( name => "initialSetup", value => 1 ); $starterForm->hidden( name => "styleTemplateId", value => $self->get('styleTemplateId') ); $starterForm->submit( value => $i18n->get( 'yes please' ) ); my $homeForm = WebGUI::HTMLForm->new( $session, { action => $session->url->gateway, method => "GET" } ); $homeForm->submit( value => $i18n->get('no thanks') ); my $output = '

' . $i18n->get('page builder title') . '

'; $output .= '

' . $i18n->get('page builder body') . '

' . '
' . $starterForm->print . '
' . '
' . $homeForm->print . '
' . '
 
' ; return $output; } 1;