initial commit
This commit is contained in:
parent
d754931286
commit
7b260de791
14 changed files with 1046 additions and 0 deletions
163
lib/WebGUI/Account.pm
Normal file
163
lib/WebGUI/Account.pm
Normal file
|
|
@ -0,0 +1,163 @@
|
||||||
|
package WebGUI::Account;
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
use Class::InsideOut qw{ :std };
|
||||||
|
use WebGUI::Exception;
|
||||||
|
use WebGUI::International;
|
||||||
|
use WebGUI::Pluggable;
|
||||||
|
use WebGUI::Utility;
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
Package WebGUI::Account::Profile
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
This is the class which is used to display a users's profile information
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
use WebGUI::Account::Profile;
|
||||||
|
|
||||||
|
=head1 METHODS
|
||||||
|
|
||||||
|
These subroutines are available from this package:
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
readonly session => my %session;
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 editSettingsForm ( )
|
||||||
|
|
||||||
|
Override this method to create settings for your Account Pluggin
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub editUserSettingsForm {
|
||||||
|
my $self = shift;
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 editSettingsFormSave ( )
|
||||||
|
|
||||||
|
Override this method to create settings for your Account Pluggin
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub editUserSettingsFormSave {
|
||||||
|
my $self = shift;
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 getLayoutTemplateId ( )
|
||||||
|
|
||||||
|
Override this method to return the template Id for the account layout.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub getLayoutTemplateId {
|
||||||
|
my $self = shift;
|
||||||
|
return "FJbUTvZ2nUTn65LpW6gjsA";
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 getStyleTemplate ( )
|
||||||
|
|
||||||
|
Override this method to return the template for the main style.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub getStyleTemplateId {
|
||||||
|
my $self = shift;
|
||||||
|
return $self->session->setting->get("userFunctionStyleId");
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 new ( $session )
|
||||||
|
|
||||||
|
Constructor.
|
||||||
|
|
||||||
|
=head3 $session
|
||||||
|
|
||||||
|
A WebGUI::Session object.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub new {
|
||||||
|
my $class = shift;
|
||||||
|
my $session = shift;
|
||||||
|
|
||||||
|
unless (ref $session eq 'WebGUI::Session') {
|
||||||
|
WebGUI::Error::InvalidObject->throw(
|
||||||
|
expected =>"WebGUI::Session",
|
||||||
|
got =>(ref $session),
|
||||||
|
error => q{Must provide a session variable}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
my $self = register $class;
|
||||||
|
my $id = id $self;
|
||||||
|
$session { $id } = $session;
|
||||||
|
return $self;
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 processTemplate ( vars, templateId, template )
|
||||||
|
|
||||||
|
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 vars
|
||||||
|
|
||||||
|
A hash reference containing variables and loops to pass to the template engine.
|
||||||
|
|
||||||
|
=head3 templateId
|
||||||
|
|
||||||
|
An id referring to a particular template in the templates table.
|
||||||
|
|
||||||
|
=head3 template
|
||||||
|
|
||||||
|
Instead of passing in a templateId, you may pass in a template object.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub processTemplate {
|
||||||
|
my $self = shift;
|
||||||
|
my $session = $self->session;
|
||||||
|
|
||||||
|
my $var = shift;
|
||||||
|
my $templateId = shift;
|
||||||
|
my $template = shift;
|
||||||
|
my $className = ref $self;
|
||||||
|
|
||||||
|
# Sanity checks
|
||||||
|
if (ref $var ne "HASH") {
|
||||||
|
$session->log->error("First argument to processTemplate() should be a hash reference.");
|
||||||
|
my $i18n = WebGUI::International->new($self->session, 'Account');
|
||||||
|
return sprintf($i18n->get('Error: Cannot instantiate template'),$templateId,$className);
|
||||||
|
}
|
||||||
|
|
||||||
|
$template = WebGUI::Asset->new($session, $templateId,"WebGUI::Asset::Template") unless (defined $template);
|
||||||
|
|
||||||
|
unless (defined $template) {
|
||||||
|
$session->log->error("Can't instantiate template $templateId for class ".$className);
|
||||||
|
my $i18n = WebGUI::International->new($self->session, 'Account');
|
||||||
|
return sprintf($i18n->get('Error: Cannot instantiate template'),$templateId,$className);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $template->process($var);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
1;
|
||||||
153
lib/WebGUI/Account/Friends.pm
Normal file
153
lib/WebGUI/Account/Friends.pm
Normal file
|
|
@ -0,0 +1,153 @@
|
||||||
|
package WebGUI::Account::Friends;
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
use WebGUI::Exception;
|
||||||
|
use WebGUI::International;
|
||||||
|
use WebGUI::Pluggable;
|
||||||
|
use WebGUI::Utility;
|
||||||
|
use base qw/WebGUI::Account/;
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
Package WebGUI::Account::Friends
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
This is the class which is used to display a users's friends
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
use WebGUI::Account::Friends;
|
||||||
|
|
||||||
|
=head1 METHODS
|
||||||
|
|
||||||
|
These subroutines are available from this package:
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 editSettingsForm ( )
|
||||||
|
|
||||||
|
Creates form elements for user settings page custom to this account module
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub editUserSettingsForm {
|
||||||
|
my $self = shift;
|
||||||
|
my $session = $self->session;
|
||||||
|
my $setting = $session->setting;
|
||||||
|
my $i18n = WebGUI::International->new($session,'Account_Friends');
|
||||||
|
my $f = WebGUI::HTMLForm->new($session);
|
||||||
|
|
||||||
|
# $f->template(
|
||||||
|
# name => "profileStyleTemplateId",
|
||||||
|
# value => $self->getStyleTemplateId,
|
||||||
|
# namespace => "style",
|
||||||
|
# label => $i18n->get("profile style template label"),
|
||||||
|
# hoverHelp => $i18n->get("profile style template hoverHelp")
|
||||||
|
# );
|
||||||
|
|
||||||
|
return $f->printRowsOnly;
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 editSettingsFormSave ( )
|
||||||
|
|
||||||
|
Creates form elements for user settings page custom to this account module
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub editUserSettingsFormSave {
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 getDisplayTemplateId ( )
|
||||||
|
|
||||||
|
This method returns the template ID for the account layout.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub getDisplayTemplateId {
|
||||||
|
my $self = shift;
|
||||||
|
return $self->session->setting->get("friendsDisplayTempalteId") || "defaultAssetId";
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 getLayoutTemplateId ( )
|
||||||
|
|
||||||
|
This method returns the template ID for the account layout.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub getLayoutTemplateId {
|
||||||
|
my $self = shift;
|
||||||
|
return $self->session->setting->get("friendsLayoutTempalteId") || $self->SUPER::getLayoutTemplateId;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 getStyleTemplateId ( )
|
||||||
|
|
||||||
|
This method returns the template ID for the main style.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub getStyleTemplateId {
|
||||||
|
my $self = shift;
|
||||||
|
return $self->session->setting->get("friendsStyleTemplateId") || $self->SUPER::getStyleTemplateId;
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 getViewTemplateId ( )
|
||||||
|
|
||||||
|
This method returns the template ID for the main view.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub getViewTemplateId {
|
||||||
|
my $self = shift;
|
||||||
|
return $self->session->setting->get("friendsViewTemplateId") || "defaultAssetId";
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 www_display ( )
|
||||||
|
|
||||||
|
The main view page for displaying the user's profile.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub www_display {
|
||||||
|
my $self = shift;
|
||||||
|
my $session = $self->session;
|
||||||
|
my $var = {};
|
||||||
|
|
||||||
|
return $self->processTemplate($var,$self->getDisplayTemplateId);
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 www_view ( )
|
||||||
|
|
||||||
|
The main view page for editing the user's profile.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub www_view {
|
||||||
|
my $self = shift;
|
||||||
|
my $session = $self->session;
|
||||||
|
my $var = {};
|
||||||
|
|
||||||
|
return $self->processTemplate($var,$self->getViewTemplateId);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
1;
|
||||||
124
lib/WebGUI/Account/Inbox.pm
Normal file
124
lib/WebGUI/Account/Inbox.pm
Normal file
|
|
@ -0,0 +1,124 @@
|
||||||
|
package WebGUI::Account::Inbox;
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
use WebGUI::Exception;
|
||||||
|
use WebGUI::International;
|
||||||
|
use WebGUI::Pluggable;
|
||||||
|
use WebGUI::Utility;
|
||||||
|
use base qw/WebGUI::Account/;
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
Package WebGUI::Account::Inbox
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
This is the class which is used to display a users's inbox
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
use WebGUI::Account::Inbox;
|
||||||
|
|
||||||
|
=head1 METHODS
|
||||||
|
|
||||||
|
These subroutines are available from this package:
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 editSettingsForm ( )
|
||||||
|
|
||||||
|
Creates form elements for user settings page custom to this account module
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub editUserSettingsForm {
|
||||||
|
my $self = shift;
|
||||||
|
my $session = $self->session;
|
||||||
|
my $setting = $session->setting;
|
||||||
|
my $i18n = WebGUI::International->new($session,'Account_Inbox');
|
||||||
|
my $f = WebGUI::HTMLForm->new($session);
|
||||||
|
|
||||||
|
# $f->template(
|
||||||
|
# name => "profileStyleTemplateId",
|
||||||
|
# value => $self->getStyleTemplateId,
|
||||||
|
# namespace => "style",
|
||||||
|
# label => $i18n->get("profile style template label"),
|
||||||
|
# hoverHelp => $i18n->get("profile style template hoverHelp")
|
||||||
|
# );
|
||||||
|
|
||||||
|
return $f->printRowsOnly;
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 editSettingsFormSave ( )
|
||||||
|
|
||||||
|
Creates form elements for user settings page custom to this account module
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub editUserSettingsFormSave {
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 getLayoutTemplateId ( )
|
||||||
|
|
||||||
|
This method returns the template ID for the account layout.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub getLayoutTemplateId {
|
||||||
|
my $self = shift;
|
||||||
|
return $self->session->setting->get("inboxLayoutTempalteId") || $self->SUPER::getLayoutTemplateId;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 getStyleTemplateId ( )
|
||||||
|
|
||||||
|
This method returns the template ID for the main style.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub getStyleTemplateId {
|
||||||
|
my $self = shift;
|
||||||
|
return $self->session->setting->get("inboxStyleTemplateId") || $self->SUPER::getStyleTemplateId;
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 getViewTemplateId ( )
|
||||||
|
|
||||||
|
This method returns the template ID for the main view.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub getViewTemplateId {
|
||||||
|
my $self = shift;
|
||||||
|
return $self->session->setting->get("inboxViewTemplateId") || "defaultAssetId";
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 www_view ( )
|
||||||
|
|
||||||
|
The main view page for editing the user's profile.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub www_view {
|
||||||
|
my $self = shift;
|
||||||
|
my $session = $self->session;
|
||||||
|
my $var = {};
|
||||||
|
|
||||||
|
return $self->processTemplate($var,$self->getViewTemplateId);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
1;
|
||||||
146
lib/WebGUI/Account/Profile.pm
Normal file
146
lib/WebGUI/Account/Profile.pm
Normal file
|
|
@ -0,0 +1,146 @@
|
||||||
|
package WebGUI::Account::Profile;
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
use WebGUI::Exception;
|
||||||
|
use WebGUI::International;
|
||||||
|
use WebGUI::Pluggable;
|
||||||
|
use WebGUI::Utility;
|
||||||
|
use base qw/WebGUI::Account/;
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
Package WebGUI::Account::Profile
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
This is the class which is used to display a users's profile information
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
use WebGUI::Account::Profile;
|
||||||
|
|
||||||
|
=head1 METHODS
|
||||||
|
|
||||||
|
These subroutines are available from this package:
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 editSettingsForm ( )
|
||||||
|
|
||||||
|
Creates form elements for user settings page custom to this account module
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub editUserSettingsForm {
|
||||||
|
my $self = shift;
|
||||||
|
my $session = $self->session;
|
||||||
|
my $setting = $session->setting;
|
||||||
|
my $i18n = WebGUI::International->new($session,'Account_Profile');
|
||||||
|
my $f = WebGUI::HTMLForm->new($session);
|
||||||
|
|
||||||
|
$f->template(
|
||||||
|
name => "profileStyleTemplateId",
|
||||||
|
value => $self->getStyleTemplateId,
|
||||||
|
namespace => "style",
|
||||||
|
label => $i18n->get("profile style template label"),
|
||||||
|
hoverHelp => $i18n->get("profile style template hoverHelp")
|
||||||
|
);
|
||||||
|
$f->template(
|
||||||
|
name => "profileLayoutTempalteId",
|
||||||
|
value => $self->getLayoutTemplateId,
|
||||||
|
namespace => "Account/Layout",
|
||||||
|
label => $i18n->get("profile layout template label"),
|
||||||
|
hoverHelp => $i18n->get("profile layout template hoverHelp")
|
||||||
|
);
|
||||||
|
$f->template(
|
||||||
|
name => "profileViewTemplateId",
|
||||||
|
value => $self->getViewTemplateId,
|
||||||
|
namespace => "Account/Profile/View",
|
||||||
|
label => $i18n->get("profile view template label"),
|
||||||
|
hoverHelp => $i18n->get("profile view template hoverHelp")
|
||||||
|
);
|
||||||
|
$f->template(
|
||||||
|
name => "profileEditTemplateId",
|
||||||
|
value => $setting->get("profileEditTemplateId"),
|
||||||
|
namespace => "Account/Profile/Edit",
|
||||||
|
label => $i18n->get("profile edit template label"),
|
||||||
|
hoverHelp => $i18n->get("profile edit template hoverHelp")
|
||||||
|
);
|
||||||
|
|
||||||
|
return $f->printRowsOnly;
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 getDisplayTemplateId ( )
|
||||||
|
|
||||||
|
This method returns the template ID for the account layout.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub getDisplayTemplateId {
|
||||||
|
my $self = shift;
|
||||||
|
return $self->session->setting->get("profileDisplayTempalteId") || "defaultAssetId";
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 getLayoutTemplateId ( )
|
||||||
|
|
||||||
|
This method returns the template ID for the account layout.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub getLayoutTemplateId {
|
||||||
|
my $self = shift;
|
||||||
|
return $self->session->setting->get("profileLayoutTempalteId") || $self->SUPER::getLayoutTemplateId;
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 getStyleTemplateId ( )
|
||||||
|
|
||||||
|
This method returns the template ID for the main style.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub getStyleTemplateId {
|
||||||
|
my $self = shift;
|
||||||
|
return $self->session->setting->get("profileStyleTemplateId") || $self->SUPER::getStyleTemplateId;
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 getViewTemplateId ( )
|
||||||
|
|
||||||
|
This method returns the template ID for the main view.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub getViewTemplateId {
|
||||||
|
my $self = shift;
|
||||||
|
return $self->session->setting->get("profileViewTemplateId") || "75CmQgpcCSkdsL-oawdn3Q";
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 www_view ( )
|
||||||
|
|
||||||
|
The main view page for the user's profile.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub www_view {
|
||||||
|
my $self = shift;
|
||||||
|
my $session = $self->session;
|
||||||
|
my $var = {};
|
||||||
|
|
||||||
|
return $self->processTemplate($var,$session->setting->get("profileViewTemplateId"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
1;
|
||||||
124
lib/WebGUI/Account/User.pm
Normal file
124
lib/WebGUI/Account/User.pm
Normal file
|
|
@ -0,0 +1,124 @@
|
||||||
|
package WebGUI::Account::User;
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
use WebGUI::Exception;
|
||||||
|
use WebGUI::International;
|
||||||
|
use WebGUI::Pluggable;
|
||||||
|
use WebGUI::Utility;
|
||||||
|
use base qw/WebGUI::Account/;
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
Package WebGUI::Account::User
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
This is the class which is used to display a users's account details
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
use WebGUI::Account::User;
|
||||||
|
|
||||||
|
=head1 METHODS
|
||||||
|
|
||||||
|
These subroutines are available from this package:
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 editSettingsForm ( )
|
||||||
|
|
||||||
|
Creates form elements for user settings page custom to this account module
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub editUserSettingsForm {
|
||||||
|
my $self = shift;
|
||||||
|
my $session = $self->session;
|
||||||
|
my $setting = $session->setting;
|
||||||
|
my $i18n = WebGUI::International->new($session,'Account_User');
|
||||||
|
my $f = WebGUI::HTMLForm->new($session);
|
||||||
|
|
||||||
|
# $f->template(
|
||||||
|
# name => "profileStyleTemplateId",
|
||||||
|
# value => $self->getStyleTemplateId,
|
||||||
|
# namespace => "style",
|
||||||
|
# label => $i18n->get("profile style template label"),
|
||||||
|
# hoverHelp => $i18n->get("profile style template hoverHelp")
|
||||||
|
# );
|
||||||
|
|
||||||
|
return $f->printRowsOnly;
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 editSettingsFormSave ( )
|
||||||
|
|
||||||
|
Creates form elements for user settings page custom to this account module
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub editUserSettingsFormSave {
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 getLayoutTemplateId ( )
|
||||||
|
|
||||||
|
This method returns the template ID for the account layout.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub getLayoutTemplateId {
|
||||||
|
my $self = shift;
|
||||||
|
return $self->session->setting->get("userLayoutTempalteId") || $self->SUPER::getLayoutTemplateId;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 getStyleTemplateId ( )
|
||||||
|
|
||||||
|
This method returns the template ID for the main style.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub getStyleTemplateId {
|
||||||
|
my $self = shift;
|
||||||
|
return $self->session->setting->get("userStyleTemplateId") || $self->SUPER::getStyleTemplateId;
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 getViewTemplateId ( )
|
||||||
|
|
||||||
|
This method returns the template ID for the main view.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub getViewTemplateId {
|
||||||
|
my $self = shift;
|
||||||
|
return $self->session->setting->get("userViewTemplateId") || "defaultAssetId";
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 www_view ( )
|
||||||
|
|
||||||
|
The main view page for editing the user's profile.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub www_view {
|
||||||
|
my $self = shift;
|
||||||
|
my $session = $self->session;
|
||||||
|
my $var = {};
|
||||||
|
|
||||||
|
return $self->processTemplate($var,$self->getViewTemplateId);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
1;
|
||||||
124
lib/WebGUI/Content/Account.pm
Normal file
124
lib/WebGUI/Content/Account.pm
Normal file
|
|
@ -0,0 +1,124 @@
|
||||||
|
package WebGUI::Content::Account;
|
||||||
|
|
||||||
|
=head1 LEGAL
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
WebGUI is Copyright 2001-2008 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::Exception::Account;
|
||||||
|
use Carp qw(croak);
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
Package WebGUI::Content::Account
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
A content handler that opens up all the account functionality. Account modules are accessed via the url like this:
|
||||||
|
|
||||||
|
/pagename?op=module;do=www_method
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
/home?op=profile;do=edit
|
||||||
|
|
||||||
|
In the above we're accessing the www_edit method in the WebGUI::Account::Profile module.
|
||||||
|
|
||||||
|
Module op relationships are stored in the config file as such
|
||||||
|
|
||||||
|
account : {
|
||||||
|
"profile" : "WebGUI::Account::Profile",
|
||||||
|
"inbox" : "WebGUI::Account::Inbox",
|
||||||
|
"network" : "WebGUI::Account::Network",
|
||||||
|
"user" : "WebGUI::Account::User",
|
||||||
|
"custom" : "WebGUI::Account::Custom"
|
||||||
|
}
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
use WebGUI::Content::Account;
|
||||||
|
my $output = WebGUI::Content::Account::handler($session);
|
||||||
|
|
||||||
|
=head1 SUBROUTINES
|
||||||
|
|
||||||
|
These subroutines are available from this package:
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 handler ( session )
|
||||||
|
|
||||||
|
The content handler for this package.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub handler {
|
||||||
|
my $session = shift;
|
||||||
|
my $form = $session->form;
|
||||||
|
|
||||||
|
my $output = undef;
|
||||||
|
|
||||||
|
my $op = $session->form->get("op");
|
||||||
|
my $configs = $session->config->get("account");
|
||||||
|
|
||||||
|
if ($configs->{$op}) {
|
||||||
|
return $session->privilege->insufficient if($session->user->isVisitor);
|
||||||
|
#$session->errorHandler->warn("Loading module : ".$configs->{$op}->{className});
|
||||||
|
|
||||||
|
#Create Pluggin Object
|
||||||
|
#Don't eval this as pluggable will croak and we want WebGUI::URL::Content to handle the exception
|
||||||
|
my $pluggin = WebGUI::Pluggable::instanciate($configs->{$op}->{className}, "new", [ $session ] );
|
||||||
|
|
||||||
|
#Check to make sure pluggin is a subclass of WebGUI::Account
|
||||||
|
unless($pluggin->isa('WebGUI::Account')) {
|
||||||
|
my $plugginType = ref $pluggin;
|
||||||
|
WebGUI::Error::InvalidObject->throw(
|
||||||
|
expected => 'WebGUI::Account',
|
||||||
|
got => $plugginType,
|
||||||
|
error => '$plugginType is not a subclass of WebGUI::Accout'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#Process the method call
|
||||||
|
my $method = $session->form->get("do") || "view";
|
||||||
|
$method = "www_".$method;
|
||||||
|
|
||||||
|
if($pluggin->can($method)) {
|
||||||
|
$output = eval { $pluggin->$method($session) };
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
WebGUI::Error::MethodNotFound->throw(
|
||||||
|
error => "Couldn't call non-existant method $method",
|
||||||
|
method => $method
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#Wrap content returned from method call into the layout
|
||||||
|
my $var = {};
|
||||||
|
$var->{content} = $output;
|
||||||
|
my $layoutId = $pluggin->getLayoutTemplateId;
|
||||||
|
$output = $pluggin->processTemplate($var,$layoutId);
|
||||||
|
|
||||||
|
#Wrap the layout in the user style
|
||||||
|
$session->http->setCacheControl("none");
|
||||||
|
$output = $session->style->process($output,$session->setting->get("userFunctionStyleId"));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $output;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
1;
|
||||||
|
|
||||||
63
lib/WebGUI/Exception/Account.pm
Normal file
63
lib/WebGUI/Exception/Account.pm
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
package WebGUI::Exception::Account;
|
||||||
|
|
||||||
|
=head1 LEGAL
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
WebGUI is Copyright 2001-2008 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::Exception;
|
||||||
|
use Exception::Class (
|
||||||
|
|
||||||
|
'WebGUI::Error::Account::NoAccountInfo' => {
|
||||||
|
description => "Some items restrict how many you can put into your cart.",
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
Package WebGUI::Exception::Account
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
Exceptions which apply only to the WebGUI account system.
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
use WebGUI::Exception::Account;
|
||||||
|
|
||||||
|
# throw
|
||||||
|
WebGUI::Error::Account::MaxOfItemInCartReached->throw(error=>"Too many in cart.");
|
||||||
|
|
||||||
|
# try
|
||||||
|
eval { $cart->addItem($ku) };
|
||||||
|
|
||||||
|
# catch
|
||||||
|
if (my $e = WebGUI::Error->caught("WebGUI::Error::Shop::MaxOfItemInCartReached")) {
|
||||||
|
# do something
|
||||||
|
}
|
||||||
|
|
||||||
|
=head1 EXCEPTION TYPES
|
||||||
|
|
||||||
|
These exception classes are defined in this class:
|
||||||
|
|
||||||
|
|
||||||
|
=head2 WebGUI::Error::Shop::MaxOfItemInCartReached
|
||||||
|
|
||||||
|
Throw this when there are too many items of a given type added to the cart so that the user can be notified. ISA WebGUI::Error.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
|
||||||
|
1;
|
||||||
|
|
||||||
|
|
@ -15,6 +15,7 @@ use Tie::IxHash;
|
||||||
use WebGUI::AdminConsole;
|
use WebGUI::AdminConsole;
|
||||||
use WebGUI::TabForm;
|
use WebGUI::TabForm;
|
||||||
use WebGUI::International;
|
use WebGUI::International;
|
||||||
|
use WebGUI::Macro;
|
||||||
use WebGUI::SQL;
|
use WebGUI::SQL;
|
||||||
|
|
||||||
=head1 NAME
|
=head1 NAME
|
||||||
|
|
@ -603,6 +604,7 @@ sub www_editSettings {
|
||||||
ui => { label => $i18n->get("ui") },
|
ui => { label => $i18n->get("ui") },
|
||||||
messaging => { label => $i18n->get("messaging") },
|
messaging => { label => $i18n->get("messaging") },
|
||||||
misc => { label => $i18n->get("misc") },
|
misc => { label => $i18n->get("misc") },
|
||||||
|
account => { label => $i18n->get("account settings tab")},
|
||||||
user => { label => $i18n->get("user") },
|
user => { label => $i18n->get("user") },
|
||||||
auth => { label => $i18n->get("authentication") },
|
auth => { label => $i18n->get("authentication") },
|
||||||
perms => { label => $i18n->get("permissions") },
|
perms => { label => $i18n->get("permissions") },
|
||||||
|
|
@ -628,6 +630,35 @@ sub www_editSettings {
|
||||||
$tabform->getTab("auth")->fieldSetEnd;
|
$tabform->getTab("auth")->fieldSetEnd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Get fieldsets for avaiable account methods
|
||||||
|
my $accountConfigs = $session->config->get("account");
|
||||||
|
foreach my $accountKey (keys %{$accountConfigs}) {
|
||||||
|
my $account = $accountConfigs->{$accountKey};
|
||||||
|
|
||||||
|
#Create the instance
|
||||||
|
my $className = $account->{className};
|
||||||
|
my $instance = eval { WebGUI::Pluggable::instanciate($className,"new",[ $session ]) };
|
||||||
|
|
||||||
|
if ( my $e = WebGUI::Error->caught ) {
|
||||||
|
$session->log->warn("Could not instantiate account pluggin $className...skipping");
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
|
||||||
|
#Get the content of the settings form from the instance
|
||||||
|
my $settingsForm = $instance->editUserSettingsForm;
|
||||||
|
#If editUserSettingsForm is empty, skip it
|
||||||
|
next if $settingsForm eq "";
|
||||||
|
|
||||||
|
#Set the title of the fieldset
|
||||||
|
my $title = $account->{title};
|
||||||
|
WebGUI::Macro::process($title);
|
||||||
|
|
||||||
|
#Print the settings form for this account pluggin
|
||||||
|
$tabform->getTab("account")->fieldSetStart($title);
|
||||||
|
$tabform->getTab("account")->raw($settingsForm);
|
||||||
|
$tabform->getTab("account")->fieldSetEnd;
|
||||||
|
}
|
||||||
|
|
||||||
$tabform->submit();
|
$tabform->submit();
|
||||||
$output .= $tabform->print;
|
$output .= $tabform->print;
|
||||||
|
|
||||||
|
|
|
||||||
14
lib/WebGUI/i18n/English/Account.pm
Normal file
14
lib/WebGUI/i18n/English/Account.pm
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
package WebGUI::i18n::English::Account_Profile;
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
our $I18N = {
|
||||||
|
|
||||||
|
'Error: Cannot instantiate template' => {
|
||||||
|
message => q{Error: Cannot instantiate template %s for class %s},
|
||||||
|
lastUpdated => 1225724810,
|
||||||
|
context => q{Error message in Account.pm},
|
||||||
|
},
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
1;
|
||||||
15
lib/WebGUI/i18n/English/Account_Friends.pm
Normal file
15
lib/WebGUI/i18n/English/Account_Friends.pm
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
package WebGUI::i18n::English::Account_Friends;
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
our $I18N = {
|
||||||
|
|
||||||
|
'title' => {
|
||||||
|
message => q{Friends},
|
||||||
|
lastUpdated => 1225724810,
|
||||||
|
context => q{Tab label for Friends Account pluggin},
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
1;
|
||||||
15
lib/WebGUI/i18n/English/Account_Inbox.pm
Normal file
15
lib/WebGUI/i18n/English/Account_Inbox.pm
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
package WebGUI::i18n::English::Account_Inbox;
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
our $I18N = {
|
||||||
|
|
||||||
|
'title' => {
|
||||||
|
message => q{Inbox},
|
||||||
|
lastUpdated => 1225724810,
|
||||||
|
context => q{Tab label for Inbox Account pluggin},
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
1;
|
||||||
53
lib/WebGUI/i18n/English/Account_Profile.pm
Normal file
53
lib/WebGUI/i18n/English/Account_Profile.pm
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
package WebGUI::i18n::English::Account_Profile;
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
our $I18N = {
|
||||||
|
|
||||||
|
'title' => {
|
||||||
|
message => q{Profile},
|
||||||
|
lastUpdated => 1225724810,
|
||||||
|
context => q{Tab label for Profile Account pluggin},
|
||||||
|
},
|
||||||
|
|
||||||
|
'profile style template label' => {
|
||||||
|
message => q|Style Template|,
|
||||||
|
lastUpdated => 1119068809
|
||||||
|
},
|
||||||
|
|
||||||
|
'profile style template hoverHelp' => {
|
||||||
|
message => q|Select a style template from the list to enclose your Wobject if it is viewed directly. If the Wobject is displayed as part of a Layout Asset, the Layout Asset's <b>Style Template</b> is used instead.|,
|
||||||
|
lastUpdated => 1119068809
|
||||||
|
},
|
||||||
|
|
||||||
|
'profile layout template label' => {
|
||||||
|
message => q|Layout Template|,
|
||||||
|
lastUpdated => 1119068809
|
||||||
|
},
|
||||||
|
|
||||||
|
'profile layout template hoverHelp' => {
|
||||||
|
message => q|Choose a layout from the list to display the various account pluggins and the contents of the one currently chosen|,
|
||||||
|
lastUpdated => 1119068809
|
||||||
|
},
|
||||||
|
|
||||||
|
'profile view template label' => {
|
||||||
|
message => q|View Template|,
|
||||||
|
lastUpdated => 1119068809
|
||||||
|
},
|
||||||
|
|
||||||
|
'profile view template hoverHelp' => {
|
||||||
|
message => q|Choose the main template for viewing a profile|,
|
||||||
|
lastUpdated => 1119068809
|
||||||
|
},
|
||||||
|
|
||||||
|
'profile edit template label' => {
|
||||||
|
message => q|Edit Template|,
|
||||||
|
lastUpdated => 1119068809
|
||||||
|
},
|
||||||
|
|
||||||
|
'profile edit template hoverHelp' => {
|
||||||
|
message => q|Choose the main template for editing a profile|,
|
||||||
|
lastUpdated => 1119068809
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
1;
|
||||||
15
lib/WebGUI/i18n/English/Account_User.pm
Normal file
15
lib/WebGUI/i18n/English/Account_User.pm
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
package WebGUI::i18n::English::Account_User;
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
our $I18N = {
|
||||||
|
|
||||||
|
'title' => {
|
||||||
|
message => q{User},
|
||||||
|
lastUpdated => 1225724810,
|
||||||
|
context => q{Tab label for User Account pluggin},
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
1;
|
||||||
|
|
@ -3229,6 +3229,12 @@ a user.|,
|
||||||
lastUpdated => 1118941685,
|
lastUpdated => 1118941685,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
'account settings tab' => {
|
||||||
|
message => q|Account|,
|
||||||
|
lastUpdated => 1098327046,
|
||||||
|
context => q|Tab label for the account settings in WebGUI Settings.|
|
||||||
|
},
|
||||||
|
|
||||||
'account' => {
|
'account' => {
|
||||||
message => q|Account|,
|
message => q|Account|,
|
||||||
lastUpdated => 1098327046,
|
lastUpdated => 1098327046,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue