From 5c07591519ae672ec182fcfd0546b219f144d3bc Mon Sep 17 00:00:00 2001 From: Eric Date: Wed, 30 Sep 2020 11:53:14 +0200 Subject: [PATCH] =?UTF-8?q?N=C2=B02847=20-=20fix=20newsroom=20target=20for?= =?UTF-8?q?=20links?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../newsroom-menu.js} | 44 ++++++++----------- .../NewsroomMenu/NewsroomMenuFactory.php | 13 +++--- sources/application/WebPage/iTopWebPage.php | 1 - 3 files changed, 26 insertions(+), 32 deletions(-) rename js/{newsroom_menu.js => components/newsroom-menu.js} (89%) diff --git a/js/newsroom_menu.js b/js/components/newsroom-menu.js similarity index 89% rename from js/newsroom_menu.js rename to js/components/newsroom-menu.js index 860a135ae..2b82ad486 100644 --- a/js/newsroom_menu.js +++ b/js/components/newsroom-menu.js @@ -175,31 +175,28 @@ $(function() }, _buildDismissAllSection: function() { - return '
'+this.options.labels.mark_all_as_read+'
'; + return '
' + this.options.labels.mark_all_as_read + '
'; }, - _buildMessageSection: function() - { + _buildMessageSection: function () { return '
'; }, - _buildShowAllMessagesSection: function() - { + _buildShowAllMessagesSection: function () { return '
'; }, - _buildMessageItems: function(sId, sText, sImage, sStartDate, sProvider, sUrl, oConverter) - { + _buildMessageItems: function (sId, sText, sImage, sStartDate, sProvider, sUrl, sTarget, oConverter) { var sNewMessageIndicator = '
'; - sImage = ''; + sImage = ''; var div = document.createElement("div"); div.textContent = sText; var sDescription = div.innerHTML; // Escape HTML entities for XSS prevention - - var sRichDescription = '
' + oConverter.makeHtml(sDescription) +'
'; - - var sBottomText = ''+ sImage + '' + this.options.providers[sProvider].label+' ' + moment(sStartDate).fromNow()+''; - - return '' + - sNewMessageIndicator + sRichDescription + sBottomText +''; + + var sRichDescription = '
' + oConverter.makeHtml(sDescription) + '
'; + + var sBottomText = '' + sImage + '' + this.options.providers[sProvider].label + ' ' + moment(sStartDate).fromNow() + ''; + + return '' + + sNewMessageIndicator + sRichDescription + sBottomText + ''; }, _buildNoMessageItem: function() { @@ -208,21 +205,19 @@ $(function() }, _buildSingleShowAllMessagesItem: function() { - return '' + this.options.labels.view_all + ''; + return '' + this.options.labels.view_all + ''; }, _buildMultipleShowAllMessagesItem: function(aUnreadMessagesByProvider) { var sNewMessageIndicator = '
'; var sUnreadMessages = '' - for(k in this.options.providers) - { + for(k in this.options.providers) { var sExtraMessages = ''; - if (aUnreadMessagesByProvider[k] > 0) - { - sExtraMessages = ' ('+aUnreadMessagesByProvider[k]+')' + if (aUnreadMessagesByProvider[k] > 0) { + sExtraMessages = ' (' + aUnreadMessagesByProvider[k] + ')' } - sUnreadMessages += ''+ sNewMessageIndicator +this.options.providers[k].label+sExtraMessages+''; + sUnreadMessages += '' + sNewMessageIndicator + this.options.providers[k].label + sExtraMessages + ''; } return ''+this.options.labels.view_all+'' + '
'+sUnreadMessages+'
'; @@ -247,9 +242,8 @@ $(function() { var oMessage = aAllMessages[k]; aUnreadMessagesByProvider[oMessage.provider]++; - if (iCount < this.options.display_limit + 4) - { - var sMessageItem = this._buildMessageItems(oMessage.id, oMessage.text, oMessage.image, oMessage.start_date, oMessage.provider, oMessage.url, oConverter) + if (iCount < this.options.display_limit + 4) { + var sMessageItem = this._buildMessageItems(oMessage.id, oMessage.text, oMessage.image, oMessage.start_date, oMessage.provider, oMessage.url, oMessage.target, oConverter) sMessageSection += sMessageItem; } iCount++; diff --git a/sources/application/UI/Component/PopoverMenu/NewsroomMenu/NewsroomMenuFactory.php b/sources/application/UI/Component/PopoverMenu/NewsroomMenu/NewsroomMenuFactory.php index bcb43c82f..43d6046a7 100644 --- a/sources/application/UI/Component/PopoverMenu/NewsroomMenu/NewsroomMenuFactory.php +++ b/sources/application/UI/Component/PopoverMenu/NewsroomMenu/NewsroomMenuFactory.php @@ -23,6 +23,7 @@ use appUserPreferences; use Dict; use MetaModel; use UserRights; +use utils; /** * Class NewsroomMenuFactory @@ -66,15 +67,15 @@ class NewsroomMenuFactory * @var \iNewsroomProvider[] $aProviders */ $aProviders = MetaModel::EnumPlugins('iNewsroomProvider'); - foreach($aProviders as $oProvider) - { - $oProvider->SetConfig(MetaModel::GetConfig()); - $bProviderEnabled = appUserPreferences::GetPref('newsroom_provider_'.get_class($oProvider),true); - if ($bProviderEnabled && $oProvider->IsApplicable($oUser)) - { + foreach($aProviders as $oProvider) { + $oConfig = MetaModel::GetConfig(); + $oProvider->SetConfig($oConfig); + $bProviderEnabled = appUserPreferences::GetPref('newsroom_provider_'.get_class($oProvider), true); + if ($bProviderEnabled && $oProvider->IsApplicable($oUser)) { $aProviderParams[] = array( 'label' => $oProvider->GetLabel(), 'fetch_url' => $oProvider->GetFetchURL(), + 'target' => utils::StartsWith($oProvider->GetFetchURL(), $oConfig->Get('app_root_url')) ? '_self' : 'blank', 'view_all_url' => $oProvider->GetViewAllURL(), 'mark_all_as_read_url' => $oProvider->GetMarkAllAsReadURL(), 'placeholders' => $oProvider->GetPlaceholders(), diff --git a/sources/application/WebPage/iTopWebPage.php b/sources/application/WebPage/iTopWebPage.php index d31d522d5..8b4dbe74d 100644 --- a/sources/application/WebPage/iTopWebPage.php +++ b/sources/application/WebPage/iTopWebPage.php @@ -138,7 +138,6 @@ class iTopWebPage extends NiceWebPage implements iTabbedPage $this->add_linked_script(utils::GetAbsoluteUrlAppRoot().'js/moment-with-locales.min.js'); $this->add_linked_script(utils::GetAbsoluteUrlAppRoot().'js/showdown.min.js'); $this->add_linked_script(utils::GetAbsoluteUrlAppRoot().'js/pages/backoffice.js'); - $this->add_linked_script(utils::GetAbsoluteUrlAppRoot().'js/newsroom_menu.js'); $this->add_dict_entry('UI:FillAllMandatoryFields');