The extension is used to display the categories based on the domain if the user is not signed in to the website. Therefore only items under related categories will be displayed in the webstore.
// EXTENSION: ENTRY POINT
define(
'JJ.Categories.Categories',
[
"JJ.Categories.Categories.Model",
'JJ.Categories.Categories.View',
'Header.Menu.View',
'Profile.Model',
"Facets.FacetedNavigationItemCategory.View",
"Facets.Browse.View",
"jQuery",
"SC.Configuration", 'jj_categories_categories.tpl'
],
function(
CategoriesModel,
CategoriesView,
HeaderMenu,
ProfileModel,
FacetedNavigationItemCategoryView,
FacetsBrowseView,
jQuery,
Configuration, jj_categories_categories_tpl
) {
'use strict';
return {
mountToApp: function mountToApp(container) {
_.extend(HeaderMenu.prototype, {
initialize: function() {
const self = this;
this.application = this.options.application;
this.application.on('Configuration.navigationData', () => this.render());
var tests = Configuration.navigationData
var categoriesExt = new CategoriesModel();
categoriesExt.fetch().done(function() {
var environment = SC.ENVIRONMENT;
var baseurl = environment.currentHostString;
const value = JSON.parse(JSON.stringify(categoriesExt.attributes));
const thumb = value;
_.each(tests, function(line) {
_.each(line.categories, function(eachline) {
_.each(thumb, function(lines) {
if (eachline.text == lines.name) {
eachline.name = lines.custrecord_domain?lines.custrecord_domain.name:"";
eachline.urlfragment = lines.urlfragment
}
});
})
});
Configuration.navigationData = tests
self.render();
//hide from header menu
_.each(value, function(line) {
_.each(line, function(eachline) {
if (_.isArray(eachline))
_.each(eachline, function(eachline1) {
if (eachline1.name !== baseurl) {
$('#site-header .header-secondary-wrapper .header-menu-secondary-nav ul li[name ="/' + line.urlfragment + '"] a').hide();
$('#site-header .header-secondary-wrapper .header-menu-secondary-nav ul li[name ="/' + line.urlfragment + '"] ul li ul li a').parent().hide();
$('#site-header .header-secondary-wrapper .header-menu-secondary-nav ul li[name ="/' + line.urlfragment + '"] ul li ul li a').hide();
$('#site-header .header-secondary-wrapper .header-sidebar-wrapper .header-sidebar-menu-wrapper ul li[name ="/' + line.urlfragment + '"] a').hide();
$('#site-header .header-secondary-wrapper .header-sidebar-wrapper .header-sidebar-menu-wrapper ul li[name ="/' + line.urlfragment + '"] ul li a').hide();
$('#site-header .header-secondary-wrapper .header-sidebar-wrapper .header-sidebar-menu-wrapper ul li[name ="/' + line.urlfragment + '"] ul li ul li a').hide();
}
})
else if (_.isObject(eachline)) {
if (eachline.name !== baseurl) {
$('#site-header .header-secondary-wrapper .header-menu-secondary-nav ul li[name ="/' + line.urlfragment + '"] a').hide();
$('#site-header .header-secondary-wrapper .header-menu-secondary-nav ul li[name ="/' + line.urlfragment + '"] ul li ul li a').parent().hide();
$('#site-header .header-secondary-wrapper .header-menu-secondary-nav ul li[name ="/' + line.urlfragment + '"] ul li ul li a').hide();
$('#site-header .header-secondary-wrapper .header-sidebar-wrapper .header-sidebar-menu-wrapper ul li[name ="/' + line.urlfragment + '"] a').hide();
$('#site-header .header-secondary-wrapper .header-sidebar-wrapper .header-sidebar-menu-wrapper ul li[name ="/' + line.urlfragment + '"] ul li a').hide();
$('#site-header .header-secondary-wrapper .header-sidebar-wrapper .header-sidebar-menu-wrapper ul li[name ="/' + line.urlfragment + '"] ul li ul li a').hide();
}
}
})
});
});
ProfileModel.getPromise().done(function() {
self.render();
});
},
});
}
}
});
// JJ.Categories.Categories.js
define('JJ.Categories.Categories', [
'JJCategories.ServiceController', 'SC.Model',
'SC.Models.Init',
'Backbone.Validation',
'underscore'
], function(
CategoriesServiceController, SCModel,
ModelsInit,
BackboneValidation,
_
) {
'use strict';
return SCModel.extend({
get: function get() {
try {
var field = ModelsInit.customer.getFieldValues();
var productFeatures = [];
var searchFilters = [
["catalog", "anyof", "1"]
];
var searchColumns = [
new nlobjSearchColumn("name"),
new nlobjSearchColumn("primaryparent"),
new nlobjSearchColumn("pagetitle"),
new nlobjSearchColumn("urlfragment"),
new nlobjSearchColumn("custrecord_domain"),
]
var commercecategorySearch = Application.getAllSearchResults('commercecategory',searchFilters, searchColumns) || {};
var result = JSON.stringify(commercecategorySearch);
result = JSON.parse(result);
if (result.length > 0) {
_.each(result, function(eachResult) {
var featuredata = {};
featuredata.custrecord_domain = (eachResult.columns && eachResult.columns.custrecord_domain) || '';
featuredata.name = (eachResult.columns && eachResult.columns.name) || '';
featuredata.urlfragment = (eachResult.columns && eachResult.columns.urlfragment) || '';
productFeatures.push(featuredata);
});
}
return JSON.stringify(productFeatures);
} catch (e) {
return []
}
}
});
});
define("JJCategories.ServiceController", ["ServiceController",'JJ.Categories.Categories'], function(
ServiceController,CategoriesExt
) {
"use strict";
return ServiceController.extend({
name: "JJCategories.ServiceController",
// The values in this object are the validation needed for the current service.
options: {
common: {}
},
get: function get() {
try {
return CategoriesExt.get();
} catch (e) {
return JSON.stringify({
message: "Error"
});
};
},
post: function post() {
// not implemented
},
put: function put() {
// not implemented
},
delete: function() {
// not implemented
}
});
});