Name
global.KBFeedbackTaskSNC
Description
No description available
Script
var KBFeedbackTaskSNC = Class.create();
KBFeedbackTaskSNC.prototype = {
initialize: function() {
this.kbCommon = new KBCommon();
this.OTHER_REASON = '4';
},
canEditArticle: function(feedbackTaskGr){
if(feedbackTaskGr.state == 3 || gs.nil(feedbackTaskGr.feedback))
return false;
var article = feedbackTaskGr.feedback.article.getRefRecord();
if(gs.nil(article) || this.kbCommon.isExternalArticle(article))
return false;
if(this.hasElevatedAccess(feedbackTaskGr))
return true;
if(feedbackTaskGr.assigned_to == gs.getUserID() && new SNC.KnowledgeHelper().canContribute(article))
return true;
return false;
},
hasElevatedAccess: function(feedbackTaskGr) {
if((gs.nil(feedbackTaskGr.feedback) || gs.nil(feedbackTaskGr.feedback.article)) && this.kbCommon.isAdminUser(null))
return true;
//If feedback source is an article
if(feedbackTaskGr.feedback) {
var knowledgeGr = feedbackTaskGr.feedback.article.getRefRecord();
if(this.kbCommon.isAdminUser(knowledgeGr))
return true;
if(this.kbCommon.isKnowledgeBaseOwner(knowledgeGr,"kb_knowledge_base.owner"))
return true;
else if(this.kbCommon.isKnowledgeBaseManager(knowledgeGr,"kb_knowledge_base.kb_managers"))
return true;
}
//It feedback source is a task
if(feedbackTaskGr.parent){
return gs.hasRole("knowledge_manager") || gs.hasRole("knowledge_domain_expert");
}
return false;
},
hasElevatedAccessForOwnershipGroup: function(feedbackTaskGr) {
//If there is no article associated with this feedback task and user user has knowledge_admin role then user
//has elevated access to the ownership group.
if((gs.nil(feedbackTaskGr.feedback) || gs.nil(feedbackTaskGr.feedback.article)) && this.kbCommon.isAdminUser(null))
return true;
//If feedback source is an article
if(feedbackTaskGr.feedback && feedbackTaskGr.feedback.article) {
var knowledgeGr = feedbackTaskGr.feedback.article.getRefRecord();
if(this.kbCommon.isAdminUser(knowledgeGr))
return true;
if(this.kbCommon.isMemberOfValidGroup(knowledgeGr,"ownership_group")){
return true;
}
}
return this.hasElevatedAccess(feedbackTaskGr);
},
createFeedbackTask: function(feedbackObj, flagged) {
var feedbackTaskGr = new GlideRecord("kb_feedback_task");
feedbackTaskGr.initialize();
for(var field in feedbackObj){
if(feedbackTaskGr.isValidField(field))
feedbackTaskGr[field] = feedbackObj[field];
}
feedbackTaskGr.feedback_task_type = flagged?'2':'1';
return feedbackTaskGr.insert();
},
getReasonValues : function(){
var reasons = [];
var choiceGenerator = new GlideChoiceListGenerator('kb_feedback', 'reason');
var fbReason = choiceGenerator.get();
for(var i=0;i<fbReason.size();i++){
if(fbReason.getChoice(i).getValue()){
var obj = {};
obj.reason_desc = fbReason.getChoice(i).getLabel();
obj.reason_id = fbReason.getChoice(i).getValue();
reasons.push(obj);
}
}
return new JSON().encode(reasons);
},
canCreateFeedbackTask: function(feedback) {
return (gs.getProperty('glide.knowman.feedback.enable_explicit_feedback', 'false') == 'true') ? (feedback.reason != this.OTHER_REASON || !gs.nil(feedback.comments)) : true;
},
type: 'KBFeedbackTaskSNC'
};
Sys ID
f708f3b167630300d358bb2d07415a18