- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-30-2020 11:21 AM
Hello,
Does any one help me on adding info message to the articles in the kB view.
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-05-2020 05:40 PM
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:

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-30-2020 12:31 PM
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')]&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" && 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 && 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>
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-30-2020 12:41 PM

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-30-2020 05:20 PM
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')]&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" && 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 && 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>
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-31-2020 03:21 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-03-2020 06:50 AM
Hi Mike,
Could you please suggest me on this
Thanks!