diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index db07dd86d..77693dc38 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -1,4 +1,5 @@ 7.6.0 + - improved Rich Text selection list, changed CS and Wiki to use it - fixed: invalid HTML generated for Shortcut overrides tab - fixed: copying or duplicating an asset in the asset manager never autocommits - fixed: Server side spell checker errors when checking text with single quotes diff --git a/lib/WebGUI/Asset.pm b/lib/WebGUI/Asset.pm index 291a49e1c..59b91f51d 100644 --- a/lib/WebGUI/Asset.pm +++ b/lib/WebGUI/Asset.pm @@ -2075,7 +2075,7 @@ sub processTemplate { $template = WebGUI::Asset->new($self->session, $templateId,"WebGUI::Asset::Template") unless (defined $template); if (defined $template) { $var = { %{ $var }, %{ $self->getMetaDataAsTemplateVariables } }; - $var->{'controls'} = $self->getToolbar; + $var->{'controls'} = $self->getToolbar if $self->session->var->isAdminOn; my %vars = ( %{$self->{_properties}}, %{$var} diff --git a/lib/WebGUI/Asset/Snippet.pm b/lib/WebGUI/Asset/Snippet.pm index 052373661..d7e3fd8c9 100644 --- a/lib/WebGUI/Asset/Snippet.pm +++ b/lib/WebGUI/Asset/Snippet.pm @@ -205,7 +205,7 @@ sub view { } my $output = $self->get("snippet"); WebGUI::Macro::process($self->session,\$output); - $output = $self->getToolbar.$output if ($self->session->var->get("adminOn") && !$calledAsWebMethod); + $output = $self->getToolbar.$output if ($self->session->var->isAdminOn && !$calledAsWebMethod); if ($self->getValue("processAsTemplate")) { $output = WebGUI::Asset::Template->processRaw($self->session, $output, $self->get); } diff --git a/lib/WebGUI/Asset/Wobject/Collaboration.pm b/lib/WebGUI/Asset/Wobject/Collaboration.pm index e1260e54f..e421887c9 100644 --- a/lib/WebGUI/Asset/Wobject/Collaboration.pm +++ b/lib/WebGUI/Asset/Wobject/Collaboration.pm @@ -414,8 +414,6 @@ sub definition { ($useKarma? (karmaRank=>$i18n->get('karma rank')) : ()), ); - my $richEditorOptions = $session->db->buildHashRef("select distinct(assetData.assetId), assetData.title from asset, assetData where asset.className='WebGUI::Asset::RichEdit' and asset.assetId=assetData.assetId order by assetData.title"); - my %properties; tie %properties, 'Tie::IxHash'; %properties = ( @@ -612,12 +610,11 @@ sub definition { hoverHelp=>$i18n->get('filter code description'), }, richEditor =>{ - fieldType=>"selectBox", + fieldType=>"selectRichEditor", defaultValue=>"PBrichedit000000000002", tab=>'display', label=>$i18n->get('rich editor'), hoverHelp=>$i18n->get('rich editor description'), - options=>$richEditorOptions, }, attachmentsPerPost =>{ fieldType=>"integer", diff --git a/lib/WebGUI/Asset/Wobject/WikiMaster.pm b/lib/WebGUI/Asset/Wobject/WikiMaster.pm index a9ef5680e..5b17ff534 100644 --- a/lib/WebGUI/Asset/Wobject/WikiMaster.pm +++ b/lib/WebGUI/Asset/Wobject/WikiMaster.pm @@ -181,9 +181,6 @@ sub definition { my $definition = shift; my $i18n = WebGUI::International->new($session, 'Asset_WikiMaster'); - # BUGGO: duplication with Collaboration; move this into WebGUI::Asset::RichEdit - my $richEditorOptions = $session->db->buildHashRef("select distinct(assetData.assetId), assetData.title from asset, assetData where asset.className='WebGUI::Asset::RichEdit' and asset.assetId=assetData.assetId order by assetData.title"); - my %properties; tie %properties, 'Tie::IxHash'; %properties = @@ -200,8 +197,7 @@ sub definition { hoverHelp => $i18n->get('groupToAdminister hoverHelp'), label => $i18n->get('groupToAdminister label') }, - richEditor => { fieldType => 'selectBox', - options => $richEditorOptions, + richEditor => { fieldType => 'selectRichEditor', defaultValue => 'PBrichedit000000000001', tab => 'display', hoverHelp => $i18n->get('richEditor hoverHelp'), diff --git a/lib/WebGUI/Form/SelectRichEditor.pm b/lib/WebGUI/Form/SelectRichEditor.pm index b5050c1bf..07d688c28 100644 --- a/lib/WebGUI/Form/SelectRichEditor.pm +++ b/lib/WebGUI/Form/SelectRichEditor.pm @@ -111,23 +111,34 @@ the available Rich Text Editor assets. =cut -sub new { - my $class = shift; - my $self = $class->SUPER::new(@_); - - # Get all the RTEs available to this site - my $options - = $self->session->db->buildHashRef( q{ - SELECT DISTINCT(assetData.assetId), assetData.title - FROM asset, assetData - WHERE asset.className='WebGUI::Asset::RichEdit' - AND asset.assetId=assetData.assetId - ORDER BY assetData.title - }); - - $self->set( "options", $options ); +sub getOptions { + my $self = shift; + my $editors = WebGUI::Asset->getRoot($self->session)->getLineage(['descendants'], {includeOnlyClasses => ['WebGUI::Asset::RichEdit'], returnObjects => 1}); + my %options = map { $_->getId => $_->getTitle } @$editors; + return \%options; +} - return $self; +#------------------------------------------------------------------- + +=head2 toHtmlWithWrapper ( ) + +Renders the form field to HTML as a table row complete with labels, subtext, hoverhelp, etc. Also adds manage and edit icons next to the field if the current user is in the admins group. + +=cut + +sub toHtmlWithWrapper { + my $self = shift; + my $editor = WebGUI::Asset::RichEdit->new($self->session,$self->getOriginalValue); + if (defined $editor && $editor->canEdit) { + my $returnUrl = ''; + if (defined $self->session->asset && !$self->session->asset->isa("WebGUI::Asset::RichEdit")) { + $returnUrl = ";proceed=goBackToPage;returnUrl=".$self->session->url->escape($self->session->asset->getUrl); + } + my $buttons = $self->session->icon->edit("func=edit".$returnUrl,$editor->get("url")); + $buttons .= $self->session->icon->manage("op=assetManager",$editor->getParent->get("url")); + $self->set("subtext", $buttons . $self->get("subtext")); + } + return $self->SUPER::toHtmlWithWrapper; } 1;