Updating Knowledge Articles programmatically by Apex? - SalesforceProfs
Mon May 15 2023 15:58:04 GMT+0000 (Coordinated Universal Time)
Saved by
@hurrand
public with sharing class ArticlesUtils {
@AuraEnabled
public static List<Knowledge__kav> getAllArticles(){
return [ SELECT Id, KnowledgeArticleId, Title, UrlName FROM Knowledge__kav ];
}
@AuraEnabled
public static String createNewArticleAsADraft(String title, String urlName) {
Knowledge__kav newArticle = new Knowledge__kav();
newArticle.Title = title;
newArticle.UrlName = urlName;
insert newArticle;
return [SELECT KnowledgeArticleId FROM Knowledge__kav WHERE Id =: newArticle.Id].KnowledgeArticleId;
}
@AuraEnabled
public static void publishArticle(String recordId) { //It need to be KnowledgeArticleId
KbManagement.PublishingService.publishArticle(recordId, true);
}
@AuraEnabled
public static String unPublishArticle(String recordId){ //It need to be KnowledgeArticleId
String newArticleId = KbManagement.PublishingService.editOnlineArticle(recordId, true);
return [SELECT KnowledgeArticleId FROM Knowledge__kav WHERE Id =: newArticleId].KnowledgeArticleId;
}
@AuraEnabled
public static String updateDraftArticleWithoutPublish(String title, String urlName, Id recordId) {
Knowledge__kav newArticle = [ SELECT Id, KnowledgeArticleId, Title, UrlName FROM Knowledge__kav WHERE KnowledgeArticleId =: recordId ];
newArticle.Title = title;
newArticle.UrlName = urlName;
update newArticle;
return newArticle.KnowledgeArticleId;
}
@AuraEnabled
public static String updatetArticle(String title, String urlName, Id recordId) {
String newVersionId = unPublishArticle(recordId);
Knowledge__kav newArticle = [ SELECT Id, KnowledgeArticleId, Title, UrlName FROM Knowledge__kav WHERE KnowledgeArticleId =: newVersionId ];
newArticle.Title = title;
newArticle.UrlName = urlName;
update newArticle;
publishArticle(newVersionId);
return newVersionId;
}
}
content_copyCOPY
Utils for Knowledge Articles
https://salesforceprofs.com/updating-knowledge-articles-programmatically-by-apex/
Comments