From db49af84f47cfc50280adee00a609155474bdfec Mon Sep 17 00:00:00 2001 From: yuri Date: Thu, 11 Feb 2016 12:29:12 +0200 Subject: [PATCH] kb portals --- .../i18n/en_US/KnowledgeBaseArticle.json | 6 ++++-- .../Crm/Resources/i18n/en_US/Portal.json | 5 +++++ .../layouts/KnowledgeBaseArticle/detail.json | 4 ++-- .../KnowledgeBaseArticle/detailSmall.json | 4 ++-- .../layouts/KnowledgeBaseArticle/filters.json | 2 ++ .../KnowledgeBaseArticle/massUpdate.json | 3 ++- .../Crm/Resources/metadata/app/aclPortal.json | 17 +++++++++++++++++ .../entityDefs/KnowledgeBaseArticle.json | 8 ++++++++ .../Resources/metadata/entityDefs/Portal.json | 9 +++++++++ .../Crm/SelectManagers/KnowledgeBaseArticle.php | 6 ++++++ 10 files changed, 57 insertions(+), 7 deletions(-) create mode 100644 application/Espo/Modules/Crm/Resources/i18n/en_US/Portal.json create mode 100644 application/Espo/Modules/Crm/Resources/metadata/app/aclPortal.json create mode 100644 application/Espo/Modules/Crm/Resources/metadata/entityDefs/Portal.json 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); } }