Widgets Explanation
						
					
					
				
			
		
	
			
	
	
	
	
	
Options
			
				
					
	
			
		
	- Mark as New
 - Bookmark
 - Subscribe
 - Mute
 - Subscribe to RSS Feed
 - Permalink
 - Report Inappropriate Content
 
12-23-2024 07:56 AM
Hi All,
Below are two widgets with the server script please clearly what is exact out put from this widgets.
1)Popular Item
data.sc_catalog = $sp.getValue('sc_catalogs') || $sp.getValue('sc_catalog');
data.showPrices = $sp.showCatalogPrices();
data.limit = options.limit || 4;
var items = [];
var item_sysid = gs.getProperty('RCO.popular_item');
var count = new GlideAggregate('sc_req_item');
count.addAggregate('COUNT','cat_item');
count.groupBy('cat_item');
count.addQuery('cat_item.sys_class_name', 'NOT IN', 'sc_cat_item_guide,sc_cat_item_wizard,sc_cat_item_content');
count.addQuery('cat_item.sc_catalogs', 'IN', data.sc_catalog);
count.addQuery('cat_item.visible_standalone','true');
count.addQuery('cat_item','!=',item_sysid);//Should not display 'Can't find the right Request?' in Popular requests
count.addEncodedQuery('cat_item.hide_sp=false^ORcat_item.hide_spISEMPTY');
count.orderByAggregate('COUNT', 'cat_item');
count.query();
while (count.next() && items.length < data.limit) {
  if (!$sp.canReadRecord("sc_cat_item", count.cat_item.sys_id.getDisplayValue()))
    continue; // user does not have permission to see this item
  var item = {};
  item.count = 0 - count.getAggregate('COUNT', 'cat_item');
  item.name = count.cat_item.name.getDisplayValue();
  item.short_description = count.cat_item.short_description.getDisplayValue();
  item.picture = count.cat_item.picture.getDisplayValue();
  item.price = count.cat_item.price.getDisplayValue();
  item.hasPrice = count.cat_item.price != 0;
  item.sys_id = count.cat_item.sys_id.getDisplayValue();
  items.push(item);
}
if (options.include_record_producers == 'true' || options.include_record_producers == true) {
    var producers = 0;
    count = new GlideAggregate('sc_item_produced_record');
    count.addQuery('producer.sc_catalogs', 'IN', data.sc_catalog);
    count.addQuery('producer.visible_standalone','true');
    count.addEncodedQuery('producer.hide_sp=false^ORproducer.hide_spISEMPTY');
    count.addAggregate('COUNT', 'producer');
    count.groupBy('producer');
    count.orderByAggregate('COUNT', 'producer');
    count.query();
    while (count.next() && producers < data.limit) {
        var catalogItemJS = new sn_sc.CatItem(count.getValue('producer'));
        if (!catalogItemJS.canView(gs.isMobile()) || !catalogItemJS.isVisibleServicePortal())
            continue;
        var catItemDetails = catalogItemJS.getItemSummary();
        var item = {};
        item.count = 0 - count.getAggregate('COUNT', 'producer');
        item.name = catItemDetails.name;
        item.short_description = catItemDetails.short_description;
        item.picture = catItemDetails.picture;
        item.price = catItemDetails.price;
        item.hasPrice = item.price != 0;
        item.sys_id = catItemDetails.sys_id;
        item.page = 'sc_cat_item';
        items.push(item);
        producers++;
    }
}
data.items = items;
2)KB Most Viewed
(function() {
    data.articles = [];
    options.title = options.title || gs.getMessage("Most Viewed Articles");
    var z;
    var knowledge_bases;
    var sys_id = $sp.getParameter('sys_id');
    var kb_id = $sp.getParameter('kb_id'); 
    if(sys_id != null ){  /* On the Article page, get KB of the article */
        var getKB = new GlideRecord("kb_knowledge");
        if(getKB.get($sp.getParameter('sys_id'))){ 
            data.knowledge_base_id = getKB.getValue('kb_knowledge_base');
            knowledge_bases = [data.knowledge_base_id];
        } else  /* return false for an invalid sys_id in URL */
             return false;  
    } else{ /* For all other pages this code will get executed. Used on knowledge home page.*/
        /*If KB is selected display most viewed articles only from that KB*/
        if(kb_id != null)
            knowledge_bases = String(kb_id);
        else {
             /*Get all knowledge bases associated with Portal*/
            knowledge_bases = String($sp.getKnowledgeBases());
        }
    }
    if (GlideStringUtil.notNil(knowledge_bases))
        z = $sp.getAllKBRecords(knowledge_bases);
    else //If there are no accessible KBs for logged in user
        return;
    z.addQuery("sys_view_count", ">", "0");
    if (options.kb_category)
        z.addQuery("kb_category", options.kb_category);
    z.orderByDesc('sys_view_count');
    z.setLimit(options.max_number || 5);
    z.query();
    while (z.next()) {
        if (!z.canRead())
            continue;
        var a = {};
        $sp.getRecordValues(a, z, 'short_description,sys_view_count,sys_id,published');
        data.articles.push(a);
    }
})();
Thank you
		1 REPLY 1
	
		
		
			
			
			
					
	
			Options
			
				
					
	
			
		
	- Mark as New
 - Bookmark
 - Subscribe
 - Mute
 - Subscribe to RSS Feed
 - Permalink
 - Report Inappropriate Content
 
12-23-2024 10:23 AM
Hi @Sirri ,
1. Popular Item Widget:
Displays the most-requested only 4 catalog items , excluding specific item types, with their name, short description, image, and price . Refer below link for more info.
2. KB Most Viewed Widget:
Lists most-viewed only 5 knowledge articles from the relevant knowledge bases, showing their short description and view count.
If my response helped, please mark it as the accepted solution ✅ and give a thumbs up👍.
Thanks,
Anand
