diff --git a/application/Espo/Modules/Crm/Resources/i18n/en_US/KnowledgeBaseArticle.json b/application/Espo/Modules/Crm/Resources/i18n/en_US/KnowledgeBaseArticle.json index f72c877d9b..cd74f90a3d 100644 --- a/application/Espo/Modules/Crm/Resources/i18n/en_US/KnowledgeBaseArticle.json +++ b/application/Espo/Modules/Crm/Resources/i18n/en_US/KnowledgeBaseArticle.json @@ -13,12 +13,14 @@ "description": "Description", "body": "Body", "categories": "Categories", - "language": "Language" + "language": "Language", + "portals": "Portals" }, "links": { "cases": "Cases", "opportunities": "Opportunities", - "categories": "Categories" + "categories": "Categories", + "portals": "Portals" }, "options": { "status": { diff --git a/application/Espo/Modules/Crm/Resources/i18n/en_US/Portal.json b/application/Espo/Modules/Crm/Resources/i18n/en_US/Portal.json new file mode 100644 index 0000000000..b14d458f5f --- /dev/null +++ b/application/Espo/Modules/Crm/Resources/i18n/en_US/Portal.json @@ -0,0 +1,5 @@ +{ + "links": { + "articles": "Knlowledge Base Articles" + } +} diff --git a/application/Espo/Modules/Crm/Resources/layouts/KnowledgeBaseArticle/detail.json b/application/Espo/Modules/Crm/Resources/layouts/KnowledgeBaseArticle/detail.json index 9c9030aee8..a39a755119 100644 --- a/application/Espo/Modules/Crm/Resources/layouts/KnowledgeBaseArticle/detail.json +++ b/application/Espo/Modules/Crm/Resources/layouts/KnowledgeBaseArticle/detail.json @@ -4,8 +4,8 @@ "rows":[ [{"name":"name", "fullWidth": true}], [{"name":"status"}, {"name":"publishDate"}], - [{"name":"type"}, {"name":"expirationDate"}], - [{"name":"categories"}, {"name":"language"}], + [{"name":"categories"}, {"name":"expirationDate"}], + [{"name":"portals"}, {"name":"language"}], [{"name":"body", "fullWidth": true}], [{"name":"attachments", "fullWidth": true}] ] diff --git a/application/Espo/Modules/Crm/Resources/layouts/KnowledgeBaseArticle/detailSmall.json b/application/Espo/Modules/Crm/Resources/layouts/KnowledgeBaseArticle/detailSmall.json index 9775e7bc61..0c0df7df51 100644 --- a/application/Espo/Modules/Crm/Resources/layouts/KnowledgeBaseArticle/detailSmall.json +++ b/application/Espo/Modules/Crm/Resources/layouts/KnowledgeBaseArticle/detailSmall.json @@ -3,8 +3,8 @@ "label": "", "rows":[ [{"name":"name", "fullWidth": true}], - [{"name":"status"}, {"name":"type"}], - [{"name":"categories"}, {"name":"language"}], + [{"name":"status"}, {"name":"language"}], + [{"name":"categories"}, {"name":"portals"}], [{"name":"body", "fullWidth": true}], [{"name":"attachments", "fullWidth": true}] ] diff --git a/application/Espo/Modules/Crm/Resources/layouts/KnowledgeBaseArticle/filters.json b/application/Espo/Modules/Crm/Resources/layouts/KnowledgeBaseArticle/filters.json index 5f84e8720f..e93420e23f 100644 --- a/application/Espo/Modules/Crm/Resources/layouts/KnowledgeBaseArticle/filters.json +++ b/application/Espo/Modules/Crm/Resources/layouts/KnowledgeBaseArticle/filters.json @@ -2,7 +2,9 @@ "createdAt", "createdBy", "expirationDate", + "language", "type", "status", + "portals", "publishDate" ] diff --git a/application/Espo/Modules/Crm/Resources/layouts/KnowledgeBaseArticle/massUpdate.json b/application/Espo/Modules/Crm/Resources/layouts/KnowledgeBaseArticle/massUpdate.json index 300c7b26ff..f3d4471dc4 100644 --- a/application/Espo/Modules/Crm/Resources/layouts/KnowledgeBaseArticle/massUpdate.json +++ b/application/Espo/Modules/Crm/Resources/layouts/KnowledgeBaseArticle/massUpdate.json @@ -1,5 +1,6 @@ [ "categories" - "status" + "status", + "portals", "teams" ] diff --git a/application/Espo/Modules/Crm/Resources/metadata/app/aclPortal.json b/application/Espo/Modules/Crm/Resources/metadata/app/aclPortal.json new file mode 100644 index 0000000000..386fb4bad6 --- /dev/null +++ b/application/Espo/Modules/Crm/Resources/metadata/app/aclPortal.json @@ -0,0 +1,17 @@ +{ + "mandatory": { + "scopeLevel": { + "MassEmail": "Campaign", + "CampaignLogRecord": "Campaign", + "CampaignTrackingUrl": "Campaign", + "EmailQueueItem": false + } + }, + "default": { + "scopeFieldLevel": { + "KnowledgeBaseArticle": { + "portals": false + } + } + } +} \ No newline at end of file diff --git a/application/Espo/Modules/Crm/Resources/metadata/entityDefs/KnowledgeBaseArticle.json b/application/Espo/Modules/Crm/Resources/metadata/entityDefs/KnowledgeBaseArticle.json index 643d2144a4..9816b081ee 100644 --- a/application/Espo/Modules/Crm/Resources/metadata/entityDefs/KnowledgeBaseArticle.json +++ b/application/Espo/Modules/Crm/Resources/metadata/entityDefs/KnowledgeBaseArticle.json @@ -19,6 +19,9 @@ "type": "enum", "options": ["Article"] }, + "portals": { + "type": "linkMultiple" + }, "publishDate": { "type": "date" }, @@ -68,6 +71,11 @@ "entity": "Case", "foreign": "articles" }, + "portals": { + "type": "hasMany", + "entity": "Portal", + "foreign": "articles" + }, "createdBy": { "type": "belongsTo", "entity": "User" diff --git a/application/Espo/Modules/Crm/Resources/metadata/entityDefs/Portal.json b/application/Espo/Modules/Crm/Resources/metadata/entityDefs/Portal.json new file mode 100644 index 0000000000..931f3a433b --- /dev/null +++ b/application/Espo/Modules/Crm/Resources/metadata/entityDefs/Portal.json @@ -0,0 +1,9 @@ +{ + "links": { + "articles": { + "type": "hasMany", + "entity": "KnowledgeBaseArticle", + "foreign": "portals" + } + } +} diff --git a/application/Espo/Modules/Crm/SelectManagers/KnowledgeBaseArticle.php b/application/Espo/Modules/Crm/SelectManagers/KnowledgeBaseArticle.php index 340688b344..2e6274f152 100644 --- a/application/Espo/Modules/Crm/SelectManagers/KnowledgeBaseArticle.php +++ b/application/Espo/Modules/Crm/SelectManagers/KnowledgeBaseArticle.php @@ -44,6 +44,12 @@ class KnowledgeBaseArticle extends \Espo\Core\SelectManagers\Base if ($this->checkIsPortal()) { $this->filterPublished($result); + + $this->setDistinct(true, $result); + $this->addJoin('portals', $result); + $this->addAndWhere(array( + 'portals.id' => $this->getUser()->get('portalId') + ), $result); } }