How to reload the page in Service portal through an widget?

Subhashree3
Giga Contributor

Hi All,

I have one requirement where an widget in the service portal, I need to reload the form. PFB screenshot. 

This popup opens on click of a widget. My task is to reload the form on click of the highlighted button 'Assign task'.

find_real_file.png

Below is my code which has the method to be called on click of 'Assign task' button in the widget:

find_real_file.png

Please let me know your suggestion on this. Thank You.

1 ACCEPTED SOLUTION

Omkar Mone
Mega Sage

Hi 

You can use reload use window.location.reload(); to reload the page.

 

Hope this helps.

 

Regards,

Omkar Mone

View solution in original post

9 REPLIES 9

Hi 

This works perfectly in my case and currently working in production as wll. Can you see any errors in the console by f12? Because if the control has not reached that line and some error has occured in between, it can cause the page not to refresh. Also try putting some consoles and check till where the control is reached.

 

Hope this helps.

 

Regards

Omkar Mone

Hi Omkar,

This works perfectly. There was some error I had to fix from my end. Thank you so much 🙂

Cheers 🙂

function($rootScope, $scope, $window, $timeout, spUtil, $sce, spModal, $uibModal,$location,cabrillo, snAnalytics) {
/* widget controller */
var c = this;
if (c.data.redirect) {
var id = $location.search().sys_kb_id ? 'sys_kb_id' : 'sys_id';
if ($location.search()[id] && $location.search()[id] !== c.data.redirect) {
$location.search('spa', 1);
$location.search(id, c.data.redirect);
}
}

if(c.data.isValid){
if(c.data.kbContentData && c.data.kbContentData.isTemplate ){
c.data.kbContentData.data.forEach(function(field){
if(field.type == 'html')
field.content = $sce.trustAsHtml(field.content);
});

if (c.data.articleType === 'wiki')
c.data.kbWiki = $sce.trustAsHtml(c.data.kbWiki);
}
else if (c.data.articleType === 'wiki')
c.data.kbWiki = $sce.trustAsHtml(c.data.kbWiki);
else
c.data.kbContentData.data = $sce.trustAsHtml(c.data.kbContentData.data);
}

$scope.submitted = false;
c.flagMessage = null;
$timeout(function(){
$rootScope.$broadcast("sp.update.breadcrumbs", $scope.data.breadCrumb);
});
$rootScope.properties = $scope.data.properties;
$rootScope.messages = $scope.data.messages;
$rootScope.isValid = c.data.isValid;
$rootScope.isKBAdmin = $scope.data.isKBAdmin;
$rootScope.isKBOwner = $scope.data.isKBOwner;
$rootScope.article_sys_id = $scope.data.article_sys_id;
$rootScope.attachments = $scope.data.attachments;
$rootScope.attachedIncidents = $scope.data.attachedIncidents;
$rootScope.affectedProducts = $scope.data.affectedProducts;
$rootScope.displayAttachments = $scope.data.displayAttachments;
$rootScope.hideFeedbackOptions = $scope.data.hideFeedbackOptions;
$rootScope.helpfulContent = $scope.data.helpfulContent;
$rootScope.tableName = $scope.data.tableName;
$rootScope.hasComments = $scope.data.hasComments;
$scope.data.isSubscribed = $scope.data.isArticleSubscribed || $scope.data.isArticleSubscribedAtKB;
$scope.data.subscribeLabel = ($scope.data.isSubscribed ? $scope.data.messages.SUBSCRIBED : $scope.data.messages.SUBSCRIBE);
c.createIncidentURL = c.options.create_task_url || ($scope.data.properties && $scope.data.properties.createIncidentURL);
c.createIncidentLabel = c.options.create_task_prompt || $scope.data.messages.CREATE_INCIDENT;
c.showCreateIncident = c.data.isLoggedInUser && c.options.show_create_incident_action != 'false' && c.data.properties && c.data.properties.showKBCreateIncident && c.createIncidentURL;
c.showFlagArticle = c.data.properties && c.data.properties.showKBFlagArticle && c.data.properties.showRatingOptions;
c.showMenu = c.data.properties && (c.showFlagArticle || c.data.properties.isEditable || c.showCreateIncident);
$rootScope.stackUrl = window.location.pathname + '?id='+c.data.params.sysparm_article_view_page_id+'%26' + (c.data.params.sysparm_article ? 'sysparm_article=' + c.data.params.sysparm_article : 'sys_kb_id=' + c.data.params.sys_kb_id);
c.stackUrl = $rootScope.stackUrl;
c.flagMessage = '';
c.task ={};
c.imageInstance = '';
c.submitFlagWithoutComment = "${Please enter a comment to be able to flag the article}";
c.submitFlagWithComment = "${Press this button to flag the article}";
$scope.data.toggleSubscribed = ($scope.data.isSubscribed ? true : false);
c.reasons = c.data.feedback_reasons;
c.data.reason = '4';
c.imageInstance = '';
c.minImageHeight = parseInt(c.options.min_image_height) || 100;
c.minImageWidth = parseInt(c.options.min_image_width) || 185;
c.readOnly = false;
c.isMobile = spUtil.isMobile() || cabrillo.isNative();
c.editUrl = c.data.wordOnlineUrl || 'kb_knowledge.do?sys_id=' + c.data.article_sys_id + '&sysparm_stack=' + c.stackUrl;

//Use KB specific stylic for "kb" & 'mesp' portal
c.KBRatingStyle = c.options.kb_rating_style || ($rootScope.portal ? ($rootScope.portal.sys_id == "45d6680fdb52220099f93691f0b8f5ad" || $rootScope.portal.sys_id == "26f2fffb77322300454792718a1061e5") : false);

if(c.data.langList && c.data.langList.length > 1){
for(var lng in c.data.langList){
if(c.data.langList[lng].selected == true){
c.selectedLanguage = c.data.langList[lng];
break;
}
}
}

var payload= {};
payload.name = "View Knowledge Article";
payload.data = {};
payload.data["Article Title"] = c.data.shortDesc;
payload.data["Article SysID"] = c.data.article_sys_id;
payload.data["Language"] = c.selectedLanguage || "en";
snAnalytics.addEvent(payload);

populateBreadCrumbURLs();

function populateBreadCrumbURLs() {
if(c.data.breadCrumb) {
if(c.data.breadCrumb[0].type == 'kb_knowledge_base') {
if($rootScope.showKbHomeLink) {
c.data.breadCrumb[0].url = '?id=' + c.data.kb_knowledge_page + '&kb_id=' + c.data.breadCrumb[0].values.kb_knowledge_base;
} else {
c.data.breadCrumb[0].url = '?id=kb_search&kb_knowledge_base=' + c.data.breadCrumb[0].values.kb_knowledge_base;
}
}

for(var i = 1; i < c.data.breadCrumb.length; i++) {
if(c.data.breadCrumb[i].type == 'kb_category') {
if($rootScope.showKbHomeLink) {
if(c.data.breadCrumb[i].values.kb_category == "NULL_VALUE") {
c.data.breadCrumb.splice(i, 1);
} else {
c.data.breadCrumb[i].url = '?id=kb_category&kb_id=' + c.data.breadCrumb[i].values.kb_knowledge_base + '&kb_category=' + c.data.breadCrumb[i].values.kb_category;
}
} else {
c.data.breadCrumb[i].url = '?id=kb_search&kb_knowledge_base=' + c.data.breadCrumb[i].values.kb_knowledge_base + '&kb_category=' + c.data.breadCrumb[i].values.kb_category;
}
}
}
}
}

if (c.data.page_title) {
// setting default page title for supporting km seo
$window.document.title = c.data.page_title;
if (c.data.article_sys_id)
appendKBSysIdToURL();
}
function appendKBSysIdToURL() {
if ($window) {
if (c.data.params.sys_kb_id) // return if url already contains sys_kb_id
return;

// for supporting km seo, adding kb_sys_id to the url when kb is viewed using sysparm_article (kb number)
$timeout(function() {
$location.search('sys_kb_id', $scope.data.article_sys_id);
$location.search('spa','1');
$location.replace();
// $location.reload(true);
});
}
}



c.showVersions = false;
c.toggleVersions = function(){
c.showVersions = !c.showVersions;
$('#kbVersionInfo').slideToggle("fast");
};

c.selectLanguage = function(ind){
$window.location.replace('?id='+c.data.params.sysparm_article_view_page_id+'&sys_kb_id=' + c.data.langList[ind].sys_id);
};

c.showActionMenu = function(){
if(c.showMenu){
return true;
}
else{
if(c.data.properties && c.data.properties.isSubscriptionEnabled && $window.innerWidth < 992)
return true;
else
return false;
}
}


c.toggleSection = function(field) {
field.collapsed = !field.collapsed;
$('#'+field.column).slideToggle("fast");
};

c.handleSubscribeButtonFocus = function(){
if($scope.data.isSubscribed){
$scope.data.subscribeLabel = $rootScope.messages.UNSUBSCRIBE;
$scope.data.toggleSubscribed = !$scope.data.toggleSubscribed;
}

};

c.handleSubscribeButtonBlur = function(){
if($scope.data.isSubscribed){
$scope.data.subscribeLabel = $rootScope.messages.SUBSCRIBED;
$scope.data.toggleSubscribed = !$scope.data.toggleSubscribed;
}
}
c.closeUnsubscribeModal = function(){
$("#unSubscribeModal").modal('hide');
};

c.handleSubscription = function(confirmation){
c.data.actionName = null;
if(!$scope.data.isSubscribed){
c.data.actionName = 'subscribe';
c.data.articleSysId = $scope.data.article_sys_id;
c.data.articleNum = $scope.data.number;
}
else
{
if($scope.data.isArticleSubscribed && !$scope.data.isArticleSubscribedAtKB){
c.data.actionName = "unsubscribe";
c.data.articleSysId = $scope.data.article_sys_id;
c.data.articleNum = $scope.data.number;
c.data.unsubscribeKB = false;
}
else if(!confirmation){
//$("#unSubscribeModal").modal();
var unsubscribeMessage = "<p>" + c.data.messages.UNSUBSCRIBE_CONTENT + "</p><p><b>" + c.data.messages.UNSUBSCRIBE_CONFIRMATION + "</b></p>";
spModal.open(
{
title: c.data.messages.UNSUBSCRIBE,
buttons : [{label : c.data.messages.NO, cancel : true}, {label: c.data.messages.YES, primary : true}],
message : unsubscribeMessage
}).then(function(){
c.handleSubscription('Y');
}, function(){
c.closeUnsubscribeModal();
});

return;
}
else if(confirmation === 'Y'){
c.data.actionName = "unsubscribe";
c.closeUnsubscribeModal();
c.data.articleSysId = $scope.data.article_sys_id;
c.data.kbSysId = $scope.data.kbSysId;
c.data.articleNum = $scope.data.number;
c.data.kbName = $scope.data.kbName;
c.data.unsubscribeKB = true;
}
}
c.server.get({action : c.data.actionName, kbSysId : c.data.kbSysId, kbName : c.data.kbName, articleSysId : c.data.articleSysId, articleNum : c.data.articleNum, unsubscribeKB : c.data.unsubscribeKB, isArticleSubscribed: c.data.isArticleSubscribed, isKBSubscribed : c.data.isArticleSubscribedAtKB}).then(function(resp){
if(c.data.actionName == 'subscribe'){
$scope.data.isArticleSubscribed = true;
$scope.data.isSubscribed = true;
$scope.data.subscribeLabel = $rootScope.messages.SUBSCRIBED;
}
else{
$scope.data.isArticleSubscribed = false;
$scope.data.isSubscribed = false;
$scope.data.isArticleSubscribedAtKB = false;
$scope.data.subscribeLabel = $rootScope.messages.SUBSCRIBE;
}
c.showUIMessage('info', resp.data.responseMessage);

});
};

 

c.submitFlagComments = function(){
if(!c.data.comment){
c.flagMessage = "${Please provide a comment to flag the article}";
$("#flagComment").focus();
return false;
}
else{
$("#submitFlagComment").attr("disabled", true);
c.server.get({action : 'saveFlagComment', article_sys_id : c.data.article_sys_id, comment : c.data.comment}).then(function(resp){

if(resp.data.feedbackSuccess){
c.showUIMessage('info', c.data.messages.ARTICLE_FLAGGED);
c.clearComment();
}
else {
c.showUIMessage('error', c.data.messages.RATE_LIMIT_REACHED);
c.clearComment();
}

});

}

};

c.copyPermalink = function(){
var v = document.createElement('textarea');
var permalink = document.location.origin + document.location.pathname + '?id='+c.data.params.sysparm_article_view_page_id+'&sysparm_article=' + $scope.data.number;
v.innerHTML = permalink;
v.className = "sr-only";
document.body.appendChild(v);
v.select();
var result = true;
try {
result = document.execCommand('copy');
}
catch(err){
result = false;
}
finally{
document.body.removeChild(v);
}
if(result === true){
c.showUIMessage('info', c.data.messages.PERMALINK_COPIED);
}
else{
$window.prompt("${Because of a browser limitation the URL can not be placed directly in the clipboard. Please use Ctrl-C to copy the data and escape to dismiss this dialog}", permalink);
}

};
var modal = null;
c.launchFlagModal = function(){
c.clearComment();
modal = $uibModal.open(
{
title : c.data.messages.FLAG_THIS_ARTICLE,
scope : $scope,
templateUrl : 'volvo-kb-flag-article-modal'
});
}

var taskPopUp = $rootScope.$on("sp.kb.feedback.openTaskPopup",function(event,data){
c.ftask = {};
if(data){
c.launchFeedbackTaskModal();
c.ftask.feedback_action = data.feedback_data.action;
c.ftask.feedback_rating = data.feedback_data.rating
c.ftask.action= "createFeedbackTask";

}
});

c.launchFeedbackTaskModal = function(){
c.clearFeedbackTask();
modal = $uibModal.open({
title : c.data.messages.FEEDBACK,
windowClass : 'app-modal-window',
scope : $scope,
templateUrl : 'volvo-kb-feedback-task-modal'
});
modal.closed.then(function(){
if(!c.submitted){
c.data.reason = "4";
c.data.details ="";
}
if(c.ftask.action == "createFeedbackTaskWithFlagComment" && !c.submitted)
return;
modal = null;
c.server.get({action : c.ftask.action,
article_sys_id : c.data.article_sys_id,
reason : c.data.reason,
details : c.data.details,
feedback_action: c.ftask.feedback_action,
rating : c.ftask.feedback_rating
}).then(function(resp){
if(resp.data.responseMessage){
if(resp.data.feedbackSuccess){
c.showUIMessage('info', resp.data.responseMessage);
}else{
c.showUIMessage('error', resp.data.responseMessage);
}
}
});
c.clearFeedbackTask();
});
}

c.clearComment = function(){
$scope.data.comment = '';
c.flagMessage = '';
c.closePopup();
}

c.showUIMessage = function(type,msg){
if(cabrillo.isNative()){
cabrillo.message.showMessage(type != 'error' ? cabrillo.message.SUCCESS_MESSAGE_STYLE : cabrillo.message.ERROR_MESSAGE_STYLE, msg);
}else{
if(type == 'error')
spUtil.addErrorMessage(msg);
else
spUtil.addInfoMessage(msg);
}
}

c.closePopup = function(){
if(modal){
modal.dismiss();
}
}

c.clearFeedbackTask = function(){
c.submitted = false;
c.data.reason = '4';
c.data.details = '';
c.flagMessage = '';
c.ftask = {};
c.closePopup();
}

c.submitFeedbackTask = function(){
if(!c.data.reason){
c.flagMessage = "${Please provide the mandatory details}";
$("#detailsComment").focus();
return false;
}
else{
c.submitted = true;
c.closePopup();
}
}

c.imgModalClose = function(){
c.imageInstance.close();
}

$scope.$on("$destroy", taskPopUp);

}

 

where to add this in my case? I tried in multiple places and the page load is on loop and never ends. System might crash due to this. Can you point me in the right direction?

 

TIA 🙂 

 

@Omkar Mukesh Mone 

Ashley
Kilo Sage

Good Morning,

I use this in the client script to refresh the page:

window.setTimeout(restartscreen,2000);
function restartscreen(){
location.reload(true);
}

The 2000 part is the number of seconds to wait until you trigger the function i.e. 2 seconds

 

Hope it helps

Kind Regards

Ashley Pyle