Compare commits

...

3194 Commits
7.0.0 ... 7.3.2

Author SHA1 Message Date
Yuri Kuznetsov
c351a8fc02 v 2023-01-16 09:22:33 +02:00
Yuri Kuznetsov
14c0f12fe9 fix 2023-01-16 09:12:17 +02:00
Yuri Kuznetsov
9e5810c8cf lang 2023-01-15 11:12:02 +02:00
Yuri Kuznetsov
e6a0a94e17 label fix 2023-01-15 10:39:39 +02:00
Yuri Kuznetsov
777f9de3d9 oidc pass client secret 2023-01-15 10:31:53 +02:00
Yuri Kuznetsov
791c172c7a fix from name 2023-01-13 16:32:00 +02:00
Yuri Kuznetsov
3bef6d8e84 fix follow entity check acl 2023-01-12 20:27:46 +02:00
Yuri Kuznetsov
093d71e5ae mass action delete 2023-01-12 19:01:39 +02:00
Yuri Kuznetsov
67e83f5c9e labels 2023-01-12 12:27:47 +02:00
Yuri Kuznetsov
b952f3dbfb fix hide/show remove 2023-01-12 10:59:08 +02:00
Yuri Kuznetsov
23b125f552 fix grouped notifications 2023-01-12 10:13:48 +02:00
Yuri Kuznetsov
93e17e8f8d cleanup 2023-01-12 09:57:36 +02:00
Yuri Kuznetsov
9af562fda2 notifications fix 2023-01-11 14:31:49 +02:00
Yuri Kuznetsov
0612cd2399 fix 2023-01-11 13:05:32 +02:00
Yuri Kuznetsov
811ea3ad27 grouped popup notifications interval 2023-01-11 12:48:07 +02:00
Yuri Kuznetsov
967571f030 cs 2023-01-11 12:11:00 +02:00
Yuri Kuznetsov
ac2576b760 add idea/misc.xml 2023-01-11 09:20:58 +02:00
Taras Machyshyn
7f1bc0cf1d Upgrade script 2023-01-10 22:15:17 +02:00
Yuri Kuznetsov
3ba9ea5085 email prevent drag by menu 2023-01-10 11:31:26 +02:00
Yuri Kuznetsov
08512304f1 class alias check existance 2023-01-10 09:44:04 +02:00
Yuri Kuznetsov
c0da4e1777 setup system user attributes to select 2023-01-10 09:28:30 +02:00
Yuri Kuznetsov
14705e2100 v 2023-01-09 18:12:05 +02:00
Yuri Kuznetsov
0c99f35c02 fix working time calendar apperance 2023-01-09 18:11:26 +02:00
Yuri Kuznetsov
a91da86ae4 working calendar noJoin 2023-01-09 17:46:40 +02:00
Yuri Kuznetsov
fe726b2637 de_DE 2023-01-09 11:21:40 +02:00
Yuri Kuznetsov
8852dd7ea2 it_IT 2023-01-09 11:17:05 +02:00
Yuri Kuznetsov
44897a64b5 fix upgrade 2023-01-09 10:48:29 +02:00
Yuri Kuznetsov
4f160937a4 string for upgrade 2023-01-09 10:32:12 +02:00
Yuri Kuznetsov
6ca02933c9 v 2023-01-09 10:20:07 +02:00
Yuri Kuznetsov
d233d8ce46 fix smtp params bc 2023-01-05 16:05:16 +02:00
Yuri Kuznetsov
07db57717f campaign enable on list 2023-01-05 12:04:19 +02:00
Taras Machyshyn
6f676c8a2f 2023 year 2023-01-03 16:01:43 +02:00
Yuri Kuznetsov
ac667356c5 fix loading not hiding 2023-01-02 14:47:49 +02:00
Yuri Kuznetsov
acef776782 fix select caret width 2023-01-02 14:31:04 +02:00
Yuri Kuznetsov
ff41b49538 fix notice 2022-12-30 17:58:40 +02:00
Taras Machyshyn
24d2bd5cad Notice fixes 2022-12-30 15:10:08 +02:00
Yuri Kuznetsov
86a092ddb1 fix 2022-12-29 14:08:27 +02:00
Yuri Kuznetsov
6c2fa01375 fix lead capture message 2022-12-29 13:58:07 +02:00
Yuri Kuznetsov
77eaaa45d9 Merge branch 'fix' 2022-12-29 13:03:43 +02:00
David
3d8b487754 getColumns datatype fix (#2545)
Co-authored-by: David Moškoř <david.moskor@apertia.cz>
2022-12-29 13:03:06 +02:00
Yuri Kuznetsov
94c6715c21 Merge branch 'fix' 2022-12-26 13:24:26 +02:00
Yuri Kuznetsov
976a10ed0a fix 2022-12-26 13:24:18 +02:00
Yuri Kuznetsov
a5c7fb8905 ref move 2022-12-24 12:13:04 +02:00
Yuri Kuznetsov
4dec6b8d49 import task date completed 2022-12-24 11:04:03 +02:00
Yuri Kuznetsov
e1eaeab938 fix import null related name 2022-12-24 11:03:42 +02:00
Yuri Kuznetsov
4a4766cb0b Merge branch 'fix' 2022-12-23 22:08:20 +02:00
Yuri Kuznetsov
686219c60b fix btn add radous 2022-12-23 22:05:04 +02:00
Yuri Kuznetsov
a97c642d3b fix 2022-12-23 11:29:50 +02:00
Yuri Kuznetsov
432d45e122 lead capture is invalid fix 2022-12-23 11:27:15 +02:00
Yuri Kuznetsov
336bb95d11 fix 2022-12-20 14:36:58 +02:00
Yuri Kuznetsov
185a24f007 docs 2022-12-20 14:33:06 +02:00
Yuri Kuznetsov
6cfe9b6b43 cs 2022-12-20 14:21:36 +02:00
Yuri Kuznetsov
61cdcbfeb5 cs 2022-12-20 14:20:03 +02:00
Yuri Kuznetsov
b0a77054dc labels 2022-12-19 15:54:39 +02:00
Yuri Kuznetsov
f6fb791fd2 docs fix 2022-12-19 15:51:58 +02:00
Yuri Kuznetsov
ec3a6bf0a2 fix group email folder 2022-12-19 12:11:51 +02:00
Yuri Kuznetsov
8e277fdb36 css fix 2022-12-19 11:50:32 +02:00
Yuri Kuznetsov
085e5ef4bf currency no-join-mode 2022-12-19 10:58:05 +02:00
Yuri Kuznetsov
cf7f382784 oidc user provider 2022-12-18 21:32:18 +02:00
Yuri Kuznetsov
65266fcf25 link multiple custom field fixes 2022-12-17 11:16:58 +02:00
Yuri Kuznetsov
8bc34aab9b htmlizer take into account noLoad 2022-12-17 10:42:42 +02:00
Yuri Kuznetsov
3bd73f16a8 ref 2022-12-17 10:39:04 +02:00
Yuri Kuznetsov
0db4057d44 fix deleted return 2022-12-15 18:40:49 +02:00
Yuri Kuznetsov
f14bc07174 css fix 2022-12-13 18:30:11 +02:00
Yuri Kuznetsov
8e91786d99 fix list quick view show more issue 2022-12-13 17:48:24 +02:00
Yuri Kuznetsov
44745aef14 cs 2022-12-13 17:28:33 +02:00
Yuri Kuznetsov
56640839d2 cs 2022-12-12 12:55:43 +02:00
Yuri Kuznetsov
1e319a91ba phpdoc fix 2022-12-12 12:53:33 +02:00
Yuri Kuznetsov
c37b2964c2 cs 2022-12-12 12:06:04 +02:00
Yuri Kuznetsov
24647cd5fb attribute-fetcher foreign skip many 2022-12-10 15:19:21 +02:00
Yuri Kuznetsov
d407494579 fix warning 2022-12-09 15:56:53 +02:00
Yuri Kuznetsov
b43843f882 fix select auto position 2022-12-09 14:49:50 +02:00
Yuri Kuznetsov
87c5371846 formula attribute fetch phone email 2022-12-09 13:23:53 +02:00
Yuri Kuznetsov
7b9c6cdb3f ref 2022-12-09 13:17:43 +02:00
Yuri Kuznetsov
32ea4dae9d formula ref 2022-12-09 12:57:01 +02:00
Yuri Kuznetsov
a3cb0e6313 fix 2022-12-09 11:52:59 +02:00
Yuri Kuznetsov
0f88e535ad css fix 2022-12-08 21:58:42 +02:00
Yuri Kuznetsov
3edb739e2a lang acl anyScopeList 2022-12-08 20:12:30 +02:00
Yuri Kuznetsov
82ad48c586 jsdoc fix 2022-12-08 18:23:10 +02:00
Yuri Kuznetsov
710f6783bc select shortcut save fix 2022-12-08 18:22:23 +02:00
Yuri Kuznetsov
797c5453c9 fix select ctrl+s/enter 2022-12-08 13:54:58 +02:00
Yuri Kuznetsov
a03ef074ef css fix 2022-12-08 11:25:16 +02:00
Yuri Kuznetsov
1e6b28e560 multi-select use text param 2022-12-08 11:22:04 +02:00
Yuri Kuznetsov
77c7468512 ref 2022-12-08 11:19:31 +02:00
Yuri Kuznetsov
0764231ab6 fix select match any word 2022-12-08 10:59:03 +02:00
Yuri Kuznetsov
a779fc0a99 select hight 2022-12-08 10:39:47 +02:00
Yuri Kuznetsov
d5fb8af1a3 install default theme 2022-12-07 17:18:14 +02:00
Yuri Kuznetsov
3099ef6dc3 install checkboxes 2022-12-07 17:18:07 +02:00
Yuri Kuznetsov
078a445e18 cleanup 2022-12-07 10:49:58 +02:00
Yuri Kuznetsov
e6e1471a53 ref convert btn 2022-12-07 10:34:23 +02:00
Yuri Kuznetsov
b16ffc4739 follow button refactor 2022-12-06 20:24:50 +02:00
Yuri Kuznetsov
ec44deceaa record handler in setupFinal 2022-12-06 18:35:13 +02:00
Yuri Kuznetsov
31b416d3ee ref 2022-12-06 18:12:54 +02:00
Yuri Kuznetsov
9dd0f8eb70 js docs 2022-12-06 17:10:41 +02:00
Yuri Kuznetsov
cf508debae ref 2022-12-06 17:03:09 +02:00
Yuri Kuznetsov
e25227e853 cs 2022-12-05 12:17:20 +02:00
Yuri Kuznetsov
6bba422d07 fix select letter 2022-12-05 12:17:03 +02:00
Yuri Kuznetsov
a1337cefe4 email template & template selectize 2022-12-05 12:07:17 +02:00
Yuri Kuznetsov
1ce54bbb33 cs 2022-12-05 11:34:15 +02:00
Yuri Kuznetsov
e46edf2b36 ref 2022-12-04 15:41:52 +02:00
Yuri Kuznetsov
0093a03b7b ref 2022-12-04 15:23:35 +02:00
Yuri Kuznetsov
f35df154ae fix phpdoc 2022-12-04 14:11:01 +02:00
Yuri Kuznetsov
a5dc3aae70 fix phpdoc 2022-12-04 14:09:27 +02:00
Yuri Kuznetsov
847ac0c20a cs 2022-12-04 13:38:29 +02:00
Yuri Kuznetsov
87396518f1 save options 2022-12-04 13:32:27 +02:00
Yuri Kuznetsov
4ba74fe8b4 fix 2022-12-01 19:58:09 +02:00
Yuri Kuznetsov
8858d96cda no SMTP label 2022-12-01 19:52:55 +02:00
Yuri Kuznetsov
415e30ece8 cs 2022-12-01 19:38:29 +02:00
Yuri Kuznetsov
1a0958e65a label radius in var 2022-12-01 13:59:17 +02:00
Yuri Kuznetsov
cf0e5bb328 clientXFrameOptionsHeaderDisabled 2022-12-01 12:28:04 +02:00
Yuri Kuznetsov
b02e1218ee update flotr 2022-11-30 17:34:26 +02:00
Yuri Kuznetsov
ba478fcce5 timepicker css fix 2022-11-30 10:54:24 +02:00
Yuri Kuznetsov
9682138038 ref 2022-11-29 21:11:09 +02:00
Yuri Kuznetsov
59499f6f07 ref 2022-11-29 21:08:57 +02:00
Yuri Kuznetsov
b425a335ab fix typo 2022-11-29 20:38:47 +02:00
Yuri Kuznetsov
8cdde45b1b ref 2022-11-29 20:37:35 +02:00
Yuri Kuznetsov
d00925d99a ref 2022-11-29 20:35:42 +02:00
Yuri Kuznetsov
2fffec3e5d css fix 2022-11-29 18:54:31 +02:00
Yuri Kuznetsov
395785d0c4 cs 2022-11-29 18:31:17 +02:00
Yuri Kuznetsov
3812856740 ref 2022-11-29 18:19:11 +02:00
Yuri Kuznetsov
088558d969 cleanup 2022-11-29 17:59:12 +02:00
Yuri Kuznetsov
d79e81f652 ref 2022-11-29 17:58:41 +02:00
Yuri Kuznetsov
39c0f159a8 ref 2022-11-29 17:56:45 +02:00
Yuri Kuznetsov
f2ea162952 campaign log impr 2022-11-29 17:27:06 +02:00
Yuri Kuznetsov
fdde599205 style fix 2022-11-29 16:10:18 +02:00
Yuri Kuznetsov
7e80ca806d fix currency validation 2022-11-29 16:05:43 +02:00
Yuri Kuznetsov
09bf5219ad cs 2022-11-29 13:29:49 +02:00
Yuri Kuznetsov
9922dc8e22 doc fix 2022-11-29 13:10:57 +02:00
Yuri Kuznetsov
b9bb4bc0b5 readme fix 2022-11-29 13:03:35 +02:00
Yuri Kuznetsov
d5a928d955 fix save duplicate 2022-11-29 12:27:29 +02:00
Yuri Kuznetsov
aad2ab08c5 fix docs 2022-11-29 12:08:29 +02:00
Yuri Kuznetsov
5d18d50ca0 ref 2022-11-29 12:01:23 +02:00
Yuri Kuznetsov
54f2ab411f ref 2022-11-29 11:41:49 +02:00
Yuri Kuznetsov
b066c3d3da fix email drop css 2022-11-28 18:01:17 +02:00
Yuri Kuznetsov
957a2fa171 fix upgrade 2022-11-28 17:06:30 +02:00
Yuri Kuznetsov
61ccee3ac2 unknown error msg 2022-11-28 16:52:20 +02:00
Yuri Kuznetsov
c889edb782 cs 2022-11-28 16:50:32 +02:00
Yuri Kuznetsov
e1f673fe78 prevent email drag on touch devise 2022-11-28 16:44:45 +02:00
Yuri Kuznetsov
8b781d32da focus fix 2022-11-28 16:01:15 +02:00
Yuri Kuznetsov
3c06d6684e send invintations from modal fix 2022-11-28 15:47:19 +02:00
Yuri Kuznetsov
6bf8274d11 fix focus 2022-11-28 15:33:20 +02:00
Yuri Kuznetsov
2b59c5bdec email template fix inline attachments 2022-11-28 14:22:30 +02:00
Yuri Kuznetsov
4f6497f412 fix workflow 2022-11-28 12:27:12 +02:00
Yuri Kuznetsov
1fa937ef64 focus fix 2022-11-28 09:43:11 +02:00
Yuri Kuznetsov
4ffc309e11 fix 2022-11-28 09:36:47 +02:00
Yuri Kuznetsov
33b60e6791 email account tabs 2022-11-27 19:52:54 +02:00
Yuri Kuznetsov
378bebb2bf fix select 2022-11-27 19:07:00 +02:00
Yuri Kuznetsov
7925f2468a from address select 2022-11-27 19:05:08 +02:00
Yuri Kuznetsov
a1d0c494af ref 2022-11-27 19:01:13 +02:00
Yuri Kuznetsov
a86ca38bd7 reply from address email sent to 2022-11-27 18:55:32 +02:00
Yuri Kuznetsov
18cf4c4cf5 email archived save shortcut 2022-11-27 18:44:35 +02:00
Yuri Kuznetsov
cf42f49431 email archived save shortcut 2022-11-27 18:44:12 +02:00
Yuri Kuznetsov
82df939bda cleanup 2022-11-27 16:22:09 +02:00
Yuri Kuznetsov
94f0c0bb3e fix typo 2022-11-27 14:05:00 +02:00
Yuri Kuznetsov
9f78afd0e6 8.2 integration test workflow 2022-11-27 13:59:49 +02:00
Yuri Kuznetsov
04f4a4a63a exception hasLogLevel 2022-11-27 13:55:54 +02:00
Yuri Kuznetsov
31c226dd16 fix property access 2022-11-27 13:34:05 +02:00
Yuri Kuznetsov
9fe3f7cdf8 cs 2022-11-27 13:30:19 +02:00
Yuri Kuznetsov
be744399cb add 8,2 to test workflow 2022-11-27 13:25:29 +02:00
Yuri Kuznetsov
866c336a0b remove zend bridge 2022-11-27 13:16:48 +02:00
Yuri Kuznetsov
4928edc4d1 update laminas crypt 2022-11-27 12:33:22 +02:00
Yuri Kuznetsov
2e1b35d404 remove prophecy 2022-11-27 12:32:08 +02:00
Yuri Kuznetsov
a8db63910e composer dep updates 2022-11-27 12:27:18 +02:00
Yuri Kuznetsov
2cde8e8918 jsdoc 2022-11-26 20:50:21 +02:00
Yuri Kuznetsov
6c59f70cf4 jsdoc 2022-11-26 20:38:17 +02:00
Yuri Kuznetsov
2ac1c8d444 cs 2022-11-26 20:10:13 +02:00
Yuri Kuznetsov
7526e737b8 once-remove => on-remove 2022-11-26 19:55:18 +02:00
Yuri Kuznetsov
0d44d04a17 ref 2022-11-26 19:50:06 +02:00
Yuri Kuznetsov
bc81154ce2 ref 2022-11-26 19:48:47 +02:00
Yuri Kuznetsov
1632668529 ref 2022-11-26 19:46:54 +02:00
Yuri Kuznetsov
fbd05ebafa ref 2022-11-26 19:45:19 +02:00
Yuri Kuznetsov
2c6f9f02df cleanup 2022-11-26 19:43:18 +02:00
Yuri Kuznetsov
5c572b9750 scheduler item bg color fix 2022-11-26 19:41:28 +02:00
Yuri Kuznetsov
5be21c7342 cs fix 2022-11-26 19:38:35 +02:00
Yuri Kuznetsov
7d662eab8e disable call scheduler by default 2022-11-26 19:35:19 +02:00
Yuri Kuznetsov
8734a00d11 cs fix 2022-11-26 19:31:15 +02:00
Yuri Kuznetsov
d4511e3983 scheduler on edit-small 2022-11-26 19:21:23 +02:00
Yuri Kuznetsov
ae643c5a28 phone/email is invalid fields 2022-11-25 18:05:40 +02:00
Yuri Kuznetsov
e6dc5dd12b bool search selectize 2022-11-25 11:28:58 +02:00
Yuri Kuznetsov
566f92149c ref 2022-11-25 10:55:35 +02:00
Yuri Kuznetsov
99bf7fc524 ref 2022-11-25 10:47:58 +02:00
Yuri Kuznetsov
b350bd4fc1 event confirmation fixes 2022-11-25 09:41:16 +02:00
Yuri Kuznetsov
58d1e67b53 Merge branch 'fix' 2022-11-25 08:58:23 +02:00
Yuri Kuznetsov
20855e81d4 fix remove related from modal 2022-11-25 08:57:56 +02:00
Yuri Kuznetsov
3282de2c8f cancellation email 2022-11-23 17:53:08 +02:00
Yuri Kuznetsov
72f51ec77c ref 2022-11-23 13:48:27 +02:00
Yuri Kuznetsov
c8558f0cba fix templates 2022-11-23 13:26:47 +02:00
Yuri Kuznetsov
d0876db1f7 color icon rounded 2022-11-23 13:07:07 +02:00
Yuri Kuznetsov
efd7de49c6 cs 2022-11-23 12:39:13 +02:00
Yuri Kuznetsov
5ae6fb0020 cs 2022-11-23 12:30:03 +02:00
Yuri Kuznetsov
1057b8bc95 ref 2022-11-23 12:26:48 +02:00
Yuri Kuznetsov
3076b6c8ea send invitations impr 2022-11-23 12:05:54 +02:00
Yuri Kuznetsov
b7ff603772 collapsed modal css fix 2022-11-22 12:13:48 +02:00
Yuri Kuznetsov
b996389845 do not show send invitations for past events 2022-11-22 11:23:50 +02:00
Yuri Kuznetsov
ca2d1217cd acl checkField test 2022-11-21 18:49:49 +02:00
Yuri Kuznetsov
227b0fb828 get attendees api endpoint 2022-11-21 18:32:00 +02:00
Yuri Kuznetsov
ac28ae5a9b acl checkField 2022-11-21 18:13:04 +02:00
Yuri Kuznetsov
04eaf4db02 clientStrictTransportSecurityHeaderDisabled param 2022-11-21 13:05:42 +02:00
Yuri Kuznetsov
a380d7e5f9 currency validation 2022-11-21 12:56:31 +02:00
Yuri Kuznetsov
73af7d4119 currency field ui impr 2022-11-21 12:47:14 +02:00
Yuri Kuznetsov
4762237796 wysiwyg modals impr 2022-11-21 12:13:35 +02:00
Yuri Kuznetsov
591a4f0f32 wysiwyg click event 2022-11-21 11:52:32 +02:00
Yuri Kuznetsov
d28cc59feb cs 2022-11-21 11:28:43 +02:00
Yuri Kuznetsov
be899564c1 css radius input group addon 2022-11-21 11:20:31 +02:00
Yuri Kuznetsov
6fb8e7ab37 type fix 2022-11-20 14:05:53 +02:00
Yuri Kuznetsov
047b07d3c9 binding improvements 2022-11-20 13:25:54 +02:00
Yuri Kuznetsov
8f0969eb5d cs 2022-11-20 11:54:22 +02:00
Yuri Kuznetsov
b92975c9b7 cs 2022-11-20 11:51:34 +02:00
Yuri Kuznetsov
0cfc69cdaa currency input-group flex 2022-11-19 20:36:37 +02:00
Yuri Kuznetsov
1b497c81c7 selectize dropdown css fix 2022-11-19 17:20:47 +02:00
Yuri Kuznetsov
eab2dbd1b4 fix link item input column 2022-11-19 16:36:16 +02:00
Yuri Kuznetsov
4eac37ad61 destroy timepicker 2022-11-19 16:15:41 +02:00
Yuri Kuznetsov
dc658a6b06 fix 2022-11-19 16:08:31 +02:00
Yuri Kuznetsov
9d3aaebf24 cleanup 2022-11-19 15:56:30 +02:00
Yuri Kuznetsov
f5b6876626 ref 2022-11-19 15:53:52 +02:00
Yuri Kuznetsov
5d7893e4ee no min width selectbox 2022-11-19 15:33:03 +02:00
Yuri Kuznetsov
01ef55ffc1 fix test 2022-11-19 14:08:22 +02:00
Yuri Kuznetsov
551d97883f assignment notif discard task 2022-11-19 13:51:18 +02:00
Yuri Kuznetsov
68ccfe735f select click flick fix 2022-11-19 12:54:12 +02:00
Yuri Kuznetsov
de4ed2100c select scroll impr 2022-11-19 12:36:43 +02:00
Yuri Kuznetsov
b602ef8eb8 acceptance button style 2022-11-19 11:22:19 +02:00
Yuri Kuznetsov
5ade5cf4c1 arbitrary duration 2022-11-19 10:52:33 +02:00
Yuri Kuznetsov
7cb7719cf6 select ref 2022-11-19 10:43:26 +02:00
Yuri Kuznetsov
d07be2b5f4 css fix 2022-11-18 23:16:22 +02:00
Yuri Kuznetsov
77f01fd28d change reminder list 2022-11-18 18:23:42 +02:00
Yuri Kuznetsov
93fb78cf71 remider duration impr 2022-11-18 18:14:19 +02:00
Yuri Kuznetsov
2ff28ba8ca select fix 2022-11-18 17:58:14 +02:00
Yuri Kuznetsov
01b9b735e5 duration search fix 2022-11-18 17:44:19 +02:00
Yuri Kuznetsov
751a293319 select fix width 2022-11-18 17:43:58 +02:00
Yuri Kuznetsov
2e1cd55ee2 select fix 2022-11-18 15:41:10 +02:00
Yuri Kuznetsov
45bdd62bbf select uix fix 2022-11-18 14:44:55 +02:00
Yuri Kuznetsov
9a56ca9599 enable meeting stream by default 2022-11-18 13:45:32 +02:00
Yuri Kuznetsov
1eb5fab3e3 reminder arbitrary values 2022-11-18 12:54:52 +02:00
Yuri Kuznetsov
99ca025ded ref 2022-11-18 11:01:23 +02:00
Yuri Kuznetsov
3fa83db99f css fix 2022-11-17 23:22:40 +02:00
Yuri Kuznetsov
f143dc7042 fix reset options 2022-11-17 22:53:35 +02:00
Yuri Kuznetsov
1a8a93c03a select fixes 2022-11-17 21:09:41 +02:00
Yuri Kuznetsov
9bbd51fd61 select fix 2022-11-17 19:39:12 +02:00
Yuri Kuznetsov
00238ba043 phone/email uix impr 2022-11-17 19:25:35 +02:00
Yuri Kuznetsov
2147e3073c cs 2022-11-17 18:30:46 +02:00
Yuri Kuznetsov
3f9dc78fa4 css fix 2022-11-17 18:26:17 +02:00
Yuri Kuznetsov
0c8c3ef5f4 phpdoc fix 2022-11-17 18:19:32 +02:00
Yuri Kuznetsov
b6cafb1a35 invitation no email access required 2022-11-17 18:18:12 +02:00
Yuri Kuznetsov
c3ace0b56d note event confirmation icon 2022-11-17 18:14:46 +02:00
Yuri Kuznetsov
0c3b452d6f acceptance button style 2022-11-17 16:46:52 +02:00
Yuri Kuznetsov
297c973695 reminder validation 2022-11-17 16:28:32 +02:00
Yuri Kuznetsov
57ec132aa7 fix 2022-11-17 15:52:59 +02:00
Yuri Kuznetsov
d1b10de17d reminder show only actual items 2022-11-17 15:45:24 +02:00
Yuri Kuznetsov
85549cf39f datepicker fixes 2022-11-17 15:21:23 +02:00
Yuri Kuznetsov
bba2d5b898 fix 2022-11-17 14:46:29 +02:00
Yuri Kuznetsov
4e0de42b0d selectbox improvement 2022-11-17 14:22:31 +02:00
Yuri Kuznetsov
66fc373af6 fix 2022-11-15 13:31:08 +02:00
Yuri Kuznetsov
d7e215505f cs 2022-11-15 10:39:17 +02:00
Yuri Kuznetsov
c293bef232 fix 2022-11-15 10:15:34 +02:00
Yuri Kuznetsov
11d6ea3271 reminder use labels 2022-11-15 09:59:07 +02:00
Yuri Kuznetsov
3d243e19fd cs 2022-11-15 09:58:57 +02:00
Yuri Kuznetsov
813b5834fd calnder full form link 2022-11-15 09:51:12 +02:00
Yuri Kuznetsov
2f3e662ef6 reminder ui fix 2022-11-14 23:20:57 +02:00
Yuri Kuznetsov
a3779dbbee dark more radius 2022-11-14 20:15:03 +02:00
Yuri Kuznetsov
f109b6f60a fix acceptance note 2022-11-14 20:14:02 +02:00
Yuri Kuznetsov
9b7ddf19a5 event confirmation improvement 2022-11-14 19:03:05 +02:00
Yuri Kuznetsov
9e4ca525a0 event confirmation 404 2022-11-14 18:42:50 +02:00
Yuri Kuznetsov
0359528b7c fix login logout broadcast 2022-11-14 18:05:17 +02:00
Yuri Kuznetsov
c1ef8854ac cs fix 2022-11-14 17:55:15 +02:00
Yuri Kuznetsov
824878de39 css fix 2022-11-14 17:22:55 +02:00
Yuri Kuznetsov
919f48e0a3 logged-in broadcast fix 2022-11-14 17:15:53 +02:00
Yuri Kuznetsov
0a16ae3395 acceptance note from ui 2022-11-14 16:59:15 +02:00
Yuri Kuznetsov
4528edd6a7 Merge branch 'fix' 2022-11-14 16:48:22 +02:00
Yuri Kuznetsov
25daa39a91 fix 2022-11-14 16:48:10 +02:00
Yuri Kuznetsov
e20e6e863f event confirmation note 2022-11-14 16:36:56 +02:00
Yuri Kuznetsov
dbe5dbaf1f ref 2022-11-14 16:27:38 +02:00
Yuri Kuznetsov
a5ba3ca5db orm join condition alias handling change 2022-11-14 14:13:59 +02:00
Yuri Kuznetsov
8efe9842cf cs 2022-11-14 13:15:45 +02:00
Yuri Kuznetsov
550bdaba4f ref 2022-11-14 13:07:44 +02:00
Yuri Kuznetsov
6f6c08f9a3 css fix 2022-11-14 12:45:27 +02:00
Yuri Kuznetsov
dfea8470d1 cleanup 2022-11-14 12:38:29 +02:00
Yuri Kuznetsov
a19ada57fa linkRequiredAccess 2022-11-14 12:25:28 +02:00
Yuri Kuznetsov
f617d212f2 fix 2022-11-14 12:25:10 +02:00
Yuri Kuznetsov
88a09b2487 clientDefs relationshipPanels selectRequiredAccess createRequiredAccess 2022-11-14 12:23:42 +02:00
Yuri Kuznetsov
8dd5b078e6 cs fix 2022-11-14 11:07:31 +02:00
Yuri Kuznetsov
cccb71fd5b ref 2022-11-14 11:01:28 +02:00
Yuri Kuznetsov
f232f58b07 cs fix 2022-11-14 10:54:58 +02:00
Yuri Kuznetsov
17f8cb2f42 cs fix 2022-11-14 10:52:22 +02:00
Yuri Kuznetsov
5149713643 ref 2022-11-14 10:44:15 +02:00
Yuri Kuznetsov
586852ce7d categories max depth fix 2022-11-14 10:39:02 +02:00
Yuri Kuznetsov
65afe07a03 ref 2022-11-14 10:38:39 +02:00
Yuri Kuznetsov
ea8bb03e8d no edit access check for create related 2022-11-14 10:22:07 +02:00
Yuri Kuznetsov
7f52192fa8 event confirmation style fix 2022-11-13 15:37:07 +02:00
Yuri Kuznetsov
cadf54fb4e email part fix 2022-11-13 15:24:10 +02:00
Yuri Kuznetsov
631e766e5f ref 2022-11-13 14:57:19 +02:00
Yuri Kuznetsov
d770afd24a css fix 2022-11-13 12:43:14 +02:00
Yuri Kuznetsov
6eb29eef2b orm join support expression on the left 2022-11-13 11:05:42 +02:00
Yuri Kuznetsov
7079ecfba1 fix typo 2022-11-13 10:13:42 +02:00
Yuri Kuznetsov
ecf9962d6e ref 2022-11-12 22:26:04 +02:00
Yuri Kuznetsov
4bc24352c6 fix 2022-11-12 18:36:08 +02:00
Yuri Kuznetsov
cc5125230e stream subscribers cleanup 2022-11-12 18:26:30 +02:00
Yuri Kuznetsov
f50e962aee cleanup memory usage fix 2022-11-12 18:03:46 +02:00
Yuri Kuznetsov
c363be67a1 ref cs 2022-11-12 17:55:10 +02:00
Yuri Kuznetsov
2467129e48 css fix 2022-11-11 17:21:29 +02:00
Yuri Kuznetsov
dbcc6b43e6 css fix 2022-11-11 16:51:47 +02:00
Yuri Kuznetsov
13ebb9b63f css fix 2022-11-11 16:38:07 +02:00
Yuri Kuznetsov
6ba856fc66 ref 2022-11-11 14:19:05 +02:00
Yuri Kuznetsov
6f08fee069 move ref 2022-11-11 13:53:14 +02:00
Yuri Kuznetsov
f270073be6 move 2022-11-11 13:45:39 +02:00
Yuri Kuznetsov
fb3dd2dbf5 phpdoc fix 2022-11-11 13:40:04 +02:00
Yuri Kuznetsov
ef47d3d2bf update query builder support expression 2022-11-11 13:25:50 +02:00
Yuri Kuznetsov
31bf387cbe text change interval 2022-11-11 13:01:52 +02:00
Yuri Kuznetsov
446c9a13cc wysiwyg fetch every 5 seconds on key down 2022-11-11 12:50:42 +02:00
Yuri Kuznetsov
a373f1a864 do not show basic auth dialog if referer 2022-11-11 12:40:18 +02:00
Yuri Kuznetsov
7526e3c516 cleanup 2022-11-11 12:25:11 +02:00
Yuri Kuznetsov
98eb42ddb0 focus fix 2022-11-11 12:06:50 +02:00
Yuri Kuznetsov
9fd6c202a4 cs fix 2022-11-11 11:54:43 +02:00
Yuri Kuznetsov
00cbc80ccd log in log out sync between tabs 2022-11-11 11:22:17 +02:00
Yuri Kuznetsov
b1252d2be4 focus fix 2022-11-11 09:00:49 +02:00
Yuri Kuznetsov
daba2b3ba3 cs fix 2022-11-11 08:44:47 +02:00
Yuri Kuznetsov
3ecb64965d ref 2022-11-11 08:40:03 +02:00
Yuri Kuznetsov
061535d9fe css fix 2022-11-10 22:14:51 +02:00
Yuri Kuznetsov
87459afab4 meeting/call improve stream support 2022-11-10 22:09:06 +02:00
Yuri Kuznetsov
a5da02df0f ref 2022-11-10 17:53:57 +02:00
Yuri Kuznetsov
f37f59aff9 fix and ref 2022-11-10 17:14:34 +02:00
Yuri Kuznetsov
155a34245f discard 8.2 from workflow 2022-11-10 16:40:25 +02:00
Yuri Kuznetsov
456eca773d update workflow php version 2022-11-10 16:38:05 +02:00
Yuri Kuznetsov
7e54ff7f98 drop php7.4 2022-11-10 16:35:10 +02:00
Yuri Kuznetsov
d2abd0eb3b Merge branch 'fix' 2022-11-10 15:54:58 +02:00
Yuri Kuznetsov
853ca01176 Merge branch 'fix' of github.com:espocrm/espocrm into fix 2022-11-10 15:54:01 +02:00
Yuri Kuznetsov
4e7462566b fix bottom tab text show more 2022-11-10 15:53:43 +02:00
Yuri Kuznetsov
46c910d74f fix bottom tab text show more 2022-11-10 15:53:15 +02:00
Yuri Kuznetsov
e2a3761f10 ref 2022-11-10 15:22:04 +02:00
Yuri Kuznetsov
4d04a513c5 layout focus fix 2022-11-10 14:12:47 +02:00
Yuri Kuznetsov
dcb550d6a8 layout shortcuts 2022-11-10 13:52:36 +02:00
Yuri Kuznetsov
44c13c9223 ref 2022-11-10 13:22:15 +02:00
Yuri Kuznetsov
3f37245a8c fix sticked issue 2022-11-10 13:18:24 +02:00
Yuri Kuznetsov
1f1b2c2203 update gridstack 2022-11-10 10:54:57 +02:00
Yuri Kuznetsov
2fc38dd184 merge 2022-11-10 09:38:05 +02:00
Yuri Kuznetsov
5e95a9e6b5 stream acl true 2022-11-10 09:37:04 +02:00
Yuri Kuznetsov
832a135556 Merge branch 'fix' 2022-11-10 09:29:38 +02:00
Yuri Kuznetsov
39c3eeadd8 ref 2022-11-10 09:21:11 +02:00
Yuri Kuznetsov
aaaad41051 css fix 2022-11-09 13:26:05 +02:00
Yuri Kuznetsov
d446034f41 default theme 2022-11-09 11:04:49 +02:00
Yuri Kuznetsov
644c165b94 kanban fixes 2022-11-09 11:01:50 +02:00
Yuri Kuznetsov
b4bec78081 change duplicate finder interface 2022-11-09 10:03:15 +02:00
Yuri Kuznetsov
ac35e3db83 Merge branch 'fix' 2022-11-08 23:04:17 +02:00
Yuri Kuznetsov
429d808e98 css fix 2022-11-08 23:04:08 +02:00
Yuri Kuznetsov
0354cc1e38 fix 2022-11-08 18:56:45 +02:00
Yuri Kuznetsov
7c731550ac cs fix 2022-11-08 18:39:54 +02:00
Yuri Kuznetsov
aa45ed88aa fix 2022-11-08 18:37:27 +02:00
Yuri Kuznetsov
98fa68a070 calendar utility factory 2022-11-08 18:29:41 +02:00
Yuri Kuznetsov
0b3b915641 cs fix 2022-11-08 17:06:23 +02:00
Yuri Kuznetsov
d54f5cb259 test 2022-11-08 16:06:12 +02:00
Yuri Kuznetsov
d018781667 ref 2022-11-08 15:18:02 +02:00
Yuri Kuznetsov
6e07ecd5bb email import ref 2022-11-08 14:29:12 +02:00
Yuri Kuznetsov
9190544b10 cs 2022-11-08 12:41:00 +02:00
Yuri Kuznetsov
2c6674efe0 ref 2022-11-08 12:02:18 +02:00
Yuri Kuznetsov
2d6528a8d5 update bullbone 2022-11-08 12:02:08 +02:00
Yuri Kuznetsov
6b4980899c cleanup 2022-11-08 12:01:54 +02:00
Yuri Kuznetsov
c5781971f3 email dnd fix 2022-11-08 11:24:35 +02:00
Yuri Kuznetsov
19984e6e4e css fix 2022-11-07 22:40:40 +02:00
Yuri Kuznetsov
97b12c3916 css fix 2022-11-07 16:54:03 +02:00
Yuri Kuznetsov
237ff5699c css fix 2022-11-07 16:20:41 +02:00
Yuri Kuznetsov
61e869a552 css fix 2022-11-07 16:03:52 +02:00
Yuri Kuznetsov
d0710ccb21 fix 2022-11-07 15:48:20 +02:00
Yuri Kuznetsov
d83ab71e48 dashlet draggable distance 2022-11-07 15:46:59 +02:00
Yuri Kuznetsov
e1da88372f css fix 2022-11-07 15:39:44 +02:00
Yuri Kuznetsov
cb9bda59f0 css fix 2022-11-07 15:37:36 +02:00
Yuri Kuznetsov
1d41127810 fix 2022-11-07 15:35:49 +02:00
Yuri Kuznetsov
0835699897 record panel title text not selectable 2022-11-07 15:31:06 +02:00
Yuri Kuznetsov
07f9d6b482 no list head select 2022-11-07 15:19:44 +02:00
Yuri Kuznetsov
9cdb14daaa email folders sticked 2022-11-07 14:30:42 +02:00
Yuri Kuznetsov
bb2db7d675 css fix 2022-11-06 17:48:59 +02:00
Yuri Kuznetsov
3991efff4c restore middle tab on return 2022-11-06 14:30:22 +02:00
Yuri Kuznetsov
b3ad922691 restore bottom tab on return 2022-11-06 14:08:42 +02:00
Yuri Kuznetsov
8d3ad7318a storage number fix 2022-11-06 14:03:03 +02:00
Yuri Kuznetsov
def5c9d97b reminder style fix 2022-11-06 12:14:08 +02:00
Yuri Kuznetsov
feb880fd53 fix 2022-11-06 11:44:00 +02:00
Yuri Kuznetsov
bff95e6522 email dnd impr 2022-11-06 11:41:06 +02:00
Yuri Kuznetsov
38f2172f20 email drag n drop improvement 2022-11-05 15:18:49 +02:00
Yuri Kuznetsov
20ccba9f23 bottom tabs ref 2022-11-05 11:54:16 +02:00
Yuri Kuznetsov
8ae97efb43 ref 2022-11-05 10:20:11 +02:00
Yuri Kuznetsov
fdf72b3676 fix 2022-11-04 18:03:08 +02:00
Yuri Kuznetsov
334d88775f select first visible bottom tab on render 2022-11-04 17:49:32 +02:00
Yuri Kuznetsov
b47a6b2cd5 move to folder ui fix 2022-11-04 16:07:04 +02:00
Yuri Kuznetsov
69c7752537 move to folder modal label 2022-11-04 16:04:06 +02:00
Yuri Kuznetsov
e708db7e5b fix 2022-11-04 13:23:48 +02:00
Yuri Kuznetsov
978a206662 Merge branch 'fix' 2022-11-04 11:52:00 +02:00
Yuri Kuznetsov
62d1c0fae9 attachment csp 2022-11-04 10:36:00 +02:00
Yuri Kuznetsov
76546ff06c logo svg 2022-11-04 10:27:17 +02:00
Yuri Kuznetsov
171164ed2b is html label 2022-11-03 17:01:55 +02:00
Yuri Kuznetsov
4057f92ec0 meeting notify about attendee 2022-11-03 16:47:12 +02:00
Yuri Kuznetsov
2b181b8d84 ref 2022-11-03 12:06:59 +02:00
Yuri Kuznetsov
e210f1386d job use sth 2022-11-03 11:50:37 +02:00
Yuri Kuznetsov
711781b666 ref and cs fix 2022-11-03 11:48:10 +02:00
Yuri Kuznetsov
addda0d9a8 ref 2022-11-03 11:38:23 +02:00
Yuri Kuznetsov
b2b958c946 Merge branch 'fix' 2022-11-02 20:51:01 +02:00
David
42af361ae4 Fix czech translation (#2491)
* fixed require promise

* czech translation fix

Co-authored-by: David Moškoř <david.moskor@apertia.cz>
2022-11-02 20:50:11 +02:00
Yuri Kuznetsov
440c6cee23 it_IT 2022-11-02 20:49:25 +02:00
Yuri Kuznetsov
1b32e57637 css fix 2022-11-02 19:48:03 +02:00
Yuri Kuznetsov
5008561965 fix 2022-11-02 18:41:35 +02:00
Yuri Kuznetsov
168f32a90e fix 2022-11-02 18:30:59 +02:00
Yuri Kuznetsov
23a21a060c fix shortcut 2022-11-02 17:56:11 +02:00
Yuri Kuznetsov
0eab4f0cac skip stream processing if silent 2022-11-02 15:58:55 +02:00
Yuri Kuznetsov
0ee3044ebc fix typo 2022-11-02 15:18:13 +02:00
Yuri Kuznetsov
916ad5159e dropdown focus 2022-11-02 14:47:24 +02:00
Yuri Kuznetsov
31d985e875 email draft from name 2022-11-02 12:37:20 +02:00
Yuri Kuznetsov
973404d46e css fix 2022-11-02 09:33:24 +02:00
David
042c5e5791 Regex with optional capture groups might cause catastrophic backtracking (#2490)
* fix catastrophic backtracking

* prevented catasthropic backtracing

Co-authored-by: David Moškoř <david.moskor@apertia.cz>
2022-11-02 08:56:00 +02:00
Yuri Kuznetsov
64b3328916 kanban drag cursor fix 2022-11-01 21:19:03 +02:00
Yuri Kuznetsov
ef8faa466c notify 2022-11-01 20:48:16 +02:00
Yuri Kuznetsov
4f53f6861c fix 2022-11-01 20:41:32 +02:00
Yuri Kuznetsov
c610f8d6a7 next number populate 2022-11-01 16:59:56 +02:00
Yuri Kuznetsov
ecde182b08 exceptions 2022-11-01 16:59:42 +02:00
Yuri Kuznetsov
94a723753f email shortcut keys 2022-11-01 15:08:53 +02:00
Yuri Kuznetsov
cef40340cf Email mime message fix (#2486)
* email-message-fix

* fix test

* email mime parts message fix
2022-11-01 12:37:01 +02:00
Yuri Kuznetsov
8413e56d3f ref 2022-11-01 11:06:13 +02:00
Yuri Kuznetsov
c14c6d9187 enum change on option change 2022-11-01 10:52:41 +02:00
Yuri Kuznetsov
d010c4a463 array sorting uix fix 2022-11-01 10:43:45 +02:00
Yuri Kuznetsov
ecf70585d7 validate default option 2022-11-01 10:01:55 +02:00
Yuri Kuznetsov
9183489d19 Merge branch 'fix' 2022-10-31 17:27:31 +02:00
Yuri Kuznetsov
e659c79bf7 v 2022-10-31 17:21:33 +02:00
Yuri Kuznetsov
e017479f85 fix panel heading overflow 2022-10-31 17:21:06 +02:00
Yuri Kuznetsov
24091d9eed color fix 2022-10-31 16:24:38 +02:00
Yuri Kuznetsov
abdc73af6a attachment focus fix 2022-10-31 15:40:45 +02:00
Yuri Kuznetsov
168335c5b0 logo radius issue 2022-10-31 15:30:48 +02:00
Yuri Kuznetsov
d0f43e7de9 alert viewport center 2022-10-31 15:19:34 +02:00
Yuri Kuznetsov
4dee40f714 style fix 2022-10-31 15:06:55 +02:00
Yuri Kuznetsov
bd238f912f notification query no count 2022-10-31 13:06:04 +02:00
Yuri Kuznetsov
e91539f534 apply button on filter removal 2022-10-31 12:41:08 +02:00
Yuri Kuznetsov
e912566b44 fix 2022-10-31 12:05:25 +02:00
Yuri Kuznetsov
daef165a2e fix 2022-10-31 11:55:39 +02:00
Yuri Kuznetsov
2b740082e4 fix 2022-10-31 11:54:39 +02:00
Yuri Kuznetsov
b0292e61a9 style fixes 2022-10-31 11:44:35 +02:00
Yuri Kuznetsov
e5b8db367b discard loading 2022-10-31 11:24:29 +02:00
Yuri Kuznetsov
1aad648987 css fix 2022-10-31 10:55:54 +02:00
Yuri Kuznetsov
a943c4a7ea radio css 2022-10-31 10:42:15 +02:00
Yuri Kuznetsov
a184d5568d color fix 2022-10-31 09:54:45 +02:00
Yuri Kuznetsov
a351875586 create select handler for link 2022-10-31 09:43:56 +02:00
Yuri Kuznetsov
21b325f27f fix 2022-10-31 09:42:23 +02:00
Yuri Kuznetsov
992d581ff2 Merge branch 'fix' 2022-10-31 09:11:20 +02:00
Yuri Kuznetsov
4824714b0d fix non-storable varchar default maxlength validation 2022-10-31 08:56:56 +02:00
Yuri Kuznetsov
bdf3e9a4b6 css fix 2022-10-31 08:50:55 +02:00
Yuri Kuznetsov
5826f0fb2a style fixes 2022-10-30 19:18:01 +02:00
Yuri Kuznetsov
65a57aed59 style fix 2022-10-30 19:02:05 +02:00
Yuri Kuznetsov
ffe4b82e1e fix 2022-10-30 15:44:02 +02:00
Yuri Kuznetsov
32c29ac829 create handler in link multiple 2022-10-30 15:12:16 +02:00
Yuri Kuznetsov
03e46ed08f color fix 2022-10-30 14:30:23 +02:00
Yuri Kuznetsov
d4821db812 relationshipPanels defs in link multiple 2022-10-30 14:25:16 +02:00
Yuri Kuznetsov
0f8d9f96fb selectModalView 2022-10-30 11:47:28 +02:00
Yuri Kuznetsov
dbaf535f53 select related handler 2022-10-30 11:31:44 +02:00
Yuri Kuznetsov
f8254f49c0 fix 2022-10-30 10:25:30 +02:00
Yuri Kuznetsov
6592ad3798 create related use promise 2022-10-30 09:29:00 +02:00
Yuri Kuznetsov
d5bb95cab6 color fix 2022-10-29 22:56:59 +03:00
Yuri Kuznetsov
ae2f2ab235 list fetch main 2022-10-29 15:58:47 +03:00
Yuri Kuznetsov
489e41a042 related list 2022-10-29 15:49:28 +03:00
Yuri Kuznetsov
4c209aaa86 Stream: Update notes when edited (with web socket) (#2483)
* note edit websocket

* fix note update input
2022-10-28 11:39:56 +03:00
Yuri Kuznetsov
09d8bc5a36 phone default enum 2022-10-26 16:36:03 +03:00
Yuri Kuznetsov
589415b036 Merge branch 'fix' 2022-10-26 16:30:17 +03:00
Yuri Kuznetsov
6ee936d522 bottom layout edit impr 2022-10-26 16:29:52 +03:00
Yuri Kuznetsov
648fa60e14 bottom layout edit impr 2022-10-26 16:29:24 +03:00
Yuri Kuznetsov
deea05a986 style fix 2022-10-26 15:21:21 +03:00
Yuri Kuznetsov
1ddefe2541 log in button text 2022-10-26 14:05:35 +03:00
Yuri Kuznetsov
efaf3327e3 update minimatch 2022-10-26 13:56:11 +03:00
Yuri Kuznetsov
0046734522 pt_PT lang 2022-10-26 12:56:01 +03:00
Yuri Kuznetsov
0ed243c9b1 wysiwyg img max width 2022-10-26 12:45:32 +03:00
Yuri Kuznetsov
91d81773bc css fix 2022-10-26 12:29:40 +03:00
Yuri Kuznetsov
c71f8a5334 spellcheck off 2022-10-26 12:21:22 +03:00
Yuri Kuznetsov
21e8425e59 css fix 2022-10-26 10:00:08 +03:00
Yuri Kuznetsov
f246021819 css fix 2022-10-26 09:53:52 +03:00
Yuri Kuznetsov
e0ac2e156d checklist fix 2022-10-26 09:49:02 +03:00
Yuri Kuznetsov
46a4815def fix css 2022-10-25 19:06:34 +03:00
Yuri Kuznetsov
5851245f43 css fix 2022-10-25 18:44:51 +03:00
Yuri Kuznetsov
66f0aa71c9 css fixes 2022-10-25 17:10:19 +03:00
Yuri Kuznetsov
51b621ecd1 checkbox styled 2022-10-25 16:51:19 +03:00
Yuri Kuznetsov
65d88e5ac8 ref 2022-10-25 11:17:33 +03:00
Yuri Kuznetsov
96a0cb12a0 ref 2022-10-24 18:05:41 +03:00
Yuri Kuznetsov
07844912d2 cs fix 2022-10-24 18:00:47 +03:00
Yuri Kuznetsov
cdbe9651f3 Merge branch 'fix' 2022-10-24 17:29:09 +03:00
Yuri Kuznetsov
ba172494b4 fix kanban with disable total 2022-10-24 17:26:29 +03:00
Yuri Kuznetsov
956e7108c3 fix 2022-10-24 16:53:03 +03:00
Yuri Kuznetsov
66a111d7fc fix 2022-10-24 16:44:33 +03:00
Yuri Kuznetsov
4b038d66d1 fix 2022-10-24 16:13:09 +03:00
Yuri Kuznetsov
8feab8f394 ajax fullResponse 2022-10-24 16:10:59 +03:00
Yuri Kuznetsov
0c350b5f16 redirect to root after create forbidden 2022-10-24 14:42:17 +03:00
Yuri Kuznetsov
be21968795 ajax error handler timeout 2022-10-24 14:41:51 +03:00
Yuri Kuznetsov
0dac024316 cs fix 2022-10-24 13:45:23 +03:00
Yuri Kuznetsov
d7d1a38fd3 cs fix 2022-10-24 13:37:06 +03:00
Yuri Kuznetsov
cc562d6c26 fix typo 2022-10-24 13:35:18 +03:00
Yuri Kuznetsov
8565711a3e fix 2022-10-24 13:33:49 +03:00
Yuri Kuznetsov
362b65b2b2 cs fix 2022-10-24 13:32:53 +03:00
Yuri Kuznetsov
444f699853 fix comment 2022-10-24 13:24:17 +03:00
Yuri Kuznetsov
f6ea204259 Merge branch 'fix' 2022-10-24 12:14:00 +03:00
Yuri Kuznetsov
5c44a374d5 glass table text bold 700 2022-10-24 12:13:46 +03:00
Yuri Kuznetsov
8aae2b18ba glass fix 2022-10-24 12:06:46 +03:00
Yuri Kuznetsov
258e56c61d fix 2022-10-24 12:06:41 +03:00
Yuri Kuznetsov
55d054b15c fix 2022-10-24 11:52:23 +03:00
Yuri Kuznetsov
1f733fa307 fix 2022-10-24 11:43:37 +03:00
Yuri Kuznetsov
acfcc65aee email filter mark as read 2022-10-24 11:34:26 +03:00
Yuri Kuznetsov
5a29830202 ref 2022-10-24 10:29:15 +03:00
Yuri Kuznetsov
04ef798866 fix 2022-10-24 10:04:44 +03:00
Yuri Kuznetsov
5987906fd8 Merge branch 'fix' 2022-10-24 09:47:09 +03:00
Yuri Kuznetsov
3084dddf1c fix url field pattern 2022-10-24 09:44:43 +03:00
Yuri Kuznetsov
87b112c699 rename ldap 2022-10-23 16:56:06 +03:00
Yuri Kuznetsov
212a5879b3 Merge branch 'fix' 2022-10-23 16:51:12 +03:00
Yuri Kuznetsov
eb6f9b602f upgrade 2022-10-23 16:40:40 +03:00
Yuri Kuznetsov
cf508a540e Merge branch 'fix' of https://github.com/espocrm/espocrm into fix 2022-10-23 16:36:19 +03:00
Yuri Kuznetsov
5278e3bf06 v 2022-10-23 16:25:17 +03:00
Yuri Kuznetsov
ee70b1afad ref 2022-10-23 15:04:53 +03:00
Yuri Kuznetsov
4374688c85 css fix 2022-10-23 10:59:33 +03:00
Yuri Kuznetsov
0b7804f4f1 update carbon 2022-10-23 10:30:02 +03:00
Yuri Kuznetsov
c01545678f kanban drag min distance 2022-10-23 10:24:20 +03:00
Yuri Kuznetsov
3ea617e449 cs fix 2022-10-23 10:22:19 +03:00
Yuri Kuznetsov
75e3961fb5 ajax promise 2022-10-23 10:18:02 +03:00
Yuri Kuznetsov
cc8d66dc7d populate array values command 2022-10-22 14:44:58 +03:00
Yuri Kuznetsov
874c42fa33 ref 2022-10-22 13:27:09 +03:00
Yuri Kuznetsov
8a554bdf55 cs fix 2022-10-22 13:15:46 +03:00
Yuri Kuznetsov
5b02dc23f5 fix 2022-10-22 12:58:00 +03:00
Yuri Kuznetsov
dd75aaeef2 rebuild category paths command 2022-10-22 12:52:13 +03:00
Yuri Kuznetsov
97c109dc79 cleanup 2022-10-21 18:14:43 +03:00
Yuri Kuznetsov
f61c546af7 cs fix 2022-10-21 17:59:28 +03:00
Yuri Kuznetsov
f6742d225d ldap fix 2022-10-21 17:33:53 +03:00
Yuri Kuznetsov
ba69668df5 ref 2022-10-21 17:29:27 +03:00
Yuri Kuznetsov
7b8d2a874c fix jsdoc 2022-10-21 17:11:50 +03:00
Yuri Kuznetsov
8ba1e8148e merge 2022-10-21 17:11:05 +03:00
Yuri Kuznetsov
7266cc96c9 ref 2022-10-21 17:09:39 +03:00
Yuri Kuznetsov
f4a3a3fbd3 extension admin notifications 2022-10-21 16:25:19 +03:00
Yuri Kuznetsov
937f28b52f cs fix 2022-10-21 15:44:09 +03:00
Yuri Kuznetsov
0997a870ec fix 2022-10-21 15:41:49 +03:00
Yuri Kuznetsov
5da17fd8a9 cs fix 2022-10-21 15:33:50 +03:00
Yuri Kuznetsov
d8ca8a9a22 cs fix 2022-10-21 15:29:12 +03:00
Yuri Kuznetsov
76007e2c79 license status 2022-10-21 14:43:00 +03:00
Yuri Kuznetsov
f0b7e94aa0 doc fix 2022-10-21 14:02:57 +03:00
Yuri Kuznetsov
89f7281a02 cs fix 2022-10-21 10:41:06 +03:00
Yuri Kuznetsov
9d7d9d0f3d ref 2022-10-21 10:13:11 +03:00
Yuri Kuznetsov
46d6cbb042 ref 2022-10-20 21:08:44 +03:00
Yuri Kuznetsov
63d50c1ebd record service container get by class 2022-10-20 21:02:50 +03:00
Yuri Kuznetsov
4917f0d5f6 ref 2022-10-20 20:55:42 +03:00
Yuri Kuznetsov
ffb1f51f52 ref 2022-10-20 19:50:49 +03:00
Yuri Kuznetsov
48f98014a9 fix 2022-10-20 19:50:15 +03:00
Yuri Kuznetsov
8005e6e879 ref 2022-10-20 19:40:14 +03:00
David
5763f5b58e fixed require promise (#2473)
Co-authored-by: David Moškoř <david.moskor@apertia.cz>
2022-10-20 18:55:50 +03:00
Yuri Kuznetsov
8f6872bb08 eventInvitationForceSystemSmtp 2022-10-20 18:46:59 +03:00
Yuri Kuznetsov
6fe21e68c0 ref 2022-10-20 18:38:33 +03:00
Yuri Kuznetsov
6b0bc18cbe ref 2022-10-20 17:38:01 +03:00
Yuri Kuznetsov
d1eced41aa fix test 2022-10-20 15:43:12 +03:00
Yuri Kuznetsov
ff83b4cb41 Merge branch 'fix' 2022-10-20 15:37:22 +03:00
Yuri Kuznetsov
59d46e43a4 ref 2022-10-19 18:46:11 +03:00
Yuri Kuznetsov
240644dd8c cs fix 2022-10-19 18:08:27 +03:00
Yuri Kuznetsov
840b31c7d3 ref 2022-10-19 18:05:33 +03:00
Yuri Kuznetsov
1c29123a44 cleanup 2022-10-19 17:42:07 +03:00
Yuri Kuznetsov
8e73af8d38 fix 2022-10-19 17:07:12 +03:00
Yuri Kuznetsov
85e583ec7c fix 2022-10-19 17:00:57 +03:00
Yuri Kuznetsov
509841344f ref 2022-10-19 16:47:56 +03:00
Yuri Kuznetsov
5eef8f2ce5 ref 2022-10-19 15:32:03 +03:00
Yuri Kuznetsov
85efea44ed ref 2022-10-19 13:27:06 +03:00
Yuri Kuznetsov
c004815a42 ref 2022-10-19 13:25:11 +03:00
Taras Machyshyn
0666880786 IIS web.config fixes 2022-10-19 13:18:45 +03:00
Yuri Kuznetsov
afddb6afc9 ref 2022-10-19 12:56:46 +03:00
Yuri Kuznetsov
7c869ce3fc style fix 2022-10-19 12:56:24 +03:00
Yuri Kuznetsov
b9541eea35 cs fix 2022-10-19 12:54:08 +03:00
Yuri Kuznetsov
75e46f6f5b ref 2022-10-18 21:33:59 +03:00
Yuri Kuznetsov
531992adff ref 2022-10-18 21:32:21 +03:00
Yuri Kuznetsov
1f88b60cca ref 2022-10-18 21:19:43 +03:00
Yuri Kuznetsov
09d7c73449 ref 2022-10-18 21:16:27 +03:00
Yuri Kuznetsov
b43d9f8784 user password ref 2022-10-18 20:29:23 +03:00
Yuri Kuznetsov
d3e65f9ba1 ref 2022-10-18 18:16:10 +03:00
Yuri Kuznetsov
5485966c1c ref 2022-10-18 18:03:41 +03:00
Yuri Kuznetsov
d6dc858720 ref 2022-10-18 17:13:56 +03:00
Yuri Kuznetsov
07ee43d4d7 ref 2022-10-18 15:50:51 +03:00
Yuri Kuznetsov
45720afd50 ref 2022-10-18 14:06:29 +03:00
Yuri Kuznetsov
291c692bdb ref 2022-10-18 13:03:48 +03:00
Yuri Kuznetsov
464976629d ref 2022-10-18 12:54:50 +03:00
Yuri Kuznetsov
4267adbdb2 cs fix 2022-10-18 12:41:29 +03:00
Yuri Kuznetsov
f8d0fc2654 ref 2022-10-18 12:40:02 +03:00
Yuri Kuznetsov
ba2bea15b5 ref 2022-10-18 11:40:28 +03:00
Yuri Kuznetsov
7ffd5a25a9 ref 2022-10-17 16:54:10 +03:00
Yuri Kuznetsov
ba59e3922f fix tests 2022-10-17 16:48:33 +03:00
Yuri Kuznetsov
8336eb3dd9 cleanup 2022-10-17 16:42:21 +03:00
Yuri Kuznetsov
667f9b6eb6 cs fix 2022-10-17 16:37:50 +03:00
Yuri Kuznetsov
f76d8601e7 fix 2022-10-17 16:36:59 +03:00
Yuri Kuznetsov
f09db0ebdb ref 2022-10-17 16:07:05 +03:00
Yuri Kuznetsov
3b6a686257 ref 2022-10-17 15:04:53 +03:00
Yuri Kuznetsov
e939b4541d ref 2022-10-17 14:43:24 +03:00
Yuri Kuznetsov
d6c4002e82 ref 2022-10-17 13:12:03 +03:00
Yuri Kuznetsov
0cb1629f75 cs fix 2022-10-17 13:10:35 +03:00
Yuri Kuznetsov
e8f600c99f ref 2022-10-17 13:00:11 +03:00
Yuri Kuznetsov
745d6b9603 ref 2022-10-17 12:50:34 +03:00
Yuri Kuznetsov
245e267f73 fix 2022-10-17 12:38:23 +03:00
Yuri Kuznetsov
953920a742 ref 2022-10-17 12:35:41 +03:00
Yuri Kuznetsov
a6e1b016ae ref 2022-10-17 12:11:52 +03:00
Yuri Kuznetsov
fdddc5cc2a ref 2022-10-17 11:34:15 +03:00
Yuri Kuznetsov
b7de49a2aa ref 2022-10-17 11:22:44 +03:00
Yuri Kuznetsov
35dbe35ea4 test 2022-10-17 11:09:50 +03:00
Yuri Kuznetsov
d0f84584a0 docs 2022-10-17 11:07:49 +03:00
Yuri Kuznetsov
a334fc5456 search param bool added 2022-10-17 10:58:12 +03:00
Yuri Kuznetsov
ccbc9a2348 ref 2022-10-17 10:48:25 +03:00
Yuri Kuznetsov
8c109d2713 ref 2022-10-17 09:19:38 +03:00
Yuri Kuznetsov
8b3b659ec6 ref 2022-10-17 08:37:37 +03:00
Yuri Kuznetsov
537b921e87 fix 2022-10-16 23:08:07 +03:00
Yuri Kuznetsov
74dbc64d5b fix 2022-10-16 21:59:21 +03:00
Yuri Kuznetsov
fe9ed74875 ref 2022-10-16 21:52:37 +03:00
Yuri Kuznetsov
a8f48c3248 update php-parser 2022-10-16 21:43:34 +03:00
Yuri Kuznetsov
857648633e ref 2022-10-16 21:37:57 +03:00
Yuri Kuznetsov
81d961d5d9 ref 2022-10-16 20:52:54 +03:00
Yuri Kuznetsov
ae2d5e2552 update phpstan 2022-10-16 20:31:33 +03:00
Yuri Kuznetsov
035e561a4c ref 2022-10-16 20:26:18 +03:00
Yuri Kuznetsov
541cc907f1 phpdoc 2022-10-16 19:08:16 +03:00
Yuri Kuznetsov
a5fc42a85f ref 2022-10-16 18:45:05 +03:00
Yuri Kuznetsov
421384980a fix 2022-10-16 18:26:13 +03:00
Yuri Kuznetsov
331fb69364 phpdoc 2022-10-16 17:53:31 +03:00
Yuri Kuznetsov
9d5e1b7d33 ref 2022-10-16 17:40:33 +03:00
Yuri Kuznetsov
1c06f3be92 ref 2022-10-16 16:29:05 +03:00
Yuri Kuznetsov
64c8c1a891 fix test 2022-10-16 16:13:55 +03:00
Yuri Kuznetsov
f637960648 ref 2022-10-16 16:08:01 +03:00
Yuri Kuznetsov
2f73ae43ac ref 2022-10-16 15:43:42 +03:00
Yuri Kuznetsov
befdff8085 ref 2022-10-16 14:25:52 +03:00
Yuri Kuznetsov
7be573be67 ref 2022-10-16 14:25:11 +03:00
Yuri Kuznetsov
19227313b3 ref 2022-10-16 13:07:37 +03:00
Yuri Kuznetsov
4d71e3c904 ref 2022-10-16 12:28:05 +03:00
Yuri Kuznetsov
fef90ac1dc ref 2022-10-16 12:18:54 +03:00
Yuri Kuznetsov
6a940eb732 ref 2022-10-16 12:01:04 +03:00
Yuri Kuznetsov
838d0b08db move default binding 2022-10-16 11:33:32 +03:00
Yuri Kuznetsov
c36c5a9d63 todo 2022-10-16 11:18:34 +03:00
Yuri Kuznetsov
327b6adbbf fix test 2022-10-16 11:15:57 +03:00
Yuri Kuznetsov
3f78f71c5f fix test 2022-10-16 10:59:09 +03:00
Yuri Kuznetsov
06e68a3e7d mail ref 2022-10-16 10:57:55 +03:00
Yuri Kuznetsov
b1614ae660 ref 2022-10-14 17:24:32 +03:00
Yuri Kuznetsov
9575b8e24f ref 2022-10-14 17:06:13 +03:00
Yuri Kuznetsov
b6b562cff1 dev 2022-10-14 17:01:18 +03:00
Yuri Kuznetsov
e22f8b0120 ref 2022-10-14 16:34:27 +03:00
Yuri Kuznetsov
eaa0426628 ref 2022-10-14 15:45:32 +03:00
Yuri Kuznetsov
42c5ac56ca ref 2022-10-14 15:23:45 +03:00
Yuri Kuznetsov
f54497b76f ref 2022-10-14 14:13:16 +03:00
Yuri Kuznetsov
f253e021d0 ref 2022-10-14 14:06:22 +03:00
Yuri Kuznetsov
fa679b6dd2 cs fix 2022-10-14 13:22:29 +03:00
Yuri Kuznetsov
11d55b9e40 ref 2022-10-14 12:25:07 +03:00
Yuri Kuznetsov
00fbf45e88 ref 2022-10-14 11:17:10 +03:00
Yuri Kuznetsov
945921b38d from email address filtering 2022-10-14 10:13:36 +03:00
Yuri Kuznetsov
b69f20a7fd ref 2022-10-13 21:18:37 +03:00
Yuri Kuznetsov
1f445770cf ref 2022-10-13 21:07:55 +03:00
Yuri Kuznetsov
7765562302 fix test 2022-10-13 19:47:43 +03:00
Yuri Kuznetsov
16abe43003 ref 2022-10-13 19:23:36 +03:00
Yuri Kuznetsov
5fed4f93e5 fix before upgrade 2022-10-13 18:29:10 +03:00
Yuri Kuznetsov
4514e8225f discard smtp preferences 2022-10-13 17:48:34 +03:00
Yuri Kuznetsov
ab2d3eed43 ref 2022-10-13 13:05:34 +03:00
Yuri Kuznetsov
f236a72a1a ref 2022-10-13 11:57:14 +03:00
Yuri Kuznetsov
b66ac6ce13 ref 2022-10-13 11:45:55 +03:00
Yuri Kuznetsov
0a8ade65f4 ref 2022-10-13 10:52:07 +03:00
Yuri Kuznetsov
1235eee695 ref 2022-10-13 10:25:59 +03:00
Yuri Kuznetsov
fbc35ec23d fix test 2022-10-13 10:04:07 +03:00
Yuri Kuznetsov
4e31fc89d4 email filter move to folder 2022-10-12 18:35:43 +03:00
Yuri Kuznetsov
a7d3073861 fix 2022-10-12 14:09:22 +03:00
Yuri Kuznetsov
abd40d42b8 ref 2022-10-12 13:32:05 +03:00
Yuri Kuznetsov
ec19ae061f ref 2022-10-12 13:10:17 +03:00
Yuri Kuznetsov
84d9e1fe29 cs fix 2022-10-12 12:39:36 +03:00
Yuri Kuznetsov
50d7f6d831 dropdown action helper and labelTranslation 2022-10-12 12:17:25 +03:00
Yuri Kuznetsov
b80bdf9a83 fix docs 2022-10-12 10:33:32 +03:00
Yuri Kuznetsov
19eb99ed25 group folder menu link 2022-10-12 10:31:36 +03:00
Yuri Kuznetsov
6c2be9199e email drop sent limitation 2022-10-12 10:11:14 +03:00
Yuri Kuznetsov
ff1c449411 email drop to all 2022-10-12 10:07:58 +03:00
Yuri Kuznetsov
259b06cd7a ref 2022-10-11 20:59:50 +03:00
Yuri Kuznetsov
cb00922841 group email folders 2022-10-11 17:43:31 +03:00
Yuri Kuznetsov
e21f500a4d Merge branch 'fix' 2022-10-11 13:04:41 +03:00
Yuri Kuznetsov
e0113388d2 typo fix 2022-10-11 13:04:26 +03:00
Yuri Kuznetsov
384f28ecae cleanup 2022-10-11 13:02:25 +03:00
Yuri Kuznetsov
af9fac2b51 dE_DE 2022-10-10 11:43:20 +03:00
Yuri Kuznetsov
81c8311026 fix 2022-10-09 10:26:40 +03:00
Yuri Kuznetsov
085e66feea search panel disabled modal select records 2022-10-07 15:51:14 +03:00
Yuri Kuznetsov
7ad01cad77 fix 2022-10-07 12:25:14 +03:00
Yuri Kuznetsov
5038e4144f ref 2022-10-07 12:07:03 +03:00
Yuri Kuznetsov
4e6d5cf773 fix, setupReuse 2022-10-06 20:35:27 +03:00
Yuri Kuznetsov
8815564be3 fix 2022-10-06 18:36:59 +03:00
Yuri Kuznetsov
097a600488 fix 2022-10-06 14:25:25 +03:00
Yuri Kuznetsov
037687e11f fix 2022-10-06 14:16:28 +03:00
Yuri Kuznetsov
6eddc10d5a email drop into folder 2022-10-06 13:07:08 +03:00
Yuri Kuznetsov
0b9256ecf9 ref 2022-10-06 12:28:09 +03:00
Yuri Kuznetsov
26e692563b username validator 2022-10-05 14:42:54 +03:00
Yuri Kuznetsov
961e056e8d fix 2022-10-05 14:40:50 +03:00
Yuri Kuznetsov
77debc3875 fix 2022-10-05 14:30:26 +03:00
Yuri Kuznetsov
d4376264c3 cs fix 2022-10-05 14:28:21 +03:00
Yuri Kuznetsov
424302287e fix test 2022-10-05 14:28:14 +03:00
Yuri Kuznetsov
bcdee914ad keywords 2022-10-05 13:24:34 +03:00
Yuri Kuznetsov
9580c4f376 shortcuts 2022-10-05 13:22:51 +03:00
Yuri Kuznetsov
edf673fb69 ref and shortcut usage 2022-10-05 13:16:18 +03:00
Yuri Kuznetsov
7738b9c3e0 remove with select all improvement 2022-10-05 12:37:13 +03:00
Yuri Kuznetsov
1579e4851e ref 2022-10-05 12:03:27 +03:00
Yuri Kuznetsov
914e070732 datetime from timestamp 2022-10-05 11:49:44 +03:00
Yuri Kuznetsov
a976e22ebd fix settings lang 2fa param 2022-10-05 11:34:07 +03:00
Yuri Kuznetsov
138d0215f7 rebuild error output 2022-10-05 11:23:26 +03:00
Yuri Kuznetsov
39b42c3953 config iternal param 2022-10-05 11:14:13 +03:00
Yuri Kuznetsov
da10e9c4a9 docs 2022-10-05 10:25:23 +03:00
Yuri Kuznetsov
89273a26d4 Merge branch 'fix' 2022-10-05 10:12:30 +03:00
Yuri Kuznetsov
d7596c208c fix 2022-10-05 09:35:07 +03:00
Yuri Kuznetsov
bac7eb6c89 model factory fix 2022-10-04 18:40:14 +03:00
Yuri Kuznetsov
80572ae14f update laminas libs, install laminas crypt 2022-10-04 18:27:23 +03:00
Yuri Kuznetsov
c8a746d90b authentication deny system user 2022-10-04 17:50:22 +03:00
Yuri Kuznetsov
a57f13eda2 auth settings label 2022-10-04 17:24:50 +03:00
Yuri Kuznetsov
e576b9f272 dev 2022-10-04 17:13:34 +03:00
Yuri Kuznetsov
6df18b3604 label on list fix 2022-10-04 10:46:28 +03:00
Yuri Kuznetsov
616d65023b oidc auth 2022-10-04 09:41:40 +03:00
Yuri Kuznetsov
ea001812e2 Merge branch 'master' of https://github.com/espocrm/espocrm 2022-10-04 09:40:39 +03:00
Yuri Kuznetsov
b7925f6d1f Merge branch 'fix' 2022-10-04 09:40:24 +03:00
Yuri Kuznetsov
6d1ab5870f fix avatar 2022-10-04 08:52:40 +03:00
David
e7d1cbd5ca setup action views in modal with unset model (#2462)
Co-authored-by: David Moškoř <david.moskor@apertia.cz>
2022-10-03 21:17:31 +03:00
Yuri Kuznetsov
b165d54ad6 request get parsed body form data support 2022-10-03 15:32:21 +03:00
David
25afbffda8 added other reserved keywords (#2461)
Co-authored-by: David Moškoř <david.moskor@apertia.cz>
2022-10-03 08:57:26 +03:00
Yuri Kuznetsov
77f7db3592 acl cache clearer 2022-09-30 16:38:58 +03:00
Yuri Kuznetsov
73dbfa38ec css fix 2022-09-29 14:46:37 +03:00
Yuri Kuznetsov
4adb068699 fix lead capture source 2022-09-29 09:02:55 +03:00
Yuri Kuznetsov
3e4c738ab1 fix link multiple cloning fetch 2022-09-28 15:08:12 +03:00
Yuri Kuznetsov
3f950cb615 fix login 2022-09-27 17:53:19 +03:00
Yuri Kuznetsov
a0e2b1a9b6 fix login 2022-09-27 17:18:33 +03:00
Yuri Kuznetsov
c50b043e52 Merge branch 'fix' 2022-09-27 10:04:10 +03:00
Yuri Kuznetsov
cd92e4fcd8 fix util array to object to preserve lists 2022-09-27 09:49:14 +03:00
Yuri Kuznetsov
b99091eb3a ref 2022-09-27 09:41:28 +03:00
Yuri Kuznetsov
450cd80f62 Merge branch 'fix' 2022-09-27 08:57:58 +03:00
Yuri Kuznetsov
fba191f22c global search label 2022-09-27 08:57:51 +03:00
Yuri Kuznetsov
0b9d52d30d color fix 2022-09-26 17:41:36 +03:00
Yuri Kuznetsov
6e9b125818 calendar today bg change 2022-09-26 17:07:32 +03:00
Yuri Kuznetsov
93146dffd6 authTokenSecretDisabled system 2022-09-26 13:47:22 +03:00
Yuri Kuznetsov
07d3e982ef date-time step 60 2022-09-26 13:08:30 +03:00
Yuri Kuznetsov
865078a7f9 shortcut framework take into account action availability 2022-09-26 12:56:29 +03:00
Yuri Kuznetsov
14eafb6121 Merge branch 'fix' 2022-09-26 12:46:18 +03:00
Yuri Kuznetsov
0d1ce3ee90 typoe fix 2022-09-26 12:43:50 +03:00
Yuri Kuznetsov
638654d52e credentialsHeader 2022-09-26 12:14:36 +03:00
Yuri Kuznetsov
3c0f7ca93e login handler changes 2022-09-26 10:22:35 +03:00
Yuri Kuznetsov
c5c9862c68 ref cs 2022-09-25 18:25:07 +03:00
Yuri Kuznetsov
452ea6f1ef ref 2022-09-24 20:29:04 +03:00
Yuri Kuznetsov
c5fe7bca21 login handler framework 2022-09-24 16:56:10 +03:00
Yuri Kuznetsov
8874c8827a fix 2022-09-24 13:07:22 +03:00
Yuri Kuznetsov
60922ac7cd ref 2022-09-24 12:08:07 +03:00
Yuri Kuznetsov
97b7f4adfa require promise fix 2022-09-23 18:01:58 +03:00
Yuri Kuznetsov
895a2f7f2f ref 2022-09-23 15:49:08 +03:00
Yuri Kuznetsov
25bcb9a49d ref 2022-09-23 15:34:03 +03:00
Yuri Kuznetsov
ebf8d58a5e jsdoc 2022-09-23 15:10:43 +03:00
Yuri Kuznetsov
8d5cf689ee ref 2022-09-23 14:27:04 +03:00
Yuri Kuznetsov
e72f348dc8 cs fix 2022-09-23 14:21:14 +03:00
Yuri Kuznetsov
caaf651a2e type fix 2022-09-23 14:20:13 +03:00
Yuri Kuznetsov
8e62ed2fb8 login as another user 2022-09-23 14:02:31 +03:00
Yuri Kuznetsov
d5058d9399 fix 2022-09-23 13:57:33 +03:00
Yuri Kuznetsov
4279e86526 fix typo 2022-09-23 12:07:50 +03:00
Yuri Kuznetsov
0691e469e5 cs fix and types 2022-09-23 12:04:50 +03:00
Yuri Kuznetsov
90cd54410b fix page title 2022-09-23 11:49:34 +03:00
Yuri Kuznetsov
546bb56c86 working time range assignment checker 2022-09-23 11:44:54 +03:00
Yuri Kuznetsov
340f82cc4b idea cs 2022-09-23 11:38:19 +03:00
Yuri Kuznetsov
81f10127fa Merge branch 'fix' 2022-09-23 11:06:34 +03:00
Yuri Kuznetsov
34529a8ed9 numpad enter 2022-09-23 10:40:05 +03:00
Yuri Kuznetsov
8d12148722 Merge branch 'fix' 2022-09-21 14:45:32 +03:00
Yuri Kuznetsov
8fd44acae2 entry point 404 2022-09-21 14:40:28 +03:00
Yuri Kuznetsov
70000efc0a app doAction public 2022-09-21 14:26:49 +03:00
Yuri Kuznetsov
31de034d45 storage support null 2022-09-21 12:35:14 +03:00
Yuri Kuznetsov
4dd540ffc7 cleanup 2022-09-21 11:27:36 +03:00
Yuri Kuznetsov
9c20116c9b v 2022-09-20 20:21:47 +03:00
Yuri Kuznetsov
926410d58f upgrade file 2022-09-20 20:21:11 +03:00
Yuri Kuznetsov
c64a107ad9 dif docs 2022-09-20 20:20:54 +03:00
Yuri Kuznetsov
5dcd25946b diff mandatory files 2022-09-20 20:09:15 +03:00
Yuri Kuznetsov
d12865bbcb lf command 2022-09-20 18:10:38 +03:00
Yuri Kuznetsov
3fed415437 clnup 2022-09-20 17:18:22 +03:00
Yuri Kuznetsov
a03a13d3b9 fix auth token error 500 2022-09-20 17:05:11 +03:00
Yuri Kuznetsov
94cef5d4a2 cs fix 2022-09-20 13:51:44 +03:00
Yuri Kuznetsov
3a97076790 date-time value object support from string w/o seconds 2022-09-20 13:32:02 +03:00
Yuri Kuznetsov
e625951831 array link-list fix 2022-09-20 12:14:28 +03:00
Yuri Kuznetsov
3dfaae167f working time function fixes 2022-09-19 18:17:21 +03:00
Yuri Kuznetsov
4d7e56e7b7 working calendar 2022-09-19 17:07:16 +03:00
Yuri Kuznetsov
f533c68c9b fix enum empty value not selected 2022-09-19 15:37:52 +03:00
Yuri Kuznetsov
c0f3fdb226 Merge branch 'fix' 2022-09-19 10:55:26 +03:00
Yuri Kuznetsov
6f37c54ff6 fix typo 2022-09-18 11:11:38 +03:00
Yuri Kuznetsov
a6ca10fdc8 email mass move to folder 2022-09-18 11:09:22 +03:00
Yuri Kuznetsov
07d7afb5b4 fix 2022-09-17 19:55:37 +03:00
Yuri Kuznetsov
cae9b04f80 date fields validation 2022-09-17 19:52:33 +03:00
Yuri Kuznetsov
edf4e6c9e4 date add methods 2022-09-17 19:22:26 +03:00
Yuri Kuznetsov
2420746f1b folders save fix 2022-09-16 21:46:42 +03:00
Yuri Kuznetsov
2dfd00dd2e cs fix 2022-09-16 21:46:09 +03:00
Yuri Kuznetsov
e043bb48e9 css fix 2022-09-16 14:23:44 +03:00
Yuri Kuznetsov
9aaef9d957 v 2022-09-16 10:08:10 +03:00
Yuri Kuznetsov
87449aae67 cleanup 2022-09-16 10:06:48 +03:00
Yuri Kuznetsov
191d064fe1 exception log message interface 2022-09-16 10:01:22 +03:00
Yuri Kuznetsov
dcb3e2feaf typo fix 2022-09-16 09:44:22 +03:00
Yuri Kuznetsov
da9a423e59 css fix 2022-09-15 19:04:46 +03:00
Yuri Kuznetsov
3be4510e63 css fix 2022-09-15 18:55:02 +03:00
Yuri Kuznetsov
a6bb5a239b style fix 2022-09-15 18:05:38 +03:00
Yuri Kuznetsov
a5fb42609b calendar style fix 2022-09-15 16:30:09 +03:00
Yuri Kuznetsov
40c2c1718e calendar minor none 2022-09-15 16:19:09 +03:00
Yuri Kuznetsov
aeecfd63da color fix 2022-09-15 15:53:55 +03:00
Yuri Kuznetsov
1da1e6da9b fix 2022-09-15 15:52:16 +03:00
Yuri Kuznetsov
bf9f23ebdd dev 2022-09-15 15:45:16 +03:00
Yuri Kuznetsov
7beb4f8d83 fix 2022-09-15 15:33:36 +03:00
Yuri Kuznetsov
991b859643 calendar now circle 2022-09-15 15:31:40 +03:00
Yuri Kuznetsov
9bd74e08db disable email fields layout 2022-09-15 14:52:36 +03:00
Yuri Kuznetsov
cfdf65025d fix stream post input event 2022-09-15 13:32:29 +03:00
Yuri Kuznetsov
bf471e654c calendar now indicator 2022-09-15 12:42:53 +03:00
Yuri Kuznetsov
5feee1cf55 calendar today text color 2022-09-15 12:21:51 +03:00
Yuri Kuznetsov
6af6fc017b lead capture fix 2022-09-15 10:44:39 +03:00
Yuri Kuznetsov
8ee9a792fc lead industry acl fix 2022-09-15 10:09:37 +03:00
Yuri Kuznetsov
9ef1c5928f fix campaign bottom view 2022-09-14 16:50:50 +03:00
Yuri Kuznetsov
64c933e365 v 2022-09-14 12:52:15 +03:00
Yuri Kuznetsov
32055f3d6e fix upload in chunks check 2022-09-14 10:10:45 +03:00
Yuri Kuznetsov
804acae44b fix extension check 2022-09-13 20:51:34 +03:00
Yuri Kuznetsov
6b3f37c00e panel show hide ref 2022-09-13 20:32:24 +03:00
Yuri Kuznetsov
4bdc4878cd fix bottom tab layout 2022-09-13 17:41:33 +03:00
Yuri Kuznetsov
625d2bc128 fix tab race condition error 2022-09-13 17:27:44 +03:00
Yuri Kuznetsov
0af5bb1b4b fix bottom tabs fetch 2022-09-13 14:26:48 +03:00
Yuri Kuznetsov
7a0d59357c panel hide/show concurrency issue fix 2022-09-13 14:16:55 +03:00
Yuri Kuznetsov
adbb46d02c system template inline attachments 2022-09-13 10:12:28 +03:00
Yuri Kuznetsov
ac3884179e cs fix 2022-09-13 10:08:31 +03:00
Yuri Kuznetsov
7cf1af188d fix attachment replated validation 2022-09-13 09:36:47 +03:00
Yuri Kuznetsov
21b695e4ef style fix 2022-09-13 09:30:50 +03:00
Yuri Kuznetsov
fbda66defc fix 2022-09-13 09:25:49 +03:00
Yuri Kuznetsov
beb4435ee0 diff closest 2022-09-12 15:07:32 +03:00
Yuri Kuznetsov
6a4c78c1cb fix language settings 2022-09-12 14:51:05 +03:00
Yuri Kuznetsov
dc7f5d8e66 fix grunt zip 2022-09-12 14:06:54 +03:00
Yuri Kuznetsov
872a4c2f2c fix typo 2022-09-12 12:35:27 +03:00
Yuri Kuznetsov
8a5204bc4c css fix 2022-09-12 12:03:26 +03:00
Yuri Kuznetsov
acbf6a1742 v 2022-09-12 11:22:07 +03:00
Yuri Kuznetsov
b2d3d56a85 attachment-multiple link 2022-09-12 11:20:48 +03:00
Yuri Kuznetsov
8b83fa640f note relate icon 2022-09-12 10:45:16 +03:00
Yuri Kuznetsov
5a95abed73 v 2022-09-12 09:05:25 +03:00
Yuri Kuznetsov
ca1d689c3a it_IT 2022-09-12 09:04:35 +03:00
Yuri Kuznetsov
9857a61744 field validator 2022-09-11 18:09:59 +03:00
Yuri Kuznetsov
0c750789b1 auth cookie fallback 2022-09-11 16:01:04 +03:00
Yuri Kuznetsov
ccb6c19c72 url field fix encode 2022-09-10 09:59:44 +03:00
Yuri Kuznetsov
011581f09d it_IT 2022-09-09 11:07:23 +03:00
Yuri Kuznetsov
110dd7b8b3 fix extension install 2022-09-09 10:45:14 +03:00
Yuri Kuznetsov
f9bdd78df8 ref 2022-09-09 10:24:17 +03:00
Yuri Kuznetsov
241b582923 css fix 2022-09-08 15:01:59 +03:00
Yuri Kuznetsov
348a089e18 css fix 2022-09-08 13:22:01 +03:00
Yuri Kuznetsov
7528fb3871 email folder no actions + merge disabled 2022-09-07 14:11:17 +03:00
Yuri Kuznetsov
e76f849bde cs fix 2022-09-06 19:54:07 +03:00
Yuri Kuznetsov
770658ffed cs fix 2022-09-06 19:50:31 +03:00
Yuri Kuznetsov
348bcd64ba popover viewport 2022-09-06 08:53:30 +03:00
Yuri Kuznetsov
23ec5a66a7 css fix 2022-09-05 18:20:18 +03:00
Yuri Kuznetsov
210da100ea user links entityAcl 2022-09-05 18:12:08 +03:00
Yuri Kuznetsov
91aec9fc1d fix typo 2022-09-05 09:59:49 +03:00
Yuri Kuznetsov
155565b946 cleanup 2022-09-03 21:14:36 +03:00
Yuri Kuznetsov
5157430104 email compose focus 2022-09-03 21:11:53 +03:00
Yuri Kuznetsov
2eb88617b3 fix email compose setup 2022-09-03 20:42:19 +03:00
Yuri Kuznetsov
5e4e0b8d3c button modal right position impr 2022-09-02 18:40:36 +03:00
Yuri Kuznetsov
5f1cb260ae reply btn style 2022-09-02 12:07:14 +03:00
Yuri Kuznetsov
d854fc9fa6 css fix 2022-09-02 11:41:12 +03:00
Yuri Kuznetsov
d455d0c73f css fix 2022-09-02 10:20:57 +03:00
Yuri Kuznetsov
ae15b8fb5e fix table 2022-09-02 10:07:20 +03:00
Yuri Kuznetsov
d686aee9d4 css fix 2022-09-02 10:02:12 +03:00
Yuri Kuznetsov
6e667a5024 merge fix 2022-09-01 20:24:18 +03:00
Yuri Kuznetsov
5610ac9b71 doc fix 2022-09-01 20:13:12 +03:00
Yuri Kuznetsov
f9bb35ae68 fix 2022-08-31 18:48:04 +03:00
Yuri Kuznetsov
768f6d7c71 dashboard menu 2022-08-31 18:42:31 +03:00
Yuri Kuznetsov
ea1455a50c css fix 2022-08-31 18:23:38 +03:00
Yuri Kuznetsov
cd6a157f1d fix 2022-08-31 16:45:54 +03:00
Yuri Kuznetsov
447d54b61b cleanup 2022-08-31 16:06:20 +03:00
Yuri Kuznetsov
f721220b1a css fix 2022-08-31 16:02:44 +03:00
Yuri Kuznetsov
95ed44d2ec css fix 2022-08-31 15:40:01 +03:00
Yuri Kuznetsov
5ad74492e1 css fix 2022-08-31 15:06:15 +03:00
Yuri Kuznetsov
b191896fb1 cs fix 2022-08-31 15:06:09 +03:00
Yuri Kuznetsov
314636e298 update identicon 2022-08-31 13:45:12 +03:00
Yuri Kuznetsov
6e4d25fadd wysiwyg fallback fix 2022-08-31 12:40:15 +03:00
Yuri Kuznetsov
d401cb4e4c filter join char 2022-08-31 12:28:57 +03:00
Yuri Kuznetsov
2f7c892f67 orm ref 2022-08-31 12:02:34 +03:00
Yuri Kuznetsov
1f33f41965 orm ref 2022-08-31 11:51:50 +03:00
dependabot[bot]
7e6c64364f Bump moment-timezone from 0.5.33 to 0.5.35 (#2418)
Bumps [moment-timezone](https://github.com/moment/moment-timezone) from 0.5.33 to 0.5.35.
- [Release notes](https://github.com/moment/moment-timezone/releases)
- [Changelog](https://github.com/moment/moment-timezone/blob/develop/changelog.md)
- [Commits](https://github.com/moment/moment-timezone/compare/0.5.33...0.5.35)

---
updated-dependencies:
- dependency-name: moment-timezone
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-31 09:36:00 +03:00
Yuri Kuznetsov
9916b95703 stream query impr 2022-08-30 12:49:02 +03:00
Yuri Kuznetsov
cba0bf3d20 import entity bigint 2022-08-30 08:53:48 +03:00
Yuri Kuznetsov
82b043adf6 rename 2022-08-30 08:48:15 +03:00
Yuri Kuznetsov
bfcf607468 import error integrity type constraint 2022-08-29 18:23:06 +03:00
Yuri Kuznetsov
6db74ec68f fix import error field 2022-08-29 17:59:25 +03:00
Yuri Kuznetsov
02cb7c1fd5 edit modal lost focus fix 2022-08-29 17:42:45 +03:00
Yuri Kuznetsov
8b06f2c02c dialog focus fix 2022-08-29 17:12:01 +03:00
Yuri Kuznetsov
9644729f68 dialog close on hide 2022-08-29 16:25:01 +03:00
Yuri Kuznetsov
c0f3d5e765 fix 2022-08-29 16:10:41 +03:00
Yuri Kuznetsov
e766625aa8 confirm fix 2022-08-29 16:01:34 +03:00
Yuri Kuznetsov
ad97a71cb6 acceptance status focus 2022-08-29 15:00:45 +03:00
Yuri Kuznetsov
d857231178 acceptance status fix modal 2022-08-29 14:42:50 +03:00
Yuri Kuznetsov
4976ebe89e glass fix 2022-08-29 14:10:53 +03:00
Yuri Kuznetsov
571ccc08d4 compose fix 2022-08-29 12:15:45 +03:00
Yuri Kuznetsov
63f73483a1 css fix 2022-08-29 10:52:59 +03:00
Yuri Kuznetsov
60e4d3e7c0 css fix 2022-08-29 10:49:05 +03:00
Yuri Kuznetsov
063b5e19a2 system requirements css 2022-08-29 10:35:16 +03:00
Yuri Kuznetsov
9899e5913f entity manager table css change 2022-08-29 09:59:46 +03:00
Yuri Kuznetsov
6730e8a48b reminder fix 2022-08-28 22:54:23 +03:00
Yuri Kuznetsov
fe833862f3 theme fix 2022-08-28 22:42:13 +03:00
Yuri Kuznetsov
f660c9aedf wysiwyg iframe fallback padding 2022-08-28 21:11:04 +03:00
Yuri Kuznetsov
58cd736ab9 wysiwyg fallback radius 2022-08-28 20:47:43 +03:00
Yuri Kuznetsov
693d952910 pt_BR 2022-08-28 19:15:20 +03:00
Yuri Kuznetsov
8ffb72df30 fix 2022-08-28 18:54:08 +03:00
Yuri Kuznetsov
2ae4094c64 theme fix 2022-08-28 18:49:45 +03:00
Yuri Kuznetsov
3c089c8628 quick view change 2022-08-27 16:43:08 +03:00
Yuri Kuznetsov
a2f7bef58d email reply update 2022-08-27 16:39:44 +03:00
Yuri Kuznetsov
cc2e64a4cd ref 2022-08-27 16:20:07 +03:00
Yuri Kuznetsov
a2eb3d7b8c color fix 2022-08-26 19:39:06 +03:00
David
214f5cec96 fixed markdown mime type (#2416) 2022-08-26 15:24:16 +03:00
Arkadiy Asuratov
d56b95d9f2 fix typo (#2414) 2022-08-26 11:49:28 +03:00
Yuri Kuznetsov
7f4595a374 color fixes 2022-08-26 10:34:29 +03:00
Yuri Kuznetsov
c3b5191ca4 fix 2022-08-26 10:22:51 +03:00
Yuri Kuznetsov
de8f9114ab color fix 2022-08-26 10:05:47 +03:00
Yuri Kuznetsov
960583c052 color fix 2022-08-26 10:03:21 +03:00
Yuri Kuznetsov
32baf94251 color fixes 2022-08-26 10:01:07 +03:00
Yuri Kuznetsov
e290bc0b12 glass theme fixes 2022-08-26 09:49:30 +03:00
Yuri Kuznetsov
54bf5d98ae css fix 2022-08-26 09:42:32 +03:00
Yuri Kuznetsov
d00b77137e css fix 2022-08-25 23:28:19 +03:00
Yuri Kuznetsov
293ca499cc color 2022-08-25 23:22:27 +03:00
Yuri Kuznetsov
5825f8a8f9 colors 2022-08-25 23:02:24 +03:00
Yuri Kuznetsov
70f8458d9c colors 2022-08-25 21:34:42 +03:00
Yuri Kuznetsov
d8dc5d107e color fix 2022-08-25 21:17:25 +03:00
Yuri Kuznetsov
47d7064a72 fix 2022-08-25 20:12:01 +03:00
Yuri Kuznetsov
6874bee0ad ref and bypass app reload 2022-08-25 20:02:26 +03:00
Yuri Kuznetsov
18f285be91 js doc 2022-08-25 20:00:53 +03:00
Yuri Kuznetsov
9be5d5b102 jsdoc 2022-08-25 19:45:14 +03:00
Yuri Kuznetsov
25782c7696 ref 2022-08-25 19:45:05 +03:00
Yuri Kuznetsov
20ae316c63 page refresh on update 2022-08-25 19:18:08 +03:00
Yuri Kuznetsov
8fd166ef2b category flicker fix 2022-08-25 17:50:03 +03:00
Yuri Kuznetsov
af8ce3a34e fix typo 2022-08-25 17:16:39 +03:00
Yuri Kuznetsov
e5956abb85 fix 2022-08-25 17:15:40 +03:00
Yuri Kuznetsov
7024487528 bc fix 2022-08-25 16:51:34 +03:00
Yuri Kuznetsov
a938905946 fix 2022-08-25 15:37:20 +03:00
Yuri Kuznetsov
0250bfcd12 fix 2022-08-25 14:25:21 +03:00
Yuri Kuznetsov
6d7e1f0952 enum default null 2022-08-25 11:16:27 +03:00
Yuri Kuznetsov
a098b20221 idea 2022-08-25 11:14:50 +03:00
Yuri Kuznetsov
4ab21cb80b ref 2022-08-24 16:56:04 +03:00
Yuri Kuznetsov
f9e3953f68 record modal refactor 2022-08-24 16:39:59 +03:00
Yuri Kuznetsov
313a2874cd quick detail 2022-08-24 15:53:44 +03:00
Yuri Kuznetsov
60ae130612 stream quick view 2022-08-24 12:52:26 +03:00
Yuri Kuznetsov
22084a3d77 link mul with primary fix 2022-08-24 11:43:21 +03:00
Yuri Kuznetsov
ce35f68584 quick view middle click 2022-08-24 11:20:07 +03:00
Yuri Kuznetsov
d0ff17ed40 user team no edit in modal 2022-08-24 11:09:00 +03:00
Yuri Kuznetsov
30cfea4ac4 team detail small 2022-08-24 11:07:32 +03:00
Yuri Kuznetsov
f83d0a34c3 fix 2022-08-24 10:38:31 +03:00
Yuri Kuznetsov
f2fd948c7b cleanup 2022-08-24 10:27:05 +03:00
Yuri Kuznetsov
1b0a20c001 ref 2022-08-24 10:25:18 +03:00
Yuri Kuznetsov
9fa4f40ccf cs fix 2022-08-24 10:18:21 +03:00
Yuri Kuznetsov
71e39fa4fe kanban quick view key 2022-08-24 10:14:54 +03:00
Yuri Kuznetsov
d98dfecef3 file gray-box style fix 2022-08-23 21:16:12 +03:00
Yuri Kuznetsov
adfd7efae6 comment 2022-08-23 13:26:29 +03:00
Yuri Kuznetsov
0d75fa4929 css fix 2022-08-23 12:51:03 +03:00
Yuri Kuznetsov
43c8613e94 fix label 2022-08-23 12:41:41 +03:00
Yuri Kuznetsov
ee1e3bbaf9 fix webhook cache 2022-08-23 10:31:17 +03:00
Yuri Kuznetsov
1d03f557ce fix lead capture 2022-08-22 17:05:32 +03:00
Yuri Kuznetsov
939d482cfb css fix 2022-08-22 12:27:54 +03:00
Yuri Kuznetsov
044ffbff13 cs fix 2022-08-22 12:20:47 +03:00
Yuri Kuznetsov
37130f00a0 add image type inline 2022-08-22 11:37:34 +03:00
Yuri Kuznetsov
c40070ceb0 download csp and fix 2022-08-22 11:37:26 +03:00
Yuri Kuznetsov
76d9b3cf9c audio video files inline 2022-08-22 11:30:15 +03:00
Yuri Kuznetsov
532321ddeb inlineMineTypeList 2022-08-22 11:23:43 +03:00
Yuri Kuznetsov
40b2613580 upload attachment same file fix 2022-08-22 11:14:52 +03:00
Yuri Kuznetsov
e298ebec4b text field fetch trim empty 2022-08-22 11:03:21 +03:00
Yuri Kuznetsov
4073c60182 fix attachment upload 2022-08-22 10:53:03 +03:00
Yuri Kuznetsov
2553496ce6 stream post empty 2022-08-22 10:45:52 +03:00
Yuri Kuznetsov
67c0ac45bd fix typo 2022-08-22 10:45:35 +03:00
Yuri Kuznetsov
26f3c5630a dashbord layout add dashlet filter portal 2022-08-22 10:07:58 +03:00
Yuri Kuznetsov
f92f21764c idea change 2022-08-22 10:07:38 +03:00
Yuri Kuznetsov
a8631a6ce9 kanban fix 2022-08-21 19:36:36 +03:00
Yuri Kuznetsov
4045e33453 fix typo 2022-08-21 19:16:13 +03:00
Yuri Kuznetsov
8c79eb1ea4 fix dashboard layout focus 2022-08-21 19:14:50 +03:00
Yuri Kuznetsov
8885db0ae5 fix 2022-08-20 19:35:32 +03:00
Yuri Kuznetsov
a8d210a22a cs fix 2022-08-20 18:32:57 +03:00
Yuri Kuznetsov
82912197eb cs fix 2022-08-20 18:07:33 +03:00
Yuri Kuznetsov
33cac3a551 cs fix 2022-08-20 18:03:27 +03:00
Yuri Kuznetsov
ca89fd021d cs fix 2022-08-20 17:51:20 +03:00
Yuri Kuznetsov
ad4e7c0beb cs fix 2022-08-20 17:44:08 +03:00
Yuri Kuznetsov
739e2b0ebc cleanup 2022-08-20 14:51:53 +03:00
Yuri Kuznetsov
738c6791a4 list select shift change 2022-08-20 14:51:36 +03:00
David
9bfa1a9225 Shift select implementation (#2409)
* Shift select implementation

* fixed checking for the first time

Co-authored-by: David Moškoř <david.moskor@apertia.cz>
2022-08-20 14:22:18 +03:00
Yuri Kuznetsov
7e3cc0480e fix edit focus 2022-08-20 12:56:53 +03:00
Yuri Kuznetsov
5365640ca8 ctrl+click quick view 2022-08-20 12:34:42 +03:00
Yuri Kuznetsov
fe0570b0c4 color fix 2022-08-20 12:02:24 +03:00
Yuri Kuznetsov
cca76ec4e0 fix popover hide on tab 2022-08-19 21:30:18 +03:00
Yuri Kuznetsov
c226fd7936 popover fix 2022-08-19 21:22:34 +03:00
Yuri Kuznetsov
f65143edf3 cleanup 2022-08-19 21:10:19 +03:00
Yuri Kuznetsov
483b717825 header fix 2022-08-19 18:44:32 +03:00
Yuri Kuznetsov
b8a53f793a person name ref and fix 2022-08-19 17:45:32 +03:00
Yuri Kuznetsov
0210f9642a ref 2022-08-19 17:20:35 +03:00
Yuri Kuznetsov
b6af13767d stream panel focus fix 2022-08-19 16:31:43 +03:00
Yuri Kuznetsov
73ec521f41 popover refactoring 2022-08-19 16:25:51 +03:00
Yuri Kuznetsov
ea4ff23eee ref 2022-08-19 15:15:21 +03:00
Yuri Kuznetsov
d4131bbcb0 fix orm 2022-08-18 14:49:05 +03:00
Yuri Kuznetsov
237ef71ad0 record dashlet fields filter forbidden 2022-08-18 12:23:59 +03:00
Yuri Kuznetsov
918f3fdd70 cleanup 2022-08-18 12:19:56 +03:00
Yuri Kuznetsov
98bbf8c1ba fix comment 2022-08-18 12:05:07 +03:00
Yuri Kuznetsov
613b82a85a ref 2022-08-18 12:01:46 +03:00
Yuri Kuznetsov
f72cefeaef rebuild refactoring 2022-08-18 11:53:57 +03:00
Yuri Kuznetsov
316e7ec876 types 2022-08-18 11:22:46 +03:00
Yuri Kuznetsov
e0ad00d857 query composer factory 2022-08-18 11:13:54 +03:00
Yuri Kuznetsov
108998be43 css fix 2022-08-17 20:43:31 +03:00
Yuri Kuznetsov
5b48d2d3eb cs fix 2022-08-17 20:37:10 +03:00
Yuri Kuznetsov
66c3aa2011 ref 2022-08-17 20:33:54 +03:00
Yuri Kuznetsov
f7d0723516 fix email address 2022-08-17 19:56:28 +03:00
Yuri Kuznetsov
52588323a0 fix fullform draft 2022-08-17 19:46:23 +03:00
Yuri Kuznetsov
43451f99f1 fix icon 2022-08-17 19:19:22 +03:00
Yuri Kuznetsov
93139ee7d0 color fix 2022-08-17 19:09:46 +03:00
Yuri Kuznetsov
4ee86fccfa color fix 2022-08-17 19:06:32 +03:00
Yuri Kuznetsov
cd1786c8ac fix naming 2022-08-17 18:47:24 +03:00
Yuri Kuznetsov
6a346bd01d fix last viewed 2022-08-17 15:37:45 +03:00
Yuri Kuznetsov
b0b770eabe fix 2022-08-17 15:36:43 +03:00
Yuri Kuznetsov
21ef8c5fe6 jsdoc 2022-08-17 15:33:33 +03:00
Yuri Kuznetsov
db6ecd6b68 fix typo 2022-08-17 14:48:28 +03:00
Yuri Kuznetsov
cf54ede1ba var helper trim 2022-08-17 14:38:33 +03:00
Yuri Kuznetsov
f8493d3300 fix test 2022-08-17 13:47:53 +03:00
Yuri Kuznetsov
fad66fe813 fix 2022-08-17 13:30:50 +03:00
Yuri Kuznetsov
03c47cb625 sl_SI lang 2022-08-17 13:10:29 +03:00
Yuri Kuznetsov
21f2b22720 fix list view abort 2022-08-17 13:06:58 +03:00
Yuri Kuznetsov
e4142bc0a1 language no santitize 2022-08-17 12:37:41 +03:00
Yuri Kuznetsov
cba4d92f08 headerText usage 2022-08-17 12:13:24 +03:00
Yuri Kuznetsov
0836168771 clientSecurityHeadersDisabled 2022-08-17 10:36:19 +03:00
Yuri Kuznetsov
565f19f51b add google maps to csp 2022-08-17 10:31:23 +03:00
Yuri Kuznetsov
b7de48a8e8 cleanup 2022-08-17 10:29:14 +03:00
Yuri Kuznetsov
402074a9b0 loader lib fix 2022-08-16 20:59:16 +03:00
Yuri Kuznetsov
c5904fdda4 text usage 2022-08-16 20:01:18 +03:00
Yuri Kuznetsov
70fe7dfd62 text usage 2022-08-16 19:32:01 +03:00
Yuri Kuznetsov
c3afa55f89 ref 2022-08-16 19:05:14 +03:00
Yuri Kuznetsov
3d9c5c01d2 fix loader exports to window 2022-08-16 18:56:22 +03:00
Yuri Kuznetsov
9422429df0 jsLibs exportVariable 2022-08-16 18:49:54 +03:00
Yuri Kuznetsov
4ecb8bf898 text usage 2022-08-16 18:32:29 +03:00
Yuri Kuznetsov
71dd03c914 text usage 2022-08-16 18:07:18 +03:00
Yuri Kuznetsov
9691f62ac3 fix formula set completer 2022-08-16 14:32:40 +03:00
Yuri Kuznetsov
374fcf2f9c autocomplete padding 2022-08-15 16:09:00 +03:00
Yuri Kuznetsov
940d407c77 css fix 2022-08-15 16:03:36 +03:00
Yuri Kuznetsov
9b2c988ddc hazyblue panel radius 2022-08-15 15:58:08 +03:00
Yuri Kuznetsov
6d25fb36a0 default theme 2022-08-15 15:53:46 +03:00
Yuri Kuznetsov
2fa287389b css fix 2022-08-15 15:51:57 +03:00
Yuri Kuznetsov
5b7010eebe default theme 2022-08-15 15:39:47 +03:00
Yuri Kuznetsov
32977a09f1 style fix 2022-08-15 15:37:00 +03:00
Yuri Kuznetsov
b222a0996f ref 2022-08-15 13:18:26 +03:00
Yuri Kuznetsov
267dd01228 color fixes 2022-08-15 11:20:12 +03:00
Yuri Kuznetsov
f07b129826 theme fix 2022-08-15 11:08:27 +03:00
Yuri Kuznetsov
aae417a5d9 color fix 2022-08-15 10:56:35 +03:00
Yuri Kuznetsov
68aeaa54b9 loader path do not allow colon 2022-08-15 10:07:52 +03:00
Yuri Kuznetsov
8be18a2d11 cleanup 2022-08-15 10:07:08 +03:00
Yuri Kuznetsov
cf35c20460 loader refactoring 2022-08-14 16:45:04 +03:00
Yuri Kuznetsov
e51a8d74cb theme fix 2022-08-14 14:37:08 +03:00
Yuri Kuznetsov
be6a872eda reminder border radius 2022-08-13 19:06:53 +03:00
Yuri Kuznetsov
34392267f1 fix link click 2022-08-13 19:02:41 +03:00
Yuri Kuznetsov
b960228799 fix link key 2022-08-13 18:57:52 +03:00
Yuri Kuznetsov
bb8f6c9941 key fix 2022-08-13 18:56:39 +03:00
Yuri Kuznetsov
e6771aa5f6 fix click list 2022-08-13 18:50:59 +03:00
Yuri Kuznetsov
3f52538773 fix list view abort 2022-08-13 17:08:04 +03:00
Yuri Kuznetsov
f66de9054d list view loading notification fix 2022-08-13 16:08:01 +03:00
Yuri Kuznetsov
b109e8da68 shadow fix 2022-08-13 14:00:15 +03:00
Yuri Kuznetsov
d14bb881bb theme shadows fixes 2022-08-13 13:55:12 +03:00
Yuri Kuznetsov
eedfdd14e8 top bar shadow 2022-08-13 11:40:51 +03:00
Yuri Kuznetsov
14c28a5aab less ref 2022-08-13 11:02:52 +03:00
Yuri Kuznetsov
975ed83753 navbar shadow in variable 2022-08-13 10:17:35 +03:00
Yuri Kuznetsov
df4e9c8ed0 renamane 2022-08-13 10:17:20 +03:00
Yuri Kuznetsov
cd50307fdf stick-bar shadow 2022-08-13 09:57:37 +03:00
Yuri Kuznetsov
feee057e2b ref 2022-08-12 15:59:58 +03:00
Yuri Kuznetsov
6581acd083 merge 2022-08-12 15:43:53 +03:00
Yuri Kuznetsov
f3824117b3 v 2022-08-12 15:23:12 +03:00
Yuri Kuznetsov
f3736da8a6 fix file field 2022-08-12 15:22:04 +03:00
Yuri Kuznetsov
198b746ce3 fix 2022-08-12 15:00:57 +03:00
Yuri Kuznetsov
a9ded55e26 ref 2022-08-12 14:57:32 +03:00
Yuri Kuznetsov
b50d56f884 fix attachment field focus 2022-08-12 13:45:34 +03:00
Yuri Kuznetsov
207794e168 tabindex 2022-08-12 13:33:42 +03:00
Yuri Kuznetsov
831e589b3d fix ics 2022-08-12 13:20:19 +03:00
Yuri Kuznetsov
61e6f5aeb5 select all a button fix 2022-08-12 13:10:35 +03:00
Yuri Kuznetsov
a3477ac57d notification panel escape 2022-08-12 13:04:36 +03:00
Yuri Kuznetsov
9f08d3e9d6 a button click on enter 2022-08-12 12:58:57 +03:00
Yuri Kuznetsov
d0f65e5fd9 wysiwyg validation message fix 2022-08-12 10:38:13 +03:00
Yuri Kuznetsov
5f20571958 jsdoc 2022-08-12 10:36:34 +03:00
Yuri Kuznetsov
4634597b7f tabindex 2022-08-12 10:17:46 +03:00
Yuri Kuznetsov
ca44c8e9c7 tabindex 2022-08-12 10:05:38 +03:00
Yuri Kuznetsov
2551b024f0 css fixes 2022-08-11 21:09:21 +03:00
Yuri Kuznetsov
e652320a3e modal panel shadow fix 2022-08-11 20:10:04 +03:00
Yuri Kuznetsov
c1f13b146d file field focus 2022-08-11 17:58:00 +03:00
Yuri Kuznetsov
36f3d040dd inline edit disabled is html email tempalte 2022-08-11 17:53:23 +03:00
Yuri Kuznetsov
5ec3ac222b is-html disable inline edit 2022-08-11 17:52:17 +03:00
Yuri Kuznetsov
739f94a41b draft email attachment field fix 2022-08-11 17:50:34 +03:00
Yuri Kuznetsov
678ddfaf11 alert shadow 2022-08-11 16:46:33 +03:00
Yuri Kuznetsov
2cda441421 style shadow fix 2022-08-11 16:40:41 +03:00
Yuri Kuznetsov
e518b8bef5 wysiwyg inline edit focus 2022-08-11 16:20:10 +03:00
Yuri Kuznetsov
ae998c33bd wysiwyg fix shortcut 2022-08-11 16:15:38 +03:00
Yuri Kuznetsov
dc2def1af7 hide smtp in preferences 2022-08-11 14:02:59 +03:00
Yuri Kuznetsov
9570857f8a selectize focus 2022-08-11 12:55:23 +03:00
Yuri Kuznetsov
6df100c2c2 fix inline edit focus 2022-08-11 12:49:59 +03:00
Yuri Kuznetsov
0b46188034 no username cookie 2022-08-11 12:44:38 +03:00
Yuri Kuznetsov
eb8d958fa1 fix 2022-08-11 12:36:23 +03:00
Yuri Kuznetsov
7e74ddc54f phpdoc and type 2022-08-11 11:08:54 +03:00
Yuri Kuznetsov
90ac4bc071 throws tag 2022-08-11 11:05:16 +03:00
Yuri Kuznetsov
c59b655200 add throw tags 2022-08-11 10:43:07 +03:00
Yuri Kuznetsov
a1c7814f5a panel adjacent shadow fix 2022-08-11 10:11:54 +03:00
Yuri Kuznetsov
db713e4c41 less blur 2022-08-11 09:56:04 +03:00
Yuri Kuznetsov
33d7f99c5c css fix 2022-08-11 09:53:27 +03:00
Yuri Kuznetsov
487fed21a1 radius change 2022-08-10 18:37:07 +03:00
Yuri Kuznetsov
8fed65f5be change radius 2022-08-10 18:35:41 +03:00
Yuri Kuznetsov
d2f57cb558 radius change 2022-08-10 18:32:31 +03:00
Yuri Kuznetsov
8b905b6cd3 more radius 2022-08-10 18:16:19 +03:00
Yuri Kuznetsov
e5389af306 fix phpdoc 2022-08-10 17:52:55 +03:00
Yuri Kuznetsov
d524178d3b fix phpdoc 2022-08-10 17:41:20 +03:00
Yuri Kuznetsov
6f7198690d fix phpdoc 2022-08-10 17:36:13 +03:00
Yuri Kuznetsov
d52b73f738 fix phpdoc 2022-08-10 17:28:36 +03:00
Yuri Kuznetsov
785aadc288 fix phpdoc 2022-08-10 17:19:31 +03:00
Yuri Kuznetsov
42175f98e4 fix phpdoc 2022-08-10 17:13:31 +03:00
Yuri Kuznetsov
62975b2957 fix phpdoc 2022-08-10 17:08:39 +03:00
Yuri Kuznetsov
dc433f5a82 fix phpdoc 2022-08-10 17:05:49 +03:00
Yuri Kuznetsov
1af9256658 ref 2022-08-10 16:43:47 +03:00
Yuri Kuznetsov
a3696af196 fix 2022-08-10 14:57:30 +03:00
Yuri Kuznetsov
20913c283e add slashes for text filter 2022-08-10 14:46:19 +03:00
Yuri Kuznetsov
f9df70e710 Merge branch 'fix' 2022-08-10 12:57:14 +03:00
Yuri Kuznetsov
c0c878c20b fix mass action 2022-08-10 12:56:43 +03:00
Yuri Kuznetsov
abc19ee574 fix mass action 2022-08-10 12:55:47 +03:00
Yuri Kuznetsov
3b97d17aed color fix 2022-08-10 12:22:36 +03:00
Yuri Kuznetsov
06ceb371e3 fix 2022-08-10 12:12:42 +03:00
Yuri Kuznetsov
d78666e0d2 fix login 2022-08-10 11:53:58 +03:00
Yuri Kuznetsov
cde19542a6 dropdown fix 2022-08-10 11:36:37 +03:00
Yuri Kuznetsov
263e553a0f source mapping fixes 2022-08-10 11:26:29 +03:00
Yuri Kuznetsov
a129d54e06 window.Espo 2022-08-10 09:55:39 +03:00
Yuri Kuznetsov
09f9cbf3df sourceUrl 2022-08-10 09:54:08 +03:00
Yuri Kuznetsov
14cb5730b5 fix validation message no element 2022-08-10 09:31:27 +03:00
Yuri Kuznetsov
64a0064f3c fix 2022-08-10 09:28:50 +03:00
Yuri Kuznetsov
7c9a605450 fix user auth method empty 2022-08-10 09:26:30 +03:00
Yuri Kuznetsov
7a9d0af314 after-update kb 2022-08-10 09:14:53 +03:00
Yuri Kuznetsov
e2e3bf9a71 fix kanban remove from detail 2022-08-10 09:08:29 +03:00
Yuri Kuznetsov
7752c85304 fix 2022-08-10 09:03:07 +03:00
Yuri Kuznetsov
51fcd5aca9 ref 2022-08-10 08:43:45 +03:00
Yuri Kuznetsov
ad9391ad9e cs fix 2022-08-10 08:37:37 +03:00
Yuri Kuznetsov
0a97096c61 fix ctrl click 2022-08-10 08:27:25 +03:00
Yuri Kuznetsov
fd5b77d919 email filder folder mass action fix 2022-08-09 23:24:33 +03:00
Yuri Kuznetsov
f118f572bc default article 2022-08-09 23:15:46 +03:00
Yuri Kuznetsov
c08b43991a ref 2022-08-09 20:35:36 +03:00
Yuri Kuznetsov
f58f2071ed fix style 2022-08-09 20:34:22 +03:00
Yuri Kuznetsov
879df57fa0 fix 2022-08-09 19:35:58 +03:00
Yuri Kuznetsov
46d0fa2c15 role button 2022-08-09 19:31:36 +03:00
Yuri Kuznetsov
f242cd1454 role button 2022-08-09 19:05:11 +03:00
Yuri Kuznetsov
ba04f1c7f1 fix 2022-08-09 19:01:29 +03:00
Yuri Kuznetsov
df45635fd5 fixes 2022-08-09 19:00:01 +03:00
Yuri Kuznetsov
260f13bf3f a role button 2022-08-09 18:57:02 +03:00
Yuri Kuznetsov
bdd0ced5d2 loader fix 2022-08-09 17:43:30 +03:00
Yuri Kuznetsov
f3a729e283 update flowchart 2022-08-09 17:39:31 +03:00
Yuri Kuznetsov
af345e8721 fix phone email selectable 2022-08-09 16:57:11 +03:00
Yuri Kuznetsov
99670c7b3d strict mode js 2022-08-09 16:50:24 +03:00
Yuri Kuznetsov
01dffd98f2 fixes 2022-08-09 16:48:44 +03:00
Yuri Kuznetsov
137b989064 fix 2022-08-09 16:34:41 +03:00
Yuri Kuznetsov
19eaca9bf4 fix 2022-08-09 15:53:55 +03:00
Yuri Kuznetsov
83c82767c3 cs fix 2022-08-09 14:39:07 +03:00
Yuri Kuznetsov
838be733ff fix 2022-08-09 14:38:08 +03:00
Yuri Kuznetsov
6a49e812fb revert param 2022-08-09 14:37:10 +03:00
Yuri Kuznetsov
95ce8645f2 client headers 2022-08-09 14:30:01 +03:00
Yuri Kuznetsov
b707bf70b8 fix 2022-08-09 13:13:14 +03:00
Yuri Kuznetsov
bc7de312c1 style fixes 2022-08-09 11:51:20 +03:00
Yuri Kuznetsov
9c851a1662 fix style 2022-08-09 11:40:49 +03:00
Yuri Kuznetsov
41cc7efe5b preint to pdf focus 2022-08-08 17:34:23 +03:00
Yuri Kuznetsov
22d141cd20 export ctrl+enter 2022-08-08 17:28:41 +03:00
Yuri Kuznetsov
768c8f6247 more radius 2022-08-08 13:53:43 +03:00
Yuri Kuznetsov
478079ce19 kanban no draggin btn 2022-08-08 13:16:53 +03:00
Yuri Kuznetsov
d472809175 color fix 2022-08-08 13:11:31 +03:00
Yuri Kuznetsov
37ed7f3527 imap fetch since without quotes 2022-08-08 12:46:39 +03:00
Yuri Kuznetsov
1d9b011a68 layout manager grid cancel fix 2022-08-08 12:39:32 +03:00
Yuri Kuznetsov
c6e8ce5ad4 kanban css change 2022-08-08 11:26:14 +03:00
Yuri Kuznetsov
63223a1150 style fixes 2022-08-07 23:12:22 +03:00
Yuri Kuznetsov
580e2858a5 css fixes 2022-08-07 23:03:34 +03:00
Yuri Kuznetsov
f298a5d0b2 focus on reset fitler 2022-08-07 19:09:31 +03:00
Yuri Kuznetsov
1e9e60640c css fix 2022-08-07 19:00:58 +03:00
Yuri Kuznetsov
c36096cb45 date-start date-end dep 2022-08-07 16:45:35 +03:00
Yuri Kuznetsov
cf6bf2ad28 color fix 2022-08-07 16:39:09 +03:00
Yuri Kuznetsov
09b62d5112 color fix 2022-08-07 16:15:36 +03:00
Yuri Kuznetsov
c12eacc4c1 theme color changes 2022-08-07 16:11:49 +03:00
Yuri Kuznetsov
b5289212b1 see-more style fix 2022-08-07 15:38:57 +03:00
Yuri Kuznetsov
856e68f9ee dark theme more radius 2022-08-07 15:30:54 +03:00
Yuri Kuznetsov
9eb7e2ce0f theme fix 2022-08-07 15:26:28 +03:00
Yuri Kuznetsov
a0777dc452 dashlet dropdwon issue fix 2022-08-07 12:05:07 +03:00
Yuri Kuznetsov
7ecf2ea11d see more icon 2022-08-07 11:05:42 +03:00
Yuri Kuznetsov
4af7fde960 commented 2022-08-07 11:00:52 +03:00
Yuri Kuznetsov
838a80fa55 dashlet no dragging over menu 2022-08-07 10:49:51 +03:00
Yuri Kuznetsov
36a72d0cb9 link mult search filter style fix 2022-08-07 10:41:13 +03:00
Yuri Kuznetsov
ea00d2d869 theme fixes 2022-08-07 10:37:06 +03:00
Yuri Kuznetsov
1b2f96fe5b theme fixes 2022-08-06 21:35:49 +03:00
Yuri Kuznetsov
8323627e9a fix radius 2022-08-06 21:23:46 +03:00
Yuri Kuznetsov
73a2ece6a1 strip source maps 2022-08-06 21:14:11 +03:00
Yuri Kuznetsov
3fc84a8453 cs fix 2022-08-06 20:39:18 +03:00
Yuri Kuznetsov
d2480e9637 ref 2022-08-06 20:33:30 +03:00
Yuri Kuznetsov
fb95614171 tpl fix 2022-08-06 20:28:16 +03:00
Yuri Kuznetsov
97e497cced style changes 2022-08-06 20:15:44 +03:00
Yuri Kuznetsov
0857e28931 ref 2022-08-06 17:53:05 +03:00
Yuri Kuznetsov
b1226fb091 fix popover 2022-08-06 17:43:34 +03:00
Yuri Kuznetsov
a68c797cb6 ref 2022-08-06 17:33:39 +03:00
Yuri Kuznetsov
f29a1a1e80 fix 2022-08-06 17:30:01 +03:00
Yuri Kuznetsov
bea7442ecf stream tpl fix 2022-08-06 17:17:18 +03:00
Yuri Kuznetsov
fc09c29769 style fix 2022-08-06 17:09:44 +03:00
Yuri Kuznetsov
5c997b04c3 css fixes 2022-08-06 17:05:25 +03:00
Yuri Kuznetsov
9a7e0e8b2a navbar fix 2022-08-06 17:05:18 +03:00
Yuri Kuznetsov
ff519194c9 css fixes 2022-08-06 14:44:46 +03:00
Yuri Kuznetsov
b89d9bd6b5 fix tab index 2022-08-06 13:56:56 +03:00
Yuri Kuznetsov
183ab82f5a css fix 2022-08-06 13:55:10 +03:00
Yuri Kuznetsov
8be9e1ec55 btn fixes 2022-08-06 13:49:56 +03:00
Yuri Kuznetsov
a4ae94f5e9 fix less 2022-08-06 12:37:11 +03:00
Yuri Kuznetsov
be981741ce fix 2022-08-06 12:29:04 +03:00
Yuri Kuznetsov
9491895991 ref 2022-08-06 12:27:25 +03:00
Yuri Kuznetsov
038c374dcd detail record buttons impr 2022-08-06 11:59:15 +03:00
Yuri Kuznetsov
ccc2ed09b8 select record ctrl enter 2022-08-06 11:22:32 +03:00
Yuri Kuznetsov
4a570c6699 formula sandbox run title 2022-08-06 10:57:43 +03:00
Yuri Kuznetsov
8bccde26d2 css type fixes 2022-08-06 10:56:35 +03:00
Yuri Kuznetsov
f924f60de3 fix user teams 2022-08-06 10:44:19 +03:00
Yuri Kuznetsov
3d646039be css fix 2022-08-05 21:54:18 +03:00
Yuri Kuznetsov
da064ff76f css fix 2022-08-05 17:53:26 +03:00
Yuri Kuznetsov
4f17ebabee link text muted hover 2022-08-05 17:52:05 +03:00
Yuri Kuznetsov
0cd88f2ec9 colorpicker style fix 2022-08-05 17:47:00 +03:00
Yuri Kuznetsov
77d5e1997d bc fix 2022-08-05 17:08:54 +03:00
Yuri Kuznetsov
2e688d7671 dashlet options buttons small 2022-08-05 16:27:36 +03:00
Yuri Kuznetsov
3a5e514691 cs fix 2022-08-05 16:24:05 +03:00
Yuri Kuznetsov
5e7e920687 focus fix 2022-08-05 13:28:20 +03:00
Yuri Kuznetsov
adefd7d3c5 router fix 2022-08-05 13:15:19 +03:00
Yuri Kuznetsov
e2a1e497fc focus fix 2022-08-05 13:15:13 +03:00
Yuri Kuznetsov
bd9dc3dfe3 ref 2022-08-05 12:37:39 +03:00
Yuri Kuznetsov
58a0be2cef fix 2022-08-05 12:13:04 +03:00
Yuri Kuznetsov
fea97768d9 fetch main 2022-08-05 12:11:36 +03:00
Yuri Kuznetsov
41865d8cde note acl 2022-08-05 12:05:52 +03:00
Yuri Kuznetsov
b2df17cf93 cleanup 2022-08-05 11:30:47 +03:00
Yuri Kuznetsov
ec0649f65a note view 2022-08-05 11:17:10 +03:00
Yuri Kuznetsov
01cc896972 fix validate tab list unique 2022-08-05 09:17:36 +03:00
Yuri Kuznetsov
522e9be624 css fix 2022-08-04 21:23:54 +03:00
Yuri Kuznetsov
856f4687e7 css fixes 2022-08-04 21:09:23 +03:00
Yuri Kuznetsov
ca4f787131 theme fix 2022-08-04 19:47:50 +03:00
Yuri Kuznetsov
d518d3671b fix tab switch 2022-08-04 18:35:57 +03:00
Yuri Kuznetsov
9bcdef9107 cs fix 2022-08-04 16:30:23 +03:00
Yuri Kuznetsov
8854f60f4a fix notify not closed 2022-08-04 15:01:49 +03:00
Yuri Kuznetsov
760f51352b preset filters shortcuts 2022-08-04 13:52:14 +03:00
Yuri Kuznetsov
11860495c6 modal on backdrop click 2022-08-04 12:35:34 +03:00
Yuri Kuznetsov
320420ef29 ref 2022-08-04 12:00:30 +03:00
Yuri Kuznetsov
157b2a60bb ref 2022-08-04 10:57:49 +03:00
Yuri Kuznetsov
1299b20fe1 ref 2022-08-04 10:49:44 +03:00
Yuri Kuznetsov
b69109a5d4 fix icon 2022-08-04 10:44:10 +03:00
Yuri Kuznetsov
3d6e83a8cf email draft layout 2022-08-04 10:41:09 +03:00
Yuri Kuznetsov
abe076dc68 fix wywiwyg 2022-08-04 10:02:37 +03:00
Yuri Kuznetsov
cf5b6a6b62 pt_BR 2022-08-04 09:59:04 +03:00
Yuri Kuznetsov
ac115642cd ctrl click 2022-08-04 09:55:42 +03:00
Yuri Kuznetsov
41af71ebf3 fix dashlets 2022-08-04 09:47:55 +03:00
Yuri Kuznetsov
85ed285c79 dashlet btn header style 2022-08-03 18:07:51 +03:00
Yuri Kuznetsov
906f6e5717 fix test 2022-08-03 16:58:49 +03:00
Yuri Kuznetsov
4d2933797d email importer refactor 2022-08-03 16:48:07 +03:00
Yuri Kuznetsov
e237084ec4 last viewed loading 2022-08-03 16:27:24 +03:00
Yuri Kuznetsov
6e5148c48a global search escape 2022-08-03 16:06:10 +03:00
Yuri Kuznetsov
9dd9d4e33a css fix 2022-08-03 16:02:13 +03:00
Yuri Kuznetsov
306de81763 css fix 2022-08-03 15:11:48 +03:00
Yuri Kuznetsov
533b51aed4 fix theme field 2022-08-03 14:58:27 +03:00
Yuri Kuznetsov
7576428284 css panel buttons 2022-08-03 14:50:22 +03:00
Yuri Kuznetsov
ab24606bdf activities create buttons 2022-08-03 13:37:56 +03:00
Yuri Kuznetsov
204046620c cs fix 2022-08-03 12:47:44 +03:00
Yuri Kuznetsov
f3d234877b admin disabled scope as acl false 2022-08-03 12:45:23 +03:00
Yuri Kuznetsov
81f346fcc9 cs fix 2022-08-03 12:17:01 +03:00
Yuri Kuznetsov
3033d3f09b cs fixes 2022-08-03 11:45:04 +03:00
Yuri Kuznetsov
5c7b674b60 ref 2022-08-03 11:27:14 +03:00
Yuri Kuznetsov
89ccbbb2ec theme fixes 2022-08-03 11:04:48 +03:00
Yuri Kuznetsov
899c9dcb74 focus color 2022-08-03 11:00:30 +03:00
Yuri Kuznetsov
74d00c8b89 css fix 2022-08-03 10:27:42 +03:00
Yuri Kuznetsov
f8bfd6869c draft email shortcuts 2022-08-03 10:15:16 +03:00
Yuri Kuznetsov
2aaafe850f no keyCode usage 2022-08-03 09:53:18 +03:00
Yuri Kuznetsov
4d7f86b5da cleanup 2022-08-03 09:34:06 +03:00
Yuri Kuznetsov
9eaab5176a after upgrade event fix 2022-08-03 09:30:10 +03:00
Yuri Kuznetsov
74661e676c fix theme 2022-08-02 20:23:27 +03:00
Yuri Kuznetsov
7f3db957a4 reminder ui fix 2022-08-02 20:06:59 +03:00
Yuri Kuznetsov
0f7ed3d4c7 ctrl space from input 2022-08-02 19:04:41 +03:00
Yuri Kuznetsov
5f2a2728fc create from modals shortcuts 2022-08-02 18:59:02 +03:00
Yuri Kuznetsov
429faf405c focus on searcn bar shortcut 2022-08-02 18:35:14 +03:00
Yuri Kuznetsov
6a5f15bbc5 shortcut next/prev 2022-08-02 17:49:35 +03:00
Yuri Kuznetsov
375454fc5d fix 2022-08-02 16:24:09 +03:00
Yuri Kuznetsov
41b92c9ee1 past calls in my calls dashlet 2022-08-02 16:19:46 +03:00
Yuri Kuznetsov
6293fb98d6 fix layout css 2022-08-02 15:41:14 +03:00
Yuri Kuznetsov
306321258d update jquery-ui 2022-08-02 15:16:08 +03:00
Yuri Kuznetsov
03e85ea32e update moment 2022-08-02 15:05:12 +03:00
Yuri Kuznetsov
551e2a6b47 update selectize 2022-08-02 15:03:50 +03:00
Yuri Kuznetsov
0d4214fe46 update selectize 2022-08-02 14:48:07 +03:00
Yuri Kuznetsov
c8d0fb019e revert package 2022-08-02 14:30:52 +03:00
Yuri Kuznetsov
9867eab381 update moment 2022-08-02 13:43:45 +03:00
Yuri Kuznetsov
252c5a34b3 fix lock 2022-08-02 13:42:40 +03:00
Yuri Kuznetsov
ce5e7d79e8 update package lock 2022-08-02 13:14:18 +03:00
Yuri Kuznetsov
e8946bb4fe fix 2022-08-02 13:14:04 +03:00
Yuri Kuznetsov
d79a5cadd4 Merge branch 'stable' 2022-08-02 12:58:54 +03:00
Yuri Kuznetsov
4e3cee4dc8 fix 2022-08-02 11:07:48 +03:00
Yuri Kuznetsov
61922e0558 acceptance status list view 2022-08-02 10:56:30 +03:00
Yuri Kuznetsov
300cb53f3a more metadata forceAppendPathList 2022-08-02 10:39:23 +03:00
Yuri Kuznetsov
0a43c781e0 filter aux 2022-08-01 22:01:06 +03:00
Yuri Kuznetsov
87c6b9e5d5 stream post do not hide on tab 2022-08-01 16:46:12 +03:00
Yuri Kuznetsov
3f6a8eea5a file upload input tab outline 2022-08-01 16:41:16 +03:00
Yuri Kuznetsov
1b8142d4c3 fix 2022-08-01 16:33:20 +03:00
Yuri Kuznetsov
28113d50ca cs fix 2022-08-01 16:26:37 +03:00
Yuri Kuznetsov
0851d2ce7a theme fix 2022-08-01 16:16:05 +03:00
Yuri Kuznetsov
b32f627bda modal record view shortcut switch tabs 2022-08-01 16:08:35 +03:00
Yuri Kuznetsov
e88153b917 fix tabs switch 2022-08-01 16:02:50 +03:00
Yuri Kuznetsov
893a260ed8 fix text cut 2022-08-01 15:59:31 +03:00
Yuri Kuznetsov
e93ff18b4c shortcut switch tabs 2022-08-01 15:41:14 +03:00
Yuri Kuznetsov
048a75ff67 calendar create event shortcut 2022-08-01 15:06:42 +03:00
Yuri Kuznetsov
911bdb3a51 timeline create shortcut 2022-08-01 14:41:56 +03:00
Yuri Kuznetsov
b87019e200 calendar mode shortcuts 2022-08-01 13:14:01 +03:00
Yuri Kuznetsov
e413ca6643 shift key 2022-08-01 12:58:02 +03:00
Yuri Kuznetsov
642ddf5a6c calendar shortcuts 2022-08-01 12:53:21 +03:00
Yuri Kuznetsov
42c62ea59b cs fix 2022-08-01 12:01:16 +03:00
Yuri Kuznetsov
d19b7ef657 search with ctrl+enter 2022-08-01 11:26:13 +03:00
Yuri Kuznetsov
6fbc892acf cleanup 2022-08-01 11:12:29 +03:00
Yuri Kuznetsov
38d62d3a8f multi-select prevent ctrl enter 2022-08-01 11:10:37 +03:00
Yuri Kuznetsov
a44d3aa4a3 selectize wrapper 2022-08-01 11:01:28 +03:00
Yuri Kuznetsov
248d288803 fix assigned user tab 2022-08-01 08:47:04 +03:00
Yuri Kuznetsov
564956d151 fix 2022-08-01 08:17:54 +03:00
Yuri Kuznetsov
75888d2f38 css fix 2022-07-31 21:53:57 +03:00
Yuri Kuznetsov
3b9f705a53 fix 2022-07-31 21:51:11 +03:00
Yuri Kuznetsov
e24d695eb3 theme fixes 2022-07-31 21:35:36 +03:00
Yuri Kuznetsov
55d68f1143 disable tabindex footer 2022-07-31 20:02:19 +03:00
Yuri Kuznetsov
58e006cdde focus for create modal 2022-07-31 19:56:45 +03:00
Yuri Kuznetsov
48811450a8 show validation message if field is in hidden panel 2022-07-31 19:45:33 +03:00
Yuri Kuznetsov
8aa2f12a8b email focus 2022-07-31 17:47:37 +03:00
Yuri Kuznetsov
a13c7d9465 focus on create 2022-07-31 17:44:03 +03:00
Yuri Kuznetsov
3dd82aa61e shortcuts 2022-07-31 17:31:40 +03:00
Yuri Kuznetsov
e67a1b67ed save and new shortcut 2022-07-31 16:57:10 +03:00
Yuri Kuznetsov
463649ffa8 modal prevent scroll 2022-07-31 16:28:08 +03:00
Yuri Kuznetsov
e037f2fddb css fix 2022-07-31 16:20:07 +03:00
Yuri Kuznetsov
6aef2939f9 shortcuts 2022-07-31 14:58:53 +03:00
Yuri Kuznetsov
0b6486a03b shorctuts 2022-07-31 13:36:21 +03:00
Yuri Kuznetsov
fb39f0915f fix inline edit link 2022-07-31 13:24:05 +03:00
Yuri Kuznetsov
a80178494a fixes 2022-07-31 12:23:20 +03:00
Yuri Kuznetsov
7bdb61c05e alt shortcut support 2022-07-31 11:58:25 +03:00
Yuri Kuznetsov
47403e2e35 title 2022-07-31 11:54:29 +03:00
Yuri Kuznetsov
a7d86dff4b shortcuts and titles 2022-07-31 11:51:44 +03:00
Yuri Kuznetsov
a1ef2886dc fix 2022-07-31 11:33:59 +03:00
Yuri Kuznetsov
2f8ec94169 shortcut keys 2022-07-31 11:21:07 +03:00
Yuri Kuznetsov
1c6c445a59 shortcut keys 2022-07-31 10:54:59 +03:00
Yuri Kuznetsov
f1cfb01451 shortcut keys 2022-07-31 10:10:02 +03:00
Yuri Kuznetsov
8921ed42ad modal edit shortcut 2022-07-30 18:07:42 +03:00
Yuri Kuznetsov
0836d52065 modal shortcut keys 2022-07-30 17:51:33 +03:00
Yuri Kuznetsov
4f4b362c05 cleanup 2022-07-30 17:31:51 +03:00
Yuri Kuznetsov
63db221a2a cs fix 2022-07-30 17:31:15 +03:00
Yuri Kuznetsov
31c4206b2e login key 2022-07-30 17:27:07 +03:00
Yuri Kuznetsov
13e0f0f06a isAllDay not readonly 2022-07-30 13:16:04 +03:00
Yuri Kuznetsov
153dd65a0d ctrl+s fixes 2022-07-30 13:04:58 +03:00
Yuri Kuznetsov
306fca8291 ctrl+s fixes 2022-07-30 12:44:44 +03:00
Yuri Kuznetsov
ef253690d6 ctrl+s modal fix 2022-07-30 12:31:34 +03:00
Yuri Kuznetsov
f5377fe12b ctrl+s inline edit 2022-07-30 12:14:36 +03:00
Yuri Kuznetsov
c35cb98b32 fix doc 2022-07-30 11:42:32 +03:00
Yuri Kuznetsov
009f090061 ctrl+s 2022-07-30 11:38:54 +03:00
Yuri Kuznetsov
61c586c31d email compose shortcut 2022-07-30 11:00:54 +03:00
Yuri Kuznetsov
a90cf7b8e3 modal edit escape fetch 2022-07-30 10:53:13 +03:00
Yuri Kuznetsov
db4e5c001b escape key fetch 2022-07-30 10:45:28 +03:00
Yuri Kuznetsov
ead76d78a3 ref 2022-07-30 10:40:28 +03:00
Yuri Kuznetsov
02cf4f4bb8 fix 2022-07-30 10:37:44 +03:00
Yuri Kuznetsov
f9040b3afb wysiwyg disable ctrl enter 2022-07-30 10:26:29 +03:00
Yuri Kuznetsov
e47155006b cs fix 2022-07-30 10:16:17 +03:00
Yuri Kuznetsov
a07213fa5f bypass shorcut enter action 2022-07-30 10:07:58 +03:00
Yuri Kuznetsov
d74d89e9d4 restore focus on modal close 2022-07-29 17:30:17 +03:00
Yuri Kuznetsov
fc2c3ce644 shortcuts 2022-07-29 17:08:23 +03:00
Yuri Kuznetsov
7745a92490 shortcuts 2022-07-29 16:58:29 +03:00
Yuri Kuznetsov
92c0cf297c cleanup 2022-07-29 16:14:52 +03:00
Yuri Kuznetsov
c6accac161 theme fixes 2022-07-29 14:30:39 +03:00
Yuri Kuznetsov
58b4a9b965 theme fix 2022-07-29 14:07:26 +03:00
Yuri Kuznetsov
d77022a167 fix 2022-07-29 13:49:49 +03:00
Yuri Kuznetsov
1c77a197ab inline edit save close shortcuts 2022-07-29 13:48:52 +03:00
Yuri Kuznetsov
fa1354a3b9 key save 2022-07-29 13:05:10 +03:00
Yuri Kuznetsov
fc5c159d00 ref 2022-07-29 12:38:42 +03:00
Yuri Kuznetsov
d4aa273661 stream post ctrl enter 2022-07-29 12:25:55 +03:00
Yuri Kuznetsov
ff1c5e9e20 theme fix 2022-07-29 12:00:10 +03:00
Yuri Kuznetsov
eff9ae7225 add theme to install 2022-07-29 11:14:42 +03:00
Yuri Kuznetsov
146bdf01f1 style fixes 2022-07-29 10:52:17 +03:00
Yuri Kuznetsov
487201d8e7 glass theme 2022-07-29 10:41:17 +03:00
Yuri Kuznetsov
788d72afc4 summernote tooltip radius 2022-07-29 10:11:54 +03:00
Yuri Kuznetsov
f5da342192 css fix 2022-07-29 10:07:05 +03:00
Yuri Kuznetsov
2ce82fe605 panel title -1px 2022-07-29 10:01:13 +03:00
Yuri Kuznetsov
291a54f070 login middle 2022-07-29 09:50:28 +03:00
Yuri Kuznetsov
14750fa131 cleanup 2022-07-29 08:56:22 +03:00
Yuri Kuznetsov
26fde45450 dashlet dragging cursor 2022-07-28 20:20:30 +03:00
Yuri Kuznetsov
cef116b4d6 hover color 2022-07-28 20:09:37 +03:00
Yuri Kuznetsov
04324bd03b update flotr 2022-07-28 19:44:06 +03:00
Yuri Kuznetsov
4a302e637b ref 2022-07-28 17:51:30 +03:00
Yuri Kuznetsov
da13823dbc calendar new event color 2022-07-28 17:18:59 +03:00
Yuri Kuznetsov
9b6d1455a8 css fix 2022-07-28 16:59:19 +03:00
Yuri Kuznetsov
10845e1432 calendar color fix 2022-07-28 16:59:19 +03:00
Yuri Kuznetsov
88dacb6a02 cs fix 2022-07-28 16:59:19 +03:00
Taras Machyshyn
d9cc84b50a Tests: added utf8mb3_unicode_ci 2022-07-28 16:34:51 +03:00
Yuri Kuznetsov
9505fe8222 calendar shade color aplha 2022-07-28 16:05:52 +03:00
Yuri Kuznetsov
70eca7a7b2 kanban padding fix 2022-07-28 11:37:23 +03:00
Yuri Kuznetsov
e9636e7e6f less fix 2022-07-28 11:33:57 +03:00
Yuri Kuznetsov
84dc7f796e less ref 2022-07-28 11:28:54 +03:00
Yuri Kuznetsov
16ccab49a5 theme ref 2022-07-28 11:04:33 +03:00
Yuri Kuznetsov
3dfd6b6c57 fix text info 2022-07-28 09:59:25 +03:00
Yuri Kuznetsov
5ac84f20d3 css fix 2022-07-28 09:21:55 +03:00
Yuri Kuznetsov
590b32c7ae css fix 2022-07-28 09:21:55 +03:00
Yuri Kuznetsov
9530c378d5 kanban gray color fix 2022-07-28 09:21:54 +03:00
Taras Machyshyn
8fc2f85c37 Tests: added utf8mb3_unicode_ci 2022-07-27 18:40:09 +03:00
Taras Machyshyn
88063f5ec7 Tests: added utf8mb3_unicode_ci 2022-07-27 18:31:36 +03:00
Yuri Kuznetsov
9e6e8f580c css fix 2022-07-27 14:42:14 +03:00
Yuri Kuznetsov
586baeea14 css fix 2022-07-27 14:40:51 +03:00
Yuri Kuznetsov
3bf44c44a1 style fix 2022-07-27 13:26:03 +03:00
Yuri Kuznetsov
f05cc3f045 dep lang meeting 2022-07-27 13:18:08 +03:00
Yuri Kuznetsov
0aced49759 tab fix 2022-07-27 13:13:28 +03:00
Yuri Kuznetsov
45d87e5462 invintation email message 2022-07-27 13:10:06 +03:00
Yuri Kuznetsov
5b10212354 fix diff 2022-07-27 12:47:57 +03:00
Yuri Kuznetsov
5324c4f681 v 2022-07-27 12:31:45 +03:00
Yuri Kuznetsov
e315063e3f fix install 2022-07-27 12:14:36 +03:00
Yuri Kuznetsov
ba35a08cca cleanup 2022-07-27 10:49:56 +03:00
Yuri Kuznetsov
e4a2fafb90 thmes ref 2022-07-27 10:47:08 +03:00
Yuri Kuznetsov
2c89644149 cleanup 2022-07-27 10:08:48 +03:00
Yuri Kuznetsov
07d2a1e897 css fix 2022-07-27 10:07:31 +03:00
Yuri Kuznetsov
89f832bf22 style fixes 2022-07-27 09:46:29 +03:00
Yuri Kuznetsov
6161cd8ea2 dark theme more radius 2022-07-27 09:38:18 +03:00
Yuri Kuznetsov
7b708ace1e theme fixes 2022-07-27 09:36:18 +03:00
Yuri Kuznetsov
e0b542fac6 global search scope text change 2022-07-26 17:37:18 +03:00
Yuri Kuznetsov
17f871b424 style fix 2022-07-26 17:35:18 +03:00
Yuri Kuznetsov
4b565d9dd0 css fix 2022-07-26 16:32:16 +03:00
Yuri Kuznetsov
d1c2678cb1 style fix 2022-07-26 16:17:18 +03:00
Yuri Kuznetsov
1fbe13bb03 style fixes 2022-07-26 16:12:53 +03:00
Yuri Kuznetsov
38b0dbd4d0 style fix 2022-07-26 15:44:16 +03:00
Yuri Kuznetsov
6d9bab52bd preferences tabs 2022-07-26 15:41:04 +03:00
Yuri Kuznetsov
11aac106cd color fix 2022-07-26 15:26:53 +03:00
Yuri Kuznetsov
9a043cc95e lang fix 2022-07-26 13:42:07 +03:00
Yuri Kuznetsov
c527144719 default theme params 2022-07-26 13:38:21 +03:00
Yuri Kuznetsov
73905a789e after upgrade 2022-07-26 13:36:24 +03:00
Yuri Kuznetsov
d115005a14 navbar fix 2022-07-26 13:13:00 +03:00
Yuri Kuznetsov
df2c381946 css fix 2022-07-26 12:56:57 +03:00
Yuri Kuznetsov
3b4539858c style fix 2022-07-26 12:47:27 +03:00
Yuri Kuznetsov
0403af91fa Merge branch 'fix' 2022-07-26 12:37:58 +03:00
Yuri Kuznetsov
b98bbd8d4c v 2022-07-26 12:26:24 +03:00
Yuri Kuznetsov
1722e43fa8 dashboard layout settings refactor 2022-07-26 12:25:23 +03:00
Yuri Kuznetsov
05af5fa0f6 dashboard layout settings refactor 2022-07-26 12:24:49 +03:00
Yuri Kuznetsov
fdab5c42a6 join themes 2022-07-26 11:49:34 +03:00
Yuri Kuznetsov
d62fce6b32 fix 2022-07-26 11:23:48 +03:00
Yuri Kuznetsov
33b737296e grid autofit 2022-07-26 11:02:05 +03:00
Yuri Kuznetsov
dfcb7f1445 ref 2022-07-26 09:55:16 +03:00
Yuri Kuznetsov
14511dce70 fix text color 2022-07-25 15:52:00 +03:00
Yuri Kuznetsov
f0dc216994 navbar fixes 2022-07-25 15:44:36 +03:00
Yuri Kuznetsov
023b5a977a css fix 2022-07-25 15:07:48 +03:00
Yuri Kuznetsov
2c08b5d80a login footer fix 2022-07-25 14:40:30 +03:00
Yuri Kuznetsov
890b9d8db0 footer fixes 2022-07-25 14:33:12 +03:00
Yuri Kuznetsov
7240f13c12 fix 2022-07-25 13:42:18 +03:00
Yuri Kuznetsov
910fe5546c navbar tabs no select 2022-07-25 12:54:54 +03:00
Yuri Kuznetsov
4d633853a8 kanban no select 2022-07-25 12:51:09 +03:00
Yuri Kuznetsov
1b0c9f77ab error tpl changes 2022-07-25 12:46:11 +03:00
Yuri Kuznetsov
d262c4bc51 sticky top small screen fix 2022-07-25 11:57:03 +03:00
Yuri Kuznetsov
625ee91bc0 role ui fix 2022-07-25 11:50:26 +03:00
Yuri Kuznetsov
05e296879f role sticky head detail 2022-07-25 11:44:54 +03:00
Yuri Kuznetsov
33140d4928 fix sticky head 2022-07-25 11:37:44 +03:00
Yuri Kuznetsov
f178d92273 cs fix 2022-07-25 11:33:19 +03:00
Yuri Kuznetsov
ffae105b38 rtl fixes 2022-07-25 11:16:23 +03:00
Yuri Kuznetsov
7a65acc8ee top bar css fix 2022-07-25 10:27:44 +03:00
Yuri Kuznetsov
5de892d3b3 notification li open 2022-07-25 10:18:34 +03:00
Yuri Kuznetsov
180e4143a1 top-bar imp 2022-07-25 10:13:54 +03:00
Yuri Kuznetsov
f92b1168ac buttons style ref 2022-07-24 21:31:53 +03:00
Yuri Kuznetsov
c343ee4c5f css fix 2022-07-24 20:54:44 +03:00
Yuri Kuznetsov
ee33e560e7 ref 2022-07-24 20:49:07 +03:00
Yuri Kuznetsov
6589c8ed17 tabindex 2022-07-24 18:11:46 +03:00
Yuri Kuznetsov
7a93eb59a1 css fixes 2022-07-24 18:05:37 +03:00
Yuri Kuznetsov
a18bd4d184 css fixes 2022-07-24 17:41:01 +03:00
Yuri Kuznetsov
34821f2b4b fix 2022-07-24 14:18:21 +03:00
Yuri Kuznetsov
16d46abb1a css fixes 2022-07-24 14:09:13 +03:00
Yuri Kuznetsov
10259a9c99 attachment field clearfix 2022-07-24 13:53:02 +03:00
Yuri Kuznetsov
937971e3dd fix sticked 2022-07-24 13:49:01 +03:00
Yuri Kuznetsov
dd732d3044 install themes 2022-07-24 13:23:57 +03:00
Yuri Kuznetsov
77129b9f81 themes grand refactoring 2022-07-24 13:21:11 +03:00
Yuri Kuznetsov
00bf9561da readme 2022-07-24 10:35:54 +03:00
Yuri Kuznetsov
1fb820c930 readme 2022-07-24 10:03:50 +03:00
Yuri Kuznetsov
76c1fc1669 theme parent 2022-07-24 08:40:48 +03:00
Yuri Kuznetsov
64be5837f6 fix sticked buttons 2022-07-23 21:01:41 +03:00
Yuri Kuznetsov
2b2af83ddc css colors fix 2022-07-23 20:43:17 +03:00
Yuri Kuznetsov
1817ec2aaa breadcrump selection fix 2022-07-23 20:37:05 +03:00
Yuri Kuznetsov
738a10f970 css fix 2022-07-23 20:30:35 +03:00
Yuri Kuznetsov
85a44b6657 css fix 2022-07-23 14:15:30 +03:00
Yuri Kuznetsov
869ebbe44e css fix 2022-07-23 14:12:05 +03:00
Yuri Kuznetsov
b648cf730f btn-text active line 2022-07-23 14:02:31 +03:00
Yuri Kuznetsov
046a901c40 less ref 2022-07-23 13:18:24 +03:00
Yuri Kuznetsov
df478027d8 less cleanup 2022-07-22 17:17:03 +03:00
Yuri Kuznetsov
3eca6024cd less ref 2022-07-22 17:10:41 +03:00
Yuri Kuznetsov
fc3f517a1b avatar ref 2022-07-22 14:40:15 +03:00
Yuri Kuznetsov
f2e82acd4a enum options style 2022-07-22 14:33:38 +03:00
Yuri Kuznetsov
f9122b7450 less ref 2022-07-22 14:19:53 +03:00
Yuri Kuznetsov
c6fdff53c3 modal backdrop blur 2022-07-22 13:37:29 +03:00
Yuri Kuznetsov
dfcb63c18a less ref 2022-07-22 12:43:07 +03:00
Yuri Kuznetsov
9afcdbf65d sticked bar fixes 2022-07-22 12:18:53 +03:00
Yuri Kuznetsov
6c7e7b7df2 kanban dd fix 2022-07-22 11:29:21 +03:00
Yuri Kuznetsov
6fd0f10ee7 ref 2022-07-22 11:26:10 +03:00
Yuri Kuznetsov
7889d562b4 preferences validation 2022-07-22 11:19:00 +03:00
Yuri Kuznetsov
5731e7e408 cleanup 2022-07-22 11:08:03 +03:00
Yuri Kuznetsov
e333503954 theme fixes 2022-07-22 10:55:29 +03:00
Yuri Kuznetsov
fd85bb95d2 button rounding 2022-07-22 10:47:53 +03:00
Yuri Kuznetsov
b48660118b fix 2022-07-22 09:54:58 +03:00
Yuri Kuznetsov
e9de116400 2fa password check for admin 2022-07-22 09:52:11 +03:00
Yuri Kuznetsov
6127ef9c72 list stick top fix 2022-07-21 20:54:28 +03:00
Yuri Kuznetsov
21842d159d theme fixes 2022-07-21 19:26:30 +03:00
Yuri Kuznetsov
21e0598159 less ref 2022-07-21 17:21:21 +03:00
Yuri Kuznetsov
8e4f83f7fe record panel radius adjustment 2022-07-21 15:50:46 +03:00
Yuri Kuznetsov
b394089a79 style fix 2022-07-21 12:59:10 +03:00
Yuri Kuznetsov
2faf1e65c3 css fix 2022-07-21 12:38:17 +03:00
Yuri Kuznetsov
5eafec9f03 theme impr 2022-07-21 12:29:43 +03:00
Yuri Kuznetsov
668bc38d70 fix 2022-07-21 12:14:46 +03:00
Yuri Kuznetsov
20108478b5 fix css 2022-07-21 11:51:07 +03:00
Yuri Kuznetsov
fbd1a9d02f theme impr 2022-07-21 11:30:03 +03:00
Yuri Kuznetsov
5b466f7979 btn radius 2 2022-07-21 10:38:09 +03:00
Yuri Kuznetsov
c1d7854eb7 theme impr 2022-07-21 10:24:57 +03:00
Yuri Kuznetsov
b642f091c3 fix 2022-07-21 09:10:59 +03:00
Yuri Kuznetsov
19a2523089 css fix 2022-07-20 20:40:26 +03:00
Yuri Kuznetsov
1bc1d23934 theme impr 2022-07-20 20:34:16 +03:00
Yuri Kuznetsov
b1a0f979c9 css fix 2022-07-20 17:36:11 +03:00
Yuri Kuznetsov
fa67206416 theme impr 2022-07-20 17:33:31 +03:00
Yuri Kuznetsov
ae891362c7 theme impr 2022-07-20 16:30:24 +03:00
Yuri Kuznetsov
8d94a7d7bd show-more changes 2022-07-20 16:21:11 +03:00
Yuri Kuznetsov
4d450111e9 theme impr 2022-07-20 15:01:30 +03:00
Yuri Kuznetsov
5d2bb9bea9 theme impr 2022-07-20 11:56:11 +03:00
Yuri Kuznetsov
dc04e6c5f8 less ref 2022-07-20 11:28:54 +03:00
Yuri Kuznetsov
7551032364 less ref 2022-07-20 10:20:06 +03:00
Yuri Kuznetsov
1a935d0758 css fix 2022-07-19 18:08:41 +03:00
Yuri Kuznetsov
a696a1b0b4 style impr 2022-07-19 17:46:30 +03:00
Yuri Kuznetsov
25a553c8f4 less fix 2022-07-19 15:41:27 +03:00
Yuri Kuznetsov
9c4a472ac1 less ref 2022-07-19 15:28:18 +03:00
Yuri Kuznetsov
fb7202ad34 theme changes 2022-07-19 14:27:08 +03:00
Yuri Kuznetsov
1de62f442e css fix 2022-07-19 14:18:56 +03:00
Yuri Kuznetsov
257bf317d0 css fix 2022-07-19 13:51:18 +03:00
Yuri Kuznetsov
0fbfde71fa form element radius in variable 2022-07-19 13:19:30 +03:00
Yuri Kuznetsov
10ba796288 fix tpl 2022-07-19 13:03:53 +03:00
Yuri Kuznetsov
0249c6fdce layout manager edit dynamic logic 2022-07-19 11:05:47 +03:00
Yuri Kuznetsov
7cabbf1ee7 ref 2022-07-19 10:31:09 +03:00
Yuri Kuznetsov
bcbf15df13 bottom tabs fix 2022-07-19 10:28:30 +03:00
Yuri Kuznetsov
578e77b5c3 idea gitignore 2022-07-19 09:53:34 +03:00
Yuri Kuznetsov
68ccfde3f3 max-size 0 fix 2022-07-18 16:23:36 +03:00
Yuri Kuznetsov
9edc8eeab5 css fix 2022-07-18 15:54:26 +03:00
Yuri Kuznetsov
b3d570527e radius 1px 2022-07-18 15:35:01 +03:00
Yuri Kuznetsov
c1e5af36c4 bottom tabs 2022-07-18 15:31:43 +03:00
Yuri Kuznetsov
1404698c5e fix 2022-07-18 15:29:34 +03:00
Yuri Kuznetsov
7ece2673cc cs fix 2022-07-18 12:10:33 +03:00
Yuri Kuznetsov
95ceb279a2 cs fix 2022-07-18 11:58:57 +03:00
Yuri Kuznetsov
3a6611602f cleanup 2022-07-18 10:10:16 +03:00
Yuri Kuznetsov
468cdebb38 cs fix 2022-07-18 10:09:31 +03:00
Yuri Kuznetsov
9faca0fefe fix trim 2022-07-18 09:36:20 +03:00
Yuri Kuznetsov
58c5eb8118 radius 2022-07-17 21:44:27 +03:00
Yuri Kuznetsov
ac2eca2529 css fix 2022-07-17 21:13:50 +03:00
Yuri Kuznetsov
f1054af1f1 layout manager css fix 2022-07-17 16:54:00 +03:00
Yuri Kuznetsov
6864405e55 css fix 2022-07-17 16:48:21 +03:00
Yuri Kuznetsov
39027acc91 fix dashlet options 2022-07-17 16:17:26 +03:00
Yuri Kuznetsov
6e65991341 css fix 2022-07-17 16:10:26 +03:00
Yuri Kuznetsov
760bf67c32 css fix 2022-07-17 16:08:24 +03:00
Yuri Kuznetsov
9ece367ff1 layout panel no name by default 2022-07-17 11:17:01 +03:00
Yuri Kuznetsov
8ff9c94936 tabs improvements 2022-07-17 11:08:51 +03:00
Yuri Kuznetsov
d401655b45 jsdoc 2022-07-16 18:59:29 +03:00
Yuri Kuznetsov
85b266cb79 message ref 2022-07-16 18:50:53 +03:00
Yuri Kuznetsov
39be4cf2be stream note message ref 2022-07-16 18:13:39 +03:00
Yuri Kuznetsov
68477319e2 tabs and hidden panel compatiblity 2022-07-16 17:07:51 +03:00
Yuri Kuznetsov
08d3cc11d9 tab rename param and overview label by default 2022-07-16 16:59:59 +03:00
Yuri Kuznetsov
082e67287a jsdoc fix 2022-07-16 14:10:04 +03:00
Yuri Kuznetsov
518fe07ea1 detail tabs 2022-07-16 14:05:26 +03:00
Yuri Kuznetsov
d2e36316ea ref 2022-07-15 16:34:01 +03:00
Yuri Kuznetsov
5362e98500 ref 2022-07-15 16:21:57 +03:00
Yuri Kuznetsov
2839f0457a ref 2022-07-15 16:10:48 +03:00
Yuri Kuznetsov
a77f70f457 Merge branch 'fix' 2022-07-15 15:55:07 +03:00
Yuri Kuznetsov
73036c7347 fix stream 2022-07-15 15:52:53 +03:00
Yuri Kuznetsov
b9dbac65cb fix stream 2022-07-15 15:52:22 +03:00
Yuri Kuznetsov
8f49fe7adf cs fix 2022-07-15 15:50:39 +03:00
Yuri Kuznetsov
52e968809e ref 2022-07-15 15:40:44 +03:00
Yuri Kuznetsov
7192d5d5f5 fix panel filter height 2022-07-15 13:53:55 +03:00
Yuri Kuznetsov
dc7d4714d9 fix test 2022-07-15 13:32:13 +03:00
Yuri Kuznetsov
9a714b92fb link-multiple-with-columns-with-primary. 2022-07-15 13:20:15 +03:00
Yuri Kuznetsov
ed57338919 mail duplicate finder 2022-07-15 12:40:41 +03:00
Yuri Kuznetsov
d696f7347f ref 2022-07-15 12:28:08 +03:00
Yuri Kuznetsov
d7aa35bf7c ref 2022-07-15 11:52:23 +03:00
Yuri Kuznetsov
d67eba2684 ref 2022-07-15 11:50:39 +03:00
Yuri Kuznetsov
6779684834 password validation 2022-07-15 11:21:25 +03:00
Yuri Kuznetsov
9f594f8259 fix tpl 2022-07-15 11:21:08 +03:00
Yuri Kuznetsov
46bab9cd8f tpl fix 2022-07-15 11:20:17 +03:00
Yuri Kuznetsov
c533eea6e3 validation wysiwyg 2022-07-15 10:29:01 +03:00
Yuri Kuznetsov
6c187a0cc2 tpl fix 2022-07-15 10:21:40 +03:00
Yuri Kuznetsov
4a14f91c54 login fixes 2022-07-15 10:09:46 +03:00
Yuri Kuznetsov
bcadc1e1d0 fix forgot password modal 2022-07-14 23:23:37 +03:00
Yuri Kuznetsov
ceb4979949 metadata force __APPEND__ 2022-07-14 16:42:15 +03:00
Yuri Kuznetsov
a913eb600d base test methods 2022-07-14 16:41:26 +03:00
Yuri Kuznetsov
bbdf8edce8 enum max length validation 2022-07-14 12:04:14 +03:00
Yuri Kuznetsov
9abb977844 link parent validation 2022-07-14 11:57:10 +03:00
Yuri Kuznetsov
b2d143c931 cleanup 2022-07-14 10:44:17 +03:00
Yuri Kuznetsov
486b14e818 notification and stream pages fixes 2022-07-14 10:22:00 +03:00
Yuri Kuznetsov
92a9280e8e portal preferences fix 2022-07-14 09:54:04 +03:00
Yuri Kuznetsov
8741baeb52 style fix 2022-07-13 23:30:09 +03:00
Yuri Kuznetsov
db39305290 style fix 2022-07-13 23:22:47 +03:00
Yuri Kuznetsov
c1152d7fe7 category link url 2022-07-13 22:16:00 +03:00
Yuri Kuznetsov
dddf3f6e7c ref 2022-07-13 21:57:26 +03:00
Yuri Kuznetsov
e2510113d4 categories path action 2022-07-13 19:25:53 +03:00
Yuri Kuznetsov
23fbea2b9b js doc 2022-07-13 19:25:43 +03:00
Yuri Kuznetsov
1fcef2654c getHeaderView 2022-07-13 19:21:16 +03:00
Yuri Kuznetsov
b2f98d25bc category up style 2022-07-13 19:08:22 +03:00
Yuri Kuznetsov
9bae43d200 category link 2022-07-13 19:02:49 +03:00
Yuri Kuznetsov
2b4c690886 fix categories flicker 2022-07-13 18:48:35 +03:00
Yuri Kuznetsov
132264864c cs fix ref 2022-07-13 18:23:32 +03:00
Yuri Kuznetsov
7f1297e6ae fix 2022-07-13 18:20:01 +03:00
Yuri Kuznetsov
69a5ab9b83 no data margin 2022-07-13 18:13:14 +03:00
Yuri Kuznetsov
a49eb15cbe post button wide 2022-07-13 17:09:06 +03:00
Yuri Kuznetsov
ca5b56266d fix 2022-07-13 15:20:31 +03:00
Yuri Kuznetsov
822ef61a0c stream audited style fix 2022-07-13 15:17:29 +03:00
Yuri Kuznetsov
363184e7fa text field audited w/o values 2022-07-13 14:31:57 +03:00
Yuri Kuznetsov
5e877a8a8b readOnly take into account entityDefs links 2022-07-13 12:42:57 +03:00
Yuri Kuznetsov
4715350d7c list reset custom order 2022-07-13 12:22:46 +03:00
Yuri Kuznetsov
ce32d6dcec fix rtl 2022-07-13 12:05:07 +03:00
Yuri Kuznetsov
d801c10e62 tpl fix 2022-07-13 10:55:17 +03:00
Yuri Kuznetsov
3b143de0ca tpl fix 2022-07-13 10:50:24 +03:00
Yuri Kuznetsov
0ac1d6bbce ref 2022-07-13 10:39:24 +03:00
Yuri Kuznetsov
66761665da import error line number 2022-07-13 10:01:35 +03:00
Yuri Kuznetsov
8236902325 css fix 2022-07-12 21:07:07 +03:00
Yuri Kuznetsov
f4a2d21ca6 tpl fixes 2022-07-12 21:06:56 +03:00
Yuri Kuznetsov
4fea9b5ef3 tpl integration style fixes 2022-07-12 20:57:19 +03:00
Yuri Kuznetsov
5a4c151cff style fixes 2022-07-12 18:08:36 +03:00
Yuri Kuznetsov
6e067a091e rename 2022-07-12 17:52:12 +03:00
Yuri Kuznetsov
40562ef5b2 barcode validation max length 2022-07-12 17:52:06 +03:00
Yuri Kuznetsov
1a04a17d0c less ref 2022-07-12 17:40:27 +03:00
Yuri Kuznetsov
6e89eaaa4e style fix 2022-07-12 17:27:36 +03:00
Yuri Kuznetsov
0ecdf6b037 fix 2022-07-12 17:21:27 +03:00
Yuri Kuznetsov
62eb882d31 translate field validations 2022-07-12 17:14:58 +03:00
Yuri Kuznetsov
971779b408 import error fixes 2022-07-12 15:12:29 +03:00
Yuri Kuznetsov
726c21ee47 field translation 2022-07-12 14:24:54 +03:00
Yuri Kuznetsov
92ef1620b2 import error export 2022-07-12 14:00:17 +03:00
Yuri Kuznetsov
e5589d8b7d file storage fixes 2022-07-12 14:00:09 +03:00
Yuri Kuznetsov
14d4647b5a ref 2022-07-12 12:22:27 +03:00
Yuri Kuznetsov
b46717e8f0 impot file accept 2022-07-12 11:20:01 +03:00
Yuri Kuznetsov
edfaf8993c style fix 2022-07-12 11:17:40 +03:00
Yuri Kuznetsov
95b4dd3d71 ref 2022-07-12 11:15:38 +03:00
Yuri Kuznetsov
53ff803f38 fix 2022-07-12 10:47:49 +03:00
Yuri Kuznetsov
6d5bd92f1b import error changes 2022-07-12 10:27:34 +03:00
Yuri Kuznetsov
63ae29af74 props 2022-07-12 10:15:41 +03:00
Yuri Kuznetsov
7acc0b2021 fix 2022-07-12 10:01:29 +03:00
Yuri Kuznetsov
b5f998eb0e rename 2022-07-11 16:25:45 +03:00
Yuri Kuznetsov
dbe35eb3c4 image no original link 2022-07-11 16:16:55 +03:00
Yuri Kuznetsov
cf9d446035 rename 2022-07-11 16:13:13 +03:00
Yuri Kuznetsov
6e768dda5d ref 2022-07-11 15:57:28 +03:00
Yuri Kuznetsov
22d70ad987 fix header 2022-07-11 15:38:54 +03:00
Yuri Kuznetsov
d0f0042073 no duplicate if create disabled 2022-07-11 15:36:59 +03:00
Yuri Kuznetsov
31685d57b7 textFilterDisabled 2022-07-11 15:28:57 +03:00
Yuri Kuznetsov
f054a3fb0d filter 2022-07-11 15:28:45 +03:00
Yuri Kuznetsov
935253d79d import error and import validation 2022-07-11 14:58:55 +03:00
Yuri Kuznetsov
30feae269c modal headerText 2022-07-11 08:56:02 +03:00
Yuri Kuznetsov
bb86f2b01e disable spellcheck 2022-07-10 20:05:16 +03:00
Yuri Kuznetsov
8247429780 fix 2022-07-10 19:58:12 +03:00
Yuri Kuznetsov
f8134aa08c fix 2022-07-10 19:55:41 +03:00
Yuri Kuznetsov
863ea657ed modal/main supporting elements 2022-07-10 18:57:09 +03:00
Yuri Kuznetsov
77c5471656 css 2022-07-10 18:01:46 +03:00
Yuri Kuznetsov
ba33994252 Merge branch 'fix' 2022-07-10 14:24:01 +03:00
Yuri Kuznetsov
c08cb0a8f3 fix array at 2022-07-10 14:23:54 +03:00
Yuri Kuznetsov
e25465ba5b css fixes btn hover 2022-07-10 13:48:06 +03:00
Yuri Kuznetsov
1276f4c286 btn variables 2022-07-10 13:32:58 +03:00
Yuri Kuznetsov
b66d09634b css fixes 2022-07-10 11:32:46 +03:00
Yuri Kuznetsov
3c127293bc css vertical gap 2022-07-10 11:24:58 +03:00
Yuri Kuznetsov
f79e64883f css panel ref 2022-07-10 10:52:25 +03:00
Yuri Kuznetsov
479a26b5c9 border width var 2022-07-09 19:18:19 +03:00
Yuri Kuznetsov
662a6cd2dd revert 2022-07-09 15:32:59 +03:00
Yuri Kuznetsov
1ee63dec26 css fix 2022-07-09 15:20:59 +03:00
Yuri Kuznetsov
7f1186c316 dark theme changes 2022-07-09 15:14:30 +03:00
Yuri Kuznetsov
a35fd6759a css shadow var 2022-07-09 14:46:54 +03:00
Yuri Kuznetsov
8466c44a9a has-navbar class 2022-07-09 12:07:50 +03:00
Yuri Kuznetsov
5750ae3a6b cs fixes 2022-07-09 12:01:27 +03:00
Yuri Kuznetsov
ccab48d31e cs fix 2022-07-09 11:55:28 +03:00
Yuri Kuznetsov
eba68da269 cs fix 2022-07-09 11:46:22 +03:00
Yuri Kuznetsov
83e56e4279 css fix 2022-07-09 11:31:42 +03:00
Yuri Kuznetsov
cbb2267164 css fix 2022-07-09 11:10:51 +03:00
Yuri Kuznetsov
526317f142 logo 39 2022-07-09 11:03:43 +03:00
Yuri Kuznetsov
3e68adf77a css fix 2022-07-09 09:51:42 +03:00
Yuri Kuznetsov
bd58259a43 css fixes 2022-07-08 17:35:37 +03:00
Yuri Kuznetsov
df75d4c989 idea change 2022-07-08 16:03:59 +03:00
Yuri Kuznetsov
7e88d16197 css fix 2022-07-08 16:02:22 +03:00
Yuri Kuznetsov
3b7a884f4c dark navbar border 2022-07-08 15:50:55 +03:00
Yuri Kuznetsov
fc910fec05 image mime type check for chunk upload 2022-07-08 14:49:54 +03:00
Yuri Kuznetsov
2f797719fa backdrop opacity in var 2022-07-08 14:23:09 +03:00
Yuri Kuznetsov
e30af4f4c6 css fix 2022-07-08 13:21:46 +03:00
Yuri Kuznetsov
1a85f9a047 css fix 2022-07-08 13:13:49 +03:00
Yuri Kuznetsov
7737128b6e ignore ics if event originated from espo 2022-07-08 13:10:45 +03:00
Yuri Kuznetsov
bd2a318618 clear email created event on meeting removal 2022-07-08 12:59:51 +03:00
Yuri Kuznetsov
441551f8d8 menu button class name 2022-07-08 12:21:19 +03:00
Yuri Kuznetsov
4b679732b1 fix 2022-07-08 12:15:57 +03:00
Yuri Kuznetsov
676a9d42cd draft reply arrow color 2022-07-08 12:11:43 +03:00
Yuri Kuznetsov
b24a45e4bf style fix 2022-07-08 11:57:42 +03:00
Yuri Kuznetsov
b2ae958992 email fix 2022-07-08 11:52:36 +03:00
Yuri Kuznetsov
f2c8942b84 css fix 2022-07-08 11:52:29 +03:00
Yuri Kuznetsov
9523ff2db0 fix dark css 2022-07-08 10:05:34 +03:00
Yuri Kuznetsov
00a921e0e7 fix tabindex 2022-07-08 09:51:49 +03:00
Yuri Kuznetsov
d960bd978c fields search on enter 2022-07-08 09:42:41 +03:00
Yuri Kuznetsov
83263717fd cs fix 2022-07-08 08:45:57 +03:00
Yuri Kuznetsov
bc2389968d no need to clone events excessive 2022-07-08 08:21:11 +03:00
Yuri Kuznetsov
2b49625106 create/modified fields customization restrictions 2022-07-08 08:14:39 +03:00
Yuri Kuznetsov
d375986c36 css fix 2022-07-07 23:18:44 +03:00
Yuri Kuznetsov
ddd4c1e427 restrict email field customization 2022-07-07 22:02:12 +03:00
Yuri Kuznetsov
9848e18caf field manager restriction 2022-07-07 21:02:26 +03:00
Yuri Kuznetsov
d490107bce admin notification css fix 2022-07-07 17:41:49 +03:00
Yuri Kuznetsov
55c72a5570 fix tag 2022-07-07 17:23:41 +03:00
Yuri Kuznetsov
ef892af56f email sending error exception 2022-07-07 17:05:49 +03:00
Yuri Kuznetsov
46ea00aef8 ref 2022-07-07 16:43:32 +03:00
Yuri Kuznetsov
bac2a36472 fix record save error handling 2022-07-07 16:28:54 +03:00
Yuri Kuznetsov
3156909cf6 fix 2022-07-07 16:10:11 +03:00
Yuri Kuznetsov
956beb3850 fix 2022-07-07 16:04:01 +03:00
Yuri Kuznetsov
7869268e2d email send error do not close 2022-07-07 15:56:37 +03:00
Yuri Kuznetsov
8e94164976 email customizable 2022-07-07 15:41:51 +03:00
Yuri Kuznetsov
9ef06d7a08 note clean parent id 2022-07-07 15:40:48 +03:00
Yuri Kuznetsov
fd7960643d fix note 2022-07-07 15:39:26 +03:00
Yuri Kuznetsov
72ee2c4939 clnup 2022-07-07 15:39:02 +03:00
Yuri Kuznetsov
01e5350060 ref 2022-07-07 15:34:55 +03:00
Yuri Kuznetsov
478fc69ca5 ref 2022-07-07 15:29:19 +03:00
Yuri Kuznetsov
98a5c584e0 cs fix 2022-07-07 14:53:46 +03:00
Yuri Kuznetsov
c34211ae59 fix 2022-07-07 14:42:57 +03:00
Yuri Kuznetsov
30fbc5b50a ref 2022-07-07 14:17:59 +03:00
Yuri Kuznetsov
a2356ce977 ui ref 2022-07-07 12:46:26 +03:00
Yuri Kuznetsov
34df179c4c alert fix 2022-07-07 11:25:30 +03:00
Yuri Kuznetsov
20f3c21368 cleanup 2022-07-07 10:57:47 +03:00
Yuri Kuznetsov
0c1c10a5f1 alert notification markdown 2022-07-07 10:40:40 +03:00
Yuri Kuznetsov
4c0eea3dae clnp 2022-07-07 10:37:50 +03:00
Yuri Kuznetsov
72c9ec3453 confirm wide btn 2022-07-07 10:14:01 +03:00
Yuri Kuznetsov
2602e970e1 wide btn 2022-07-07 10:11:39 +03:00
Yuri Kuznetsov
fecf9b43aa tpl fix 2022-07-06 17:31:48 +03:00
Yuri Kuznetsov
70e25d17ea css fix 2022-07-06 16:34:02 +03:00
Yuri Kuznetsov
2943f46829 fix css 2022-07-06 16:30:31 +03:00
Yuri Kuznetsov
dfb667f0de button hover color fix 2022-07-06 14:41:20 +03:00
Yuri Kuznetsov
90f7a9ec81 fix 2022-07-06 14:37:45 +03:00
Yuri Kuznetsov
26a43e76a4 fix 2022-07-06 14:33:49 +03:00
Yuri Kuznetsov
d28e2513ee cleanup 2022-07-06 14:31:27 +03:00
Yuri Kuznetsov
2ad0336a53 dark navbar lighter 2022-07-06 14:26:03 +03:00
Yuri Kuznetsov
d9405ea058 fix login style 2022-07-06 14:18:20 +03:00
Yuri Kuznetsov
f46132b95c line height 1.5 2022-07-06 14:13:14 +03:00
Yuri Kuznetsov
1bfad8ba22 login page dark color fix 2022-07-06 14:11:06 +03:00
Yuri Kuznetsov
7893eae4ca login page style changes 2022-07-06 14:03:09 +03:00
Yuri Kuznetsov
06a3edc446 css fixes 2022-07-06 13:47:16 +03:00
Yuri Kuznetsov
237bd8e6b7 fa 16px 2022-07-06 13:36:19 +03:00
Yuri Kuznetsov
e15c200541 cs fix 2022-07-06 13:35:27 +03:00
Yuri Kuznetsov
405c5d145b fix 2022-07-06 13:26:59 +03:00
Yuri Kuznetsov
848a05beb8 global restriction read only from entityDefs 2022-07-06 12:49:35 +03:00
Yuri Kuznetsov
96917675a0 ref 2022-07-06 12:06:16 +03:00
Yuri Kuznetsov
751b3f2fc7 fix typo 2022-07-06 11:27:02 +03:00
Yuri Kuznetsov
c12807d040 cleanup 2022-07-06 11:24:09 +03:00
Yuri Kuznetsov
d8c42dcee6 cleanup 2022-07-06 11:16:14 +03:00
Yuri Kuznetsov
2f073dc8eb fix typo 2022-07-06 11:08:56 +03:00
Yuri Kuznetsov
cfb50440d7 no trim 2022-07-06 10:51:14 +03:00
Yuri Kuznetsov
216e945c06 array trim 2022-07-06 10:47:39 +03:00
Yuri Kuznetsov
4174864b8c validations 2022-07-06 10:30:00 +03:00
Yuri Kuznetsov
9e7cc42c78 fix 2022-07-06 09:24:21 +03:00
Yuri Kuznetsov
d6846adacf array max item length ui 2022-07-06 06:30:05 +03:00
Yuri Kuznetsov
a30900aebe field man limitation 2022-07-06 06:23:59 +03:00
Yuri Kuznetsov
9c0e0122c5 user field manager limitations 2022-07-06 06:19:49 +03:00
Yuri Kuznetsov
2dd59f36a0 global restriction ui 2022-07-06 05:55:52 +03:00
Yuri Kuznetsov
d5d4c5874b fix 2022-07-05 17:16:35 +03:00
Yuri Kuznetsov
d2107eccde fix 2022-07-05 17:12:42 +03:00
Yuri Kuznetsov
377268359b min node version 2022-07-05 16:12:03 +03:00
Yuri Kuznetsov
a726f7f1d5 fix lead capture 2022-07-05 16:08:18 +03:00
Yuri Kuznetsov
e252e554c4 person entity methods 2022-07-05 16:08:06 +03:00
Yuri Kuznetsov
85b3d698b2 lead capture headers example 2022-07-05 15:11:43 +03:00
Yuri Kuznetsov
abfcae48e0 lead capture validation 2022-07-05 15:05:06 +03:00
Yuri Kuznetsov
4ab88c19c9 rename 2022-07-05 14:57:47 +03:00
Yuri Kuznetsov
7615857663 field validation error message 2022-07-05 14:50:46 +03:00
Yuri Kuznetsov
00045f4837 bad request with body 2022-07-05 14:50:16 +03:00
Yuri Kuznetsov
348c3ef725 docs 2022-07-05 14:50:06 +03:00
Yuri Kuznetsov
7d3d4de51c doc 2022-07-05 13:58:43 +03:00
Yuri Kuznetsov
0c5c7953b6 ref docs 2022-07-05 13:37:09 +03:00
Yuri Kuznetsov
58049dd449 ref 2022-07-05 13:34:26 +03:00
Yuri Kuznetsov
8413b5c9d5 ref 2022-07-05 13:28:43 +03:00
Yuri Kuznetsov
101a9084b8 ref 2022-07-05 13:26:03 +03:00
Yuri Kuznetsov
79c51379b8 ref 2022-07-05 13:07:16 +03:00
Yuri Kuznetsov
7db116cb89 ref 2022-07-05 13:01:32 +03:00
Yuri Kuznetsov
219168a378 tooltips 2022-07-05 10:48:07 +03:00
Yuri Kuznetsov
958cfd7eba fix tooltip 2022-07-05 10:26:34 +03:00
Yuri Kuznetsov
3fbd65ceca no special chars regexp 2022-07-05 10:20:23 +03:00
Yuri Kuznetsov
4bef98e3f4 fetch empty column as null 2022-07-05 10:13:54 +03:00
Yuri Kuznetsov
610a0c3c92 link multiple column client side validation 2022-07-05 09:59:23 +03:00
Yuri Kuznetsov
9ae755af2a ref 2022-07-05 09:34:32 +03:00
Yuri Kuznetsov
c5900911d7 fix 2022-07-04 16:03:19 +03:00
Yuri Kuznetsov
926787fffb link multiple columns server side validation 2022-07-04 15:47:45 +03:00
Yuri Kuznetsov
1b5bd3f5d8 fieldManagerParamList 2022-07-04 14:06:20 +03:00
Yuri Kuznetsov
562fb14cea Merge branch 'fix' 2022-07-04 12:19:16 +03:00
Yuri Kuznetsov
b5104cef3c diff fix 2022-07-04 12:17:02 +03:00
Yuri Kuznetsov
a067eb2070 v 2022-07-04 11:55:24 +03:00
Yuri Kuznetsov
d5b6120d45 ref 2022-07-04 11:54:35 +03:00
Yuri Kuznetsov
bba15ab759 ref 2022-07-04 11:54:25 +03:00
Yuri Kuznetsov
afb42e3589 fix url 2022-07-04 11:49:50 +03:00
Yuri Kuznetsov
59bf7d5a7a ref 2022-07-04 11:45:21 +03:00
Yuri Kuznetsov
8e297fda48 ref 2022-07-04 11:38:25 +03:00
Yuri Kuznetsov
1093143773 bc fix 2022-07-04 11:12:46 +03:00
Yuri Kuznetsov
2ccc796b6f cs fixes 2022-07-04 11:03:30 +03:00
Yuri Kuznetsov
634002c471 ref and fix 2022-07-04 10:59:48 +03:00
Yuri Kuznetsov
5d41085dd4 refactor and fixes 2022-07-04 10:23:33 +03:00
Yuri Kuznetsov
5f2bc52e6b fix 2022-07-04 09:02:09 +03:00
Yuri Kuznetsov
2d1cbaae73 validation list for specific field 2022-07-03 23:02:11 +03:00
Yuri Kuznetsov
2d4f11717c throws tags 2022-07-03 22:54:13 +03:00
Yuri Kuznetsov
be6cfefbec ref 2022-07-03 21:04:44 +03:00
Yuri Kuznetsov
2e1aa59250 link multiple field view ref 2022-07-03 20:20:27 +03:00
Yuri Kuznetsov
04398052d8 noSpellCheck param 2022-07-03 16:30:29 +03:00
Yuri Kuznetsov
88db4a5020 default varchar max length validation 2022-07-03 16:11:08 +03:00
Yuri Kuznetsov
6338fe68c9 url encoding email phone validation 2022-07-03 15:38:47 +03:00
Yuri Kuznetsov
bf11678e20 tooltip 2022-07-03 13:46:38 +03:00
Yuri Kuznetsov
4d0bda7238 note post customizable 2022-07-03 13:33:17 +03:00
Yuri Kuznetsov
2c4d5ab31d text validate 2022-07-03 13:14:14 +03:00
Yuri Kuznetsov
13629079a8 fix reg exp uri 2022-07-03 13:07:31 +03:00
Yuri Kuznetsov
4d2cd9eff4 varchar trim if not set 2022-07-03 13:04:37 +03:00
Yuri Kuznetsov
4a358f12f4 typo 2022-07-03 12:59:28 +03:00
Yuri Kuznetsov
a182ad7a0f install defaults null 2022-07-03 12:56:07 +03:00
Yuri Kuznetsov
dda1b4e547 fix translate option 2022-07-03 12:54:11 +03:00
Yuri Kuznetsov
572aceb107 rename 2022-07-03 12:46:59 +03:00
Yuri Kuznetsov
97440a776c fix typo 2022-07-03 12:45:39 +03:00
Yuri Kuznetsov
8b23c591ff validations 2022-07-03 12:29:07 +03:00
Yuri Kuznetsov
1d776ea766 cleanup 2022-07-03 10:19:47 +03:00
Yuri Kuznetsov
3b34c6746e system reg exp patterns 2022-07-03 09:48:00 +03:00
Yuri Kuznetsov
73aaba15a9 array validation 2022-07-02 20:02:23 +03:00
Yuri Kuznetsov
dd7220a62b cleanup 2022-07-02 18:41:56 +03:00
Yuri Kuznetsov
4a774d387c optionPath for array 2022-07-02 18:37:30 +03:00
Yuri Kuznetsov
1a46723abb formatting fixes 2022-07-02 18:28:06 +03:00
Yuri Kuznetsov
2052bc7353 fix 2022-07-02 17:37:32 +03:00
Yuri Kuznetsov
6e9136d4ea enum validation 2022-07-02 16:10:15 +03:00
Yuri Kuznetsov
08e5f3cf40 note only post check 2 2022-07-02 14:37:05 +03:00
Yuri Kuznetsov
9af6b6a8bd note only post check 2022-07-02 14:35:11 +03:00
Yuri Kuznetsov
9bc31c1111 fix 2022-07-02 14:25:06 +03:00
Yuri Kuznetsov
6b887f26c5 fix 2022-07-02 14:23:13 +03:00
Yuri Kuznetsov
97a33bde9a note type enum 2022-07-02 14:18:06 +03:00
Yuri Kuznetsov
10597931be varchar pattern 2022-07-02 13:12:32 +03:00
Yuri Kuznetsov
452f7a5d98 noSpellCheck 2022-07-02 12:49:28 +03:00
Yuri Kuznetsov
3b6e690046 field invalid message html 2022-07-02 12:33:40 +03:00
Yuri Kuznetsov
233b7163a2 fix 2022-07-02 11:45:10 +03:00
Yuri Kuznetsov
821a4dd5b4 field entityType prop 2022-07-02 10:43:22 +03:00
Yuri Kuznetsov
2116b7fc7d format fix 2022-07-02 09:44:05 +03:00
Yuri Kuznetsov
aed9191584 format fix 2022-07-02 09:41:38 +03:00
Yuri Kuznetsov
75633fc216 login button wide 2022-07-01 20:53:24 +03:00
Yuri Kuznetsov
efe41212b0 fix 2022-07-01 20:16:11 +03:00
Yuri Kuznetsov
cfca519c5a image mime type detection 2022-07-01 19:52:50 +03:00
Yuri Kuznetsov
544ddbbddd fix 2022-07-01 19:02:33 +03:00
Yuri Kuznetsov
3cbc2e07bb fix jsdoc 2022-07-01 18:30:08 +03:00
Yuri Kuznetsov
cae82e9866 cs fixes 2022-07-01 18:27:40 +03:00
Yuri Kuznetsov
c3ea3ac6cc fix typo 2022-07-01 18:10:49 +03:00
Yuri Kuznetsov
0641cf4d62 authTokenMaxIdleTime default 48 2022-07-01 17:38:35 +03:00
Yuri Kuznetsov
ebd859e4d2 list noDataDisabled option 2022-07-01 16:24:39 +03:00
Yuri Kuznetsov
2fe09b5f40 ref 2022-07-01 16:24:23 +03:00
Yuri Kuznetsov
29d6ea3668 ref 2022-07-01 14:36:42 +03:00
Yuri Kuznetsov
d901459581 fix jsdoc 2022-07-01 13:22:41 +03:00
Yuri Kuznetsov
38897f7f3b list layout noLabel and widthPx 2022-07-01 11:51:11 +03:00
Yuri Kuznetsov
d13a82fc9f fix jsdoc 2022-07-01 11:45:03 +03:00
Yuri Kuznetsov
b0d3d19694 fix field reset to default 2022-07-01 11:12:17 +03:00
Yuri Kuznetsov
512fb35fb4 note attachments customizable 2022-07-01 10:18:33 +03:00
Yuri Kuznetsov
f61714db17 fix 2022-07-01 09:16:38 +03:00
Yuri Kuznetsov
2a08678635 ref 2022-06-30 19:53:46 +03:00
Yuri Kuznetsov
4e3ff06d7c ref 2022-06-30 19:49:59 +03:00
Yuri Kuznetsov
d9d7567f06 ref 2022-06-30 19:40:02 +03:00
Yuri Kuznetsov
ce84389980 cleanup 2022-06-30 19:35:05 +03:00
Yuri Kuznetsov
c78feffc41 ref 2022-06-30 19:33:37 +03:00
Yuri Kuznetsov
d3f490ee89 ref 2022-06-30 19:31:57 +03:00
Yuri Kuznetsov
5195656bac add legacy office extensions 2022-06-30 18:41:41 +03:00
Yuri Kuznetsov
dfce7eeac7 document accept extensions 2022-06-30 18:34:22 +03:00
Yuri Kuznetsov
e8060925a3 file upload server side check 2022-06-30 15:25:49 +03:00
Yuri Kuznetsov
0fe2ea1d44 fix test 2022-06-30 14:33:12 +03:00
Yuri Kuznetsov
f461a02b1f attachment name max length param 2022-06-30 13:51:47 +03:00
Yuri Kuznetsov
6c9196fdb2 validate image file type 2022-06-30 13:45:49 +03:00
Yuri Kuznetsov
e76ee0b093 idea no phpstan 2022-06-30 12:47:31 +03:00
Yuri Kuznetsov
498f1bf2dc extensionMimeType map 2022-06-30 12:45:12 +03:00
Yuri Kuznetsov
e3cd5edaf7 ref 2022-06-30 11:44:31 +03:00
Yuri Kuznetsov
b8d1d954b6 ref 2022-06-30 11:20:36 +03:00
Yuri Kuznetsov
7c2687b753 add throws tags 2022-06-30 11:08:59 +03:00
Yuri Kuznetsov
96b3a522c3 merge 2022-06-30 10:43:32 +03:00
Yuri Kuznetsov
8ec6fa0f52 v 2022-06-29 19:41:06 +03:00
Yuri Kuznetsov
0fb683bbac secure cookie 2022-06-29 19:33:40 +03:00
Yuri Kuznetsov
bc9490a7e4 sanitize csv export 2022-06-29 18:50:08 +03:00
Yuri Kuznetsov
a0642e85b4 sanitize import preview 2022-06-29 17:45:55 +03:00
Yuri Kuznetsov
e6e76df8c2 fix test 2022-06-29 12:25:51 +03:00
Yuri Kuznetsov
9b506f12e3 acl fixes 2022-06-29 11:43:12 +03:00
Yuri Kuznetsov
c176f72fd8 boolean filter resolver 2022-06-29 11:30:47 +03:00
Yuri Kuznetsov
678ce4f139 fix 2022-06-28 22:54:26 +03:00
Yuri Kuznetsov
1d2818ef61 AppParam interface 2022-06-28 17:17:50 +03:00
Yuri Kuznetsov
6f56fffcbd cleanup 2022-06-28 16:01:04 +03:00
Yuri Kuznetsov
c25d0e1304 fix bundle config 2022-06-28 12:11:46 +03:00
Yuri Kuznetsov
45dce17fc6 Merge branch 'fix' 2022-06-28 09:44:03 +03:00
Yuri Kuznetsov
e61f9eb242 cut long email subject 2022-06-28 09:36:07 +03:00
Yuri Kuznetsov
8a37c9ec83 fix prepare lib original script 2022-06-28 09:08:19 +03:00
Yuri Kuznetsov
49bc91117a cleanup 2022-06-27 23:01:06 +03:00
Yuri Kuznetsov
9f7177d847 cleanup 2022-06-27 22:59:19 +03:00
Yuri Kuznetsov
4bd330ff59 cleanup 2022-06-27 22:58:33 +03:00
Yuri Kuznetsov
4895066215 massUpdateDisabled param in clientDefs 2022-06-27 19:13:49 +03:00
Yuri Kuznetsov
f9e30b778d detail modal actions in clientDefs 2022-06-27 18:54:44 +03:00
Yuri Kuznetsov
72cf250afe ref 2022-06-27 17:11:40 +03:00
Yuri Kuznetsov
efb99f090d ref 2022-06-27 17:07:32 +03:00
Yuri Kuznetsov
661402d052 cs fix 2022-06-27 17:00:39 +03:00
Yuri Kuznetsov
45a1c38418 action-item-setup helper and visibility check function 2022-06-27 14:47:44 +03:00
Yuri Kuznetsov
7d0851a785 ref and jsdoc 2022-06-27 12:27:25 +03:00
Yuri Kuznetsov
7f8c935a82 fix lib dev paths 2022-06-27 11:45:46 +03:00
Yuri Kuznetsov
169bb09576 strip source mapping url 2022-06-27 11:40:17 +03:00
Yuri Kuznetsov
b14a989141 original js libs 2022-06-27 10:54:59 +03:00
Yuri Kuznetsov
74844260c8 cleanup 2022-06-26 22:10:23 +03:00
Yuri Kuznetsov
970b4ce104 exceptions in module 2022-06-26 20:36:23 +03:00
Yuri Kuznetsov
74abbe9cc0 bundled 2022-06-26 20:16:29 +03:00
Yuri Kuznetsov
7ac7fea803 espo bundled 2022-06-26 18:24:18 +03:00
Yuri Kuznetsov
c28aec44b6 ref grunt 2022-06-26 18:08:55 +03:00
Yuri Kuznetsov
da8b117055 Merge branch 'fix' 2022-06-26 12:19:20 +03:00
Yuri Kuznetsov
2c87d47507 fix 2022-06-26 12:11:55 +03:00
Yuri Kuznetsov
92c9f2ca2d fix 2022-06-26 11:50:01 +03:00
Yuri Kuznetsov
8d34a5bd1a jsdoc 2022-06-26 11:24:09 +03:00
Yuri Kuznetsov
27b9035fd8 fix 2022-06-26 11:20:57 +03:00
Yuri Kuznetsov
59b20dabbb idea change 2022-06-26 11:07:56 +03:00
Yuri Kuznetsov
1e6dcd8fa7 bc fix 2022-06-26 10:48:53 +03:00
Yuri Kuznetsov
e08bf1b18d getRepositoryByClass and refactoring 2022-06-25 16:17:30 +03:00
Yuri Kuznetsov
645b7f4482 idea gitignore 2022-06-25 15:50:03 +03:00
Yuri Kuznetsov
37a71f050f cleanup 2022-06-25 15:49:51 +03:00
Yuri Kuznetsov
8c5b24689a getRDBRepositoryByClass 2022-06-25 15:41:40 +03:00
Yuri Kuznetsov
37777f0d92 cleanup idea 2022-06-25 15:40:49 +03:00
Yuri Kuznetsov
c5191deb40 idea ignore 2022-06-25 15:39:42 +03:00
Yuri Kuznetsov
78afd40955 merge 2022-06-24 20:58:18 +03:00
Yuri Kuznetsov
2c7249f12d translations 2022-06-24 20:57:10 +03:00
Yuri Kuznetsov
d9806e8ea9 lang ignore language name translations 2022-06-24 20:52:22 +03:00
Yuri Kuznetsov
373de97515 refactoring 2022-06-24 20:36:10 +03:00
Yuri Kuznetsov
52a96ae480 refactoring 2022-06-24 20:35:33 +03:00
Yuri Kuznetsov
d2398400e2 rename 2022-06-24 19:58:25 +03:00
Yuri Kuznetsov
50de79e2f7 jasmine-browser-runner 2022-06-24 19:57:08 +03:00
Yuri Kuznetsov
8af367d67e update bullbone 2022-06-24 15:29:45 +03:00
Yuri Kuznetsov
31a94da8ff throws tags 2022-06-24 12:22:27 +03:00
Yuri Kuznetsov
a9d5bc5d60 fix 2022-06-24 12:14:47 +03:00
Yuri Kuznetsov
344a0f7ff0 throws tags 2022-06-24 12:09:03 +03:00
Yuri Kuznetsov
1bd6c1c451 throws tags 2022-06-24 11:44:24 +03:00
Yuri Kuznetsov
1d2f862d98 phpdoc fixes 2022-06-24 11:13:02 +03:00
Yuri Kuznetsov
2ecfdc2d4b exceptions 2022-06-24 11:06:01 +03:00
Yuri Kuznetsov
503e1f6eff idea cs 2022-06-24 10:26:24 +03:00
Yuri Kuznetsov
6516616bf4 exception fixes 2022-06-23 17:28:35 +03:00
Yuri Kuznetsov
bcd063b8f3 fix 2022-06-23 14:51:23 +03:00
Yuri Kuznetsov
459de7be6f exception changes 2022-06-23 14:03:04 +03:00
Yuri Kuznetsov
2d12868849 idea 2022-06-23 13:03:22 +03:00
Yuri Kuznetsov
dfe921c231 exception change 2022-06-23 13:03:17 +03:00
Yuri Kuznetsov
17dddfd5d9 phpunit default 2022-06-23 13:02:11 +03:00
Yuri Kuznetsov
21cb6f505e Merge branch 'fix' 2022-06-23 12:55:43 +03:00
Yuri Kuznetsov
e5f0ca77a9 fix request wrapper 2022-06-23 12:55:03 +03:00
Yuri Kuznetsov
6e5c85be7e exceptions changes 2022-06-23 12:40:11 +03:00
Yuri Kuznetsov
43d5f93c4e fix test 2022-06-23 11:50:13 +03:00
Yuri Kuznetsov
955a489e21 exception changes 2022-06-23 11:45:50 +03:00
Yuri Kuznetsov
05ef2099d4 exceptions changes 2022-06-23 10:31:45 +03:00
Yuri Kuznetsov
af717a53b0 fix 2022-06-23 10:16:04 +03:00
Yuri Kuznetsov
59c53a191d exception changes 2022-06-22 20:36:03 +03:00
Yuri Kuznetsov
9ec7c897df add throws 2022-06-22 16:24:25 +03:00
Yuri Kuznetsov
cfe7212a80 add throws 2022-06-22 16:15:16 +03:00
Yuri Kuznetsov
c0dd692263 throw tags 2022-06-22 15:54:51 +03:00
Yuri Kuznetsov
71dc18afdb add ext-pdo 2022-06-22 15:35:07 +03:00
Yuri Kuznetsov
ebf0fbd5d5 fix 2022-06-22 13:50:53 +03:00
Yuri Kuznetsov
7a75c3c961 stream dashlet skip own false 2022-06-22 13:43:38 +03:00
Yuri Kuznetsov
b7ebc55c17 print trace job errors 2022-06-22 13:36:52 +03:00
Yuri Kuznetsov
3c97db414b idea cs 2022-06-22 13:34:12 +03:00
Yuri Kuznetsov
988fc94710 php version in composer change 2022-06-22 13:22:23 +03:00
Yuri Kuznetsov
d33355d561 support unnamed amd modules in bundle 2022-06-22 13:01:24 +03:00
Yuri Kuznetsov
bbc3aa5dd2 fix 2022-06-22 12:52:16 +03:00
Yuri Kuznetsov
4afc962f79 idea fix 2022-06-22 12:34:05 +03:00
Yuri Kuznetsov
f22fe29b26 fix typo 2022-06-21 19:13:13 +03:00
Yuri Kuznetsov
0f7b28a6cd jsdoc 2022-06-21 17:06:53 +03:00
Yuri Kuznetsov
1539574fba jsdoc 2022-06-20 21:59:42 +03:00
Yuri Kuznetsov
3e5f193964 jsdoc 2022-06-20 17:34:49 +03:00
Yuri Kuznetsov
40e1e8b559 idea 2022-06-20 15:11:30 +03:00
Yuri Kuznetsov
4871811385 jsdoc 2022-06-20 15:11:15 +03:00
Yuri Kuznetsov
bf46534d4d fix 2022-06-20 12:29:52 +03:00
Yuri Kuznetsov
471486ce01 idea files 2022-06-20 12:20:08 +03:00
Yuri Kuznetsov
9590a39d4b jsdoc 2022-06-20 12:16:30 +03:00
Yuri Kuznetsov
51a4dd2a05 Merge branch 'fix' 2022-06-20 11:50:04 +03:00
Eymen Elkum
c85f28f8ea fix merge conflict (#2349) 2022-06-20 11:49:39 +03:00
Yuri Kuznetsov
973e8cc77a fix case email address order 2022-06-20 10:29:38 +03:00
Yuri Kuznetsov
e852253f93 jsdoc 2022-06-19 21:30:39 +03:00
Yuri Kuznetsov
4e5c041a81 cleanup 2022-06-19 19:55:03 +03:00
Yuri Kuznetsov
250f6f0670 jsdoc 2022-06-19 19:53:50 +03:00
Yuri Kuznetsov
313d52ad14 jsdoc 2022-06-19 18:03:04 +03:00
Yuri Kuznetsov
e1af7b22f0 jsdoc 2022-06-19 17:57:40 +03:00
Yuri Kuznetsov
db2303bc16 jsdoc 2022-06-19 16:36:58 +03:00
Yuri Kuznetsov
6010aa1336 jsdoc 2022-06-19 15:00:48 +03:00
Yuri Kuznetsov
f7e9dbf292 jsdoc 2022-06-19 14:29:02 +03:00
Yuri Kuznetsov
d13222bfe3 cleanup 2022-06-18 23:56:45 +03:00
Yuri Kuznetsov
e8daec0d0d cleanup 2022-06-18 23:56:33 +03:00
Yuri Kuznetsov
2bc4c3c1c7 cs fix 2022-06-18 19:15:03 +03:00
Yuri Kuznetsov
cb43e60ae9 jsdoc 2022-06-18 19:14:09 +03:00
Yuri Kuznetsov
b69d55d114 fixes 2022-06-18 17:45:45 +03:00
Yuri Kuznetsov
c4ce4d6258 jsdoc 2022-06-18 16:13:05 +03:00
Yuri Kuznetsov
01081ab9a7 jsdoc 2022-06-18 14:31:25 +03:00
Yuri Kuznetsov
d2a400d08a jsdoc 2022-06-18 13:54:40 +03:00
Yuri Kuznetsov
5c1fe910b6 jsdoc 2022-06-18 10:10:02 +03:00
Yuri Kuznetsov
97a2f644f0 jsdoc 2022-06-17 17:15:11 +03:00
Yuri Kuznetsov
35e1caf817 jsdoc 2022-06-17 16:29:28 +03:00
Yuri Kuznetsov
bccf6a4e05 jsdoc and fixes 2022-06-17 16:01:55 +03:00
Yuri Kuznetsov
7ef9b5be4e jsdoc 2022-06-17 15:31:14 +03:00
Yuri Kuznetsov
075509f97e jsdoc 2022-06-17 13:58:07 +03:00
Yuri Kuznetsov
56dfe8d88a jsdoc 2022-06-17 12:35:55 +03:00
Yuri Kuznetsov
f2c5fdf9b5 fix doc 2022-06-16 22:11:35 +03:00
Yuri Kuznetsov
48020c771e jsdoc 2022-06-16 20:59:26 +03:00
Yuri Kuznetsov
cd7f060feb jsdoc 2022-06-16 18:20:22 +03:00
Yuri Kuznetsov
c0bb2148c6 jsdoc 2022-06-16 16:54:55 +03:00
Yuri Kuznetsov
966025c04f js docs 2022-06-16 16:28:08 +03:00
Yuri Kuznetsov
e9fdd976ce jsdoc fixes 2022-06-16 15:06:10 +03:00
Yuri Kuznetsov
d1b5847f4c jsdoc fix 2022-06-16 15:01:50 +03:00
Yuri Kuznetsov
ad58272a21 jsdoc 2022-06-16 14:56:09 +03:00
Yuri Kuznetsov
ec5f66d6f1 fix 2022-06-16 14:28:50 +03:00
Yuri Kuznetsov
5e59538865 jsdoc 2022-06-16 14:26:30 +03:00
Yuri Kuznetsov
4f884b3321 jsdoc 2022-06-16 13:23:37 +03:00
Yuri Kuznetsov
cc55430837 Merge branch 'fix' 2022-06-16 10:54:17 +03:00
Yuri Kuznetsov
9e2fbbe494 fix stream fetch-new race condition 2022-06-16 10:48:00 +03:00
Yuri Kuznetsov
322091248e fix 2022-06-16 10:40:38 +03:00
Yuri Kuznetsov
6f241d8803 Arabic lang 2022-06-16 09:22:25 +03:00
Yuri Kuznetsov
720c318186 jsdoc 2022-06-15 16:28:41 +03:00
Yuri Kuznetsov
caeed2ab43 jsdoc 2022-06-15 16:22:04 +03:00
Yuri Kuznetsov
4a5ef3c1b2 jsdoc 2022-06-15 16:13:03 +03:00
Yuri Kuznetsov
2da413754e jsdoc 2022-06-15 15:37:22 +03:00
Yuri Kuznetsov
7375149ada jsdoc 2022-06-15 15:15:17 +03:00
Yuri Kuznetsov
2cfd1b76d5 jsdoc 2022-06-15 12:33:54 +03:00
Yuri Kuznetsov
7de4a806a2 jsdoc 2022-06-14 22:53:06 +03:00
Yuri Kuznetsov
9e21dc43e9 jsdocs 2022-06-13 17:16:07 +03:00
Yuri Kuznetsov
b711f263eb jsdoc 2022-06-13 16:42:19 +03:00
Yuri Kuznetsov
d61cb52afe ide template 2022-06-13 11:43:19 +03:00
Yuri Kuznetsov
f0f20dc39f add idea 2022-06-13 11:12:18 +03:00
Yuri Kuznetsov
3beebe0a87 update jscondif 2022-06-13 10:52:36 +03:00
Yuri Kuznetsov
3de40cd5cf type fixes 2022-06-13 10:52:28 +03:00
Yuri Kuznetsov
680ddad042 ide ignoring 2022-06-13 10:12:19 +03:00
Yuri Kuznetsov
d65234508f fix 2022-06-12 22:19:03 +03:00
Yuri Kuznetsov
8c7bce4244 jsconfig 2022-06-12 22:16:11 +03:00
Yuri Kuznetsov
58b9b5a775 amd require usage change 2022-06-12 21:37:42 +03:00
Yuri Kuznetsov
3c2b7a757c doc fix 2022-06-12 19:37:43 +03:00
Yuri Kuznetsov
69fc1c199d updage bullbone 2022-06-11 15:00:09 +03:00
Yuri Kuznetsov
8c5e597f43 fix editor config 2022-06-11 12:59:54 +03:00
Yuri Kuznetsov
551427b5a1 dics fixes 2022-06-11 12:56:42 +03:00
Yuri Kuznetsov
9905cfa01b jsdocs 2022-06-11 12:22:53 +03:00
Yuri Kuznetsov
981693093c update bullbone 2022-06-10 21:33:45 +03:00
Yuri Kuznetsov
69ef1bf275 docs 2022-06-10 20:29:29 +03:00
Yuri Kuznetsov
cd953b47fe idea gitignore 2022-06-10 20:27:42 +03:00
Yuri Kuznetsov
0578268f2d update bullbone and cs fixes 2022-06-10 11:52:24 +03:00
Yuri Kuznetsov
2422940477 fix docs 2022-06-09 21:08:44 +03:00
Yuri Kuznetsov
c551828192 fix docs 2022-06-09 21:05:33 +03:00
Yuri Kuznetsov
077dd51e8a docs 2022-06-09 19:06:04 +03:00
Yuri Kuznetsov
1a06f66555 update bullbone 2022-06-09 18:16:13 +03:00
Yuri Kuznetsov
345c6226b8 frontend controller fixes and docs 2022-06-09 17:36:09 +03:00
Yuri Kuznetsov
d2052bf8b1 Merge branch 'fix' 2022-06-09 11:03:25 +03:00
Yuri Kuznetsov
2f90205a16 update bullbone 2022-06-09 11:03:23 +03:00
Yuri Kuznetsov
e267c88043 fix label manager empty array 2022-06-09 09:39:48 +03:00
Yuri Kuznetsov
11c9bf7704 update bullbone 2022-06-08 17:28:42 +03:00
Yuri Kuznetsov
fb4730942f datetime time format map 2022-06-08 15:23:18 +03:00
Yuri Kuznetsov
68b3fcaa43 docs fix 2022-06-08 10:58:20 +03:00
Yuri Kuznetsov
45d8cc9e8e ref 2022-06-08 10:54:07 +03:00
Yuri Kuznetsov
e501eaf238 refactor field view 2022-06-08 10:30:13 +03:00
Yuri Kuznetsov
c8395c6558 onListModeSet 2022-06-07 18:33:42 +03:00
Yuri Kuznetsov
00b69bfbab set mode changes 2022-06-07 18:18:13 +03:00
Yuri Kuznetsov
4d5fe65988 Merge branch 'fix' 2022-06-07 14:46:01 +03:00
Yuri Kuznetsov
9441825b8f fix not read-only race condition 2022-06-07 14:45:38 +03:00
Yuri Kuznetsov
48047cfea7 refactoring 2022-06-07 13:18:54 +03:00
Yuri Kuznetsov
b26ea22041 fix lang 2022-06-07 10:42:45 +03:00
Yuri Kuznetsov
2bdde353b1 fix acl user frontend 2022-06-07 10:20:52 +03:00
Yuri Kuznetsov
cb18485c3a stream fetch new no rebuild fix 2022-06-06 10:34:48 +03:00
Yuri Kuznetsov
0e267ca2a6 cs fix 2022-06-06 10:01:21 +03:00
Yuri Kuznetsov
085f93ba39 hard bounce statuses 2022-06-05 13:44:32 +03:00
Yuri Kuznetsov
afea99ae6f bounced test 2022-06-04 20:49:53 +03:00
Yuri Kuznetsov
3cd9e4919a Inline edit change (#2333) 2022-06-03 12:30:57 +03:00
Yuri Kuznetsov
e6b7914ccd binder inContextd 2022-06-03 11:50:53 +03:00
Yuri Kuznetsov
c7e74fe209 request wrapper fix 2022-06-02 10:36:13 +03:00
Yuri Kuznetsov
b3f69c0c70 stream post button fixes 2022-06-02 10:31:28 +03:00
Yuri Kuznetsov
11848b1ded fix post button 2022-06-02 10:07:40 +03:00
Yuri Kuznetsov
d6b48962ce attachments fixes 2022-05-31 12:30:53 +03:00
Yuri Kuznetsov
521f407714 upload by chunk 2022-05-31 11:56:36 +03:00
Yuri Kuznetsov
fd50868899 Merge branch 'fix' 2022-05-30 09:47:17 +03:00
Yuri Kuznetsov
4f00a18599 type fixes 2022-05-29 10:34:48 +03:00
Yuri Kuznetsov
767e775f31 fix mass convert currency 2022-05-27 11:50:51 +03:00
Yuri Kuznetsov
bedb66fdd5 datetime comparison methods 2022-05-26 14:06:45 +03:00
dependabot[bot]
e3319a3bd4 Bump grunt from 1.5.2 to 1.5.3 (#2326)
Bumps [grunt](https://github.com/gruntjs/grunt) from 1.5.2 to 1.5.3.
- [Release notes](https://github.com/gruntjs/grunt/releases)
- [Changelog](https://github.com/gruntjs/grunt/blob/main/CHANGELOG)
- [Commits](https://github.com/gruntjs/grunt/compare/v1.5.2...v1.5.3)

---
updated-dependencies:
- dependency-name: grunt
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-26 09:23:27 +03:00
Yuri Kuznetsov
c74111e29b Merge branch 'fix' 2022-05-24 16:47:47 +03:00
Yuri Kuznetsov
bd2204156e v 2022-05-24 16:14:19 +03:00
Yuri Kuznetsov
fe15eeeac7 wysiwyg fix paste upload duplicate 2022-05-24 16:08:48 +03:00
Yuri Kuznetsov
280a1a9313 cs fix 2022-05-24 14:37:47 +03:00
Yuri Kuznetsov
27105910df date time withTime 2022-05-24 14:15:59 +03:00
Eymen Elkum
f3d2616afb code style improve (#2324) 2022-05-24 13:20:25 +03:00
Yuri Kuznetsov
99cd5ddf3c Merge branch 'master' of github.com:espocrm/espocrm 2022-05-23 17:30:01 +03:00
Yuri Kuznetsov
02ebef1db8 Merge branch 'fix' 2022-05-23 17:29:48 +03:00
Yuri Kuznetsov
28227ddc2e v 2022-05-23 15:30:21 +03:00
Yuri Kuznetsov
b848261468 category tree fix 2022-05-23 13:49:33 +03:00
Yuri Kuznetsov
f1ff31829c related list modal sync model change 2022-05-23 12:36:24 +03:00
Yuri Kuznetsov
0736285e24 fix range fields 2022-05-23 11:47:32 +03:00
Yuri Kuznetsov
79bc345307 Merge branch 'fix' 2022-05-20 09:54:44 +03:00
Yuri Kuznetsov
a737711652 move config params 2022-05-19 11:47:59 +03:00
Yuri Kuznetsov
b5e8b89ed5 formula attribute id 2022-05-19 11:14:36 +03:00
Yuri Kuznetsov
a51b45df90 move config params 2022-05-19 10:35:08 +03:00
Yuri Kuznetsov
5612055b85 move config params to default 2022-05-19 10:26:09 +03:00
Yuri Kuznetsov
e3aff78e89 link manager hook assigned users 2022-05-19 10:19:08 +03:00
Yuri Kuznetsov
84a7576772 cs fix 2022-05-18 16:04:44 +03:00
Yuri Kuznetsov
69cd14f471 fix filter bool any 2022-05-18 16:03:34 +03:00
Yuri Kuznetsov
1a2d223740 callable usage 2022-05-17 17:10:24 +03:00
Yuri Kuznetsov
4ccbf86589 exit status usage 2022-05-17 16:51:34 +03:00
Yuri Kuznetsov
502b6586f1 console io error status code 2022-05-17 16:39:16 +03:00
Yuri Kuznetsov
4f57677e03 Merge branch 'fix' 2022-05-17 15:44:47 +03:00
Yuri Kuznetsov
8c1494e17e notify 2022-05-17 15:43:36 +03:00
Yuri Kuznetsov
178d06650a entity renamer 2022-05-17 12:55:27 +03:00
Yuri Kuznetsov
926ee94aae Merge branch 'master' of https://github.com/espocrm/espocrm 2022-05-16 09:43:29 +03:00
Yuri Kuznetsov
50a6209f11 php version required 2022-05-13 16:33:52 +03:00
Yuri Kuznetsov
e82a467f42 Merge branch 'fix' 2022-05-13 15:25:51 +03:00
Yuri Kuznetsov
f0d508be6f v 2022-05-13 15:15:33 +03:00
Yuri Kuznetsov
82a3c606c7 Merge branch 'fix' 2022-05-13 15:12:31 +03:00
Yuri Kuznetsov
e2b0aa65f8 fix convert lead 2022-05-13 09:40:43 +03:00
Yuri Kuznetsov
271344cfc1 fix convert lead 2022-05-13 09:40:07 +03:00
Yuri Kuznetsov
72cafdb27a Merge branch 'fix' 2022-05-12 17:17:35 +03:00
Yuri Kuznetsov
930675672b duration fixes 2022-05-12 17:07:04 +03:00
Yuri Kuznetsov
73f8731014 fix 2022-05-12 15:22:24 +03:00
Yuri Kuznetsov
33addcd90c Merge branch 'fix' 2022-05-12 15:02:00 +03:00
Yuri Kuznetsov
b5ee03b142 fix all-day event duration 2022-05-12 14:33:08 +03:00
Yuri Kuznetsov
a0d4fa5b82 cs fix 2022-05-12 14:08:14 +03:00
Yuri Kuznetsov
317bbba8c9 cs fix 2022-05-12 13:54:57 +03:00
Yuri Kuznetsov
cd58ccbb52 cleanup 2022-05-12 13:44:09 +03:00
Yuri Kuznetsov
da032f3518 preserve duration 2022-05-12 13:39:53 +03:00
Yuri Kuznetsov
487da37bea Merge branch 'fix' 2022-05-12 11:16:15 +03:00
Yuri Kuznetsov
3da95cce76 cs fix 2022-05-12 10:53:05 +03:00
Yuri Kuznetsov
9a7cf5c35e duration 3h 2022-05-12 10:04:28 +03:00
Yuri Kuznetsov
a022a4e8e8 fix test 2022-05-11 14:19:27 +03:00
Yuri Kuznetsov
b96ae74c14 cs fix 2022-05-10 17:57:54 +03:00
Yuri Kuznetsov
7a420fb6f9 fix clearAllStoredMainViews 2022-05-10 17:51:45 +03:00
Yuri Kuznetsov
58d161210d image silent exceptions 2022-05-10 17:42:14 +03:00
Yuri Kuznetsov
41c7cf115d clear stored main views on logout 2022-05-10 17:41:02 +03:00
Yuri Kuznetsov
f511553ff1 mass update actions 2022-05-10 14:53:21 +03:00
Yuri Kuznetsov
9e047650e8 Merge branch 'fix' 2022-05-09 18:18:25 +03:00
Yuri Kuznetsov
ba3bbfc097 fix autocomplete search no full-text 2022-05-09 16:03:54 +03:00
Yuri Kuznetsov
dcc2d1ee70 Merge branch 'master' of github.com:espocrm/espocrm 2022-05-09 13:02:16 +03:00
Yuri Kuznetsov
f167f0a0f9 Merge branch 'stable' 2022-05-09 13:01:46 +03:00
Yuri Kuznetsov
7758e20224 v 2022-05-09 12:52:28 +03:00
Yuri Kuznetsov
a1cc2ee8c6 fix duplicate link multiple 2022-05-09 12:39:47 +03:00
Yuri Kuznetsov
bdf397ad0f lt lv lang 2022-05-09 10:13:57 +03:00
Yuri Kuznetsov
4dcae92ab7 fix label 2022-05-09 10:11:26 +03:00
Yuri Kuznetsov
a7f5192057 Merge branch 'fix' 2022-05-08 16:24:26 +03:00
Yuri Kuznetsov
1d4fedf7c7 fix mass delete 2022-05-08 16:23:17 +03:00
Yuri Kuznetsov
7496d0c347 Merge branch 'fix' 2022-05-08 15:50:25 +03:00
Yuri Kuznetsov
24e6f2469f record service factory 2022-05-08 15:50:14 +03:00
Yuri Kuznetsov
fdad7065f7 Merge branch 'fix' 2022-05-07 14:59:37 +03:00
Arkadiy Asuratov
7b16d3541d fix entity type (#2308) 2022-05-06 22:05:31 +03:00
Yuri Kuznetsov
3c9c3c9c8c fix 2022-05-05 18:04:48 +03:00
Yuri Kuznetsov
f0413b7037 message partList and bounced recognizer 2022-05-05 17:39:36 +03:00
Yuri Kuznetsov
749f1a6a70 fix modal backdrop close on drag 2022-05-05 11:05:53 +03:00
Yuri Kuznetsov
512a23ef64 bg lang fixes 2022-05-05 10:19:47 +03:00
Yuri Kuznetsov
23729c5b89 scan barcode white background 2022-05-05 10:10:17 +03:00
Yuri Kuznetsov
f31ee10cf7 second step login autocomplete off 2022-05-05 10:09:58 +03:00
Yuri Kuznetsov
21d34b091b css label fix 2022-05-04 15:04:36 +03:00
Yuri Kuznetsov
fd19aa8b2e multi-enum max length 2022-05-04 14:36:24 +03:00
Arkadiy Asuratov
5af0b62e8e fix undeclared variable (#2304) 2022-05-04 14:00:51 +03:00
Yuri Kuznetsov
965cb33e34 layout set removal 2022-04-30 18:25:33 +03:00
Yuri Kuznetsov
aca19b3427 send button position 2022-04-30 11:08:02 +03:00
Yuri Kuznetsov
238baf89be spin color 2022-04-29 13:08:35 +03:00
Yuri Kuznetsov
50218a1146 fetch model on followers change 2022-04-29 12:21:35 +03:00
Yuri Kuznetsov
d1280a8797 cs fix 2022-04-29 12:16:57 +03:00
Yuri Kuznetsov
ca9358cf1a cs fix 2022-04-29 11:59:41 +03:00
Yuri Kuznetsov
c3fa8f3131 after relete link event 2022-04-29 11:51:10 +03:00
Yuri Kuznetsov
4af110cd69 followers fix 2022-04-29 11:34:55 +03:00
Yuri Kuznetsov
45d2d4306b cs fix 2022-04-29 11:31:00 +03:00
Yuri Kuznetsov
385f01da8b css text-gray 2022-04-29 10:23:34 +03:00
Yuri Kuznetsov
85da160957 menu button re-render fix 2022-04-28 22:17:36 +03:00
Yuri Kuznetsov
ff15f318c4 cs fix 2022-04-28 21:55:24 +03:00
Yuri Kuznetsov
5769e1b58f email address css fix 2022-04-28 14:43:37 +03:00
Yuri Kuznetsov
028a7c728a fix list extended empty cell 2022-04-28 13:37:16 +03:00
Yuri Kuznetsov
9ec3889f96 date-time none 2022-04-28 13:07:28 +03:00
Yuri Kuznetsov
3aa6502996 phone number css fix 2022-04-28 12:47:49 +03:00
Yuri Kuznetsov
847f8713c9 timeline gray axis color 2022-04-28 12:42:46 +03:00
Yuri Kuznetsov
7405476f61 none value gray 2022-04-28 12:34:23 +03:00
Yuri Kuznetsov
985903e99b loading-value class 2022-04-28 12:34:23 +03:00
Pavel Martínek
347f4e5566 Update Admin.json (#2302) 2022-04-28 11:55:52 +03:00
Pavel Martínek
15d72afbd5 Update Account.json (#2300) 2022-04-28 11:10:31 +03:00
Yuri Kuznetsov
085964dc58 none-value class 2022-04-28 11:08:12 +03:00
Yuri Kuznetsov
6c0a1265ab global search, notifications panel spinner 2022-04-28 10:31:02 +03:00
dependabot[bot]
6ee0de8f62 Bump grunt from 1.4.1 to 1.5.2 (#2298)
Bumps [grunt](https://github.com/gruntjs/grunt) from 1.4.1 to 1.5.2.
- [Release notes](https://github.com/gruntjs/grunt/releases)
- [Changelog](https://github.com/gruntjs/grunt/blob/main/CHANGELOG)
- [Commits](https://github.com/gruntjs/grunt/compare/v1.4.1...v1.5.2)

---
updated-dependencies:
- dependency-name: grunt
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-27 16:32:04 +03:00
Yuri Kuznetsov
bc2613d6a3 Merge branch 'master' of github.com:espocrm/espocrm 2022-04-27 15:52:32 +03:00
Yuri Kuznetsov
655a499caa v 2022-04-27 15:45:28 +03:00
Yuri Kuznetsov
bcf6f33965 no data gray 2022-04-27 13:33:34 +03:00
Yuri Kuznetsov
7c04febb3b fix invitation error 2022-04-27 10:59:45 +03:00
Yuri Kuznetsov
de39bcf197 Update SECURITY.md 2022-04-27 10:26:11 +03:00
Yuri Kuznetsov
4e7779ee48 fix entity manager edit 2022-04-27 10:14:09 +03:00
Yuri Kuznetsov
4b17896ff1 ref 2022-04-25 16:42:08 +03:00
Yuri Kuznetsov
caf20a5e61 global search fix 2022-04-25 13:14:31 +03:00
Yuri Kuznetsov
896d42df43 v 2022-04-25 11:44:48 +03:00
Yuri Kuznetsov
1905be823d upgrade change 2022-04-25 11:40:05 +03:00
Yuri Kuznetsov
6347992b6e before upgrade fix 2022-04-23 22:53:19 +03:00
Yuri Kuznetsov
b695d7c148 upgrade fix 2022-04-23 22:17:04 +03:00
Yuri Kuznetsov
9b75cdc2ac lang updates 2022-04-22 15:51:30 +03:00
Yuri Kuznetsov
da80ed0130 formula parser only comment fix 2022-04-21 18:42:00 +03:00
Yuri Kuznetsov
e8a23de848 refactoring 2022-04-21 18:02:02 +03:00
Yuri Kuznetsov
cb431a03df fix diff 2022-04-21 12:29:01 +03:00
Yuri Kuznetsov
4979fb7326 fix workflow 2022-04-21 12:27:59 +03:00
Yuri Kuznetsov
aaae51bb37 version tag empty 2022-04-21 12:20:29 +03:00
Yuri Kuznetsov
4d860e3764 v 2022-04-21 12:14:34 +03:00
Yuri Kuznetsov
e73ba5c734 email fetch bc fix 2022-04-21 12:14:07 +03:00
Yuri Kuznetsov
cca561f2c3 fix ldap portal user creation 2022-04-20 12:06:44 +03:00
Yuri Kuznetsov
87c5089a8e autocomplete fixes 2022-04-19 23:08:26 +03:00
Yuri Kuznetsov
a0819e8cdc autocomplete fixes 2022-04-19 22:51:10 +03:00
Yuri Kuznetsov
ac505d9875 fix db regexp 2022-04-19 20:20:48 +03:00
Yuri Kuznetsov
750f7ceb53 autocomplete fix 2022-04-19 19:28:45 +03:00
Yuri Kuznetsov
5be2a73801 install default preferences values 2022-04-19 13:47:36 +03:00
Yuri Kuznetsov
5976fd5738 fix 2022-04-19 13:42:15 +03:00
Yuri Kuznetsov
e6f09ed32a fix install date format 2022-04-19 13:35:16 +03:00
Yuri Kuznetsov
e2efb62a6a install theme selection 2022-04-19 13:17:21 +03:00
Yuri Kuznetsov
8ecfc75fac install buttons wide 2022-04-19 10:59:30 +03:00
Yuri Kuznetsov
2c16a5bff7 install back button to the left 2022-04-19 10:55:28 +03:00
Yuri Kuznetsov
47d049ab93 fix installer create database 2022-04-19 10:49:57 +03:00
Yuri Kuznetsov
51ce0780fd install css fix 2022-04-19 10:24:53 +03:00
Yuri Kuznetsov
a01e394a56 cs fix 2022-04-18 21:42:20 +03:00
Yuri Kuznetsov
752b683494 config fill missing default parameters on rebuild 2022-04-18 19:11:40 +03:00
Yuri Kuznetsov
2281d982f2 fix config: null not treated as set 2022-04-18 19:06:58 +03:00
Yuri Kuznetsov
ad03cf92fc css fix 2022-04-18 15:49:52 +03:00
Yuri Kuznetsov
16ccf59d3f dark heading blue color 2022-04-18 15:46:52 +03:00
dependabot[bot]
9e09f89927 Bump async from 2.6.2 to 2.6.4 (#2280)
Bumps [async](https://github.com/caolan/async) from 2.6.2 to 2.6.4.
- [Release notes](https://github.com/caolan/async/releases)
- [Changelog](https://github.com/caolan/async/blob/v2.6.4/CHANGELOG.md)
- [Commits](https://github.com/caolan/async/compare/v2.6.2...v2.6.4)

---
updated-dependencies:
- dependency-name: async
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-18 13:44:33 +03:00
Yuri Kuznetsov
53886ec684 promise usage 2022-04-18 13:10:22 +03:00
Yuri Kuznetsov
fbc3e2cea9 autocomplete item padding 2022-04-18 13:08:14 +03:00
Yuri Kuznetsov
2a7a4714ed doNotFillAssignedUserIfNotRequired true 2022-04-18 12:41:24 +03:00
Yuri Kuznetsov
19749aeca2 autoselect first autocomplete 2022-04-18 12:33:11 +03:00
Yuri Kuznetsov
ee1dd28bc7 assigned user autocomplete own 2022-04-18 12:29:41 +03:00
Yuri Kuznetsov
c1b0a3849d link autocomplete flicker fix 2022-04-18 11:01:46 +03:00
Yuri Kuznetsov
d721036226 update autocomplete lib 2022-04-18 10:28:57 +03:00
Yuri Kuznetsov
9cce13af65 link autocimplete select text on focus, no search on focus 2022-04-18 10:18:27 +03:00
Yuri Kuznetsov
176abf90ad cs fix 2022-04-18 09:23:32 +03:00
Yuri Kuznetsov
0bdeec10b6 fix color 2022-04-15 15:35:02 +03:00
Yuri Kuznetsov
29bd26a096 chart grid label x 1 line 2022-04-15 15:11:43 +03:00
Yuri Kuznetsov
758e831cd5 css chart overflow hidden 2022-04-15 14:06:06 +03:00
Yuri Kuznetsov
95eea88a89 color fix 2022-04-15 13:49:50 +03:00
Yuri Kuznetsov
4c435b4d4b fix css 2022-04-15 12:51:22 +03:00
Yuri Kuznetsov
120f9fd07e q append asterisk 2022-04-14 16:08:40 +03:00
Yuri Kuznetsov
7ca7a1ad18 discard nofulltexdtsearch 2022-04-14 15:46:32 +03:00
Yuri Kuznetsov
f8dcd40905 fix test 2022-04-14 14:54:06 +03:00
Yuri Kuznetsov
039c67c6ca ref 2022-04-14 14:52:34 +03:00
Yuri Kuznetsov
908d0ad3c4 refactoring 2022-04-14 14:47:30 +03:00
Yuri Kuznetsov
1a70fdfd41 ft filter fix 2022-04-14 13:26:15 +03:00
Yuri Kuznetsov
dc5c572a9f full text datacomposer interface 2022-04-14 12:31:18 +03:00
Yuri Kuznetsov
96be15c33b fulltextsearch namespace 2022-04-14 11:45:49 +03:00
Yuri Kuznetsov
79793ebff6 email search fix 2022-04-14 11:14:19 +03:00
Yuri Kuznetsov
d38c79c4ba ft changes 2022-04-14 10:49:34 +03:00
Yuri Kuznetsov
ba02164d0b ft changes 2022-04-13 20:00:15 +03:00
Yuri Kuznetsov
0cdbe89f5c refactoring 2022-04-13 19:20:52 +03:00
Yuri Kuznetsov
46d8ec757f fix orm order empty 2022-04-13 13:45:54 +03:00
Yuri Kuznetsov
f4930b0a1f type fix 2022-04-13 13:24:51 +03:00
Yuri Kuznetsov
e03dc3b738 refactoring 2022-04-13 13:18:32 +03:00
Yuri Kuznetsov
bfb7d88b79 refactoring 2022-04-13 11:18:12 +03:00
Yuri Kuznetsov
2f3f2a0247 use fulltext search in automplete 2022-04-12 16:38:47 +03:00
Yuri Kuznetsov
08f64eb209 autocompete no order 2022-04-12 16:38:12 +03:00
Yuri Kuznetsov
15371a6a0f no total param 2022-04-12 14:21:36 +03:00
Yuri Kuznetsov
68ea55144d fix 2022-04-12 14:21:12 +03:00
Yuri Kuznetsov
ec7e35e654 fix link parent reset 2022-04-12 14:15:17 +03:00
Yuri Kuznetsov
7e5a7546f2 fulltext search in email address lookup 2022-04-12 12:49:51 +03:00
Yuri Kuznetsov
86f67bd315 email address lookup no cache 2022-04-12 12:43:41 +03:00
Yuri Kuznetsov
ca8cdd6008 currency compare 2022-04-12 11:05:16 +03:00
Yuri Kuznetsov
5a60c5941a add composer suggest 2022-04-12 10:44:40 +03:00
Yuri Kuznetsov
5487bd7598 records per page select 2022-04-11 13:59:58 +03:00
Yuri Kuznetsov
ea8c4d348d type fix 2022-04-11 13:22:26 +03:00
Yuri Kuznetsov
a56a6b01f4 orderer apply id 2022-04-11 13:21:48 +03:00
dependabot[bot]
bfe91a37e8 Bump moment from 2.24.0 to 2.29.2 (#2276)
Bumps [moment](https://github.com/moment/moment) from 2.24.0 to 2.29.2.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.24.0...2.29.2)

---
updated-dependencies:
- dependency-name: moment
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-11 13:03:34 +03:00
Yuri Kuznetsov
ecd61eb4e9 dark theme fix 2022-04-11 13:02:21 +03:00
Yuri Kuznetsov
ffd05882f2 select orderer, passing user to order converter 2022-04-11 12:57:24 +03:00
Yuri Kuznetsov
f8eb7679fd fix link multiple order 2022-04-10 14:27:38 +03:00
Yuri Kuznetsov
68fa506f32 currency bcmath 2022-04-10 13:13:23 +03:00
Yuri Kuznetsov
c1e4ca4850 link multiple order in select 2022-04-09 19:39:52 +03:00
Taras Machyshyn
31a507cd4a Autoload fixes 2022-04-08 16:28:12 +03:00
Yuri Kuznetsov
58a89146c9 cleanup 2022-04-08 14:04:08 +03:00
Yuri Kuznetsov
d70461db9f email task status icon 2022-04-08 13:57:26 +03:00
Yuri Kuznetsov
bddd310ac7 refactoring 2022-04-08 13:16:42 +03:00
Yuri Kuznetsov
f46bc47bba select user own first 2022-04-08 12:55:11 +03:00
Yuri Kuznetsov
579e134303 cs fix 2022-04-08 12:20:32 +03:00
Yuri Kuznetsov
b92fd15ece accentuate own user in list 2022-04-07 17:47:50 +03:00
Yuri Kuznetsov
4ef307e8e7 email to case, carry over lead 2022-04-07 17:20:46 +03:00
Yuri Kuznetsov
58fca25b3e dark theme color fixes 2022-04-07 17:15:51 +03:00
Yuri Kuznetsov
efaf1fab79 calendar create enum fix 2022-04-07 12:44:53 +03:00
Yuri Kuznetsov
e6beedbffd cs fix 2022-04-07 12:15:22 +03:00
Yuri Kuznetsov
d718151dbe field validate refactoring and fix 2022-04-07 12:02:05 +03:00
Yuri Kuznetsov
cb79354078 cs fix 2022-04-07 11:54:19 +03:00
Yuri Kuznetsov
94d2873669 color fix 2022-04-06 16:31:02 +03:00
Yuri Kuznetsov
46b269fa0e set access info checkbox not setting 2022-04-06 13:37:18 +03:00
Yuri Kuznetsov
43a233a4ba stream drag enable posting mode 2022-04-06 12:09:12 +03:00
Yuri Kuznetsov
7cc33bd684 email task relationship 2022-04-05 18:39:43 +03:00
Yuri Kuznetsov
0937c83746 fix array list css 2022-04-05 14:44:38 +03:00
Yuri Kuznetsov
0ae81328b4 image fix 2022-04-05 14:39:09 +03:00
Yuri Kuznetsov
68a7130e85 image preview left-right keys 2022-04-05 11:57:15 +03:00
Yuri Kuznetsov
da41370c29 cs fix 2022-04-05 11:30:31 +03:00
Yuri Kuznetsov
836ffff49f contact opp relation fix 2022-04-04 14:22:02 +03:00
Yuri Kuznetsov
350819033d email send from detail view and edit mode promise 2022-04-04 13:21:48 +03:00
Yuri Kuznetsov
5c47b6c653 fix 2022-04-03 10:51:29 +03:00
Yuri Kuznetsov
f37fd5e013 ref 2022-04-01 14:46:21 +03:00
Yuri Kuznetsov
100b44791d refactoring 2022-04-01 14:39:21 +03:00
Yuri Kuznetsov
cf7f8260c9 refactoring 2022-04-01 13:33:23 +03:00
Yuri Kuznetsov
bc06e39f90 refactoring 2022-04-01 12:13:02 +03:00
Yuri Kuznetsov
42a8f8b438 base currency usage 2022-04-01 11:48:48 +03:00
Yuri Kuznetsov
6b04536c3a currency rates base 2022-04-01 11:47:02 +03:00
Yuri Kuznetsov
4ff8514925 refactoring 2022-04-01 11:30:59 +03:00
Yuri Kuznetsov
30b4b8d501 refactoring 2022-04-01 11:12:21 +03:00
Yuri Kuznetsov
23d78e1e46 utf8 passwords 2022-03-31 18:57:15 +03:00
Yuri Kuznetsov
65ca47b878 Merge branch 'fix' 2022-03-31 18:03:33 +03:00
Yuri Kuznetsov
a2ac9c2d4c login base64 error catching 2022-03-31 18:03:21 +03:00
Yuri Kuznetsov
87048ce9af set config params script 2022-03-30 16:04:42 +03:00
dependabot[bot]
846c8040a3 Bump guzzlehttp/psr7 from 1.6.1 to 1.8.4 (#2265)
Bumps [guzzlehttp/psr7](https://github.com/guzzle/psr7) from 1.6.1 to 1.8.4.
- [Release notes](https://github.com/guzzle/psr7/releases)
- [Changelog](https://github.com/guzzle/psr7/blob/1.8.4/CHANGELOG.md)
- [Commits](https://github.com/guzzle/psr7/compare/1.6.1...1.8.4)

---
updated-dependencies:
- dependency-name: guzzlehttp/psr7
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-30 13:02:20 +03:00
Yuri Kuznetsov
f993d676fc fix 2022-03-30 13:00:56 +03:00
Yuri Kuznetsov
00d04e0157 translatable error messages 2022-03-30 12:59:13 +03:00
Yuri Kuznetsov
461034f9cc roles exportable importable 2022-03-29 17:44:24 +03:00
Yuri Kuznetsov
16b61d9484 Merge branch 'fix' 2022-03-29 16:14:50 +03:00
Eymen Elkum
afbd3919b7 fix typo (#2260)
Co-authored-by: Eymen Elkum <eymen@eblasoft.com.tr>
2022-03-29 15:38:06 +03:00
Yuri Kuznetsov
ec1887e726 closable error usage 2022-03-29 13:36:50 +03:00
Yuri Kuznetsov
b9fc41d5cd Merge branch 'fix' 2022-03-29 13:18:36 +03:00
Yuri Kuznetsov
216e1061d2 v 2022-03-29 12:54:57 +03:00
Yuri Kuznetsov
934b7a9369 npm ci 2022-03-29 12:48:42 +03:00
Yuri Kuznetsov
6b62841fba fix websocket 2022-03-29 12:47:29 +03:00
Yuri Kuznetsov
644f653bdd fix websocket 2022-03-29 12:41:40 +03:00
Yuri Kuznetsov
bdfe6b5e23 forbidden exception with body 2022-03-28 14:38:03 +03:00
Yuri Kuznetsov
01e0d51c0a error alert improvements 2022-03-28 14:37:36 +03:00
Yuri Kuznetsov
6acd18b4c6 fix error 2022-03-28 14:26:40 +03:00
Yuri Kuznetsov
9ac36cd5da error alerts with close button 2022-03-28 13:44:12 +03:00
Yuri Kuznetsov
cbc581ad9f cs fix 2022-03-26 17:34:09 +02:00
Yuri Kuznetsov
9845ed2db3 formula tpl change 2022-03-25 20:19:29 +02:00
Yuri Kuznetsov
87e95dc791 Update README.md 2022-03-25 17:39:43 +02:00
Yuri Kuznetsov
51ca68531a Update README.md 2022-03-25 17:09:37 +02:00
Yuri Kuznetsov
eb78b921a7 Update README.md 2022-03-25 17:07:46 +02:00
Yuri Kuznetsov
1d6bedcfad Update README.md 2022-03-25 17:07:21 +02:00
Yuri Kuznetsov
36ca2daee0 Update README.md 2022-03-25 17:06:27 +02:00
Yuri Kuznetsov
f000fb6f29 Update README.md 2022-03-25 16:58:49 +02:00
Yuri Kuznetsov
170ff67ea8 Update README.md 2022-03-25 16:58:11 +02:00
Yuri Kuznetsov
d196347b22 Update README.md 2022-03-25 16:52:59 +02:00
Yuri Kuznetsov
b2d7cfa187 fix diff 2022-03-25 11:32:50 +02:00
Yuri Kuznetsov
2c3f6baaac rename array index 2022-03-24 21:47:23 +02:00
Yuri Kuznetsov
0060f70586 array functions metadata 2022-03-24 20:45:58 +02:00
Yuri Kuznetsov
22fd7cb6b3 array functions 2022-03-24 20:22:47 +02:00
Yuri Kuznetsov
9d7246832d build changes 2022-03-24 16:29:02 +02:00
Taras Machyshyn
03eb8db555 package.json 2022-03-24 15:05:52 +02:00
Yuri Kuznetsov
3f2364cd8d phpstan level 8 2022-03-24 12:35:02 +02:00
Yuri Kuznetsov
f1c0ccf97d type fixes 2022-03-24 12:34:40 +02:00
Yuri Kuznetsov
ceddfd8486 type fixes 2022-03-24 12:21:14 +02:00
Yuri Kuznetsov
eaed64fe6a type fixes 2022-03-24 10:54:51 +02:00
Yuri Kuznetsov
69d88f9b76 fix email address varchar 2022-03-24 10:53:22 +02:00
Yuri Kuznetsov
1e51f1b97c fix 2022-03-23 19:46:40 +02:00
Yuri Kuznetsov
ef7e620b8b bc fix 2022-03-23 19:41:28 +02:00
Yuri Kuznetsov
99c2f30394 fix 2022-03-23 15:44:20 +02:00
Yuri Kuznetsov
ccc231a06e fixes 2022-03-23 15:33:22 +02:00
Yuri Kuznetsov
b4aa1392d5 type fixes 2022-03-23 15:14:44 +02:00
Yuri Kuznetsov
4aec7251a6 type fixes 2022-03-23 15:04:26 +02:00
Yuri Kuznetsov
5ff9e42887 type fixes 2022-03-23 14:46:06 +02:00
Yuri Kuznetsov
a9d4046337 type fixes 2022-03-23 14:31:31 +02:00
Yuri Kuznetsov
b1e8266d89 type fixes 2022-03-23 14:22:05 +02:00
Yuri Kuznetsov
1a4b891b05 type fixes 2022-03-23 14:14:08 +02:00
Yuri Kuznetsov
0191188eba type fixes 2022-03-23 14:10:34 +02:00
Yuri Kuznetsov
833cd4f5ee type fixes 2022-03-23 13:51:59 +02:00
Yuri Kuznetsov
bea8f4d4bd type fixes 2022-03-23 13:38:57 +02:00
Yuri Kuznetsov
d59874801d type fixes 2022-03-23 13:17:04 +02:00
Yuri Kuznetsov
2ffae46291 type fixes 2022-03-23 12:55:04 +02:00
Yuri Kuznetsov
48b79dfdb1 update minimist 2022-03-23 09:57:14 +02:00
Yuri Kuznetsov
52bdfc128c type fixes 2022-03-22 22:50:05 +02:00
Yuri Kuznetsov
c9adeecd1b type fixes 2022-03-22 22:22:16 +02:00
Yuri Kuznetsov
4bfdbcc207 cleanup 2022-03-22 18:28:04 +02:00
Yuri Kuznetsov
0a4b261529 record service refactoring 2022-03-22 18:27:41 +02:00
Yuri Kuznetsov
dc6a7f241e comment 2022-03-22 15:12:16 +02:00
Yuri Kuznetsov
da39015a7c type fixes 2022-03-22 15:08:57 +02:00
Yuri Kuznetsov
8ba1907b45 type fixes 2022-03-22 14:51:22 +02:00
Yuri Kuznetsov
eea3efeb95 type fixes 2022-03-22 14:06:21 +02:00
Yuri Kuznetsov
991e3f8cc3 type fixes 2022-03-22 13:37:38 +02:00
Yuri Kuznetsov
25a09f5ec3 type fixes 2022-03-22 13:16:04 +02:00
Yuri Kuznetsov
86413517e6 type fixes 2022-03-22 13:12:35 +02:00
Yuri Kuznetsov
747d581f9a type fixes 2022-03-22 12:37:27 +02:00
Yuri Kuznetsov
1d4030b29e type fixes 2022-03-22 12:22:29 +02:00
Yuri Kuznetsov
80fa7407d4 type fixes 2022-03-22 12:05:32 +02:00
Yuri Kuznetsov
495e700373 type fixes 2022-03-22 11:55:23 +02:00
Yuri Kuznetsov
5c583a697d type fixes 2022-03-22 11:34:39 +02:00
Yuri Kuznetsov
24b935c789 type fixes 2022-03-22 11:29:33 +02:00
Yuri Kuznetsov
df0da5e51b type fixes 2022-03-22 11:23:02 +02:00
Yuri Kuznetsov
485dfd32fd collapsed modal changes and fixes 2022-03-22 11:11:47 +02:00
Yuri Kuznetsov
51a6b304f2 modal css fix 2022-03-22 10:53:36 +02:00
Yuri Kuznetsov
93e467af79 fix typo 2022-03-22 10:45:40 +02:00
Yuri Kuznetsov
c5eb6c560b type fixes 2022-03-21 15:52:30 +02:00
Yuri Kuznetsov
dd1a74b4c0 type fixes 2022-03-21 15:38:22 +02:00
Yuri Kuznetsov
5fa73b2581 type fixes 2022-03-21 14:19:04 +02:00
Yuri Kuznetsov
f70e1bd38e type fixes 2022-03-21 13:51:54 +02:00
Yuri Kuznetsov
5dd845327e email phone group value object new method 2022-03-21 13:41:49 +02:00
Yuri Kuznetsov
bc84a9be51 type fixes 2022-03-21 13:36:02 +02:00
Yuri Kuznetsov
39442377a3 type fixes 2022-03-21 13:23:12 +02:00
Yuri Kuznetsov
b9126d2c0f type fixes 2022-03-21 13:08:52 +02:00
Yuri Kuznetsov
1f982031ca type fixes 2022-03-21 12:43:12 +02:00
Yuri Kuznetsov
3961dcaad4 type fixes 2022-03-21 12:28:54 +02:00
Yuri Kuznetsov
a91c63c6a9 date time convert throwing exception 2022-03-21 12:26:56 +02:00
Yuri Kuznetsov
7f328927ba cs fixes 2022-03-21 12:26:42 +02:00
Yuri Kuznetsov
8491a54248 type fixes 2022-03-21 12:24:12 +02:00
Yuri Kuznetsov
79bc6a9aea add msg 2022-03-21 12:02:12 +02:00
Yuri Kuznetsov
d899e8d3df fix 2022-03-21 12:01:27 +02:00
Yuri Kuznetsov
3ef6de205f get id exception 2022-03-21 11:34:48 +02:00
Yuri Kuznetsov
fa02291a1a fixes 2022-03-20 19:35:28 +02:00
Yuri Kuznetsov
5096870635 update laminas ldap 2022-03-19 17:34:43 +02:00
Yuri Kuznetsov
7cb086d5c9 fix typo 2022-03-19 17:17:20 +02:00
Yuri Kuznetsov
9e9a72af91 fix 2022-03-19 11:18:01 +02:00
Yuri Kuznetsov
62f2c9658a phpstan level 7 2022-03-19 11:12:34 +02:00
Yuri Kuznetsov
4015e2f254 type fixes 2022-03-19 11:11:58 +02:00
Yuri Kuznetsov
aa51a58da5 type fixes 2022-03-19 11:03:43 +02:00
Yuri Kuznetsov
a12ee989f6 type fixes 2022-03-19 10:56:20 +02:00
Yuri Kuznetsov
ab137263dc type fixes 2022-03-19 10:16:36 +02:00
Yuri Kuznetsov
77e02fd66f type fixes 2022-03-18 20:17:37 +02:00
Yuri Kuznetsov
0d1466afac type fixes 2022-03-18 20:14:41 +02:00
Yuri Kuznetsov
4f4db967f8 type fixes 2022-03-18 19:53:20 +02:00
Yuri Kuznetsov
6beaa730ea type fixes 2022-03-18 19:39:58 +02:00
Yuri Kuznetsov
31a84a6e53 type fixes 2022-03-18 18:04:03 +02:00
Yuri Kuznetsov
761e7b7b72 type fixes 2022-03-18 18:01:44 +02:00
Yuri Kuznetsov
b0547325ca type fixes 2022-03-18 17:05:28 +02:00
Yuri Kuznetsov
914f90214a type fixes 2022-03-18 15:01:59 +02:00
Yuri Kuznetsov
be2d936be9 type fixes 2022-03-18 14:46:07 +02:00
Yuri Kuznetsov
1f48e3d005 type fixes 2022-03-18 14:30:23 +02:00
Yuri Kuznetsov
50f7165963 type fixes 2022-03-18 14:24:38 +02:00
Yuri Kuznetsov
55453b95ab type fixes 2022-03-18 14:14:23 +02:00
Yuri Kuznetsov
27d7e6e522 type fixes 2022-03-18 14:05:16 +02:00
Yuri Kuznetsov
abca847e5a type fixes 2022-03-18 13:37:53 +02:00
Yuri Kuznetsov
6d28fab610 type fixes 2022-03-18 13:05:02 +02:00
Yuri Kuznetsov
a8b315b35d type fix 2022-03-17 21:09:52 +02:00
Yuri Kuznetsov
206e3e787e type fixes 2022-03-17 20:44:34 +02:00
Yuri Kuznetsov
26ab145380 type fixes 2022-03-17 20:32:28 +02:00
Yuri Kuznetsov
5518d71bbe type fixes 2022-03-17 18:09:37 +02:00
Yuri Kuznetsov
4fbfd1e123 type fixes 2022-03-17 18:01:07 +02:00
Yuri Kuznetsov
099e0745f5 type fixes 2022-03-17 17:18:49 +02:00
Yuri Kuznetsov
ef0c9e86a9 type fixes 2022-03-17 16:53:39 +02:00
Yuri Kuznetsov
ca39deb818 type fixes 2022-03-17 16:48:47 +02:00
Yuri Kuznetsov
0cc88a395f type fixes 2022-03-17 16:37:37 +02:00
Yuri Kuznetsov
706cb66021 type fixes 2022-03-17 15:14:41 +02:00
Yuri Kuznetsov
a33d49b151 refactoring and type fixes 2022-03-17 14:57:08 +02:00
Yuri Kuznetsov
71bb9d7d18 type fixes 2022-03-17 14:26:36 +02:00
Yuri Kuznetsov
0ef26a7929 type fixes 2022-03-17 14:20:06 +02:00
Yuri Kuznetsov
d77e56ec5d type fixes 2022-03-17 14:07:47 +02:00
Yuri Kuznetsov
45f9e2af59 type fixes 2022-03-17 14:02:36 +02:00
Yuri Kuznetsov
cc89b69f18 type fixes 2022-03-17 13:42:20 +02:00
Yuri Kuznetsov
d39376398a type fixes 2022-03-17 13:15:58 +02:00
Yuri Kuznetsov
1016b61835 type fixes 2022-03-17 12:52:32 +02:00
Yuri Kuznetsov
5a2c027f17 refactoring 2022-03-17 12:23:53 +02:00
Yuri Kuznetsov
c030f375bf type fixes 2022-03-17 11:53:56 +02:00
Yuri Kuznetsov
8d7d5527a1 type fixes 2022-03-16 16:42:41 +02:00
Yuri Kuznetsov
91915ccf44 fix 2022-03-16 14:18:55 +02:00
Yuri Kuznetsov
d92bf08160 type fixes 2022-03-16 14:16:32 +02:00
Yuri Kuznetsov
46f3846d36 type fixes 2022-03-16 13:57:33 +02:00
Yuri Kuznetsov
841b0f4ebf fix 2022-03-16 13:20:39 +02:00
Yuri Kuznetsov
5c4e4613e7 fix 2022-03-16 13:03:22 +02:00
Yuri Kuznetsov
8b800d7757 fixes 2022-03-16 12:58:20 +02:00
Yuri Kuznetsov
670df99eda type fixes 2022-03-16 12:04:44 +02:00
Yuri Kuznetsov
e3b42ab084 type fixes 2022-03-16 11:34:07 +02:00
Yuri Kuznetsov
dcd0f6f56b type fixes 2022-03-15 21:29:18 +02:00
Yuri Kuznetsov
f7cab7d42d file get contents refactoring 2022-03-15 19:06:14 +02:00
Yuri Kuznetsov
3778e2640e type fixes 2022-03-15 15:10:01 +02:00
Yuri Kuznetsov
b399a8dd78 cleanup 2022-03-15 14:29:21 +02:00
Yuri Kuznetsov
6a45db8e1c api getQueryParam return string 2022-03-15 14:15:41 +02:00
Yuri Kuznetsov
6c89147b2c fix type 2022-03-15 13:12:41 +02:00
Yuri Kuznetsov
dff3321540 fix test 2022-03-15 12:50:48 +02:00
Yuri Kuznetsov
9592e68c30 type fixes 2022-03-15 12:44:30 +02:00
Yuri Kuznetsov
5ebd680d64 type fixes 2022-03-15 12:31:02 +02:00
Yuri Kuznetsov
603ac2b985 type fixes 2022-03-15 11:49:25 +02:00
Yuri Kuznetsov
6efff8e9d0 version param internal 2022-03-15 11:21:38 +02:00
Yuri Kuznetsov
a8a46976de type fixes 2022-03-14 14:46:42 +02:00
Yuri Kuznetsov
cd3a2bbc80 type fixes 2022-03-14 14:06:22 +02:00
Yuri Kuznetsov
bb2259232e type fixes 2022-03-14 13:20:13 +02:00
Yuri Kuznetsov
fdc9a98c1d fix 2022-03-14 12:49:05 +02:00
Yuri Kuznetsov
761df3c562 type fixes 2022-03-14 12:41:21 +02:00
Yuri Kuznetsov
11bd9c7d8f update dbal 2022-03-14 11:46:31 +02:00
Yuri Kuznetsov
bf24bfda43 Merge branch 'fix' 2022-03-14 11:26:35 +02:00
Yuri Kuznetsov
389dda2866 fix email folder mandatory filter 2022-03-14 11:22:38 +02:00
Yuri Kuznetsov
86026f8f7e css fixes 2022-03-14 11:16:44 +02:00
Yuri Kuznetsov
c0e82c6c00 type fixes 2022-03-13 16:50:10 +02:00
Yuri Kuznetsov
57e733754a type fixes 2022-03-13 15:20:47 +02:00
Yuri Kuznetsov
ceb67c5b95 type fixes 2022-03-13 14:36:14 +02:00
Yuri Kuznetsov
a164c33829 type fixes 2022-03-13 14:19:38 +02:00
Yuri Kuznetsov
120d090215 cs fix 2022-03-13 14:05:27 +02:00
Yuri Kuznetsov
a5139255f2 fixes 2022-03-12 20:12:38 +02:00
Yuri Kuznetsov
f5d5c4e75e fix 2022-03-12 20:02:36 +02:00
Yuri Kuznetsov
fca55da02f acl generics 2022-03-12 19:59:55 +02:00
Yuri Kuznetsov
0a5a82fb38 phpstan 6 level 2022-03-12 19:45:56 +02:00
Yuri Kuznetsov
b53378a1d3 type fixes 2022-03-12 19:44:25 +02:00
Yuri Kuznetsov
ceb436971d type fixes 2022-03-12 19:20:57 +02:00
Yuri Kuznetsov
9522446955 fixes 2022-03-12 15:15:28 +02:00
Yuri Kuznetsov
3eedeef605 type fixes 2022-03-12 15:02:07 +02:00
Yuri Kuznetsov
07f49c56ff type fixes 2022-03-12 14:49:28 +02:00
Yuri Kuznetsov
5031b17e8a type fixes 2022-03-12 12:38:14 +02:00
Yuri Kuznetsov
42642de0e6 type fixes 2022-03-12 10:59:30 +02:00
Yuri Kuznetsov
b4c5596b54 type fixes 2022-03-12 10:29:24 +02:00
Yuri Kuznetsov
cbb5aaa6dd type fixes 2022-03-11 21:31:06 +02:00
Yuri Kuznetsov
2383194f07 type fixes 2022-03-11 18:53:21 +02:00
Yuri Kuznetsov
21cbf390fd fix 2022-03-11 16:58:24 +02:00
Yuri Kuznetsov
db2c7f2c7b type fixes 2022-03-11 16:51:18 +02:00
Yuri Kuznetsov
e7994caf72 type fixes 2022-03-11 16:36:31 +02:00
Yuri Kuznetsov
f775f0467b type fixes 2022-03-11 14:44:38 +02:00
Yuri Kuznetsov
fd5c7763bc type fixes 2022-03-11 14:29:15 +02:00
Yuri Kuznetsov
d34c8d1918 type fixes 2022-03-11 14:09:17 +02:00
Yuri Kuznetsov
40d62c4213 type fixes 2022-03-11 13:40:35 +02:00
Yuri Kuznetsov
a12031f7bc type fixes 2022-03-11 13:26:25 +02:00
Yuri Kuznetsov
15b04590af fix 2022-03-11 13:18:42 +02:00
Yuri Kuznetsov
2e75c2815e fix 2022-03-11 13:09:33 +02:00
Yuri Kuznetsov
8677229785 type fixes 2022-03-11 13:07:31 +02:00
Yuri Kuznetsov
71193a9071 type fix 2022-03-11 12:52:11 +02:00
Yuri Kuznetsov
cefc0e9bdf type fixes 2022-03-11 12:42:03 +02:00
Yuri Kuznetsov
cf41312a01 type fixes 2022-03-11 12:24:17 +02:00
Yuri Kuznetsov
457b79f0a0 fix 2022-03-10 19:53:47 +02:00
Yuri Kuznetsov
d3f4131353 type fixes 2022-03-10 19:41:27 +02:00
Yuri Kuznetsov
b07ef24eea type fixes 2022-03-10 19:13:59 +02:00
Yuri Kuznetsov
8fd430b784 type fixes 2022-03-10 19:01:27 +02:00
Yuri Kuznetsov
593bf44b29 type fixes 2022-03-10 18:29:14 +02:00
Yuri Kuznetsov
1578ed8d8f fix 2022-03-10 17:23:13 +02:00
Yuri Kuznetsov
ef17859145 type fixes 2022-03-10 17:05:30 +02:00
Yuri Kuznetsov
3e8d2f8037 type fixes 2022-03-10 16:59:37 +02:00
Yuri Kuznetsov
9077c00386 type fixes 2022-03-10 14:22:12 +02:00
Yuri Kuznetsov
7212e0ed20 test fix 2022-03-10 13:36:26 +02:00
Yuri Kuznetsov
db92247b65 fix 2022-03-10 13:30:34 +02:00
Yuri Kuznetsov
daf86f89da type fixes 2022-03-10 13:25:56 +02:00
Yuri Kuznetsov
4ffe89bb4a type fixes 2022-03-10 13:21:33 +02:00
Yuri Kuznetsov
19e769d107 type fixes 2022-03-10 13:03:27 +02:00
Yuri Kuznetsov
8cc4ffdd80 type fixes 2022-03-10 12:49:44 +02:00
Yuri Kuznetsov
8f6b418f03 type fixes 2022-03-10 12:39:04 +02:00
Yuri Kuznetsov
00e6b710f3 type fixes 2022-03-10 12:34:07 +02:00
Yuri Kuznetsov
d5ee58cbbc type fixes 2022-03-10 12:17:04 +02:00
Yuri Kuznetsov
3ffebd2d8d type fixes 2022-03-10 11:55:25 +02:00
Yuri Kuznetsov
1fd96cc423 css fix 2022-03-09 13:49:51 +02:00
Yuri Kuznetsov
bcadb93f66 type fixes 2022-03-09 13:44:17 +02:00
Yuri Kuznetsov
ba28639f11 fix 2022-03-09 13:29:06 +02:00
Yuri Kuznetsov
60bca1635e type fixes 2022-03-09 13:25:19 +02:00
Yuri Kuznetsov
908caa7009 type fixes 2022-03-09 12:34:24 +02:00
Yuri Kuznetsov
896e1f7119 type fixes 2022-03-09 12:28:21 +02:00
Yuri Kuznetsov
07b42b48a3 update phpstan 2022-03-09 12:06:33 +02:00
Yuri Kuznetsov
196488f92d fixes 2022-03-09 12:06:26 +02:00
Yuri Kuznetsov
5c811b1861 type fixes 2022-03-09 11:44:42 +02:00
Yuri Kuznetsov
7300bec9c7 fix 2022-03-08 21:35:54 +02:00
Yuri Kuznetsov
ffbfe1ca5a type fixes 2022-03-08 21:34:09 +02:00
Yuri Kuznetsov
7150f49634 type fixes 2022-03-08 21:28:17 +02:00
Yuri Kuznetsov
316ca559bd cs fix 2022-03-08 21:28:07 +02:00
Yuri Kuznetsov
17c2204dd3 type fixes 2022-03-08 21:17:23 +02:00
Yuri Kuznetsov
17728b76f1 type fixes 2022-03-08 20:02:20 +02:00
Yuri Kuznetsov
b0920bf63f fix 2022-03-08 16:28:40 +02:00
Yuri Kuznetsov
2731e6cb8e type fixes 2022-03-08 16:23:06 +02:00
Yuri Kuznetsov
bbc3e9c196 type fixes 2022-03-08 14:53:30 +02:00
Yuri Kuznetsov
4e4186ebf2 type fixes 2022-03-08 14:52:06 +02:00
Yuri Kuznetsov
1e9648256f type fixes 2022-03-08 14:44:55 +02:00
Yuri Kuznetsov
3166bc92b9 type fixes 2022-03-08 14:25:59 +02:00
Yuri Kuznetsov
52c8b3c312 type fixes 2022-03-08 14:06:43 +02:00
Yuri Kuznetsov
08c381cc90 Merge branch 'fix' 2022-03-08 13:37:49 +02:00
Yuri Kuznetsov
919242910d fix bool filter any 2022-03-08 13:37:36 +02:00
Yuri Kuznetsov
03d68032bf fix bool filter any 2022-03-08 13:36:32 +02:00
Yuri Kuznetsov
5e4c076b87 type fixes 2022-03-08 12:51:53 +02:00
Yuri Kuznetsov
b150d84932 type fixes 2022-03-08 12:51:31 +02:00
Yuri Kuznetsov
f5a709fd56 type fixes 2022-03-08 12:14:42 +02:00
Yuri Kuznetsov
b1cab62b95 type fixes 2022-03-08 12:09:16 +02:00
Yuri Kuznetsov
b5bef88a8d category disable children link 2022-03-08 09:27:30 +02:00
Yuri Kuznetsov
0e8b9e950b fix 2022-03-08 09:19:36 +02:00
Yuri Kuznetsov
3e021cd3aa type fixes 2022-03-07 13:50:53 +02:00
Yuri Kuznetsov
98022fdb79 type fixes 2022-03-07 13:27:04 +02:00
Yuri Kuznetsov
687187c69c type fixes 2022-03-07 13:25:00 +02:00
Yuri Kuznetsov
17ca4fa69e type fixes 2022-03-07 13:15:29 +02:00
Yuri Kuznetsov
3546ade6ab type fixes 2022-03-07 13:11:07 +02:00
Yuri Kuznetsov
78c5ec8a0c type fixes 2022-03-07 12:11:33 +02:00
Yuri Kuznetsov
d9e2acbf92 type fixes 2022-03-06 19:29:44 +02:00
Yuri Kuznetsov
fb5034b276 type fixes 2022-03-06 18:27:41 +02:00
Yuri Kuznetsov
1898ccbd6b type fixes 2022-03-06 17:58:44 +02:00
Yuri Kuznetsov
a635bc246a type fixes 2022-03-06 17:55:39 +02:00
Yuri Kuznetsov
642b63d68e type fix 2022-03-06 16:03:10 +02:00
Yuri Kuznetsov
d7ed77396c type fixes 2022-03-06 16:02:04 +02:00
Yuri Kuznetsov
205ad80e51 type fixes 2022-03-06 15:48:57 +02:00
Yuri Kuznetsov
8592a411ee type fixes 2022-03-06 15:46:23 +02:00
Yuri Kuznetsov
61d78e8f76 typo fix 2022-03-06 14:58:35 +02:00
Yuri Kuznetsov
bad19eea2e fix 2022-03-06 14:55:57 +02:00
Yuri Kuznetsov
16ffca9590 type fixes 2022-03-06 14:53:16 +02:00
Yuri Kuznetsov
846e3eb01a type fixes 2022-03-06 14:33:11 +02:00
Yuri Kuznetsov
feeda48844 type fixes 2022-03-06 14:29:41 +02:00
Yuri Kuznetsov
9e4c555ab1 type fixes 2022-03-06 14:21:55 +02:00
Yuri Kuznetsov
dbf20bfff6 type fixes 2022-03-06 13:04:41 +02:00
Yuri Kuznetsov
9449d8364b type fixes 2022-03-06 10:34:46 +02:00
Yuri Kuznetsov
03131507bc type fixes 2022-03-06 10:31:54 +02:00
Yuri Kuznetsov
0b0a1943d0 type fixes 2022-03-06 10:23:45 +02:00
Yuri Kuznetsov
4d5899ef55 type fixes 2022-03-06 10:19:45 +02:00
Yuri Kuznetsov
93ddee9eee type fixes 2022-03-06 10:14:03 +02:00
Yuri Kuznetsov
90e435f495 type fixes 2022-03-06 10:03:59 +02:00
Yuri Kuznetsov
7da39f4228 type fixes 2022-03-05 21:42:53 +02:00
Yuri Kuznetsov
b7025bf834 type fixes 2022-03-05 18:01:43 +02:00
Yuri Kuznetsov
bc4dbacafb type fixes 2022-03-05 17:25:36 +02:00
Yuri Kuznetsov
80c2a69d39 type fixes 2022-03-05 17:08:24 +02:00
Yuri Kuznetsov
36e59d3d61 type fix 2022-03-05 15:59:32 +02:00
Yuri Kuznetsov
37f8247bbf type fixes 2022-03-05 14:41:49 +02:00
Yuri Kuznetsov
ead8f77267 fix test 2022-03-05 12:47:32 +02:00
Yuri Kuznetsov
b465d88531 fix 2022-03-05 12:30:00 +02:00
Yuri Kuznetsov
a2e37e05a6 type fixes 2022-03-05 12:10:52 +02:00
Yuri Kuznetsov
518e57e316 css fix 2022-03-04 13:15:21 +02:00
Yuri Kuznetsov
258d2f03f2 fix css 2022-03-04 13:07:44 +02:00
Yuri Kuznetsov
1b212b27d7 css fix 2022-03-04 13:06:33 +02:00
Yuri Kuznetsov
2e927fd4dc css fix 2022-03-04 12:55:58 +02:00
Yuri Kuznetsov
cbc58e2ebf css fix 2022-03-04 12:32:45 +02:00
Yuri Kuznetsov
a2fd0dc985 css fix 2022-03-04 12:29:05 +02:00
OSAMA BASHIR
a89a399b87 Update select-icon.js (#2242) 2022-03-03 19:58:17 +02:00
Yuri Kuznetsov
bb018f6a0f css fix 2022-03-03 13:32:14 +02:00
Yuri Kuznetsov
6e01ac50c8 fix css 2022-03-03 13:23:38 +02:00
Yuri Kuznetsov
50c5f5974d fix css 2022-03-03 12:49:52 +02:00
Yuri Kuznetsov
fce940a291 email filter refactoring and fix 2022-03-02 13:56:40 +02:00
Yuri Kuznetsov
e08459d1c6 Merge branch 'fix' 2022-03-01 21:21:47 +02:00
Yuri Kuznetsov
5b6889d554 fix kanban scroll 2022-03-01 21:21:18 +02:00
Yuri Kuznetsov
80babbca13 css fixes 2022-03-01 20:40:50 +02:00
Yuri Kuznetsov
7208966e1d update flotr 2022-02-23 16:52:43 +02:00
Yuri Kuznetsov
48c1a5d6d3 type fixes 2022-02-22 17:32:41 +02:00
Yuri Kuznetsov
930f45b93a disable hooks for extensions 2022-02-22 13:46:39 +02:00
Yuri Kuznetsov
992fad8102 css fix 2022-02-22 13:02:48 +02:00
Yuri Kuznetsov
420662132c fix css 2022-02-22 12:39:23 +02:00
Yuri Kuznetsov
d54e77a63f type fixes 2022-02-22 12:29:11 +02:00
Yuri Kuznetsov
0b60fbbb59 getEntityType final 2022-02-22 12:00:44 +02:00
Yuri Kuznetsov
0f94a7b65e fix link multiple duplicator 2022-02-21 17:23:59 +02:00
Yuri Kuznetsov
f8bbc0918c type fixes 2022-02-21 17:08:26 +02:00
Yuri Kuznetsov
6e5b4b1483 type fixes 2022-02-21 16:10:08 +02:00
Yuri Kuznetsov
15130fbe28 type fixes 2022-02-21 15:31:39 +02:00
Yuri Kuznetsov
27f0d9fb86 type fixes 2022-02-21 14:18:24 +02:00
Yuri Kuznetsov
ecf7dc54e0 type fixes 2022-02-21 13:34:19 +02:00
Yuri Kuznetsov
0598e82196 type fixes 2022-02-21 13:27:00 +02:00
Yuri Kuznetsov
32abc4b554 type fixes 2022-02-21 12:45:42 +02:00
Yuri Kuznetsov
d499719c08 typo fix 2022-02-21 12:17:01 +02:00
Yuri Kuznetsov
c105af939f dark iframe fallback 2022-02-21 11:26:04 +02:00
Yuri Kuznetsov
444245d2e1 acl support portal user check from non-portal app 2022-02-18 15:31:00 +02:00
Yuri Kuznetsov
63aaa2fbb0 select maanger factory use acl provider 2022-02-18 13:38:11 +02:00
Yuri Kuznetsov
3da9c3da8d css fix 2022-02-18 12:02:15 +02:00
Yuri Kuznetsov
381524203b calendar no shade transparent 2022-02-18 11:47:49 +02:00
Yuri Kuznetsov
347a8aa660 fix colors 2022-02-18 11:44:03 +02:00
Yuri Kuznetsov
4a83eb125d fix css 2022-02-18 11:36:22 +02:00
Yuri Kuznetsov
bfddc4ba90 fix 2022-02-17 18:24:45 +02:00
Yuri Kuznetsov
932e5ce461 style fix 2022-02-17 17:55:46 +02:00
Yuri Kuznetsov
fb45af1048 css fix 2022-02-17 17:34:43 +02:00
Yuri Kuznetsov
5aa154459d type fix 2022-02-17 17:14:31 +02:00
Yuri Kuznetsov
41139f52c8 type fix 2022-02-17 17:11:10 +02:00
Yuri Kuznetsov
e5a0774e3e type fix 2022-02-17 16:53:09 +02:00
Yuri Kuznetsov
0f020bb3ba type fix 2022-02-17 13:59:49 +02:00
Yuri Kuznetsov
c3d1c773e0 type fixes 2022-02-17 13:25:25 +02:00
Yuri Kuznetsov
38dd599b1e fix 2022-02-17 12:00:59 +02:00
Yuri Kuznetsov
701cc2a6d7 Merge branch 'fix' 2022-02-17 11:34:58 +02:00
Yuri Kuznetsov
fc9e06d7aa fix 2022-02-17 11:34:52 +02:00
Yuri Kuznetsov
ba10c9278f css fix 2022-02-17 11:31:46 +02:00
Yuri Kuznetsov
2a0b645a2d css fix 2022-02-17 11:25:41 +02:00
Yuri Kuznetsov
c324b63917 dark theme fixes 2022-02-17 11:21:43 +02:00
Yuri Kuznetsov
da425df98f fix css 2022-02-16 10:54:15 +02:00
Yuri Kuznetsov
005356d6c3 dark theme fixes 2022-02-16 10:52:48 +02:00
Yuri Kuznetsov
0d1cc3dac9 dark theme changes 2022-02-16 10:43:36 +02:00
Yuri Kuznetsov
19ae21d6b3 fix package 2022-02-16 09:58:48 +02:00
Yuri Kuznetsov
4d1a2ae4df css fix 2022-02-15 15:58:29 +02:00
Yuri Kuznetsov
a7d8d9b0e0 css fix 2022-02-15 15:54:25 +02:00
Yuri Kuznetsov
98922f0b84 varchar email address field 2022-02-15 13:21:35 +02:00
Yuri Kuznetsov
5784c79f9f cs fix 2022-02-15 12:48:54 +02:00
Yuri Kuznetsov
b027b36b54 ref 2022-02-15 12:41:57 +02:00
Yuri Kuznetsov
91100974c3 ref 2022-02-15 11:55:34 +02:00
Taras Machyshyn
1f6300e3a4 Installation: Fix displaying day of week 2022-02-11 17:17:14 +02:00
Yuri Kuznetsov
94b15991ac object function changes 2022-02-11 17:11:52 +02:00
Taras Machyshyn
3b976b6d26 Display upgrade statuses 2022-02-11 16:35:51 +02:00
Yuri Kuznetsov
90a18de806 object clear 2022-02-11 13:51:14 +02:00
Yuri Kuznetsov
0e5ff9f64a object functions 2022-02-11 13:44:56 +02:00
Yuri Kuznetsov
3fed1a5ae8 fix 2022-02-11 13:01:55 +02:00
Yuri Kuznetsov
3b414d1077 use npm ci 2022-02-11 12:28:16 +02:00
Yuri Kuznetsov
4cb67cd4df dark theme fix 2022-02-10 17:30:56 +02:00
Yuri Kuznetsov
be632b485d activities dashlet rerender fix 2022-02-10 17:25:43 +02:00
Yuri Kuznetsov
7edf109743 cs fix 2022-02-10 17:24:29 +02:00
Yuri Kuznetsov
ad8ee0e8ed don't re-render record list dashlet if collection not changed 2022-02-10 17:16:08 +02:00
Yuri Kuznetsov
9b9f1e84d5 cs fix 2022-02-10 16:53:21 +02:00
Yuri Kuznetsov
fba89354b2 type fix 2022-02-10 13:51:58 +02:00
Yuri Kuznetsov
45b3ec5cde fix 2022-02-10 13:45:15 +02:00
Taras Machyshyn
095f82df1c 2022 year 2022-02-10 12:12:23 +02:00
Yuri Kuznetsov
008a37701f address field empty null 2022-02-09 17:43:15 +02:00
Yuri Kuznetsov
f563194445 fix calendar dark theme 2022-02-09 17:21:17 +02:00
Yuri Kuznetsov
38360e7e78 formula field insert function position after opening bracket 2022-02-09 16:41:10 +02:00
Yuri Kuznetsov
c30b907aa0 npm version restriction 2022-02-09 14:28:48 +02:00
Yuri Kuznetsov
7ec559ea42 fix integration test workflow 2022-02-09 14:23:11 +02:00
Yuri Kuznetsov
91aeacbf35 formula null coalescing 2022-02-09 12:59:14 +02:00
Yuri Kuznetsov
223304bc63 formula parse int parse float 2022-02-09 11:53:27 +02:00
Yuri Kuznetsov
a4910e5a84 Merge branch 'fix' 2022-02-09 11:37:14 +02:00
Arkadiy
34f5d9d5b1 fix process setup handlers (#2228) 2022-02-09 09:37:06 +02:00
Yuri Kuznetsov
be62327509 string split function 2022-02-08 17:18:14 +02:00
Yuri Kuznetsov
9832bb54f9 update to npm 8 and update minimist 2022-02-08 15:53:29 +02:00
Yuri Kuznetsov
09b0d68786 cleanup 2022-02-08 14:15:05 +02:00
Yuri Kuznetsov
99da14b29b remove grunt-chmod 2022-02-08 13:58:56 +02:00
Yuri Kuznetsov
e4102aa1f7 package update 2022-02-08 13:21:41 +02:00
Yuri Kuznetsov
00f63b87a3 update npm packages 2022-02-08 12:40:56 +02:00
Yuri Kuznetsov
692940047e Merge branch 'fix' 2022-02-08 11:57:27 +02:00
Yuri Kuznetsov
cdf8a43b28 fix forward email 2022-02-08 11:55:57 +02:00
Yuri Kuznetsov
d24ad99f26 Merge branch 'fix' 2022-02-08 11:51:57 +02:00
Taras Machyshyn
b9b62e9f85 Test fixes 2022-02-08 11:49:09 +02:00
Yuri Kuznetsov
e3d53056d1 fix followed 2022-02-08 11:48:53 +02:00
Yuri Kuznetsov
75e8cf538a fix kanbanStatusIgnoreList 2022-02-08 11:48:28 +02:00
Yuri Kuznetsov
80c2944f0e v 2022-02-07 14:29:42 +02:00
Yuri Kuznetsov
b3f58b8002 time part ignore bad formatted value 2022-02-07 14:28:17 +02:00
Yuri Kuznetsov
83634706c2 label fix 2022-02-04 17:48:39 +02:00
Yuri Kuznetsov
44b96270a3 float field: decimal places 2022-02-04 17:44:14 +02:00
Yuri Kuznetsov
ecffd310b7 fix 2022-02-04 17:33:12 +02:00
Yuri Kuznetsov
8d2238e04a meeting/call duplicate from modal view 2022-02-04 14:49:49 +02:00
Yuri Kuznetsov
d6f0bc063e cleanup 2022-02-04 14:36:00 +02:00
Yuri Kuznetsov
4bec0b4795 delete entity from config params 2022-02-04 14:15:08 +02:00
Yuri Kuznetsov
a90182a7b1 fix css kanban 2022-02-04 12:06:48 +02:00
Yuri Kuznetsov
cf44d4f154 update package 2022-02-04 11:59:52 +02:00
Yuri Kuznetsov
231720a9a0 update package 2022-02-04 11:54:47 +02:00
Yuri Kuznetsov
26ab4abdec update packages 2022-02-04 11:46:21 +02:00
Yuri Kuznetsov
daab13b78a package updates 2022-02-04 11:41:16 +02:00
Yuri Kuznetsov
27946bcbac foreing field skip disabled link 2022-02-03 18:18:39 +02:00
Yuri Kuznetsov
ee636131f5 delete foreign field on link removal 2022-02-03 18:14:23 +02:00
Yuri Kuznetsov
71f5205c28 kanbanMinColumnWidth 2022-02-03 17:40:26 +02:00
Yuri Kuznetsov
f9b46b3b95 conversionDisabled 2022-02-03 17:02:44 +02:00
Yuri Kuznetsov
5d6e1319c0 fix draft email acl 2022-02-03 14:25:21 +02:00
Yuri Kuznetsov
cdbf680788 fix email access checker 2022-02-03 14:12:58 +02:00
Yuri Kuznetsov
8118e27bd8 fix error msg 2022-02-03 14:00:48 +02:00
Yuri Kuznetsov
5006e2e4fa fix email account 2022-02-03 13:51:48 +02:00
Yuri Kuznetsov
6b85fb95a2 fix modal 2022-02-03 13:47:22 +02:00
Yuri Kuznetsov
395fda2c5a zend bridge 2022-02-03 13:30:30 +02:00
Yuri Kuznetsov
9408a1637d modal collapse 2022-02-03 12:17:56 +02:00
Yuri Kuznetsov
09de0e3664 cs fix 2022-02-02 12:19:17 +02:00
Yuri Kuznetsov
e8b3582040 css fix 2022-02-01 17:13:31 +02:00
Yuri Kuznetsov
3bff5e3fb7 cleanup 2022-02-01 17:07:53 +02:00
Yuri Kuznetsov
e886293495 css fix 2022-02-01 17:07:20 +02:00
Yuri Kuznetsov
56d57c3fee color fix 2022-02-01 16:47:52 +02:00
Yuri Kuznetsov
03ade6eabc dark theme changes 2022-02-01 16:35:04 +02:00
Yuri Kuznetsov
732ed8924d fix is read 2022-02-01 14:15:04 +02:00
Yuri Kuznetsov
87051573d8 update npm packages 2022-02-01 13:42:01 +02:00
Yuri Kuznetsov
bd66449507 fix npm dep 2022-02-01 13:38:57 +02:00
Yuri Kuznetsov
e899a82840 fix npm deps 2022-02-01 13:37:05 +02:00
Yuri Kuznetsov
aba0c21f71 update grunt-replace 2022-02-01 12:52:03 +02:00
Yuri Kuznetsov
03838cfae8 npm update fixes 2022-02-01 12:48:48 +02:00
Yuri Kuznetsov
61772b8e40 fix workflow 2022-02-01 12:40:34 +02:00
Yuri Kuznetsov
b445de322c compose email full form 2022-02-01 12:37:07 +02:00
Yuri Kuznetsov
db2b8b63be cs fix 2022-02-01 12:04:11 +02:00
Yuri Kuznetsov
d355db6bb1 email fixes 2022-02-01 11:45:31 +02:00
Yuri Kuznetsov
a529edc4b2 email edit button send 2022-02-01 11:39:04 +02:00
Yuri Kuznetsov
d1effdae81 email draft improvements 2022-01-31 17:24:07 +02:00
Yuri Kuznetsov
a7b959a1d9 email send button left 2022-01-31 16:59:05 +02:00
Yuri Kuznetsov
951f026f8f cs fix 2022-01-31 16:02:17 +02:00
Yuri Kuznetsov
1c8506eee4 email draft without to address 2022-01-31 15:44:58 +02:00
Yuri Kuznetsov
22f309e02a php parse bump 2022-01-31 14:05:40 +02:00
Yuri Kuznetsov
4d9d9e4569 lock change 2022-01-31 14:00:51 +02:00
dependabot[bot]
9e1cbc5fc0 Bump path-parse from 1.0.6 to 1.0.7 (#2216)
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-01-31 13:49:37 +02:00
Yuri Kuznetsov
6ba2733492 fuix 2022-01-31 13:44:14 +02:00
Yuri Kuznetsov
35d0ebe974 fix branch 2022-01-31 13:43:52 +02:00
Yuri Kuznetsov
5e8efcd269 integration test on fix 2022-01-31 13:41:54 +02:00
Yuri Kuznetsov
2440eb5e95 Merge branch 'hotfix/7.0.10' 2022-01-31 13:22:03 +02:00
Yuri Kuznetsov
b8d2f9de30 action renderer 2022-01-28 16:54:19 +02:00
Yuri Kuznetsov
7a2ff40776 cleanup password change requests 2022-01-28 16:31:11 +02:00
Yuri Kuznetsov
56fff07662 keywords 2022-01-28 16:26:40 +02:00
Yuri Kuznetsov
434b4f880f fix phpstan ext 2022-01-28 16:22:20 +02:00
Yuri Kuznetsov
f596d12e02 send access info formula 2022-01-28 16:12:37 +02:00
Yuri Kuznetsov
c4be84af32 password change link 2022-01-28 13:39:28 +02:00
Yuri Kuznetsov
a2b2118f9f change scheduling 2022-01-27 18:15:52 +02:00
Yuri Kuznetsov
7fee372f3d fix link multiple factory for php 8.1 2022-01-27 18:15:22 +02:00
Yuri Kuznetsov
e3fe496321 move 2022-01-27 12:52:40 +02:00
Yuri Kuznetsov
5c890d3e0e fix workflow 2022-01-27 12:31:51 +02:00
Yuri Kuznetsov
496d132c23 fix edit disabled 2022-01-27 12:29:17 +02:00
Yuri Kuznetsov
68fb2d45e1 Update README.md 2022-01-26 22:11:00 +02:00
Yuri Kuznetsov
e44b0d2c22 fix 2022-01-26 18:07:19 +02:00
Yuri Kuznetsov
5e87a410c8 integration testing workflow 2022-01-26 18:05:26 +02:00
Yuri Kuznetsov
6f34b040cf fix modal backdrop 2022-01-26 14:57:13 +02:00
Yuri Kuznetsov
0d0ad8b581 fix confirm leaveout backdrop click 2022-01-26 14:29:41 +02:00
Yuri Kuznetsov
a3eac057fc modal dialog backdrop 2022-01-26 13:10:08 +02:00
Yuri Kuznetsov
489b3a7629 formula sandbox save entity 2022-01-26 12:27:57 +02:00
Yuri Kuznetsov
45aff4a7b7 detail layout fields incompatibility 2022-01-26 12:19:09 +02:00
Yuri Kuznetsov
4653caef47 array functions accept null 2022-01-25 17:00:08 +02:00
Yuri Kuznetsov
1d9b988206 integration test env config 2022-01-25 16:35:11 +02:00
Yuri Kuznetsov
ebedd6d722 fix 2022-01-25 15:45:44 +02:00
Yuri Kuznetsov
b0311d1610 type fix 2022-01-25 14:24:14 +02:00
Yuri Kuznetsov
158573f63e type fixes 2022-01-25 14:20:02 +02:00
Yuri Kuznetsov
93172f42b7 updates 2022-01-25 13:53:55 +02:00
Yuri Kuznetsov
b3476fe3dd update laminas 2022-01-25 13:49:11 +02:00
Yuri Kuznetsov
1f85781c68 test 8.1 2022-01-25 13:34:19 +02:00
Yuri Kuznetsov
595548acf0 cleanup 2022-01-25 13:30:10 +02:00
Yuri Kuznetsov
a32fffb36d ci 2022-01-25 13:29:42 +02:00
Taras Machyshyn
3de5961c86 Test fixes 2022-01-24 15:44:58 +02:00
Yuri Kuznetsov
1b4727917b Merge branch 'hotfix/7.0.10' 2022-01-24 12:14:52 +02:00
Yuri Kuznetsov
499cf36edf fix followed 2022-01-24 12:13:57 +02:00
Yuri Kuznetsov
bb1856a47e Merge branch 'hotfix/7.0.10' 2022-01-21 16:53:41 +02:00
Yuri Kuznetsov
0226a6a4f7 fix kanbanStatusIgnoreList 2022-01-21 16:53:25 +02:00
Yuri Kuznetsov
6c9a542b9c entity manager edit page 2022-01-21 16:43:50 +02:00
Yuri Kuznetsov
59ae933886 Merge branch 'stable' 2022-01-21 12:43:52 +02:00
Yuri Kuznetsov
b22464c02f v 2022-01-21 10:58:42 +02:00
Yuri Kuznetsov
4615781af8 style fix 2022-01-20 14:30:27 +02:00
Yuri Kuznetsov
ce0efea447 fix admin labels 2022-01-20 14:10:51 +02:00
Yuri Kuznetsov
378a2c6902 fix 2022-01-20 13:43:54 +02:00
Yuri Kuznetsov
ab3fc73a18 dev 2022-01-20 13:30:37 +02:00
Yuri Kuznetsov
b3c56acd15 dev 2022-01-20 12:43:08 +02:00
Yuri Kuznetsov
2c9b60dbec dev 2022-01-19 17:28:02 +02:00
Yuri Kuznetsov
620a18cd72 dev 2022-01-19 17:09:48 +02:00
Yuri Kuznetsov
ba832b8ad9 dev 2022-01-19 17:03:40 +02:00
Yuri Kuznetsov
bcfffd3527 target list customizable 2022-01-19 12:41:21 +02:00
Yuri Kuznetsov
022da56bf4 change 2022-01-19 12:13:21 +02:00
Yuri Kuznetsov
12549e2587 type fix 2022-01-18 17:43:26 +02:00
Yuri Kuznetsov
57ab075d2f type fixes 2022-01-18 17:39:27 +02:00
Yuri Kuznetsov
1510322708 refactoring 2022-01-18 16:27:22 +02:00
Yuri Kuznetsov
22c06c88dd fix 2022-01-18 14:00:03 +02:00
Yuri Kuznetsov
7a4b20269d cs fix 2022-01-18 13:52:28 +02:00
Yuri Kuznetsov
79d76d8147 cleanup 2022-01-18 13:52:06 +02:00
Yuri Kuznetsov
2bf2e4ef3d update marked 2022-01-18 13:40:42 +02:00
Yuri Kuznetsov
61ec16ae12 fix 2022-01-18 13:05:18 +02:00
Yuri Kuznetsov
8415307221 cs fix 2022-01-18 12:58:43 +02:00
Yuri Kuznetsov
6da466f9c4 import admin link 2022-01-18 12:24:12 +02:00
Yuri Kuznetsov
210ac2ef2a fix 2022-01-18 12:06:51 +02:00
Yuri Kuznetsov
988f8090f2 fix 2022-01-18 12:02:36 +02:00
Yuri Kuznetsov
e2db825fc2 cs fix 2022-01-17 17:34:17 +02:00
Yuri Kuznetsov
cc9ed3f365 admin links 2022-01-17 17:24:09 +02:00
Yuri Kuznetsov
0763b71396 admin link 2022-01-17 16:27:44 +02:00
Yuri Kuznetsov
af2158f647 fix 2022-01-17 16:06:36 +02:00
Yuri Kuznetsov
4ad636a767 fix 2022-01-17 14:52:20 +02:00
Yuri Kuznetsov
dffb484fff formula fetch null 2022-01-17 13:51:05 +02:00
Yuri Kuznetsov
6582917daf formula sandbox 2022-01-17 12:58:16 +02:00
Yuri Kuznetsov
7bd109eca6 cs fix 2022-01-14 13:07:11 +02:00
Yuri Kuznetsov
c0d85864ce fix 2022-01-14 11:49:03 +02:00
Yuri Kuznetsov
7007d58609 fix 2022-01-13 17:57:20 +02:00
Yuri Kuznetsov
23a54a0fa4 formula strict syntax 2022-01-13 17:56:19 +02:00
Yuri Kuznetsov
491a66ac4c formula strict syntax 2022-01-13 17:49:36 +02:00
Yuri Kuznetsov
e5c3bfb528 formula more strict syntax 2022-01-13 17:36:05 +02:00
Yuri Kuznetsov
f807bdee42 fix 2022-01-13 16:57:29 +02:00
Yuri Kuznetsov
67b3462361 fix 2022-01-13 16:53:00 +02:00
Yuri Kuznetsov
cd1eccd998 fix 2022-01-13 16:19:44 +02:00
Yuri Kuznetsov
63b108b18b cs fix 2022-01-13 16:17:59 +02:00
Yuri Kuznetsov
3907e2d84a fix 2022-01-13 14:45:53 +02:00
Yuri Kuznetsov
4deeac9513 formula check syntax 2022-01-13 14:33:08 +02:00
Yuri Kuznetsov
4c11bf663b fix 2022-01-13 13:55:12 +02:00
Yuri Kuznetsov
d8649cb305 type fix 2022-01-13 13:19:58 +02:00
Yuri Kuznetsov
eff2a022bf attachment preview non dragable 2022-01-13 12:57:39 +02:00
Yuri Kuznetsov
ad61b457d8 cs fix 2022-01-13 12:53:32 +02:00
Yuri Kuznetsov
22c3c92792 entity manager formula ui improvement 2022-01-13 12:36:34 +02:00
Yuri Kuznetsov
5919016aad fix update note 2022-01-12 17:45:00 +02:00
Yuri Kuznetsov
14c12a2528 cs fix 2022-01-12 17:16:27 +02:00
Yuri Kuznetsov
bca1f08f05 color fix 2022-01-12 16:28:03 +02:00
Yuri Kuznetsov
2ce656731d fix label 2022-01-12 14:32:30 +02:00
Yuri Kuznetsov
6d7fb4939d fix export 2022-01-12 14:27:22 +02:00
Yuri Kuznetsov
3cb8deab2c export in idle 2022-01-12 14:07:38 +02:00
Yuri Kuznetsov
b501007d44 cleanup 2022-01-11 18:27:03 +02:00
Yuri Kuznetsov
70f7312f20 fix 2022-01-11 18:26:38 +02:00
Yuri Kuznetsov
b7b5b1b3cb fix 2022-01-11 16:43:32 +02:00
Yuri Kuznetsov
44001d9764 Merge branch 'hotfix/7.0.9' 2022-01-11 13:04:09 +02:00
Yuri Kuznetsov
5dcfbf00d2 fix email address 2022-01-11 13:03:48 +02:00
Yuri Kuznetsov
8ca52259cd Merge branch 'hotfix/7.0.9' 2022-01-11 12:25:05 +02:00
Yuri Kuznetsov
f4753f773f modal backdrop fix 2022-01-11 12:22:51 +02:00
Yuri Kuznetsov
0f3f9a827b mail flags fix 2022-01-11 11:41:30 +02:00
Yuri Kuznetsov
a90745aded test 2022-01-11 11:20:35 +02:00
Yuri Kuznetsov
96a1ab6ad6 cleanup 2022-01-10 18:07:17 +02:00
Yuri Kuznetsov
f49b6a072c refactoring 2022-01-10 18:03:48 +02:00
Yuri Kuznetsov
146ca6ae2a fix 2022-01-10 17:44:10 +02:00
Yuri Kuznetsov
b775e16c1f refactoring 2022-01-10 17:39:58 +02:00
Yuri Kuznetsov
043df4bc73 select folder style fix 2022-01-10 16:39:19 +02:00
Yuri Kuznetsov
7d660f5127 fix 2022-01-10 16:23:31 +02:00
Yuri Kuznetsov
71064cd6ee cleanup 2022-01-10 14:13:27 +02:00
Yuri Kuznetsov
93f2f962e2 email refacctoring 2022-01-10 14:02:47 +02:00
Yuri Kuznetsov
8eb7f932fc refactoring 2022-01-10 12:39:14 +02:00
Yuri Kuznetsov
d2fb6edde1 refactoring 2022-01-10 11:24:10 +02:00
Yuri Kuznetsov
ed59886897 refactoring 2022-01-10 11:14:31 +02:00
Yuri Kuznetsov
07b6c64640 fix 2022-01-08 20:04:01 +02:00
Yuri Kuznetsov
420e5fa3a5 fix 2022-01-08 19:52:33 +02:00
Yuri Kuznetsov
3e12428e54 fix 2022-01-08 19:42:20 +02:00
Yuri Kuznetsov
4d2a2e9b20 cs fix 2022-01-08 19:34:15 +02:00
Yuri Kuznetsov
5650a00ab1 mail refactoring 2022-01-08 19:15:57 +02:00
Yuri Kuznetsov
2eb42a3313 fix 2022-01-06 14:57:12 +02:00
Yuri Kuznetsov
84d4d4f11b email notify fix 2022-01-06 14:36:00 +02:00
Yuri Kuznetsov
b6a9182838 Merge branch 'hotfix/7.0.9' 2022-01-06 14:26:36 +02:00
Yuri Kuznetsov
a6593f574e fix 2022-01-06 14:26:26 +02:00
Yuri Kuznetsov
d277df1e49 cleanup 2022-01-06 14:26:08 +02:00
Yuri Kuznetsov
5721f6d737 email account refactoring 2022-01-06 14:15:48 +02:00
Yuri Kuznetsov
a07b7530df Merge branch 'hotfix/7.0.9' 2022-01-06 14:15:21 +02:00
Yuri Kuznetsov
bff4e859cd fix notice 2022-01-06 14:07:57 +02:00
Yuri Kuznetsov
0944d47c47 Merge branch 'hotfix/7.0.9' 2022-01-05 17:14:33 +02:00
Yuri Kuznetsov
d725cce8a7 fix email to case attachments copy 2022-01-05 17:14:21 +02:00
Yuri Kuznetsov
a730f47ceb sms status update 2022-01-05 11:19:33 +02:00
Yuri Kuznetsov
8e3d743023 cs fix 2022-01-03 16:23:54 +02:00
Yuri Kuznetsov
cdb2b8a8a8 cs fix and text resize fix 2022-01-03 16:20:58 +02:00
Yuri Kuznetsov
a453be93be type fixes 2022-01-03 16:04:23 +02:00
Yuri Kuznetsov
3cef36da3e type fixes 2022-01-03 15:58:05 +02:00
Yuri Kuznetsov
691343c9b2 type fixes 2022-01-03 15:52:15 +02:00
Yuri Kuznetsov
2453fe9ea5 textarea resize vertical 2022-01-03 12:55:19 +02:00
Yuri Kuznetsov
c0594b80e9 css fixes 2022-01-03 12:47:43 +02:00
Yuri Kuznetsov
5239df2b95 fixes 2022-01-03 12:37:13 +02:00
Yuri Kuznetsov
0f1ac3af10 fixes 2022-01-03 12:31:11 +02:00
Yuri Kuznetsov
d5f42a46b3 array, multi-enum: don't re-render if same option list is set 2022-01-03 12:11:58 +02:00
Yuri Kuznetsov
0ae6fdbac2 cs fix 2022-01-03 12:05:43 +02:00
Yuri Kuznetsov
f214aaba2a cs fix 2022-01-03 11:50:34 +02:00
Yuri Kuznetsov
67a4208b3b dark theme fixes 2022-01-03 11:29:13 +02:00
Yuri Kuznetsov
5991bb948b drop php 7.3 2022-01-03 11:04:01 +02:00
Yuri Kuznetsov
50bfa1ae99 update doctrine 2022-01-03 10:50:55 +02:00
Yuri Kuznetsov
409f19bb29 fix acceptance status modal 2021-12-31 17:23:30 +02:00
Yuri Kuznetsov
c631dd7a0f css fix 2021-12-31 17:20:56 +02:00
Yuri Kuznetsov
db74afcfb4 css changes 2021-12-31 17:17:45 +02:00
Yuri Kuznetsov
ac6bdcc30a css fix 2021-12-30 16:39:35 +02:00
Yuri Kuznetsov
2556f89637 style fixes 2021-12-30 16:11:14 +02:00
Yuri Kuznetsov
3ec25d5a97 cs fix- 2021-12-30 16:07:01 +02:00
Yuri Kuznetsov
c9bdd8231b style fix 2021-12-30 15:54:26 +02:00
Yuri Kuznetsov
9d372155fb style fix 2021-12-30 15:49:09 +02:00
Yuri Kuznetsov
4ebdcf3637 Merge branch 'hotfix/7.0.9' 2021-12-30 15:40:33 +02:00
Eymen Elkum
150e41a26d fix folder name (#2180)
* fix folder name

* remove trim folder name on inbound
2021-12-30 15:39:28 +02:00
Yuri Kuznetsov
79c4a8351d body plain fix 2021-12-30 15:33:12 +02:00
Yuri Kuznetsov
0f6c340793 textarea disable resize 2021-12-30 14:10:20 +02:00
Yuri Kuznetsov
c7fe7ac014 wysiwyg supporting image paste 2021-12-30 13:35:29 +02:00
Yuri Kuznetsov
a0939c714c fix css 2021-12-30 13:12:46 +02:00
Yuri Kuznetsov
d57098dd50 wysiwyg duplicate and email body forward duplicate 2021-12-30 13:06:14 +02:00
Yuri Kuznetsov
4b521d1481 X-Duplicate-Source-Id 2021-12-30 12:22:03 +02:00
Yuri Kuznetsov
919cea0703 passing x-duplicate-source-id 2021-12-30 12:01:49 +02:00
Yuri Kuznetsov
6aa372c955 entity duplicator framework 2021-12-30 11:22:15 +02:00
Yuri Kuznetsov
0e873fea52 mass action notify 2021-12-29 15:53:45 +02:00
Yuri Kuznetsov
44003e8130 test 2021-12-29 15:25:29 +02:00
Yuri Kuznetsov
2a4bd851ab fixes 2021-12-29 13:23:00 +02:00
Yuri Kuznetsov
cb5fdfba85 cleanup 2021-12-29 12:51:27 +02:00
Yuri Kuznetsov
8973959910 type fix 2021-12-29 12:51:21 +02:00
Yuri Kuznetsov
383f411739 mass action testand fix 2021-12-29 12:39:08 +02:00
Taras Machyshyn
c500b30484 Notification fix 2021-12-29 12:15:39 +02:00
Yuri Kuznetsov
91fec4ff95 Merge branch 'hotfix/7.0.9' 2021-12-28 18:36:18 +02:00
Yuri Kuznetsov
5266e8eeba email address fix 2021-12-28 18:31:05 +02:00
Yuri Kuznetsov
d96bf13526 fix 2021-12-28 18:01:18 +02:00
Yuri Kuznetsov
bf017ccc8a mass action cleanup 2021-12-28 17:55:03 +02:00
Yuri Kuznetsov
c1ca41942f mass action idle 2021-12-28 17:28:52 +02:00
Yuri Kuznetsov
8c8e44b6f5 post button ux improvement 2021-12-27 11:07:46 +02:00
Yuri Kuznetsov
f95824404a css fix 2021-12-27 10:44:43 +02:00
Yuri Kuznetsov
4eecc5462b phone type change 2021-12-26 11:08:43 +02:00
Yuri Kuznetsov
3a96cbae9b chevron-righr instead of right quote 2021-12-26 11:04:54 +02:00
Yuri Kuznetsov
77f3d81f27 css fix 2021-12-25 18:19:06 +02:00
Yuri Kuznetsov
7343e08abb css fixes 2021-12-25 18:04:40 +02:00
Yuri Kuznetsov
3b7b6e9ed7 cleanup 2021-12-25 17:37:40 +02:00
Yuri Kuznetsov
70a9fd95a2 css fix 2021-12-25 17:36:43 +02:00
Yuri Kuznetsov
c0e64583e5 modal fixes 2021-12-25 16:17:53 +02:00
Yuri Kuznetsov
211f6bdc42 css fix 2021-12-24 17:55:59 +02:00
Yuri Kuznetsov
f07440f9ef css fix 2021-12-24 17:50:27 +02:00
Yuri Kuznetsov
7f37cd40eb css fix 2021-12-24 17:47:30 +02:00
Yuri Kuznetsov
b0d7b33dbc fix 2021-12-24 17:43:07 +02:00
Yuri Kuznetsov
35905aad1b fix 2021-12-24 17:38:29 +02:00
Yuri Kuznetsov
62b27475fb style changes 2021-12-24 17:35:29 +02:00
Yuri Kuznetsov
0985df234f css fix 2021-12-24 16:48:09 +02:00
Yuri Kuznetsov
a05650a41a modal fixes 2021-12-24 16:20:08 +02:00
Yuri Kuznetsov
0c0744714e modal fixes 2021-12-24 16:07:33 +02:00
Yuri Kuznetsov
cd60933525 summernote css fix 2021-12-24 15:50:07 +02:00
Yuri Kuznetsov
2d3deafcc6 ace theme tomorrows night 2021-12-24 15:36:20 +02:00
Yuri Kuznetsov
25508b932e ace dark mode 2021-12-24 15:29:26 +02:00
Yuri Kuznetsov
05d3610f5f requirePromise 2021-12-24 15:27:31 +02:00
Yuri Kuznetsov
5b0ef914c2 css fix 2021-12-24 13:44:13 +02:00
Yuri Kuznetsov
35f2ccecf5 calendar colors 2021-12-24 13:37:08 +02:00
Yuri Kuznetsov
122d759687 remove theme name translations 2021-12-24 13:03:57 +02:00
Yuri Kuznetsov
a2c94c692a dark horizontal 2021-12-24 12:59:18 +02:00
Yuri Kuznetsov
e197c6e491 css scroll 2021-12-24 12:41:52 +02:00
Yuri Kuznetsov
62ff80c1bf mass action btn fix 2021-12-24 12:10:30 +02:00
Yuri Kuznetsov
3a7cccbda2 cs fix 2021-12-24 12:01:05 +02:00
Yuri Kuznetsov
3bab92239a cs fix 2021-12-24 11:58:08 +02:00
Yuri Kuznetsov
cc0b12097d cs fix 2021-12-24 11:50:36 +02:00
Yuri Kuznetsov
fe09d91bf0 css fix list expanded dd 2021-12-24 11:35:51 +02:00
Yuri Kuznetsov
593ed7c5e0 Merge branch 'hotfix/7.0.9' 2021-12-24 11:32:25 +02:00
Yuri Kuznetsov
e161b0da19 fix list expanded dd 2021-12-24 11:29:23 +02:00
Yuri Kuznetsov
31a2ef63ec cs fix 2021-12-24 11:19:33 +02:00
Yuri Kuznetsov
facc26a795 fix css 2021-12-23 17:47:41 +02:00
Yuri Kuznetsov
fb4a4f2340 css cleanup 2021-12-23 17:38:58 +02:00
Yuri Kuznetsov
42cab04edd css fix 2021-12-23 17:25:16 +02:00
Yuri Kuznetsov
247521ba37 dark theme 2021-12-23 17:17:23 +02:00
Yuri Kuznetsov
9f932462a8 fix image 2021-12-22 16:23:17 +02:00
Yuri Kuznetsov
3f7c42a05e theme changes 2021-12-21 11:45:42 +02:00
Yuri Kuznetsov
3ca502ba6e css changes 2021-12-20 16:59:30 +02:00
Yuri Kuznetsov
8afe22f637 theme colors 2021-12-20 15:47:34 +02:00
Yuri Kuznetsov
a615eed985 Merge branch 'master' into hotfix/7.0.9 2021-12-20 15:38:14 +02:00
Yuri Kuznetsov
df56679c4e rename themes 2021-12-20 15:37:30 +02:00
Yuri Kuznetsov
23b2e87127 fix 2021-12-19 09:42:59 +02:00
Yuri Kuznetsov
9391c68ad0 fix plural link name 2021-12-19 09:10:52 +02:00
Taras Machyshyn
8a15278af2 Installation fix 2021-12-14 16:12:22 +02:00
Yuri Kuznetsov
8f2c12cba7 remove css 2021-12-13 15:49:04 +02:00
Yuri Kuznetsov
842c028fb5 css changes 2021-12-13 15:37:16 +02:00
Yuri Kuznetsov
27aae16634 cleanup 2021-12-13 15:21:39 +02:00
Yuri Kuznetsov
0206da6d4f css fix 2021-12-13 13:09:42 +02:00
Yuri Kuznetsov
687f308b40 merge 2021-12-13 12:54:11 +02:00
Eymen Elkum
20eced4373 personal & group email account: ignore internal fields from being duplicated (#2178)
Co-authored-by: Eymen Elkum <eymen@eblasoft.com.tr>
2021-12-13 12:45:03 +02:00
Yuri Kuznetsov
7d0c793e47 kanban improvements 2021-12-13 12:36:06 +02:00
Yuri Kuznetsov
ead21ea2ee kanban improvements 2021-12-13 12:11:43 +02:00
Yuri Kuznetsov
45ef1a4de5 kanban changes 2021-12-12 13:09:35 +02:00
Yuri Kuznetsov
28b866830e kanban changes 2021-12-10 17:08:51 +02:00
Yuri Kuznetsov
4d68e35f3b fix 2021-12-09 16:50:47 +02:00
Yuri Kuznetsov
12a2069fcf kanban scroll 2021-12-09 16:34:01 +02:00
Yuri Kuznetsov
b87d2459cc kanban create 2021-12-09 14:06:08 +02:00
Yuri Kuznetsov
7c1c25577c save event 2021-12-09 12:38:58 +02:00
Yuri Kuznetsov
9d6e0ba54b cs fix 2021-12-09 12:38:58 +02:00
Yuri Kuznetsov
bd3c6867b5 cs fix 2021-12-09 12:38:58 +02:00
Taras Machyshyn
28c4b8ea05 Fix typo 2021-12-09 12:18:26 +02:00
Yuri Kuznetsov
7a90e30243 fix 2021-12-09 11:37:32 +02:00
Yuri Kuznetsov
f482c41e6c custom global bool filterse 2021-12-08 16:35:58 +02:00
Yuri Kuznetsov
06ffafba10 send invitations from modal 2021-12-08 15:50:38 +02:00
Yuri Kuznetsov
2a07124d52 cs fix 2021-12-08 15:35:28 +02:00
Yuri Kuznetsov
65247b1c69 cs fix 2021-12-08 11:59:03 +02:00
Yuri Kuznetsov
10e4b7e5b6 cs fix 2021-12-08 11:52:46 +02:00
Yuri Kuznetsov
ff3e6c34ba cs fix 2021-12-08 11:50:50 +02:00
Yuri Kuznetsov
19700cfa00 cs fix 2021-12-08 11:50:32 +02:00
Yuri Kuznetsov
d0de9e5bb9 Merge branch 'hotfix/7.0.9' 2021-12-06 10:54:11 +02:00
Yuri Kuznetsov
9861653378 types 2021-12-02 18:14:46 +02:00
Yuri Kuznetsov
0a4525b75e fix 2021-12-02 16:30:22 +02:00
Yuri Kuznetsov
1c45cadcf8 fix htmlizer order related 2021-12-02 15:33:50 +02:00
Yuri Kuznetsov
83ced0d58f orm defs: no type exception 2021-12-02 12:54:17 +02:00
Yuri Kuznetsov
6ee224ffbc fix 2021-12-01 17:23:20 +02:00
Yuri Kuznetsov
a060f0732b attachment container fix 2021-12-01 15:15:06 +02:00
Yuri Kuznetsov
4e2a824b1d fix 2021-12-01 11:24:26 +02:00
Yuri Kuznetsov
85c4848614 cleanup 2021-12-01 11:16:40 +02:00
Yuri Kuznetsov
a5ca838b7a fix typo 2021-12-01 11:12:34 +02:00
Yuri Kuznetsov
1127f4b28c languageIsGlobal param 2021-11-30 16:04:20 +02:00
Yuri Kuznetsov
e68ff3c391 fix smarty for php8.1 2021-11-29 13:46:03 +02:00
Yuri Kuznetsov
c257da0e70 accept bool 1 value, fix for php 8.1 2021-11-29 13:43:07 +02:00
Yuri Kuznetsov
7669ac90ae edit fix 2021-11-26 16:14:12 +02:00
Yuri Kuznetsov
5e7ddcad1c try check usage 2021-11-26 10:48:51 +02:00
Yuri Kuznetsov
1cf773216d cs fix 2021-11-26 10:44:35 +02:00
Yuri Kuznetsov
da3283f2ba fix link one saver 2021-11-25 17:12:04 +02:00
Yuri Kuznetsov
18d6a6767b notification message support markdown 2021-11-25 13:19:58 +02:00
Yuri Kuznetsov
f8fd222e25 multiple bool filters fix 2021-11-24 12:21:55 +02:00
Yuri Kuznetsov
fd7819f76a cs fix 2021-11-24 09:09:29 +02:00
Yuri Kuznetsov
48cfedb777 fix parent 2021-11-24 09:07:51 +02:00
Yuri Kuznetsov
9220ad8baa email to case account 2021-11-23 15:16:52 +02:00
Yuri Kuznetsov
6207c8f547 attachment take into account field level 2021-11-22 11:22:56 +02:00
Yuri Kuznetsov
b9e1660f92 comment 2021-11-22 10:58:05 +02:00
Yuri Kuznetsov
8863e7da9b Merge branch 'hotfix/7.0.9' 2021-11-19 12:41:24 +02:00
Yuri Kuznetsov
3b1462ac1a complex expression field view 2021-11-19 12:40:37 +02:00
Yuri Kuznetsov
937503ab8b formula hide entity functions if no target entity type 2021-11-18 12:53:51 +02:00
Yuri Kuznetsov
b3edfba0da fix 2021-11-17 12:19:47 +02:00
Yuri Kuznetsov
01a1d26a52 cs fix 2021-11-17 12:18:27 +02:00
Yuri Kuznetsov
4662fc47e9 xlsx export: fix link one 2021-11-16 12:15:11 +02:00
Yuri Kuznetsov
5b543d778d fix 2021-11-16 12:11:21 +02:00
Yuri Kuznetsov
798f56650d person name support fix 2021-11-13 10:34:30 +02:00
Yuri Kuznetsov
864c96fe56 fixes 2021-11-13 10:29:47 +02:00
Yuri Kuznetsov
4d5eecd680 Merge branch 'hotfix/7.0.9' 2021-11-12 12:44:19 +02:00
Taras Machyshyn
db2216adb7 Fixed PDO parameters for Dbal connection 2021-11-11 15:31:11 +02:00
Yuri Kuznetsov
ae056f4a22 type 2021-11-11 12:49:20 +02:00
Yuri Kuznetsov
5178c2fbd0 orm pdo refactoring 2021-11-11 12:47:43 +02:00
Yuri Kuznetsov
4bedaef9a8 fixes 2021-11-11 12:17:21 +02:00
Yuri Kuznetsov
42d4de77ae cs fix 2021-11-11 12:17:05 +02:00
Yuri Kuznetsov
3e0a8f0af1 fix 2021-11-11 11:40:11 +02:00
Yuri Kuznetsov
33e29e20a2 type fixes 2021-11-10 16:53:15 +02:00
Yuri Kuznetsov
d2a1e8f771 fixes 2021-11-10 16:40:33 +02:00
Yuri Kuznetsov
3a68ebcbf4 type fixes 2021-11-10 16:04:31 +02:00
Yuri Kuznetsov
f496f386ee type fixes 2021-11-10 15:44:09 +02:00
Yuri Kuznetsov
9e641e65ed type fixes 2021-11-10 15:34:24 +02:00
Yuri Kuznetsov
d34bc6d7d2 type fixes 2021-11-10 15:10:58 +02:00
Yuri Kuznetsov
7581169f87 update jquery-ui 2021-11-10 12:58:11 +02:00
Yuri Kuznetsov
7c53701df5 npm update packages 2021-11-10 12:31:57 +02:00
Yuri Kuznetsov
d273523c46 fix link multiple remove btn 2021-11-10 12:20:39 +02:00
Yuri Kuznetsov
df6745ff79 cs fix 2021-11-10 12:19:37 +02:00
Yuri Kuznetsov
9327b418bf fix 2021-11-10 11:38:04 +02:00
Yuri Kuznetsov
5430fed1d1 fix 2021-11-10 11:28:29 +02:00
Yuri Kuznetsov
10285cf3d3 phpstan level 5 2021-11-09 17:47:18 +02:00
Yuri Kuznetsov
c8bed9af32 fixes 2021-11-09 17:46:54 +02:00
Yuri Kuznetsov
7499703d77 fix tests 2021-11-09 17:20:24 +02:00
Yuri Kuznetsov
4e1f421dc1 fixes and cleanup 2021-11-09 17:13:25 +02:00
Yuri Kuznetsov
4ab2a0749c fixes 2021-11-09 16:43:27 +02:00
Yuri Kuznetsov
530ac9da18 type fixes 2021-11-09 16:38:00 +02:00
Yuri Kuznetsov
4069d38978 type fixes 2021-11-09 16:14:07 +02:00
Yuri Kuznetsov
4070b38190 update phpstan 2021-11-09 15:58:36 +02:00
Yuri Kuznetsov
718f3ddc9f type fixes 2021-11-09 15:15:40 +02:00
Yuri Kuznetsov
e4be18ac51 type fixes 2021-11-09 15:08:44 +02:00
Yuri Kuznetsov
fa63270530 type fixes 2021-11-09 13:48:04 +02:00
Yuri Kuznetsov
54286984e9 type fixes 2021-11-09 13:07:37 +02:00
Yuri Kuznetsov
523e4d2900 type fixes 2021-11-09 12:48:57 +02:00
Yuri Kuznetsov
79af0d2cc7 type fixes 2021-11-09 12:26:42 +02:00
Yuri Kuznetsov
4152ee10ea type fixes 2021-11-09 12:01:22 +02:00
Yuri Kuznetsov
c41b92d15a module fix order and test 2021-11-09 11:54:48 +02:00
Yuri Kuznetsov
5af9679751 fix user service 2021-11-09 11:24:07 +02:00
Yuri Kuznetsov
c51fcf0cb6 fix 2021-11-08 17:24:54 +02:00
Yuri Kuznetsov
41d4735502 type fixes 2021-11-08 17:14:08 +02:00
Yuri Kuznetsov
7c3964c6f5 type fixes 2021-11-08 17:09:29 +02:00
Yuri Kuznetsov
df744ba263 export fix 2021-11-08 16:40:23 +02:00
Yuri Kuznetsov
380b3dde0a return type const 2021-11-08 16:31:54 +02:00
Yuri Kuznetsov
4c696c8b21 type fixes 2021-11-08 16:05:53 +02:00
Yuri Kuznetsov
95f9206880 type fixes 2021-11-08 15:48:16 +02:00
Yuri Kuznetsov
e00557885f type fixes 2021-11-08 15:28:12 +02:00
Yuri Kuznetsov
9aaab7d726 phpstan dynamic return type 2021-11-08 15:23:34 +02:00
Yuri Kuznetsov
ab9f78d33f type fixes 2021-11-08 15:22:49 +02:00
Yuri Kuznetsov
ac57f6a39a fix types 2021-11-08 15:16:39 +02:00
Yuri Kuznetsov
49077225c6 type fixes 2021-11-08 13:47:48 +02:00
Yuri Kuznetsov
f3a13739c0 type fixes 2021-11-08 13:31:15 +02:00
Yuri Kuznetsov
ae4d37498a csv export fix 2021-11-08 12:35:03 +02:00
Yuri Kuznetsov
25a607952c fix before action methods 2021-11-08 11:03:54 +02:00
Yuri Kuznetsov
51cfbb0779 fixes 2021-11-05 13:40:32 +02:00
Yuri Kuznetsov
15c97e5d12 fixes 2021-11-05 13:26:05 +02:00
Yuri Kuznetsov
4847bc019a phpstan level 4 2021-11-05 12:54:35 +02:00
Yuri Kuznetsov
094f6e2f50 fixes 2021-11-05 12:53:54 +02:00
Yuri Kuznetsov
6cc19a52f1 fixes 2021-11-05 12:33:36 +02:00
Yuri Kuznetsov
f0237005c0 fixes 2021-11-05 12:14:56 +02:00
Yuri Kuznetsov
3aa31a830c type fixes 2021-11-05 12:12:39 +02:00
Yuri Kuznetsov
c61513cf84 fixes 2021-11-05 12:02:06 +02:00
Yuri Kuznetsov
d10b6dd9b3 fixes 2021-11-05 11:49:04 +02:00
Yuri Kuznetsov
b466f91f8a fixes 2021-11-05 11:32:03 +02:00
Yuri Kuznetsov
7081440121 type fixes 2021-11-05 11:22:59 +02:00
Yuri Kuznetsov
5042f58e30 fixes 2021-11-05 11:04:49 +02:00
Yuri Kuznetsov
beb51081d3 type fixes 2021-11-05 10:55:41 +02:00
Yuri Kuznetsov
1997da4343 fixes 2021-11-04 17:22:56 +02:00
Yuri Kuznetsov
0b3f3e67dd fixes 2021-11-04 17:14:41 +02:00
Yuri Kuznetsov
e9d7b92a6e phpstan level 3 2021-11-04 16:20:29 +02:00
Yuri Kuznetsov
334d5609b0 types 2021-11-04 16:19:43 +02:00
Yuri Kuznetsov
6e31c591bd types 2021-11-04 16:16:22 +02:00
Yuri Kuznetsov
d125d8f067 types 2021-11-04 15:54:48 +02:00
Yuri Kuznetsov
49b55236d0 types 2021-11-04 15:09:36 +02:00
Yuri Kuznetsov
093001bf95 fixes 2021-11-04 13:50:10 +02:00
Yuri Kuznetsov
3445f87e0c fix 2021-11-04 13:34:43 +02:00
Yuri Kuznetsov
8d3ba52501 injectable factory type hint 2021-11-04 13:33:16 +02:00
Yuri Kuznetsov
82a7590a2a type fixes 2021-11-04 13:19:53 +02:00
Yuri Kuznetsov
773df7aedd type fixes 2021-11-04 13:00:40 +02:00
Yuri Kuznetsov
424ca82b15 type fixes 2021-11-04 12:50:56 +02:00
Yuri Kuznetsov
e5df6ad7bf type fixes 2021-11-04 12:48:31 +02:00
Yuri Kuznetsov
d81f8f7bed type fixes 2021-11-04 12:35:39 +02:00
Yuri Kuznetsov
7203b652fa type fixes 2021-11-04 12:17:37 +02:00
Yuri Kuznetsov
5d5268c2c7 type fixes 2021-11-04 11:55:57 +02:00
Yuri Kuznetsov
b568e96407 type fixes 2021-11-04 11:36:52 +02:00
Yuri Kuznetsov
1dda881422 type fixes 2021-11-04 11:14:25 +02:00
Yuri Kuznetsov
17d2791d40 type fixes 2021-11-04 10:59:48 +02:00
Yuri Kuznetsov
9469b66c61 fix 2021-11-04 08:19:52 +02:00
Yuri Kuznetsov
bbc16b942e type fixes 2021-11-03 21:16:03 +02:00
Yuri Kuznetsov
2cb235f49c type fixes 2021-11-03 21:07:10 +02:00
Yuri Kuznetsov
e2a7a439d2 type fixes 2021-11-03 18:38:20 +02:00
Yuri Kuznetsov
2c19ebf570 fix types 2021-11-03 17:57:50 +02:00
Yuri Kuznetsov
19d799ac5e type fixes 2021-11-03 17:38:27 +02:00
Yuri Kuznetsov
e89a0955ea fix types 2021-11-03 17:30:42 +02:00
Yuri Kuznetsov
fc6dfd1994 fix orm types 2021-11-03 17:01:17 +02:00
Yuri Kuznetsov
3fa33b6706 type fixes 2021-11-03 16:47:27 +02:00
Yuri Kuznetsov
939daa616b type fixes 2021-11-03 16:43:44 +02:00
Yuri Kuznetsov
fd22f50de2 type fixes 2021-11-03 16:34:18 +02:00
Yuri Kuznetsov
48ca9259af type fixes 2021-11-03 16:02:45 +02:00
Yuri Kuznetsov
c49d3d4c30 type fixes 2021-11-03 15:52:54 +02:00
Yuri Kuznetsov
246b0c2a37 type fixes 2021-11-03 15:39:45 +02:00
Yuri Kuznetsov
33f446401b di setters fixes 2021-11-03 15:29:54 +02:00
Yuri Kuznetsov
9c677463f2 type fixes 2021-11-03 15:27:08 +02:00
Yuri Kuznetsov
786e267e93 type fixes 2021-11-03 15:17:28 +02:00
Yuri Kuznetsov
c782743a24 fix test 2021-11-03 13:19:29 +02:00
Yuri Kuznetsov
b2c4c76fba type fixes 2021-11-03 13:14:22 +02:00
Yuri Kuznetsov
5a6660b60d type fixes 2021-11-03 12:56:57 +02:00
Yuri Kuznetsov
f5d324eb48 type fixes 2021-11-03 11:39:41 +02:00
Yuri Kuznetsov
901e0967fc type fixes 2021-11-03 11:17:47 +02:00
Yuri Kuznetsov
1cfacc3813 fix regression websocket 2021-11-03 11:11:03 +02:00
Yuri Kuznetsov
8f1c7d5d54 fix attachment allowed types 2021-11-03 10:59:30 +02:00
Yuri Kuznetsov
3427c1b0bd type fixes 2021-11-02 21:15:15 +02:00
Yuri Kuznetsov
4a12d44971 type fixes 2021-11-02 19:56:48 +02:00
Yuri Kuznetsov
d833d43a8b fixes 2021-11-02 19:40:15 +02:00
Yuri Kuznetsov
64a3b851b6 type fixes 2021-11-02 18:24:37 +02:00
Yuri Kuznetsov
2a0ceceb2f type fixes 2021-11-02 18:16:42 +02:00
Yuri Kuznetsov
7250e0e5c4 type fixes 2021-11-02 17:08:01 +02:00
Yuri Kuznetsov
40161fdc3c type fixes 2021-11-02 16:37:39 +02:00
Yuri Kuznetsov
cb815d7dea type fixes 2021-11-02 16:25:25 +02:00
Yuri Kuznetsov
fffe4aacc1 fixes 2021-11-02 16:20:55 +02:00
Yuri Kuznetsov
985c12c918 type fixes 2021-11-02 16:15:31 +02:00
Yuri Kuznetsov
87bbf61c66 type fixes 2021-11-02 15:58:40 +02:00
Yuri Kuznetsov
8f204de057 fix injectable factory types 2021-11-02 15:38:59 +02:00
Yuri Kuznetsov
419b08070a fix 2021-11-02 15:30:57 +02:00
Yuri Kuznetsov
ba1d4d7b72 fixes 2021-11-02 13:45:16 +02:00
Yuri Kuznetsov
a48b5df28e type fixes 2021-11-02 13:34:32 +02:00
Yuri Kuznetsov
07bbc42df5 fix exceptions 2021-11-02 13:20:29 +02:00
Yuri Kuznetsov
14e77571c0 type fixes 2021-11-02 12:40:50 +02:00
Yuri Kuznetsov
71a35878c1 type fixes 2021-11-02 12:24:56 +02:00
Yuri Kuznetsov
7dc74f0767 phpstan config 2021-11-02 12:24:42 +02:00
Yuri Kuznetsov
784d12f3ca fix container 2021-11-02 11:32:30 +02:00
Yuri Kuznetsov
cdf9700ff0 fix loader interface 2021-11-02 11:10:43 +02:00
Yuri Kuznetsov
05f926b33b fix bool any filter 2021-11-02 11:07:55 +02:00
Yuri Kuznetsov
b05f2acc34 type fix 2021-11-01 17:34:15 +02:00
Yuri Kuznetsov
67b52d1f42 fixes 2021-11-01 17:19:42 +02:00
Yuri Kuznetsov
6391c3ca08 fixes 2021-11-01 17:17:44 +02:00
Yuri Kuznetsov
fc59a1efa1 type fixes 2021-11-01 17:00:07 +02:00
Yuri Kuznetsov
e215e39e5d type fixes 2021-11-01 16:46:41 +02:00
Yuri Kuznetsov
33e1f48717 fix import 2021-11-01 11:49:28 +02:00
Yuri Kuznetsov
94f61e5aff fix 2021-11-01 11:43:59 +02:00
Yuri Kuznetsov
41b25a43ba tcpdf fix 2021-11-01 11:27:20 +02:00
Yuri Kuznetsov
09e617ee78 fixes 2021-10-29 21:56:31 +03:00
Yuri Kuznetsov
f5f8b2f66a fix 2021-10-29 21:39:38 +03:00
Yuri Kuznetsov
45b9b41557 type fixes 2021-10-29 17:32:31 +03:00
Yuri Kuznetsov
e0a1b983e3 Merge branch 'hotfix/7.0.9' of github.com:espocrm/espocrm into hotfix/7.0.9 2021-10-29 17:12:48 +03:00
Yuri Kuznetsov
4d2b339112 fixes 2021-10-29 17:12:40 +03:00
Yuri Kuznetsov
b1a66e4a20 fix exceptions 2021-10-29 17:11:05 +03:00
Yuri Kuznetsov
1e44f82b38 fixes 2021-10-29 17:07:32 +03:00
Eymen Elkum
487f428c7f add missing returns (#2132) 2021-10-29 17:03:03 +03:00
Yuri Kuznetsov
f5fa51854d fixes 2021-10-29 16:12:24 +03:00
Yuri Kuznetsov
3f15295293 fixes 2021-10-29 15:53:31 +03:00
Yuri Kuznetsov
de72c2b055 fixes 2021-10-29 15:33:25 +03:00
Yuri Kuznetsov
8f93507fec fixes 2021-10-29 15:14:37 +03:00
Yuri Kuznetsov
2afaf8b446 fix 2021-10-29 14:05:59 +03:00
Yuri Kuznetsov
33e0a1b228 phpstan 2021-10-29 13:56:55 +03:00
Yuri Kuznetsov
4b7dd1fd22 fixes 2021-10-29 13:55:58 +03:00
Yuri Kuznetsov
6f7ef14482 fixes 2021-10-29 13:48:03 +03:00
Yuri Kuznetsov
097a115595 fixes 2021-10-29 13:42:43 +03:00
Yuri Kuznetsov
cd78458d19 fix select 2021-10-29 13:24:21 +03:00
Yuri Kuznetsov
b69d706cc4 fix where 2021-10-29 13:16:47 +03:00
Yuri Kuznetsov
8286d7b621 fixes 2021-10-29 12:46:57 +03:00
Yuri Kuznetsov
d899c55f4f pagination fixes 2021-10-28 16:54:55 +03:00
Yuri Kuznetsov
0a954e171d pagination fixes 2021-10-28 13:59:45 +03:00
Yuri Kuznetsov
89d2c38257 refactoring 2021-10-28 13:50:32 +03:00
Yuri Kuznetsov
d7829e7801 v 2021-10-26 12:07:42 +03:00
Yuri Kuznetsov
3d4f6055e4 merge fixes 2021-10-26 12:07:15 +03:00
Yuri Kuznetsov
383ae3fe3e entity inteface add methods 2021-10-26 11:45:10 +03:00
Yuri Kuznetsov
47cbd18c88 ldap user save fix 2021-10-26 11:43:18 +03:00
Yuri Kuznetsov
d5779878c7 fix link multiple loading on list 2021-10-25 15:30:16 +03:00
Shefqet Avdullau
c65cabffd5 Fixed typo in Tasks default filter Completed (#2126)
Fixes #2125
2021-10-25 15:04:42 +03:00
Yuri Kuznetsov
fe90a62239 autocomplete new password 2021-10-25 13:24:21 +03:00
Yuri Kuznetsov
13ae33266f dummy file 2021-10-25 13:14:19 +03:00
Yuri Kuznetsov
399b689bcd fix personal email account assigned user 2021-10-25 12:01:38 +03:00
Yuri Kuznetsov
1219e7be12 fix category tree order 2021-10-25 11:02:23 +03:00
Yuri Kuznetsov
10f67ab360 mass update opp stage 2021-10-21 13:21:01 +03:00
Yuri Kuznetsov
ce1f755612 action data cloning 2021-10-21 13:20:36 +03:00
Yuri Kuznetsov
fa943d1166 mass action data cloning 2021-10-21 13:18:51 +03:00
Yuri Kuznetsov
dc09f91e35 refactoring 2021-10-21 12:56:47 +03:00
Yuri Kuznetsov
34b8fa2728 acceptanceStatus customization fields disabled 2021-10-20 16:04:33 +03:00
Yuri Kuznetsov
02f7bebf67 outbound email address autocomplete 2021-10-19 16:01:19 +03:00
Yuri Kuznetsov
4ffc384764 formatting fix 2021-10-19 15:27:19 +03:00
Yuri Kuznetsov
e1ef2b34ea orphan email address filter fix 2021-10-19 15:14:32 +03:00
Yuri Kuznetsov
d5a83a8819 fix 2021-10-19 12:43:30 +03:00
Yuri Kuznetsov
661f499f67 orm custom functions 2021-10-19 12:40:07 +03:00
Yuri Kuznetsov
a073beeea7 lastAccess export disable 2021-10-18 17:35:07 +03:00
Yuri Kuznetsov
07f6bf7a7a signature with insert email fix 2021-10-18 13:56:42 +03:00
Yuri Kuznetsov
0cfbb269f2 fix ldap 2021-10-18 13:15:23 +03:00
Yuri Kuznetsov
f3791e5fb4 fix ldap create user 2021-10-18 13:03:06 +03:00
Yuri Kuznetsov
37d8b0d3bd cleanup 2021-10-15 15:47:17 +03:00
Arkadiy
4ae383033a fix missing class imports, exceptions and undefined properties (#2112)
* fix exception

* fix missing imports

* fix access to an undefined property
2021-10-15 15:46:45 +03:00
Yuri Kuznetsov
ea71675701 fix typo 2021-10-15 10:56:48 +03:00
Arkadiy
1178d01baa fix for SelectingBuilderTrait (#2110)
* fix undefined type

* fix exception
2021-10-14 15:13:55 +03:00
Yuri Kuznetsov
ace53f9494 v 2021-10-14 13:01:32 +03:00
Yuri Kuznetsov
3c17ff2da9 layout set fix 2021-10-14 10:35:08 +03:00
Yuri Kuznetsov
163991a36b fix 2021-10-14 10:07:09 +03:00
Yuri Kuznetsov
291721c1d0 fix checkboxes 2021-10-13 16:30:36 +03:00
Yuri Kuznetsov
d96301d544 7.0.6 2021-10-13 15:56:19 +03:00
Yuri Kuznetsov
54d9674055 fix emails folderId 2021-10-13 10:35:47 +03:00
Yuri Kuznetsov
4a5a07649a cs fix 2021-10-13 10:32:39 +03:00
Yuri Kuznetsov
cfdb65fad8 fix missing checkboxes 2021-10-13 10:12:44 +03:00
Yuri Kuznetsov
16544a4a70 fix email address parsing 2021-10-12 15:52:59 +03:00
Yuri Kuznetsov
02939d0840 v 2021-10-12 13:06:02 +03:00
Yuri Kuznetsov
bf331c7020 cs fix 2021-10-12 12:05:58 +03:00
Yuri Kuznetsov
e80b55572b fix lead filter 2021-10-12 11:32:10 +03:00
Yuri Kuznetsov
51c29f0a6e fix link & link multiple search empty 2021-10-12 11:30:20 +03:00
Yuri Kuznetsov
056191db82 fix pdf filename 2021-10-11 13:01:59 +03:00
Yuri Kuznetsov
9ace150efa v 2021-10-11 11:31:48 +03:00
Yuri Kuznetsov
79ae89d172 fix duration 2021-10-10 11:38:15 +03:00
Yuri Kuznetsov
bb703e2060 fix export not existing fields 2021-10-10 11:22:58 +03:00
Yuri Kuznetsov
972d9019e1 fix log 2021-10-10 11:19:38 +03:00
Yuri Kuznetsov
c99566410a note acl refactoring and period change 2021-10-08 15:35:05 +03:00
Yuri Kuznetsov
9c56a14fb0 file manager allow create file w/ wrong ownership 2021-10-08 11:45:56 +03:00
Yuri Kuznetsov
b95e58317b fix msg 2021-10-08 11:27:09 +03:00
Yuri Kuznetsov
6fd9d6e15c upgrade fix 2021-10-07 17:42:31 +03:00
Yuri Kuznetsov
518b9fa2ba unlink file in checkCreateFile 2021-10-07 17:17:22 +03:00
Yuri Kuznetsov
c113b7bd88 throw exception in auth 2021-10-07 15:00:11 +03:00
Yuri Kuznetsov
fb0a302f62 v 2021-10-06 18:27:50 +03:00
Yuri Kuznetsov
43127379cd fix settings 2021-10-06 18:27:07 +03:00
Yuri Kuznetsov
c5bc7136c7 fix activities 2021-10-06 13:34:35 +03:00
Yuri Kuznetsov
18ba671417 tryCheck usage 2021-10-06 12:00:33 +03:00
Yuri Kuznetsov
6141bfd1fb printTrace in default config 2021-10-06 11:28:41 +03:00
Yuri Kuznetsov
4e4b51c4f1 metadata tryCheck usage 2021-10-06 11:06:10 +03:00
Yuri Kuznetsov
83ac300aa3 fix logo upload 2021-10-05 20:31:24 +03:00
Yuri Kuznetsov
f641a3c9c6 fix 2021-10-05 18:15:55 +03:00
Yuri Kuznetsov
18a4782bf1 v 2021-10-05 17:17:41 +03:00
Yuri Kuznetsov
f1fddb7325 fix 2021-10-05 15:07:12 +03:00
Yuri Kuznetsov
9c864af409 fix 2021-10-05 13:34:08 +03:00
Yuri Kuznetsov
7cd332228a fix getEntity user 2021-10-05 12:58:04 +03:00
Yuri Kuznetsov
54c534736f printTrace logger param 2021-10-05 12:27:49 +03:00
Yuri Kuznetsov
6f07862572 fix test 2021-10-05 12:27:20 +03:00
Yuri Kuznetsov
54863ca6a4 fix group email account keep unread 2021-10-05 11:35:33 +03:00
Yuri Kuznetsov
70499e504c upgrade fix 2021-10-04 12:44:24 +03:00
Yuri Kuznetsov
697565f95c v 2021-10-04 12:14:43 +03:00
Yuri Kuznetsov
94f1501c96 fix upgrade 2021-10-04 12:03:01 +03:00
Yuri Kuznetsov
145b0e2c7b upgrade opcache check 2021-10-04 11:44:59 +03:00
Yuri Kuznetsov
7057b3ba82 config writer fix 2021-10-04 11:38:09 +03:00
Yuri Kuznetsov
f6eecce135 upgrade fixes 2021-10-04 10:25:05 +03:00
Yuri Kuznetsov
1f0d105685 fix upgrade warning 2021-10-04 10:00:15 +03:00
Yuri Kuznetsov
7caf841edd fix htmlizer data 2021-10-04 09:56:08 +03:00
Yuri Kuznetsov
7cd82b1e03 warning fix 2021-10-02 11:12:58 +03:00
Yuri Kuznetsov
2c8a21fc04 cs fix 2021-10-02 11:07:31 +03:00
Yuri Kuznetsov
102ec389b9 fix record dashlet 2021-10-02 11:06:20 +03:00
Yuri Kuznetsov
f07895eeb0 fix settings restriction 2021-10-01 18:41:44 +03:00
Yuri Kuznetsov
a1570c7666 upgrade cli check 2021-10-01 16:47:18 +03:00
4747 changed files with 180576 additions and 82797 deletions

View File

@@ -4,8 +4,7 @@ root = true
[*]
indent_style = space
indent_size = 4
end_of_line = lf
end_of_line = crlf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

5
.gitattributes vendored
View File

@@ -8,4 +8,9 @@
*.tpl text eol=crlf
*.html text eol=crlf
bin/command text eol=lf
.gitattributes text eol=crlf
.gitignore text eol=crlf
*.png binary

2
.github/SECURITY.md vendored
View File

@@ -6,4 +6,4 @@ If you believe you have discovered a vulnerability in EspoCRM please contacts us
## Supported versions
For severe vulnerabilities we provide fixes for 2 minor versions (the second number in the version string) back from the current stable version. Separate patches or manual fix guidelines will be provided for more old versions.
For severe vulnerabilities we provide fixes for 2 minor versions (the second number in the version string) back from the current stable version.

63
.github/workflows/test-integration.yml vendored Normal file
View File

@@ -0,0 +1,63 @@
name: Test Integration
on:
schedule:
- cron: '0 10 * * *'
jobs:
test:
name: Test on PHP ${{ matrix.php-versions }}
runs-on: ubuntu-20.04
env:
TEST_DATABASE_HOST: '127.0.0.1'
TEST_DATABASE_PORT: '8888'
TEST_DATABASE_NAME: integration_test
TEST_DATABASE_USER: root
TEST_DATABASE_PASSWORD: password
services:
mysql:
image: mysql:8.0
env:
MYSQL_ALLOW_EMPTY_PASSWORD: false
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: integration_test
ports:
- '8888:3306'
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
strategy:
fail-fast: false
matrix:
php-versions: ['8.0', '8.1', '8.2']
branches: ['master']
steps:
- uses: actions/checkout@v2
with:
ref: ${{ matrix.branches }}
- name: Setup Node.js
uses: actions/setup-node@v1
with:
node-version: 16.x
- name: Setup PHP with Composer
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
tools: composer:v2
ini-values: memory_limit=1024M
- name: Start MySQL service
run: sudo systemctl start mysql
- name: Create DB table
run: mysql -h 127.0.0.1 --port 8888 -u root -ppassword -e 'CREATE DATABASE IF NOT EXISTS integration_test;'
- name: NPM install
run: npm install
- name: Build
run: grunt test
- name: Integration testing
run: vendor/bin/phpunit tests/integration

48
.github/workflows/test.yml vendored Normal file
View File

@@ -0,0 +1,48 @@
name: Test
on:
push:
branches:
- 'master'
- 'fix'
paths:
- '**.php'
- '**.json'
- '**.yml'
- 'composer.lock'
- 'phpstan.neon'
pull_request:
paths:
- '**.php'
- '**.json'
- '**.yml'
- 'composer.lock'
- 'phpstan.neon'
jobs:
test:
name: Test on PHP ${{ matrix.php-versions }}
runs-on: ubuntu-20.04
strategy:
matrix:
php-versions: ['8.0', '8.1', '8.2']
steps:
- uses: actions/checkout@v2
- name: Setup PHP with Composer
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
tools: composer:v2
ini-values: memory_limit=1024M
- name: Composer install
run: composer install
- name: Static analysis
run: vendor/bin/phpstan
- name: Unit testing
run: vendor/bin/phpunit tests/unit

4
.gitignore vendored
View File

@@ -23,3 +23,7 @@
!/custom/Espo/Custom/.htaccess
!/custom/Espo/Modules/.htaccess
/install/config.php
client/css/espo/*
client/lib/*
client/modules/crm/lib/*

View File

@@ -24,11 +24,6 @@ Options -Indexes
# Skip redirect for `client` dir.
RewriteRule ^client/ - [L]
# {#dev}
# Skip redirect for `node_modules` dir. Actual only for dev environment.
RewriteRule ^node_modules/ - [L]
# {/dev}
# Store base path.
RewriteCond %{REQUEST_URI}::$1 ^(.*?/)(.*)::\2$
RewriteRule ^(.*)$ - [E=BASE:%1]

6
.idea/.gitignore generated vendored Normal file
View File

@@ -0,0 +1,6 @@
*
!.gitignore
!/codeStyles
!/fileTemplates
!/inspectionProfiles
!misc.xml

20
.idea/codeStyles/Project.xml generated Normal file
View File

@@ -0,0 +1,20 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<PHPCodeStyleSettings>
<option name="GROUP_USE_WRAP" value="2" />
<option name="VARIABLE_NAMING_STYLE" value="CAMEL_CASE" />
<option name="KEEP_RPAREN_AND_LBRACE_ON_ONE_LINE" value="true" />
<option name="FORCE_EMPTY_METHODS_IN_ONE_LINE" value="true" />
</PHPCodeStyleSettings>
<codeStyleSettings language="PHP">
<option name="KEEP_FIRST_COLUMN_COMMENT" value="false" />
<option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false" />
<option name="CATCH_ON_NEW_LINE" value="true" />
<option name="FINALLY_ON_NEW_LINE" value="true" />
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
<option name="ALIGN_MULTILINE_FOR" value="false" />
<option name="METHOD_PARAMETERS_RPAREN_ON_NEXT_LINE" value="true" />
<option name="METHOD_CALL_CHAIN_WRAP" value="5" />
</codeStyleSettings>
</code_scheme>
</component>

5
.idea/codeStyles/codeStyleConfig.xml generated Normal file
View File

@@ -0,0 +1,5 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
</state>
</component>

View File

@@ -0,0 +1,27 @@
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-${YEAR} Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* EspoCRM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/

View File

@@ -0,0 +1 @@
#parse("PHP File Header.php")

View File

@@ -0,0 +1,19 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="DuplicatedCode" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="ES6ConvertVarToLetConst" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="JSIgnoredPromiseFromCall" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="PhpDocMissingThrowsInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="PhpDocSignatureIsNotCompleteInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="PhpMissingFieldTypeInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="PhpMissingParamTypeInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="PhpMissingReturnTypeInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="PhpStanGlobal" enabled="false" level="WEAK WARNING" enabled_by_default="false">
<option name="config" value="$PROJECT_DIR$/phpstan.neon" />
</inspection_tool>
<inspection_tool class="PhpSwitchStatementWitSingleBranchInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="PsalmAdvanceCallableParamsInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="TrivialIfJS" enabled="false" level="WARNING" enabled_by_default="false" />
</profile>
</component>

7
.idea/misc.xml generated Normal file
View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="PhpEntryPointsManager">
<pattern value="\Espo\Controllers\*" member="*Action*" />
<pattern value="\Espo\Modules\*\Controllers\*" member="*Action*" />
</component>
</project>

1
.npmrc Normal file
View File

@@ -0,0 +1 @@
tag-version-prefix = ""

View File

@@ -2,7 +2,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -20,47 +20,53 @@
************************************************************************/
/**
* * `grunt` - full build
* * `grunt dev` - build only items needed for development (takes less time)
* * `grunt offline` - build but skip *composer install*
* * `grant release` - full build plus upgrade packages`
* * `grant test` - build for tests running
* * `grant run-tests` - build and run unit and integration tests
* * `grunt` - full build;
* * `grunt dev` - build only items needed for development (takes less time);
* * `grunt offline` - build but skip *composer install*;
* * `grunt internal` - build only libs and css;
* * `grunt release` - full build plus upgrade packages`;
* * `grunt test` - build for tests running;
* * `grunt run-tests` - build and run unit and integration tests.
*/
const fs = require('fs');
const cp = require('child_process');
const path = require('path');
const buildUtils = require('./js/build-utils');
module.exports = grunt => {
const pkg = grunt.file.readJSON('package.json');
const bundleConfig = require('./frontend/bundle-config.json');
const libs = require('./frontend/libs.json');
let jsFilesToBundle = getBundleLibList().concat(bundleConfig.jsFiles);
let jsFilesToCopy = getCopyLibDataList();
const originalLibDir = 'client/lib/original';
let libFilesToMinify = jsFilesToCopy
let bundleJsFileList = buildUtils.getPreparedBundleLibList(libs).concat(originalLibDir + '/espo.js');
let copyJsFileList = buildUtils.getCopyLibDataList(libs);
let minifyLibFileList = copyJsFileList
.filter(item => item.minify)
.reduce((map, item) => (
map[item.dest] = item.dest,
map
), {});
.map(item => {
return {
dest: item.dest,
src: item.originalDest,
};
});
let currentPath = path.dirname(fs.realpathSync(__filename));
let themeList = [];
fs.readdirSync('application/Espo/Resources/metadata/themes').forEach(file => {
themeList.push(file.substr(0, file.length - 5));
themeList.push(file.substring(0, file.length - 5));
});
let cssminFilesData = {};
let lessData = {};
themeList.forEach(theme => {
let name = camelCaseToHyphen(theme);
let name = buildUtils.camelCaseToHyphen(theme);
let files = {};
@@ -70,14 +76,12 @@ module.exports = grunt => {
cssminFilesData['client/css/espo/'+name+'.css'] = 'client/css/espo/'+name+'.css';
cssminFilesData['client/css/espo/'+name+'-iframe.css'] = 'client/css/espo/'+name+'-iframe.css';
let o = {
lessData[theme] = {
options: {
yuicompress: true,
},
files: files,
};
lessData[theme] = o;
});
grunt.initConfig({
@@ -95,7 +99,12 @@ module.exports = grunt => {
},
clean: {
start: ['build/EspoCRM-*'],
start: [
'build/EspoCRM-*',
'client/lib/*',
'client/modules/crm/lib/*',
'client/css/espo/*',
],
final: ['build/tmp'],
release: ['build/EspoCRM-' + pkg.version],
beforeFinal: {
@@ -110,8 +119,9 @@ module.exports = grunt => {
'build/tmp/client/custom/*',
'!build/tmp/client/custom/modules',
'build/tmp/client/custom/modules/*',
'!build/tmp/client/custom/modules/dummy.txt',
]
}
},
},
less: lessData,
@@ -135,11 +145,11 @@ module.exports = grunt => {
banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n',
},
files: {
'build/tmp/client/espo.min.js': jsFilesToBundle,
'client/lib/espo.min.js': bundleJsFileList,
},
},
lib: {
files: libFilesToMinify,
files: minifyLibFileList,
},
},
@@ -147,7 +157,7 @@ module.exports = grunt => {
options: {
mode: true,
},
frontendFolders: {
frontend: {
expand: true,
cwd: 'client',
src: [
@@ -160,18 +170,12 @@ module.exports = grunt => {
'css/**',
'sounds/**',
'custom/**',
'lib/**',
],
dest: 'build/tmp/client',
},
frontendLib: {
files: jsFilesToCopy,
},
frontendCommitedLib: {
expand: true,
dot: true,
cwd: 'client/lib',
src: '**',
dest: 'build/tmp/client/lib/',
files: copyJsFileList,
},
backend: {
expand: true,
@@ -211,60 +215,6 @@ module.exports = grunt => {
},
},
chmod: {
php: {
options: {
mode: '644'
},
src: [
'build/EspoCRM-<%= pkg.version %>/**/*.php',
'build/EspoCRM-<%= pkg.version %>/**/*.json',
'build/EspoCRM-<%= pkg.version %>/**/*.config',
'build/EspoCRM-<%= pkg.version %>/**/.htaccess',
'build/EspoCRM-<%= pkg.version %>/client/**/*.js',
'build/EspoCRM-<%= pkg.version %>/client/**/*.css',
'build/EspoCRM-<%= pkg.version %>/client/**/*.tpl',
'build/EspoCRM-<%= pkg.version %>/**/*.html',
'build/EspoCRM-<%= pkg.version %>/**/*.txt',
],
},
folders: {
options: {
mode: '755'
},
src: [
'build/EspoCRM-<%= pkg.version %>/public/install',
'build/EspoCRM-<%= pkg.version %>/public/portal',
'build/EspoCRM-<%= pkg.version %>/public/api',
'build/EspoCRM-<%= pkg.version %>/public/api/v1',
'build/EspoCRM-<%= pkg.version %>/public/api/v1/portal-access',
'build/EspoCRM-<%= pkg.version %>',
],
},
foldersWritable: {
options: {
mode: '775'
},
src: [
'build/EspoCRM-<%= pkg.version %>/data',
'build/EspoCRM-<%= pkg.version %>/custom',
'build/EspoCRM-<%= pkg.version %>/custom/Espo',
'build/EspoCRM-<%= pkg.version %>/custom/Espo/Custom',
'build/EspoCRM-<%= pkg.version %>/client/custom',
'build/EspoCRM-<%= pkg.version %>/client/modules',
'build/EspoCRM-<%= pkg.version %>/application/Espo/Modules',
]
},
executable: {
options: {
mode: '754'
},
src: [
'build/EspoCRM-<%= pkg.version %>/bin/*',
],
},
},
replace: {
version: {
options: {
@@ -299,15 +249,125 @@ module.exports = grunt => {
],
},
},
});
grunt.registerTask('espo-bundle', () => {
const Bundler = require('./js/bundler');
let contents = (new Bundler()).bundle(bundleConfig.jsFiles);
if (!fs.existsSync(originalLibDir)) {
fs.mkdirSync(originalLibDir);
}
fs.writeFileSync(originalLibDir + '/espo.js', contents, 'utf8');
});
grunt.registerTask('prepare-lib-original', () => {
// Even though `npm ci` runs the same script, 'clean:start' deletes files.
cp.execSync("node js/scripts/prepare-lib-original");
});
grunt.registerTask('prepare-lib', () => {
cp.execSync("node js/scripts/prepare-lib");
});
grunt.registerTask('chmod-folders', () => {
cp.execSync(
"find . -type d -exec chmod 755 {} + ",
"find . -type d -exec chmod 755 {} +",
{cwd: 'build/EspoCRM-' + pkg.version}
);
});
grunt.registerTask('chmod-multiple', () => {
let dirPath = 'build/EspoCRM-' + pkg.version;
let fileList = [
{
stdio: 'ignore',
cwd: 'build/EspoCRM-' + pkg.version,
name: '*.php',
},
{
name: '*.json',
},
{
name: '*.config',
},
{
name: '.htaccess',
},
{
name: '*.html',
},
{
name: '*.txt',
},
{
name: '*.js',
folder: 'client',
},
{
name: '*.css',
folder: 'client',
},
{
name: '*.tpl',
folder: 'client',
},
];
let dirReadableList = [
'public/install',
'public/portal',
'public/api',
'public/api/v1',
'public/api/v1/portal-access',
'.',
];
let dirWritableList = [
'data',
'custom',
'custom/Espo',
'custom/Espo/Custom',
'client/custom',
'client/modules',
'application/Espo/Modules',
];
fileList.forEach(item => {
let path = item.folder || '.';
let name = item.name;
cp.execSync(
`find ${path} -type f -iname "${name}" -exec chmod 644 {} +`,
{
cwd: dirPath,
}
);
});
dirReadableList.forEach(item => {
cp.execSync(
`chmod 755 ${item}`,
{
cwd: dirPath,
}
);
});
dirWritableList.forEach(item => {
cp.execSync(
`chmod 775 ${item}`,
{
cwd: dirPath,
}
);
});
cp.execSync(
`find bin -type f -exec chmod 754 {} +`,
{
cwd: dirPath,
}
);
});
@@ -321,7 +381,7 @@ module.exports = grunt => {
});
grunt.registerTask('upgrade', () => {
cp.execSync("node diff --all --vendor", {stdio: 'inherit'});
cp.execSync("node diff --closest", {stdio: 'inherit'});
});
grunt.registerTask('unit-tests-run', () => {
@@ -332,7 +392,11 @@ module.exports = grunt => {
cp.execSync("vendor/bin/phpunit ./tests/integration", {stdio: 'inherit'});
});
grunt.registerTask('zip', () => {
grunt.registerTask('set-config-params', () => {
cp.execSync("composer run-script setConfigParams", {stdio: 'ignore'});
});
grunt.registerTask('zip', function () { // Don't change to arrow-function.
const archiver = require('archiver');
let resolve = this.async();
@@ -361,48 +425,52 @@ module.exports = grunt => {
archive
.directory(currentPath + '/build/' + folder, folder)
.pipe(zipOutput)
.finalize();
.pipe(zipOutput);
archive.finalize();
});
grunt.registerTask('npm-install', () => {
cp.execSync("npm install", {stdio: 'ignore'});
cp.execSync("npm ci", {stdio: 'ignore'});
});
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-mkdir');
grunt.loadNpmTasks('grunt-contrib-less');
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.loadNpmTasks('grunt-contrib-uglify-es');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-replace');
grunt.loadNpmTasks('grunt-chmod');
grunt.registerTask('internal', [
'less',
'cssmin',
'espo-bundle',
'prepare-lib-original',
'uglify:bundle',
'copy:frontendLib',
'prepare-lib',
'uglify:lib',
]);
grunt.registerTask('offline', [
'clean:start',
'mkdir:tmp',
'less',
'cssmin',
'uglify:bundle',
'copy:frontendFolders',
'copy:frontendLib',
'copy:frontendCommitedLib',
'internal',
'copy:frontend',
'copy:backend',
'uglify:lib',
'replace',
'clean:beforeFinal',
'copy:final',
'chmod-folders',
'chmod:php',
'chmod:folders',
'chmod:foldersWritable',
'chmod:executable',
'chmod-multiple',
'clean:final',
]);
grunt.registerTask('build', [
'composer-install',
'npm-install',
'set-config-params',
'offline',
]);
@@ -444,77 +512,3 @@ module.exports = grunt => {
'offline',
]);
};
function getBundleLibList() {
const libs = require('./frontend/libs.json');
let list = [];
libs.forEach(item => {
if (!item.bundle) {
return;
}
if (item.files) {
item.files.forEach(item => {
list.push(item.src);
});
return;
}
if (!item.src) {
throw new Error("No lib src.");
}
list.push(item.src);
});
return list;
}
function getCopyLibDataList() {
const libs = require('./frontend/libs.json');
let list = [];
libs.forEach(item => {
if (item.bundle) {
return;
}
let minify = item.minify;
if (item.files) {
item.files.forEach(item => {
list.push({
src: item.src,
dest: 'build/tmp/' + (item.dest || 'client/lib/' + item.src.split('/').pop()),
minify: minify,
});
});
return;
}
if (!item.src) {
throw new Error("No lib src.");
}
list.push({
src: item.src,
dest: 'build/tmp/' + (item.dest || 'client/lib/' + item.src.split('/').pop()),
minify: minify,
});
});
return list;
}
function camelCaseToHyphen(string){
if (string === null) {
return string;
}
return string.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
}

View File

@@ -1,6 +1,8 @@
## EspoCRM
[EspoCRM is an Open Source CRM](https://www.espocrm.com) (Customer Relationship Management) software that allows you to see, enter and evaluate all your company relationships regardless of the type. People, companies or opportunities - all in an easy and intuitive interface.
[![PHPStan level 8](https://img.shields.io/badge/PHPStan-level%208-brightgreen)](#espocrm)
[EspoCRM is an Open Source CRM](https://www.espocrm.com) (Customer Relationship Management) software that allows you to see, enter and evaluate all your company relationships regardless of the type. People, companies or opportunities all in an easy and intuitive interface.
It's a web application with a frontend designed as a single page application and REST API backend written in PHP.
@@ -8,22 +10,22 @@ It's a web application with a frontend designed as a single page application and
### Requirements
* PHP 7.3 and later (with pdo, json, gd, openssl, zip, imap, mbstring, curl extensions);
* PHP 8.0 and later;
* MySQL 5.7 (and later), or MariaDB 10.1 (and later).
For more information about server configuration see [this article](https://docs.espocrm.com/administration/server-configuration/).
### Documentation
Documentation for administrators, users and developers is available [here](https://docs.espocrm.com).
The documentation for administrators, users and developers is available [here](https://docs.espocrm.com).
### How to report a bug
### Bug reporting
Create an issue [here](https://github.com/espocrm/espocrm/issues) or post on our [forum](http://forum.espocrm.com/forum/bug-reports).
### How to install a stable version
### Installing the stable version
[Download](https://www.espocrm.com/download/) the latest version. See the [instructions](https://docs.espocrm.com/administration/installation/) about installation.
See the [instructions](https://docs.espocrm.com/administration/installation/) about installation.
### Development
@@ -31,13 +33,13 @@ Create an issue [here](https://github.com/espocrm/espocrm/issues) or post on our
* [Running tests](https://docs.espocrm.com/development/tests)
* [Making translation](https://docs.espocrm.com/development/translation)
### How to contribute
### Contributing
Before we can merge your pull request you need to accept our CLA [here](https://github.com/espocrm/cla). It's very simple to do.
Branches:
* *hotfix/** upcoming maintenance release; fixes should be pushed to this branch;
* *fix* upcoming maintenance release; fixes should be pushed to this branch;
* *master* develop branch; new features should be pushed to this branch;
* *stable* last stable release.

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -27,11 +27,30 @@
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Core\Binding;
namespace Espo;
class DefaultBinding implements BindingProcessor
use Espo\Core\Binding\Binder;
use Espo\Core\Binding\BindingProcessor;
use Espo\Core\Binding\Key\NamedClassKey;
/**
* Default binding for the dependency injection framework. Custom binding should be set up in
* `Espo\Modules\{ModuleName}\Binding` or `Espo\Custom\Binding`.
*
* @link https://docs.espocrm.com/development/di/#binding.
*/
class Binding implements BindingProcessor
{
public function process(Binder $binder): void
{
$this->bindServices($binder);
$this->bindMisc($binder);
$this->bindAcl($binder);
$this->bindWebSocket($binder);
$this->bindEmailAccount($binder);
}
private function bindServices(Binder $binder): void
{
$binder->bindService(
'Espo\\Core\\InjectableFactory',
@@ -99,7 +118,7 @@ class DefaultBinding implements BindingProcessor
);
$binder->bindService(
'Espo\\Core\\SelectBuilderFactory',
'Espo\\Core\\Select\\SelectBuilderFactory',
'selectBuilderFactory'
);
@@ -119,7 +138,7 @@ class DefaultBinding implements BindingProcessor
);
$binder->bindService(
'Espo\\Core\\Utils\\HookManager',
'Espo\\Core\\HookManager',
'hookManager'
);
@@ -144,12 +163,12 @@ class DefaultBinding implements BindingProcessor
);
$binder->bindService(
'Espo\\Core\\Utils\\Language $baseLanguage',
NamedClassKey::create('Espo\\Core\\Utils\\Language', 'baseLanguage'),
'baseLanguage'
);
$binder->bindService(
'Espo\\Core\\Utils\\Language $defaultLanguage',
NamedClassKey::create('Espo\\Core\\Utils\\Language', 'defaultLanguage'),
'defaultLanguage'
);
@@ -164,7 +183,7 @@ class DefaultBinding implements BindingProcessor
);
$binder->bindService(
'Espo\\Core\\AclManager $internalAclManager',
NamedClassKey::create('Espo\\Core\\AclManager', 'internalAclManager'),
'internalAclManager'
);
@@ -197,17 +216,60 @@ class DefaultBinding implements BindingProcessor
'Espo\\Core\\ExternalAccount\\ClientManager',
'externalAccountClientManager'
);
}
$binder->bindImplementation(
'Espo\\Core\\Acl\\Table\\TableFactory',
'Espo\\Core\\Acl\\Table\\DefaultTableFactory'
);
private function bindMisc(Binder $binder): void
{
$binder->bindImplementation(
'Espo\\Core\\Utils\\Id\\RecordIdGenerator',
'Espo\\Core\\Utils\\Id\\DefaultRecordIdGenerator'
);
$binder->bindFactory(
'Espo\\Core\\Sms\\Sender',
'Espo\\Core\\Sms\\SenderFactory'
);
$binder->bindImplementation(
'Espo\\Core\\Authentication\\Jwt\\KeyFactory',
'Espo\\Core\\Authentication\\Jwt\\DefaultKeyFactory'
);
$binder
->for('Espo\\Core\\Authentication\\Oidc\\TokenValidator')
->bindImplementation(
'Espo\\Core\\Authentication\\Jwt\\SignatureVerifierFactory',
'Espo\\Core\\Authentication\\Oidc\\DefaultSignatureVerifierFactory'
);
$binder
->for('Espo\\Core\\Authentication\\Oidc\\Login')
->bindImplementation(
'Espo\\Core\\Authentication\\Oidc\\UserProvider',
'Espo\\Core\\Authentication\\Oidc\\DefaultUserProvider'
);
$binder->bindImplementation(
'Espo\\Core\\Mail\\Importer\\ParentFinder',
'Espo\\Core\\Mail\\Importer\\DefaultParentFinder'
);
$binder->bindImplementation(
'Espo\\Core\\Mail\\Importer\\DuplicateFinder',
'Espo\\Core\\Mail\\Importer\\DefaultDuplicateFinder'
);
}
private function bindAcl(Binder $binder): void
{
$binder->bindImplementation(
'Espo\\Core\\Acl\\Table\\TableFactory',
'Espo\\Core\\Acl\\Table\\DefaultTableFactory'
);
}
private function bindWebSocket(Binder $binder): void
{
$binder->bindFactory(
'Espo\\Core\\WebSocket\\Subscriber',
'Espo\\Core\\WebSocket\\SubscriberFactory'
@@ -217,10 +279,30 @@ class DefaultBinding implements BindingProcessor
'Espo\\Core\\WebSocket\\Sender',
'Espo\\Core\\WebSocket\\SenderFactory'
);
}
$binder->bindFactory(
'Espo\\Core\\Sms\\Sender',
'Espo\\Core\\Sms\\SenderFactory'
);
private function bindEmailAccount(Binder $binder): void
{
$binder
->for('Espo\\Core\\Mail\\Account\\PersonalAccount\\Service')
->bindFactory(
'Espo\\Core\\Mail\\Account\\Fetcher',
'Espo\\Core\\Mail\\Account\\PersonalAccount\\FetcherFactory'
)
->bindImplementation(
'Espo\\Core\\Mail\\Account\\StorageFactory',
'Espo\\Core\\Mail\\Account\\PersonalAccount\\StorageFactory'
);
$binder
->for('Espo\\Core\\Mail\\Account\\GroupAccount\\Service')
->bindFactory(
'Espo\\Core\\Mail\\Account\\Fetcher',
'Espo\\Core\\Mail\\Account\\GroupAccount\\FetcherFactory'
)
->bindImplementation(
'Espo\\Core\\Mail\\Account\\StorageFactory',
'Espo\\Core\\Mail\\Account\\GroupAccount\\StorageFactory'
);
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,14 +29,14 @@
namespace Espo\Classes\Acl\ActionHistoryRecord;
use Espo\Entities\ActionHistoryRecord;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\Acl\OwnershipOwnChecker;
use Espo\Core\{
Acl\OwnershipOwnChecker,
};
/**
* @implements OwnershipOwnChecker<ActionHistoryRecord>
*/
class OwnershipChecker implements OwnershipOwnChecker
{
public function checkOwn(User $user, Entity $entity): bool

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,29 +29,27 @@
namespace Espo\Classes\Acl\Attachment;
use Espo\Entities\{
User,
Note,
};
use Espo\Entities\Attachment;
use Espo\Entities\Note;
use Espo\Entities\Settings;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\Acl\AccessEntityCREDChecker;
use Espo\Core\Acl\DefaultAccessChecker;
use Espo\Core\Acl\ScopeData;
use Espo\Core\Acl\Traits\DefaultAccessCheckerDependency;
use Espo\Core\AclManager;
use Espo\Core\ORM\EntityManager;
use Espo\Core\{
ORM\EntityManager,
AclManager,
Acl\ScopeData,
Acl\DefaultAccessChecker,
Acl\AccessEntityCREDChecker,
Acl\Traits\DefaultAccessCheckerDependency,
};
/**
* @implements AccessEntityCREDChecker<Attachment>
*/
class AccessChecker implements AccessEntityCREDChecker
{
use DefaultAccessCheckerDependency;
private $aclManager;
private $entityManager;
private AclManager $aclManager;
private EntityManager $entityManager;
public function __construct(
DefaultAccessChecker $defaultAccessChecker,
@@ -65,26 +63,29 @@ class AccessChecker implements AccessEntityCREDChecker
public function checkEntityRead(User $user, Entity $entity, ScopeData $data): bool
{
if ($entity->get('parentType') === 'Settings') {
/** @var Attachment $entity */
if ($entity->get('parentType') === Settings::ENTITY_TYPE) {
// Allow the logo.
return true;
}
$parent = null;
$hasParent = false;
$parentType = $entity->get('parentType');
$parentId = $entity->get('parentId');
if ($entity->get('parentId') && $entity->get('parentType')) {
$hasParent = true;
$relatedType = $entity->get('relatedType');
$relatedId = $entity->get('relatedId');
$parent = $this->entityManager->getEntity($entity->get('parentType'), $entity->get('parentId'));
if ($parentId && $parentType) {
$parent = $this->entityManager->getEntityById($parentType, $parentId);
}
else if ($entity->get('relatedId') && $entity->get('relatedType')) {
$hasParent = true;
$parent = $this->entityManager->getEntity($entity->get('relatedType'), $entity->get('relatedId'));
else if ($relatedId && $relatedType) {
$parent = $this->entityManager->getEntityById($relatedType, $relatedId);
}
if (!$parent || !$hasParent) {
if (!$parent) {
if ($this->defaultAccessChecker->checkEntityRead($user, $entity, $data)) {
return true;
}
@@ -92,7 +93,8 @@ class AccessChecker implements AccessEntityCREDChecker
return false;
}
if ($parent->getEntityType() === 'Note') {
if ($parent->getEntityType() === Note::ENTITY_TYPE) {
/** @var Note $parent */
$result = $this->checkEntityReadNoteParent($user, $parent);
if ($result !== null) {
@@ -100,6 +102,16 @@ class AccessChecker implements AccessEntityCREDChecker
}
}
else if ($this->aclManager->checkEntity($user, $parent)) {
if (
$entity->getTargetField() &&
in_array(
$entity->getTargetField(),
$this->aclManager->getScopeForbiddenFieldList($user, $parent->getEntityType())
)
) {
return false;
}
return true;
}
@@ -114,8 +126,8 @@ class AccessChecker implements AccessEntityCREDChecker
{
if ($note->getTargetType() === Note::TARGET_TEAMS) {
$intersect = array_intersect(
$note->getLinkMultipleIdList('teams'),
$user->getLinkMultipleIdList('teams')
$note->getLinkMultipleIdList('teams') ?? [],
$user->getLinkMultipleIdList('teams') ?? []
);
if (count($intersect)) {
@@ -127,7 +139,7 @@ class AccessChecker implements AccessEntityCREDChecker
if ($note->getTargetType() === Note::TARGET_USERS) {
$isRelated = $this->entityManager
->getRDBRepository('Note')
->getRDBRepository(Note::ENTITY_TYPE)
->getRelation($note, 'users')
->isRelated($user);

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,14 +29,14 @@
namespace Espo\Classes\Acl\Attachment;
use Espo\Entities\Attachment;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\Acl\OwnershipOwnChecker;
use Espo\Core\{
Acl\OwnershipOwnChecker,
};
/**
* @implements OwnershipOwnChecker<Attachment>
*/
class OwnershipChecker implements OwnershipOwnChecker
{
private const ATTR_CREATED_BY_ID = 'createdById';

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,21 +29,20 @@
namespace Espo\Classes\Acl\AuthToken;
use Espo\Entities\AuthToken;
use Espo\Entities\User;
use Espo\Core\Acl\AccessEntityCREDChecker;
use Espo\Core\Acl\DefaultAccessChecker;
use Espo\Core\Acl\ScopeData;
use Espo\Core\Acl\Traits\DefaultAccessCheckerDependency;
use Espo\Core\{
Acl\ScopeData,
Acl\DefaultAccessChecker,
Acl\AccessEntityCREDChecker,
Acl\Traits\DefaultAccessCheckerDependency,
};
/**
* @implements AccessEntityCREDChecker<AuthToken>
*/
class AccessChecker implements AccessEntityCREDChecker
{
use DefaultAccessCheckerDependency;
private $defaultAccessChecker;
public function __construct(DefaultAccessChecker $defaultAccessChecker)
{
$this->defaultAccessChecker = $defaultAccessChecker;

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -30,17 +30,17 @@
namespace Espo\Classes\Acl\Email;
use Espo\Entities\User;
use Espo\Entities\Email;
use Espo\ORM\Entity;
use Espo\Core\Acl\AccessEntityCREDSChecker;
use Espo\Core\Acl\DefaultAccessChecker;
use Espo\Core\Acl\ScopeData;
use Espo\Core\Acl\Table;
use Espo\Core\Acl\Traits\DefaultAccessCheckerDependency;
use Espo\Core\{
Acl\Table,
Acl\ScopeData,
Acl\DefaultAccessChecker,
Acl\AccessEntityCREDSChecker,
Acl\Traits\DefaultAccessCheckerDependency,
};
/**
* @implements AccessEntityCREDSChecker<Email>
*/
class AccessChecker implements AccessEntityCREDSChecker
{
use DefaultAccessCheckerDependency;
@@ -52,6 +52,8 @@ class AccessChecker implements AccessEntityCREDSChecker
public function checkEntityRead(User $user, Entity $entity, ScopeData $data): bool
{
/** @var Email $entity */
if ($this->defaultAccessChecker->checkEntityRead($user, $entity, $data)) {
return true;
}
@@ -79,6 +81,8 @@ class AccessChecker implements AccessEntityCREDSChecker
public function checkEntityDelete(User $user, Entity $entity, ScopeData $data): bool
{
/** @var Email $entity */
if ($user->isAdmin()) {
return true;
}
@@ -96,6 +100,7 @@ class AccessChecker implements AccessEntityCREDSChecker
return true;
}
/** @var string[] $assignedUserIdList */
$assignedUserIdList = $entity->getLinkMultipleIdList('assignedUsers');
if (
@@ -120,10 +125,46 @@ class AccessChecker implements AccessEntityCREDSChecker
return false;
}
if ($entity->get('status') !== 'Sent' && $entity->get('status') !== 'Archived') {
if (
$entity->getStatus() !== Email::STATUS_SENT &&
$entity->getStatus() !== Email::STATUS_ARCHIVED
) {
return true;
}
return false;
}
public function checkEntityEdit(User $user, Entity $entity, ScopeData $data): bool
{
/** @var Email $entity */
if (
$entity->getStatus() === Email::STATUS_DRAFT &&
$entity->getCreatedBy() &&
$entity->getCreatedBy()->getId() === $user->getId()
) {
return true;
}
return $this->defaultAccessChecker->checkEntityEdit($user, $entity, $data);
}
public function checkEdit(User $user, ScopeData $data): bool
{
if ($data->getCreate() === Table::LEVEL_YES) {
return true;
}
return $this->defaultAccessChecker->checkEdit($user, $data);
}
public function checkDelete(User $user, ScopeData $data): bool
{
if ($data->getCreate() === Table::LEVEL_YES) {
return true;
}
return $this->defaultAccessChecker->checkDelete($user, $data);
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -30,12 +30,8 @@
namespace Espo\Classes\Acl\Email;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\{
Acl\DefaultAssignmentChecker,
};
use Espo\Core\Acl\DefaultAssignmentChecker;
class AssignmentChecker extends DefaultAssignmentChecker
{

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -30,15 +30,18 @@
namespace Espo\Classes\Acl\Email;
use Espo\Entities\User;
use Espo\Entities\Email;
use Espo\ORM\Entity;
use Espo\Core\{
Acl\DefaultOwnershipChecker,
Acl\OwnershipOwnChecker,
Acl\OwnershipTeamChecker,
};
use Espo\Core\Acl\DefaultOwnershipChecker;
use Espo\Core\Acl\OwnershipOwnChecker;
use Espo\Core\Acl\OwnershipTeamChecker;
/**
* @implements OwnershipOwnChecker<Email>
* @implements OwnershipTeamChecker<Email>
*/
class OwnershipChecker implements OwnershipOwnChecker, OwnershipTeamChecker
{
private $defaultOwnershipChecker;
@@ -50,6 +53,8 @@ class OwnershipChecker implements OwnershipOwnChecker, OwnershipTeamChecker
public function checkOwn(User $user, Entity $entity): bool
{
/** @var Email $entity */
if ($user->getId() === $entity->get('assignedUserId')) {
return true;
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,48 +29,56 @@
namespace Espo\Classes\Acl\EmailFilter;
use Espo\Entities\EmailAccount;
use Espo\Entities\User;
use Espo\Entities\EmailFilter;
use Espo\ORM\Entity;
use Espo\Core\Acl\OwnershipOwnChecker;
use Espo\Core\ORM\EntityManager;
use Espo\Core\{
Acl\OwnershipOwnChecker,
ORM\EntityManager,
};
/**
* @implements OwnershipOwnChecker<EmailFilter>
*/
class OwnershipChecker implements OwnershipOwnChecker
{
private $entityManager;
private EntityManager $entityManager;
public function __construct(EntityManager $entityManager)
{
$this->entityManager = $entityManager;
}
/**
* @param EmailFilter $entity
*/
public function checkOwn(User $user, Entity $entity): bool
{
if (!$entity->has('parentId') || !$entity->has('parentType')) {
if ($entity->isGlobal()) {
return false;
}
$parentType = $entity->get('parentType');
$parentId = $entity->get('parentId');
$parentType = $entity->getParentType();
$parentId = $entity->getParentId();
if (!$parentType || !$parentId) {
return false;
}
$parent = $this->entityManager->getEntity($parentType, $parentId);
$parent = $this->entityManager->getEntityById($parentType, $parentId);
if (!$parent) {
return false;
}
if ($parent->getEntityType() === 'User') {
if ($parent->getEntityType() === User::ENTITY_TYPE) {
return $parent->getId() === $user->getId();
}
if ($parent->has('assignedUserId') && $parent->get('assignedUserId') === $user->getId()) {
if (
$parent instanceof EmailAccount &&
$parent->has('assignedUserId') &&
$parent->get('assignedUserId') === $user->getId()
) {
return true;
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,16 +29,17 @@
namespace Espo\Classes\Acl\Import;
use Espo\Entities\Import;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\Acl\AccessEntityDeleteChecker;
use Espo\Core\Acl\AccessEntityReadChecker;
use Espo\Core\Acl\ScopeData;
use Espo\Core\{
Acl\ScopeData,
Acl\AccessEntityReadChecker,
Acl\AccessEntityDeleteChecker,
};
/**
* @implements AccessEntityReadChecker<Import>
* @implements AccessEntityDeleteChecker<Import>
*/
class AccessChecker implements AccessEntityReadChecker, AccessEntityDeleteChecker
{
public function check(User $user, ScopeData $data): bool

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,38 +29,34 @@
namespace Espo\Classes\Acl\Note;
use Espo\Entities\Note;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\{
Acl\ScopeData,
Acl\DefaultAccessChecker,
Acl\AccessEntityCREDChecker,
Acl\Traits\DefaultAccessCheckerDependency,
AclManager,
ORM\EntityManager,
Utils\Config,
};
use Espo\Core\Acl\AccessEntityCREDChecker;
use Espo\Core\Acl\DefaultAccessChecker;
use Espo\Core\Acl\ScopeData;
use Espo\Core\Acl\Traits\DefaultAccessCheckerDependency;
use Espo\Core\AclManager;
use Espo\Core\ORM\EntityManager;
use Espo\Core\Utils\Config;
use DateTime;
use Exception;
/**
* @implements AccessEntityCREDChecker<Note>
*/
class AccessChecker implements AccessEntityCREDChecker
{
use DefaultAccessCheckerDependency;
private const EDIT_PERIOD = '7 days';
private const DELETE_PERIOD = '1 month';
private $defaultAccessChecker;
private $aclManager;
private $entityManager;
private $config;
private DefaultAccessChecker $defaultAccessChecker;
private AclManager $aclManager;
private EntityManager $entityManager;
private Config $config;
public function __construct(
DefaultAccessChecker $defaultAccessChecker,
@@ -74,6 +70,9 @@ class AccessChecker implements AccessEntityCREDChecker
$this->config = $config;
}
/**
* @param Note $entity
*/
public function checkEntityCreate(User $user, Entity $entity, ScopeData $data): bool
{
$parentId = $entity->get('parentId');
@@ -92,6 +91,62 @@ class AccessChecker implements AccessEntityCREDChecker
return false;
}
/**
* @param Note $entity
*/
public function checkEntityRead(User $user, Entity $entity, ScopeData $data): bool
{
if ($user->isAdmin()) {
return true;
}
$parentId = $entity->getParentId();
$parentType = $entity->getParentType();
if ($parentId && $parentType) {
$parent = $this->entityManager->getEntityById($parentType, $parentId);
if (!$parent) {
return false;
}
return $this->aclManager->checkEntityStream($user, $parent);
}
if ($entity->getType() !== Note::TYPE_POST) {
return false;
}
if ($entity->getCreatedById() === $user->getId()) {
return true;
}
if ($entity->getTargetType() === Note::TARGET_ALL) {
return true;
}
if ($entity->getTargetType() === Note::TARGET_TEAMS) {
$targetTeamIdList = $entity->getLinkMultipleIdList('teams') ?? [];
foreach ($user->getTeamIdList() as $teamId) {
if (in_array($teamId, $targetTeamIdList)) {
return true;
}
}
return false;
}
if ($entity->getTargetType() === Note::TARGET_USERS) {
return in_array($user->getId(), $entity->getLinkMultipleIdList('users') ?? []);
}
return false;
}
/**
* @param Note $entity
*/
public function checkEntityEdit(User $user, Entity $entity, ScopeData $data): bool
{
if ($user->isAdmin()) {
@@ -103,7 +158,7 @@ class AccessChecker implements AccessEntityCREDChecker
}
if (!$this->aclManager->checkOwnershipOwn($user, $entity)) {
return true;
return false;
}
$createdAt = $entity->get('createdAt');
@@ -131,6 +186,9 @@ class AccessChecker implements AccessEntityCREDChecker
return true;
}
/**
* @param Note $entity
*/
public function checkEntityDelete(User $user, Entity $entity, ScopeData $data): bool
{
if ($user->isAdmin()) {
@@ -142,7 +200,7 @@ class AccessChecker implements AccessEntityCREDChecker
}
if (!$this->aclManager->checkOwnershipOwn($user, $entity)) {
return true;
return false;
}
$createdAt = $entity->get('createdAt');

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,20 +29,22 @@
namespace Espo\Classes\Acl\Note;
use Espo\Entities\Note;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\Acl\OwnershipOwnChecker;
use Espo\Core\{
Acl\OwnershipOwnChecker,
};
/**
* @implements OwnershipOwnChecker<Note>
*/
class OwnershipChecker implements OwnershipOwnChecker
{
/**
* @param Note $entity
*/
public function checkOwn(User $user, Entity $entity): bool
{
if ($entity->get('type') === 'Post' && $user->getId() === $entity->get('createdById')) {
if ($entity->getType() === Note::TYPE_POST && $user->getId() === $entity->getCreatedById()) {
return true;
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,14 +29,14 @@
namespace Espo\Classes\Acl\Notification;
use Espo\Entities\Notification;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\Acl\OwnershipOwnChecker;
use Espo\Core\{
Acl\OwnershipOwnChecker,
};
/**
* @implements OwnershipOwnChecker<Notification>
*/
class OwnershipChecker implements OwnershipOwnChecker
{
public function checkOwn(User $user, Entity $entity): bool

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,24 +29,24 @@
namespace Espo\Classes\Acl\Portal;
use Espo\Entities\Portal;
use Espo\Entities\User;
use Espo\Core\Acl\AccessEntityCREDChecker;
use Espo\Core\Acl\DefaultAccessChecker;
use Espo\Core\Acl\ScopeData;
use Espo\Core\Acl\Table;
use Espo\Core\Acl\Traits\DefaultAccessCheckerDependency;
use Espo\Core\AclManager;
use Espo\Core\{
Acl\ScopeData,
Acl\DefaultAccessChecker,
Acl\AccessEntityCREDChecker,
Acl\Traits\DefaultAccessCheckerDependency,
Acl\Table,
AclManager,
};
/**
* @implements AccessEntityCREDChecker<Portal>
*/
class AccessChecker implements AccessEntityCREDChecker
{
use DefaultAccessCheckerDependency;
private $defaultAccessChecker;
private $aclManager;
private DefaultAccessChecker $defaultAccessChecker;
private AclManager $aclManager;
public function __construct(DefaultAccessChecker $defaultAccessChecker, AclManager $aclManager)
{

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,22 +29,22 @@
namespace Espo\Classes\Acl\ScheduledJob;
use Espo\Entities\ScheduledJob;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\Acl\AccessEntityCREDChecker;
use Espo\Core\Acl\DefaultAccessChecker;
use Espo\Core\Acl\ScopeData;
use Espo\Core\Acl\Traits\DefaultAccessCheckerDependency;
use Espo\Core\{
Acl\ScopeData,
Acl\DefaultAccessChecker,
Acl\AccessEntityCREDChecker,
Acl\Traits\DefaultAccessCheckerDependency,
};
/**
* @implements AccessEntityCREDChecker<ScheduledJob>
*/
class AccessChecker implements AccessEntityCREDChecker
{
use DefaultAccessCheckerDependency;
private $defaultAccessChecker;
private DefaultAccessChecker $defaultAccessChecker;
public function __construct(DefaultAccessChecker $defaultAccessChecker)
{

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,18 +29,19 @@
namespace Espo\Classes\Acl\Team;
use Espo\Entities\Team;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\Acl\OwnershipOwnChecker;
use Espo\Core\{
Acl\OwnershipOwnChecker,
};
/**
* @implements OwnershipOwnChecker<Team>
*/
class OwnershipChecker implements OwnershipOwnChecker
{
public function checkOwn(User $user, Entity $entity): bool
{
/** @var string[] $userTeamIdList */
$userTeamIdList = $user->getLinkMultipleIdList('teams');
return in_array($entity->getId(), $userTeamIdList);

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -30,25 +30,23 @@
namespace Espo\Classes\Acl\User;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\Acl\AccessEntityCREDSChecker;
use Espo\Core\Acl\DefaultAccessChecker;
use Espo\Core\Acl\ScopeData;
use Espo\Core\Acl\Table;
use Espo\Core\Acl\Traits\DefaultAccessCheckerDependency;
use Espo\Core\AclManager;
use Espo\Core\{
Acl\Table,
Acl\ScopeData,
Acl\DefaultAccessChecker,
Acl\AccessEntityCREDSChecker,
Acl\Traits\DefaultAccessCheckerDependency,
AclManager,
};
/**
* @implements AccessEntityCREDSChecker<User>
*/
class AccessChecker implements AccessEntityCREDSChecker
{
use DefaultAccessCheckerDependency;
private $defaultAccessChecker;
private $aclManager;
private DefaultAccessChecker $defaultAccessChecker;
private AclManager $aclManager;
public function __construct(DefaultAccessChecker $defaultAccessChecker, AclManager $aclManager)
{
@@ -62,6 +60,8 @@ class AccessChecker implements AccessEntityCREDSChecker
return false;
}
/** @var User $entity */
if ($entity->isSuperAdmin() && !$user->isSuperAdmin()) {
return false;
}
@@ -71,6 +71,8 @@ class AccessChecker implements AccessEntityCREDSChecker
public function checkEntityRead(User $user, Entity $entity, ScopeData $data): bool
{
/** @var User $entity */
if ($entity->isPortal()) {
if ($this->aclManager->getPermissionLevel($user, 'portal') === Table::LEVEL_YES) {
return true;
@@ -88,6 +90,8 @@ class AccessChecker implements AccessEntityCREDSChecker
public function checkEntityEdit(User $user, Entity $entity, ScopeData $data): bool
{
/** @var User $entity */
if ($entity->isSystem()) {
return false;
}
@@ -107,6 +111,8 @@ class AccessChecker implements AccessEntityCREDSChecker
public function checkEntityDelete(User $user, Entity $entity, ScopeData $data): bool
{
/** @var User $entity */
if (!$user->isAdmin()) {
return false;
}
@@ -124,6 +130,8 @@ class AccessChecker implements AccessEntityCREDSChecker
public function checkEntityStream(User $user, Entity $entity, ScopeData $data): bool
{
/** @var User $entity */
return $this->aclManager->checkUserPermission($user, $entity, 'user');
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -30,14 +30,15 @@
namespace Espo\Classes\Acl\User;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\ORM\Entity as CoreEntity;
use Espo\Core\Acl\OwnershipOwnChecker;
use Espo\Core\Acl\OwnershipTeamChecker;
use Espo\Core\{
Acl\OwnershipOwnChecker,
Acl\OwnershipTeamChecker,
};
/**
* @implements OwnershipOwnChecker<User>
* @implements OwnershipTeamChecker<User>
*/
class OwnershipChecker implements OwnershipOwnChecker, OwnershipTeamChecker
{
public function checkOwn(User $user, Entity $entity): bool
@@ -47,9 +48,11 @@ class OwnershipChecker implements OwnershipOwnChecker, OwnershipTeamChecker
public function checkTeam(User $user, Entity $entity): bool
{
assert($entity instanceof CoreEntity);
$intersect = array_intersect(
$user->getLinkMultipleIdList('teams'),
$entity->getLinkMultipleIdList('teams')
$user->getLinkMultipleIdList('teams') ?? [],
$entity->getLinkMultipleIdList('teams') ?? []
);
if (count($intersect)) {

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -30,22 +30,20 @@
namespace Espo\Classes\Acl\Webhook;
use Espo\Entities\User;
use Espo\Entities\Webhook;
use Espo\ORM\Entity;
use Espo\Core\Acl\AccessEntityCREDChecker;
use Espo\Core\Acl\DefaultAccessChecker;
use Espo\Core\Acl\ScopeData;
use Espo\Core\Acl\Traits\DefaultAccessCheckerDependency;
use Espo\Core\{
Acl\ScopeData,
Acl\DefaultAccessChecker,
Acl\AccessEntityCREDChecker,
Acl\Traits\DefaultAccessCheckerDependency,
};
/**
* @implements AccessEntityCREDChecker<Webhook>
*/
class AccessChecker implements AccessEntityCREDChecker
{
use DefaultAccessCheckerDependency;
private $defaultAccessChecker;
public function __construct(DefaultAccessChecker $defaultAccessChecker)
{
$this->defaultAccessChecker = $defaultAccessChecker;

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -30,13 +30,13 @@
namespace Espo\Classes\Acl\Webhook;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\{
Acl\OwnershipOwnChecker,
};
use Espo\Core\Acl\OwnershipOwnChecker;
/**
* @implements OwnershipOwnChecker<\Espo\Entities\Webhook>
*/
class OwnershipChecker implements OwnershipOwnChecker
{
public function checkOwn(User $user, Entity $entity): bool

View File

@@ -0,0 +1,89 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* EspoCRM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Classes\Acl\WorkingTimeRange;
use Espo\Core\Acl\AssignmentChecker as AssignmentCheckerInterface;
use Espo\Core\Acl\DefaultAssignmentChecker;
use Espo\Core\AclManager;
use Espo\Entities\User;
use Espo\Entities\WorkingTimeRange;
use Espo\ORM\Entity;
use Espo\ORM\EntityManager;
/**
* @implements AssignmentCheckerInterface<WorkingTimeRange>
*/
class AssignmentChecker implements AssignmentCheckerInterface
{
private DefaultAssignmentChecker $defaultAssignmentChecker;
private AclManager $aclManager;
private EntityManager $entityManager;
public function __construct(
DefaultAssignmentChecker $defaultAssignmentChecker,
AclManager $aclManager,
EntityManager $entityManager
) {
$this->defaultAssignmentChecker = $defaultAssignmentChecker;
$this->aclManager = $aclManager;
$this->entityManager = $entityManager;
}
/**
* @param WorkingTimeRange $entity
*/
public function check(User $user, Entity $entity): bool
{
$result = $this->defaultAssignmentChecker->check($user, $entity);
if (!$result) {
return false;
}
if (!$entity->isAttributeChanged('usersIds')) {
return true;
}
$users = $this->entityManager
->getRDBRepositoryByClass(User::class)
->where(['id' => $entity->getUsers()->getIdList()])
->find();
foreach ($users as $targetUser) {
$accessToUser = $this->aclManager->check($user, $targetUser);
if (!$accessToUser) {
return false;
}
}
return true;
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,31 +29,28 @@
namespace Espo\Classes\AclPortal\Attachment;
use Espo\Entities\{
User,
Note,
};
use Espo\Entities\Attachment;
use Espo\Entities\Note;
use Espo\Entities\Settings;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\Acl\AccessEntityCREDChecker;
use Espo\Core\Acl\ScopeData;
use Espo\Core\ORM\EntityManager;
use Espo\Core\Portal\Acl\DefaultAccessChecker;
use Espo\Core\Portal\Acl\Traits\DefaultAccessCheckerDependency;
use Espo\Core\Portal\AclManager;
use Espo\Core\{
ORM\EntityManager,
Portal\AclManager,
Acl\ScopeData,
Acl\AccessEntityCREDChecker,
Portal\Acl\DefaultAccessChecker,
Portal\Acl\Traits\DefaultAccessCheckerDependency,
};
/**
* @implements AccessEntityCREDChecker<Attachment>
*/
class AccessChecker implements AccessEntityCREDChecker
{
use DefaultAccessCheckerDependency;
private $defaultAccessChecker;
private $aclManager;
private $entityManager;
private DefaultAccessChecker $defaultAccessChecker;
private AclManager $aclManager;
private EntityManager $entityManager;
public function __construct(
DefaultAccessChecker $defaultAccessChecker,
@@ -67,25 +64,29 @@ class AccessChecker implements AccessEntityCREDChecker
public function checkEntityRead(User $user, Entity $entity, ScopeData $data): bool
{
if ($entity->get('parentType') === 'Settings') {
/** @var Attachment $entity */
if ($entity->get('parentType') === Settings::ENTITY_TYPE) {
// Allow the logo.
return true;
}
$parent = null;
$hasParent = false;
if ($entity->get('parentId') && $entity->get('parentType')) {
$hasParent = true;
$parentType = $entity->get('parentType');
$parentId = $entity->get('parentId');
$parent = $this->entityManager->getEntity($entity->get('parentType'), $entity->get('parentId'));
$relatedType = $entity->get('relatedType');
$relatedId = $entity->get('relatedId');
if ($parentId && $parentType) {
$parent = $this->entityManager->getEntityById($parentType, $parentId);
}
else if ($entity->get('relatedId') && $entity->get('relatedType')) {
$hasParent = true;
$parent = $this->entityManager->getEntity($entity->get('relatedType'), $entity->get('relatedId'));
else if ($relatedId && $relatedType) {
$parent = $this->entityManager->getEntityById($relatedType, $relatedId);
}
if (!$hasParent) {
if (!$parent) {
if ($entity->get('createdById') === $user->getId()) {
return true;
}
@@ -93,7 +94,8 @@ class AccessChecker implements AccessEntityCREDChecker
return false;
}
if ($parent->getEntityType() === 'Note') {
if ($parent->getEntityType() === Note::ENTITY_TYPE) {
/** @var Note $parent */
$result = $this->checkEntityReadNoteParent($user, $parent);
if ($result !== null) {
@@ -101,6 +103,16 @@ class AccessChecker implements AccessEntityCREDChecker
}
}
else if ($this->aclManager->checkEntity($user, $parent)) {
if (
$entity->getTargetField() &&
in_array(
$entity->getTargetField(),
$this->aclManager->getScopeForbiddenFieldList($user, $parent->getEntityType())
)
) {
return false;
}
return true;
}
@@ -119,8 +131,8 @@ class AccessChecker implements AccessEntityCREDChecker
if ($note->getTargetType() === Note::TARGET_PORTALS) {
$intersect = array_intersect(
$note->getLinkMultipleIdList('portals'),
$user->getLinkMultipleIdList('portals')
$note->getLinkMultipleIdList('portals') ?? [],
$user->getLinkMultipleIdList('portals') ?? []
);
if (count($intersect)) {
@@ -132,7 +144,7 @@ class AccessChecker implements AccessEntityCREDChecker
if ($note->getTargetType() === Note::TARGET_USERS) {
$isRelated = $this->entityManager
->getRDBRepository('Note')
->getRDBRepository(Note::ENTITY_TYPE)
->getRelation($note, 'users')
->isRelated($user);

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,14 +29,14 @@
namespace Espo\Classes\AclPortal\Attachment;
use Espo\Entities\Attachment;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\Acl\OwnershipOwnChecker;
use Espo\Core\{
Acl\OwnershipOwnChecker,
};
/**
* @implements OwnershipOwnChecker<Attachment>
*/
class OwnershipChecker implements OwnershipOwnChecker
{
private const ATTR_CREATED_BY_ID = 'createdById';

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,33 +29,27 @@
namespace Espo\Classes\AclPortal\Email;
use Espo\Entities\Email;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\ORM\Entity as CoreEntity;
use Espo\Core\Acl\AccessEntityCREDSChecker;
use Espo\Core\Acl\ScopeData;
use Espo\Core\Acl\Table;
use Espo\Core\Portal\Acl\DefaultAccessChecker;
use Espo\Core\Portal\Acl\Traits\DefaultAccessCheckerDependency;
use Espo\Core\{
Portal\AclManager,
Acl\Table,
Acl\ScopeData,
Acl\AccessEntityCREDSChecker,
Portal\Acl\DefaultAccessChecker,
Portal\Acl\Traits\DefaultAccessCheckerDependency,
};
/**
* @implements AccessEntityCREDSChecker<Email>
*/
class AccessChecker implements AccessEntityCREDSChecker
{
use DefaultAccessCheckerDependency;
private $defaultAccessChecker;
private $aclManager;
public function __construct(
DefaultAccessChecker $defaultAccessChecker,
AclManager $aclManager
DefaultAccessChecker $defaultAccessChecker
) {
$this->defaultAccessChecker = $defaultAccessChecker;
$this->aclManager = $aclManager;
}
public function checkEntityRead(User $user, Entity $entity, ScopeData $data): bool
@@ -72,6 +66,8 @@ class AccessChecker implements AccessEntityCREDSChecker
return false;
}
assert($entity instanceof CoreEntity);
$userIdList = $entity->getLinkMultipleIdLIst('users');
if (is_array($userIdList) && in_array($user->getId(), $userIdList)) {

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,14 +29,14 @@
namespace Espo\Classes\AclPortal\Email;
use Espo\Entities\Email;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\Acl\OwnershipOwnChecker;
use Espo\Core\{
Acl\OwnershipOwnChecker,
};
/**
* @implements OwnershipOwnChecker<Email>
*/
class OwnershipChecker implements OwnershipOwnChecker
{
public function checkOwn(User $user, Entity $entity): bool

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,38 +29,34 @@
namespace Espo\Classes\AclPortal\Note;
use Espo\Entities\Note;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\{
Portal\AclManager,
Acl\ScopeData,
Acl\AccessEntityCREDChecker,
Portal\Acl\DefaultAccessChecker,
Portal\Acl\Traits\DefaultAccessCheckerDependency,
ORM\EntityManager,
Utils\Config,
};
use Espo\Core\Acl\AccessEntityCREDChecker;
use Espo\Core\Acl\ScopeData;
use Espo\Core\ORM\EntityManager;
use Espo\Core\Portal\Acl\DefaultAccessChecker;
use Espo\Core\Portal\Acl\Traits\DefaultAccessCheckerDependency;
use Espo\Core\Portal\AclManager;
use Espo\Core\Utils\Config;
use DateTime;
use Exception;
/**
* @implements AccessEntityCREDChecker<Note>
*/
class AccessChecker implements AccessEntityCREDChecker
{
use DefaultAccessCheckerDependency;
private const EDIT_PERIOD = '7 days';
private const DELETE_PERIOD = '1 month';
private $defaultAccessChecker;
private $aclManager;
private $entityManager;
private $config;
private DefaultAccessChecker $defaultAccessChecker;
private AclManager $aclManager;
private EntityManager $entityManager;
private Config $config;
public function __construct(
DefaultAccessChecker $defaultAccessChecker,
@@ -74,16 +70,19 @@ class AccessChecker implements AccessEntityCREDChecker
$this->config = $config;
}
/**
* @param Note $entity
*/
public function checkEntityCreate(User $user, Entity $entity, ScopeData $data): bool
{
$parentId = $entity->get('parentId');
$parentType = $entity->get('parentType');
$parentId = $entity->getParentId();
$parentType = $entity->getParentType();
if (!$parentId || !$parentType) {
return $this->defaultAccessChecker->checkEntityCreate($user, $entity, $data);
}
$parent = $this->entityManager->getEntity($parentType, $parentId);
$parent = $this->entityManager->getEntityById($parentType, $parentId);
if ($parent && $this->aclManager->checkEntityStream($user, $parent)) {
return true;
@@ -92,31 +91,42 @@ class AccessChecker implements AccessEntityCREDChecker
return $this->defaultAccessChecker->checkEntityCreate($user, $entity, $data);
}
/**
* @param Note $entity
*/
public function checkEntityRead(User $user, Entity $entity, ScopeData $data): bool
{
if ($entity->get('type') !== 'Post') {
return false;
}
$parentId = $entity->getParentId();
$parentType = $entity->getParentType();
if ($entity->get('type') === 'Post' && $entity->get('targetType')) {
return false;
}
if ($parentId && $parentType) {
$parent = $this->entityManager->getEntityById($parentType, $parentId);
if (!$entity->get('parentId') || !$entity->get('parentType')) {
return false;
}
$parent = $this->entityManager->getEntity($entity->get('parentType'), $entity->get('parentId'));
if ($parent) {
if ($this->aclManager->checkEntityStream($user, $parent)) {
return true;
if (!$parent) {
return false;
}
return $this->aclManager->checkEntityStream($user, $parent);
}
if ($entity->getType() !== Note::TYPE_POST) {
return false;
}
if ($entity->getCreatedById() === $user->getId()) {
return true;
}
if ($entity->getTargetType() === Note::TARGET_PORTALS) {
return in_array($user->getPortalId(), $entity->getLinkMultipleIdList('portals') ?? []);
}
return false;
}
/**
* @param Note $entity
*/
public function checkEntityEdit(User $user, Entity $entity, ScopeData $data): bool
{
if (!$this->defaultAccessChecker->checkEntityEdit($user, $entity, $data)) {
@@ -124,7 +134,7 @@ class AccessChecker implements AccessEntityCREDChecker
}
if (!$this->aclManager->checkOwnershipOwn($user, $entity)) {
return true;
return false;
}
$createdAt = $entity->get('createdAt');
@@ -152,6 +162,9 @@ class AccessChecker implements AccessEntityCREDChecker
return true;
}
/**
* @param Note $entity
*/
public function checkEntityDelete(User $user, Entity $entity, ScopeData $data): bool
{
if (!$this->defaultAccessChecker->checkEntityDelete($user, $entity, $data)) {
@@ -159,7 +172,7 @@ class AccessChecker implements AccessEntityCREDChecker
}
if (!$this->aclManager->checkOwnershipOwn($user, $entity)) {
return true;
return false;
}
$createdAt = $entity->get('createdAt');

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,19 +29,22 @@
namespace Espo\Classes\AclPortal\Note;
use Espo\Entities\Note;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\Acl\OwnershipOwnChecker;
use Espo\Core\{
Acl\OwnershipOwnChecker,
};
/**
* @implements OwnershipOwnChecker<Note>
*/
class OwnershipChecker implements OwnershipOwnChecker
{
/**
* @param Note $entity
*/
public function checkOwn(User $user, Entity $entity): bool
{
if ($entity->get('type') === 'Post' && $user->getId() === $entity->get('createdById')) {
if ($entity->getType() === Note::TYPE_POST && $user->getId() === $entity->getCreatedById()) {
return true;
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,14 +29,14 @@
namespace Espo\Classes\AclPortal\Notification;
use Espo\Entities\Notification;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\Acl\OwnershipOwnChecker;
use Espo\Core\{
Acl\OwnershipOwnChecker,
};
/**
* @implements OwnershipOwnChecker<Notification>
*/
class OwnershipChecker implements OwnershipOwnChecker
{
public function checkOwn(User $user, Entity $entity): bool

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -30,13 +30,12 @@
namespace Espo\Classes\AclPortal\User;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\Acl\OwnershipOwnChecker;
use Espo\Core\{
Acl\OwnershipOwnChecker,
};
/**
* @implements OwnershipOwnChecker<User>
*/
class OwnershipChecker implements OwnershipOwnChecker
{
public function checkOwn(User $user, Entity $entity): bool

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,16 +29,14 @@
namespace Espo\Classes\AppInfo;
use Espo\Core\{
Utils\Module,
Binding\EspoBindingLoader,
Binding\Binding as BindingItem,
Console\Command\Params,
};
use Espo\Core\Binding\Binding as BindingItem;
use Espo\Core\Binding\EspoBindingLoader;
use Espo\Core\Console\Command\Params;
use Espo\Core\Utils\Module;
class Binding
{
private $module;
private Module $module;
public function __construct(Module $module)
{
@@ -69,7 +67,7 @@ class Binding
$keyList = $data->getContextKeyList($context);
foreach ($keyList as $key) {
$result .= $this->printItem($key, $data->getContext($context, $key), true);
$result .= $this->printItem($key, $data->getContext($context, $key));
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -63,10 +63,11 @@ class Container
'user',
];
/** @var string[] $fileList */
$fileList = scandir('application/Espo/Core/Loaders');
if (file_exists('custom/Espo/Custom/Core/Loaders')) {
$fileList = array_merge($fileList, scandir('custom/Espo/Custom/Core/Loaders'));
$fileList = array_merge($fileList, scandir('custom/Espo/Custom/Core/Loaders') ?: []);
}
foreach ($fileList as $file) {

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -0,0 +1,92 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* EspoCRM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Classes\AppParams;
use Espo\Entities\Extension;
use Espo\Entities\User;
use Espo\ORM\EntityManager;
use Espo\Tools\App\AppParam;
use stdClass;
class Extensions implements AppParam
{
private User $user;
private EntityManager $entityManager;
public function __construct(
User $user,
EntityManager $entityManager
) {
$this->user = $user;
$this->entityManager = $entityManager;
}
/**
* @return stdClass[]
*/
public function get(): array
{
if (!$this->user->isRegular() && !$this->user->isAdmin()) {
return [];
}
$extensionList = $this->entityManager
->getRDBRepositoryByClass(Extension::class)
->where([
'licenseStatus' => [
Extension::LICENSE_STATUS_INVALID,
Extension::LICENSE_STATUS_EXPIRED,
Extension::LICENSE_STATUS_SOFT_EXPIRED,
],
])
->find();
$list = [];
foreach ($extensionList as $extension) {
$list[] = (object) [
'name' => $extension->getName(),
'version' => $extension->getVersion(),
'licenseStatus' => $extension->getLicenseStatus(),
'licenseStatusMessage' => $extension->getLicenseStatusMessage(),
'isInstalled' => $extension->isInstalled(),
'notify' => in_array(
$extension->getLicenseStatus(),
[
Extension::LICENSE_STATUS_INVALID,
Extension::LICENSE_STATUS_EXPIRED,
]
)
];
}
return $list;
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,31 +29,37 @@
namespace Espo\Classes\AppParams;
use Espo\Core\{
Acl,
Select\SelectBuilderFactory,
ORM\EntityManager,
};
use Espo\Core\Acl;
use Espo\Core\ORM\EntityManager;
use Espo\Core\Select\SelectBuilderFactory;
use Espo\Entities\Template;
use Espo\Tools\App\AppParam;
/**
* Returns a list of entity types for which a PDF template exists.
*/
class TemplateEntityTypeList
class TemplateEntityTypeList implements AppParam
{
protected $acl;
protected $selectBuilderFactory;
protected $entityManager;
private Acl $acl;
private SelectBuilderFactory $selectBuilderFactory;
private EntityManager $entityManager;
public function __construct(Acl $acl, SelectBuilderFactory $selectBuilderFactory, EntityManager $entityManager)
{
public function __construct(
Acl $acl,
SelectBuilderFactory $selectBuilderFactory,
EntityManager $entityManager
) {
$this->acl = $acl;
$this->selectBuilderFactory = $selectBuilderFactory;
$this->entityManager = $entityManager;
}
public function get() : array
/**
* @return string[]
*/
public function get(): array
{
if (!$this->acl->checkScope('Template')) {
if (!$this->acl->checkScope(Template::ENTITY_TYPE)) {
return [];
}
@@ -61,7 +67,7 @@ class TemplateEntityTypeList
$query = $this->selectBuilderFactory
->create()
->from('Template')
->from(Template::ENTITY_TYPE)
->withAccessControlFilter()
->buildQueryBuilder()
->select(['entityType'])
@@ -69,12 +75,12 @@ class TemplateEntityTypeList
->build();
$templateCollection = $this->entityManager
->getRepository('Template')
->getRDBRepositoryByClass(Template::class)
->clone($query)
->find();
foreach ($templateCollection as $template) {
$list[] = $template->get('entityType');
$list[] = $template->getTargetEntityType();
}
return $list;

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,57 +29,68 @@
namespace Espo\Classes\AssignmentNotificators;
use Espo\Services\Email as EmailService;
use Espo\Services\Stream as StreamService;
use Espo\Core\Field\DateTime;
use Espo\Entities\EmailAddress;
use Espo\Entities\EmailFolder;
use Espo\Modules\Crm\Entities\Account;
use Espo\Modules\Crm\Entities\Contact;
use Espo\Modules\Crm\Entities\Lead;
use Espo\Tools\Stream\Service as StreamService;
use Espo\Core\Notification\AssignmentNotificator;
use Espo\Core\Notification\AssignmentNotificator\Params;
use Espo\Core\Notification\UserEnabledChecker;
use Espo\Core\ServiceFactory;
use Espo\Core\AclManager;
use Espo\ORM\EntityManager;
use Espo\ORM\Entity;
use Espo\Entities\User;
use Espo\Entities\Notification;
use Espo\Entities\Email as EmailEntity;
use Espo\Repositories\Email as EmailRepository;
use Espo\Repositories\EmailAddress as EmailAddressRepository;
use Espo\Tools\Email\Util;
use DateTime;
use Exception;
/**
* @implements AssignmentNotificator<EmailEntity>
*/
class Email implements AssignmentNotificator
{
private const DAYS_THRESHOLD = 2;
private $streamService = null;
private $user;
private $entityManager;
private $serviceFactory;
private $aclManager;
private $userChecker;
private User $user;
private EntityManager $entityManager;
private UserEnabledChecker $userChecker;
private AclManager $aclManager;
private StreamService $streamService;
public function __construct(
User $user,
EntityManager $entityManager,
UserEnabledChecker $userChecker,
ServiceFactory $serviceFactory,
AclManager $aclManager
AclManager $aclManager,
StreamService $streamService
) {
$this->user = $user;
$this->entityManager = $entityManager;
$this->userChecker = $userChecker;
$this->serviceFactory = $serviceFactory;
$this->aclManager = $aclManager;
$this->streamService = $streamService;
}
/**
* @param EmailEntity $entity
*/
public function process(Entity $entity, Params $params): void
{
if (!in_array($entity->get('status'), ['Archived', 'Sent', 'Being Imported'])) {
if (
!in_array(
$entity->getStatus(),
[
EmailEntity::STATUS_ARCHIVED,
EmailEntity::STATUS_SENT,
EmailEntity::STATUS_BEING_IMPORTED,
]
)
) {
return;
}
@@ -94,30 +105,19 @@ class Email implements AssignmentNotificator
}
}
$dateSent = $entity->get('dateSent');
$dateSent = $entity->getDateSent();
if (!$dateSent) {
return;
}
try {
$dt = new DateTime($dateSent);
}
catch (Exception $e) {
return;
}
if (!$dt) {
return;
}
if ($dt->diff(new DateTime())->days > self::DAYS_THRESHOLD) {
if ($dateSent->diff(DateTime::createNow())->days > self::DAYS_THRESHOLD) {
return;
}
$emailUserIdList = $entity->get('usersIds');
if (is_null($emailUserIdList) || !is_array($emailUserIdList)) {
if (!is_array($emailUserIdList)) {
return;
}
@@ -135,15 +135,20 @@ class Email implements AssignmentNotificator
$data = [
'emailId' => $entity->getId(),
'emailName' => $entity->get('name'),
'emailName' => $entity->getSubject(),
];
/** @var EmailRepository $emailRepository */
$emailRepository = $this->entityManager->getRepository(EmailEntity::ENTITY_TYPE);
/** @var EmailAddressRepository $emailAddressRepository */
$emailAddressRepository = $this->entityManager->getRepository(EmailAddress::ENTITY_TYPE);
if (!$entity->has('from')) {
$this->entityManager->getRepository('Email')->loadFromField($entity);
$emailRepository->loadFromField($entity);
}
if (!$entity->has('to')) {
$this->entityManager->getRepository('Email')->loadToField($entity);
$emailRepository->loadToField($entity);
}
$person = null;
@@ -151,9 +156,11 @@ class Email implements AssignmentNotificator
$from = $entity->get('from');
if ($from) {
$person = $this->entityManager
->getRepository('EmailAddress')
->getEntityByAddress($from, null, ['User', 'Contact', 'Lead']);
$person = $emailAddressRepository->getEntityByAddress($from, null, [
User::ENTITY_TYPE,
Contact::ENTITY_TYPE,
Lead::ENTITY_TYPE,
]);
if ($person) {
$data['personEntityType'] = $person->getEntityType();
@@ -164,12 +171,12 @@ class Email implements AssignmentNotificator
$userIdFrom = null;
if ($person && $person->getEntityType() === 'User') {
$userIdFrom = $person->id;
if ($person && $person->getEntityType() === User::ENTITY_TYPE) {
$userIdFrom = $person->getId();
}
if (empty($data['personEntityId'])) {
$data['fromString'] = EmailService::parseFromName($entity->get('fromString'));
$data['fromString'] = Util::parseFromName($entity->getFromString());
if (empty($data['fromString']) && $from) {
$data['fromString'] = $from;
@@ -178,14 +185,19 @@ class Email implements AssignmentNotificator
$parent = null;
if ($entity->get('parentId') && $entity->get('parentType')) {
$parent = $this->entityManager->getEntity($entity->get('parentType'), $entity->get('parentId'));
$parentId = $entity->getParentId();
$parentType = $entity->getParentType();
if ($parentType && $parentId) {
$parent = $this->entityManager->getEntityById($parentType, $parentId);
}
$account = null;
if ($entity->get('accountId')) {
$account = $this->entityManager->getEntity('Account', $entity->get('accountId'));
$accountLink = $entity->getAccount();
if ($accountLink) {
$account = $this->entityManager->getEntityById(Account::ENTITY_TYPE, $accountLink->getId());
}
foreach ($userIdList as $userId) {
@@ -197,11 +209,15 @@ class Email implements AssignmentNotificator
continue;
}
if ($entity->getLinkMultipleColumn('users', 'inTrash', $userId)) {
if ($entity->getLinkMultipleColumn('users', EmailEntity::USERS_COLUMN_IN_TRASH, $userId)) {
continue;
}
if (!$this->userChecker->checkAssignment('Email', $userId)) {
if ($entity->getLinkMultipleColumn('users', EmailEntity::USERS_COLUMN_IS_READ, $userId)) {
continue;
}
if (!$this->userChecker->checkAssignment(EmailEntity::ENTITY_TYPE, $userId)) {
continue;
}
@@ -209,24 +225,24 @@ class Email implements AssignmentNotificator
$params->getOption('isBeingImported') ||
$params->getOption('isJustSent')
) {
$folderId = $entity->getLinkMultipleColumn('users', 'folderId', $userId);
$folderId = $entity->getLinkMultipleColumn('users', EmailEntity::USERS_COLUMN_FOLDER_ID, $userId);
if ($folderId) {
if (
$this->entityManager
->getRepository('EmailFolder')
->where([
'id' => $folderId,
'skipNotifications' => true,
])
->count()
) {
continue;
}
if (
$folderId &&
$this->entityManager
->getRDBRepositoryByClass(EmailFolder::class)
->where([
'id' => $folderId,
'skipNotifications' => true,
])
->count()
) {
continue;
}
}
$user = $this->entityManager->getEntity('User', $userId);
/** @var ?User $user */
$user = $this->entityManager->getEntityById(User::ENTITY_TYPE, $userId);
if (!$user) {
continue;
@@ -236,18 +252,18 @@ class Email implements AssignmentNotificator
continue;
}
if (!$this->aclManager->checkScope($user, 'Email')) {
if (!$this->aclManager->checkScope($user, EmailEntity::ENTITY_TYPE)) {
continue;
}
$isArchivedOrBeingImported =
$entity->get('status') === 'Archived' ||
$entity->getStatus() === EmailEntity::STATUS_ARCHIVED ||
$params->getOption('isBeingImported');
if (
$isArchivedOrBeingImported &&
$parent &&
$this->getStreamService()->checkIsFollowed($parent, $userId)
$this->streamService->checkIsFollowed($parent, $userId)
) {
continue;
}
@@ -255,18 +271,18 @@ class Email implements AssignmentNotificator
if (
$isArchivedOrBeingImported &&
$account &&
$this->getStreamService()->checkIsFollowed($account, $userId)
$this->streamService->checkIsFollowed($account, $userId)
) {
continue;
}
$existing = $this->entityManager
->getRepository(Notification::ENTITY_TYPE)
->getRDBRepository(Notification::ENTITY_TYPE)
->where([
'type' => Notification::TYPE_EMAIL_RECEIVED,
'userId' => $userId,
'relatedId' => $entity->getId(),
'relatedType' => 'Email',
'relatedType' => EmailEntity::ENTITY_TYPE,
])
->select(['id'])
->findOne();
@@ -280,17 +296,8 @@ class Email implements AssignmentNotificator
'userId' => $userId,
'data' => $data,
'relatedId' => $entity->getId(),
'relatedType' => 'Email',
'relatedType' => EmailEntity::ENTITY_TYPE,
]);
}
}
private function getStreamService(): StreamService
{
if (empty($this->streamService)) {
$this->streamService = $this->serviceFactory->create('Stream');
}
return $this->streamService;
}
}

View File

@@ -0,0 +1,73 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* EspoCRM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Classes\Cleanup;
use Espo\Core\Cleanup\Cleanup;
use Espo\Core\Utils\Config;
use Espo\ORM\EntityManager;
use Espo\Core\Field\DateTime;
use Espo\Entities\Export;
class Exports implements Cleanup
{
private $config;
private $entityManager;
private string $cleanupPeriod = '2 days';
public function __construct(Config $config, EntityManager $entityManager)
{
$this->config = $config;
$this->entityManager = $entityManager;
}
public function process(): void
{
$period = '-' . $this->config->get('cleanupExportsPeriod', $this->cleanupPeriod);
$before = DateTime::createNow()
->modify($period)
->getString();
$delete = $this->entityManager
->getQueryBuilder()
->delete()
->from(Export::ENTITY_TYPE)
->where([
'createdAt<' => $before,
])
->build();
$this->entityManager->getQueryExecutor()->execute($delete);
}
}

View File

@@ -0,0 +1,71 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* EspoCRM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Classes\Cleanup;
use Espo\Core\Cleanup\Cleanup;
use Espo\Core\Utils\Config;
use Espo\ORM\EntityManager;
use Espo\Core\Field\DateTime;
class MassActions implements Cleanup
{
private $config;
private $entityManager;
private string $cleanupPeriod = '14 days';
public function __construct(Config $config, EntityManager $entityManager)
{
$this->config = $config;
$this->entityManager = $entityManager;
}
public function process(): void
{
$period = '-' . $this->config->get('cleanupMassActionsPeriod', $this->cleanupPeriod);
$before = DateTime::createNow()
->modify($period)
->getString();
$delete = $this->entityManager
->getQueryBuilder()
->delete()
->from('MassAction')
->where([
'createdAt<' => $before,
])
->build();
$this->entityManager->getQueryExecutor()->execute($delete);
}
}

View File

@@ -0,0 +1,72 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* EspoCRM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Classes\Cleanup;
use Espo\Core\Cleanup\Cleanup;
use Espo\Core\Utils\Config;
use Espo\Core\Field\DateTime;
use Espo\ORM\EntityManager;
use Espo\Entities\PasswordChangeRequest;
class PasswordChangeRequests implements Cleanup
{
private Config $config;
private EntityManager $entityManager;
private string $cleanupPeriod = '30 days';
public function __construct(Config $config, EntityManager $entityManager)
{
$this->config = $config;
$this->entityManager = $entityManager;
}
public function process(): void
{
$period = '-' . $this->config->get('cleanupPasswordChangeRequestsPeriod', $this->cleanupPeriod);
$before = DateTime::createNow()
->modify($period)
->getString();
$delete = $this->entityManager
->getQueryBuilder()
->delete()
->from(PasswordChangeRequest::ENTITY_TYPE)
->where([
'createdAt<' => $before,
])
->build();
$this->entityManager->getQueryExecutor()->execute($delete);
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -31,17 +31,18 @@ namespace Espo\Classes\Cleanup;
use Espo\Core\Cleanup\Cleanup;
use Espo\Core\Utils\Config;
use Espo\Core\Utils\DateTime as DateTimeUtil;
use Espo\Modules\Crm\Entities\Reminder;
use Espo\ORM\EntityManager;
use DateTime;
class Reminders implements Cleanup
{
private $config;
private string $cleanupRemindersPeriod = '15 days';
private $entityManager;
private $cleanupRemindersPeriod = '15 days';
private Config $config;
private EntityManager $entityManager;
public function __construct(Config $config, EntityManager $entityManager)
{
@@ -60,9 +61,9 @@ class Reminders implements Cleanup
$delete = $this->entityManager
->getQueryBuilder()
->delete()
->from('Reminder')
->from(Reminder::ENTITY_TYPE)
->where([
'remindAt<' => $dt->format('Y-m-d'),
'remindAt<' => $dt->format(DateTimeUtil::SYSTEM_DATE_TIME_FORMAT),
])
->build();

View File

@@ -0,0 +1,137 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* EspoCRM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Classes\Cleanup;
use Espo\Core\Cleanup\Cleanup;
use Espo\Core\Field\DateTime;
use Espo\Core\Utils\Config;
use Espo\Core\Utils\Metadata;
use Espo\Entities\Subscription;
use Espo\ORM\EntityManager;
use Espo\ORM\Query\Part\Condition as Cond;
class Subscribers implements Cleanup
{
private const PERIOD = '2 months';
private Metadata $metadata;
private EntityManager $entityManager;
private Config $config;
public function __construct(
Metadata $metadata,
EntityManager $entityManager,
Config $config
) {
$this->metadata = $metadata;
$this->entityManager = $entityManager;
$this->config = $config;
}
public function process(): void
{
if (!$this->config->get('cleanupSubscribers')) {
return;
}
/** @var string[] $scopeList */
$scopeList = array_keys($this->metadata->get(['scopes']) ?? []);
/** @var string[] $scopeList */
$scopeList = array_values(array_filter(
$scopeList,
fn ($item) => (bool) $this->metadata->get(['scopes', $item, 'stream'])
));
foreach ($scopeList as $scope) {
$this->processEntityType($scope);
}
}
private function processEntityType(string $entityType): void
{
/** @var ?array<string, mixed> $data */
$data = $this->metadata->get(['streamDefs', $entityType, 'subscribersCleanup']);
if (!($data['enabled'] ?? false)) {
return;
}
/** @var string $dateField */
$dateField = $data['dateField'] ?? 'createdAt';
/** @var ?string[] $statusList */
$statusList = $data['statusList'] ?? null;
/** @var ?string $statusField */
$statusField = $this->metadata->get(['scopes', $entityType, 'statusField']);
if ($statusList === null || $statusField === null) {
return;
}
/** @var string $period */
$period = $this->metadata->get(['streamDefs', $entityType, 'subscribersCleanup', 'period']) ??
$this->config->get('cleanupSubscribersPeriod') ??
self::PERIOD;
$before = DateTime::createNow()->modify('-' . $period);
$query = $this->entityManager
->getQueryBuilder()
->delete()
->from(Subscription::ENTITY_TYPE, 'subscription')
->join(
$entityType,
'entity',
Cond::equal(
Cond::column('entity.id'),
Cond::column('entityId')
)
)
->where(
Cond::and(
Cond::equal(
Cond::column('entityType'),
$entityType
),
Cond::less(
Cond::column('entity.' . $dateField),
$before->getString()
),
Cond::in(
Cond::column('entity.' . $statusField),
$statusList
)
)
)
->build();
$this->entityManager->getQueryExecutor()->execute($query);
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -37,7 +37,7 @@ use DateTime;
class WebhookQueue implements Cleanup
{
private $cleanupWebhookQueuePeriod = '10 days';
private string $cleanupWebhookQueuePeriod = '10 days';
private $config;

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -31,6 +31,8 @@ namespace Espo\Classes\ConsoleCommands;
use Espo\Tools\Import\Service;
use Espo\Core\Utils\File\Manager as FileManager;
use Espo\Core\{
Console\Command,
Console\Command\Params,
@@ -41,11 +43,14 @@ use Throwable;
class Import implements Command
{
private $service;
private Service $service;
public function __construct(Service $service)
private FileManager $fileManager;
public function __construct(Service $service, FileManager $fileManager)
{
$this->service = $service;
$this->fileManager = $fileManager;
}
public function run(Params $params, IO $io) : void
@@ -64,13 +69,13 @@ class Import implements Command
return;
}
if (!file_exists($filePath)) {
if (!$this->fileManager->isFile($filePath)) {
$io->writeLine("File not found.");
return;
}
$contents = file_get_contents($filePath);
$contents = $this->fileManager->getContents($filePath);
try {
$result = $this->service->importContentsWithParamsId($contents, $paramsId);
@@ -78,14 +83,21 @@ class Import implements Command
$resultId = $result->getId();
$countCreated = $result->getCountCreated();
$countUpdated = $result->getCountUpdated();
$countError = $result->getCountError();
$countDuplicate = $result->getCountDuplicate();
}
catch (Throwable $e) {
$io->writeLine("Error occurred: ". $e->getMessage() . "");
$io->writeLine("Error occurred: " . $e->getMessage());
return;
}
$io->writeLine("Finished. Import ID: {$resultId}. Created: {$countCreated}. Updated: {$countUpdated}.");
$io->writeLine("Finished.");
$io->writeLine(" Import ID: {$resultId}");
$io->writeLine(" Created: {$countCreated}");
$io->writeLine(" Updated: {$countUpdated}");
$io->writeLine(" Duplicates: {$countDuplicate}");
$io->writeLine(" Errors: {$countError}");
return;
}
@@ -97,7 +109,7 @@ class Import implements Command
$this->service->revert($id);
}
catch (Throwable $e) {
$io->writeLine("Error occurred: " . $e->getMessage() . "");
$io->writeLine("Error occurred: " . $e->getMessage());
return;
}
@@ -114,15 +126,21 @@ class Import implements Command
$result = $this->service->importById($id, true, $forceResume);
}
catch (Throwable $e) {
$io->writeLine("Error occurred: " . $e->getMessage() . "");
$io->writeLine("Error occurred: " . $e->getMessage());
return;
}
$countCreated = $result->getCountCreated();
$countUpdated = $result->getCountUpdated();
$countError = $result->getCountError();
$countDuplicate = $result->getCountDuplicate();
$io->writeLine("Finished. Created: {$countCreated}. Updated: {$countUpdated}.");
$io->writeLine("Finished.");
$io->writeLine(" Created: {$countCreated}");
$io->writeLine(" Updated: {$countUpdated}");
$io->writeLine(" Duplicates: {$countDuplicate}");
$io->writeLine(" Errors: {$countError}");
return;
}

View File

@@ -0,0 +1,108 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* EspoCRM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Classes\ConsoleCommands;
use Espo\Core\Console\Command;
use Espo\Core\Console\Command\Params;
use Espo\Core\Console\IO;
use Espo\Core\Exceptions\Error;
use Espo\Core\ORM\Entity as CoreEntity;
use Espo\Entities\ArrayValue;
use Espo\ORM\Entity;
use Espo\ORM\EntityManager;
use Espo\Repositories\ArrayValue as ArrayValueRepository;
class PopulateArrayValues implements Command
{
private EntityManager $entityManager;
public function __construct(EntityManager $entityManager)
{
$this->entityManager = $entityManager;
}
/**
* @throws Error
*/
public function run(Params $params, IO $io): void
{
$entityType = $params->getArgument(0);
$field = $params->getArgument(1);
if (!$entityType || !$field) {
throw new Error("Entity type and field should be passed as arguments.");
}
if (!$this->entityManager->hasRepository($entityType)) {
throw new Error("Bad entity type.");
}
$defs = $this->entityManager->getDefs()->getEntity($entityType);
if (!$defs->hasAttribute($field)) {
throw new Error("Bad field.");
}
if ($defs->getAttribute($field)->getType() !== Entity::JSON_ARRAY) {
throw new Error("Non-array field.");
}
if ($defs->getAttribute($field)->isNotStorable()) {
throw new Error("Not-storable field.");
}
if (!$defs->getAttribute($field)->getParam('storeArrayValues')) {
throw new Error("Array values disabled for the field..");
}
$collection = $this->entityManager
->getRDBRepository($entityType)
->sth()
->find();
/** @var ArrayValueRepository $repository */
$repository = $this->entityManager->getRepository(ArrayValue::ENTITY_TYPE);
foreach ($collection as $i => $entity) {
if (!$entity instanceof CoreEntity) {
throw new Error();
}
$repository->storeEntityAttribute($entity, $field);
if ($i % 1000 === 0) {
$io->write('.');
}
}
$io->writeLine('');
$io->writeLine('Done.');
}
}

View File

@@ -0,0 +1,111 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* EspoCRM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Classes\ConsoleCommands;
use Espo\Core\Console\Command;
use Espo\Core\Console\Command\Params;
use Espo\Core\Console\Exceptions\ArgumentNotSpecified;
use Espo\Core\Console\Exceptions\InvalidArgument;
use Espo\Core\Console\IO;
use Espo\Core\Exceptions\Error;
use Espo\Core\FieldProcessing\NextNumber\BeforeSaveProcessor;
use Espo\Core\ORM\Entity as CoreEntity;
use Espo\Core\ORM\Repository\Option\SaveOption;
use Espo\ORM\EntityManager;
use Espo\ORM\Query\Part\Order;
class PopulateNumbers implements Command
{
private BeforeSaveProcessor $beforeSaveProcessor;
private EntityManager $entityManager;
public function __construct(
BeforeSaveProcessor $beforeSaveProcessor,
EntityManager $entityManager
) {
$this->beforeSaveProcessor = $beforeSaveProcessor;
$this->entityManager = $entityManager;
}
/**
* @throws Error
*/
public function run(Params $params, IO $io): void
{
$entityType = $params->getArgument(0);
$field = $params->getArgument(1);
$orderBy = $params->getOption('orderBy') ?? 'createdAt';
$order = $params->getOption('order') ?? Order::ASC;
if (!$entityType) {
throw new ArgumentNotSpecified("No entity type argument.");
}
if (!$field) {
throw new ArgumentNotSpecified("No field argument.");
}
$fieldType = $this->entityManager
->getDefs()
->getEntity($entityType)
->getField($field)
->getType();
if ($fieldType !== 'number') {
throw new InvalidArgument("Field `{$field}` is not of `number` type.");
}
$collection = $this->entityManager
->getRDBRepository($entityType)
->where([
$field => null,
])
->order($orderBy, $order)
->sth()
->find();
foreach ($collection as $i => $entity) {
if (!$entity instanceof CoreEntity) {
throw new Error();
}
$this->beforeSaveProcessor->processPopulate($entity, $field);
$this->entityManager->saveEntity($entity, [SaveOption::IMPORT => true]);
if ($i % 1000 === 0) {
$io->write('.');
}
}
$io->writeLine('');
$io->writeLine('Done.');
}
}

View File

@@ -0,0 +1,70 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* EspoCRM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Classes\ConsoleCommands;
use Espo\Core\Console\Command;
use Espo\Core\Console\Command\Params;
use Espo\Core\Console\IO;
use Espo\Tools\CategoryTree\RebuildPaths;
use Exception;
class RebuildCategoryPaths implements Command
{
private RebuildPaths $rebuildPaths;
public function __construct(RebuildPaths $rebuildPaths)
{
$this->rebuildPaths = $rebuildPaths;
}
public function run(Params $params, IO $io): void
{
$entityType = $params->getArgument(0);
if (!$entityType) {
$io->setExitStatus(1);
$io->writeLine("Error: No entity type. Should be specified as the first argument.");
return;
}
try {
$this->rebuildPaths->run($entityType);
}
catch (Exception $e) {
$io->setExitStatus(1);
$io->writeLine("Error: " . $e->getMessage());
return;
}
$io->writeLine("Done.");
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -33,32 +33,32 @@ use Espo\Core\Utils\Metadata;
class DefaultSidePanelType
{
protected $metadata;
private $metadata;
public function __construct(Metadata $metadata)
{
$this->metadata = $metadata;
}
/**
* @return \stdClass[]
*/
public function get(string $scope): array
{
$list = [];
if (
$this->metadata->get(['entityDefs', $scope, 'fields', 'assignedUser', 'type']) === 'link'
&&
$this->metadata->get(['entityDefs', $scope, 'fields', 'assignedUser', 'type']) === 'link' &&
$this->metadata->get(['entityDefs', $scope, 'links', 'assignedUser', 'entity']) === 'User'
||
$this->metadata->get(['entityDefs', $scope, 'fields', 'assignedUsers', 'type']) === 'linkMultiple'
&&
$this->metadata->get(['entityDefs', $scope, 'fields', 'assignedUsers', 'type']) === 'linkMultiple' &&
$this->metadata->get(['entityDefs', $scope, 'links', 'assignedUsers', 'entity']) === 'User'
) {
$list[] = (object) ['name' => ':assignedUser'];
}
if (
$this->metadata->get(['entityDefs', $scope, 'fields', 'teams', 'type']) === 'linkMultiple'
&&
$this->metadata->get(['entityDefs', $scope, 'fields', 'teams', 'type']) === 'linkMultiple' &&
$this->metadata->get(['entityDefs', $scope, 'links', 'teams', 'entity']) === 'Team'
) {
$list[] = (object) ['name' => 'teams'];

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -30,6 +30,8 @@
namespace Espo\Classes\DuplicateWhereBuilders;
use Espo\Core\Duplicate\WhereBuilder;
use Espo\Core\Field\EmailAddressGroup;
use Espo\Core\ORM\Entity as CoreEntity;
use Espo\ORM\{
Query\Part\Condition as Cond,
@@ -38,10 +40,15 @@ use Espo\ORM\{
Entity,
};
/**
* @implements WhereBuilder<CoreEntity>
*/
class Company implements WhereBuilder
{
public function build(Entity $entity): ?WhereItem
{
assert($entity instanceof CoreEntity);
$orBuilder = OrGroup::createBuilder();
$toCheck = false;
@@ -84,10 +91,13 @@ class Company implements WhereBuilder
return $orBuilder->build();
}
private function getEmailAddressList(Entity $entity): array
/**
* @return string[]
*/
private function getEmailAddressList(CoreEntity $entity): array
{
if ($entity->get('emailAddressData')) {
/* @var $eaGroup EmailAddressGroup */
/** @var EmailAddressGroup $eaGroup */
$eaGroup = $entity->getValueObject('emailAddress');
return $eaGroup->getAddressList();

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,6 +29,8 @@
namespace Espo\Classes\DuplicateWhereBuilders;
use Espo\Core\ORM\Entity as CoreEntity;
use Espo\Core\{
Duplicate\WhereBuilder,
Field\EmailAddressGroup,
@@ -41,10 +43,15 @@ use Espo\ORM\{
Entity,
};
/**
* @implements WhereBuilder<CoreEntity>
*/
class Person implements WhereBuilder
{
public function build(Entity $entity): ?WhereItem
{
assert($entity instanceof CoreEntity);
$orBuilder = OrGroup::createBuilder();
$toCheck = false;
@@ -93,10 +100,13 @@ class Person implements WhereBuilder
return $orBuilder->build();
}
private function getEmailAddressList(Entity $entity): array
/**
* @return string[]
*/
private function getEmailAddressList(CoreEntity $entity): array
{
if ($entity->get('emailAddressData')) {
/* @var $eaGroup EmailAddressGroup */
/** @var EmailAddressGroup $eaGroup */
$eaGroup = $entity->getValueObject('emailAddress');
return $eaGroup->getAddressList();

View File

@@ -0,0 +1,90 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* EspoCRM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Classes\FieldDuplicators;
use Espo\Core\Record\Duplicator\FieldDuplicator;
use Espo\ORM\Entity;
use Espo\ORM\EntityManager;
use Espo\Repositories\Attachment as AttachmentRepository;
use Espo\Entities\Attachment;
use stdClass;
class AttachmentMultiple implements FieldDuplicator
{
private $entityManager;
public function __construct(EntityManager $entityManager)
{
$this->entityManager = $entityManager;
}
public function duplicate(Entity $entity, string $field): stdClass
{
$valueMap = (object) [];
/** @var \Espo\ORM\Collection<Attachment> $attachmentList */
$attachmentList = $this->entityManager
->getRDBRepository($entity->getEntityType())
->getRelation($entity, $field)
->find();
if (is_countable($attachmentList) && !count($attachmentList)) {
return $valueMap;
}
$idList = [];
$nameHash = (object) [];
$typeHash = (object) [];
/** @var AttachmentRepository $attachmentRepository */
$attachmentRepository = $this->entityManager->getRepository(Attachment::ENTITY_TYPE);
foreach ($attachmentList as $attachment) {
$copiedAttachment = $attachmentRepository->getCopiedAttachment($attachment);
$copiedAttachment->set('field', $field);
$this->entityManager->saveEntity($copiedAttachment);
$idList[] = $copiedAttachment->getId();
$nameHash->{$copiedAttachment->getId()} = $copiedAttachment->getName();
$typeHash->{$copiedAttachment->getId()} = $copiedAttachment->getType();
}
$valueMap->{$field . 'Ids'} = $idList;
$valueMap->{$field . 'Names'} = $nameHash;
$valueMap->{$field . 'Types'} = $typeHash;
return $valueMap;
}
}

View File

@@ -0,0 +1,75 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* EspoCRM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Classes\FieldDuplicators;
use Espo\Core\Record\Duplicator\FieldDuplicator;
use Espo\ORM\Entity;
use Espo\ORM\EntityManager;
use Espo\Repositories\Attachment as AttachmentRepository;
use Espo\Entities\Attachment;
use stdClass;
class File implements FieldDuplicator
{
private $entityManager;
public function __construct(EntityManager $entityManager)
{
$this->entityManager = $entityManager;
}
public function duplicate(Entity $entity, string $field): stdClass
{
$valueMap = (object) [];
/** @var Attachment|null $attachment */
$attachment = $this->entityManager
->getRDBRepository($entity->getEntityType())
->getRelation($entity, $field)
->findOne();
if (!$attachment) {
return $valueMap;
}
/** @var AttachmentRepository $attachmentRepository */
$attachmentRepository = $this->entityManager->getRepository(Attachment::ENTITY_TYPE);
$copiedAttachment = $attachmentRepository->getCopiedAttachment($attachment);
$idAttribute = $field . 'Id';
$valueMap->$idAttribute = $copiedAttachment->getId();
return $valueMap;
}
}

View File

@@ -0,0 +1,82 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* EspoCRM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Classes\FieldDuplicators;
use Espo\Core\Record\Duplicator\FieldDuplicator;
use Espo\ORM\Entity;
use Espo\ORM\EntityManager;
use stdClass;
class LinkMultiple implements FieldDuplicator
{
private EntityManager $entityManager;
public function __construct(EntityManager $entityManager)
{
$this->entityManager = $entityManager;
}
public function duplicate(Entity $entity, string $field): stdClass
{
$valueMap = (object) [];
$entityDefs = $this->entityManager
->getDefs()
->getEntity($entity->getEntityType());
if (!$entity->hasRelation($field)) {
return $valueMap;
}
$relationDefs = $entityDefs->getRelation($field);
if (
!$relationDefs->hasForeignEntityType() ||
!$relationDefs->hasForeignRelationName()
) {
return $valueMap;
}
$foreignRelationType = $this->entityManager
->getDefs()
->getEntity($relationDefs->getForeignEntityType())
->getRelation($relationDefs->getForeignRelationName())
->getType();
if ($foreignRelationType !== Entity::MANY_MANY) {
$valueMap->{$field . 'Ids'} = [];
$valueMap->{$field . 'Names'} = (object) [];
$valueMap->{$field . 'Columns'} = (object) [];
}
return $valueMap;
}
}

View File

@@ -0,0 +1,117 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* EspoCRM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Classes\FieldDuplicators;
use Espo\Core\Record\Duplicator\FieldDuplicator;
use Espo\ORM\Entity;
use Espo\ORM\EntityManager;
use Espo\Repositories\Attachment as AttachmentRepository;
use Espo\Entities\Attachment;
use stdClass;
class Wysiwyg implements FieldDuplicator
{
private $entityManager;
public function __construct(EntityManager $entityManager)
{
$this->entityManager = $entityManager;
}
public function duplicate(Entity $entity, string $field): stdClass
{
$valueMap = (object) [];
$contents = $entity->get($field);
if (!$contents) {
return $valueMap;
}
$matches = [];
$matchResult = preg_match_all("/\?entryPoint=attachment&amp;id=([^&=\"']+)/", $contents, $matches);
if (
!$matchResult ||
empty($matches[1]) ||
!is_array($matches[1])
) {
return $valueMap;
}
$attachmentIdList = $matches[1];
/** @var Attachment[] $attachmentList */
$attachmentList = [];
foreach ($attachmentIdList as $id) {
/** @var Attachment|null $attachment */
$attachment = $this->entityManager->getEntity(Attachment::ENTITY_TYPE, $id);
if (!$attachment) {
continue;
}
$attachmentList[] = $attachment;
}
if (!count($attachmentList)) {
return $valueMap;
}
/** @var AttachmentRepository $attachmentRepository */
$attachmentRepository = $this->entityManager->getRepository(Attachment::ENTITY_TYPE);
foreach ($attachmentList as $attachment) {
$copiedAttachment = $attachmentRepository->getCopiedAttachment($attachment);
$copiedAttachment->set([
'relatedId' => null,
'relatedType' => $entity->getEntityType(),
'field' => $field,
]);
$this->entityManager->saveEntity($copiedAttachment);
$contents = str_replace(
'?entryPoint=attachment&amp;id=' . $attachment->getId(),
'?entryPoint=attachment&amp;id=' . $copiedAttachment->getId(),
$contents
);
}
$valueMap->$field = $contents;
return $valueMap;
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -39,6 +39,9 @@ use Espo\Core\{
use Espo\Repositories\Email as EmailRepository;
/**
* @implements Loader<\Espo\Entities\Email>
*/
class AddressDataLoader implements Loader
{
private $entityManager;
@@ -50,7 +53,7 @@ class AddressDataLoader implements Loader
public function process(Entity $entity, Params $params): void
{
/* @var $repository EmailRepository */
/** @var EmailRepository $repository */
$repository = $this->entityManager->getRepository('Email');
$repository->loadFromField($entity);

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,42 +29,39 @@
namespace Espo\Classes\FieldProcessing\Email;
use Espo\Modules\Crm\Entities\Call;
use Espo\Modules\Crm\Entities\Meeting;
use Espo\ORM\Entity;
use Espo\ORM\EntityManager;
use Espo\Repositories\EmailAddress as EmailAddressRepository;
use Espo\Entities\EmailAddress;
use Espo\Entities\Email;
use Espo\Core\FieldProcessing\Loader;
use Espo\Core\FieldProcessing\Loader\Params;
use Espo\Core\Mail\Event\Event as EspoEvent;
use Espo\Core\Mail\Event\EventFactory;
use Espo\Core\Utils\Log;
use Espo\Core\{
FieldProcessing\Loader,
FieldProcessing\Loader\Params,
Mail\Event\Event as EspoEvent,
Mail\Event\EventFactory,
Utils\Log,
};
use ICal\ICal;
use ICal\Event;
use ICal\ICal;
use Throwable;
use stdClass;
/**
* @implements Loader<Email>
*/
class IcsDataLoader implements Loader
{
private $entityManager;
private $log;
/** @var array<string, string> */
private $entityTypeLinkMap = [
'User' => 'users',
'Contact' => 'contacts',
'Lead' => 'leads',
];
public function __construct(EntityManager $entityManager, Log $log)
{
$this->entityManager = $entityManager;
$this->log = $log;
}
public function __construct(private EntityManager $entityManager, private Log $log)
{}
public function process(Entity $entity, Params $params): void
{
@@ -78,7 +75,7 @@ class IcsDataLoader implements Loader
$ical->initString($icsContents);
/* @var $event Event */
/* @var ?Event $event */
$event = $ical->events()[0] ?? null;
if ($event === null) {
@@ -114,11 +111,14 @@ class IcsDataLoader implements Loader
return;
}
/* @var $emailAddressRepository EmailAddressRepository */
if ($this->eventAlreadyExists($espoEvent)) {
return;
}
/** @var EmailAddressRepository $emailAddressRepository */
$emailAddressRepository = $this->entityManager->getRepository(EmailAddress::ENTITY_TYPE);
$attendeeEmailAddressList = $espoEvent->getAttendeeEmailAddressList();
$organizerEmailAddress = $espoEvent->getOrganizerEmailAddress();
if ($organizerEmailAddress) {
@@ -160,7 +160,6 @@ class IcsDataLoader implements Loader
$this->loadCreatedEvent($entity, $espoEvent, $eventData);
$entity->set('icsEventData', $eventData);
$entity->set('icsEventDateStart', $espoEvent->getDateStart());
if ($espoEvent->isAllDay()) {
@@ -168,7 +167,7 @@ class IcsDataLoader implements Loader
}
}
private function loadCreatedEvent(Entity $entity, EspoEvent $espoEvent, object $eventData): void
private function loadCreatedEvent(Entity $entity, EspoEvent $espoEvent, stdClass $eventData): void
{
$emailSameEvent = $this->entityManager
->getRDBRepository(Email::ENTITY_TYPE)
@@ -202,4 +201,35 @@ class IcsDataLoader implements Loader
'name' => $createdEvent->get('name'),
];
}
private function eventAlreadyExists(EspoEvent $espoEvent): bool
{
$id = $espoEvent->getUid();
if (!$id) {
return false;
}
$found1 = $this->entityManager
->getRDBRepository(Meeting::ENTITY_TYPE)
->select(['id'])
->where(['id' => $id])
->findOne();
if ($found1) {
return true;
}
$found2 = $this->entityManager
->getRDBRepository(Call::ENTITY_TYPE)
->select(['id'])
->where(['id' => $id])
->findOne();
if ($found2) {
return true;
}
return false;
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -30,22 +30,22 @@
namespace Espo\Classes\FieldProcessing\Email;
use Espo\ORM\Entity;
use Espo\Core\{
FieldProcessing\Loader,
FieldProcessing\Loader\Params,
ORM\EntityManager,
};
use Espo\Repositories\EmailAddress as EmailAddressRepository;
use Espo\Core\FieldProcessing\Loader;
use Espo\Core\FieldProcessing\Loader\Params;
use Espo\Core\ORM\EntityManager;
use Espo\Entities\Email;
use Espo\Entities\User;
/**
* @implements Loader<Email>
*/
class StringDataLoader implements Loader
{
private $entityManager;
private $user;
private EntityManager $entityManager;
private User $user;
/** @var array<string, string> */
private $fromEmailAddressNameCache = [];
public function __construct(EntityManager $entityManager, User $user)
@@ -56,21 +56,24 @@ class StringDataLoader implements Loader
public function process(Entity $entity, Params $params): void
{
$userEmailAdddressIdList = [];
/** @var Email $entity */
$userEmailAddressIdList = [];
$emailAddressCollection = $this->entityManager
->getRDBRepository('User')
->getRDBRepository(User::ENTITY_TYPE)
->getRelation($this->user, 'emailAddresses')
->select(['id'])
->find();
foreach ($emailAddressCollection as $emailAddress) {
$userEmailAdddressIdList[] = $emailAddress->getId();
$userEmailAddressIdList[] = $emailAddress->getId();
}
if (
in_array($entity->get('fromEmailAddressId'), $userEmailAdddressIdList) ||
$entity->get('createdById') === $this->user->getId() && $entity->get('status') === Email::STATUS_SENT
in_array($entity->get('fromEmailAddressId'), $userEmailAddressIdList) ||
$entity->get('createdById') === $this->user->getId() &&
$entity->getStatus() === Email::STATUS_SENT
) {
$entity->loadLinkMultipleField('toEmailAddresses');
@@ -84,9 +87,7 @@ class StringDataLoader implements Loader
$list = [];
foreach ($idList as $emailAddressId) {
$person = $this->entityManager
->getRepository('EmailAddress')
->getEntityByAddressId($emailAddressId, null, true);
$person = $this->getEmailAddressRepository()->getEntityByAddressId($emailAddressId, null, true);
$list[] = $person ? $person->get('name') : $names->$emailAddressId;
}
@@ -96,6 +97,7 @@ class StringDataLoader implements Loader
return;
}
/** @var ?string $fromEmailAddressId */
$fromEmailAddressId = $entity->get('fromEmailAddressId');
if (!$fromEmailAddressId) {
@@ -103,11 +105,9 @@ class StringDataLoader implements Loader
}
if (!array_key_exists($fromEmailAddressId, $this->fromEmailAddressNameCache)) {
$person = $this->entityManager
->getRepository('EmailAddress')
->getEntityByAddressId($fromEmailAddressId, null, true);
$person = $this->getEmailAddressRepository()->getEntityByAddressId($fromEmailAddressId, null, true);
$fromName = $person ? $person->get('name') : null;
$fromName = $person?->get('name');
$this->fromEmailAddressNameCache[$fromEmailAddressId] = $fromName;
}
@@ -119,4 +119,10 @@ class StringDataLoader implements Loader
$entity->set('personStringData', $fromName);
}
private function getEmailAddressRepository(): EmailAddressRepository
{
/** @var EmailAddressRepository */
return $this->entityManager->getRepository('EmailAddress');
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,21 +29,20 @@
namespace Espo\Classes\FieldProcessing\Email;
use Espo\Entities\Email;
use Espo\ORM\Entity;
use Espo\Core\{
FieldProcessing\Loader,
FieldProcessing\Loader\Params,
ORM\EntityManager,
};
use Espo\Core\FieldProcessing\Loader;
use Espo\Core\FieldProcessing\Loader\Params;
use Espo\Core\ORM\EntityManager;
use Espo\Entities\User;
/**
* @implements Loader<Email>
*/
class UserColumnsLoader implements Loader
{
private $entityManager;
private $user;
private EntityManager $entityManager;
private User $user;
public function __construct(EntityManager $entityManager, User $user)
{
@@ -54,8 +53,12 @@ class UserColumnsLoader implements Loader
public function process(Entity $entity, Params $params): void
{
$emailUser = $this->entityManager
->getRepository('EmailUser')
->select(['isRead', 'isImportant', 'inTrash'])
->getRDBRepository(Email::RELATIONSHIP_EMAIL_USER)
->select([
Email::USERS_COLUMN_IS_READ,
Email::USERS_COLUMN_IS_IMPORTANT,
Email::USERS_COLUMN_IN_TRASH,
])
->where([
'deleted' => false,
'userId' => $this->user->getId(),
@@ -64,17 +67,17 @@ class UserColumnsLoader implements Loader
->findOne();
if (!$emailUser) {
$entity->set('isRead', null);
$entity->clear('isImportant');
$entity->clear('inTrash');
$entity->set(Email::USERS_COLUMN_IS_READ, null);
$entity->clear(Email::USERS_COLUMN_IS_IMPORTANT);
$entity->clear(Email::USERS_COLUMN_IN_TRASH);
return;
}
$entity->set([
'isRead' => $emailUser->get('isRead'),
'isImportant' => $emailUser->get('isImportant'),
'inTrash' => $emailUser->get('inTrash'),
Email::USERS_COLUMN_IS_READ => $emailUser->get(Email::USERS_COLUMN_IS_READ),
Email::USERS_COLUMN_IS_IMPORTANT => $emailUser->get(Email::USERS_COLUMN_IS_IMPORTANT),
Email::USERS_COLUMN_IN_TRASH => $emailUser->get(Email::USERS_COLUMN_IN_TRASH),
]);
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -39,6 +39,9 @@ use Espo\Core\{
use Espo\Repositories\Import as ImportRepository;
/**
* @implements Loader<\Espo\Entities\Import>
*/
class CountsLoader implements Loader
{
private $entityManager;
@@ -50,7 +53,7 @@ class CountsLoader implements Loader
public function process(Entity $entity, Params $params): void
{
/* @var $repository ImportRepository */
/** @var ImportRepository $repository */
$repository = $this->entityManager->getRepository('Import');
$importedCount = $repository->countResultRecords($entity, 'imported');

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -38,11 +38,14 @@ use Espo\Core\{
use Espo\Entities\Note;
/**
* @implements Loader<\Espo\Entities\Note>
*/
class AttachmentsLoader implements Loader
{
public function process(Entity $entity, Params $params): void
{
/* @var $entity Note */
/** @var Note $entity */
$entity->loadAttachments();
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -31,12 +31,18 @@ namespace Espo\Classes\FieldProcessing\Portal;
use Espo\ORM\Entity;
use Espo\Repositories\Portal as PortalRepository;
use Espo\Entities\Portal;
use Espo\Core\{
FieldProcessing\Loader,
FieldProcessing\Loader\Params,
ORM\EntityManager,
};
/**
* @implements Loader<\Espo\Entities\Portal>
*/
class UrlLoader implements Loader
{
private $entityManager;
@@ -48,8 +54,14 @@ class UrlLoader implements Loader
public function process(Entity $entity, Params $params): void
{
$this->entityManager
->getRepository('Portal')
->loadUrlField($entity);
/** @var Portal $entity */
$this->getPortalRepository()->loadUrlField($entity);
}
private function getPortalRepository(): PortalRepository
{
/** @var PortalRepository */
return $this->entityManager->getRepository('Portal');
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,24 +29,26 @@
namespace Espo\Classes\FieldProcessing\User;
use Espo\Entities\AuthLogRecord;
use Espo\Entities\AuthToken;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\{
FieldProcessing\Loader,
FieldProcessing\Loader\Params,
ORM\EntityManager,
Acl,
Acl\Table,
};
use Espo\Core\Acl;
use Espo\Core\Acl\Table;
use Espo\Core\FieldProcessing\Loader;
use Espo\Core\FieldProcessing\Loader\Params;
use Espo\Core\ORM\EntityManager;
use DateTime;
use Exception;
/**
* @implements Loader<User>
*/
class LastAccessLoader implements Loader
{
private $entityManager;
private $acl;
private EntityManager $entityManager;
private Acl $acl;
public function __construct(EntityManager $entityManager, Acl $acl)
{
@@ -64,7 +66,7 @@ class LastAccessLoader implements Loader
}
$authToken = $this->entityManager
->getRDBRepository('AuthToken')
->getRDBRepository(AuthToken::ENTITY_TYPE)
->select(['id', 'lastAccess'])
->where([
'userId' => $entity->getId(),
@@ -84,7 +86,7 @@ class LastAccessLoader implements Loader
try {
$dt = new DateTime($lastAccess);
}
catch (Exception $e) {}
catch (Exception) {}
}
$where = [
@@ -97,7 +99,7 @@ class LastAccessLoader implements Loader
}
$authLogRecord = $this->entityManager
->getRDBRepository('AuthLogRecord')
->getRDBRepository(AuthLogRecord::ENTITY_TYPE)
->select(['id', 'createdAt'])
->where($where)
->order('requestTime', true)

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,12 +29,27 @@
namespace Espo\Classes\FieldValidators;
use Espo\Core\Utils\Metadata;
use Espo\ORM\Defs;
use Espo\ORM\Entity;
use StdClass;
use stdClass;
class ArrayType
{
private Metadata $metadata;
private Defs $defs;
private const DEFAULT_MAX_LENGTH = 100;
public function __construct(Metadata $metadata, Defs $defs)
{
$this->metadata = $metadata;
$this->defs = $defs;
}
public function checkRequired(Entity $entity, string $field): bool
{
return $this->isNotEmpty($entity, $field);
@@ -55,9 +70,92 @@ class ArrayType
return true;
}
public function rawCheckArray(StdClass $data, string $field): bool
public function checkArrayOfString(Entity $entity, string $field): bool
{
if (isset($data->$field) && $data->$field !== null && !is_array($data->$field)) {
/** @var ?mixed[] $list */
$list = $entity->get($field);
if ($list === null) {
return true;
}
foreach ($list as $item) {
if (!is_string($item)) {
return false;
}
}
return true;
}
public function checkValid(Entity $entity, string $field): bool
{
if (!$entity->has($field)) {
return true;
}
/** @var ?string[] $value */
$value = $entity->get($field);
if ($value === null || $value === []) {
return true;
}
$fieldDefs = $this->defs
->getEntity($entity->getEntityType())
->getField($field);
if ($fieldDefs->getParam('allowCustomOptions')) {
return true;
}
$optionList = $this->getOptionList($entity->getEntityType(), $field);
if ($optionList === null) {
return true;
}
foreach ($value as $item) {
if (!in_array($item, $optionList)) {
return false;
}
}
return true;
}
/**
* @return ?string[]
*/
private function getOptionList(string $entityType, string $field): ?array
{
$fieldDefs = $this->defs
->getEntity($entityType)
->getField($field);
/** @var ?string $path */
$path = $fieldDefs->getParam('optionsPath');
/** @var string[]|null|false $optionList */
$optionList = $path ?
$this->metadata->get($path) :
$fieldDefs->getParam('options');
if ($optionList === null) {
return null;
}
// For bc.
if ($optionList === false) {
return null;
}
return $optionList;
}
public function rawCheckArray(stdClass $data, string $field): bool
{
if (isset($data->$field) && !is_array($data->$field)) {
return false;
}
@@ -82,4 +180,73 @@ class ArrayType
return false;
}
public function checkMaxLength(Entity $entity, string $field, ?int $validationValue): bool
{
$maxLength = $validationValue ?? self::DEFAULT_MAX_LENGTH;
/** @var string[] $value */
$value = $entity->get($field) ?? [];
foreach ($value as $item) {
if (mb_strlen($item) > $maxLength) {
return false;
}
}
return true;
}
public function checkPattern(Entity $entity, string $field, ?string $validationValue): bool
{
if (!$validationValue) {
return true;
}
$pattern = $validationValue;
if ($validationValue[0] === '$') {
$patternName = substr($validationValue, 1);
$pattern = $this->metadata->get(['app', 'regExpPatterns', $patternName, 'pattern']) ??
$pattern;
}
$preparedPattern = '/^' . $pattern . '$/';
/** @var string[] $value */
$value = $entity->get($field) ?? [];
foreach ($value as $item) {
if ($item === '') {
continue;
}
if (!preg_match($preparedPattern, $item)) {
return false;
}
}
return true;
}
public function checkNoEmptyString(Entity $entity, string $field, ?bool $validationValue): bool
{
if (!$validationValue) {
return true;
}
/** @var string[] $value */
$value = $entity->get($field) ?? [];
$optionList = $this->getOptionList($entity->getEntityType(), $field) ?? [];
foreach ($value as $item) {
if ($item === '' && !in_array($item, $optionList)) {
return false;
}
}
return true;
}
}

View File

@@ -0,0 +1,47 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* EspoCRM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Classes\FieldValidators\Attachment;
use Espo\Classes\FieldValidators\LinkParentType;
use Espo\ORM\Entity;
class Related extends LinkParentType
{
public function checkValid(Entity $entity, string $field): bool
{
$typeValue = $entity->get($field . 'Type');
if ($typeValue === 'TemplateManager') {
return true;
}
return parent::checkValid($entity, $field);
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,7 +29,4 @@
namespace Espo\Classes\FieldValidators;
class ChecklistType extends ArrayType
{
}
class ChecklistType extends ArrayType {}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,10 +29,13 @@
namespace Espo\Classes\FieldValidators;
use Espo\Core\Utils\Config;
use Espo\ORM\Entity;
class CurrencyType extends FloatType
{
public function __construct(private Config $config) {}
protected function isNotEmpty(Entity $entity, string $field): bool
{
return
@@ -40,4 +43,26 @@ class CurrencyType extends FloatType
$entity->has($field . 'Currency') && $entity->get($field . 'Currency') !== null &&
$entity->get($field . 'Currency') !== '';
}
public function checkValidCurrency(Entity $entity, string $field): bool
{
$attribute = $field . 'Currency';
if (!$entity->has($attribute)) {
return true;
}
$currency = $entity->get($attribute);
$currencyList = $this->config->get('currencyList') ?? [$this->config->get('defaultCurrency')];
if (
$currency === null &&
$entity->has($field) &&
$entity->get($field) === null
) {
return true;
}
return in_array($currency, $currencyList);
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,8 +29,11 @@
namespace Espo\Classes\FieldValidators;
use Espo\Core\Field\Date;
use Espo\ORM\Entity;
use Exception;
class DateType
{
public function checkRequired(Entity $entity, string $field): bool
@@ -42,4 +45,23 @@ class DateType
{
return $entity->has($field) && $entity->get($field) !== null;
}
public function checkValid(Entity $entity, string $field): bool
{
/** @var ?string $value */
$value = $entity->get($field);
if ($value === null) {
return true;
}
try {
Date::fromString($value);
}
catch (Exception $e) {
return false;
}
return true;
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,7 +29,10 @@
namespace Espo\Classes\FieldValidators;
use Espo\Core\Field\DateTime;
use Espo\Core\Field\Date;
use Espo\ORM\Entity;
use Exception;
class DatetimeOptionalType extends DatetimeType
{
@@ -50,4 +53,33 @@ class DatetimeOptionalType extends DatetimeType
return false;
}
public function checkValid(Entity $entity, string $field): bool
{
/** @var ?string $dateValue */
$dateValue = $entity->get($field . 'Date');
if ($dateValue !== null) {
try {
Date::fromString($dateValue);
}
catch (Exception $e) {
return false;
}
}
/** @var ?string $value */
$value = $entity->get($field);
if ($value !== null) {
try {
DateTime::fromString($value);
}
catch (Exception $e) {
return false;
}
}
return true;
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,6 +29,29 @@
namespace Espo\Classes\FieldValidators;
use Espo\Core\Field\DateTime;
use Espo\ORM\Entity;
use Exception;
class DatetimeType extends DateType
{
public function checkValid(Entity $entity, string $field): bool
{
/** @var ?string $value */
$value = $entity->get($field);
if ($value === null) {
return true;
}
try {
DateTime::fromString($value);
}
catch (Exception $e) {
return false;
}
return true;
}
}

View File

@@ -0,0 +1,49 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* EspoCRM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Classes\FieldValidators\Email;
use Espo\ORM\Entity;
class EmailAddresses
{
public function checkRequired(Entity $entity, string $field): bool
{
if ($entity->get('status') === 'Draft') {
return true;
}
return $this->isNotEmpty($entity, $field);
}
private function isNotEmpty(Entity $entity, string $field): bool
{
return $entity->has($field) && $entity->get($field) !== '' && $entity->get($field) !== null;
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,10 +29,21 @@
namespace Espo\Classes\FieldValidators;
use Espo\Core\Utils\Metadata;
use Espo\ORM\Entity;
use stdClass;
class EmailType
{
private Metadata $metadata;
private const DEFAULT_MAX_LENGTH = 255;
public function __construct(Metadata $metadata)
{
$this->metadata = $metadata;
}
public function checkRequired(Entity $entity, string $field): bool
{
if ($this->isNotEmpty($entity, $field)) {
@@ -71,6 +82,10 @@ class EmailType
}
foreach ($dataList as $item) {
if (!$item instanceof stdClass) {
return false;
}
if (empty($item->emailAddress)) {
continue;
}
@@ -85,6 +100,36 @@ class EmailType
return true;
}
public function checkMaxLength(Entity $entity, string $field): bool
{
/** @var ?string $value */
$value = $entity->get($field);
/** @var int $maxLength */
$maxLength = $this->metadata->get(['entityDefs', 'EmailAddress', 'fields', 'name', 'maxLength']) ??
self::DEFAULT_MAX_LENGTH;
if ($value && mb_strlen($value) > $maxLength) {
return false;
}
$dataList = $entity->get($field . 'Data');
if (!is_array($dataList)) {
return true;
}
foreach ($dataList as $item) {
$value = $item->emailAddress;
if ($value && mb_strlen($value) > $maxLength) {
return false;
}
}
return true;
}
protected function isNotEmpty(Entity $entity, string $field): bool
{
return $entity->has($field) && $entity->get($field) !== '' && $entity->get($field) !== null;

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,15 +29,90 @@
namespace Espo\Classes\FieldValidators;
use Espo\Core\Utils\Metadata;
use Espo\ORM\Defs;
use Espo\ORM\Entity;
class EnumType
{
private Metadata $metadata;
private Defs $defs;
private const DEFAULT_MAX_LENGTH = 255;
public function __construct(Metadata $metadata, Defs $defs)
{
$this->metadata = $metadata;
$this->defs = $defs;
}
public function checkRequired(Entity $entity, string $field): bool
{
return $this->isNotEmpty($entity, $field);
}
public function checkValid(Entity $entity, string $field): bool
{
if (!$entity->has($field)) {
return true;
}
$fieldDefs = $this->defs
->getEntity($entity->getEntityType())
->getField($field);
/** @var ?string $path */
$path = $fieldDefs->getParam('optionsPath');
/** @var string[]|null|false $optionList */
$optionList = $path ?
$this->metadata->get($path) :
$fieldDefs->getParam('options');
if ($optionList === null) {
return true;
}
// For bc.
if ($optionList === false) {
return true;
}
$optionList = array_map(
fn ($item) => $item === '' ? null : $item,
$optionList
);
$value = $entity->get($field);
// For bc.
// @todo Remove in v8.0.
if ($value === '') {
$value = null;
}
return in_array($value, $optionList);
}
public function checkMaxLength(Entity $entity, string $field, ?int $validationValue): bool
{
if (!$this->isNotEmpty($entity, $field)) {
return true;
}
$value = $entity->get($field);
$maxLength = $validationValue ?? self::DEFAULT_MAX_LENGTH;
if (mb_strlen($value) > $maxLength) {
return false;
}
return true;
}
protected function isNotEmpty(Entity $entity, string $field): bool
{
return $entity->has($field) && $entity->get($field) !== null;

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -38,6 +38,9 @@ class IntType
return $this->isNotEmpty($entity, $field);
}
/**
* @param mixed $validationValue
*/
public function checkMax(Entity $entity, string $field, $validationValue): bool
{
if (!$this->isNotEmpty($entity, $field)) {
@@ -51,6 +54,9 @@ class IntType
return true;
}
/**
* @param mixed $validationValue
*/
public function checkMin(Entity $entity, string $field, $validationValue): bool
{
if (!$this->isNotEmpty($entity, $field)) {

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -31,13 +31,13 @@ namespace Espo\Classes\FieldValidators;
use Espo\ORM\Entity;
use StdClass;
use stdClass;
class JsonArrayType
{
public function rawCheckArray(StdClass $data, string $field): bool
public function rawCheckArray(stdClass $data, string $field): bool
{
if (isset($data->$field) && $data->$field !== null && !is_array($data->$field)) {
if (isset($data->$field) && !is_array($data->$field)) {
return false;
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,12 +29,240 @@
namespace Espo\Classes\FieldValidators;
use Espo\Core\Utils\Metadata;
use Espo\ORM\Defs;
use Espo\ORM\Entity;
use Espo\Core\ORM\Entity as CoreEntity;
use stdClass;
class LinkMultipleType
{
private Metadata $metadata;
private Defs $defs;
private const COLUMN_TYPE_ENUM = 'enum';
private const COLUMN_TYPE_VARCHAR = 'varchar';
private const COLUMN_TYPE_BOOL = 'bool';
public function __construct(Metadata $metadata, Defs $defs)
{
$this->metadata = $metadata;
$this->defs = $defs;
}
public function checkRequired(Entity $entity, string $field): bool
{
return count($entity->getLinkMultipleIdList($field)) > 0;
if (!$entity instanceof CoreEntity) {
return false;
}
/** @var string[] $idList */
$idList = $entity->getLinkMultipleIdList($field);
return count($idList) > 0;
}
public function checkPattern(Entity $entity, string $field): bool
{
/** @var ?mixed[] $idList */
$idList = $entity->get($field . 'Ids');
if ($idList === null || $idList === []) {
return true;
}
$pattern = $this->metadata->get(['app', 'regExpPatterns', 'id', 'pattern']);
if (!$pattern) {
return true;
}
$preparedPattern = '/^' . $pattern . '$/';
foreach ($idList as $id) {
if (!is_string($id)) {
return false;
}
if (!preg_match($preparedPattern, $id)) {
return false;
}
}
return true;
}
public function checkColumnsValid(Entity $entity, string $field): bool
{
if (!$entity instanceof CoreEntity) {
return true;
}
if (!$entity->has($field . 'Columns')) {
return true;
}
/** @var ?stdClass $columnsData */
$columnsData = $entity->get($field . 'Columns');
if ($columnsData === null) {
return true;
}
$entityDefs = $this->defs->getEntity($entity->getEntityType());
$fieldDefs = $entityDefs->getField($field);
if ($fieldDefs->isNotStorable()) {
return true;
}
/** @var ?array<string,string> $columnsMap */
$columnsMap = $fieldDefs->getParam('columns');
if ($columnsMap === null || $columnsMap === []) {
return true;
}
if (!$entityDefs->hasRelation($field)) {
return true;
}
$relationDefs = $entityDefs->getRelation($field);
if (!$relationDefs->hasForeignEntityType()) {
return true;
}
$foreignEntityType = $relationDefs->getForeignEntityType();
foreach (array_keys(get_object_vars($columnsData)) as $id) {
$itemData = $columnsData->$id;
if (!$itemData instanceof stdClass) {
return false;
}
foreach ($columnsMap as $column => $foreignField) {
if (!property_exists($itemData, $column)) {
continue;
}
$value = $itemData->$column;
$result = $this->checkColumnValue($foreignEntityType, $foreignField, $value);
if (!$result) {
return false;
}
}
}
return true;
}
/**
* @param mixed $value
*/
private function checkColumnValue(string $entityType, string $field, $value): bool
{
$fieldDefs = $this->defs
->getEntity($entityType)
->getField($field);
$type = $fieldDefs->getType();
if ($type === self::COLUMN_TYPE_VARCHAR) {
return $this->checkColumnValueVarchar($fieldDefs, $value);
}
if ($type === self::COLUMN_TYPE_ENUM) {
return $this->checkColumnValueEnum($fieldDefs, $value);
}
if ($type === self::COLUMN_TYPE_BOOL) {
return is_bool($value);
}
return true;
}
/**
* @param mixed $value
*/
private function checkColumnValueVarchar(Defs\FieldDefs $fieldDefs, $value): bool
{
if ($value === null) {
return true;
}
if (!is_string($value)) {
return false;
}
$maxLength = $fieldDefs->getParam('maxLength');
$pattern = $fieldDefs->getParam('pattern');
if ($maxLength && mb_strlen($value) > $maxLength) {
return false;
}
if ($pattern) {
if ($pattern[0] === '$') {
$patternName = substr($pattern, 1);
$pattern = $this->metadata
->get(['app', 'regExpPatterns', $patternName, 'pattern']) ??
$pattern;
}
$preparedPattern = '/^' . $pattern . '$/';
if (!preg_match($preparedPattern, $value)) {
return false;
}
}
return true;
}
/**
* @param mixed $value
*/
private function checkColumnValueEnum(Defs\FieldDefs $fieldDefs, $value): bool
{
if (!is_string($value) && $value !== null) {
return false;
}
/** @var ?string $path */
$path = $fieldDefs->getParam('optionsPath');
/** @var string[]|null|false $optionList */
$optionList = $path ?
$this->metadata->get($path) :
$fieldDefs->getParam('options');
if ($optionList === null) {
return true;
}
// For bc.
if ($optionList === false) {
return true;
}
$optionList = array_map(
fn ($item) => $item === '' ? null : $item,
$optionList
);
// For bc.
// @todo Remove in v8.0.
if ($value === '') {
$value = null;
}
return in_array($value, $optionList);
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2021 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,10 +29,21 @@
namespace Espo\Classes\FieldValidators;
use Espo\Core\Utils\Metadata;
use Espo\ORM\Defs;
use Espo\ORM\Entity;
class LinkParentType
{
private Metadata $metadata;
private Defs $defs;
public function __construct(Metadata $metadata, Defs $defs)
{
$this->metadata = $metadata;
$this->defs = $defs;
}
public function checkRequired(Entity $entity, string $field): bool
{
$idAttribute = $field . 'Id';
@@ -52,4 +63,46 @@ class LinkParentType
return true;
}
public function checkPattern(Entity $entity, string $field): bool
{
/** @var ?string $idValue */
$idValue = $entity->get($field . 'Id');
if ($idValue === null) {
return true;
}
$pattern = $this->metadata->get(['app', 'regExpPatterns', 'id', 'pattern']);
if (!$pattern) {
return true;
}
$preparedPattern = '/^' . $pattern . '$/';
return (bool) preg_match($preparedPattern, $idValue);
}
public function checkValid(Entity $entity, string $field): bool
{
/** @var ?string $typeValue */
$typeValue = $entity->get($field . 'Type');
if ($typeValue === null) {
return true;
}
/** @var ?string[] $entityTypeList */
$entityTypeList = $this->defs
->getEntity($entity->getEntityType())
->getField($field)
->getParam('entityList');
if ($entityTypeList !== null) {
return in_array($typeValue, $entityTypeList);
}
return (bool) $this->metadata->get(['entityDefs', $typeValue]);
}
}

Some files were not shown because too many files have changed in this diff Show More