tbrosow
4/29/2016 - 6:18 AM

Fix Form sections and Home pages for iService

Fix Form sections and Home pages for iService

// FIX HOMEPAGES
var portalPageRec = new GlideRecord('sys_portal_page');
// portalPageRec.addEncodedQuery('sys_name=ITIL Homepage^sys_domain=d9d371ad84d2c90020a7674064f0011c');
portalPageRec.addEncodedQuery('sys_domain!=global');

portalPageRec.query();
while (portalPageRec.next()) {
    gs.print('Title: ' + portalPageRec.title + ': View: ' + portalPageRec.view.getDisplayValue() + ' Domain: ' + portalPageRec.sys_domain.getDisplayValue());

    var portalRec = new GlideRecord('sys_portal');
    portalRec.addQuery('page', portalPageRec.sys_id);
    // portalRec.addQuery('element', '!=', 'activity.xml');
    // portalRec.addNullQuery('sys_domain');
    portalRec.query();
    while (portalRec.next()) {
        gs.print('No domain for dropzone: ' + portalRec.dropzone + ': Offset' + portalRec.offset + ' Domain: ' + portalRec.sys_domain.getDisplayValue());
        portalRec.sys_domain = portalPageRec.sys_domain;
        portalRec.update();

        var portalPreferencesRec = new GlideRecord('sys_portal_preferences');
        portalPreferencesRec.addQuery('portal_section', portalRec.sys_id);
        portalPreferencesRec.query();
        while (portalPreferencesRec.next()) {
            portalPreferencesRec.sys_domain = portalPageRec.sys_domain;
            gs.print('No domain for portal pref: ' + portalPreferencesRec.name + ' Domain: ' + portalPreferencesRec.sys_domain.getDisplayValue());
            portalPreferencesRec.update();
        }
    }
}

// FIX FORM SECTIONS

var domains = ['Codan','Callista','eftpos','FrankstonToyota','GoldC','Grocon','Ideal','Intalock','Rexel HA','Yusen'];
var tables = ['task_sla'];

for (domain in domains) {
    var dr = new GlideRecord('u_domain');
    if (dr.get('name', domains[domain])) {
        for (table in tables) {
            gs.print('Domain: ' + dr.name + ' Table: ' + tables[table]);

            // Check if there is a form section for this table
            var fs = new GlideRecord('sys_ui_section');
            fs.addQuery('sys_domain', dr.sys_id);
            fs.addQuery('name', tables[table]);
            fs.addQuery('view.tile', 'Default view');
            fs.query();
            if (!fs.next()) {
                gs.print('No form section found');
                getGlobalFormSection(tables[table], dr.sys_id, dr.name);
            } else {
                gs.print('Form section found');
            }

        }
    }
}

function getGlobalFormSection(_table, _domain, _domainName) {

    var fs = new GlideRecord('sys_ui_section');
    fs.addQuery('sys_domain', 'global');
    fs.addQuery('name', _table);
    fs.addQuery('view.tile', 'Default view');
    fs.query();
    if (fs.next()) {
        gs.print('Global form section found');
        var newFS = new GlideRecord('sys_ui_section');
        newFS.newRecord();
        newFS.caption = fs.caption;
        newFS.header = fs.header;
        newFS.name = fs.name;
        newFS.roles = fs.roles;
        newFS.sys_domain = _domain;
        newFS.sys_user = fs.sys_user;
        newFS.title = fs.title;
        newFS.view = fs.view;
        newFS.view_name = fs.view_name;
        var id = newFS.insert();
        gs.print('Created form section for ' + _domainName);

        var fseRec = new GlideRecord('sys_ui_element');
        fseRec.addQuery('sys_ui_section', fs.sys_id);
        fseRec.query();
        while (fseRec.next()) {
        	var newfseRec = new GlideRecord('sys_ui_element');
        	newfseRec.newRecord();
        	newfseRec.element = fseRec.element;
        	newfseRec.position = fseRec.position;
        	newfseRec.sys_ui_formatter = fseRec.sys_ui_formatter;
        	newfseRec.sys_ui_section = id;
        	newfseRec.sys_user = fseRec.sys_user;
        	newfseRec.type = fseRec.type;
        	newfseRec.sys_domain = _domain;
        	newfseRec.insert();
        }

    }
}

// FIX EMPTY FORM SECTIONS (no fields)

var uiSectionRec = new GlideRecord('sys_ui_section');
// uiSectionRec.addEncodedQuery('caption=Closure details^name=incident^sys_domain=2afef8856870e4802e2ee30c674239e1');
uiSectionRec.addEncodedQuery('sys_domain!=global');

uiSectionRec.query();
while (uiSectionRec.next()) {
    gs.print('Table: ' + uiSectionRec.name + ': Caption' + uiSectionRec.caption + ' View: ' + uiSectionRec.view.getDisplayValue() + ' ' + uiSectionRec.sys_domain.getDisplayValue());

    var uiElementRec = new GlideRecord('sys_ui_element');
    uiElementRec.addQuery('sys_ui_section', uiSectionRec.sys_id);
    uiElementRec.addQuery('element', '!=', 'activity.xml');
    uiElementRec.addNullQuery('sys_domain');
    uiElementRec.query();
    while (uiElementRec.next()) {
        gs.print('No domain for element: ' + uiElementRec.element + ': ' + uiElementRec.position + ' Domain: ' + uiElementRec.sys_domain.getDisplayValue());
        uiElementRec.sys_domain = uiSectionRec.sys_domain;
        uiElementRec.update();
    }
}