diff --git a/lib/WebGUI/Asset/Shortcut.pm b/lib/WebGUI/Asset/Shortcut.pm index 892656428..54e74e2ab 100644 --- a/lib/WebGUI/Asset/Shortcut.pm +++ b/lib/WebGUI/Asset/Shortcut.pm @@ -377,7 +377,7 @@ sub getFieldsList { #------------------------------------------------------------------- sub getOverridesList { my $self = shift; - my $output = 'Add Override

'; + my $output = ''; my %overrides = $self->getOverrides; $output .= ''; $output .= ''; @@ -399,6 +399,7 @@ sub getOverridesList { } } $output .= '
fieldNameEdit/DeleteOriginal ValueNew ValueReplacement value
'; + return $output; } @@ -623,6 +624,13 @@ sub purgeRevision { return $self->SUPER::purgeRevision; } +#------------------------------------------------------------------- + +sub uncacheOverrides { + my $self = shift; + WebGUI::Cache->new(["shortcutOverrides",$self->getId])->delete; +} + #------------------------------------------------------------------- sub view { my $self = shift; @@ -647,8 +655,7 @@ sub www_edit { my $self = shift; return WebGUI::Privilege::insufficient() unless $self->canEdit; $self->getAdminConsole->setHelp("shortcut add/edit","Asset_Shortcut"); - $self->getAdminConsole->addSubmenuItem($self->getUrl("func=manageFields;isUserPref=0"),"Manage Shortcut Overrides"); - $self->getAdminConsole->addSubmenuItem($self->getUrl("func=manageFields;isUserPref=1"),"Manage User Preferences"); + $self->getAdminConsole->addSubmenuItem($self->getUrl("func=manageOverrides"),"Manage Shortcut Overrides"); return $self->getAdminConsole->render($self->getEditForm->print,WebGUI::International::get(2,"Asset_Shortcut")); } @@ -694,33 +701,30 @@ sub www_manageUserPrefs { return $self->_submenu($output,$self->_isUserPref('titleHeader')); } +#------------------------------------------------------------------- +sub www_manageOverrides { + my $self = shift; + return WebGUI::Privilege::insufficient() unless $self->canEdit; + return $self->_submenu($self->getOverridesList,'Manage Overrides'); +} + +#------------------------------------------------------------------- +sub www_purgeOverrideCache { + my $self = shift; + return WebGUI::Privilege::insufficient() unless $self->canEdit; + $self->uncacheOverrides; + return $self->www_manageOverrides; +} + #------------------------------------------------------------------- sub www_deleteOverride { my $self = shift; return WebGUI::Privilege::insufficient() unless $self->canEdit; - my $output = 'Add Override

'; - my %fielden = $self->getOverrides; -# unless (scalar (keys %fielden)) { - $output .= ''; - $output .= ''; - my %props = %{$self->getShortcutOriginal->{_properties}}; - use Data::Dumper;WebGUI::ErrorHandler::warn('
'.Dumper(\%props).'
'); - foreach my $prop (keys %{$self->getShortcutOriginal->{_properties}}) { - next if $prop->{fieldType} eq 'hidden'; - $output .= ''; - $output .= ''; - $output .= ''; - $output .= ''; - } - $output .= '
fieldNameEdit/Delete
Add$prop'; - $output .= editIcon('func=editOverride;fieldName='.$prop,$self->getUrl()); - $output .= deleteIcon('func=delete;fieldName='.$prop,$self->getUrl()); - $output .= '
'; -# } - return $self->_submenu($output,'Manage Overrides'); + WebGUI::SQL->write('delete from Shortcut_overrides where assetId='.quote($self->getId).' and fieldName='.quote($session{form}{fieldName})); + $self->uncacheOverrides; + return $self->www_manageOverrides; } - #------------------------------------------------------------------- sub www_saveUserPrefs { my $self = shift; @@ -742,6 +746,45 @@ sub www_getNewTitle { return $foo->{_properties}{title}; } +#------------------------------------------------------------------- +sub www_editOverride { + my $self = shift; + return WebGUI::Privilege::insufficient() unless $self->canEdit; + my $fieldName = $session{form}{fieldName}; + my %overrides = $self->getOverrides; + my $output = ''; + my %props; + foreach my $def (@{$self->getShortcutOriginal->definition}) { + %props = (%props,%{$def->{properties}}); + } + $output .= ''; + my $f = WebGUI::HTMLForm->new(-action=>$self->getUrl); + $f->hidden(-name=>"func",-value=>"saveOverride"); + $f->hidden(-name=>"fieldName",-value=>$session{form}{fieldName}); + $f->readOnly(-label=>"Field Name",-value=>$session{form}{fieldName}); + $f->readOnly(-label=>"Original Value",-value=>$overrides{overrides}{$fieldName}{origValue}); + my %params; + foreach my $key (keys %{$props{$fieldName}}) { + next if ($key eq "tab"); + $params{$key} = $props{$fieldName}{$key}; + } + $params{value} = $overrides{overrides}{$fieldName}{origValue}; + $params{name} = $fieldName; + $params{label} = $params{label} || "Edit Field Using the Generated Form Type"; +# use Data::Dumper;WebGUI::ErrorHandler::warn('
'.Dumper(\%params).'
'); + $f->dynamicField(%params); + $f->textarea( + -name=>"newValueText", + -label=>"New Override Value", + -value=>$overrides{overrides}{$fieldName}{newValue}, + -hoverHelp=>"Place something in this box if you don't want to use the automatically generated field." + ); + $f->readOnly(-label=>"Replacement Value",-value=>$overrides{overrides}{$fieldName}{parsedValue}); + $f->submit; + $output .= $f->print; + return $self->_submenu($output,'Edit Override'); +} + #------------------------------------------------------------------- sub www_view { my $self = shift;