"use strict"; (function () { 'use strict'; angular.module('myitsmApp', ['ui.router', 'ui.map', 'ui.bootstrap', 'ui.bootstrap-custom', 'colorpicker.module', 'ngResource', 'ngCookies', 'ngSanitize', 'ngGrid', 'ngCkeditor', 'nvd3ChartDirectives', 'LocalStorageModule', 'securityModule', 'adminModule', 'userModule', 'feedModule', 'dashboardModule', 'chartModule', 'ticketModule', 'searchModule', 'i18nModule', 'l10nModule', 'resourceModule', 'serviceRequestModule', 'bmcSystemAlert', 'personModule', 'assetModule', 'createTicketModule', 'knowledgeArticleModule', 'knowledgeTeamModule', 'smartRecorderModule', 'graphModule', 'feedModule', 'templateModule', 'srdModule', 'locationModule', 'changeModule', 'releaseModule', 'headerNavigationModule', 'consoleModule', 'createProblemModule', 'mcsmModule', 'layoutConfigModule', 'customWidgetsModule', 'dibari.angular-ellipsis', 'pwa', 'innovationStudio', 'liveChatModule', 'calendarModule' ]).constant('DOCSLINK', { VERSION: 'Smart IT 22.1.06', CUSTOM_FIELDS: 'https://docs.bmc.com/docs/display/smartIT221/Adding+custom+fields+to+your+views+using+Smart+IT', EXPRESSION: 'https://docs.bmc.com/docs/display/smartIT221/Configuration+details+of+expression' }); angular.module('i18nModule', []); angular.module('l10nModule', []); angular.module('securityModule', []); angular.module('adminModule', ['ui.sortable']); angular.module('dashboardModule', []); angular.module('chartModule', []); angular.module('userModule', []); angular.module('feedModule', []); angular.module('ticketModule', []); angular.module('searchModule', []); angular.module('resourceModule', []); angular.module('serviceRequestModule', []); angular.module('personModule', []); angular.module('graphModule', []); angular.module('assetModule', []); angular.module('bmcSystemAlert', ['ui.bootstrap']); angular.module('createTicketModule', []); angular.module('knowledgeArticleModule', []); angular.module('knowledgeTeamModule', []); angular.module('smartRecorderModule', []); angular.module('feedModule', []); angular.module('templateModule', []); angular.module('srdModule', []); angular.module('locationModule', []); angular.module('changeModule', ['daypilot']); angular.module('releaseModule', []); angular.module('headerNavigationModule', []); angular.module('consoleModule', []); angular.module('createProblemModule', []); angular.module('mcsmModule', []); angular.module('layoutConfigModule', []); angular.module('customWidgetsModule', []); angular.module('pwa', []); angular.module('innovationStudio', []); angular.module('liveChatModule', []); angular.module('calendarModule', []); angular.module('myitsmApp') .config(['$stateProvider', '$qProvider', '$locationProvider', '$urlRouterProvider', 'roles', '$provide', '$logProvider', 'topicLoggerProvider', 'queryStringParser', function ($stateProvider, $qProvider, $locationProvider, $urlRouterProvider, roles, $provide, $logProvider, topicLoggerProvider, queryStringParser) { $qProvider.errorOnUnhandledRejections(false); $locationProvider.hashPrefix(''); // Toggling angular $log.debug messages based on query string parameter var queryString = window.location.search, queryParams; if (queryString.charAt(queryString.length - 1) === '/') { queryString = queryString.substring(0, queryString.length - 1); } queryParams = queryStringParser.parse(queryString); $logProvider.debugEnabled(queryParams.debug === '2'); if (queryParams.debug && queryParams.debugTopic) { queryParams.debugTopic.split(',').forEach(function (topic) { topicLoggerProvider.addTopic(topic); }, this); } // expose a provider to reach debugEnabled in $log $provide.value('$logProvider', $logProvider); $provide.value('topicLoggerProvider', topicLoggerProvider); $urlRouterProvider.otherwise('/'); function checkComAroundEnabled(metadataModel, $state, $rootScope) { return $rootScope.authPromise.then(function () { return metadataModel.getMetadataByType('global').then(function (metadata) { var isPwaEnabled = (metadata.configurationParameters['Enable-Progressive-Views'] === 'T' || metadata.configurationParameters['Enable-Progressive-Views'] === 'true'); isPwaEnabled = localStorage.getItem('overridePV') === 'T' ? false : isPwaEnabled; if (metadata.comaroundEnabled === true && isPwaEnabled && localStorage.getItem('midtierUrl')) { $state.go('dashboard', {}, { location: 'replace' }); } else { console.info('Either Comaround or PV not enabled or invalid midtierUrl'); } }).catch(function (error) { console.info(error.data.error); }); }).finally(function () { $rootScope.authPromise = null; }); } function navigateToMobileLandingPage(browser, $state, authModel, $q) { if (browser.isMobile) { if (!$rootScope.authPromise) { $rootScope.authPromise = authModel.isAuthenticated() ? $q.when(1) : authModel.checkSessionStatus(); } $rootScope.authPromise.then(function () { if (authModel.isAuthenticated()) { $state.go('ticketConsole', {}, { location: 'replace' }); } }); } } $stateProvider .state('unauthorized', { url: '/unauthorized', templateUrl: 'views/unauthorized.html', access: [], controller: ['$scope', 'permissionModel', function ($scope, permissionModel) { $scope.isAdminOnlyPersona = permissionModel.hasAdminOnlyRole(); }] }) .state('dashboard', { url: '^/', templateUrl: 'views/dashboard/index.html', controller: 'DashboardController', data: { pageTitle: 'header.navigation.dashboard' }, access: [roles.ITSM_AGENT_ROLE, roles.ITSM_CHANGE_USER_ROLE, roles.ITSM_KNOWLEDGE_USER_ROLE, roles.ITSM_PROBLEM_USER_ROLE, roles.ITSM_ASSET_USER_ROLE], resolve: { isMobileDevice: ['browser', '$state', 'authModel', '$q', navigateToMobileLandingPage] } }) .state('calendar', { url: '/calendar', controller: 'CalendarController', template: '
' + '' + '

{{"error" | i18n}}

{{"error.unauthorized" | i18n}}

{{"error.click.return.home"|i18n}}
', data: { pageTitle: 'header.navigation.calendar' }, access: [roles.ITSM_CHANGE_USER_ROLE, roles.ITSM_RELEASE_USER_ROLE, roles.ITSM_AGENT_ROLE, roles.ITSM_PROBLEM_USER_ROLE, roles.ITSM_ASSET_USER_ROLE] }) .state('ticketConsole', { url: '/ticket-console', template: '', params: { refreshMetadata: false }, data: { pageTitle: 'header.navigation.ticketConsole' }, access: [roles.ITSM_AGENT_ROLE, roles.ITSM_CHANGE_USER_ROLE, roles.ITSM_PROBLEM_USER_ROLE] }) .state('knowledgeConsole', { url: '/knowledge-console', template: '', access: [roles.ITSM_KNOWLEDGE_USER_ROLE], data: { pageTitle: 'header.navigation.knowledgeConsole' }, resolve: { comaroundEnable: ['metadataModel', '$state', '$rootScope', checkComAroundEnabled] } }) .state('assetConsole', { url: '/asset-console', template: '', access: [roles.ITSM_ASSET_USER_ROLE], data: { pageTitle: 'header.navigation.assetConsole' } }) .state('knowledge', { url: '/knowledge/:id', templateUrl: 'views/knowledge-article/knowledge-article-profile.html', controller: 'KnowledgeArticleProfileController', params: { id: null, editMode: false, content: null, preventIncrement: null, assessMode: false }, data: { pageTitle: 'header.navigation.knowledge' }, access: [roles.ITSM_AGENT_ROLE, roles.ITSM_CHANGE_USER_ROLE, roles.ITSM_KNOWLEDGE_USER_ROLE, roles.ITSM_PROBLEM_USER_ROLE, roles.ITSM_ASSET_USER_ROLE], resolve: { comaroundEnable: ['metadataModel', '$state', '$rootScope', checkComAroundEnabled] } }) .state('knowledgeLatest', { url: '/knowledge/:version/:id', templateUrl: 'views/knowledge-article/knowledge-article-profile.html', controller: 'KnowledgeArticleProfileController', access: [roles.ITSM_AGENT_ROLE, roles.ITSM_CHANGE_USER_ROLE, roles.ITSM_KNOWLEDGE_USER_ROLE, roles.ITSM_PROBLEM_USER_ROLE, roles.ITSM_ASSET_USER_ROLE], data: { pageTitle: 'header.navigation.knowledge' }, resolve: { comaroundEnable: ['metadataModel', '$state', '$rootScope', checkComAroundEnabled] } }) .state('knowledgeNewTab', { url: '/knowledge-new-tab/:id?preventIncrement', template: '', controller: 'KnowledgeNewTabController', access: [roles.ITSM_AGENT_ROLE, roles.ITSM_CHANGE_USER_ROLE, roles.ITSM_KNOWLEDGE_USER_ROLE, roles.ITSM_PROBLEM_USER_ROLE, roles.ITSM_ASSET_USER_ROLE], data: { pageTitle: 'header.navigation.knowledge' }, resolve: { comaroundEnable: ['metadataModel', '$state', '$rootScope', checkComAroundEnabled] } }) .state('search', { url: '/search/{searchText:.*}', templateUrl: 'views/search/search-content.html', controller: 'SearchController', params: { searchCriteria: null, isNewSearch: null }, access: [roles.ITSM_AGENT_ROLE, roles.ITSM_CHANGE_USER_ROLE, roles.ITSM_KNOWLEDGE_USER_ROLE, roles.ITSM_PROBLEM_USER_ROLE, roles.ITSM_ASSET_USER_ROLE], data: { pageTitle: 'common.placeholder.search' } }) .state('search.task', { template: '
', access: [] }) .state('search.taskPV', { params: { guid: null, displayId: null }, controller: 'PwaTicketController', templateProvider: ['$stateParams', '$state', function ($stateParams, $state) { var midtierUrl = localStorage.getItem('midtierUrl'), homeServer = localStorage.getItem('homeServer'), guid = $stateParams.guid, context = 'Task', formView = 'SV_View'; if (midtierUrl) { var formSrc; if (homeServer) { formSrc = midtierUrl + '/pwa/#/forms/' + homeServer + '/' + 'SHR:SV_TicketDisplay/SV_TicketDisplay' + '?origin=' + window.location.origin + '&targetForm=' + context + '&targetView=' + formView + '&targetId=' + guid + '&mode=GET&context=PREVIEW'; } else { formSrc = midtierUrl + '/pwa/#/goto/SHR:SV_TicketDisplay/SV_TicketDisplay' + '?origin=' + window.location.origin + '&targetForm=' + context + '&targetView=' + formView + '&targetId=' + guid + '&mode=GET&context=PREVIEW'; } return '
' + '' + '

{{"error" | i18n}}

{{"error.unauthorized" | i18n}}

{{"error.click.return.home"|i18n}}
'; } }], access: [] }) .state('search.knowledge', { template: '
', access: [] }) .state('search.asset', { template: '
', access: [] }) .state('search.assetPV', { params: { guid: null, displayId: null }, controller: 'PwaTicketController', templateProvider: ['$stateParams', '$state', function ($stateParams, $state) { var midtierUrl = localStorage.getItem('midtierUrl'), homeServer = localStorage.getItem('homeServer'), guid = $stateParams.guid, context = 'Configuration Item', formView = 'SV_View'; if (midtierUrl) { var formSrc; if (homeServer) { formSrc = midtierUrl + '/pwa/#/forms/' + homeServer + '/' + 'SHR:SV_TicketDisplay/SV_TicketDisplay' + '?origin=' + window.location.origin + '&targetForm=' + context + '&targetView=' + formView + '&targetId=' + guid + '&mode=GET&context=PREVIEW'; } else { formSrc = midtierUrl + '/pwa/#/goto/SHR:SV_TicketDisplay/SV_TicketDisplay' + '?origin=' + window.location.origin + '&targetForm=' + context + '&targetView=' + formView + '&targetId=' + guid + '&mode=GET&context=PREVIEW'; } return '
' + '' + '

{{"error" | i18n}}

{{"error.unauthorized" | i18n}}

{{"error.click.return.home"|i18n}}
'; } }], access: [] }) .state('search.person', { template: '
', access: [] }) .state('search.personPV', { access: [], controller: 'PwaTicketController', params: { guid: null, displayId: null }, templateProvider: ['$stateParams', '$state', function ($stateParams, $state) { var midtierUrl = localStorage.getItem('midtierUrl'), homeServer = localStorage.getItem('homeServer'), guid = $stateParams.guid, context = 'People', formView = 'SV_View'; if (midtierUrl) { var formSrc; if (homeServer) { formSrc = midtierUrl + '/pwa/#/forms/' + homeServer + '/' + 'SHR:SV_TicketDisplay/SV_TicketDisplay' + '?origin=' + window.location.origin + '&targetForm=' + context + '&targetView=' + formView + '&targetId=' + guid + '&mode=GET&context=PREVIEW'; } else { formSrc = midtierUrl + '/pwa/#/goto/SHR:SV_TicketDisplay/SV_TicketDisplay' + '?origin=' + window.location.origin + '&targetForm=' + context + '&targetView=' + formView + '&targetId=' + guid + '&mode=GET&context=PREVIEW'; } return '
' + '' + '

{{"error" | i18n}}

{{"error.unauthorized" | i18n}}

{{"error.click.return.home"|i18n}}
'; } }] }) .state('search.workorder', { template: '
', access: [] }) .state('search.workorderPV', { params: { guid: null, displayId: null }, controller: 'PwaTicketController', templateProvider: ['$stateParams', '$state', function ($stateParams, $state) { var midtierUrl = localStorage.getItem('midtierUrl'), homeServer = localStorage.getItem('homeServer'), guid = $stateParams.guid, context = 'Work Order', formView = 'SV_View'; if (midtierUrl) { var formSrc; if (homeServer) { formSrc = midtierUrl + '/pwa/#/forms/' + homeServer + '/' + 'SHR:SV_TicketDisplay/SV_TicketDisplay' + '?origin=' + window.location.origin + '&targetForm=' + context + '&targetView=' + formView + '&targetId=' + guid + '&mode=GET&context=PREVIEW'; } else { formSrc = midtierUrl + '/pwa/#/goto/SHR:SV_TicketDisplay/SV_TicketDisplay' + '?origin=' + window.location.origin + '&targetForm=' + context + '&targetView=' + formView + '&targetId=' + guid + '&mode=GET&context=PREVIEW'; } return '
' + '' + '

{{"error" | i18n}}

{{"error.unauthorized" | i18n}}

{{"error.click.return.home"|i18n}}
'; } }], access: [] }) .state('search.incidentPV', { params: { guid: null, displayId: null }, controller: 'PwaTicketController', templateProvider: ['$stateParams', '$state', function ($stateParams, $state) { var midtierUrl = localStorage.getItem('midtierUrl'), homeServer = localStorage.getItem('homeServer'), guid = $stateParams.guid, context = 'Incident', formView = 'SV_View'; if (midtierUrl) { var formSrc; if (homeServer) { formSrc = midtierUrl + '/pwa/#/forms/' + homeServer + '/' + 'SHR:SV_TicketDisplay/SV_TicketDisplay' + '?origin=' + window.location.origin + '&targetForm=' + context + '&targetView=' + formView + '&targetId=' + guid + '&mode=GET&context=PREVIEW'; } else { formSrc = midtierUrl + '/pwa/#/goto/SHR:SV_TicketDisplay/SV_TicketDisplay' + '?origin=' + window.location.origin + '&targetForm=' + context + '&targetView=' + formView + '&targetId=' + guid + '&mode=GET&context=PREVIEW'; } return '
' + '' + '

{{"error" | i18n}}

{{"error.unauthorized" | i18n}}

{{"error.click.return.home"|i18n}}
'; } }], access: [] }) .state('search.changePV', { params: { guid: null, displayId: null }, controller: 'PwaTicketController', templateProvider: ['$stateParams', '$state', function ($stateParams, $state) { var midtierUrl = localStorage.getItem('midtierUrl'), homeServer = localStorage.getItem('homeServer'), guid = $stateParams.guid, context = 'Infrastructure Change', formView = 'SV_View'; if (midtierUrl) { var formSrc; if (homeServer) { formSrc = midtierUrl + '/pwa/#/forms/' + homeServer + '/' + 'SHR:SV_TicketDisplay/SV_TicketDisplay' + '?origin=' + window.location.origin + '&targetForm=' + context + '&targetView=' + formView + '&targetId=' + guid + '&mode=GET&context=PREVIEW'; } else { formSrc = midtierUrl + '/pwa/#/goto/SHR:SV_TicketDisplay/SV_TicketDisplay' + '?origin=' + window.location.origin + '&targetForm=' + context + '&targetView=' + formView + '&targetId=' + guid + '&mode=GET&context=PREVIEW'; } return '
' + '' + '

{{"error" | i18n}}

{{"error.unauthorized" | i18n}}

{{"error.click.return.home"|i18n}}
'; } }], access: [] }) .state('search.request', { template: '
', access: [] }) .state('search.sberequest', { template: '
', access: [] }) .state('search.incident', { template: '
', access: [] }) .state('search.change', { template: '
', access: [] }) .state('search.release', { template: '
', access: [] }) .state('search.activity', { template: '
', access: [] }) .state('search.problem', { template: '
', access: [] }) .state('search.problemPV', { params: { guid: null, displayId: null }, controller: 'PwaTicketController', templateProvider: ['$stateParams', '$state', function ($stateParams, $state) { var midtierUrl = localStorage.getItem('midtierUrl'), homeServer = localStorage.getItem('homeServer'), guid = $stateParams.guid, context = 'Problem Investigation', formView = 'SV_View'; if (midtierUrl) { var formSrc; if (homeServer) { formSrc = midtierUrl + '/pwa/#/forms/' + homeServer + '/' + 'SHR:SV_TicketDisplay/SV_TicketDisplay' + '?origin=' + window.location.origin + '&targetForm=' + context + '&targetView=' + formView + '&targetId=' + guid + '&mode=GET&context=PREVIEW'; } else { formSrc = midtierUrl + '/pwa/#/goto/SHR:SV_TicketDisplay/SV_TicketDisplay' + '?origin=' + window.location.origin + '&targetForm=' + context + '&targetView=' + formView + '&targetId=' + guid + '&mode=GET&context=PREVIEW'; } return '
' + '' + '

{{"error" | i18n}}

{{"error.unauthorized" | i18n}}

{{"error.click.return.home"|i18n}}
'; } }], access: [] }) .state('search.knownerror', { template: '
', access: [] }) .state('search.knownerrorPV', { access: [], params: { guid: null, displayId: null }, controller: 'PwaTicketController', templateProvider: ['$stateParams', '$state', function ($stateParams, $state) { var midtierUrl = localStorage.getItem('midtierUrl'), homeServer = localStorage.getItem('homeServer'), guid = $stateParams.guid, context = 'Known Error', formName = 'SHR:SV_TicketDisplay/SV_TicketDisplay', formView = 'SV_View'; if (midtierUrl) { var formSrc; if (homeServer) { formSrc = midtierUrl + '/pwa/#/forms/' + homeServer + '/' + formName + '?origin=' + window.location.origin + '&targetForm=' + context + '&targetView=' + formView + '&targetId=' + guid + '&mode=GET&context=PREVIEW'; } else { formSrc = midtierUrl + '/pwa/#/goto/' + formName + '?origin=' + window.location.origin + '&targetForm=' + context + '&targetView=' + formView + '&targetId=' + guid + '&mode=GET&context=PREVIEW'; } return '
' + '' + '

{{"error" | i18n}}

{{"error.unauthorized" | i18n}}

{{"error.click.return.home"|i18n}}
'; } }], }) .state('person', { url: '/person/{id:.*}', templateUrl: 'views/person/person-profile.html', controller: 'PersonProfileController', data: { pageTitle: 'customization.screen.personDetailsScreen' }, access: [roles.ITSM_AGENT_ROLE, roles.ITSM_CHANGE_USER_ROLE, roles.ITSM_KNOWLEDGE_USER_ROLE, roles.ITSM_PROBLEM_USER_ROLE, roles.ITSM_ASSET_USER_ROLE], resolve: { PVEnable: ['metadataModel', '$state', '$stateParams', function (metadataModel, $state, $stateParams) { return metadataModel.getMetadataByType('global').then(function (metadata) { var isPwaEnabled = (metadata.configurationParameters['Enable-Progressive-Views'] === 'T' || metadata.configurationParameters['Enable-Progressive-Views'] === 'true'); isPwaEnabled = localStorage.getItem('overridePV') === 'T' ? false : isPwaEnabled; if (isPwaEnabled && localStorage.getItem('midtierUrl')) { $state.go('personPV', { id: $stateParams.id }, { location: 'replace' }); } else { console.info('Either PV not enabled or invalid midtierUrl'); } }).catch(function (error) { console.info(error.data.error); }); }] } }) .state('personPV', { url: '/personPV/:id', controller: 'PwaTicketController', data: { pageTitle: 'customization.screen.personDetailsScreen', formName: 'SHR:SV_TicketDisplay/SV_TicketDisplay', targetForm: 'People', targetView: 'SV_View', mode: 'GET' }, access: [roles.ITSM_AGENT_ROLE, roles.ITSM_CHANGE_USER_ROLE, roles.ITSM_KNOWLEDGE_USER_ROLE, roles.ITSM_PROBLEM_USER_ROLE, roles.ITSM_ASSET_USER_ROLE] }) .state('asset', { url: '/asset/:assetId/:assetClassId', templateUrl: 'views/asset/asset-profile.html', controller: 'AssetProfileController', data: { history: { type: 'assets', label: 'asset' }, pageTitle: 'header.navigation.asset' }, access: [roles.ITSM_AGENT_ROLE, roles.ITSM_ADMIN_ROLE, roles.ITSM_CHANGE_USER_ROLE, roles.ITSM_KNOWLEDGE_USER_ROLE, roles.ITSM_PROBLEM_USER_ROLE, roles.ITSM_ASSET_USER_ROLE] }) .state('assetPV', { url: '/assetPV/:assetId/:assetClassId', controller: 'PwaTicketController', data: { history: { type: 'assets', label: 'asset' }, pageTitle: 'header.navigation.asset', formName: 'SHR:SV_TicketDisplay/SV_TicketDisplay', targetForm: 'Configuration Item', targetView: 'SV_View', mode: 'GET' }, access: [roles.ITSM_AGENT_ROLE, roles.ITSM_ADMIN_ROLE, roles.ITSM_CHANGE_USER_ROLE, roles.ITSM_KNOWLEDGE_USER_ROLE, roles.ITSM_PROBLEM_USER_ROLE, roles.ITSM_ASSET_USER_ROLE] }) .state('editAssetPV', { url: '/edit/assetPV/:assetId/:assetClassId', controller: 'PwaTicketController', data: { history: { type: 'assets', label: 'asset' }, pageTitle: 'header.navigation.asset', formName: 'SHR:SV_TicketDisplay/SV_TicketDisplay', targetForm: 'Configuration Item', targetView: 'SV_Edit', mode: 'GET' }, params: { context: 'ASSETCONSOLE' }, access: [roles.ITSM_AGENT_ROLE, roles.ITSM_ADMIN_ROLE, roles.ITSM_CHANGE_USER_ROLE, roles.ITSM_KNOWLEDGE_USER_ROLE, roles.ITSM_PROBLEM_USER_ROLE, roles.ITSM_ASSET_USER_ROLE] }) .state('assetCiExplorer', { abstract: true, url: '/asset/:assetId/:assetClassId', templateUrl: 'views/asset/ci-explorer.html', controller: 'AssetController', access: [roles.ITSM_AGENT_ROLE, roles.ITSM_CHANGE_USER_ROLE, roles.ITSM_KNOWLEDGE_USER_ROLE, roles.ITSM_PROBLEM_USER_ROLE, roles.ITSM_ASSET_USER_ROLE], data: { pageTitle: 'header.navigation.asset' } }) .state('assetCiExplorer.list', { url: '/list-ci', templateUrl: 'views/asset/list-ci-explorer.html', controller: 'AssetListCiExplorerController', access: [roles.ITSM_AGENT_ROLE, roles.ITSM_CHANGE_USER_ROLE, roles.ITSM_KNOWLEDGE_USER_ROLE, roles.ITSM_PROBLEM_USER_ROLE, roles.ITSM_ASSET_USER_ROLE], data: { pageTitle: 'asset.relationship.list-explorer' } }) .state('assetCiExplorer.graphical', { url: '/graphical-ci', templateUrl: 'views/asset/graphical-ci-explorer.html', controller: 'AssetGraphicalCiExplorerController', access: [roles.ITSM_AGENT_ROLE, roles.ITSM_CHANGE_USER_ROLE, roles.ITSM_KNOWLEDGE_USER_ROLE, roles.ITSM_PROBLEM_USER_ROLE, roles.ITSM_ASSET_USER_ROLE], data: { pageTitle: 'asset.relationship.graphical-explorer' } }) .state('createIncident', { url: '/create/incident', templateUrl: 'views/create/create-incident-v2.html', controller: 'CreateIncidentV2Controller', access: [roles.ITSM_AGENT_ROLE], data: { pageTitle: 'create.incident.header' } }) .state('createIncidentPV', { url: '/create/incidentPV', controller: 'PwaTicketController', data: { pageTitle: 'create.incident.header', formName: 'SHR:SV_TicketCreate/SV_TicketCreate', targetForm: 'Incident', targetView: 'SV_Create', mode: 'CREATE' }, access: [roles.ITSM_AGENT_ROLE] }).state('pwaAction', { url: '/pwa-action', controller: 'PwaActionController', data: { pageTitle: 'common.label.actions' }, params: { data: null }, access: [roles.ITSM_AGENT_ROLE] }) .state('createKnowledge', { url: '/create/knowledge', templateUrl: 'views/create/create-ka.html', controller: 'CreateKnowledgeArticleController', access: [roles.ITSM_KNOWLEDGE_USER_ROLE], data: { pageTitle: 'create.knowledge.header' }, resolve: { comaroundEnable: ['metadataModel', '$state', '$rootScope', checkComAroundEnabled] } }) .state('createAqiQuestions', { url: '/create/aqiQuestions', templateUrl: 'views/create/aqi-question-sets.html', controller: 'createAqiController', access: [roles.ITSM_KCS_COACH_ROLE], data: { pageTitle: 'create.aqi.questionSets.header' }, resolve: { comaroundEnable: ['metadataModel', '$state', '$rootScope', checkComAroundEnabled] } }) .state('changeCalendar', { url: '/changeCalendar/:defaultData', template: '', controller: 'ChangeCalendarController', access: [roles.ITSM_CHANGE_USER_ROLE], data: { pageTitle: 'create.change.header' } }) .state('changeCalendar.book', { url: '', access: [roles.ITSM_CHANGE_USER_ROLE], template: '', data: { pageTitle: 'create.change.header' } }) .state('changeCalendar.day', { url: '', access: [roles.ITSM_CHANGE_USER_ROLE], template: '', data: { pageTitle: 'create.change.header' } }) .state('changeCalendar.week', { url: '', access: [roles.ITSM_CHANGE_USER_ROLE], template: '', data: { pageTitle: 'create.change.header' } }) .state('changeCalendar.month', { url: '', access: [roles.ITSM_CHANGE_USER_ROLE], template: '', data: { pageTitle: 'create.change.header' } }) .state('createChange', { url: '/create/change', template: '', controller: 'CreateChangeV2Controller', params: { fromRelated: false, crossLaunchContext: "" }, access: [roles.ITSM_CHANGE_USER_ROLE], data: { pageTitle: 'create.change.header' }, resolve: { PVEnable: ['metadataModel', '$state', '$stateParams', function (metadataModel, $state, $stateParams) { metadataModel.getMetadataByType('global').then(function (metadata) { var isPwaEnabled = (metadata.configurationParameters['Enable-Progressive-Views'] === 'T' || metadata.configurationParameters['Enable-Progressive-Views'] === 'true'); isPwaEnabled = localStorage.getItem('overridePV') === 'T' ? false : isPwaEnabled; if (isPwaEnabled && localStorage.getItem('midtierUrl')) { if ($stateParams.fromRelated) { $state.go('pwaDraftChange', $stateParams); } else { $state.go('createChangePV'); } } else { console.info('Either PV not enabled or invalid midtierUrl'); } }).catch(function (error) { console.info(error.data.error); }); }] } }) .state('createChangePV', { url: '/create/changePV', controller: 'PwaTicketController', data: { pageTitle: 'create.change.header', formName: 'SHR:SV_TicketCreate/SV_TicketCreate', targetForm: 'Infrastructure Change', targetView: 'SV_Create', mode: 'CREATE' }, access: [roles.ITSM_CHANGE_USER_ROLE] }) .state('createChange.selector', { url: '/', templateUrl: 'views/change/create-change-selector.html', access: [roles.ITSM_CHANGE_USER_ROLE], data: { pageTitle: 'create.change.header' } }) .state('createChange.wizard', { url: '/', template: '', access: [roles.ITSM_CHANGE_USER_ROLE], data: { pageTitle: 'create.change.header' } }) .state('createChange.wizard.calendar', { url: '', access: [roles.ITSM_CHANGE_USER_ROLE], template: '', data: { pageTitle: 'create.change.header' } }) .state('createChange.wizard.calendar.book', { url: '', access: [roles.ITSM_CHANGE_USER_ROLE], template: '', data: { pageTitle: 'create.change.header' } }) .state('createChange.wizard.calendar.day', { url: '', access: [roles.ITSM_CHANGE_USER_ROLE], template: '', data: { pageTitle: 'create.change.header' } }) .state('createChange.wizard.calendar.week', { url: '', access: [roles.ITSM_CHANGE_USER_ROLE], template: '', data: { pageTitle: 'create.change.header' } }) .state('createChange.wizard.calendar.month', { url: '', access: [roles.ITSM_CHANGE_USER_ROLE], template: '', data: { pageTitle: 'create.change.header' } }) .state('changeEditCollisions', { url: '/change/:id/collisions', templateUrl: 'views/change/edit-dates.html', controller: 'EditDatesController', data: { editMode: true, pageTitle: 'create.change.header' }, access: [roles.ITSM_CHANGE_USER_ROLE] }) .state('changeEditCollisions.calendar', { url: '', access: [roles.ITSM_CHANGE_USER_ROLE], template: '', data: { pageTitle: 'create.change.header' } }) .state('changeEditCollisions.calendar.book', { url: '', template: '', access: [roles.ITSM_CHANGE_USER_ROLE], data: { pageTitle: 'create.change.header' } }) .state('changeEditCollisions.calendar.day', { url: '', template: '', access: [roles.ITSM_CHANGE_USER_ROLE], data: { pageTitle: 'create.change.header' } }) .state('changeEditCollisions.calendar.week', { url: '', template: '', access: [roles.ITSM_CHANGE_USER_ROLE], data: { pageTitle: 'create.change.header' } }) .state('changeEditCollisions.calendar.month', { url: '', template: '', access: [roles.ITSM_CHANGE_USER_ROLE], data: { pageTitle: 'create.change.header' } }) .state('changeEditDates', { url: '/change/:id/dates', templateUrl: 'views/change/edit-dates.html', controller: 'EditDatesController', data: { editMode: false, pageTitle: 'create.change.header' }, access: [roles.ITSM_CHANGE_USER_ROLE], }) .state('changeEditDates.calendar', { url: '', access: [roles.ITSM_CHANGE_USER_ROLE], template: '', data: { pageTitle: 'create.change.header' } }) .state('changeEditDates.calendar.book', { url: '', template: '', access: [roles.ITSM_CHANGE_USER_ROLE], data: { pageTitle: 'create.change.header' } }) .state('changeEditDates.calendar.day', { url: '', template: '', access: [roles.ITSM_CHANGE_USER_ROLE], data: { pageTitle: 'create.change.header' } }) .state('changeEditDates.calendar.week', { url: '', template: '', access: [roles.ITSM_CHANGE_USER_ROLE], data: { pageTitle: 'create.change.header' } }) .state('changeEditDates.calendar.month', { url: '', template: '', access: [roles.ITSM_CHANGE_USER_ROLE], data: { pageTitle: 'create.change.header' } }) .state('impactGraph', { url: '/:type/:id/impactGraph', templateUrl: 'views/change/impact-simulator.html', controller: 'ImpactAnalysisController', params: { id: null, type: null, displayId: null }, access: [roles.ITSM_CHANGE_USER_ROLE], data: { pageTitle: 'create.change.header' } }) .state('createRelease', { url: '/create/release', template: '', controller: 'CreateReleaseController', access: [roles.ITSM_RELEASE_USER_ROLE], data: { pageTitle: 'create.release.header' } }) .state('createRelease.selector', { url: '/', templateUrl: 'views/release/create-release-selector.html', access: [roles.ITSM_RELEASE_USER_ROLE], data: { pageTitle: 'create.release.header' } }) .state('createRelease.wizard', { url: '/', template: '', access: [roles.ITSM_RELEASE_USER_ROLE], data: { pageTitle: 'create.release.header' } }) .state('createActivity', { url: '/create/activity', templateUrl: 'views/create/create-activity.html', controller: 'CreateActivityController', access: [roles.ITSM_RELEASE_USER_ROLE], data: { pageTitle: 'create.release.releasePlan.createActivity' } }) .state('smartRecorder', { url: '/create/smart-recorder?customer&contact&desc', templateUrl: 'views/smart-recorder/smart-recorder.html', controller: 'SmartRecorderController', data: { pageTitle: 'globalNav.smartRecorder' }, access: [roles.ITSM_AGENT_ROLE] }) .state('screenConfiguration', { url: '/admin/screen-configuration', templateUrl: 'views/admin/screen-configuration/screen-configuration.html', controller: 'ScreenConfigurationController', access: [roles.ITSM_ADMIN_ROLE], data: { pageTitle: 'header.navigation.screenConfiguration' } }) .state('adminConsoleConfig', { url: '/admin/admin-console-configuration', templateUrl: 'views/admin/console-config/admin-console-configuration.html', controller: 'AdminConsoleConfigurationController', access: [roles.ITSM_ADMIN_ROLE], data: { pageTitle: 'header.navigation.adminConsoleConfig' } }) .state('knowledgeStyleConfiguration', { url: '/admin/knowledge-style-configuration', templateUrl: 'views/admin/knowledge-style-configuration/knowledge-style-config.html', controller: 'KnowledgeStyleConfigController', access: [roles.ITSM_ADMIN_ROLE], data: { pageTitle: 'header.navigation.knowledgeTemplateStyles' }, resolve: { comaroundEnable: ['metadataModel', '$state', '$rootScope', checkComAroundEnabled] } }) .state('knowledgeTeam', { url: '/knowledgeTeam', templateUrl: 'views/knowledge-team/knowledge-team-profile.html', controller: 'KnowledgeTeamController', access: [roles.ITSM_KCS_COACH_ROLE], data: { pageTitle: 'header.navigation.knowledge' }, resolve: { comaroundEnable: ['metadataModel', '$state', '$rootScope', checkComAroundEnabled] } }) .state('createTask', { url: '/create/task', templateUrl: 'views/create/create-task-v2.html', controller: 'CreateTaskV2Controller', access: [roles.ITSM_AGENT_ROLE, roles.ITSM_CHANGE_USER_ROLE, roles.ITSM_PROBLEM_USER_ROLE], data: { pageTitle: 'create.task.header' } }) .state('createTaskPV', { url: '/create/taskPV', controller: 'PwaTicketController', access: [roles.ITSM_AGENT_ROLE, roles.ITSM_CHANGE_USER_ROLE, roles.ITSM_PROBLEM_USER_ROLE], data: { pageTitle: 'create.task.header' }, templateProvider: ['$stateParams', '$state', function ($stateParams, $state) { var midtierUrl = localStorage.getItem('midtierUrl'), homeServer = localStorage.getItem('homeServer'), context = 'Task', formView = 'SV_Create'; if (midtierUrl) { var formSrc; if (homeServer) { formSrc = midtierUrl + '/pwa/#/forms/' + homeServer + '/' + 'SHR:SV_TicketCreate/SV_TicketCreate' + '?origin=' + window.location.origin + '&targetForm=' + context + '&targetView=' + formView + '&mode=GET'; } else { formSrc = midtierUrl + '/pwa/#/goto/SHR:SV_TicketCreate/SV_TicketCreate' + '?origin=' + window.location.origin + '&targetForm=' + context + '&targetView=' + formView + '&mode=GET'; } return '
' + '' + '

{{"error" | i18n}}

{{"error.unauthorized" | i18n}}

{{"error.click.return.home"|i18n}}
'; } else { $state.go('createTask'); } }] }) .state('draftIncident', { url: '/draft-incident', templateUrl: 'views/ticket/profiles/draft-incident-profile.html', controller: 'DraftTicketController', access: [roles.ITSM_AGENT_ROLE], params: { error: null, isSrcLiveChat: 'false' }, data: { pageTitle: 'create.draft.incident' } }) .state('pwaDraftIncident', { url: '/pwa-draft-incident', controller: 'PwaTicketController', access: [roles.ITSM_AGENT_ROLE], params: { error: null, isSrcLiveChat: 'false', isSrcAsset: 'false', isSrcChange: 'false', isSrcKnownError: 'false', isSrcProblem: 'false', crossLaunchContext: '' }, data: { pageTitle: 'create.draft.incident', formName: 'SHR:SV_TicketDisplay/SV_TicketDisplay', targetForm: 'Incident', targetView: 'SV_Edit' } }) .state('pwaDraftWorkorder', { url: '/pwa-draft-workorder', controller: 'PwaTicketController', access: [roles.ITSM_AGENT_ROLE], params: { error: null, isSrcLiveChat: 'false', isSrcAsset: 'false', isSrcChange: 'false', isSrcKnownError: 'false', isSrcProblem: 'false', crossLaunchContext: '' }, data: { pageTitle: 'create.draft.workorder', formName: 'SHR:SV_TicketDisplay/SV_TicketDisplay', targetForm: 'Work Order', targetView: 'SV_Edit' } }) .state('liveChatDraft', { url: '/lc-draft?:draftType?:launchMode?:id', template: '', controller: 'LiveChatDraftTicketController', access: [roles.ITSM_AGENT_ROLE], params: { error: null, isSrcLiveChat: 'true', draftType: null, crossLaunchContext: 'LIVECHAT', launchMode: 'view', id: null } }) .state('draftChange', { url: '/draft-change/:id', templateUrl: 'views/ticket/profiles/draft-change-profile.html', controller: 'DraftTicketController', params: { isCopyChange: false, copyChangeId: null, ticket: null, hasRelatedCis: false }, access: [roles.ITSM_CHANGE_USER_ROLE], data: { pageTitle: 'create.draft.change' } }) .state('pwaDraftChange', { url: '/pwa-draft-change', controller: 'PwaTicketController', access: [roles.ITSM_CHANGE_USER_ROLE], params: { error: null, isSrcLiveChat: 'false', isSrcAsset: 'false', isSrcChange: 'false', isSrcKnownError: 'false', isSrcProblem: 'false', isSrcRelease: 'false', crossLaunchContext: '' }, data: { pageTitle: 'create.draft.change', formName: 'SHR:SV_TicketDisplay/SV_TicketDisplay', targetForm: 'Infrastructure Change', targetView: 'SV_Edit' } }) .state('draftWorkorder', { url: '/draft-workorder', templateUrl: 'views/ticket/profiles/draft-workorder-profile.html', controller: 'DraftTicketController', access: [roles.ITSM_AGENT_ROLE], params: { error: null, isSrcLiveChat: 'false' }, data: { pageTitle: 'create.draft.workorder' } }) .state('draftServicerequest', { url: '/draft-request', templateUrl: 'views/ticket/profiles/draft-service-request-profile.html', controller: 'DraftTicketController', access: [roles.ITSM_AGENT_ROLE], params: { error: null }, data: { pageTitle: 'create.draft.servicerequest' } }) .state('extDraft', { url: '/ext-draft?draftType', template: '', controller: 'ExtDraftTicketController', access: [roles.ITSM_AGENT_ROLE] }) .state('draftProblem', { url: '/draft-problem', templateUrl: 'views/ticket/profiles/draft-problem-profile.html', controller: 'DraftTicketController', access: [roles.ITSM_PROBLEM_USER_ROLE], data: { pageTitle: 'create.draft.problem' } }) .state('pwaDraftProblem', { url: '/pwa-draft-problem', controller: 'PwaTicketController', access: [roles.ITSM_PROBLEM_USER_ROLE], params: { error: null, isSrcChange: 'false', isSrcExt: 'false', crossLaunchContext: '' }, data: { pageTitle: 'create.draft.problem', formName: 'SHR:SV_TicketDisplay/SV_TicketDisplay', targetForm: 'Problem Investigation', targetView: 'SV_Edit' } }) .state('draftKnownerror', { url: '/draft-knownerror', templateUrl: 'views/ticket/profiles/draft-knownerror-profile.html', controller: 'DraftTicketController', access: [roles.ITSM_PROBLEM_USER_ROLE], data: { pageTitle: 'create.draft.knownerror' } }) .state('pwaDraftKnownerror', { url: '/pwa-draft-knownerror', controller: 'PwaTicketController', access: [roles.ITSM_PROBLEM_USER_ROLE], params: { error: null, isSrcChange: 'false', crossLaunchContext: '' }, data: { pageTitle: 'create.draft.knownerror', formName: 'SHR:SV_TicketDisplay/SV_TicketDisplay', targetForm: 'Known Error', targetView: 'SV_Edit' } }) .state('ticket', { url: '/:type/displayid/:displayid', templateUrl: 'views/common/ticket-transition.html', controller: 'TicketTransitionController', access: [roles.ITSM_CHANGE_USER_ROLE, roles.ITSM_RELEASE_USER_ROLE, roles.ITSM_AGENT_ROLE, roles.ITSM_PROBLEM_USER_ROLE, roles.ITSM_ASSET_USER_ROLE] }) .state('incident', { url: '/incident/:id', templateUrl: 'views/ticket/profiles/incident-profile.html', controller: 'TicketProfileController', access: [roles.ITSM_AGENT_ROLE], params: { editMode: false }, data: { pageTitle: 'common.labels.incident' } }) .state('incidentPV', { url: '/incidentPV/:id', controller: 'PwaTicketController', data: { pageTitle: 'common.labels.incident', formName: 'SHR:SV_TicketDisplay/SV_TicketDisplay', targetForm: 'Incident', targetView: 'SV_View', mode: 'GET' }, access: [roles.ITSM_AGENT_ROLE] }) .state('editIncidentPV', { url: '/edit/incidentPV/:id', controller: 'PwaTicketController', data: { pageTitle: 'common.labels.incident', formName: 'SHR:SV_TicketDisplay/SV_TicketDisplay', targetForm: 'Incident', targetView: 'SV_Edit', mode: 'GET' }, access: [roles.ITSM_AGENT_ROLE], params: { context: 'TICKETCONSOLE' } }) .state('calendarStudio', { url: '/calendarStudio', controller: 'StudioController', data: { pageTitle: 'header.navigation.calendar' }, access: [roles.ITSM_CHANGE_USER_ROLE, roles.ITSM_RELEASE_USER_ROLE, roles.ITSM_AGENT_ROLE, roles.ITSM_PROBLEM_USER_ROLE, roles.ITSM_ASSET_USER_ROLE] }) .state('ticketConsoleStudio', { url: '/ticket-consoleStudio', controller: 'StudioController', data: { pageTitle: 'header.navigation.ticketConsole' }, access: [roles.ITSM_CHANGE_USER_ROLE, roles.ITSM_RELEASE_USER_ROLE, roles.ITSM_AGENT_ROLE, roles.ITSM_PROBLEM_USER_ROLE, roles.ITSM_ASSET_USER_ROLE] }) .state('assetConsoleStudio', { url: '/asset-consoleStudio', controller: 'StudioController', data: { pageTitle: 'header.navigation.assetConsole' }, access: [roles.ITSM_ASSET_USER_ROLE] }) .state('workorder', { url: '/workorder/:id', templateUrl: 'views/ticket/profiles/workorder-profile.html', controller: 'TicketProfileController', access: [roles.ITSM_AGENT_ROLE], params: { editMode: false }, data: { pageTitle: 'common.labels.workorder' } }) .state('workorderPV', { url: '/workorderPV/:id', controller: 'PwaTicketController', data: { pageTitle: 'smartrecorder.button.createWorkorder', formName: 'SHR:SV_TicketDisplay/SV_TicketDisplay', targetForm: 'Work Order', targetView: 'SV_View', mode: 'GET' }, access: [roles.ITSM_AGENT_ROLE] }) .state('editWorkorderPV', { url: '/edit/workorderPV/:id', controller: 'PwaTicketController', data: { pageTitle: 'smartrecorder.button.createWorkorder', formName: 'SHR:SV_TicketDisplay/SV_TicketDisplay', targetForm: 'Work Order', targetView: 'SV_Edit', mode: 'GET' }, params: { context: 'TICKETCONSOLE' }, access: [roles.ITSM_AGENT_ROLE] }) .state('task', { url: '/task/:id', templateUrl: 'views/ticket/profiles/task-profile.html', controller: 'TicketProfileController', access: [roles.ITSM_AGENT_ROLE, roles.ITSM_CHANGE_USER_ROLE, roles.ITSM_PROBLEM_USER_ROLE], data: { pageTitle: 'common.labels.task' } }) .state('taskPV', { url: '/taskPV/:id', controller: 'PwaTicketController', access: [roles.ITSM_AGENT_ROLE, roles.ITSM_CHANGE_USER_ROLE, roles.ITSM_PROBLEM_USER_ROLE], data: { pageTitle: 'common.labels.task', formName: 'SHR:SV_TicketDisplay/SV_TicketDisplay', targetForm: 'Task', targetView: 'SV_View', mode: 'GET' } }) .state('editTaskPV', { url: '/edit/taskPV/:id', controller: 'PwaTicketController', access: [roles.ITSM_AGENT_ROLE, roles.ITSM_CHANGE_USER_ROLE, roles.ITSM_PROBLEM_USER_ROLE], data: { pageTitle: 'common.labels.task', formName: 'SHR:SV_TicketDisplay/SV_TicketDisplay', targetForm: 'Task', targetView: 'SV_Edit', mode: 'GET' }, params: { context: 'TICKETCONSOLE' } }) .state('request', { url: '/request/:id', templateUrl: 'views/ticket/profiles/service-request-profile.html', controller: 'TicketProfileController', access: [roles.ITSM_AGENT_ROLE], data: { pageTitle: 'common.labels.request' } }) .state('outage', { url: '/outage/:id', templateUrl: 'views/ticket/ticket-profile.html', controller: 'TicketProfileController', access: [roles.ITSM_AGENT_ROLE, roles.ITSM_CHANGE_USER_ROLE, roles.ITSM_KNOWLEDGE_USER_ROLE, roles.ITSM_ASSET_USER_ROLE], data: { pageTitle: 'common.labels.outage' } }) .state('createWorkorder', { url: '/create/workorder', templateUrl: 'views/create/create-work-order-v2.html', controller: 'CreateWorkOrderV2Controller', access: [roles.ITSM_AGENT_ROLE], data: { pageTitle: 'smartrecorder.button.createWorkorder' } }) .state('createWorkorderPV', { url: '/create/workorderPV', controller: 'PwaTicketController', data: { pageTitle: 'smartrecorder.button.createWorkorder', formName: 'SHR:SV_TicketCreate/SV_TicketCreate', targetForm: 'Work Order', targetView: 'SV_Create', mode: 'CREATE' }, access: [roles.ITSM_AGENT_ROLE] }) .state('createBroadcast', { url: '/create/broadcast', templateUrl: 'views/create/create-broadcast.html', controller: 'CreateBroadcastController', access: [roles.ITSM_BROADCAST_USER_ROLE], data: { pageTitle: 'create.broadcast.header' }, resolve: { PVEnable: ['metadataModel', '$state', function (metadataModel, $state) { return metadataModel.getMetadataByType('global').then(function (metadata) { var isPwaEnabled = (metadata.configurationParameters['Enable-Progressive-Views'] === 'T' || metadata.configurationParameters['Enable-Progressive-Views'] === 'true'); isPwaEnabled = localStorage.getItem('overridePV') === 'T' ? false : isPwaEnabled; if (isPwaEnabled && localStorage.getItem('midtierUrl')) { $state.go('createBroadcastPV'); } else { console.info('Either PV not enabled or invalid midtierUrl'); } }).catch(function (error) { console.info(error.data.error); }); }] } }) .state('createBroadcastPV', { url: '/create/broadcastPV', controller: 'PwaTicketController', access: [roles.ITSM_BROADCAST_USER_ROLE], data: { pageTitle: 'create.broadcast.header', formName: 'SHR:SV_TicketCreate/SV_TicketCreate', targetForm: 'Broadcast', targetView: 'SV_Create', mode: 'CREATE' } }) .state('createAsset', { url: '/create/asset', templateUrl: 'views/create/create-asset.html', controller: 'CreateAssetController', access: [roles.ITSM_ASSET_ADMIN_ROLE], data: { pageTitle: 'create.asset.header' }, resolve: { PVEnable: ['metadataModel', '$state', function (metadataModel, $state) { return metadataModel.getMetadataByType('global').then(function (metadata) { var isPwaEnabled = (metadata.configurationParameters['Enable-Progressive-Views'] === 'T' || metadata.configurationParameters['Enable-Progressive-Views'] === 'true'); isPwaEnabled = localStorage.getItem('overridePV') === 'T' ? false : isPwaEnabled; if (isPwaEnabled && localStorage.getItem('midtierUrl')) { $state.go('createAssetPV'); } else { console.info('Either PV not enabled or invalid midtierUrl'); } }).catch(function (error) { console.info(error.data.error); }); }] } }) .state('createAssetPV', { url: '/create/assetPV', controller: 'PwaTicketController', access: [roles.ITSM_ASSET_ADMIN_ROLE, roles.ITSM_ASSET_CREATOR_ROLE], data: { pageTitle: 'create.asset.header', formName: 'SHR:SV_TicketCreate/SV_TicketCreate', targetForm: 'Configuration Item', targetView: 'SV_Create', mode: 'CREATE' } }) .state('conversationsHistory', { url: '/conversations', templateUrl: 'views/chat/history.html', controller: 'ChatHistoryController', access: [roles.ITSM_AGENT_ROLE, roles.ITSM_CHANGE_USER_ROLE, roles.ITSM_KNOWLEDGE_USER_ROLE, roles.ITSM_PROBLEM_USER_ROLE, roles.ITSM_ASSET_USER_ROLE], data: { pageTitle: 'chat.history.title' } }) .state('change', { url: '/change/:id', templateUrl: 'views/ticket/profiles/change-profile.html', controller: 'TicketProfileController', access: [roles.ITSM_CHANGE_USER_ROLE], data: { pageTitle: 'common.labels.change' } }) .state('changePV', { url: '/changePV/:id', controller: 'PwaTicketController', access: [roles.ITSM_CHANGE_USER_ROLE], data: { pageTitle: 'common.change.problem', formName: 'SHR:SV_TicketDisplay/SV_TicketDisplay', targetForm: 'Infrastructure Change', targetView: 'SV_View', mode: 'GET' } }) .state('editChangePV', { url: '/edit/changePV/:id', controller: 'PwaTicketController', access: [roles.ITSM_CHANGE_USER_ROLE], data: { pageTitle: 'common.change.problem', formName: 'SHR:SV_TicketDisplay/SV_TicketDisplay', targetForm: 'Infrastructure Change', targetView: 'SV_Edit', mode: 'GET' }, params: { context: 'TICKETCONSOLE' } }) .state('release', { url: '/release/:id', templateUrl: 'views/ticket/profiles/release-profile.html', controller: 'TicketProfileController', access: [roles.ITSM_RELEASE_USER_ROLE], data: { pageTitle: 'common.labels.release' } }) .state('activity', { url: '/activity/:id', templateUrl: 'views/ticket/profiles/activity-profile.html', controller: 'TicketProfileController', access: [roles.ITSM_RELEASE_USER_ROLE], data: { pageTitle: 'common.labels.activity' } }) .state('knownerror', { url: '/knownerror/:id', templateUrl: 'views/ticket/profiles/known-error-profile.html', controller: 'TicketProfileController', access: [roles.ITSM_PROBLEM_USER_ROLE], data: { pageTitle: 'common.labels.knownerror' } }) .state('knownerrorPV', { url: '/knownerrorPV/:id', controller: 'PwaTicketController', access: [roles.ITSM_PROBLEM_USER_ROLE], data: { pageTitle: 'common.labels.knownerror', formName: 'SHR:SV_TicketDisplay/SV_TicketDisplay', targetForm: 'Known Error', targetView: 'SV_View', mode: 'GET' } }) .state('editKnownerrorPV', { url: '/edit/knownerrorPV/:id', controller: 'PwaTicketController', access: [roles.ITSM_PROBLEM_USER_ROLE], data: { pageTitle: 'common.labels.knownerror', formName: 'SHR:SV_TicketDisplay/SV_TicketDisplay', targetForm: 'Known Error', targetView: 'SV_Edit', mode: 'GET' }, params: { context: 'TICKETCONSOLE' } }) .state('createKnownerror', { url: '/create/knownerror', templateUrl: 'views/known-error/create-known-error.html', controller: 'CreateKnownErrorController', access: [roles.ITSM_PROBLEM_USER_ROLE], data: { pageTitle: 'create.knownerror.header' }, resolve: { PVEnable: ['metadataModel', '$state', function (metadataModel, $state) { return metadataModel.getMetadataByType('global').then(function (metadata) { var isPwaEnabled = (metadata.configurationParameters['Enable-Progressive-Views'] === 'T' || metadata.configurationParameters['Enable-Progressive-Views'] === 'true'); isPwaEnabled = localStorage.getItem('overridePV') === 'T' ? false : isPwaEnabled; if (isPwaEnabled && localStorage.getItem('midtierUrl')) { $state.go('createKnownerrorPV'); } else { console.info('Either PV not enabled or invalid midtierUrl'); } }).catch(function (error) { console.info(error.data.error); }); }] } }) .state('createKnownerrorPV', { url: '/create/knownerrorPV', controller: 'PwaTicketController', access: [roles.ITSM_PROBLEM_USER_ROLE], data: { pageTitle: 'create.knownerror.header', formName: 'SHR:SV_TicketCreate/SV_TicketCreate', targetForm: 'Known Error', targetView: 'SV_Create', mode: 'CREATE' } }) .state('createProblem', { url: '/create/problem', templateUrl: 'views/problem/create-problem.html', controller: 'CreateProblemController', access: [roles.ITSM_PROBLEM_USER_ROLE], data: { pageTitle: 'create.problem.header' }, resolve: { PVEnable: ['metadataModel', '$state', function (metadataModel, $state) { metadataModel.getMetadataByType('global').then(function (metadata) { var isPwaEnabled = (metadata.configurationParameters['Enable-Progressive-Views'] === 'T' || metadata.configurationParameters['Enable-Progressive-Views'] === 'true'); isPwaEnabled = localStorage.getItem('overridePV') === 'T' ? false : isPwaEnabled; if (isPwaEnabled && localStorage.getItem('midtierUrl')) { $state.go('createProblemPV'); } else { console.info('Either PV not enabled or invalid midtierUrl'); } }).catch(function (error) { console.info(error.data.error); }); }] } }) .state('createProblemPV', { url: '/create/problemPV', controller: 'PwaTicketController', data: { pageTitle: 'create.problem.header', formName: 'SHR:SV_TicketCreate/SV_TicketCreate', targetForm: 'Problem Investigation', targetView: 'SV_Create', mode: 'CREATE' }, access: [roles.ITSM_PROBLEM_USER_ROLE] }) .state('problem', { url: '/problem/:id', templateUrl: 'views/ticket/profiles/problem-profile.html', controller: 'TicketProfileController', access: [roles.ITSM_PROBLEM_USER_ROLE], data: { pageTitle: 'common.labels.problem' } }) .state('problemPV', { url: '/problemPV/:id', controller: 'PwaTicketController', access: [roles.ITSM_PROBLEM_USER_ROLE], data: { pageTitle: 'common.labels.problem', formName: 'SHR:SV_TicketDisplay/SV_TicketDisplay', targetForm: 'Problem Investigation', targetView: 'SV_View', mode: 'GET' } }) .state('editProblemPV', { url: '/edit/problemPV/:id', controller: 'PwaTicketController', access: [roles.ITSM_PROBLEM_USER_ROLE], data: { pageTitle: 'common.labels.problem', formName: 'SHR:SV_TicketDisplay/SV_TicketDisplay', targetForm: 'Problem Investigation', targetView: 'SV_Edit', mode: 'GET' }, params: { context: 'TICKETCONSOLE' } }) .state('location', { url: '/location/:id', template: '
', controller: 'LocationMapController', access: [roles.ITSM_AGENT_ROLE, roles.ITSM_CHANGE_USER_ROLE, roles.ITSM_KNOWLEDGE_USER_ROLE, roles.ITSM_PROBLEM_USER_ROLE], data: { pageTitle: 'field.widget.customerLocationMap.label' } }) .state('chatPopupWindow', { url: '/chatPopupWindow', template: "
" + "
", controller: 'ChatPopupWindowController', data: { separateWindowMode: true, pageTitle: 'headerMainBar.icon.title.chat' }, access: [roles.ITSM_AGENT_ROLE, roles.ITSM_CHANGE_USER_ROLE, roles.ITSM_KNOWLEDGE_USER_ROLE, roles.ITSM_PROBLEM_USER_ROLE, roles.ITSM_ASSET_USER_ROLE] }) .state('EmailPopupWindow', { url: '/emailPopupWindow', template: "
" + "
", controller: 'EmailPopupWindowController', data: { separateWindowMode: true, pageTitle: 'personInfoCard.label.email' }, access: [roles.ITSM_AGENT_ROLE, roles.ITSM_CHANGE_USER_ROLE, roles.ITSM_KNOWLEDGE_USER_ROLE, roles.ITSM_PROBLEM_USER_ROLE, roles.ITSM_ASSET_USER_ROLE] }) .state('dlp', { url: '/dlp/:id', templateUrl: 'views/ticket/profiles/data-loss-prevention-profile.html', controller: 'dataLossPreventionProfileController', access: [roles.ITSM_AGENT_ROLE], data: { pageTitle: 'ticket.detail.dlp' } }) .state('sberequest', { url: '/sberequest/:id', templateUrl: 'views/ticket/profiles/sbe-request-profile.html', controller: 'TicketProfileController', access: [roles.ITSM_SBE_USER_ROLE], data: { pageTitle: 'ticket.type.sberequest' } }) .state('healthcheck', { url: '/healthcheck', templateUrl: 'views/admin/health-check/health-check.html', controller: 'MonitorController as ctrl', access: [roles.ITSM_ADMIN_ROLE], data: { pageTitle: 'admin.health.title' } }) .state('liveChatAgentConsole', { url: '/live-chat/console', templateUrl: 'views/live-chat/live-chat.html', controller: 'LiveChatController', access: [roles.ITSM_AGENT_ROLE, roles.ESCHAT_AGENT_ROLE], data: { pageTitle: 'common.labels.live-chat', path: 'console' } }) .state('liveChatDashboard', { url: '/live-chat/dashboard', templateUrl: 'views/live-chat/live-chat.html', controller: 'LiveChatController', access: [roles.ITSM_AGENT_ROLE, roles.ESCHAT_ADMIN_ROLE], data: { pageTitle: 'common.labels.live-chat', path: 'dashboard' } }); } ]) // console.debug log level is inconsistent between Chrome/Chromium versions. // Currently console.debug requires verbose level. And special setting for console tab in devtools // Fix this in Angular way .decorator('$log', ['$logProvider', 'topicLoggerProvider', '$delegate', function ($logProvider, topicLoggerProvider, $delegate) { // override $log.debug $delegate.debug = function () { if (!$logProvider.debugEnabled()) { return; } $delegate.log.apply($delegate, arguments); }; $delegate.topic = function () { var args = Array.prototype.slice.call(arguments); if (!topicLoggerProvider.includesTopic(args[0])) { return; } $delegate.info.apply($delegate, args.slice(1, args.length)); }; return $delegate; }]) .run(['$rootScope', '$state', '$location', 'authModel', 'AUTH_EVENTS', 'i18nService', '$q', 'roles', 'permissionModel', '$locale', 'customLocale', '$modalStack', 'DOCSLINK', '$timeout', 'browser', 'systemAlertService', function ($rootScope, $state, $location, authModel, AUTH_EVENTS, i18nService, $q, roles, permissionModel, $locale, customLocale, $modalStack, DOCSLINK, $timeout, browser, systemAlertService) { var authPromise = null, onLoad = true; $rootScope.docsLink = DOCSLINK; $.cookie.raw = true; //Avoids replacing the + sign in '+3:00' if ($.cookie('user_timezone')) { $rootScope.timezone = $.cookie('user_timezone'); moment.tz.setDefault($rootScope.timezone); } if ($.cookie('user_locale')) { $rootScope.locale = $.cookie('user_locale'); } function setPageTitle(toState) { var title = 'Smart IT Universal Client', version = ' 22.1.06'; if (authModel.isAuthenticated()) { if (authModel.isAuthorized(toState.access) && toState && toState.data && toState.data.pageTitle) { title += version + ' | ' + i18nService.getLocalizedString(toState.data.pageTitle); } } else { title += ' | ' + i18nService.getLocalizedString('user.loginForm.loginButton'); } $rootScope.pageTitle = title; } $rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState) { if (!authPromise) { authPromise = authModel.isAuthenticated() ? $q.when(1) : authModel.checkSessionStatus(); } authPromise.finally(function () { authPromise = null; //In case of RSSO, authentication is not done yet but stateChangeSuccess is called which causes incorrect title while logging. if (!authModel.isAuthenticated() && authModel.isSSOEnabled() && onLoad) { onLoad = false; $timeout(function () { setPageTitle(toState); }, 1500); } else { setPageTitle(toState); } }); }); $rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState) { //console.log("fromState: " + (fromState && fromState.name) + "; toState: " + (toState && toState.name)); //START fix to close the modal on browser back button click or keyboard backspace //this is a known issue with angular-ui bootstrap modal var top = $modalStack.getTop(); if (top && !(top.value && top.value.modalScope && top.value.modalScope.modalOptions)) { $modalStack.dismiss(top.key); } //END fix if (!authPromise) { authPromise = authModel.isAuthenticated() ? $q.when(1) : authModel.checkSessionStatus(); } $rootScope.authPromise = authPromise; authPromise.then(function () { if (!authModel.isAuthorized(toState.access)) { event.preventDefault(); if (authModel.isAuthenticated()) { //This check should be done To prevent double redirects for admin-only users(from dashboard to unauthorized) if (permissionModel.hasAdminOnlyRole()) { //This will be true only when user logs in or reloads the page if (toState.name === 'dashboard' && !fromState) { $state.go('screenConfiguration'); } else { $rootScope.$broadcast(AUTH_EVENTS.NOT_AUTHORIZED); } } else { // user is not allowed to access this state $rootScope.$broadcast(AUTH_EVENTS.NOT_AUTHORIZED); } } } else if (browser.isMobile && (toState.name === 'release' || toState.name === 'request' || toState.name === 'activity' || toState.name === 'createKnowledge')) { systemAlertService.error({ text: i18nService.getLocalizedString('error.' + toState.name + '.notSupported'), clear: false, displayOnStateChange: true }); $state.go(fromState); } }).finally(function () { authPromise = null; }); }); /*$rootScope.$on(AUTH_EVENTS.SESSION_ACTIVE, function () { console.log("$rootScope.$on(AUTH_EVENTS.SESSION_ACTIVE)"); $state.go('dashboard'); });*/ $rootScope.$on(AUTH_EVENTS.NOT_AUTHORIZED, function () { console.log('$rootScope.$on(AUTH_EVENTS.NOT_AUTHORIZED)'); $state.go('unauthorized'); }); angular.merge($locale, customLocale); } ]); })();