Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e47eab0ce7 | |||
| 17ae5b6b5a | |||
| fa29bf3309 | |||
| 684585278d | |||
| e303be8155 | |||
| f1285f0615 | |||
| 3fd1974d86 | |||
| d48716e65a | |||
| a0432051f4 | |||
| 076c3aa65b | |||
| 92abd16032 | |||
| e6632066a6 |
@@ -214,8 +214,11 @@ module.exports = function (grunt) {
|
||||
},
|
||||
src: [
|
||||
'build/EspoCRM-<%= pkg.version %>/install',
|
||||
'build/EspoCRM-<%= pkg.version %>/portal',
|
||||
'build/EspoCRM-<%= pkg.version %>/api',
|
||||
'build/EspoCRM-<%= pkg.version %>/api/v1',
|
||||
'build/EspoCRM-<%= pkg.version %>/api/v1/portal-access',
|
||||
'build/EspoCRM-<%= pkg.version %>',
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
@@ -460,13 +460,15 @@ class Importer
|
||||
if (preg_match('/filename="?([^"]+)"?/i', $contentDisposition, $m)) {
|
||||
$fileName = $m[1];
|
||||
return $fileName;
|
||||
} else if (preg_match('/filename\*="?([^"]+)"?/i', $contentDisposition, $m)) {
|
||||
} else if (preg_match('/filename\*[01]?="?([^"]+)"?/i', $contentDisposition, $m)) {
|
||||
$fileName = $m[1];
|
||||
if ($fileName && stripos($fileName, "''") !== false) {
|
||||
list($encoding, $fileName) = explode("''", $fileName);
|
||||
$fileName = rawurldecode($fileName);
|
||||
if (strtoupper($encoding) !== 'UTF-8') {
|
||||
$fileName = mb_convert_encoding($fileName, 'UTF-8', $encoding);
|
||||
if ($fileName) {
|
||||
if (stripos($fileName, "''") !== false) {
|
||||
list($encoding, $fileName) = explode("''", $fileName);
|
||||
$fileName = rawurldecode($fileName);
|
||||
if (strtoupper($encoding) !== 'UTF-8') {
|
||||
$fileName = mb_convert_encoding($fileName, 'UTF-8', $encoding);
|
||||
}
|
||||
}
|
||||
return $fileName;
|
||||
}
|
||||
|
||||
@@ -1069,7 +1069,7 @@ class Base
|
||||
|
||||
public function hasLeftJoin($leftJoin, &$result)
|
||||
{
|
||||
return in_array($leftJoin, $result['leftJoin']);
|
||||
return in_array($leftJoin, $result['leftJoins']);
|
||||
}
|
||||
|
||||
public function addJoin($join, &$result)
|
||||
|
||||
@@ -151,7 +151,10 @@ class Notifications extends \Espo\Core\Hooks\Base
|
||||
$query = $this->getEntityManager()->getQuery();
|
||||
$sql = "
|
||||
DELETE FROM `notification`
|
||||
WHERE related_id = ".$query->quote($entity->id)." AND related_type = ".$query->quote($entity->getEntityType()) ."
|
||||
WHERE
|
||||
(related_id = ".$query->quote($entity->id)." AND related_type = ".$query->quote($entity->getEntityType()) .")
|
||||
OR
|
||||
(related_parent_id = ".$query->quote($entity->id)." AND related_parent_type = ".$query->quote($entity->getEntityType()) .")
|
||||
";
|
||||
$this->getEntityManager()->getPDO()->query($sql);
|
||||
}
|
||||
|
||||
@@ -11,6 +11,12 @@
|
||||
"scopeFieldLevel": {
|
||||
"KnowledgeBaseArticle": {
|
||||
"portals": false
|
||||
},
|
||||
"Case": {
|
||||
"status": {
|
||||
"read": "yes",
|
||||
"edit": "no"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -271,7 +271,8 @@
|
||||
},
|
||||
"collection": {
|
||||
"sortBy": "name",
|
||||
"asc": true
|
||||
"asc": true,
|
||||
"textFilterFields": ["name", "emailAddress"]
|
||||
},
|
||||
"indexes": {
|
||||
"name": {
|
||||
|
||||
@@ -63,7 +63,7 @@ class Lead extends \Espo\Services\Record
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function afterCreate($entity, array $data, $data = array())
|
||||
public function afterCreate($entity, array $data = array())
|
||||
{
|
||||
parent::afterCreate($entity, $data);
|
||||
if (!empty($data['emailId'])) {
|
||||
|
||||
@@ -331,8 +331,8 @@
|
||||
},
|
||||
"options": {
|
||||
"salutationName": {
|
||||
"Mr.": "Hr.",
|
||||
"Ms.": "Fr.",
|
||||
"Mr.": "Herr",
|
||||
"Ms.": "Frau",
|
||||
"Mrs.": "Frl.",
|
||||
"Dr.": "Dr."
|
||||
},
|
||||
|
||||
@@ -30,6 +30,10 @@
|
||||
"related": {
|
||||
"type": "linkParent",
|
||||
"readOnly": true
|
||||
},
|
||||
"relatedParent": {
|
||||
"type": "linkParent",
|
||||
"readOnly": true
|
||||
}
|
||||
},
|
||||
"links": {
|
||||
@@ -39,6 +43,9 @@
|
||||
},
|
||||
"related": {
|
||||
"type": "belongsToParent"
|
||||
},
|
||||
"relatedParent": {
|
||||
"type": "belongsToParent"
|
||||
}
|
||||
},
|
||||
"collection": {
|
||||
|
||||
@@ -79,7 +79,7 @@ class Notification extends \Espo\Services\Record
|
||||
$now = date('Y-m-d H:i:s');
|
||||
$pdo = $this->getEntityManager()->getPDO();
|
||||
|
||||
$sql = "INSERT INTO `notification` (`id`, `data`, `type`, `user_id`, `created_at`, `related_id`, `related_type`) VALUES ";
|
||||
$sql = "INSERT INTO `notification` (`id`, `data`, `type`, `user_id`, `created_at`, `related_id`, `related_type`, `related_parent_id`, `related_parent_type`) VALUES ";
|
||||
$arr = [];
|
||||
foreach ($userIdList as $userId) {
|
||||
if (empty($userId)) continue;
|
||||
@@ -91,7 +91,7 @@ class Notification extends \Espo\Services\Record
|
||||
continue;
|
||||
}
|
||||
$id = uniqid();
|
||||
$arr[] = "(".$pdo->quote($id).", ".$pdo->quote($encodedData).", ".$pdo->quote('Note').", ".$pdo->quote($userId).", ".$pdo->quote($now).", ".$pdo->quote($note->id).", ".$pdo->quote('Note').")";
|
||||
$arr[] = "(".$pdo->quote($id).", ".$pdo->quote($encodedData).", ".$pdo->quote('Note').", ".$pdo->quote($userId).", ".$pdo->quote($now).", ".$pdo->quote($note->id).", ".$pdo->quote('Note').", ".$pdo->quote($note->get('parentId')).", ".$pdo->quote($note->get('parentType')).")";
|
||||
}
|
||||
|
||||
if (empty($arr)) {
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
<div class="cell form-group col-sm-6 col-md-12">
|
||||
<label class="control-label">{{translate 'Created'}}</label>
|
||||
<div class="field">
|
||||
<span data-name="createdAt">{{{createdAt}}}</span> <span class="text-muted">»</span> <span data-name="createdBy">{{{createdBy}}}</span>
|
||||
<span data-name="createdAt" class="field">{{{createdAt}}}</span> <span class="text-muted">»</span> <span data-name="createdBy" class="field">{{{createdBy}}}</span>
|
||||
</div>
|
||||
</div>
|
||||
{{/ifAttrNotEmpty}}
|
||||
@@ -23,7 +23,7 @@
|
||||
<div class="cell form-group col-sm-6 col-md-12">
|
||||
<label class="control-label">{{translate 'Modified'}}</label>
|
||||
<div class="field">
|
||||
<span data-name="modifiedAt">{{{modifiedAt}}}</span> <span class="text-muted">»</span> <span data-name="modifiedBy">{{{modifiedBy}}}</span>
|
||||
<span data-name="modifiedAt" class="field">{{{modifiedAt}}}</span> <span class="text-muted">»</span> <span data-name="modifiedBy" >{{{modifiedBy}}}</span>
|
||||
</div>
|
||||
</div>
|
||||
{{/ifAttrNotEmpty}}
|
||||
|
||||
@@ -62,7 +62,7 @@ Espo.define('views/global-search/global-search', 'view', function (Dep) {
|
||||
},
|
||||
|
||||
runSearch: function (text) {
|
||||
var text = this.$input.val();
|
||||
var text = this.$input.val().trim();
|
||||
if (text != '' && text.length > 2) {
|
||||
text = text;
|
||||
this.search(text);
|
||||
|
||||
@@ -610,7 +610,7 @@ Espo.define('views/record/search', 'view', function (Dep) {
|
||||
},
|
||||
|
||||
fetch: function () {
|
||||
this.textFilter = this.$el.find('input[name="textFilter"]').val();
|
||||
this.textFilter = this.$el.find('input[name="textFilter"]').val().trim();
|
||||
|
||||
this.bool = {};
|
||||
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "espocrm",
|
||||
"version": "4.0.2",
|
||||
"version": "4.0.3",
|
||||
"description": "",
|
||||
"main": "index.php",
|
||||
"repository": {
|
||||
|
||||
Reference in New Issue
Block a user