diff --git a/application/Espo/Core/Htmlizer/Htmlizer.php b/application/Espo/Core/Htmlizer/Htmlizer.php
index 3b992e49aa..f5d8ef6699 100644
--- a/application/Espo/Core/Htmlizer/Htmlizer.php
+++ b/application/Espo/Core/Htmlizer/Htmlizer.php
@@ -50,13 +50,19 @@ class Htmlizer
protected $entityManager;
- public function __construct(FileManager $fileManager, DateTime $dateTime, NumberUtil $number, $acl = null, $entityManager = null)
+ protected $metadata;
+
+ protected $language;
+
+ public function __construct(FileManager $fileManager, DateTime $dateTime, NumberUtil $number, $acl = null, $entityManager = null, $metadata = null, $language = null)
{
$this->fileManager = $fileManager;
$this->dateTime = $dateTime;
$this->number = $number;
$this->acl = $acl;
$this->entityManager = $entityManager;
+ $this->metadata = $metadata;
+ $this->language = $language;
}
protected function getAcl()
@@ -148,6 +154,14 @@ class Htmlizer
if (array_key_exists($field, $data)) {
$keyRaw = $field . '_RAW';
$data[$keyRaw] = $data[$field];
+
+ $fieldType = $this->getFieldType($entity->getEntityType(), $field);
+ if ($fieldType === 'enum') {
+ if ($this->language) {
+ $data[$field] = $this->language->translateOption($data[$field], $field, $entity->getEntityType());
+ }
+ }
+
$data[$field] = $this->format($data[$field]);
}
}
@@ -269,4 +283,9 @@ class Htmlizer
return $html;
}
+
+ protected function getFieldType($entityType, $field) {
+ if (!$this->metadata) return;
+ return $this->metadata->get(['entityDefs', $entityType, 'fields', $field, 'type']);
+ }
}
\ No newline at end of file
diff --git a/application/Espo/Core/SelectManagers/Base.php b/application/Espo/Core/SelectManagers/Base.php
index bd01633a8b..c000216a95 100644
--- a/application/Espo/Core/SelectManagers/Base.php
+++ b/application/Espo/Core/SelectManagers/Base.php
@@ -186,7 +186,6 @@ class Base
{
$this->prepareResult($result);
- $whereClause = array();
foreach ($where as $item) {
if (!isset($item['type'])) continue;
@@ -207,10 +206,17 @@ class Base
}
}
+ $whereClause = $this->convertWhere($where);
+
+ $result['whereClause'] = array_merge($result['whereClause'], $whereClause);
+ }
+
+ public function convertWhere(array $where, $ignoreAdditionaFilterTypes = false)
+ {
+ $whereClause = [];
$ignoreTypeList = array_merge(['bool', 'primary'], $this->additionalFilterTypeList);
- $additionalFilters = array();
foreach ($where as $item) {
if (!isset($item['type'])) continue;
@@ -221,7 +227,7 @@ class Base
$whereClause[] = $part;
}
} else {
- if (in_array($type, $this->additionalFilterTypeList)) {
+ if (!$ignoreAdditionaFilterTypes && in_array($type, $this->additionalFilterTypeList)) {
if (!empty($item['value'])) {
$methodName = 'apply' . ucfirst($type);
@@ -242,7 +248,7 @@ class Base
}
}
- $result['whereClause'] = array_merge($result['whereClause'], $whereClause);
+ return $whereClause;
}
protected function applyLinkedWith($link, $idsValue, &$result)
@@ -1563,4 +1569,3 @@ class Base
$this->filterFollowed($result);
}
}
-
diff --git a/application/Espo/Core/defaults/config.php b/application/Espo/Core/defaults/config.php
index b7b8c54b68..78a2ab54cf 100644
--- a/application/Espo/Core/defaults/config.php
+++ b/application/Espo/Core/defaults/config.php
@@ -139,7 +139,7 @@ return array (
'x' => 2,
'y' => 2,
'width' => 2,
- 'height' => 2
+ 'height' => 4
],
(object) [
'id' => 'default-stream',
@@ -148,14 +148,6 @@ return array (
'y' => 0,
'width' => 2,
'height' => 4
- ],
- (object) [
- 'id' => 'default-tasks',
- 'name' => 'Tasks',
- 'x' => 2,
- 'y' => 0,
- 'width' => 2,
- 'height' => 2
]
]
]
diff --git a/application/Espo/Modules/Crm/EntryPoints/SubscribeAgain.php b/application/Espo/Modules/Crm/EntryPoints/SubscribeAgain.php
index 6eae616935..b958e7897b 100644
--- a/application/Espo/Modules/Crm/EntryPoints/SubscribeAgain.php
+++ b/application/Espo/Modules/Crm/EntryPoints/SubscribeAgain.php
@@ -115,7 +115,7 @@ class SubscribeAgain extends \Espo\Core\EntryPoints\Base
}
echo $this->getLanguage()->translate('subscribedAgain', 'messages', 'Campaign');
echo '
';
- echo '' . $this->getLanguage()->translate('Unsubscribe again', 'labels', 'Campaign') . '';
+ echo '' . $this->getLanguage()->translate('Unsubscribe again', 'labels', 'Campaign') . '';
}
}
}
diff --git a/application/Espo/Modules/Crm/EntryPoints/Unsubscribe.php b/application/Espo/Modules/Crm/EntryPoints/Unsubscribe.php
index 575cc3d296..8581358ad2 100644
--- a/application/Espo/Modules/Crm/EntryPoints/Unsubscribe.php
+++ b/application/Espo/Modules/Crm/EntryPoints/Unsubscribe.php
@@ -115,7 +115,7 @@ class Unsubscribe extends \Espo\Core\EntryPoints\Base
}
echo $this->getLanguage()->translate('unsubscribed', 'messages', 'Campaign');
echo '
';
- echo '' . $this->getLanguage()->translate('Subscribe again', 'labels', 'Campaign') . '';
+ echo '' . $this->getLanguage()->translate('Subscribe again', 'labels', 'Campaign') . '';
}
}
}
diff --git a/application/Espo/Modules/Crm/Resources/i18n/en_US/Case.json b/application/Espo/Modules/Crm/Resources/i18n/en_US/Case.json
index f64956f535..efd30af696 100644
--- a/application/Espo/Modules/Crm/Resources/i18n/en_US/Case.json
+++ b/application/Espo/Modules/Crm/Resources/i18n/en_US/Case.json
@@ -9,12 +9,12 @@
"priority": "Priority",
"type": "Type",
"description": "Description",
- "inboundEmail": "Inbound Email",
+ "inboundEmail": "Group Email Account",
"lead": "Lead",
"attachments": "Attachments"
},
"links": {
- "inboundEmail": "Inbound Email",
+ "inboundEmail": "Group Email Account",
"account": "Account",
"contact": "Contact (Primary)",
"Contacts": "Contacts",
diff --git a/application/Espo/Modules/Crm/Resources/i18n/uk_UA/Account.json b/application/Espo/Modules/Crm/Resources/i18n/uk_UA/Account.json
index 7441a0fd68..e9c5f0b066 100644
--- a/application/Espo/Modules/Crm/Resources/i18n/uk_UA/Account.json
+++ b/application/Espo/Modules/Crm/Resources/i18n/uk_UA/Account.json
@@ -96,8 +96,6 @@
"Copy Billing": "Копія рахунку"
},
"presetFilters": {
- "customers": "Customers",
- "partners": "Partners",
"recentlyCreated": "Нещодавно Створений"
}
}
\ No newline at end of file
diff --git a/application/Espo/Modules/Crm/Resources/i18n/uk_UA/CampaignTrackingUrl.json b/application/Espo/Modules/Crm/Resources/i18n/uk_UA/CampaignTrackingUrl.json
index 0e3720209b..3da287bd6d 100644
--- a/application/Espo/Modules/Crm/Resources/i18n/uk_UA/CampaignTrackingUrl.json
+++ b/application/Espo/Modules/Crm/Resources/i18n/uk_UA/CampaignTrackingUrl.json
@@ -1,6 +1,5 @@
{
"fields": {
- "url": "URL",
"urlToUse": "Код для вставки замість URL",
"campaign": "Кампанія"
},
diff --git a/application/Espo/Modules/Crm/Resources/i18n/uk_UA/Case.json b/application/Espo/Modules/Crm/Resources/i18n/uk_UA/Case.json
index d845050312..c1ae00db81 100644
--- a/application/Espo/Modules/Crm/Resources/i18n/uk_UA/Case.json
+++ b/application/Espo/Modules/Crm/Resources/i18n/uk_UA/Case.json
@@ -9,11 +9,9 @@
"priority": "Пріоритет",
"type": "Тип",
"description": "Опис",
- "inboundEmail": "Вхідний лист",
"lead": "Лід"
},
"links": {
- "inboundEmail": "Вхідний лист",
"account": "Контрагент",
"contact": "Контакт (Основний)",
"Contacts": "Контакти",
diff --git a/application/Espo/Modules/Crm/Resources/i18n/uk_UA/Document.json b/application/Espo/Modules/Crm/Resources/i18n/uk_UA/Document.json
index 9c3403e15f..fe5e7f90a6 100644
--- a/application/Espo/Modules/Crm/Resources/i18n/uk_UA/Document.json
+++ b/application/Espo/Modules/Crm/Resources/i18n/uk_UA/Document.json
@@ -29,7 +29,7 @@
"Canceled": "Скасовано"
},
"type": {
- "": "Жоден",
+ "": "Немає",
"Contract": "Контракт",
"NDA": "\n NDA",
"EULA": "\n EULA",
diff --git a/application/Espo/Modules/Crm/Resources/i18n/uk_UA/Lead.json b/application/Espo/Modules/Crm/Resources/i18n/uk_UA/Lead.json
index 2a30e6cad2..3382b8a317 100644
--- a/application/Espo/Modules/Crm/Resources/i18n/uk_UA/Lead.json
+++ b/application/Espo/Modules/Crm/Resources/i18n/uk_UA/Lead.json
@@ -49,7 +49,7 @@
"Dead": "Мертвий"
},
"source": {
- "": "Жоден",
+ "": "Немає",
"Call": "Дзвінок",
"Email": "Емейл",
"Existing Customer": "Існуючий замовник",
diff --git a/application/Espo/Modules/Crm/Resources/i18n/uk_UA/Opportunity.json b/application/Espo/Modules/Crm/Resources/i18n/uk_UA/Opportunity.json
index 12a82e2a03..6b690187db 100644
--- a/application/Espo/Modules/Crm/Resources/i18n/uk_UA/Opportunity.json
+++ b/application/Espo/Modules/Crm/Resources/i18n/uk_UA/Opportunity.json
@@ -26,8 +26,6 @@
"stage": {
"Prospecting": "Проспектінг",
"Qualification": "Кваліфікація",
- "Proposal": "Пропозиція",
- "Negotiation": "Переговори",
"Needs Analysis": "Вимагає аналізу",
"Value Proposition": "Цінова пропозиція",
"Id. Decision Makers": "Визначення осіб, що приймають рішення",
@@ -35,7 +33,9 @@
"Proposal/Price Quote": "Квота пропозицій/цін",
"Negotiation/Review": "Переговори/перегляд",
"Closed Won": "Закрито переможно",
- "Closed Lost": "Закрито провалом"
+ "Closed Lost": "Закрито провалом",
+ "Proposal": "Пропозиція",
+ "Negotiation": "Переговори"
}
},
"labels": {
diff --git a/application/Espo/Modules/Crm/Resources/i18n/uk_UA/Task.json b/application/Espo/Modules/Crm/Resources/i18n/uk_UA/Task.json
index 19337be20a..123b781bcf 100644
--- a/application/Espo/Modules/Crm/Resources/i18n/uk_UA/Task.json
+++ b/application/Espo/Modules/Crm/Resources/i18n/uk_UA/Task.json
@@ -5,13 +5,10 @@
"status": "Статус",
"dateStart": "Дата початку",
"dateEnd": "Кінцева дата",
- "dateStartDate": "Date Start (all day)",
- "dateEndDate": "Date End (all day)",
"priority": "Пріоритет",
"description": "Опис",
"isOverdue": "Прострочено",
"account": "Контрагент",
- "dateCompleted": "Date Completed",
"attachments": "Вкладення",
"reminders": "Нагадування"
},
diff --git a/application/Espo/Modules/Crm/Resources/metadata/clientDefs/Call.json b/application/Espo/Modules/Crm/Resources/metadata/clientDefs/Call.json
index 4dc93644f3..61a53dc598 100644
--- a/application/Espo/Modules/Crm/Resources/metadata/clientDefs/Call.json
+++ b/application/Espo/Modules/Crm/Resources/metadata/clientDefs/Call.json
@@ -88,5 +88,6 @@
}
}
}
- }
+ },
+ "iconClass": "glyphicon glyphicon-phone-alt"
}
diff --git a/application/Espo/Modules/Crm/Resources/metadata/clientDefs/Contact.json b/application/Espo/Modules/Crm/Resources/metadata/clientDefs/Contact.json
index 76df51e9d5..7e618fa392 100644
--- a/application/Espo/Modules/Crm/Resources/metadata/clientDefs/Contact.json
+++ b/application/Espo/Modules/Crm/Resources/metadata/clientDefs/Contact.json
@@ -1,103 +1,119 @@
{
- "controller": "controllers/record",
- "aclPortal": "crm:acl-portal/contact",
- "views":{
- "detail":"crm:views/contact/detail"
- },
- "recordViews":{
- "detail": "crm:views/contact/record/detail",
- "detailQuick": "crm:views/contact/record/detail-small"
- },
- "defaultSidePanelFieldLists": {
- "detail": [
- {
- "name": "assignedUser"
- },
- {
- "name": "teams"
- },
- {
- "name": "portalUser"
- }
- ],
- "detailSmall": [
- {
- "name": "assignedUser"
- },
- {
- "name": "teams"
- },
- {
- "name": "portalUser"
- }
- ]
- },
- "sidePanels":{
- "detail":[
- {
- "name":"activities",
- "label":"Activities",
- "view":"crm:views/record/panels/activities",
- "aclScope": "Activities"
- },
- {
- "name":"history",
- "label":"History",
- "view":"crm:views/record/panels/history",
- "aclScope": "Activities"
- },
- {
- "name":"tasks",
- "label":"Tasks",
- "view":"crm:views/record/panels/tasks",
- "aclScope": "Task"
- }
- ],
- "detailSmall":[
- {
- "name":"activities",
- "label":"Activities",
- "view":"crm:views/record/panels/activities",
- "aclScope": "Activities"
- },
- {
- "name":"history",
- "label":"History",
- "view":"crm:views/record/panels/history",
- "aclScope": "Activities"
- },
- {
- "name":"tasks",
- "label":"Tasks",
- "view":"crm:views/record/panels/tasks",
- "aclScope": "Task"
- }
- ]
- },
- "relationshipPanels": {
- "campaignLogRecords": {
- "rowActionsView": "views/record/row-actions/empty",
- "select": false,
- "create": false
- },
- "opportunities":{
- "layout":"listForAccount"
- },
- "targetLists": {
- "create": false,
- "rowActionsView": "views/record/row-actions/relationship-unlink-only"
- }
- },
- "boolFilterList": ["onlyMy"],
- "additionalLayouts": {
- "detailConvert": {
- "type": "detail"
- },
- "listForAccount": {
- "type": "listSmall"
- }
- },
- "filterList": [
- "portalUsers"
- ]
-}
+ "controller": "controllers/record",
+ "aclPortal": "crm:acl-portal/contact",
+ "views": {
+ "detail": "crm:views/contact/detail"
+ },
+ "recordViews": {
+ "detail": "crm:views/contact/record/detail",
+ "detailQuick": "crm:views/contact/record/detail-small"
+ },
+ "defaultSidePanelFieldLists": {
+ "detail": [
+ {
+ "name": "assignedUser"
+ },
+ {
+ "name": "teams"
+ },
+ {
+ "name": "portalUser"
+ }
+ ],
+ "detailSmall": [
+ {
+ "name": "assignedUser"
+ },
+ {
+ "name": "teams"
+ },
+ {
+ "name": "portalUser"
+ }
+ ]
+ },
+ "sidePanels": {
+ "detail": [
+ {
+ "name": "activities",
+ "label": "Activities",
+ "view": "crm:views/record/panels/activities",
+ "aclScope": "Activities"
+ },
+ {
+ "name": "history",
+ "label": "History",
+ "view": "crm:views/record/panels/history",
+ "aclScope": "Activities"
+ },
+ {
+ "name": "tasks",
+ "label": "Tasks",
+ "view": "crm:views/record/panels/tasks",
+ "aclScope": "Task"
+ }
+ ],
+ "detailSmall": [
+ {
+ "name": "activities",
+ "label": "Activities",
+ "view": "crm:views/record/panels/activities",
+ "aclScope": "Activities"
+ },
+ {
+ "name": "history",
+ "label": "History",
+ "view": "crm:views/record/panels/history",
+ "aclScope": "Activities"
+ },
+ {
+ "name": "tasks",
+ "label": "Tasks",
+ "view": "crm:views/record/panels/tasks",
+ "aclScope": "Task"
+ }
+ ]
+ },
+ "relationshipPanels": {
+ "campaignLogRecords": {
+ "rowActionsView": "views/record/row-actions/empty",
+ "select": false,
+ "create": false
+ },
+ "opportunities": {
+ "layout": "listForAccount"
+ },
+ "targetLists": {
+ "create": false,
+ "rowActionsView": "views/record/row-actions/relationship-unlink-only"
+ }
+ },
+ "boolFilterList": [
+ "onlyMy"
+ ],
+ "additionalLayouts": {
+ "detailConvert": {
+ "type": "detail"
+ },
+ "listForAccount": {
+ "type": "listSmall"
+ }
+ },
+ "filterList": [
+ "portalUsers"
+ ],
+ "dynamicLogic": {
+ "fields": {
+ "title": {
+ "visible": {
+ "conditionGroup": [
+ {
+ "type": "isNotEmpty",
+ "attribute": "accountId"
+ }
+ ]
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/application/Espo/Modules/Crm/Resources/metadata/clientDefs/Meeting.json b/application/Espo/Modules/Crm/Resources/metadata/clientDefs/Meeting.json
index 9c4889e7ae..688d59e12e 100644
--- a/application/Espo/Modules/Crm/Resources/metadata/clientDefs/Meeting.json
+++ b/application/Espo/Modules/Crm/Resources/metadata/clientDefs/Meeting.json
@@ -95,5 +95,6 @@
}
}
}
- }
+ },
+ "iconClass": "glyphicon glyphicon-briefcase"
}
diff --git a/application/Espo/Modules/Crm/Resources/metadata/clientDefs/Task.json b/application/Espo/Modules/Crm/Resources/metadata/clientDefs/Task.json
index d673062c2c..0e27f72a60 100644
--- a/application/Espo/Modules/Crm/Resources/metadata/clientDefs/Task.json
+++ b/application/Espo/Modules/Crm/Resources/metadata/clientDefs/Task.json
@@ -1,73 +1,76 @@
{
- "controller": "controllers/record",
- "recordViews":{
- "list": "crm:views/task/record/list",
- "detail": "crm:views/task/record/detail"
- },
- "views": {
- "list": "crm:views/task/list",
- "detail": "crm:views/task/detail"
- },
- "dynamicLogic": {
- "fields": {
- "dateCompleted": {
- "visible": {
- "conditionGroup": [
- {
- "type": "equals",
- "attribute": "status",
- "value": "Completed"
- }
- ]
- }
- },
- "reminders": {
- "visible": {
- "conditionGroup": [
- {
- "type": "and",
- "value": [
+ "controller": "controllers/record",
+ "recordViews": {
+ "list": "crm:views/task/record/list",
+ "detail": "crm:views/task/record/detail"
+ },
+ "views": {
+ "list": "crm:views/task/list",
+ "detail": "crm:views/task/detail"
+ },
+ "dynamicLogic": {
+ "fields": {
+ "dateCompleted": {
+ "visible": {
+ "conditionGroup": [
{
- "type": "isNotEmpty",
- "attribute": "dateEnd"
- },
- {
- "type": "isEmpty",
- "attribute": "dateEndDate"
- },
- {
- "type": "notEquals",
- "attribute": "status",
- "value": "Completed"
- },
- {
- "type": "notEquals",
- "attribute": "status",
- "value": "Canceled"
+ "type": "equals",
+ "attribute": "status",
+ "value": "Completed"
}
- ]
- }
- ]
+ ]
+ }
+ },
+ "reminders": {
+ "visible": {
+ "conditionGroup": [
+ {
+ "type": "and",
+ "value": [
+ {
+ "type": "isNotEmpty",
+ "attribute": "dateEnd"
+ },
+ {
+ "type": "isEmpty",
+ "attribute": "dateEndDate"
+ },
+ {
+ "type": "notEquals",
+ "attribute": "status",
+ "value": "Completed"
+ },
+ {
+ "type": "notEquals",
+ "attribute": "status",
+ "value": "Canceled"
+ }
+ ]
+ }
+ ]
+ }
}
- }
- }
- },
- "filterList": [
- "actual",
- {
- "name":"completed",
- "style": "success"
- },
- {
- "name":"todays"
- },
- {
- "name":"overdue",
- "style": "danger"
- },
- {
- "name":"deferred"
- }
- ],
- "boolFilterList": ["onlyMy"]
-}
+ }
+ },
+ "filterList": [
+ "actual",
+ {
+ "name": "completed",
+ "style": "success"
+ },
+ {
+ "name": "todays"
+ },
+ {
+ "name": "overdue",
+ "style": "danger"
+ },
+ {
+ "name": "deferred"
+ }
+ ],
+ "boolFilterList": [
+ "onlyMy"
+ ],
+ "iconClass": "glyphicon glyphicon-list-alt"
+}
\ No newline at end of file
diff --git a/application/Espo/Modules/Crm/Resources/metadata/dashlets/Activities.json b/application/Espo/Modules/Crm/Resources/metadata/dashlets/Activities.json
index 07a5e227c4..dc79346fa8 100644
--- a/application/Espo/Modules/Crm/Resources/metadata/dashlets/Activities.json
+++ b/application/Espo/Modules/Crm/Resources/metadata/dashlets/Activities.json
@@ -24,7 +24,7 @@
"defaults": {
"displayRecords": 5,
"autorefreshInterval": 0.5,
- "enabledScopeList": ["Meeting", "Call"]
+ "enabledScopeList": ["Meeting", "Call", "Task"]
},
"layout": [
{
diff --git a/application/Espo/Modules/Crm/Resources/metadata/dashlets/Tasks.json b/application/Espo/Modules/Crm/Resources/metadata/dashlets/Tasks.json
index 7e1dc2a3a2..89e9d6b67d 100644
--- a/application/Espo/Modules/Crm/Resources/metadata/dashlets/Tasks.json
+++ b/application/Espo/Modules/Crm/Resources/metadata/dashlets/Tasks.json
@@ -47,7 +47,7 @@
"bool": {
"onlyMy": true
},
- "primary": "actualStartingNotInPast"
+ "primary": "actualStartingNotInFuture"
}
},
"layout": [
diff --git a/application/Espo/Modules/Crm/Resources/metadata/scopes/Task.json b/application/Espo/Modules/Crm/Resources/metadata/scopes/Task.json
index 01a08f0b76..3d0cbf32f5 100644
--- a/application/Espo/Modules/Crm/Resources/metadata/scopes/Task.json
+++ b/application/Espo/Modules/Crm/Resources/metadata/scopes/Task.json
@@ -5,6 +5,8 @@
"acl": true,
"aclPortal": true,
"aclPortalLevelList": ["all", "account", "contact", "own", "no"],
+ "activityStatusList": ["Not Started", "Started"],
+ "historyStatusList": ["Completed"],
"module": "Crm",
"customizable": true,
"importable": true,
diff --git a/application/Espo/Modules/Crm/SelectManagers/Task.php b/application/Espo/Modules/Crm/SelectManagers/Task.php
index ed895e8907..928f1e979b 100644
--- a/application/Espo/Modules/Crm/SelectManagers/Task.php
+++ b/application/Espo/Modules/Crm/SelectManagers/Task.php
@@ -55,7 +55,7 @@ class Task extends \Espo\Core\SelectManagers\Base
);
}
- protected function filterActualStartingNotInPast(&$result)
+ protected function filterActualStartingNotInFuture(&$result)
{
$result['whereClause'][] = array(
array(
diff --git a/application/Espo/Modules/Crm/Services/Activities.php b/application/Espo/Modules/Crm/Services/Activities.php
index ce201d8db3..a42a039fe2 100644
--- a/application/Espo/Modules/Crm/Services/Activities.php
+++ b/application/Espo/Modules/Crm/Services/Activities.php
@@ -1160,7 +1160,7 @@ class Activities extends \Espo\Core\Services\Base
$unionPartList = [];
foreach ($entityTypeList as $entityType) {
- if (!$this->getMetadata()->get(['scopes', $entityType, 'activity'])) continue;
+ if (!$this->getMetadata()->get(['scopes', $entityType, 'activity']) && $entityType !== 'Task') continue;
if (!$this->getAcl()->checkScope($entityType, 'read')) continue;
$selectParams = array(
@@ -1168,6 +1168,7 @@ class Activities extends \Espo\Core\Services\Base
'id',
'name',
'dateStart',
+ 'dateEnd',
['VALUE:' . $entityType, 'entityType']
]
);
@@ -1180,36 +1181,39 @@ class Activities extends \Espo\Core\Services\Base
$selectManager->applyTextFilter($params['textFilter'], $selectParams);
}
- $statusList = $this->getMetadata()->get(['scopes', $entityType, 'activityStatusList'], ['Planned']);
if (!$this->getMetadata()->get(['entityDefs', $entityType, 'fields', 'dateStart'])) continue;
if (!$this->getMetadata()->get(['entityDefs', $entityType, 'fields', 'dateEnd'])) continue;
$selectManager->applyBoolFilter('onlyMy', $selectParams);
- $selectManager->addAndWhere([
- 'status' => $statusList
- ], $selectParams);
- $selectManager->addOrWhere([
- $selectManager->convertDateTimeWhere(array(
- 'type' => 'today',
- 'field' => 'dateStart',
- 'timeZone' => $selectManager->getUserTimeZone()
- )),
- [
+
+ if ($entityType === 'Task') {
+ $selectManager->applyPrimaryFilter('actualStartingNotInFuture', $selectParams);
+ } else {
+ $selectManager->applyPrimaryFilter('planned', $selectParams);
+
+ $selectManager->addOrWhere([
$selectManager->convertDateTimeWhere(array(
- 'type' => 'future',
- 'field' => 'dateEnd',
+ 'type' => 'today',
+ 'field' => 'dateStart',
'timeZone' => $selectManager->getUserTimeZone()
)),
- $selectManager->convertDateTimeWhere(array(
- 'type' => 'before',
- 'field' => 'dateStart',
- 'value' => (new \DateTime())->modify('+' . self::UPCOMING_ACTIVITIES_FUTURE_DAYS . ' days')->format('Y-m-d H:i:s'),
- 'timeZone' => $selectManager->getUserTimeZone()
- ))
- ]
- ], $selectParams);
+ [
+ $selectManager->convertDateTimeWhere(array(
+ 'type' => 'future',
+ 'field' => 'dateEnd',
+ 'timeZone' => $selectManager->getUserTimeZone()
+ )),
+ $selectManager->convertDateTimeWhere(array(
+ 'type' => 'before',
+ 'field' => 'dateStart',
+ 'value' => (new \DateTime())->modify('+' . self::UPCOMING_ACTIVITIES_FUTURE_DAYS . ' days')->format('Y-m-d H:i:s'),
+ 'timeZone' => $selectManager->getUserTimeZone()
+ ))
+ ]
+ ], $selectParams);
+ }
$sql = $this->getEntityManager()->getQuery()->createSelectQuery($entityType, $selectParams);
@@ -1232,7 +1236,7 @@ class Activities extends \Espo\Core\Services\Base
$row = $sth->fetch(\PDO::FETCH_ASSOC);
$totalCount = $row['COUNT'];
- $unionSql .= " ORDER BY dateStart ASC";
+ $unionSql .= " ORDER BY dateStart, dateEnd ASC";
$unionSql .= " LIMIT :offset, :maxSize";
$sth = $pdo->prepare($unionSql);
diff --git a/application/Espo/Resources/i18n/en_US/InboundEmail.json b/application/Espo/Resources/i18n/en_US/InboundEmail.json
index dd7877b0a0..864979459a 100644
--- a/application/Espo/Resources/i18n/en_US/InboundEmail.json
+++ b/application/Espo/Resources/i18n/en_US/InboundEmail.json
@@ -54,7 +54,8 @@
},
"links": {
"filters": "Filters",
- "emails": "Emails"
+ "emails": "Emails",
+ "assignToUser": "Assign to User"
},
"options": {
"status": {
diff --git a/application/Espo/Resources/i18n/uk_UA/Admin.json b/application/Espo/Resources/i18n/uk_UA/Admin.json
index c0cc4911d9..fcc46f4e2c 100644
--- a/application/Espo/Resources/i18n/uk_UA/Admin.json
+++ b/application/Espo/Resources/i18n/uk_UA/Admin.json
@@ -9,7 +9,6 @@
"Customization": "Користувацькі налаштування",
"Available Fields": "Доступні поля",
"Layout": "Макет",
- "Entity Manager": "Entity Manager",
"Add Panel": "Додати панель",
"Add Field": "Додати поле",
"Settings": "Налаштування",
@@ -82,17 +81,11 @@
"currency": "Валюта",
"date": "Дата",
"datetime": "Дата, час",
- "datetimeOptional": "Date/DateTime",
"email": "Емейл",
"enum": "Список",
"enumInt": "Список цілі числа",
"enumFloat": "Список дробні числа",
"float": "Десятовий дріб",
- "int": "Ціле число",
- "link": "Link",
- "linkMultiple": "Link Multiple",
- "linkParent": "Link Parent",
- "multienim": "Множинний список",
"phone": "Телефон",
"text": "Текст",
"url": "URL-адреса",
@@ -107,6 +100,7 @@
"wysiwyg": "Редактор",
"map": "Карта",
"currencyConverted": "Валюта (ковертована)",
+ "int": "Ціле число",
"number": "Номер"
},
"fields": {
@@ -119,14 +113,11 @@
"options": "Опції",
"after": "Після (поле)",
"before": "Перед (поле)",
- "link": "Link",
"field": "Поле",
"min": "Мінімум",
"max": "Максимум",
"translation": "Переклад",
"previewSize": "Розмір передперегляду",
- "noEmptyString": "Немає вільного рядка",
- "defaultType": "Default Type",
"seeMoreDisabled": "Відключити обрізку тексту",
"entityList": "Список об'єктів",
"isSorted": "Відсортовано (за алфавітом)",
@@ -149,7 +140,8 @@
"dynamicLogicRequired": "Умови, які роблять поле обов’язковим",
"dynamicLogicOptions": "Умовні варіанти",
"probabilityMap": "Стадія імовірності (%)",
- "readOnly": "Виключно читання"
+ "readOnly": "Виключно читання",
+ "noEmptyString": "Немає вільного рядка"
},
"messages": {
"selectEntityType": "Оберіть тип сутности у лівому меню.",
@@ -163,8 +155,7 @@
"upgradeDone": "EspoCRM оновлено до версії {version}.",
"upgradeBackup": "Перед оновленням рекомендуємо створити резевну копію файлів EspoCRM та даних",
"thousandSeparatorEqualsDecimalMark": "Розділювач тисячних не може бути таким самим, як розділювач десяткових.",
- "userHasNoEmailAddress": "В користувача не вказана адреса електронної скриньки.",
- "uninstallConfirmation": "Ви впевнені, що хочете видалити розширення?"
+ "userHasNoEmailAddress": "В користувача не вказана адреса електронної скриньки."
},
"descriptions": {
"settings": "Системні налаштування додатку.",
@@ -189,10 +180,8 @@
"currency": "Налаштування валюти та курсу обміну.",
"extensions": "Встановлення або видалення розширень.",
"integrations": "Інтеграція зі сторонніми сервісами.",
- "notifications": "In-app and email notification settings.",
"inboundEmails": "Групувати поштові акаунти IMAP. Імпорт пошти та інтерфейс доступу до звернення через електронну пошту.",
"portalUsers": "Користувачі порталу.",
- "entityManager": "Create and edit custom entities. Manage fields and relationships.",
"emailFilters": "Електронні повідомлення, які відповідають вказаному фільтру, імпортуватися не будуть",
"actionHistory": "Лоґ дій користуча."
},
diff --git a/application/Espo/Resources/i18n/uk_UA/DynamicLogic.json b/application/Espo/Resources/i18n/uk_UA/DynamicLogic.json
index 5af659730a..27416f9afe 100644
--- a/application/Espo/Resources/i18n/uk_UA/DynamicLogic.json
+++ b/application/Espo/Resources/i18n/uk_UA/DynamicLogic.json
@@ -1,7 +1,4 @@
{
- "label": {
- "Field": "Поле"
- },
"options": {
"operators": {
"equals": "Так само",
diff --git a/application/Espo/Resources/i18n/uk_UA/Email.json b/application/Espo/Resources/i18n/uk_UA/Email.json
index f92ea41551..e2c50289c2 100644
--- a/application/Espo/Resources/i18n/uk_UA/Email.json
+++ b/application/Espo/Resources/i18n/uk_UA/Email.json
@@ -30,11 +30,11 @@
"name": "Тема",
"isReplied": "Відповіли",
"isNotReplied": "Без відповіді",
- "sentBy": "Надіслав (Користувач)",
"folder": "Папка",
"inboundEmails": "Група облікових записів",
"emailAccounts": "Особисті облікові записи",
- "hasAttachment": "Має Вкладення"
+ "hasAttachment": "Має Вкладення",
+ "sentBy": "Надіслав (Користувач)"
},
"links": {
"replied": "Відповіли",
@@ -70,8 +70,6 @@
"Mark Read": "Прочитане",
"Sending...": "Шле...",
"Save Draft": "Зберегти чернетку",
- "Mark all as read": "Mark all as read",
- "Show Plain Text": "Show Plain Text",
"Mark as Important": "Відмітити важливим",
"Unmark Importance": "Відмітити не важливим",
"Move to Trash": "Видалити в сміття",
@@ -89,8 +87,6 @@
"presetFilters": {
"sent": "Відправлено",
"archived": "В архіві",
- "inbox": "Inbox",
- "drafts": "Drafts",
"trash": "Сміття",
"important": "Важливо"
},
diff --git a/application/Espo/Resources/i18n/uk_UA/EmailAccount.json b/application/Espo/Resources/i18n/uk_UA/EmailAccount.json
index c6d03c068a..bbc0bb0604 100644
--- a/application/Espo/Resources/i18n/uk_UA/EmailAccount.json
+++ b/application/Espo/Resources/i18n/uk_UA/EmailAccount.json
@@ -7,7 +7,6 @@
"password": "Пароль",
"port": "Порт",
"monitoredFolders": "Відслідковувані теки",
- "ssl": "SSL",
"fetchSince": "Вибірки з",
"emailAddress": "Поштова скринька",
"sentFolder": "Папка відправлені",
@@ -34,15 +33,12 @@
},
"labels": {
"Create EmailAccount": "Додати емейл-акаунт",
- "IMAP": "IMAP",
"Main": "Основне",
"Test Connection": "Перевірка з'єднання",
- "Send Test Email": "Надіслати тестове електронне повідомлення",
- "SMTP": "SMTP"
+ "Send Test Email": "Надіслати тестове електронне повідомлення"
},
"messages": {
- "couldNotConnectToImap": "Не вдається підключитися до сервера IMAP",
- "connectionIsOk": "Connection is Ok"
+ "couldNotConnectToImap": "Не вдається підключитися до сервера IMAP"
},
"tooltips": {
"monitoredFolders": "You can add 'Sent' folder to sync emails sent from external email client.",
diff --git a/application/Espo/Resources/i18n/uk_UA/EntityManager.json b/application/Espo/Resources/i18n/uk_UA/EntityManager.json
index 434c0e0730..efd26d6f28 100644
--- a/application/Espo/Resources/i18n/uk_UA/EntityManager.json
+++ b/application/Espo/Resources/i18n/uk_UA/EntityManager.json
@@ -14,10 +14,6 @@
"stream": "Потік",
"label": "Мітка",
"linkType": "Тип посилання",
- "entityForeign": "Foreign Entity",
- "linkForeign": "Foreign Link",
- "link": "Link",
- "labelForeign": "Foreign Label",
"sortBy": "Сортування за замовчуванням (поле)",
"sortDirection": "Сортування за замовчуванням (напрямок)",
"relationName": "Назва середньої таблиці",
@@ -35,7 +31,6 @@
"": "Нема",
"Base": "База",
"Person": "Особа",
- "CategoryTree": "Category Tree",
"Event": "Подія",
"BasePlus": "База плюс",
"Company": "Компанія"
@@ -46,10 +41,6 @@
"manyToOne": "Багато-до-одного",
"parentToChildren": "Від батька до сина",
"childrenToParent": "Від сина до батька"
- },
- "sortDirection": {
- "asc": "Ascending",
- "desc": "Descending"
}
},
"messages": {
diff --git a/application/Espo/Resources/i18n/uk_UA/Export.json b/application/Espo/Resources/i18n/uk_UA/Export.json
index 6310f7d110..81644d5fa9 100644
--- a/application/Espo/Resources/i18n/uk_UA/Export.json
+++ b/application/Espo/Resources/i18n/uk_UA/Export.json
@@ -3,11 +3,5 @@
"fieldList": "Список полів",
"exportAllFields": "Експортувати всі поля",
"format": "Формат"
- },
- "options": {
- "format": {
- "csv": "CSV",
- "xlsx": "XLSX (Excel)"
- }
}
}
\ No newline at end of file
diff --git a/application/Espo/Resources/i18n/uk_UA/FieldManager.json b/application/Espo/Resources/i18n/uk_UA/FieldManager.json
index 25b3bf02b2..7cf4b61d34 100644
--- a/application/Espo/Resources/i18n/uk_UA/FieldManager.json
+++ b/application/Espo/Resources/i18n/uk_UA/FieldManager.json
@@ -4,7 +4,7 @@
},
"options": {
"dateTimeDefault": {
- "": "Жоден",
+ "": "Немає",
"javascript: return this.dateTime.getNow(1);": "На даний час",
"javascript: return this.dateTime.getNow(5);": "На даний час (5m)",
"javascript: return this.dateTime.getNow(15);": "На даний час (15m)",
@@ -30,7 +30,7 @@
"javascript: return this.dateTime.getDateTimeShiftedFromNow(1, 'week', 15);": "+1 тиждень"
},
"dateDefault": {
- "": "Жоден",
+ "": "Немає",
"javascript: return this.dateTime.getToday();": "Сьогодні",
"javascript: return this.dateTime.getDateShiftedFromToday(1, 'days');": "+1 день",
"javascript: return this.dateTime.getDateShiftedFromToday(2, 'days');": "+2 дні",
diff --git a/application/Espo/Resources/i18n/uk_UA/Global.json b/application/Espo/Resources/i18n/uk_UA/Global.json
index 0f9447896a..8d588ead47 100644
--- a/application/Espo/Resources/i18n/uk_UA/Global.json
+++ b/application/Espo/Resources/i18n/uk_UA/Global.json
@@ -45,7 +45,6 @@
"Dashboard": "Панель дашлетів",
"InboundEmail": "Inbound Email Accounts",
"Stream": "Потік",
- "Import": "Import Results",
"Template": "Шаблони",
"Job": "Завдання",
"EmailFilter": "Фільтри пошти",
@@ -106,7 +105,6 @@
"Details": "Деталі",
"Add Field": "Додати поле",
"Add Dashlet": "Додати дашлет",
- "Filter": "Filter",
"Edit Dashboard": "Змінити панель дашлетів",
"Add": "Додати",
"Add Item": "Додати елемент",
@@ -167,7 +165,6 @@
"change": "змінити",
"Change": "Зміна",
"Primary": "Первинне",
- "Save Filter": "Save Filter",
"Administration": "Адміністрування",
"Run Import": "Запустити імпорт",
"Duplicate": "Дуплікат",
@@ -181,10 +178,6 @@
"Close": "Закрити",
"Yes": "Так",
"No": "Немає",
- "Value": "Value",
- "Current version": "Current version",
- "List View": "List View",
- "Tree View": "Tree View",
"Unlink All": "Від’єднати всі",
"Total": "Загальний",
"Print to PDF": "Друк в PDF",
@@ -208,14 +201,11 @@
"messages": {
"pleaseWait": "Будь ласка, зачекайте...",
"posting": "Постимо...",
- "confirmLeaveOutMessage": "Are you sure you want to leave the form?",
"notModified": "Ви не внесли змін до запису",
"fieldIsRequired": "{field} обов'язкове",
"fieldShouldAfter": "{field} мусить бути після {otherField}",
"fieldShouldBefore": "{field} мусить бути до {otherField}",
"fieldShouldBeBetween": "{field} мусить бути між {min} і {max}",
- "fieldShouldBeLess": "{field} мусить бути менше ніж {value}",
- "fieldShouldBeGreater": "{field} мусить бути більше ніж {value}",
"fieldBadPasswordConfirm": "Правильність {field} не підтверджено",
"resetPreferencesDone": "Налаштування скинуті до значень за замовчуванням",
"confirmation": "Ви певні?",
@@ -237,7 +227,6 @@
"checkForNewNotifications": "Перевірити інформування",
"duplicate": "Створений Вами запис був дубльований",
"dropToAttach": "Відкріпити прикріплення",
- "streamPostInfo": "Тип @username для згадування користувачів у дописі.\nПрипустимий синтаксис розмітки:`code`\n**strong text**\n*emphasized text*\n~deleted text~\n> blockquote\n[текст](url)",
"writeMessageToSelf": "Написати повідомлення в своєму потоці",
"checkForNewNotes": "Перевірити наявність оновлень потоку",
"internalPost": "Повідомлення буде видно тільки внутрішнім користувачам",
@@ -255,7 +244,10 @@
"fieldShouldBeInt": "{field} повинно бути цілим числом",
"fieldShouldBeDate": "{field} має бути дійсною дата",
"fieldShouldBeDatetime": "{field} має бути дійсним дата/час",
- "internalPostTitle": "Повідомлення бачитимуть тільки внутрішні користувачі"
+ "internalPostTitle": "Повідомлення бачитимуть тільки внутрішні користувачі",
+ "fieldShouldBeLess": "{field} мусить бути менше ніж {value}",
+ "fieldShouldBeGreater": "{field} мусить бути більше ніж {value}",
+ "streamPostInfo": "Тип @username для згадування користувачів у дописі.\nПрипустимий синтаксис розмітки:`code`\n**strong text**\n*emphasized text*\n~deleted text~\n> blockquote\n[текст](url)"
},
"boolFilters": {
"onlyMy": "Тільки моє",
@@ -290,15 +282,8 @@
"description": "Опис",
"address": "Адреса",
"phoneNumber": "Телефон",
- "phoneNumberMobile": "Phone (Mobile)",
- "phoneNumberHome": "Phone (Home)",
- "phoneNumberFax": "Phone (Fax)",
- "phoneNumberOffice": "Phone (Office)",
- "phoneNumberOther": "Phone (Other)",
"order": "Сортування",
- "parent": "Батько",
- "children": "Children",
- "id": "ID"
+ "parent": "Батько"
},
"links": {
"assignedUser": "Відповідальний",
@@ -324,7 +309,6 @@
"streamMessages": {
"post": "{user} написав на {entityType} {entity}",
"attach": "{user} прикрипив до {entityType} {entity}",
- "status": "{user} updated {field} of {entityType} {entity}",
"update": "{user} поновив {entityType} {entity}",
"postTargetTeam": "{user} написав команді {target}",
"postTargetTeams": "{user} написав командам {target}",
@@ -334,7 +318,6 @@
"postTargetYou": "{user} написав для вас",
"postTargetYouAndOthers": "{user} написав для {target} та вас",
"postTargetAll": "{user} написав для всіх",
- "mentionInPost": "{user} mentioned {mentioned} in {entityType} {entity}",
"mentionYouInPost": "{user} згадав вас в {entityType} {entity} ",
"mentionInPostTarget": "{user} згаданий {mentioned} в повідомленні",
"mentionYouInPostTarget": "{user} згадав вас у повідомленні також {target}",
@@ -537,7 +520,6 @@
"afterXDays": "Після Х днів"
},
"searchRanges": {
- "is": "Is",
"isEmpty": "Пусто",
"isNotEmpty": "Не пусто",
"isFromTeams": "Від команди",
@@ -550,9 +532,7 @@
"varcharSearchRanges": {
"equals": "Дорівнює",
"like": "Це довподоби (%)",
- "startsWith": "Starts With",
"endsWith": "Закінчується",
- "contains": "Contains",
"isEmpty": "Пусто",
"isNotEmpty": "Не пусто"
},
@@ -687,10 +667,8 @@
}
},
"themes": {
- "Espo": "Espo",
"Sakura": "Сакура",
"Violet": "Фіолетовий",
- "EspoRtl": "RTL Espo",
"EspoVertical": "Espo бокова панель",
"SakuraVertical": "Сакура бокова панель",
"VioletVertical": "Фіолет бокова панель",
diff --git a/application/Espo/Resources/i18n/uk_UA/Import.json b/application/Espo/Resources/i18n/uk_UA/Import.json
index 7582e08446..42a84a6266 100644
--- a/application/Espo/Resources/i18n/uk_UA/Import.json
+++ b/application/Espo/Resources/i18n/uk_UA/Import.json
@@ -1,6 +1,5 @@
{
"labels": {
- "Revert Import": "Revert Import",
"Return to Import": "Повернутися до імпорту",
"Run Import": "Запустити імпорт",
"Back": "Назад",
@@ -11,10 +10,6 @@
"Updated": "Поновлено",
"Result": "Результат",
"Show records": "Показати записи",
- "Remove Duplicates": "Remove Duplicates",
- "importedCount": "Imported (count)",
- "duplicateCount": "Duplicates (count)",
- "updatedCount": "Updated (count)",
"Create Only": "Тільки створення",
"Create and Update": "Створення та оновлення",
"Update Only": "Тільки оновлення",
@@ -53,15 +48,10 @@
},
"messages": {
"utf8": "Мусить бути в кодуванні utf-8",
- "duplicatesRemoved": "Duplicates removed",
"inIdle": "Виконати у фоновому режимі (для великих даних; через cron)"
},
"fields": {
"file": "Файл",
- "entityType": "Entity Type",
- "imported": "Imported Records",
- "duplicates": "Duplicate Records",
- "updated": "Updated Records",
"status": "Статус"
},
"options": {
diff --git a/application/Espo/Resources/i18n/uk_UA/InboundEmail.json b/application/Espo/Resources/i18n/uk_UA/InboundEmail.json
index 075320d102..9e9610675c 100644
--- a/application/Espo/Resources/i18n/uk_UA/InboundEmail.json
+++ b/application/Espo/Resources/i18n/uk_UA/InboundEmail.json
@@ -10,7 +10,6 @@
"port": "Порт",
"monitoredFolders": "Відслідковувані теки",
"trashFolder": "Кошик",
- "ssl": "SSL",
"createCase": "Створити Звернення",
"reply": "Авто-Відповідь",
"caseDistribution": "Дистрибуція Звернень",
@@ -45,7 +44,7 @@
"Inactive": "Неактивний"
},
"caseDistribution": {
- "": "Жоден",
+ "": "Немає",
"Direct-Assignment": "Пряме призначення",
"Round-Robin": "Циклічне",
"Least-Busy": "Найвільнішим"
@@ -53,7 +52,6 @@
},
"labels": {
"Create InboundEmail": "Створити емейл-акаунт",
- "IMAP": "IMAP",
"Actions": "Дії",
"Main": "Основне"
},
diff --git a/application/Espo/Resources/i18n/uk_UA/Job.json b/application/Espo/Resources/i18n/uk_UA/Job.json
index 11b71751b8..21ae3b329d 100644
--- a/application/Espo/Resources/i18n/uk_UA/Job.json
+++ b/application/Espo/Resources/i18n/uk_UA/Job.json
@@ -5,9 +5,10 @@
"attempts": "Залишилось спроб",
"failedAttempts": "Невдалі спроби",
"serviceName": "Обслуговування",
- "method": "Метод",
+ "methodName": "Метод",
"scheduledJob": "Запланована робота",
- "data": "Дата"
+ "data": "Дата",
+ "method": "Метод"
},
"options": {
"status": {
diff --git a/application/Espo/Resources/i18n/uk_UA/Portal.json b/application/Espo/Resources/i18n/uk_UA/Portal.json
index e6b38c22bc..5a2207ca45 100644
--- a/application/Espo/Resources/i18n/uk_UA/Portal.json
+++ b/application/Espo/Resources/i18n/uk_UA/Portal.json
@@ -3,7 +3,6 @@
"name": "Ім'я",
"logo": "Лого",
"companyLogo": "Лого",
- "url": "URL",
"portalRoles": "Ролі",
"isActive": "Активний",
"isDefault": "Чи за замовчуванням",
diff --git a/application/Espo/Resources/i18n/uk_UA/PortalRole.json b/application/Espo/Resources/i18n/uk_UA/PortalRole.json
index bb1242653f..0085fe2865 100644
--- a/application/Espo/Resources/i18n/uk_UA/PortalRole.json
+++ b/application/Espo/Resources/i18n/uk_UA/PortalRole.json
@@ -5,7 +5,6 @@
"labels": {
"Access": "Доступ",
"Create PortalRole": "Створити Роль порталу",
- "Scope Level": "Область застосування Рівень",
- "Field Level": "Field Level"
+ "Scope Level": "Область застосування Рівень"
}
}
\ No newline at end of file
diff --git a/application/Espo/Resources/i18n/uk_UA/Preferences.json b/application/Espo/Resources/i18n/uk_UA/Preferences.json
index 1529a385c8..278b985baf 100644
--- a/application/Espo/Resources/i18n/uk_UA/Preferences.json
+++ b/application/Espo/Resources/i18n/uk_UA/Preferences.json
@@ -18,19 +18,18 @@
"smtpPassword": "Пароль",
"smtpEmailAddress": "Поштова скринька",
"exportDelimiter": "Експортувати роздільник даних",
- "autoFollowEntityTypeList": "Авто-підписка",
"signature": "Підпис емейла",
"dashboardTabList": "Список меню",
"tabList": "Список меню",
- "defaultReminders": "Default Reminders",
"theme": "Тема",
"useCustomTabList": "Власний список меню",
- "emailReplyToAllByDefault": "Емайл Відповісти Все за замовчуванням",
"receiveAssignmentEmailNotifications": "Отримувати повідомлення при призначенні",
"receiveMentionEmailNotifications": "Сповіщення по електронні пошті про згадування в повідомленнях",
"receiveStreamEmailNotifications": "Сповіщення по електронні пошті про повідомлення та оновлення статусу",
"dashboardLayout": "Макет панелі дашлетів",
"emailReplyForceHtml": "Відправити відповідь в HTML",
+ "autoFollowEntityTypeList": "Авто-підписка",
+ "emailReplyToAllByDefault": "Емайл Відповісти Все за замовчуванням",
"doNotFillAssignedUserIfNotRequired": "Не назначати користувача, якщо це не обов’язково",
"followEntityOnStreamPost": "Автоматично підписатись після публікації в потоці"
},
diff --git a/application/Espo/Resources/i18n/uk_UA/Role.json b/application/Espo/Resources/i18n/uk_UA/Role.json
index a6ada1646a..a80d18c115 100644
--- a/application/Espo/Resources/i18n/uk_UA/Role.json
+++ b/application/Espo/Resources/i18n/uk_UA/Role.json
@@ -18,8 +18,7 @@
"labels": {
"Access": "Доступ",
"Create Role": "Створити роль",
- "Scope Level": "Область застосування Рівень",
- "Field Level": "Field Level"
+ "Scope Level": "Область застосування Рівень"
},
"options": {
"accessList": {
diff --git a/application/Espo/Resources/i18n/uk_UA/Settings.json b/application/Espo/Resources/i18n/uk_UA/Settings.json
index 2ae69599b4..f2ddca7569 100644
--- a/application/Espo/Resources/i18n/uk_UA/Settings.json
+++ b/application/Espo/Resources/i18n/uk_UA/Settings.json
@@ -35,25 +35,19 @@
"globalSearchEntityList": "Список сутнотей для Глобального пошуку",
"authenticationMethod": "Метод автентифікації",
"ldapHost": "Хост",
- "ldapAccountCanonicalForm": "Account Canonical Form",
- "ldapAccountDomainName": "Account Domain Name",
"ldapTryUsernameSplit": "Спробувати відділити ім'я користувача",
"ldapCreateEspoUser": "Створити користувача в EspoCRM",
"ldapUserLoginFilter": "Фільтр логіну користувача",
- "ldapAccountDomainNameShort": "Account Domain Name Short",
"ldapOptReferrals": "Оптові реферали",
"exportDisabled": "Вимкнути експортування (доступно лише адміністру)",
"b2cMode": "Режим В2С",
"avatarsDisabled": "Вимкнути аватари",
- "followCreatedEntities": "Підписатися на створені сутності",
"displayListViewRecordCount": "Дисплей Загальна кількість (у вигляді списку)",
"theme": "Тема",
"userThemesDisabled": "Відключення теми користувача",
"emailMessageMaxSize": "Емайл Максимальний розмір (Мб)",
- "massEmailMaxPerHourCount": "Максимальна кількість відісланих за годину листів",
"personalEmailMaxPortionSize": "Максимальний розмір частини електронної пошти для витягнення особистого облікового запису",
"inboundEmailMaxPortionSize": "Максимальний розмір частини електронної пошти для вибірки облікових записів груп",
- "maxEmailAccountCount": "Максимальна кількість особистих болікових записів на користувача",
"authTokenLifetime": "Час існування токенів аутентифікації (в годинах)",
"authTokenMaxIdleTime": "Максимальний час простою токену аутентифікації (години)",
"dashboardLayout": "Макет панелі дашлетів (за замовчуванням)",
@@ -86,7 +80,9 @@
"activitiesEntityList": "Список сутностей Діяльності",
"historyEntityList": "Список сутностей Історії",
"currencyFormat": "Формат валюти",
- "currencyDecimalPlaces": "Currency Decimal Places"
+ "followCreatedEntities": "Підписатися на створені сутності",
+ "massEmailMaxPerHourCount": "Максимальна кількість відісланих за годину листів",
+ "maxEmailAccountCount": "Максимальна кількість особистих болікових записів на користувача"
},
"options": {
"weekStart": {
@@ -101,7 +97,6 @@
"tooltips": {
"recordsPerPage": "Кількість записів, що початково відображаються у списках.",
"recordsPerPageSmall": "Кількість записів, що початково відображаються у панелях зв'язків.",
- "outboundEmailIsShared": "Дозволити користувачам надсилати повідомлення через цей SMTP.",
"followCreatedEntities": "Користувачі будуть автоматично підписані на записи, які вони створюють",
"emailMessageMaxSize": "Усі вхідні повідомлення електронної пошти, що перевищують зазначений розмір вивантажуватимуться без тексту і вкладень.",
"authTokenLifetime": "Визначає, як довго можуть існувати токени.\n0 - означає відсутність закінчення терміну дії.",
@@ -129,15 +124,14 @@
"ldapUserTeams": "Команди для створеного користувача. Детальніше в профілі користувача.",
"ldapUserDefaultTeam": "Команди для створеного користувача за замовчуванням. Детальніше про це читайте профіль користувача.",
"b2cMode": "За замовчуванням EspoCRM адаптований для B2B. Ви можете переключити його на B2C.",
- "currencyDecimalPlaces": "Кількість знаків після десяткової коми. "
+ "currencyDecimalPlaces": "Кількість знаків після десяткової коми. ",
+ "outboundEmailIsShared": "Дозволити користувачам надсилати повідомлення через цей SMTP."
},
"labels": {
"System": "Система",
"Locale": "Локаль",
"SMTP": "Протокол SMTP",
"Configuration": "Конфігурація",
- "In-app Notifications": "In-app Notifications",
- "Email Notifications": "Email Notifications",
"Currency Settings": "Налаштування валюти",
"Currency Rates": "Курси валют",
"Mass Email": "Масова розсилка електронної пошти",
diff --git a/application/Espo/Resources/metadata/clientDefs/Email.json b/application/Espo/Resources/metadata/clientDefs/Email.json
index 64dab677d9..61c5c19af6 100644
--- a/application/Espo/Resources/metadata/clientDefs/Email.json
+++ b/application/Espo/Resources/metadata/clientDefs/Email.json
@@ -76,5 +76,6 @@
],
"defaultFilterData": {
},
- "boolFilterList": []
+ "boolFilterList": [],
+ "iconClass": "glyphicon glyphicon-envelope"
}
diff --git a/application/Espo/Resources/metadata/scopes/Template.json b/application/Espo/Resources/metadata/scopes/Template.json
index 8e9c6a176e..6520d3d108 100644
--- a/application/Espo/Resources/metadata/scopes/Template.json
+++ b/application/Espo/Resources/metadata/scopes/Template.json
@@ -3,6 +3,8 @@
"layouts": false,
"tab": true,
"acl": "recordAllTeamNo",
+ "aclPortal": true,
+ "aclPortalLevelList": ["all", "no"],
"customizable": true,
"disabled": false
}
diff --git a/application/Espo/Services/Pdf.php b/application/Espo/Services/Pdf.php
index 5944e6dcae..7aa64298b7 100644
--- a/application/Espo/Services/Pdf.php
+++ b/application/Espo/Services/Pdf.php
@@ -53,6 +53,7 @@ class Pdf extends \Espo\Core\Services\Base
$this->addDependency('dateTime');
$this->addDependency('number');
$this->addDependency('entityManager');
+ $this->addDependency('defaultLanguage');
}
protected function getAcl()
@@ -95,7 +96,15 @@ class Pdf extends \Espo\Core\Services\Base
throw new Forbidden();
}
- $htmlizer = new Htmlizer($this->getFileManager(), $this->getInjection('dateTime'), $this->getInjection('number'), $this->getAcl(), $this->getInjection('entityManager'));
+ $htmlizer = new Htmlizer(
+ $this->getFileManager(),
+ $this->getInjection('dateTime'),
+ $this->getInjection('number'),
+ $this->getAcl(),
+ $this->getInjection('entityManager'),
+ $this->getInjection('metadata'),
+ $this->getInjection('defaultLanguage')
+ );
$pdf = new \Espo\Core\Pdf\Tcpdf();
diff --git a/application/Espo/Services/Record.php b/application/Espo/Services/Record.php
index cb571bbd76..8038cbc7d4 100644
--- a/application/Espo/Services/Record.php
+++ b/application/Espo/Services/Record.php
@@ -397,13 +397,6 @@ class Record extends \Espo\Core\Services\Base
$assignmentPermission = $this->getAcl()->get('assignmentPermission');
- if (empty($assignedUserId)) {
- if ($assignmentPermission === 'no') {
- return false;
- }
- return true;
- }
-
if ($assignmentPermission === true || $assignmentPermission === 'yes' || !in_array($assignmentPermission, ['team', 'no'])) {
return true;
}
@@ -419,6 +412,12 @@ class Record extends \Espo\Core\Services\Base
}
if ($toProcess) {
+ if (empty($assignedUserId)) {
+ if ($assignmentPermission == 'no') {
+ return false;
+ }
+ return true;
+ }
if ($assignmentPermission == 'no') {
if ($this->getUser()->id != $assignedUserId) {
return false;
diff --git a/client/modules/crm/src/views/dashlets/abstract/chart.js b/client/modules/crm/src/views/dashlets/abstract/chart.js
index 51475b68e4..44fdda2c29 100644
--- a/client/modules/crm/src/views/dashlets/abstract/chart.js
+++ b/client/modules/crm/src/views/dashlets/abstract/chart.js
@@ -83,15 +83,22 @@ Espo.define('crm:views/dashlets/abstract/chart', ['views/dashlets/abstract/base'
}
}
- this.once('after:render', function () {
- $(window).on('resize.chart' + this.name, function () {
+ this.on('resize', function () {
+ if (!this.isRendered()) return;
+ setTimeout(function () {
this.adjustContainer();
this.draw();
- }.bind(this));
+ }.bind(this), 50);
}, this);
+
+ $(window).on('resize.chart' + this.id, function () {
+ this.adjustContainer();
+ this.draw();
+ }.bind(this));
+
this.once('remove', function () {
- $(window).off('resize.chart' + this.name)
+ $(window).off('resize.chart' + this.id)
}, this);
},
diff --git a/client/modules/crm/src/views/dashlets/activities.js b/client/modules/crm/src/views/dashlets/activities.js
index 3ed45a2448..308e97f65e 100644
--- a/client/modules/crm/src/views/dashlets/activities.js
+++ b/client/modules/crm/src/views/dashlets/activities.js
@@ -34,7 +34,7 @@ Espo.define('crm:views/dashlets/activities', ['views/dashlets/abstract/base', 'm
_template: '
1. Знайти файл httpd.conf файл (зазвичай його можна знайти у теці, званій conf, config або ще якось так)",
Н2. Всередині файла httpd.conf розкоментувати рядок LoadModule rewrite_module модулі/через mod_rewrite.so (видалити знак '#' на початку рядка)
3. Також пересвідчитися, що рядок ClearModuleList некоментований і переконайтеся, що рядок AddModule mod_rewrite.c не закомментирований.