lots of changes.
This commit is contained in:
parent
2825a11907
commit
a8c99a2b9c
11 changed files with 209 additions and 164 deletions
|
|
@ -11,9 +11,13 @@ package WebGUI::Asset::Shortcut;
|
|||
#-------------------------------------------------------------------
|
||||
|
||||
use strict;
|
||||
use Tie::IxHash;
|
||||
use WebGUI::Asset;
|
||||
use WebGUI::Icon;
|
||||
use WebGUI::International;
|
||||
use WebGUI::Operation::Profile;
|
||||
use WebGUI::ProfileField;
|
||||
use WebGUI::ProfileCategory;
|
||||
use WebGUI::Macro;
|
||||
use WebGUI::Privilege;
|
||||
use WebGUI::Session;
|
||||
|
|
@ -123,19 +127,6 @@ sub _drawQueryBuilder {
|
|||
return $output;
|
||||
}
|
||||
|
||||
sub parseOverride {
|
||||
my $self = shift;
|
||||
my $value = shift;
|
||||
my @userPrefs = $self->getUserPrefs;
|
||||
foreach my $field (@userPrefs) {
|
||||
my $id = $field->getId;
|
||||
my $fieldName = $field->getFieldName;
|
||||
use WebGUI::Asset::Field;
|
||||
my $fieldValue = WebGUI::Asset::Field->getUserPref($id);
|
||||
$value =~ s/\#\#userPref\:${fieldName}\#\#/$fieldValue/g;
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub _submenu {
|
||||
my $self = shift;
|
||||
|
|
@ -147,14 +138,13 @@ sub _submenu {
|
|||
$ac->setIcon($self->getIcon);
|
||||
$ac->addSubmenuItem($self->getUrl('func=edit'), WebGUI::International::get("Back to Edit Shortcut","Asset_Shortcut"));
|
||||
$ac->addSubmenuItem($self->getUrl("func=manageOverrides"),WebGUI::International::get("Manage Shortcut Overrides","Asset_Shortcut"));
|
||||
$ac->addSubmenuItem($self->getUrl("func=manageUserPrefs"),WebGUI::International::get("Manage User Preferences","Asset_Shortcut"));
|
||||
return $ac->render($workarea, $title);
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub canEdit {
|
||||
my $self = shift;
|
||||
return 1 if ($self->SUPER::canEdit || (ref $self->getParent eq 'WebGUI::Asset::Wobject::Dashboard' && $self->getParent->canManage));
|
||||
return 1 if ($self->SUPER::canEdit || ($self->isDashlet && $self->getParent->canManage));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -166,69 +156,61 @@ sub canManage {
|
|||
|
||||
#-------------------------------------------------------------------
|
||||
sub definition {
|
||||
my $class = shift;
|
||||
my $definition = shift;
|
||||
push(@{$definition}, {
|
||||
my $class = shift;
|
||||
my $definition = shift;
|
||||
push(@{$definition}, {
|
||||
assetName=>WebGUI::International::get('assetName',"Asset_Shortcut"),
|
||||
icon=>'shortcut.gif',
|
||||
tableName=>'Shortcut',
|
||||
className=>'WebGUI::Asset::Shortcut',
|
||||
properties=>{
|
||||
shortcutToAssetId=>{
|
||||
tableName=>'Shortcut',
|
||||
className=>'WebGUI::Asset::Shortcut',
|
||||
properties=>{
|
||||
shortcutToAssetId=>{
|
||||
noFormPost=>1,
|
||||
fieldType=>"hidden",
|
||||
defaultValue=>undef
|
||||
},
|
||||
# overrideTitle=>{
|
||||
# fieldType=>"yesNo",
|
||||
# defaultValue=>0
|
||||
# },
|
||||
# overrideTemplate=>{
|
||||
# fieldType=>"yesNo",
|
||||
# defaultValue=>0
|
||||
# },
|
||||
# overrideDisplayTitle=>{
|
||||
# fieldType=>"yesNo",
|
||||
# defaultValue=>0
|
||||
# },
|
||||
# overrideDescription=>{
|
||||
# fieldType=>"yesNo",
|
||||
# defaultValue=>0
|
||||
# },
|
||||
# overrideTemplateId=>{
|
||||
# fieldType=>"template",
|
||||
# defaultValue=>undef
|
||||
# },
|
||||
},
|
||||
shortcutByCriteria=>{
|
||||
fieldType=>"yesNo",
|
||||
defaultValue=>0,
|
||||
},
|
||||
},
|
||||
disableContentLock=>{
|
||||
fieldType=>"yesNo",
|
||||
defaultValue=>0
|
||||
},
|
||||
},
|
||||
resolveMultiples=>{
|
||||
fieldType=>"selectBox",
|
||||
defaultValue=>"mostRecent",
|
||||
},
|
||||
},
|
||||
shortcutCriteria=>{
|
||||
fieldType=>"textarea",
|
||||
defaultValue=>"",
|
||||
},
|
||||
},
|
||||
templateId=>{
|
||||
fieldType=>"template",
|
||||
defaultValue=>"PBtmpl0000000000000140"
|
||||
},
|
||||
},
|
||||
description=>{
|
||||
fieldType=>"HTMLArea",
|
||||
defaultValue=>undef
|
||||
},
|
||||
prefFieldsToShow=>{
|
||||
fieldType=>"checkList",
|
||||
defaultValue=>undef
|
||||
},
|
||||
prefFieldsToImport=>{
|
||||
fieldType=>"checkList",
|
||||
defaultValue=>undef
|
||||
}
|
||||
}
|
||||
});
|
||||
return $class->SUPER::definition($definition);
|
||||
}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub discernUserId {
|
||||
my $self = shift;
|
||||
return ($self->canManage && WebGUI::Session::isAdminOn()) ? '1' : $session{user}{userId};
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub getEditForm {
|
||||
|
|
@ -291,6 +273,10 @@ sub getEditForm {
|
|||
}
|
||||
$tabform->addTab('overrides',$i18n->get('Overrides'));
|
||||
$tabform->getTab('overrides')->raw($self->getOverridesList);
|
||||
if ($self->isDashlet) {
|
||||
$tabform->addTab('preferences',$i18n->get('Preferences'));
|
||||
$tabform->getTab('preferences')->raw($self->getFieldsList);
|
||||
}
|
||||
return $tabform;
|
||||
}
|
||||
|
||||
|
|
@ -312,22 +298,37 @@ sub getExtraHeadTags {
|
|||
sub getFieldsList {
|
||||
my $self = shift;
|
||||
my $i18n = WebGUI::International->new("Asset_Shortcut");
|
||||
my $output = '<a href="'.$self->getUrl('func=add;class=WebGUI::Asset::Field').'" class="formLink">'.$i18n->get('Add Preference Field').'</a><br /><br />';
|
||||
my @fielden;
|
||||
@fielden = $self->getUserPrefs;
|
||||
return $output unless scalar @fielden > 0;
|
||||
$output .= '<table cellspacing="0" cellpadding="3" border="1">';
|
||||
$output .= '<tr class="tableHeader"><td>'.$i18n->get('fieldName').'</td><td>'.$i18n->get('edit delete fieldname').'</td></tr>';
|
||||
foreach my $field (@fielden) {
|
||||
$output .= '<tr>';
|
||||
$output .= '<td class="tableData"><a href="'.$field->getUrl('func=edit').'">'.$field->get("fieldName").'</a></td>';
|
||||
$output .= '<td class="tableData">';
|
||||
$output .= editIcon('func=edit',$field->getUrl());
|
||||
$output .= deleteIcon('func=delete',$field->getUrl());
|
||||
$output .= '</td>';
|
||||
$output .= '</tr>';
|
||||
my $output = '<a href="'.$self->getUrl('op=editProfileSettings').'" class="formLink">'.$i18n->get('Manage Profile Fields').'</a><br /><br />';
|
||||
my %fieldNames;
|
||||
tie %fieldNames, 'Tie::IxHash';
|
||||
foreach my $field (@{WebGUI::ProfileField->getFields}) {
|
||||
my $fieldId = $field->getId;
|
||||
next if $fieldId =~ /contentPositions/;
|
||||
$fieldNames{$fieldId} = $field->getLabel.' ['.$fieldId.']';
|
||||
}
|
||||
$output .= '</table>';
|
||||
$output .= '<table cellspacing="0" cellpadding="3" border="1"><tr><td><table cellspacing="0" cellpadding="3" border="0">';
|
||||
my @prefFieldsToShow = split("\n",$self->getValue("prefFieldsToShow"));
|
||||
$output .= WebGUI::Form::CheckList->new(
|
||||
-name=>"prefFieldsToShow",
|
||||
-value=>\@prefFieldsToShow,
|
||||
-options=>\%fieldNames,
|
||||
-label=>$i18n->get('pref fields to show'),
|
||||
-hoverHelp=>$i18n->get('pref fields to show description'),
|
||||
-vertical=>1,
|
||||
-uiLevel=>9
|
||||
)->toHtmlWithWrapper;
|
||||
$output .= '</table></td><td><table cellspacing="0" cellpadding="3" border="0">';
|
||||
my @prefFieldsToImport = split("\n",$self->getValue("prefFieldsToImport"));
|
||||
$output .= WebGUI::Form::CheckList->new(
|
||||
-name=>"prefFieldsToImport",
|
||||
-value=>\@prefFieldsToImport,
|
||||
-options=>\%fieldNames,
|
||||
-label=>$i18n->get('pref fields to import'),
|
||||
-hoverHelp=>$i18n->get('pref fields to import description'),
|
||||
-vertical=>1,
|
||||
-uiLevel=>9
|
||||
)->toHtmlWithWrapper;
|
||||
$output .= '</table></td></tr></table>';
|
||||
return $output;
|
||||
}
|
||||
|
||||
|
|
@ -387,16 +388,20 @@ sub getOverrides {
|
|||
$overrides{overrides}{$fieldName}{parsedValue} = $newValue;
|
||||
}
|
||||
$sth->finish;
|
||||
my @userPrefs = $self->getUserPrefs;
|
||||
foreach my $field (@userPrefs) {
|
||||
my $id = $field->getId;
|
||||
my $fieldName = $field->getFieldName;
|
||||
my $fieldValue = $field->getUserPref($id);
|
||||
$overrides{userPrefs}{$fieldName}{value} = $fieldValue;
|
||||
$overrides{overrides}{$fieldName}{parsedValue} = $fieldValue;
|
||||
# 'myTemplateId is ##userPref:myTemplateId##', for example.
|
||||
foreach my $overr (keys %{$overrides{overrides}}) {
|
||||
$overrides{overrides}{$overr}{parsedValue} =~ s/\#\#userPref\:${fieldName}\#\#/$fieldValue/gm;
|
||||
if ($self->isDashlet) {
|
||||
my $u = WebGUI::User->new($self->discernUserId);
|
||||
my @userPrefs = $self->getPrefFieldsToImport;
|
||||
foreach my $fieldId (@userPrefs) {
|
||||
my $field = WebGUI::ProfileField->new($fieldId);
|
||||
next unless $field;
|
||||
my $fieldName = $field->getId;
|
||||
my $fieldValue = $u->profileField($field->getId);
|
||||
$overrides{userPrefs}{$fieldName}{value} = $fieldValue;
|
||||
$overrides{overrides}{$fieldName}{parsedValue} = $fieldValue;
|
||||
# 'myTemplateId is ##userPref:myTemplateId##', for example.
|
||||
foreach my $overr (keys %{$overrides{overrides}}) {
|
||||
$overrides{overrides}{$overr}{parsedValue} =~ s/\#\#userPref\:${fieldName}\#\#/$fieldValue/gm;
|
||||
}
|
||||
}
|
||||
}
|
||||
$cache->set(\%overrides, 60*60);
|
||||
|
|
@ -411,7 +416,7 @@ sub getShortcut {
|
|||
unless ($self->{_shortcut}) {
|
||||
$self->{_shortcut} = $self->getShortcutOriginal;
|
||||
}
|
||||
$self->{_shortcut}{_properties}{displayTitle} = undef if (ref $self->getParent eq 'WebGUI::Asset::Wobject::Dashboard');
|
||||
$self->{_shortcut}{_properties}{displayTitle} = undef if ($self->isDashlet);
|
||||
# Hide title by default. If you want, you can create an override
|
||||
# to display it. But it's being shown in the dragheader by default.
|
||||
my %overhash = $self->getOverrides;
|
||||
|
|
@ -420,9 +425,6 @@ sub getShortcut {
|
|||
foreach my $override (keys %overrides) {
|
||||
$self->{_shortcut}{_properties}{$override} = $overrides{$override}{parsedValue};
|
||||
}
|
||||
foreach my $userPref ($self->getUserPrefs) {
|
||||
$self->{_shortcut}{_properties}{$userPref->getFieldName} = $userPref->getUserPref($userPref->getId) unless (exists $overrides{$userPref->getFieldName});
|
||||
}
|
||||
}
|
||||
return $self->{_shortcut};
|
||||
}
|
||||
|
|
@ -553,10 +555,22 @@ sub getShortcutOriginal {
|
|||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub getUserPrefs {
|
||||
sub getPrefFieldsToShow {
|
||||
my $self = shift;
|
||||
my $bibibib = $self->getLineage(["children"],{includeOnlyClasses=>["WebGUI::Asset::Field"],returnObjects=>1});
|
||||
return @$bibibib;
|
||||
return split("\n",$self->getValue("prefFieldsToShow"));
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub getPrefFieldsToImport {
|
||||
my $self = shift;
|
||||
return split("\n",$self->getValue("prefFieldsToImport"));
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub isDashlet {
|
||||
my $self = shift;
|
||||
return 1 if ref $self->getParent eq 'WebGUI::Asset::Wobject::Dashboard';
|
||||
return 0;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
|
@ -569,21 +583,6 @@ sub processPropertiesFromFormPost {
|
|||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
sub purge {
|
||||
my $self = shift;
|
||||
# delete and purge all associated FieldIds and their preferences.
|
||||
return $self->SUPER::purge;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
sub purgeRevision {
|
||||
my $self = shift;
|
||||
return $self->SUPER::purgeRevision;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
sub uncacheOverrides {
|
||||
my $self = shift;
|
||||
WebGUI::Cache->new(["shortcutOverrides",$self->getId])->delete;
|
||||
|
|
@ -614,7 +613,6 @@ sub www_edit {
|
|||
return WebGUI::Privilege::insufficient() unless $self->canEdit;
|
||||
$self->getAdminConsole->setHelp("shortcut add/edit","Asset_Shortcut");
|
||||
$self->getAdminConsole->addSubmenuItem($self->getUrl("func=manageOverrides"),WebGUI::International::get("Manage Shortcut Overrides","Asset_Shortcut"));
|
||||
$self->getAdminConsole->addSubmenuItem($self->getUrl("func=manageUserPrefs"),WebGUI::International::get("Manage User Preferences","Asset_Shortcut"));
|
||||
return $self->getAdminConsole->render($self->getEditForm->print,WebGUI::International::get(2,"Asset_Shortcut"));
|
||||
}
|
||||
|
||||
|
|
@ -622,41 +620,41 @@ sub www_edit {
|
|||
sub www_getUserPrefsForm {
|
||||
#This is a form retrieved by "ajax".
|
||||
my $self = shift;
|
||||
return 'nuhuh' unless $self->getParent->canPersonalize;
|
||||
my @fielden = $self->getUserPrefs;
|
||||
return 'You are no longer logged in' if $session{user}{userId} eq '1';
|
||||
return 'You are not allowed to personalize this Dashboard.' unless $self->getParent->canPersonalize;
|
||||
my $output;
|
||||
my @fielden = $self->getPrefFieldsToShow;
|
||||
my $f = WebGUI::HTMLForm->new(extras=>' onSubmit="submitForm(this,\''.$self->getId.'\',\''.$self->getUrl.'\');return false;"');
|
||||
$f->raw('<table cellspacing="0" cellpadding="3" border="0">');
|
||||
$f->hidden(
|
||||
-name => 'func',
|
||||
-value => 'saveUserPrefs'
|
||||
);
|
||||
foreach my $field (@fielden) {
|
||||
my $fieldType = $field->get("fieldType") || "text";
|
||||
my $options;
|
||||
my $params = {name=>$field->getId,
|
||||
label=>$field->get("fieldName"),
|
||||
uiLevel=>5,
|
||||
value=>$field->getUserPref($field->getId),
|
||||
extras=>'',
|
||||
possibleValues=>$field->get("possibleValues"),
|
||||
options=>$options,
|
||||
fieldType=>$fieldType
|
||||
};
|
||||
if (lc($fieldType) eq 'textarea') {
|
||||
foreach my $fieldId (@fielden) {
|
||||
my $field = WebGUI::ProfileField->new($fieldId);
|
||||
next unless $field;
|
||||
my $params = {};
|
||||
if (lc($field->get("fieldType")) eq 'textarea') {
|
||||
$params->{rows} = 4;
|
||||
$params->{columns} = 20;
|
||||
}
|
||||
$f->dynamicField(%$params);
|
||||
if (lc($field->get("fieldType")) eq 'text') {
|
||||
$params->{size} = 20;
|
||||
}
|
||||
$f->raw($field->formField($params,1));
|
||||
}
|
||||
$f->submit;
|
||||
return $f->print;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_manageUserPrefs {
|
||||
my $self = shift;
|
||||
return WebGUI::Privilege::insufficient() unless $self->canEdit;
|
||||
my $output = $self->getFieldsList;
|
||||
return $self->_submenu($output,WebGUI::International::get("Manage User Preferences","Asset_Shortcut"));
|
||||
$f->submit({extras=>'className="nothing"'});
|
||||
$f->raw('</table>');
|
||||
my $tags;
|
||||
foreach my $tag (@{$session{page}{head}{javascript}}) {
|
||||
$tags .= '<script';
|
||||
foreach my $name (keys %{$tag}) {
|
||||
$tags .= ' '.$name.'="'.$tag->{$name}.'"';
|
||||
}
|
||||
$tags .= '></script>'."\n";
|
||||
}
|
||||
$output .= $tags.$f->print;
|
||||
return $output;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
|
@ -687,11 +685,21 @@ sub www_deleteOverride {
|
|||
sub www_saveUserPrefs {
|
||||
my $self = shift;
|
||||
return '' unless $self->getParent->canPersonalize;
|
||||
my @fellowFields = $self->getUserPrefs;
|
||||
my @fellowFields = $self->getPrefFieldsToShow;
|
||||
my %data = ();
|
||||
$self->uncacheOverrides;
|
||||
my $u = WebGUI::User->new($self->discernUserId);
|
||||
foreach my $fieldId (keys %{$session{form}}) {
|
||||
my $field = WebGUI::Asset->newByDynamicClass($fieldId);
|
||||
my $field = WebGUI::ProfileField->new($fieldId);
|
||||
next unless $field;
|
||||
$field->setUserPref($fieldId,$session{form}{$fieldId});
|
||||
$data{$field->getId} = $field->formProcess;
|
||||
if ($field->getId eq 'email' && WebGUI::Operation::Profile::isDuplicateEmail($data{$field->getId})) {
|
||||
return '<li>'.WebGUI::International::get(1072).'</li>';
|
||||
}
|
||||
if ($field->isRequired && !$data{$field->getId}) {
|
||||
return '<li>'.$field->getLabel.' '.WebGUI::International::get(451).'</li>';
|
||||
}
|
||||
$u->profileField($field->getId,$data{$field->getId});
|
||||
}
|
||||
return $self->view;
|
||||
}
|
||||
|
|
@ -739,7 +747,7 @@ sub www_editOverride {
|
|||
-value=>$overrides{overrides}{$fieldName}{newValue},
|
||||
-hoverHelp=>$i18n->get("Place something in this box if you dont want to use the automatically generated field")
|
||||
);
|
||||
$f->readOnly(-label=>$i18n->get("Replacement Value"),-value=>$overrides{overrides}{$fieldName}{parsedValue},-hoverHelp=>$i18n->get("This is the example output of the field when parsed for user preference macros"));
|
||||
$f->readOnly(-label=>$i18n->get("Replacement Value"),-value=>$overrides{overrides}{$fieldName}{parsedValue},-hoverHelp=>$i18n->get("This is the example output of the field when parsed for user preference macros")) if $self->isDashlet;
|
||||
$f->submit;
|
||||
$output .= $f->print;
|
||||
return $self->_submenu($output,$i18n->get('Edit Override'));
|
||||
|
|
@ -768,7 +776,7 @@ sub www_saveOverride {
|
|||
#-------------------------------------------------------------------
|
||||
sub www_view {
|
||||
my $self = shift;
|
||||
if (ref($self->getParent) eq 'WebGUI::Asset::Wobject::Dashboard') {
|
||||
if ($self->isDashlet) {
|
||||
return WebGUI::Privilege::noAccess() unless $self->canView;
|
||||
$session{asset} = $self->getParent;
|
||||
return $session{asset}->www_view;
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ use WebGUI::Utility;
|
|||
use WebGUI::Session;
|
||||
use WebGUI::Grouping;
|
||||
use WebGUI::Privilege;
|
||||
use WebGUI::ProfileField;
|
||||
use WebGUI::ErrorHandler;
|
||||
use Time::HiRes;
|
||||
use WebGUI::Style;
|
||||
|
|
@ -28,12 +29,14 @@ our @ISA = qw(WebGUI::Asset::Wobject);
|
|||
#-------------------------------------------------------------------
|
||||
sub canManage {
|
||||
my $self = shift;
|
||||
return 0 if $session{user}{userId} == 1;
|
||||
return WebGUI::Grouping::isInGroup($self->get("adminsGroupId"));
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub canPersonalize {
|
||||
my $self = shift;
|
||||
return 0 if $session{user}{userId} == 1;
|
||||
return WebGUI::Grouping::isInGroup($self->get("usersGroupId"));
|
||||
}
|
||||
|
||||
|
|
@ -65,7 +68,8 @@ sub definition {
|
|||
assetsToHide => {
|
||||
defaultValue=>undef,
|
||||
fieldType=>"checkList"
|
||||
}
|
||||
},
|
||||
|
||||
);
|
||||
push(@{$definition}, {
|
||||
assetName=>WebGUI::International::get('assetName',"Asset_Dashboard"),
|
||||
|
|
@ -138,13 +142,13 @@ sub getEditForm {
|
|||
#-------------------------------------------------------------------
|
||||
sub initialize {
|
||||
my $self = shift;
|
||||
my $userPrefField = WebGUI::ProfileField::addProfileField({
|
||||
my $userPrefField = WebGUI::ProfileField->create($self->getId.'contentPositions',{
|
||||
label=>'\'Dashboard User Preference - Content Positions\'',
|
||||
visible=>1,
|
||||
isProtected=>1,
|
||||
visible=>0,
|
||||
protected=>1,
|
||||
editable=>0,
|
||||
dataType=>'text',
|
||||
fieldName=>$self->getId.'contentPositions'
|
||||
required=>0,
|
||||
fieldType=>'text'
|
||||
});
|
||||
$self->update({isInitialized=>1});
|
||||
}
|
||||
|
|
@ -181,7 +185,7 @@ sub view {
|
|||
my @hidden = split("\n",$self->get("assetsToHide"));
|
||||
foreach my $child (@{$children}) {
|
||||
push(@hidden,$child->get('shortcutToAssetId')) if ref $child eq 'WebGUI::Asset::Shortcut';
|
||||
#the following loop will initially place just-shortcutted assets.
|
||||
#the following loop will initially place just-dashletted assets.
|
||||
for (my $i = 0; $i < scalar(@positions); $i++) {
|
||||
next unless isIn($child->get('shortcutToAssetId'),@hidden);
|
||||
my $newChildId = $child->getId;
|
||||
|
|
@ -216,7 +220,7 @@ sub view {
|
|||
dashletTitle=>$child->{_properties}{title},
|
||||
shortcutUrl=>$child->getUrl,
|
||||
canPersonalize=>$self->canPersonalize,
|
||||
canEditUserPrefs=>(($session{user}{userId} ne '1') && (ref $child eq 'WebGUI::Asset::Shortcut') && (scalar($child->getUserPrefs) > 0))
|
||||
canEditUserPrefs=>(($session{user}{userId} ne '1') && (ref $child eq 'WebGUI::Asset::Shortcut') && (scalar($child->getPrefFieldsToShow) > 0))
|
||||
});
|
||||
$newStuff .= 'available_dashlets["'.$child->getId.'"]=\''.$child->getUrl.'\';';
|
||||
|
||||
|
|
@ -227,7 +231,7 @@ sub view {
|
|||
dashletTitle=>$child->{_properties}{title},
|
||||
shortcutUrl=>$child->getUrl,
|
||||
canPersonalize=>$self->canPersonalize,
|
||||
canEditUserPrefs=>(($session{user}{userId} ne '1') && (ref $child eq 'WebGUI::Asset::Shortcut') && (scalar($child->getUserPrefs) > 0))
|
||||
canEditUserPrefs=>(($session{user}{userId} ne '1') && (ref $child eq 'WebGUI::Asset::Shortcut') && (scalar($child->getPrefFieldsToShow) > 0))
|
||||
});
|
||||
$newStuff .= 'available_dashlets["'.$child->getId.'"]=\''.$child->getUrl.'\';';
|
||||
}
|
||||
|
|
@ -249,7 +253,7 @@ sub view {
|
|||
dashletTitle=>$child->getTitle,
|
||||
shortcutUrl=>$child->getUrl,
|
||||
canPersonalize=>$self->canPersonalize,
|
||||
canEditUserPrefs=>(($session{user}{userId} ne '1') && (ref $child eq 'WebGUI::Asset::Shortcut') && (scalar($child->getUserPrefs) > 0))
|
||||
canEditUserPrefs=>(($session{user}{userId} ne '1') && (ref $child eq 'WebGUI::Asset::Shortcut') && (scalar($child->getPrefFieldsToShow) > 0))
|
||||
});
|
||||
$newStuff .= 'available_dashlets["'.$child->getId.'"]=\''.$child->getUrl.'\';';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -174,25 +174,26 @@ Adds a FATAL type message to the log, outputs an error message to the user, and
|
|||
|
||||
sub fatal {
|
||||
my $message = shift;
|
||||
WebGUI::HTTP::setStatus("500","Server Error");
|
||||
my $logger = getLogger();
|
||||
Apache2::RequestUtil->request->content_type('text/html') if ($WebGUI::Session::session{req});
|
||||
$logger->fatal($message);
|
||||
$logger->debug("Stack trace for FATAL ".$message."\n".getStackTrace());
|
||||
unless (canShowDebug()) {
|
||||
#NOTE: You can't internationalize this because with some types of errors that would cause an infinite loop.
|
||||
print "<h1>Problem With Request</h1>
|
||||
We have encountered a problem with your request. Please use your back button and try again.
|
||||
If this problem persists, please contact us with what you were trying to do and the time and date of the problem.";
|
||||
print '<br />'.$WebGUI::Session::session{setting}{companyName};
|
||||
print '<br />'.$WebGUI::Session::session{setting}{companyEmail};
|
||||
print '<br />'.$WebGUI::Session::session{setting}{companyURL};
|
||||
} else {
|
||||
print "<h1>WebGUI Fatal Error</h1><p>Something unexpected happened that caused this system to fault.</p>\n";
|
||||
unless (canShowDebug()) {
|
||||
#NOTE: You can't internationalize this because with some types of errors that would cause an infinite loop.
|
||||
print "<h1>Problem With Request</h1>
|
||||
We have encountered a problem with your request. Please use your back button and try again.
|
||||
If this problem persists, please contact us with what you were trying to do and the time and date of the problem.";
|
||||
print '<br />'.$WebGUI::Session::session{setting}{companyName};
|
||||
print '<br />'.$WebGUI::Session::session{setting}{companyEmail};
|
||||
print '<br />'.$WebGUI::Session::session{setting}{companyURL};
|
||||
} else {
|
||||
print "<h1>WebGUI Fatal Error</h1><p>Something unexpected happened that caused this system to fault.</p>\n";
|
||||
print "<p>".$message."</p>\n";
|
||||
print showDebug();
|
||||
}
|
||||
WebGUI::Session::close();
|
||||
exit;
|
||||
exit; #this is bad under mod_perl. restarts that httpd instance.
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -303,9 +304,9 @@ The message you wish to add to the log.
|
|||
sub security {
|
||||
my $message = shift;
|
||||
$Log::Log4perl::caller_depth++;
|
||||
WebGUI::ErrorHandler::warn($WebGUI::Session::session{user}{username}." (".$WebGUI::Session::session{user}{userId}.") connecting from "
|
||||
.$WebGUI::Session::session{env}{REMOTE_ADDR}." attempted to ".$message);
|
||||
$Log::Log4perl::caller_depth--;
|
||||
WebGUI::ErrorHandler::warn($WebGUI::Session::session{user}{username}." (".$WebGUI::Session::session{user}{userId}.") connecting from "
|
||||
.$WebGUI::Session::session{env}{REMOTE_ADDR}." attempted to ".$message);
|
||||
$log::Log4perl::caller_depth--;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ Generates an HTTP header.
|
|||
=cut
|
||||
|
||||
sub getHeader {
|
||||
return undef if ($session{http}{noHeader});
|
||||
return undef if ($session{http}{noHeader});
|
||||
my %params;
|
||||
if (isRedirect()) {
|
||||
$session{req}->headers_out->set(Location => $session{http}{location});
|
||||
|
|
@ -83,16 +83,14 @@ sub getHeader {
|
|||
} else {
|
||||
$session{req}->content_type($session{http}{mimetype} || "text/html");
|
||||
if ($session{setting}{preventProxyCache}) {
|
||||
$params{"-expires"} = "-1d";
|
||||
}
|
||||
$params{"-expires"} = "-1d";
|
||||
}
|
||||
if ($session{http}{filename}) {
|
||||
$params{"-attachment"} = $session{http}{filename};
|
||||
}
|
||||
}
|
||||
$params{"-cookie"} = $session{http}{cookie};
|
||||
my $status = getStatus();
|
||||
# $session{req}->custom_response($status, '<!-- '.$session{http}{statusDescription}.' -->' );
|
||||
$session{req}->status($status);
|
||||
$session{req}->status_line(getStatus().' '.$session{http}{statusDescription}) if $session{req};
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -119,6 +117,7 @@ Returns the current HTTP status code, if one has been set.
|
|||
=cut
|
||||
|
||||
sub getStatus {
|
||||
$session{http}{statusDescription} = $session{http}{statusDescription} || "OK";
|
||||
return $session{http}{status} || "200";
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ sub execute {
|
|||
$output = eval($cmd);
|
||||
WebGUI::ErrorHandler::error("Couldn't execute operation : ".$cmd.". Root cause: ".$@) if ($@);
|
||||
} else {
|
||||
WebGUI::ErrorHandler::security("execute an invalid operation: ".$op);
|
||||
WebGUI::ErrorHandler::security("execute an invalid operation: ".$op);
|
||||
}
|
||||
return $output;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -103,6 +103,7 @@ sub www_editProfile {
|
|||
my @temp = ();
|
||||
foreach my $field (@{$category->getFields}) {
|
||||
next unless ($field->isEditable);
|
||||
next if $field->getId =~ /contentPositions/;
|
||||
push(@temp, {
|
||||
'profile.form.element' => $field->formField,
|
||||
'profile.form.element.label' => $field->getLabel,
|
||||
|
|
|
|||
|
|
@ -265,6 +265,7 @@ sub www_editProfileSettings {
|
|||
$output .= moveDownIcon('op=moveProfileCategoryDown;cid='.$category->getId);
|
||||
$output .= ' <b>'.$category->getLabel.'</b><br />';
|
||||
foreach my $field (@{$category->getFields}) {
|
||||
next if $field->getId =~ /contentPositions/;
|
||||
$output .= ' ';
|
||||
$output .= deleteIcon('op=deleteProfileFieldConfirm;fid='.$field->getId,'',WebGUI::International::get(467,"WebGUIProfile"));
|
||||
$output .= editIcon('op=editProfileField;fid='.$field->getId);
|
||||
|
|
|
|||
|
|
@ -278,6 +278,7 @@ sub www_editUser {
|
|||
foreach my $category (@{WebGUI::ProfileCategory->getCategories}) {
|
||||
$tabform->getTab("profile")->raw('<tr><td colspan="2" class="tableHeader">'.$category->getLabel.'</td></tr>');
|
||||
foreach my $field (@{$category->getFields}) {
|
||||
next if $field->getId =~ /contentPositions/;
|
||||
$tabform->getTab("profile")->raw($field->formField(undef,1));
|
||||
}
|
||||
}
|
||||
|
|
@ -337,6 +338,7 @@ sub www_editUserSave {
|
|||
$authInstance->editUserFormSave;
|
||||
}
|
||||
foreach my $field (@{WebGUI::ProfileField->getFields}) {
|
||||
next if $field->getId =~ /contentPositions/;
|
||||
$u->profileField($field->getId,$field->formProcess);
|
||||
}
|
||||
my @groups = WebGUI::FormProcessor::group("groupsToAdd");
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ use WebGUI::Form;
|
|||
use WebGUI::FormProcessor;
|
||||
use WebGUI::Operation::Shared;
|
||||
use WebGUI::HTML;
|
||||
use WebGUI::User;
|
||||
|
||||
|
||||
=head1 NAME
|
||||
|
|
@ -226,7 +227,7 @@ Returns an array reference of WebGUI::ProfileField objects. This is a class meth
|
|||
sub getFields {
|
||||
my $self = shift;
|
||||
my @fields = ();
|
||||
foreach my $fieldName (WebGUI::SQL->buildArray("select fieldName from userProfileField order by sequenceNumber")) {
|
||||
foreach my $fieldName (WebGUI::SQL->buildArray("select fieldName from userProfileField order by profileCategoryId, sequenceNumber")) {
|
||||
push(@fields,WebGUI::ProfileField->new($fieldName));
|
||||
}
|
||||
return \@fields;
|
||||
|
|
|
|||
|
|
@ -263,10 +263,10 @@ sub new {
|
|||
my %profile = WebGUI::SQL->buildHash("select userProfileField.fieldName, userProfileData.fieldData
|
||||
from userProfileField, userProfileData where userProfileField.fieldName=userProfileData.fieldName and
|
||||
userProfileData.userId=".quote($user{userId}));
|
||||
my %default = WebGUI::SQL->buildHash("select fieldName, dataDefault from userProfileField where profileCategoryId=4");
|
||||
my %default = WebGUI::SQL->buildHash("select fieldName, dataDefault from userProfileField");
|
||||
foreach my $key (keys %default) {
|
||||
my $value;
|
||||
if ($profile{$key} eq "") {
|
||||
if ($profile{$key} eq "" && $default{$key}) {
|
||||
$value = eval($default{$key});
|
||||
if (ref $value eq "ARRAY") {
|
||||
$profile{$key} = $$value[0];
|
||||
|
|
|
|||
|
|
@ -280,8 +280,8 @@ The word "Shortcut".</p>
|
|||
lastUpdated => 1133619940,
|
||||
},
|
||||
|
||||
'Add Preference Field' => {
|
||||
message => q|Add Preference Field|,
|
||||
'Manage Profile Fields' => {
|
||||
message => q|Manage Profile Fields|,
|
||||
lastUpdated => 1133619940,
|
||||
},
|
||||
|
||||
|
|
@ -370,6 +370,34 @@ The word "Shortcut".</p>
|
|||
lastUpdated => 1133619940,
|
||||
},
|
||||
|
||||
'pref fields to show' => {
|
||||
message => q|Preference Fields to Show|,
|
||||
lastUpdated => 1133619940,
|
||||
},
|
||||
|
||||
'pref fields to show description' => {
|
||||
message => q|These are the user profile fields you want to expose as user preferences to the users who can personalize this dashboard.|,
|
||||
lastUpdated => 1133619940,
|
||||
},
|
||||
|
||||
'pref fields to import' => {
|
||||
message => q|Preference Fields to Import|,
|
||||
lastUpdated => 1133619940,
|
||||
},
|
||||
|
||||
'pref fields to import description' => {
|
||||
message => q|These are the user profile fields you want exposed to your override fields (in the form ##userPref:nameOfProfileField##). Check these if you want to expose profile fields from other areas of the site or the general user profile fields.|,
|
||||
lastUpdated => 1133619940,
|
||||
},
|
||||
|
||||
'Preferences' => {
|
||||
message => q|Preferences|,
|
||||
lastUpdated => 1133619940,
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
1;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue