

HTML:
<div>
<div ng-if="data.categoryExists" class="panel panel-{{::options.color}} b">
<div class="panel-heading">
<h4 class="panel-title">{{::data.categoryDisplay}}</h4>
</div>
<div class="panel-body">
<div ng-if="data.items.length == 0">
(${No articles})
</div>
<div ng-repeat="kb_article in data.items track by $index" class="sp-kb-topic-article m-b-lg" id="button1">
<div ng-if="(!isMore && $index<=2) || (isMore)">
<h4>
<a ng-href="?id=kb_article&sys_id={{::kb_article.sys_id}}">{{::kb_article.title}}</a>
</h4>
<div style="max-height: 3em; overflow: hidden; padding-top:4px;">{{::kb_article.inner_text}}</div>
<div class="kb-about" style="padding-top:4px;">
<span class="about-outer-span">
<span class="author pad-right" ng-if="kb_article.author">
<glyph sn-char="user" class="pad-right" />
${Authored by {{::kb_article.author}}}
</span>
<span ng-if="kb_article.sys_view_count == 1" class="views pad-right">
<span class="pad-right">•</span> <glyph sn-char="eye-open" class="pad-right" />
${{{::kb_article.sys_view_count}} View}
</span>
<span ng-if="kb_article.sys_view_count > 1" class="views pad-right">
<span class="pad-right">•</span> <glyph sn-char="eye-open" class="pad-right" />
${{{::kb_article.sys_view_count}} Views}
</span>
<span class="published pad-right">
<span class="pad-right">•</span> <glyph sn-char="calendar" class="pad-right" />
<sn-day-ago date="kb_article.published"/>
</span>
<span ng-if="kb_article.rating">
<span class="pad-right">•</span> <uib-rating ng-model="::kb_article.rating" max="5" readonly="true"/>
</span>
</span>
</div>
</div>
</div><!-- ngIf -->
</div>
<div>
<button ng-click="getMore()" ng-if="data.items.length>=4">{{moreOrLess}}</button>
</div>
</div>
</div>
Server Script
// populate the 'data' variable
data.category = "387b2552ff0131009b20ffffffffffdf"
var kb_cat = new GlideRecord("kb_category");
data.categoryDisplay = gs.getMessage("Select a category");
data.items = [];
data.categoryExists = false;
gs.log("data"+kb_cat.get(data.category));
if (kb_cat.get(data.category)) {
data.categoryExists = true;
data.categoryDisplay = kb_cat.getDisplayValue();
data.items = $sp.getKBCategoryArticles(data.category);
}
data.kb_knowledge_page = $sp.getDisplayValue("kb_knowledge_page") || "kb_view";
data.breadcrumbs = [{label: data.categoryDisplay, url: '#'}];
var rec = kb_cat.parent_id.getRefRecord();
while (rec.getRecordClassName() == "kb_category") {
data.breadcrumbs.unshift({label: rec.getDisplayValue(), url: '?id=kb_category&kb_category=' + rec.getUniqueValue()});
rec = rec.parent_id.getRefRecord();
}
data.breadcrumbs.unshift({label: gs.getMessage("Knowledge Base"), url: '?id=' + data.kb_knowledge_page});
Client Controller
function ($scope, $rootScope) {
$scope.isMore=false;
$scope.moreOrLess='More..';
setInnerText();
$rootScope.$broadcast('sp.update.breadcrumbs', $scope.data.breadcrumbs);
function setInnerText() {
for (var i = 0; $scope.data.items.length > i; i++) {
var item = $scope.data.items[i];
if (item.text.indexOf(">") == -1) {
item.inner_text = item.text.trim();
return;
}
var t = $("<div>" + item.text + "</div>");
t = t.text();
item.inner_text = t.trim();
}
}
$scope.getMore=function()
{
$scope.isMore=!($scope.isMore);
if($scope.isMore)
{
$scope.moreOrLess='Less..'
}
else
{
$scope.moreOrLess='More..'
}
}
}
Knowledge article how on Service Portal with More and less button ServiceNow
Working Code Asked question July 7, 2023
Sorry, you do not have permission to read comments.