addInfoMessage on Knowledge Article View

MounikaS
Tera Contributor

Hello,

Does any one help me on adding info message to the articles in the kB view.

 

1 ACCEPTED SOLUTION

Sorry for delayed response but got busy with something else.

1> Change application to Knowledge Management - Service Portal

2 > Open portal page called kb_article_view

3> Clone widget Called "Knowledge Article Content"

4> add below code to cloned widget

if(knowledgeRecord.workflow_state == 'retired'){
		gs.addInfoMessage('Article has been retired');
	}

5> change widget on page from Knowledge Article Content to new cloned widget.

Screenshot that will help;

Result:

View solution in original post

23 REPLIES 23

try

<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
	<j2:set var="jvar_hide_response_time" value="true" />
	<g:inline template="ie_checker.xml" />
	<g:requires name="scripts/lib/jquery_includes.js"/>
	<j:set var="jvar_theme" value="$[gs.getPreference(new GlideThemeUtil().getThemeVersion())]"/>
	<g:requires name="styles/knowledge.ng/css_includes_knowledge.css" includes="true" params="c=$[gs.getProperty('css.version')]_$[GlideCacheManager.getFlushStamp('csscsscsscache')]&amp;theme=${jvar_theme}"/>

	<j2:if test="$[!jvar_isMSIE7]">
		<j2:if test="$[!jvar_isMSIE8]">
			<g:requires name="scripts/classes/timeAgo.js"/>
		</j2:if>
	</j2:if>

	<!-- Common styles are loaded in the "Knowledge Common Styles" stylesheet -->
	<link href="b3ba3821d73221004792a1737e610382.cssdbx?v=${gs.getProperty('glide.builddate')}" type="text/css" rel="stylesheet"/>

	<g:evaluate jelly="true" copyToRhino="true">
		var uiMacro = "kb_view_legacy";
		var kbViewModel = new KBViewModel();
		var kbViewInfo = kbViewModel;
		kbViewModel.getInfo();
		var canContributeHelper = new SNC.KnowledgeHelper();
		var knowledgeHelp = new KnowledgeHelp();
		var historyRowCount = 0;
		var isValidRecord = kbViewModel.isValid;
		var knowledgeExists = kbViewModel.knowledgeExists;
		var NOT_RETIRED = gs.getMessage("Article not retired");
		var NOT_PUBLISHED = gs.getMessage("Article not published");
		var NOT_SAVED = gs.getMessage("Article not saved");
		var SAVED = gs.getMessage("Article saved");
		var DISCARDED = gs.getMessage("Article changes discarded");
		var SUBMITTED = gs.getMessage("Your article has been submitted");
		var PREVIEW = gs.getMessage(" Preview ");
		var PREVIEW_HINT = gs.getMessage("Preview changes");
		var DELETE = gs.getMessage("Delete");
		var CONFIRM_DELETE = gs.getMessage("Confirm deletion of this article?");
		var TITLE_CANCEL = gs.getMessage("Cancel changes");
		var MESSAGE_CANCEL = gs.getMessage("Discard all changes?");
		var TITLE_RETIRE = gs.getMessage("Retire");
		var MESSAGE_RETIRE = gs.getMessage("Retire this article?");
		// Status messages for the message bar.
		var DRAFT_MSG = gs.getMessage("This knowledge item has been created");
		var REVIEW_MSG = gs.getMessage("This knowledge item has been published");
		var PUBLISHED_MSG = gs.getMessage("This knowledge item has been published");
		var PEND_RETIRE_MSG = gs.getMessage("This knowledge item has been retired");
		var RETIRED_MSG = gs.getMessage("This knowledge item has been retired");
		var DELETE_FAIL_MSG = gs.getMessage("This article could not be deleted");
		var TXT_PLACEHOLDER = gs.getMessage("Add content");
		var tsQueryId = RP.getParameterValue("sysparm_tsqueryId");
		var rank = RP.getParameterValue("sysparm_rank");
		var readOnlyPage = false;


		if (isValidRecord) {
		var knowledgeRecord = kbViewModel.knowledgeRecord;
		var canContributeToKnowledge = canContributeHelper.canContribute(kbViewModel.knowledgeRecord);
		var versioningInfo = kbViewModel.versioningInfo;
		var revisionString = kbViewModel.revisionString;
		var isEditable = kbViewModel.isEditable;
		var publishedRecord = kbViewModel.publishedRecord;
		var feedbackRecords = kbViewModel.feedbackRecord;
		var bannerImage = kbViewModel.bannerImage;
		var authorImage = kbViewModel.authorImage;
		var authorName = kbViewModel.authorName;
		var authorCompany = kbViewModel.authorCompany || kbViewModel.getAuthorInfo("author.company.name");
		var authorDepartment = kbViewModel.authorDepartment || kbViewModel.getAuthorInfo("author.department.name");
		var authorTitle = kbViewModel.authorTitle || kbViewModel.getAuthorInfo("author.title");
		var i18n = function(message, array) {
		message = message || "";
		var padded = " " + message + " ";
		var translated = gs.getMessage(padded, array);
		var trimmed = translated.trim();
		return trimmed;
		};

		var canCreateNew = kbViewModel.canCreateNew;
		var isNewRecord = kbViewModel.isNewRecord;
		var published = "";
		var sys_updated_on = "";
		if (kbViewModel.publishedRecord) {
		published = kbViewModel.publishedRecord.published;
		sys_updated_on = kbViewModel.publishedRecord.sys_updated_on;
		}
		var number = knowledgeRecord.number;
		var permalink = kbViewModel.permalink;
		var category = knowledgeRecord.category;
		var attachments = kbViewModel.attachments;
		var disableSuggesting = knowledgeRecord.disable_suggesting;
		var glideWikiModel = new GlideWikiModel();
		glideWikiModel.setLinkBaseURL(glideWikiModel.getLinkBaseURL() + "${AMP}sysparm_field=kb_knowledge.wiki" + "${AMP}sysparm_kbtable=" + kbViewInfo.tableName);
		}

		var isVersion2 = new KBCommon().isKBVersion2(knowledgeRecord.kb_knowledge_base);
		if (isVersion2) {
		if (jelly.sysparm_context == 'popup')
		uiMacro = "kb_view_legacy_popup";
		else
		uiMacro = "kb_view_legacy";
		}
		if(tsQueryId ${AMP}${AMP} rank){
		var inc = new GlideRecord('ts_query_kb');
		inc.get(tsQueryId);
		var prevRank = inc.top_click_rank;
		if(prevRank ${AMP}${AMP} prevRank !=""){
		if(parseInt(prevRank) > parseInt(rank)){
		inc.top_click_rank = rank;
		inc.updateWithReferences();
		}
		}else{
		inc.top_click_rank = rank;
		inc.update();
		}
		}
		var escapeTextProperty = gs.getProperty('glide.ui.escape_text','false');
		var kb_name = knowledgeRecord.kb_knowledge_base.getDisplayValue();
		var kb_desc = knowledgeRecord.short_description;
		var encodedKb_desc = encodeURIComponent(kb_desc);

		if(gs.getProperty("glide.knowman.contextual_search.show_read_only_article","false") == "true" &amp;&amp; RP.getParameterValue("sysparm_popup") == "true"){
		readOnlyPage = true;
		kbViewInfo.showKBFeedback = false;
		kbViewInfo.hideFeedbackOptions = true;
		versioningInfo.showHistory = false;
		}
var gr = new GlideRecord("kb_knowledge");
	gs.log(number);
		gr.addQuery("number", number);
		gr.addQuery("workflow_state", 'retired');
		gr.query();
		gr;
	</g:evaluate>
	
	<script>
		if('${JS:kb_desc}' != ''){
		$j("title").html('${JS:kb_name}'+ " - " + '${JS:kb_desc}');
		}
		var kbConfig = {
		canContribute: '${canContributeToKnowledge}',
		historyRowCount: ${historyRowCount},
		i18n: {
		STATUS_MSG: {
		draft: '${JS:DRAFT_MSG}',
		review: '${JS:REVIEW_MSG}',
		published: '${JS:PUBLISHED_MSG}',
		pending_retirement: '${JS:PEND_RETIRE_MSG}',
		retired: '${JS:RETIRED_MSG}',
		delete_failed: '${JS:DELETE_FAIL_MSG}'
		},
		TXT_PLACEHOLDER: '${JS:TXT_PLACEHOLDER}',
		NOT_RETIRED: '${JS:NOT_RETIRED}',
		NOT_PUBLISHED: '${JS:NOT_PUBLISHED}',
		NOT_SAVED: '${JS:NOT_SAVED}',
		SAVED: '${JS:SAVED}',
		DISCARDED: '${JS:DISCARDED}',
		SUBMITTED: '${JS:SUBMITTED}',
		PREVIEW: '${JS:PREVIEW}',
		PREVIEW_HINT: '${JS:PREVIEW_HINT}',
		CONFIRM_DELETE: '${JS:CONFIRM_DELETE}',
		DELETE: '${JS:DELETE}',
		TITLE_RETIRE: '${JS:TITLE_RETIRE}',
		MESSAGE_RETIRE: '${JS:MESSAGE_RETIRE}',
		TITLE_CANCEL: '${JS:TITLE_CANCEL}',
		MESSAGE_CANCEL: '${JS:MESSAGE_CANCEL}'
		}
		};

		$j(function() {
		if (parent.document) {
		// fix iframe resize issue for CMS service portal
		parent.CustomEvent.fire('content_frame.resized', window.name, parent.document.body.scrollHeight);
		}
		});
	</script>
	<j:if test="${gr.hasNext()}"><br/>************** Article has been retired ***************</j:if>
	<j:choose>
		<j:when test="${isVersion2}">
			<g:inline template="${uiMacro}"/>
		</j:when>
		<j:when test="${isValidRecord &amp;&amp; knowledgeHelp.hasRights(knowledgeRecord)}">
			<g:inline template="kb_view_common" />
		</j:when>
		<j:when test="${knowledgeExists}">
			<g:inline template="kb_view_cannot_read"/>
		</j:when>
		<j:otherwise>
			<g:inline template="kb_view_not_valid_record"/>
		</j:otherwise>
	</j:choose>
	<!--Knowledge in IFrame fix-->
	<script></script>
</j:jelly>

Hi Mike

Thanks for the script.

It appears in the page. can we display it like banner message like first one.

find_real_file.png

Mike Patel
Tera Sage

change kb_view UI page with below code

<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
	<j2:set var="jvar_hide_response_time" value="true" />
	<g:inline template="ie_checker.xml" />
	<g:requires name="scripts/lib/jquery_includes.js"/>
	<j:set var="jvar_theme" value="$[gs.getPreference(new GlideThemeUtil().getThemeVersion())]"/>
	<g:requires name="styles/knowledge.ng/css_includes_knowledge.css" includes="true" params="c=$[gs.getProperty('css.version')]_$[GlideCacheManager.getFlushStamp('csscsscsscache')]&amp;theme=${jvar_theme}"/>

	<j2:if test="$[!jvar_isMSIE7]">
		<j2:if test="$[!jvar_isMSIE8]">
			<g:requires name="scripts/classes/timeAgo.js"/>
		</j2:if>
	</j2:if>

	<!-- Common styles are loaded in the "Knowledge Common Styles" stylesheet -->
	<link href="b3ba3821d73221004792a1737e610382.cssdbx?v=${gs.getProperty('glide.builddate')}" type="text/css" rel="stylesheet"/>

	<g:evaluate jelly="true" copyToRhino="true">
		var uiMacro = "kb_view_legacy";
		var kbViewModel = new KBViewModel();
		var kbViewInfo = kbViewModel;
		kbViewModel.getInfo();
		var canContributeHelper = new SNC.KnowledgeHelper();
		var knowledgeHelp = new KnowledgeHelp();
		var historyRowCount = 0;
		var isValidRecord = kbViewModel.isValid;
		var knowledgeExists = kbViewModel.knowledgeExists;
		var NOT_RETIRED = gs.getMessage("Article not retired");
		var NOT_PUBLISHED = gs.getMessage("Article not published");
		var NOT_SAVED = gs.getMessage("Article not saved");
		var SAVED = gs.getMessage("Article saved");
		var DISCARDED = gs.getMessage("Article changes discarded");
		var SUBMITTED = gs.getMessage("Your article has been submitted");
		var PREVIEW = gs.getMessage(" Preview ");
		var PREVIEW_HINT = gs.getMessage("Preview changes");
		var DELETE = gs.getMessage("Delete");
		var CONFIRM_DELETE = gs.getMessage("Confirm deletion of this article?");
		var TITLE_CANCEL = gs.getMessage("Cancel changes");
		var MESSAGE_CANCEL = gs.getMessage("Discard all changes?");
		var TITLE_RETIRE = gs.getMessage("Retire");
		var MESSAGE_RETIRE = gs.getMessage("Retire this article?");
		// Status messages for the message bar.
		var DRAFT_MSG = gs.getMessage("This knowledge item has been created");
		var REVIEW_MSG = gs.getMessage("This knowledge item has been published");
		var PUBLISHED_MSG = gs.getMessage("This knowledge item has been published");
		var PEND_RETIRE_MSG = gs.getMessage("This knowledge item has been retired");
		var RETIRED_MSG = gs.getMessage("This knowledge item has been retired");
		var DELETE_FAIL_MSG = gs.getMessage("This article could not be deleted");
		var TXT_PLACEHOLDER = gs.getMessage("Add content");
		var tsQueryId = RP.getParameterValue("sysparm_tsqueryId");
		var rank = RP.getParameterValue("sysparm_rank");
		var readOnlyPage = false;


		if (isValidRecord) {
		var knowledgeRecord = kbViewModel.knowledgeRecord;
		var canContributeToKnowledge = canContributeHelper.canContribute(kbViewModel.knowledgeRecord);
		var versioningInfo = kbViewModel.versioningInfo;
		var revisionString = kbViewModel.revisionString;
		var isEditable = kbViewModel.isEditable;
		var publishedRecord = kbViewModel.publishedRecord;
		var feedbackRecords = kbViewModel.feedbackRecord;
		var bannerImage = kbViewModel.bannerImage;
		var authorImage = kbViewModel.authorImage;
		var authorName = kbViewModel.authorName;
		var authorCompany = kbViewModel.authorCompany || kbViewModel.getAuthorInfo("author.company.name");
		var authorDepartment = kbViewModel.authorDepartment || kbViewModel.getAuthorInfo("author.department.name");
		var authorTitle = kbViewModel.authorTitle || kbViewModel.getAuthorInfo("author.title");
		var i18n = function(message, array) {
		message = message || "";
		var padded = " " + message + " ";
		var translated = gs.getMessage(padded, array);
		var trimmed = translated.trim();
		return trimmed;
		};

		var canCreateNew = kbViewModel.canCreateNew;
		var isNewRecord = kbViewModel.isNewRecord;
		var published = "";
		var sys_updated_on = "";
		if (kbViewModel.publishedRecord) {
		published = kbViewModel.publishedRecord.published;
		sys_updated_on = kbViewModel.publishedRecord.sys_updated_on;
		}
		var number = knowledgeRecord.number;
		var permalink = kbViewModel.permalink;
		var category = knowledgeRecord.category;
		var attachments = kbViewModel.attachments;
		var disableSuggesting = knowledgeRecord.disable_suggesting;
		var glideWikiModel = new GlideWikiModel();
		glideWikiModel.setLinkBaseURL(glideWikiModel.getLinkBaseURL() + "${AMP}sysparm_field=kb_knowledge.wiki" + "${AMP}sysparm_kbtable=" + kbViewInfo.tableName);
		}

		var isVersion2 = new KBCommon().isKBVersion2(knowledgeRecord.kb_knowledge_base);
		if (isVersion2) {
		if (jelly.sysparm_context == 'popup')
		uiMacro = "kb_view_legacy_popup";
		else
		uiMacro = "kb_view_legacy";
		}
		if(tsQueryId ${AMP}${AMP} rank){
		var inc = new GlideRecord('ts_query_kb');
		inc.get(tsQueryId);
		var prevRank = inc.top_click_rank;
		if(prevRank ${AMP}${AMP} prevRank !=""){
		if(parseInt(prevRank) > parseInt(rank)){
		inc.top_click_rank = rank;
		inc.updateWithReferences();
		}
		}else{
		inc.top_click_rank = rank;
		inc.update();
		}
		}
		var escapeTextProperty = gs.getProperty('glide.ui.escape_text','false');
		var kb_name = knowledgeRecord.kb_knowledge_base.getDisplayValue();
		var kb_desc = knowledgeRecord.short_description;
		var encodedKb_desc = encodeURIComponent(kb_desc);

		if(gs.getProperty("glide.knowman.contextual_search.show_read_only_article","false") == "true" &amp;&amp; RP.getParameterValue("sysparm_popup") == "true"){
		readOnlyPage = true;
		kbViewInfo.showKBFeedback = false;
		kbViewInfo.hideFeedbackOptions = true;
		versioningInfo.showHistory = false;
		}
		var gr = new GlideRecord("kb_knowledge");
		gr.addQuery("number", number);
		gr.addQuery("workflow_state", 'retired');
		gr.query();
		gr;
	</g:evaluate>

	<script>
		if('${JS:kb_desc}' != ''){
		$j("title").html('${JS:kb_name}'+ " - " + '${JS:kb_desc}');
		}
		var kbConfig = {
		canContribute: '${canContributeToKnowledge}',
		historyRowCount: ${historyRowCount},
		i18n: {
		STATUS_MSG: {
		draft: '${JS:DRAFT_MSG}',
		review: '${JS:REVIEW_MSG}',
		published: '${JS:PUBLISHED_MSG}',
		pending_retirement: '${JS:PEND_RETIRE_MSG}',
		retired: '${JS:RETIRED_MSG}',
		delete_failed: '${JS:DELETE_FAIL_MSG}'
		},
		TXT_PLACEHOLDER: '${JS:TXT_PLACEHOLDER}',
		NOT_RETIRED: '${JS:NOT_RETIRED}',
		NOT_PUBLISHED: '${JS:NOT_PUBLISHED}',
		NOT_SAVED: '${JS:NOT_SAVED}',
		SAVED: '${JS:SAVED}',
		DISCARDED: '${JS:DISCARDED}',
		SUBMITTED: '${JS:SUBMITTED}',
		PREVIEW: '${JS:PREVIEW}',
		PREVIEW_HINT: '${JS:PREVIEW_HINT}',
		CONFIRM_DELETE: '${JS:CONFIRM_DELETE}',
		DELETE: '${JS:DELETE}',
		TITLE_RETIRE: '${JS:TITLE_RETIRE}',
		MESSAGE_RETIRE: '${JS:MESSAGE_RETIRE}',
		TITLE_CANCEL: '${JS:TITLE_CANCEL}',
		MESSAGE_CANCEL: '${JS:MESSAGE_CANCEL}'
		}
		};

		$j(function() {
		if (parent.document) {
		// fix iframe resize issue for CMS service portal
		parent.CustomEvent.fire('content_frame.resized', window.name, parent.document.body.scrollHeight);
		}
		});
	</script>
	<j:if test="${gr.hasNext()}">
		<g:evaluate jelly="true">
			var msg = gs.getMessage('Article has been retired');
			gs.addInfoMessage(msg);
		</g:evaluate>
	</j:if>
	<j:choose>
		<j:when test="${isVersion2}">
			<g:inline template="${uiMacro}"/>
		</j:when>
		<j:when test="${isValidRecord &amp;&amp; knowledgeHelp.hasRights(knowledgeRecord)}">
			<g:inline template="kb_view_common" />
		</j:when>
		<j:when test="${knowledgeExists}">
			<g:inline template="kb_view_cannot_read"/>
		</j:when>
		<j:otherwise>
			<g:inline template="kb_view_not_valid_record"/>
		</j:otherwise>
	</j:choose>
	<!--Knowledge in IFrame fix-->
	<script></script>
</j:jelly>

Hi Mike,

 

It works in the Application but not in the Portal, Does anything needs to be change

find_real_file.pngfind_real_file.png

Hi Mike,

Could you please suggest me on this

Thanks!