Name
sn_tourbuilder.AJAXAppPageNames
Description
No description available
Script
var AJAXAppPageNames = Class.create();
AJAXAppPageNames.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
getAppPageNames: function() {
var pages = {
portals: [],
portalPages: [],
experiencePages: []
};
var elem = null;
// check if sp_page and sp_portal tables exist
var gr = new GlideRecord('sp_page');
if (gr.isValid()) {
gr.orderBy('title');
gr.query();
while (gr.next()) {
elem = {
title: GlideStringUtil.escapeHTML(gr.title.toString()),
id: GlideStringUtil.escapeHTML(gr.id.toString()),
sys_id: gr.sys_id.toString()
};
pages.portalPages.push(elem);
}
}
gr = new GlideRecord('sp_portal');
if (gr.isValid()) {
gr.orderBy('title');
gr.query();
while (gr.next()) {
elem = {
title: GlideStringUtil.escapeHTML(gr.title.toString()),
url_suffix: GlideStringUtil.escapeHTML(gr.url_suffix.toString()),
sys_id: gr.sys_id.toString()
};
pages.portals.push(elem);
}
}
gr = new GlideRecord('sys_ux_page_registry');
if (gr.isValid()) {
gr.addActiveQuery();
/* Fetching experiences on base of following conditions
*. parent_app='Unified Navigation app shell' OR App Shell UI='Workspace App Shell' OR 'Breadcrumb App Shell' OR 'ACE Unified Nav App Shell'
*/
gr.addEncodedQuery('parent_app=c86a62e2c7022010099a308dc7c26022^ORroot_macroponent=e341e22cc32e2010ea04a5a1d840dd02^ORroot_macroponent=c276387cc331101080d6d3658940ddd2^ORroot_macroponent=7045b717532d411033cdddeeff7b1275');
gr.addNotNullQuery('admin_panel');
gr.orderBy('title');
gr.query();
while (gr.next()) {
var ar = new GlideRecord('sys_ux_app_route');
ar.addActiveQuery();
ar.addQuery('app_config', gr.admin_panel);
ar.addQuery('parent_macroponent', gr.root_macroponent);
ar.query();
if (ar.isValid()) {
while (ar.next()) {
var page = {
pageName: ar.name.toString(),
title: gr.title.toString(),
sysId: gr.sys_id.toString(),
path: gr.path.toString(),
appConfig: ar.app_config.getDisplayValue(),
routeType: ar.route_type.toString(),
optionalParameters: ar.optional_parameters.toString(),
fields: ar.fields.toString(),
url: 'now/' + gr.path + '/' + ar.route_type,
};
pages.experiencePages.push(page);
}
}
}
}
var allPages = new global.JSON().encode(pages);
return allPages;
},
/**
* Return Application Page Names containing given search string
* Below API is used in REST API
*/
getPlatfromPageNames: function(option) {
var name = unescape(option.name.toString()).toLowerCase().trim(),
limit = option.limit,
offset = option.offset,
totalRecords,
data = [];
//skip Form, List, .do or _list.do from the search string.
var words = name.split(" ");
var nqs = "", // normalized query string
qs = "", // original query string.
all = false,
form = false,
endsWith = "",
list = false,
i;
if (words.length > 1) {
qs = nqs = name.trim();
endsWith = name.substr(name.lastIndexOf(" "), name.length).trim();
if ("list".indexOf(endsWith) === 0) {
nqs = name.substr(0, name.lastIndexOf(" "));
list = true;
} else if ("form".indexOf(endsWith) === 0) {
nqs = name.substr(0, name.lastIndexOf(" "));
form = true;
} else {
all = true;
}
} else if (words.length === 1 && words[0] !== "") {
qs = nqs = words[0].split(".")[0];
endsWith = qs.substr(qs.lastIndexOf("_"), qs.length).trim();
if ("_list".indexOf(endsWith) === 0) {
nqs = qs.substr(0, qs.lastIndexOf("_"));
list = true;
} else if (words[0].indexOf(".") > 0) {
form = true;
} else {
all = true;
}
} else {
qs = nqs = "";
all = true;
}
var gr = new GlideRecord('sys_db_object');
var qc;
if (all) {
qc = gr.addQuery('name', 'CONTAINS', qs);
qc.addOrCondition('name', 'CONTAINS', nqs);
qc.addOrCondition('label', 'CONTAINS', qs);
qc.addOrCondition('label', 'CONTAINS', nqs);
} else {
qc = gr.addQuery('name', qs);
qc.addOrCondition('name', nqs);
qc.addOrCondition('label', qs);
qc.addOrCondition('label', nqs);
}
gr.orderBy('name');
gr.chooseWindow(offset, offset + limit);
gr.query();
totalRecords = gr.getRowCount();
if ((offset == 0) && (form || all) && 'home page'.indexOf(qs) == 0) {
data.push({
name: "home.do",
label: "Home Page"
});
}
if (all) {
while (gr.next()) {
data.push({
name: gr.name.toString() + ".do",
label: gr.label.toString() + " Form"
});
data.push({
name: gr.name.toString() + "_list.do",
label: gr.label.toString() + " List"
});
}
} else if (form) {
while (gr.next()) {
data.push({
name: gr.name.toString() + ".do",
label: gr.label.toString() + " Form"
});
}
} else if (list) {
while (gr.next()) {
data.push({
name: gr.name.toString() + "_list.do",
label: gr.label.toString() + " List"
});
}
}
return {
data: data,
totalRecords: totalRecords
};
},
type: 'AJAXAppPageNames'
});
Sys ID
a52bf3f17f20320086ca74137ffa91b9