SmartIT_Extensions/BMC/smart-it-full-helix/scripts/app/knowledge-article/knowledge-article-profile-c...

98 lines
4.6 KiB
JavaScript

"use strict";
(function () {
'use strict';
angular.module('knowledgeArticleModule')
.controller('KnowledgeArticleProfileController', ['$scope', '$state', 'knowledgeArticleModel', 'events', 'historyModel',
function ($scope, $state, knowledgeArticleModel, events, historyModel) {
$scope.articleId = $state.params.id;
$scope.preventIncrement = $state.params.preventIncrement;
$scope.profileType = $state.current.name;
$scope.showRateTool = true;
$scope.hideEditButton = false;
$scope.kcsAssessMode = $state.params.assessMode;
$scope.kcsAssessDuplicateMode = false;
$scope.fromFullArticle = false;
$scope.getLatestVersion = $state.params.version;
$scope.knowledgeArticleModel = knowledgeArticleModel;
$scope.state = {
savingVote: false,
commentTabActive: false
};
$scope.rateArticle = function (vote) {
knowledgeArticleModel.rateArticle($scope.articleId, vote);
};
$scope.setRatingVisibility = function (visible) {
var flag = $scope.article ? $scope.article.accessMappings.helpfulEditAllowed : true;
$scope.state.commentTabActive = !visible;
$scope.showRateTool = visible && flag;
};
$scope.setKcsAssessMode = function (value) {
$scope.kcsAssessMode = value;
};
$scope.setAssessFromFullArticle = function () {
$scope.fromFullArticle = true;
};
$scope.$on(events.KNOWLEDGE_ARTICLE_LOADED, function (event, data) {
historyModel.addToHistory(EntityVO.TYPE_KNOWLEDGE, data.article);
if (!$scope.article) {
$scope.article = data.article;
}
//This function gets called even outside edit mode like refresh in which case we shouldn't hide the edit button
if (!data.isEditMode) {
$scope.hideEditButton = false;
}
/* SW00511081 - always refresh assignee and support group info */
$scope.article.assignee = data.article.assignee;
$scope.article.supportGroup = data.article.supportGroup;
$scope.article.assigneeGroup = data.article.assigneeGroup;
$scope.article.accessMappings = data.article.accessMappings;
$scope.$broadcast(events.REFRESH_KA_META, data);
if (!$scope.article.accessMappings.detailsEditAllowed && !$scope.article.accessMappings.companyEditAllowed && !$scope.article.accessMappings.assigneeEditAllowed && !$scope.article.accessMappings.visibilitygroupsEditAllowed) {
$scope.hideEditButton = true;
}
if (!$scope.article.accessMappings.helpfulEditAllowed) {
$scope.showRateTool = false;
}
if ($scope.kcsAssessMode) {
$scope.hideEditButton = true;
}
});
$scope.$on(events.TICKET_PROFILE_RESEND_EVENT, function (event, resend) {
event.stopPropagation();
$scope.$broadcast(resend.eventName, resend.eventData);
});
$scope.$on(events.SELECT_ACTIVITY_TAB, function () {
$scope.state.commentTabActive = true;
});
$scope.$on(events.TOGGLE_KNOWLEDGE_ARTICLE_EDIT_MODE, function () {
$scope.hideEditButton = !$scope.hideEditButton;
});
$scope.$on(events.EDIT_COMPLETE, function () {
$scope.hideEditButton = false;
});
$scope.$on(events.TOGGLE_CHECK_DUPLICATE_MODE, function (event, data) {
$scope.toggleCheckDuplicateMode(data);
});
$scope.toggleCheckDuplicateMode = function (todo) {
$scope.kcsAssessDuplicateMode = todo;
};
$scope.exitAssessmentMode = function () {
if (!$scope.fromFullArticle) {
$state.go('knowledgeConsole');
}
else {
$scope.setAssessFromFullArticle(false);
$scope.setKcsAssessMode(false);
}
};
/**
* On refresh ticket upadte ticket activities
*/
$scope.$on(events.REFRESH_TICKET, function (event, data) {
$scope.$broadcast(events.REFRESH_ACTIVITY_FEED);
$scope.$broadcast(events.REFRESH_RESOURCE_FEED, data);
});
}
]);
})();