Compare commits

...

1375 Commits

Author SHA1 Message Date
denis.flaven@combodo.com
46aaeb4301 Merge branch 'support/2.7' into support/3.1 2025-02-07 10:24:18 +01:00
denis.flaven@combodo.com
affed69999 Version number bump. 2025-02-07 10:09:48 +01:00
denis.flaven@combodo.com
64a216e0f6 Merge branch 'support/2.7' into support/3.1 2025-01-31 17:13:09 +01:00
denis.flaven@combodo.com
d5754fc568 N°8135 - Bump datamodel version. 2025-01-31 17:04:56 +01:00
jf-cbd
ccb1ca9d79 Merge remote-tracking branch 'origin/support/2.7' into support/3.1 2025-01-28 10:32:18 +01:00
jf-cbd
44290db312 N°8134 - Portal user profile is broken, regression from 7776 2025-01-28 10:23:44 +01:00
Eric Espie
025af923ea N°8131 - Issue on DBlinkchange event when object is delete 2025-01-24 14:23:50 +01:00
Eric Espie
858b12abaa N°8131 - Issue on DBlinkchange event when object is delete 2025-01-24 11:59:51 +01:00
Eric Espie
a7bc4bd411 Add new measure points for KPI logger 2025-01-22 16:34:31 +01:00
jf-cbd
a07f66c061 Merge remote-tracking branch 'origin/support/2.7' into support/3.1 2025-01-21 16:48:33 +01:00
jf-cbd
c49ceae75e Fix HandleForm call 2025-01-21 16:46:15 +01:00
jf-cbd
4da975cb64 Merge remote-tracking branch 'origin/support/2.7' into support/3.1 2025-01-21 12:15:06 +01:00
jf-cbd
8980f627e9 Fix format 2025-01-21 12:09:06 +01:00
jf-cbd
ec61b52238 N°7776 remove twig from ajax calls, 3.1 edition 2025-01-20 16:02:26 +01:00
jf-cbd
072596a53b Merge remote-tracking branch 'origin/support/2.7' into support/3.1
# Conflicts:
#	datamodels/2.x/itop-portal-base/portal/src/Form/ObjectFormManager.php
2025-01-20 15:53:34 +01:00
jf-cbd
160bfd714b N°7776 remove twig from ajax calls 2025-01-20 15:41:22 +01:00
jf-cbd
1c5cb1547f Merge remote-tracking branch 'origin/support/2.7' into support/3.1 2025-01-16 17:15:12 +01:00
jf-cbd
8d58372074 Update unattended installation script documentation 2025-01-16 17:13:26 +01:00
odain
5780f26817 N°7810: fix merge 2024-12-27 11:13:31 +01:00
odain
343f3286b8 Merge branch 'support/2.7' into support/3.1 2024-12-27 09:08:47 +01:00
Eric Espie
37fc1a5723 N°7810 - security hardening 2024-12-27 09:04:28 +01:00
jf-cbd
1fa50f695d Security hardening 2024-12-16 10:47:06 +01:00
jf-cbd
692cf4f635 Merge branch 'support/2.7' into support/3.1 2024-12-16 10:27:00 +01:00
jf-cbd
95aa444ee6 Security hardening 2024-12-13 16:48:13 +01:00
jf-cbd
f5de808c7c Security hardening (#685)
* security hardening
2024-12-13 15:09:18 +01:00
jf-cbd
cbb4281a37 N°7980 - security hardening 2024-11-29 16:40:34 +01:00
Benjamin Dalsass
06dcae1dd1 Merge remote-tracking branch 'origin/support/2.7' into support/3.1 2024-11-27 09:50:57 +01:00
Benjamin Dalsass
e03033ce52 N°7219 - Fatal error following dashboard modification when dashboard title contains an é 2024-11-27 09:40:22 +01:00
Karel Vlk
c70d62a51e 🐛 N°7916 SF#2274 EmailLaminas.php: Keep charset with part header in multipart email (#672)
* 🐛 N°2274 EmailLaminas.php: Keep charset with part header in multipart email

* Add a unit test

---------

Co-authored-by: Stephen Abello <stephen.abello@combodo.com>
2024-11-08 09:38:57 +01:00
jf-cbd
0d5ff261fe Merge remote-tracking branch 'origin/support/2.7' into support/3.1 2024-11-07 14:51:32 +01:00
jf-cbd
374b35f78a 🚀 Fix GitHub action 2024-11-07 14:50:46 +01:00
Stephen Abello
9371bc6d7b N°7925 Fix incorrectly formatted In-Reply-To email header 2024-11-04 14:38:31 +01:00
Karel Vlk
58e964fb8c 🐛 N°7917 SF#2272 EmailLaminas.php: Fix Message-ID format (#671)
* 🐛 N°2272 EmailLaminas.php: Fix Message-ID format

* EmailLaminas.php: Add MessageId import

as suggested by @steffunky in PR 671
2024-11-04 14:37:15 +01:00
jf-cbd
e8ecc85828 Merge remote-tracking branch 'origin/support/2.7' into support/3.1 2024-10-22 16:09:02 +02:00
jf-cbd
04bd8cc5ce 🚀 Update GitHub actions to improve PR classification 2024-10-22 16:07:47 +02:00
Eric Espie
88756a443a Fix event listeners display when the listener is a static method 2024-10-14 09:25:05 +02:00
denis.flaven@combodo.com
052e2a1a42 🔖 Prepare 3.1.2 version 2024-10-03 12:14:32 +02:00
Eric Espie
eb1ecff7d8 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-09-26 17:37:43 +02:00
Eric Espie
8141723869 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	approot.inc.php
#	css/css-variables.scss
#	datamodels/2.x/authent-cas/module.authent-cas.php
#	datamodels/2.x/authent-external/module.authent-external.php
#	datamodels/2.x/authent-ldap/module.authent-ldap.php
#	datamodels/2.x/authent-local/module.authent-local.php
#	datamodels/2.x/combodo-db-tools/module.combodo-db-tools.php
#	datamodels/2.x/itop-attachments/module.itop-attachments.php
#	datamodels/2.x/itop-backup/module.itop-backup.php
#	datamodels/2.x/itop-bridge-virtualization-storage/module.itop-bridge-virtualization-storage.php
#	datamodels/2.x/itop-change-mgmt-itil/module.itop-change-mgmt-itil.php
#	datamodels/2.x/itop-change-mgmt/module.itop-change-mgmt.php
#	datamodels/2.x/itop-config-mgmt/module.itop-config-mgmt.php
#	datamodels/2.x/itop-config/module.itop-config.php
#	datamodels/2.x/itop-core-update/module.itop-core-update.php
#	datamodels/2.x/itop-datacenter-mgmt/module.itop-datacenter-mgmt.php
#	datamodels/2.x/itop-endusers-devices/module.itop-endusers-devices.php
#	datamodels/2.x/itop-files-information/module.itop-files-information.php
#	datamodels/2.x/itop-full-itil/module.itop-full-itil.php
#	datamodels/2.x/itop-hub-connector/module.itop-hub-connector.php
#	datamodels/2.x/itop-incident-mgmt-itil/module.itop-incident-mgmt-itil.php
#	datamodels/2.x/itop-knownerror-mgmt/module.itop-knownerror-mgmt.php
#	datamodels/2.x/itop-oauth-client/module.itop-oauth-client.php
#	datamodels/2.x/itop-portal-base/module.itop-portal-base.php
#	datamodels/2.x/itop-portal/module.itop-portal.php
#	datamodels/2.x/itop-problem-mgmt/module.itop-problem-mgmt.php
#	datamodels/2.x/itop-profiles-itil/module.itop-profiles-itil.php
#	datamodels/2.x/itop-request-mgmt-itil/module.itop-request-mgmt-itil.php
#	datamodels/2.x/itop-request-mgmt/module.itop-request-mgmt.php
#	datamodels/2.x/itop-service-mgmt-provider/module.itop-service-mgmt-provider.php
#	datamodels/2.x/itop-service-mgmt/module.itop-service-mgmt.php
#	datamodels/2.x/itop-sla-computation/module.itop-sla-computation.php
#	datamodels/2.x/itop-storage-mgmt/module.itop-storage-mgmt.php
#	datamodels/2.x/itop-tickets/module.itop-tickets.php
#	datamodels/2.x/itop-virtualization-mgmt/module.itop-virtualization-mgmt.php
#	datamodels/2.x/itop-welcome-itil/module.itop-welcome-itil.php
#	datamodels/2.x/version.xml
2024-09-26 17:37:07 +02:00
denis.flaven@combodo.com
8cb701bda3 🔖 Prepare 2.7.11 version 2024-09-26 16:53:24 +02:00
jf-cbd
1b29746806 Rename github token 2024-09-23 17:14:41 +02:00
jf-cbd
fb9c317256 Add an action in the workflow to automatically add pull requests to the Combodo PRs dashboard 2024-09-23 14:43:33 +02:00
Molkobain
8c704951e1 N°7730 - Rename constant as it is actually for ID and class selectors, not only IDs 2024-08-19 18:41:32 +02:00
Eric Espie
24c23628d6 N°7730 - code hardening 2024-08-19 15:15:22 +02:00
jf-cbd
141c22ff67 Fix selectize bug when multiple selectize fields exist on the same page 2024-07-17 14:17:09 +02:00
Thomas Casteleyn
1e3c425e81 N°7645 - PHP 8.1: Fix usage of strpos() & str_replace() with null value when compiling empty dictionary (#600)
* fix(compiler): provide empty string instead of null value

* Apply review suggestions
2024-07-10 10:07:12 +02:00
Benjamin Dalsass
b2e3fb6354 N°7024 - Fix opening an object with abstract class indirect linked set in Portal 2024-07-05 09:10:19 +02:00
jf-cbd
45ce68e16e Merge remote-tracking branch 'refs/remotes/origin/support/3.0' into support/3.1 2024-07-04 13:55:11 +02:00
jf-cbd
1aef576403 N°7604 - Security hardening 2024-07-04 13:52:19 +02:00
jf-cbd
bfd9be8280 Merge remote-tracking branch 'refs/remotes/origin/support/3.0' into support/3.1 2024-07-04 10:59:57 +02:00
jf-cbd
96e1388dde N°7603 - Security hardening + UI blocks examples updated 2024-07-04 10:56:08 +02:00
Timothee
86b48b8980 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-07-03 17:00:22 +02:00
Timothee
69c8791fc5 Fix merge conflit resolution d3b9965283 2024-07-03 16:48:08 +02:00
Eric Espie
5fd8678a3a N°7619 - Object deletion not cascaded to legacy extensions 2024-07-02 10:38:25 +02:00
Eric Espie
86df9ac035 N°7619 - Object deletion not cascaded to legacy extensions 2024-07-02 10:37:36 +02:00
Molkobain
3f997b416f N°7313 - Revert "fix" as it breaks grouping on ext. keys, OQL functions and more
We keep the enhancements to the test framework though.
2024-06-28 14:54:51 +02:00
Eric Espie
cceb6809e7 Fix CI 2024-06-24 14:20:33 +02:00
Eric Espie
48b559472e Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	tests/php-unit-tests/src/BaseTestCase/ItopTestCase.php
2024-06-24 14:02:04 +02:00
Eric Espie
cddc452693 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2024-06-24 13:55:29 +02:00
Eric Espie
0904a21e3f Cleanup ItopTestCase 2024-06-24 11:50:37 +02:00
Timothee
66230199f8 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-06-21 12:41:17 +02:00
Timothee
1f1a2b660f N°7581 Improve error message readability during object creation/modification in the portal (regression introduced with N°7545) 2024-06-21 12:36:52 +02:00
Molkobain
4f36369ea1 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-06-21 11:32:21 +02:00
Molkobain
33a906f11a Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2024-06-21 11:29:18 +02:00
Molkobain
82d11eeb47 N°7127 - Upgrade handlebars.js to v4.7.8 2024-06-21 11:19:39 +02:00
Eric Espie
b8bf66031b Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-06-20 11:07:57 +02:00
Eric Espie
2596a150bf Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2024-06-20 11:07:36 +02:00
Eric Espie
142d6c8993 N°7533 - Detect and warns on Galera clusters 2024-06-20 11:06:57 +02:00
Timothee
d70e5dff45 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-06-17 16:55:26 +02:00
Timothee
c4fc0ed982 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2024-06-17 16:51:30 +02:00
Timothee
320922a13d N°7545 Correctly display error message 2024-06-17 16:49:33 +02:00
Eric Espie
f96d28a0a8 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-06-12 16:48:39 +02:00
Eric Espie
d3b9965283 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	core/cmdbsource.class.inc.php
2024-06-12 16:48:06 +02:00
Eric Espie
f03d731b1d N°7533 - Prevent installation of iTop on Galera clusters 2024-06-12 16:14:23 +02:00
Eric Espie
3e3ac0d83f N°7542 - code hardening 2024-05-30 12:04:36 +02:00
Eric Espie
32835f70b9 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-05-29 18:19:48 +02:00
Eric Espie
63cf78f64d Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	pages/preferences.php
2024-05-29 18:18:55 +02:00
Eric Espie
8be7628668 N°7548 - Code hardening 2024-05-29 18:11:36 +02:00
Eric Espie
5e64be8580 N°7491 - Fix unit tests 2024-05-24 09:48:07 +02:00
Eric Espie
a0b76a25be N°7491 - Fix Events during DBObject CRUD 2024-05-24 09:35:00 +02:00
Eric Espie
e2f2afad54 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-05-21 15:07:28 +02:00
Eric Espie
f632cf3155 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2024-05-21 15:07:08 +02:00
Eric Espie
13dfdc3d9d Merge remote-tracking branch 'origin/support/2.7' into support/3.1 2024-05-21 14:29:10 +02:00
Eric Espie
62caf16153 N°7364 - Code hardening 2024-05-21 14:20:30 +02:00
jf-cbd
020a37ead9 N°7526 - Profile input unfocus: Previously entered value still filters 2024-05-17 10:58:29 +02:00
odain
163a3afc0f N°7426 - no session created - replace php_sapi_name() by PHP_SAPI in unattended 2024-05-16 15:31:08 +02:00
odain
35265718c1 Merge branch 'support/3.0' into support/3.1 2024-05-16 14:37:41 +02:00
odain
d98e35d918 Merge branch 'support/2.7' into support/3.0 2024-05-16 14:13:24 +02:00
odain
f8b54be896 N°7426 - no session created - replace php_sapi_name() by PHP_SAPI 2024-05-16 14:10:54 +02:00
Romain Quetiez
a88ce075cc Merge branch 'support/3.0' into support/3.1
# Conflicts:
#	tests/php-unit-tests/src/BaseTestCase/ItopTestCase.php
2024-05-16 14:07:36 +02:00
Romain Quetiez
c6f3e36451 Merge branch 'support/2.7' into support/3.0
# Conflicts:
#	tests/php-unit-tests/src/BaseTestCase/ItopTestCase.php
#	tests/php-unit-tests/unitary-tests/core/iTopConfigParserTest.php
2024-05-16 10:09:11 +02:00
Romain Quetiez
53dc452d61 Avoid unnecessary custom test environment compilations (base compilation of file modification time) 2024-05-16 09:53:04 +02:00
Romain Quetiez
ccaf2dc5b7 Make the tests compatible with windows (and linux) 2024-05-16 09:53:04 +02:00
Molkobain
d9581a083d Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-05-07 10:41:04 +02:00
Molkobain
46738d4ba4 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2024-05-07 10:38:50 +02:00
Molkobain
5d5df5ad1a N°7255 - Fix misc. stylesheets not working in portal since N°7047 2024-05-07 10:37:39 +02:00
jf-cbd
8c46c99ecc N°7313 - Bad display of single quotes in charts 2024-04-30 15:04:28 +02:00
jf-cbd
02be397e8f Merge remote-tracking branch 'refs/remotes/origin/support/3.0' into support/3.1 2024-04-30 10:57:06 +02:00
jf-cbd
61469a28b9 N°7445 - Invalid Unicode escape sequence on dashlet Header with statistics 2024-04-30 10:56:09 +02:00
jf-cbd
9ff54cead8 Merge remote-tracking branch 'refs/remotes/origin/support/3.0' into support/3.1 2024-04-30 08:14:11 +02:00
jf-cbd
dbcbb187b2 N°7445 - Invalid Unicode escape sequence on dashlet Header with statistics 2024-04-30 08:13:37 +02:00
jf-cbd
71b4d672d4 Merge remote-tracking branch 'refs/remotes/origin/support/3.0' into support/3.1
# Conflicts:
#	pages/ajax.render.php
2024-04-30 08:04:45 +02:00
jf-cbd
93bba66323 N°7445 - Invalid Unicode escape sequence on dashlet Header with statistics 2024-04-30 08:03:14 +02:00
Molkobain
0a95aa385a Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	tests/php-unit-tests/unitary-tests/application/applicationextension/Delta/application-extension-usages-in-snippets.xml
2024-04-29 14:03:16 +02:00
Molkobain
cab6394cba Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2024-04-29 13:58:13 +02:00
Molkobain
32140b360f Cherry pick fixes from 59a955f4 2024-04-29 11:45:09 +02:00
Benjamin Dalsass
06a8481511 N°7279 - AttributeClass defined in XML datamodel compilation issue 2024-04-25 11:39:54 +02:00
jf-cbd
59a955f491 🐛 N°7313 - Bad display of single quotes in charts (#627)
* 🐛 N°7313 - Bad display of single quotes in charts
* Fix and improve ItopCustomDatamodelTestCase
2024-04-24 17:03:47 +02:00
jf-cbd
2ffcfd2f57 Merge remote-tracking branch 'refs/remotes/origin/support/3.0' into support/3.1 2024-04-24 12:00:47 +02:00
jf-cbd
e657052d17 Merge remote-tracking branch 'refs/remotes/origin/support/2.7' into support/3.0 2024-04-24 11:58:13 +02:00
jf-cbd
d85767a838 Update test to run only on commmunity builds 2024-04-24 11:14:40 +02:00
jf-cbd
e56d5ed3aa Merge remote-tracking branch 'refs/remotes/origin/support/3.0' into support/3.1
# Conflicts:
#	datamodels/2.x/itop-hub-connector/launch.php
#	setup/wizardsteps.class.inc.php
2024-04-23 14:13:40 +02:00
jf-cbd
e5a8bd61b0 Merge remote-tracking branch 'refs/remotes/origin/support/2.7' into support/3.0
# Conflicts:
#	datamodels/2.x/itop-hub-connector/launch.php
2024-04-23 14:03:15 +02:00
jf-cbd
eeec57536b Security hardening 2024-04-23 11:55:39 +02:00
jf-cbd
7fba61ff35 N°7445 - Invalid Unicode escape sequence on dashlet Header with statistics 2024-04-19 15:21:48 +02:00
jf-cbd
1bf156bdda Revert "Merge branch 'refs/heads/support/3.0' into support/3.1"
This reverts commit 1164e757de, reversing
changes made to 1235452a1b.
2024-04-19 15:16:57 +02:00
jf-cbd
1164e757de Merge branch 'refs/heads/support/3.0' into support/3.1
# Conflicts:
#	pages/ajax.render.php
2024-04-19 11:24:56 +02:00
jf-cbd
514e0b80a5 N°7445 - Invalid Unicode escape sequence on dashlet Header with statistics 2024-04-19 11:17:09 +02:00
Molkobain
1235452a1b Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-04-19 09:24:21 +02:00
Molkobain
35f4ab4941 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2024-04-19 09:22:32 +02:00
Molkobain
16ff6341d0 N°7455 - Fix regression from 4c784886, wrong class tested 2024-04-19 09:14:53 +02:00
Molkobain
12ad3c2732 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-04-18 18:49:08 +02:00
Molkobain
ac826cb9f1 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2024-04-18 18:48:24 +02:00
Molkobain
9dab8679d6 N°7448 - Update dictionary entry 2024-04-18 18:44:20 +02:00
Molkobain
4f3b25aa46 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-04-18 18:17:41 +02:00
Molkobain
f737bcb9a0 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2024-04-18 18:16:24 +02:00
Molkobain
4c78488644 N°7455 - Ensure form renderer class extends FormRenderer 2024-04-18 18:15:02 +02:00
odain
b4cdf5cf6d Merge branch 'support/3.0' into support/3.1 2024-04-15 10:23:22 +02:00
odain
77cc4672b0 Merge branch 'support/2.7' into support/3.0 2024-04-15 10:20:49 +02:00
odain
b65e931c4c N°7439 - setup wizard broken on essential targets after fresh install via unattended CLI 2024-04-15 09:57:54 +02:00
odain
46b0dabb1d Merge branch 'support/3.0' into support/3.1 2024-04-12 17:18:44 +02:00
odain
dfbfab7005 N°7407 - adapt test to 3.0 test SDK evolutions 2024-04-12 17:17:03 +02:00
odain
aa831b632c Merge branch 'support/2.7' into support/3.0 2024-04-12 17:16:22 +02:00
odain
6cb3519308 N°7407 - test readability 2024-04-12 16:59:56 +02:00
odain
cfb9fae648 N°7407 - fix previous commit 2024-04-12 16:49:11 +02:00
odain
f4e791734f N°7407 - remove phpunit annotation 2024-04-12 14:49:20 +02:00
odain
6653ab0668 N°7407 - fix missing extension installation via unattended from production-modules or extension folder 2024-04-12 13:25:40 +02:00
odain
7ab258ba03 N°7439 - setup wizard broken on essential targets 2024-04-12 11:32:04 +02:00
odain
b5af30a93f N°7407 - refactor unattended tests to make work anywhere 2024-04-12 11:32:04 +02:00
Molkobain
2294fce5da Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-04-12 10:06:27 +02:00
Molkobain
ce5c05234d Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2024-04-12 10:02:19 +02:00
Molkobain
bbfa601ab1 N°7446 - Add temporary workaround to fix an issue due to DB views creation. 2024-04-12 09:59:14 +02:00
odain
c9a9ec2fed Merge branch 'support/3.0' into support/3.1 2024-04-11 18:55:25 +02:00
odain
83764deedb Merge branch 'support/2.7' into support/3.0 2024-04-11 18:55:00 +02:00
odain
172b1cb1ff N°7407 - add phpunit annotation to exclude tests on top of targets 2024-04-11 18:54:43 +02:00
Molkobain
5f35effad9 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-04-11 16:58:02 +02:00
Molkobain
e1374a0e6b Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2024-04-11 16:56:25 +02:00
Molkobain
ca356859a3 N°7446 - Add comment for better understanding 2024-04-11 16:55:48 +02:00
Molkobain
5efe294895 N°7446 - Fix custom datamodel test class not creating DB tables correctly 2024-04-11 16:50:27 +02:00
odain
e6fa589412 Merge branch 'support/3.0' into support/3.1 2024-04-10 14:14:28 +02:00
odain
18d0b88531 N°7407 - fix merge 2024-04-10 14:11:58 +02:00
odain
3139a0b610 Merge branch 'support/2.7' into support/3.0 2024-04-10 14:06:41 +02:00
odain
e0170ccc7e N°7407 - InstallationFileServiceTest relies on local installation.xml to reduce maintenance 2024-04-10 14:05:39 +02:00
jf-cbd
ffefa5495a Adding CSRF protection to simulation step in CSV import 2024-04-10 10:34:06 +02:00
odain
a371b7f03b N°7407 - fix ci itop installation 2024-04-09 21:21:46 +02:00
odain
de97a6263f N°7407 - fix test and itop install in ci envt 2024-04-09 16:52:06 +02:00
odain
f0c5264fc8 Merge branch 'support/3.0' into support/3.1 2024-04-09 11:06:38 +02:00
odain
367aac3e04 Merge branch 'support/2.7' into support/3.0 2024-04-09 11:06:17 +02:00
odain
3b78885f38 N°7407 - unattended test cleanup for PHP 8.x deprecations 2024-04-09 11:06:03 +02:00
odain
e6814d6860 N°7407 - adapt unattended test to 3.1 installation.xml choices 2024-04-09 10:55:05 +02:00
Molkobain
79198f51a3 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-04-09 10:52:00 +02:00
odain
f14b4c32be N°7407 - adapt unattended test to 3.0 installation.xml choices 2024-04-09 10:46:44 +02:00
Molkobain
6be5264fe9 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-04-09 10:41:08 +02:00
Molkobain
6a30d6caa9 N°7438 - Dashboard: Fix crash when closing the editor modal 2024-04-09 10:40:06 +02:00
odain
bc8543d88c Merge branch 'support/3.0' into support/3.1
# Conflicts:
#	setup/modulediscovery.class.inc.php
#	setup/runtimeenv.class.inc.php
#	setup/unattended-install/unattended-install.php
#	tests/setup_params/default-params.xml
2024-04-09 10:11:06 +02:00
odain
a51242dc36 N°7407 - remove 2.7 requires in unattended service 2024-04-09 10:08:43 +02:00
odain
64ba706083 Merge branch 'support/2.7' into support/3.0
# Conflicts:
#	setup/applicationinstaller.class.inc.php
#	setup/modulediscovery.class.inc.php
#	setup/runtimeenv.class.inc.php
#	setup/unattended-install/unattended-install.php
#	tests/setup_params/default-params.xml
2024-04-09 10:07:40 +02:00
odain
ed562c9f73 N°7407 - fix unattended test enhancement 2024-04-09 10:02:06 +02:00
odain-cbd
85c576a986 N°7407 - N°7306 - Ease iTop installation via unattended CLI by using installation.xml choices (#641)
* N°7306 - Use iTop configuration settings to run unattended installation (instead of XML file settings)

* 7306 - fix infinite loop with db_tls.ca null

* 7306 - complete fields to use from itop configuration instead of XML setup

* fix using default language from conf

* 6365 - temp work

* 6365 - add option to select modules from installation.xml

* 6365-select modules option in unattended install

* 6365 - pass env to service + debug failed test

* 6365 - debug ci again + separate process annotation

* 6365 - fix test + cleanup

* 6365 - ci using use_installation_xml mode

* 6365 - ci using use_installation_xml mode

* 6365 - pass selected_modules to unattended

* N°6365 - Compute selected modules based on selected extensions coming from XML setup

* switch constr parameters and fix call from unattended cli

* 6365 - use use_installation_xml for unattended install only when no selected modules already provided

* test ci XML setup including selected extensions but no modules

* test ci installing iTop without selected modules/extenesions: guess via installation.xml

* same but without even providing XML setup - comment it in ci_description.ini

* 7306 - cleanup requires

* use infra master

* N°6365 - make current unattended CLI work with any iTop version (CLIPage compatibility)

* N°6365 - log which modules will be installed during setup

* N°6365 - unattended documentation + bash helper

* 6365- fix warning due to copies index access

* 6365 - enhance traces feedback to understant which and how modules are computes

* 6365 - enhance bash CLI + doc

* 6365 - fix require clipage compatibility

* 6365 - add return for better cli ouput

* 6365 - enhance ouput messages

* Document the usage and harmonize argument names (still not perfect)

* 6365 - fix use of new param param-file

* 6365 - fix test + vardump cleanup

* N°6365 - use underscore for unattended install options as advices in the PR

* 6365 -enhance test by using PHP_BINARY

---------

Co-authored-by: Romain Quetiez <romain.quetiez@combodo.com>
2024-04-09 10:00:58 +02:00
Molkobain
3deb74a4d1 N°6964 - Allow folder creation to be recursive 2024-04-08 21:46:02 +02:00
jf-cbd
1f2469e1e4 Remove mixed type uses in itop 3.1 2024-04-08 17:24:51 +02:00
jf-cbd
22af1a8787 Remove namespace for 3.1 2024-04-08 17:10:05 +02:00
jf-cbd
cd34f8b5eb Removed namespaces in 3.1 2024-04-08 12:19:43 +02:00
jf-cbd
8357c86361 🐛 Fix php 7.4 compatibility in bulkchange.class.inc.php (for itop 3.1) 2024-04-08 11:10:12 +02:00
jf-cbd
b10d381dda N°7374 - Security hardening 2024-04-05 14:40:56 +02:00
Eric Espie
9dc7b6dc0c N°7405 - Fix unit tests 2024-04-05 11:29:41 +02:00
Eric Espie
1be67f349f N°7405 - Cache error message 2024-04-05 11:08:47 +02:00
odain
8647414a33 N°5120 - PR merge adaptation to CLIPage 3.0 2024-04-02 15:05:35 +02:00
odain
a58f0bfc0b Merge branch 'support/3.0' into support/3.1 2024-04-02 15:02:26 +02:00
odain
ff1305165e N°5120 - PR merge adaptation to CLIPage 2024-04-02 14:42:21 +02:00
Molkobain
a468bf8f7e Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-04-02 10:38:30 +02:00
Molkobain
65c706fdfe Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2024-04-02 10:37:08 +02:00
Stephen Abello
25f266ef66 N°4631 - Update fullscreen class 2024-04-02 10:13:28 +02:00
odain-cbd
5a34c76cc4 N°5120 - Unattended install : use cty toolkit version (#624)
* N°5120 - Unattended install : use cty toolkit version

* N°5120 - CLI mode validation

* 5120 - bring CI enhancements

* 5120 - bring back saas use-itop-config option: to read db settings from conf directly

* 5120 - move unattended script in setup folder/unattended-install

* 5120 - use-itop-config option: take db_tls_enabled and db_tls_ca into account

* 5120 - move test

* 5120 - put ci enhancements back - logs and conf preservation with install mode

* 5120 - keep PR simple - remove saas use-itop-config option for now

* 5120 - remove ci enhancement to preserve configuration

* Update setup/unattended-install/README.md

Co-authored-by: Thomas Casteleyn <thomas.casteleyn@super-visions.com>

* 5120 - documentation

* 5120 - fix log level

* 5120 - fix test

* fix phpunit test comment

---------

Co-authored-by: Thomas Casteleyn <thomas.casteleyn@super-visions.com>
2024-03-29 11:09:27 +01:00
Stephen Abello
5efb1a0872 N°4631 - Fix a display issue when description field is fullscreen white using vertical tabs 2024-03-28 17:01:45 +01:00
Eric Espie
7f9b60d66f N°5913 - Add Event Listener methods & enhance methods management 2024-03-28 11:02:55 +01:00
Eric Espie
1278c4b196 N°7165 - Error message on application upgrade fatal Error due to CSS compilation 2024-03-27 11:11:55 +01:00
Eric Espie
a7f3bf9a56 N°7294 - EVENT_ADD_ATTACHMENT_TO_OBJECT not triggered 2024-03-27 10:34:48 +01:00
Eric Espie
4eed5bdeb9 N°7165 - Error message on application upgrade fatal Error due to CSS compilation 2024-03-27 10:12:21 +01:00
Eric Espie
7b999cef50 Compilation issue 2024-03-26 11:57:08 +01:00
Eric Espie
90458f6048 N°6974 - Flatten classes in datamodel - Allow _delta="merge" in strict mode 2024-03-22 10:11:25 +01:00
Molkobain
3653a4bc90 Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	css/setup.css
2024-03-21 15:52:57 +01:00
Molkobain
bdfd956825 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	css/setup.css
#	setup/setuppage.class.inc.php
2024-03-21 15:37:33 +01:00
Molkobain
da99a250bf N°7075 - Add check for Content Security Policies (CSP) in the setup 2024-03-21 14:20:22 +01:00
Molkobain
5554241877 N°7122 N°4164 - Fix wrong merge in b08b5297 2024-03-21 14:04:18 +01:00
Eric Espié
2f30a0146e N°6974 - Flatten classes in datamodel (#603)
* N°6974 - Flatten classes in datamodel

* N°6882 - LoadDelta() in lax/strict mode

* N°6974 - Flatten classes in datamodel

* N°6882 - LoadDelta() in lax/strict mode

* N°7186 - Code hardening

* N°6974 - Flatten classes in datamodel

* N°6660 and N°7318 - Support delete_if_exists and define_if_not_exists in XML injection

* N°6974 - Flatten classes in datamodel

* Apply suggestions from code review

* Update core/designdocument.class.inc.php

---------

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2024-03-19 13:53:14 +01:00
Pierre Goiffon
1de9e704fc Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-03-18 18:19:52 +01:00
Pierre Goiffon
f4b9a9a5fe N°6455 Fix datepicker widget icon on button
The buttonText is now escaped

(cherry picked from commit fa5d03fc6e)
2024-03-18 18:19:30 +01:00
Pierre Goiffon
fa5d03fc6e N°6455 Fix datepicker widget icon on button
The buttonText is now escaped
2024-03-18 18:15:39 +01:00
jf-cbd
8ffcb01c43 Merge branch 'support/3.0' into support/3.1 2024-03-14 17:00:20 +01:00
jf-cbd
5c46b4ef4a Added modules to GetLtsCompatibleModulesList (Dictionnarie tests) 2024-03-14 16:59:32 +01:00
Pierre Goiffon
79cdb837b5 Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	core/log.class.inc.php
2024-03-14 09:13:56 +01:00
Pierre Goiffon
a97935ca01 N°7336 DeprecatedCallsLog robustness (#632)
Was creating PHP notices when deprecated method caller wasn't a class/method
Found in iTop 3.2.0-dev with itop-object-copier copy.php : it is calling WebPage::add_linked_script directly inside the copy.php script (no class nor function)

Co-authored-by: odain <olivier.dain@combodo.com>
2024-03-13 15:38:21 +01:00
Molkobain
87181669d1 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-03-13 15:18:33 +01:00
Molkobain
efd7fb0f59 N°7331 - Fix wrong file extension in .htaccess file 2024-03-13 15:16:46 +01:00
Pierre Goiffon
71a0f8b87d Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-03-13 10:03:48 +01:00
Pierre Goiffon
a4edf8cb21 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	tests/php-unit-tests/unitary-tests/setup/SetupUtilsTest.php
2024-03-13 09:59:28 +01:00
Pierre Goiffon
dbd5ba0377 N°7302 Fix SetupUtilsTest::testHumanReadableSize 2024-03-13 09:56:31 +01:00
Pierre Goiffon
5d6f293956 N°7302 Report SetupUtilsTest::testHumanReadableSize in the 2.7 branch 2024-03-13 09:48:46 +01:00
Pierre Goiffon
65e6c84477 N°7302 Fix SetupUtilsTest::testHumanReadableSize 2024-03-13 09:37:34 +01:00
Pierre Goiffon
9cc7ccb1cd Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-03-13 09:27:39 +01:00
Pierre Goiffon
a337ef3d88 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	setup/modelfactory.class.inc.php
#	setup/setuputils.class.inc.php
2024-03-13 09:27:06 +01:00
Pierre Goiffon
986c24d777 N°7302 Fix unit name in \SetupUtils::HumanReadableSize (#626) 2024-03-12 18:09:29 +01:00
Pierre Goiffon
763112c179 N°7344 rest.php core/get : add try/catch around query execution (#622)
Co-authored-by: Thomas Casteleyn <thomas.casteleyn@super-visions.com>
Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2024-03-12 18:08:04 +01:00
Pierre Goiffon
a5efd981d8 N°7343 Catch ParseError when loading dict files in setup (#615) 2024-03-12 18:05:38 +01:00
Pierre Goiffon
c0e4d04a1c Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	tests/php-unit-tests/unitary-tests/core/DBObjectTest.php
2024-03-12 17:36:04 +01:00
Pierre Goiffon
289ca7b505 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2024-03-12 17:34:51 +01:00
Pierre Goiffon
2922b22478 \DBObject::GetSearchForUniquenessRule remove wrong @api 2024-03-12 17:34:28 +01:00
Pierre Goiffon
2af05a437e N°4314 - Fix Uniqueness rules not working with Silo
(cherry picked from commit e8c11f38d2)
2024-03-12 17:32:56 +01:00
vdumas
71d9536bc4 N°7268 Method SetComputedDate fails on Date only attribute
(cherry picked from commit b6caa51552)
(cherry picked from commit c8810708ef)
2024-03-12 17:29:04 +01:00
Molkobain
b08b5297cf N°7122 N°4164 - Adjustment to Symfony 5.4 2024-03-11 21:57:37 +01:00
Molkobain
3e6e096f62 Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	datamodels/2.x/itop-portal-base/portal/templates/layout.html.twig
2024-03-11 21:27:59 +01:00
Molkobain
6377a738c5 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2024-03-11 21:18:53 +01:00
Molkobain
a9f8dcc5e8 N°7122 N°4164 - Portal: Hide log off button when user can't actually log off (eg. SSO using SAML or other providers) (#599)
* N°7122 N°4164 - Portal: Hide log off button when user can't actually log off (eg. SSO using SAML or other providers)

* N°7122 - Fix typo

Co-authored-by: Thomas Casteleyn <thomas.casteleyn@super-visions.com>

---------

Co-authored-by: Thomas Casteleyn <thomas.casteleyn@super-visions.com>
2024-03-11 21:13:09 +01:00
Pierre Goiffon
9750fec959 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-03-11 16:40:14 +01:00
Pierre Goiffon
969a301cbb Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2024-03-11 16:40:01 +01:00
Pierre Goiffon
c325294e17 N°6599 Update moment from 2.22.2 to 2.30.1 2024-03-11 16:39:05 +01:00
Benjamin Dalsass
af2c6d9ab8 N°7279 - AttributeClass defined in XML datamodel compilation issue
- make more_values property optional
2024-03-11 16:03:38 +01:00
Eric Espie
cf6e8ab22a N°6974 - Add unit tests for compatibility validation 2024-03-08 13:29:04 +01:00
Pierre Goiffon
9032dac314 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-03-08 11:13:43 +01:00
Pierre Goiffon
a29b0a8e33 N°6455 Update JQuery-UI from 1.12.1 to 1.13.2 2024-03-08 11:13:32 +01:00
Pierre Goiffon
c1efad7556 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-03-07 11:11:34 +01:00
Pierre Goiffon
f78b57521a Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2024-03-07 11:11:19 +01:00
Pierre Goiffon
da490739be 💡 Fix \CMDBSource::Query phpdoc block 2024-03-07 11:10:53 +01:00
Pierre Goiffon
bf4b07a366 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-03-04 08:41:25 +01:00
Pierre Goiffon
48de13b5cf Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2024-03-04 08:32:59 +01:00
Pierre Goiffon
b867faa355 Fix DBObjectTest
Error was "Class 'Combodo\iTop\Test\UnitTest\Core\DBObjectSet' not found"
2024-03-04 08:09:35 +01:00
Pierre Goiffon
849c495093 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-03-01 17:26:19 +01:00
Pierre Goiffon
e878938e25 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2024-03-01 17:26:05 +01:00
jf-cbd
7453cc184f ✏️ fix a typo 2024-03-01 17:25:08 +01:00
Eric Espie
3b9ca4ad18 N°7310 - New Event to handle available Transitions 2024-03-01 09:39:00 +01:00
Anne-Cath
eddc750ca8 Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	pages/audit.php
#	tests/php-unit-tests/unitary-tests/core/DBSearchTest.php
2024-02-29 16:53:39 +01:00
Anne-Cath
f3abe1ff13 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	pages/audit.php
2024-02-29 16:50:04 +01:00
Anne-Catherine
473cf004b6 N°6968 - Audit duration : add of a rule multiplie by 4 the time of response (#575) 2024-02-29 16:33:04 +01:00
Pierre Goiffon
46273dfc12 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-02-28 16:43:51 +01:00
Pierre Goiffon
24f1cf8ca1 💡 Fix deprecated in JSDoc 2024-02-28 16:43:40 +01:00
Anne-Catherine
86bf6ba0b0 N°5547 - Object deletion fails if friendlyname too long (#529) 2024-02-27 17:59:37 +01:00
Anne-Catherine
82e19f6eca N°6543 - Fix display of AttributeText with width parameter (#521) 2024-02-27 17:42:59 +01:00
Eric Espie
8f1d8b1dc2 N°7294 - EVENT_ADD_ATTACHMENT_TO_OBJECT not triggered on the object 2024-02-27 17:39:53 +01:00
Molkobain
3cc3f0e4ff N°7288 - Fix page crash due to unescaped characters in relations row actions (#620) 2024-02-27 08:34:34 +01:00
Molkobain
b7f43ba22b Fix test case case when context tag is present more than once 2024-02-21 18:27:21 +01:00
Molkobain
b13e0c92a5 Fix test case dependant to setup option Change Management Simple vs ITIL 2024-02-21 18:13:27 +01:00
jf-cbd
aa81c94dad Improved test and test cleanup 2024-02-21 16:30:00 +01:00
Benjamin Dalsass
f41f2a063d N°7279 - AttributeClass defined in XML datamodel compilation issue 2024-02-21 10:41:47 +01:00
Pierre Goiffon
095c94a917 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-02-20 12:11:57 +01:00
Pierre Goiffon
102a4a0c75 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	core/attributedef.class.inc.php
2024-02-20 12:11:02 +01:00
Pierre Goiffon
f6fec506b1 💡 Some PHPDoc hints on value types to pass to DBObject::Set 2024-02-20 12:10:00 +01:00
Pierre Goiffon
7d0801f74f Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-02-20 09:27:26 +01:00
Pierre Goiffon
3b9f281afd N°7246 DictionariesConsistencyTest : remove combodo-approval-light
We have an invalid CS dict in the 1.2.3 module version
2024-02-20 09:27:15 +01:00
Pierre Goiffon
bcba666483 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-02-20 09:12:47 +01:00
Pierre Goiffon
ec465174f7 N°7246 DictionariesConsistencyTest : remove syntax incompatible with PHP < 7.3 2024-02-20 09:11:47 +01:00
Molkobain
9f675fef02 N°7231 - PHP 8.1: Migrate deprecated usages of rawurlencode() with null value 2024-02-19 20:19:36 +01:00
Molkobain
1d106eb33a Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-02-19 09:51:08 +01:00
Molkobain
31bd763b90 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2024-02-19 09:49:26 +01:00
Molkobain
5c12151c26 📝 Update PR template 2024-02-19 09:46:12 +01:00
vdumas
961315cf34 N°6826 - Add SQL value for file attribute in DocumentFile 2024-02-16 10:37:44 +01:00
Pierre Goiffon
95fef002a6 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-02-15 14:43:19 +01:00
Pierre Goiffon
9777ac1a5c N°7246 DictionariesConsistencyTest : don't test extensions modules in old iTop builds 2024-02-15 14:39:00 +01:00
Pierre Goiffon
ba0020fa63 N°7246 Fix dict files : translated keys with tildes in /dictionaries/** 2024-02-15 10:59:10 +01:00
Pierre Goiffon
1e83f2eb60 Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	dictionaries/ui/layouts/navigation-menu/pt_br.dictionary.itop.navigation-menu.php
#	dictionaries/ui/layouts/navigation-menu/zh_cn.dictionary.itop.navigation-menu.php
2024-02-15 10:55:54 +01:00
Pierre Goiffon
dd27a3ebb4 N°7246 Fix dict files : translated keys with tildes in /dictionaries/** 2024-02-15 10:50:08 +01:00
Pierre Goiffon
54439ad529 N°7249 DictionariesConsistencyTest : also scan /dictionaries sub-directories
Since 3.0.0 we introduced sub directories
2024-02-15 10:46:42 +01:00
Pierre Goiffon
2c61ac4949 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-02-15 09:47:55 +01:00
Pierre Goiffon
8f7bf00551 N°7246 DictionariesConsistencyTest : add /extensions for local debugging 2024-02-15 09:46:14 +01:00
Molkobain
0483cea226 N°7212 - PHP 8.1: Migrate remaining usages of strlen() with null value (#607) 2024-02-14 19:29:26 +01:00
Molkobain
922a842e96 N°7213 - PHP 8.1: Migrate remaining usages of md5() with null value (#608)
* N°7213 - PHP 8.1: Migrate remaining usages of md5() with null value

* Update core/attributedef.class.inc.php
2024-02-14 19:27:14 +01:00
Pierre Goiffon
e4f068a518 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-02-14 15:17:14 +01:00
Pierre Goiffon
c020de59a7 📝 tests README : retrofit of the support/3.2 version 2024-02-14 15:16:58 +01:00
vdumas
3c2350961d N°7217 - Not able to create a link between "Audit Domain" and "Audit category" with an "Audit Manager" profile 2024-02-14 14:38:21 +01:00
Pierre Goiffon
391c78ae42 Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	datamodels/2.x/combodo-db-tools/dictionaries/zh_cn.dict.combodo-db-tools.php
#	datamodels/2.x/itop-attachments/dictionaries/zh_cn.dict.itop-attachments.php
#	datamodels/2.x/itop-backup/dictionaries/da.dict.itop-backup.php
#	datamodels/2.x/itop-backup/dictionaries/it.dict.itop-backup.php
#	datamodels/2.x/itop-backup/dictionaries/ja.dict.itop-backup.php
#	datamodels/2.x/itop-backup/dictionaries/sk.dict.itop-backup.php
#	datamodels/2.x/itop-backup/dictionaries/tr.dict.itop-backup.php
#	datamodels/2.x/itop-config-mgmt/dictionaries/it.dict.itop-config-mgmt.php
#	datamodels/2.x/itop-config/dictionaries/da.dict.itop-config.php
#	datamodels/2.x/itop-config/dictionaries/it.dict.itop-config.php
#	datamodels/2.x/itop-config/dictionaries/ja.dict.itop-config.php
#	datamodels/2.x/itop-config/dictionaries/sk.dict.itop-config.php
#	datamodels/2.x/itop-config/dictionaries/tr.dict.itop-config.php
#	datamodels/2.x/itop-core-update/dictionaries/cs.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/dictionaries/da.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/dictionaries/it.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/dictionaries/ja.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/dictionaries/sk.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/dictionaries/tr.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/dictionaries/zh_cn.dict.itop-core-update.php
#	datamodels/2.x/itop-faq-light/dictionaries/zh_cn.dict.itop-faq-light.php
#	datamodels/2.x/itop-files-information/dictionaries/de.dict.itop-files-information.php
#	datamodels/2.x/itop-files-information/dictionaries/pl.dict.itop-files-information.php
#	datamodels/2.x/itop-files-information/dictionaries/zh_cn.dict.itop-files-information.php
#	datamodels/2.x/itop-hub-connector/dictionaries/pt_br.dict.itop-hub-connector.php
#	datamodels/2.x/itop-oauth-client/dictionaries/cs.dict.itop-oauth-client.php
#	datamodels/2.x/itop-oauth-client/dictionaries/da.dict.itop-oauth-client.php
#	datamodels/2.x/itop-oauth-client/dictionaries/es_cr.dict.itop-oauth-client.php
#	datamodels/2.x/itop-oauth-client/dictionaries/it.dict.itop-oauth-client.php
#	datamodels/2.x/itop-oauth-client/dictionaries/ja.dict.itop-oauth-client.php
#	datamodels/2.x/itop-oauth-client/dictionaries/nl.dict.itop-oauth-client.php
#	datamodels/2.x/itop-oauth-client/dictionaries/pt_br.dict.itop-oauth-client.php
#	datamodels/2.x/itop-oauth-client/dictionaries/ru.dict.itop-oauth-client.php
#	datamodels/2.x/itop-oauth-client/dictionaries/sk.dict.itop-oauth-client.php
#	datamodels/2.x/itop-oauth-client/dictionaries/tr.dict.itop-oauth-client.php
#	datamodels/2.x/itop-oauth-client/dictionaries/zh_cn.dict.itop-oauth-client.php
#	datamodels/2.x/itop-service-mgmt-provider/dictionaries/de.dict.itop-service-mgmt-provider.php
#	datamodels/2.x/itop-tickets/dictionaries/da.dict.itop-tickets.php
#	datamodels/2.x/itop-tickets/dictionaries/hu.dict.itop-tickets.php
#	datamodels/2.x/itop-tickets/dictionaries/it.dict.itop-tickets.php
#	datamodels/2.x/itop-tickets/dictionaries/ja.dict.itop-tickets.php
#	dictionaries/cs.dictionary.itop.ui.php
#	dictionaries/da.dictionary.itop.core.php
#	dictionaries/da.dictionary.itop.ui.php
#	dictionaries/de.dictionary.itop.ui.php
#	dictionaries/en.dictionary.itop.ui.php
#	dictionaries/es_cr.dictionary.itop.ui.php
#	dictionaries/fr.dictionary.itop.ui.php
#	dictionaries/hu.dictionary.itop.ui.php
#	dictionaries/it.dictionary.itop.core.php
#	dictionaries/it.dictionary.itop.ui.php
#	dictionaries/ja.dictionary.itop.core.php
#	dictionaries/ja.dictionary.itop.ui.php
#	dictionaries/nl.dictionary.itop.ui.php
#	dictionaries/pl.dictionary.itop.core.php
#	dictionaries/pl.dictionary.itop.ui.php
#	dictionaries/pt_br.dictionary.itop.core.php
#	dictionaries/pt_br.dictionary.itop.ui.php
#	dictionaries/ru.dictionary.itop.core.php
#	dictionaries/ru.dictionary.itop.ui.php
#	dictionaries/sk.dictionary.itop.core.php
#	dictionaries/sk.dictionary.itop.ui.php
#	dictionaries/tr.dictionary.itop.core.php
#	dictionaries/tr.dictionary.itop.ui.php
#	dictionaries/zh_cn.dictionary.itop.core.php
#	dictionaries/zh_cn.dictionary.itop.ui.php
#	tests/php-unit-tests/integration-tests/DictionariesConsistencyTest.php
2024-02-14 14:21:22 +01:00
Pierre Goiffon
aa53de467d Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2024-02-14 11:39:42 +01:00
Pierre Goiffon
bc6efc99ed N°7246 Fix dict files : remove keys defined multiple times in the same file 2024-02-14 11:20:02 +01:00
Pierre Goiffon
bb3ab76205 N°7246 Fix dict files : missing constants in dict labels 2024-02-14 11:20:02 +01:00
Pierre Goiffon
0b1bdfff55 N°7246 Fix dict files : translated keys with tildes
Note that there were some keys in EN files with tildes at the end
2024-02-14 11:20:02 +01:00
Pierre Goiffon
77c0cdf5aa N°7246 📝 test README : add markTestAsSkipped restrictions 2024-02-14 11:20:02 +01:00
Pierre Goiffon
af9fb74c54 N°7246 Add new tests methods in DictionariesConsistencyTest (#610)
Adding following checks:
* no duplicate key in the same file
* for each value different than its EN counterpart, no tildes at the end
* good use of iTop name constants (ITOP_APPLICATION_SHORT, ITOP_APPLICATION, ITOP_VERSION_NAME), eg `'my value ITOP_APPLICATION'` instead of `'my value '.ITOP_APPLICATION`
2024-02-14 11:20:02 +01:00
Pierre Goiffon
5d6c4939f6 N°7245 Bettor logs on RunTimeEnvironment::CallInstallerHandlers exceptions (#606) 2024-02-14 11:01:12 +01:00
Pierre Goiffon
5663c61e51 N°7179 Remove unused var in ActionEmail::PrepareMessageContent (#605)
Introduced in fed149d in 3.1.0
2024-02-14 10:32:23 +01:00
Pierre Goiffon
51d0d16a11 N°7052 synchro_import.php: fix undefined offset notices (#583)
Regression brought by #269
2024-02-14 09:53:31 +01:00
Pierre Goiffon
848528567e Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	dictionaries/en.dictionary.itop.ui.php
2024-02-09 13:41:23 +01:00
Pierre Goiffon
b0634c9fbc N°7232 Fix regression on UI:RunQuery:Error
In the UI:RunQuery:Error key, the placeholder was removed when we migrated run_query.php to using UiBlock and Panel.
But it was restored by mistake in f65c6904 (N°5491 in 3.0.4 / 3.1.1)
This was the only key modified for this bug in a EN file.
2024-02-09 13:30:47 +01:00
Pierre Goiffon
fabeea8dba Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-02-09 12:05:00 +01:00
Pierre Goiffon
c951a33646 📝 Update js/README.md file locations 2024-02-09 12:04:21 +01:00
Pierre Goiffon
8f250e82f4 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-02-08 11:34:32 +01:00
Pierre Goiffon
ed694b09b0 💡 Update test PHPDoc 2024-02-08 11:34:13 +01:00
Timmy38
18deb79068 N°7172 HTML markup for n:n set properties (#604)
* N°7172 HTML markup for n:n set properties
2024-01-29 15:35:17 +01:00
Molkobain
4d4cdf9e60 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-01-24 15:18:37 +01:00
Molkobain
3868d57d28 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2024-01-24 15:11:29 +01:00
Molkobain
1b3a2c8470 N°5775 - Show error message to user in case of issue during token generation 2024-01-24 14:49:51 +01:00
Dennis Lassiter
618d8e6468 N°5775 - Allow configuration of OAuth client on MS Azure with single tenant (#553)
* Add Tenant-Support for Azure OAuthClient

* Improvement: Make tenant required

* Improvment: Removed check for null-value

Since last commit, the "tenant"-field either set to a custom value or "common" by default. It is not allowed to be null

* Add field description

---------

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2024-01-24 14:38:54 +01:00
odain
53a2a7a8e2 N°7147 - cleanup 2024-01-23 20:45:35 +01:00
odain
9a26c37ffd N°7147 - Error HTTP 500 due to access_token not URL decoded 2024-01-23 16:50:21 +01:00
Eric Espie
cc5e105d7f N°7070 - remove _delta attribute from datamodel and avoid _delta attributes under a node having _delta in [define, define_if_not_exist, redefine, force] in deltas 2024-01-17 15:12:08 +01:00
jf-cbd
7f62bd61e3 N°7134 - Can't retrieve the list of changes when editing URP_UserProfile 2024-01-17 15:05:30 +01:00
Molkobain
72bbc31cd9 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-01-16 19:48:33 +01:00
Molkobain
f54d1273c9 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2024-01-16 19:46:55 +01:00
Molkobain
01a955a16f 📝 Add PR template 2024-01-16 19:42:39 +01:00
Pierre Goiffon
669e6f93fa Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-01-16 11:00:52 +01:00
Pierre Goiffon
a5aac0caad N°7143 Woops removed forgotten echo 2024-01-16 10:25:28 +01:00
Pierre Goiffon
31e29506fa N°7143 DictionariesConsistencyTest::testNoDictFileInDatamodelsModuleRootDirectory Add exclusion list to remove modules that must be compatible with iTop 2.7 2024-01-16 10:18:50 +01:00
Anne-Cath
3005bc1234 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-01-15 16:34:01 +01:00
Anne-Cath
3f3b0cbe55 Fix merge support/2.7 to support/3.0 2024-01-15 16:25:10 +01:00
Anne-Catherine
cff50f8732 N°3448 - Framework field size check not correctly implemented for multibytes languages/strings (#528) 2024-01-15 16:10:23 +01:00
Anne-Cath
a8cd9566ac Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-01-15 16:01:48 +01:00
Anne-Cath
dab03e5b5d Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	application/cmdbabstract.class.inc.php
2024-01-15 15:56:24 +01:00
Anne-Catherine
87582a021b N°6993 - Error message on bulk transition on object containing a null blob (#596) 2024-01-15 15:49:19 +01:00
Pierre Goiffon
200cdefa1a Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	datamodels/2.x/itop-core-update/dictionaries/pt_br.dict.itop-core-update.php
#	datamodels/2.x/itop-hub-connector/dictionaries/pl.dict.itop-hub-connector.php
#	datamodels/2.x/itop-hub-connector/dictionaries/pt_br.dict.itop-hub-connector.php
#	datamodels/2.x/itop-hub-connector/dictionaries/zh_cn.dict.itop-hub-connector.php
#	datamodels/2.x/itop-welcome-itil/dictionaries/tr.dict.itop-welcome-itil.php
2024-01-15 15:44:48 +01:00
Pierre Goiffon
8ef04bedf2 N°7143 Move datamodels/2.x dict files to dictionaries subdir
New phpunit method to ensure it won't happen again
2024-01-15 15:35:15 +01:00
Pierre Goiffon
9eeb4b8751 N°7143 itop-hub-connector dic files: fix buggy br tags 2024-01-15 15:35:15 +01:00
Pierre Goiffon
ae3d0f9444 N°7143 Fix bytes unit in attachments EN dict 2024-01-15 15:35:15 +01:00
Molkobain
1fa4fe6d35 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-01-12 12:05:24 +01:00
Molkobain
2ed0666c3b N°7085 - Remove comment about annotation as on support/3.0 branch not using runTestsInSeparateProcesses is the standard 2024-01-12 10:53:24 +01:00
odain
9b5988133b Merge branch 'support/3.0' into support/3.1 2024-01-12 08:57:51 +01:00
odain
a61b117f71 Merge branch 'support/2.7' into support/3.0 2024-01-12 08:56:25 +01:00
odain
9830178a47 N°7085 - ci restore runTestsInSeparateProcesses 2024-01-12 08:36:15 +01:00
odain
83ac219ec9 Merge branch 'support/2.7' into support/3.0 2024-01-12 08:19:05 +01:00
odain-cbd
c140ebcb6b N°7085 - Fix infinite loop in login page until fatal error occurs (#592)
* N°7085 - login page infinite loop until fatal error- add Config->AddAllowedLoginTypes

* N°7085 - reproduce issue via a test

* N°7085-fix infinite loop

* N°7085 - ci: fix config file rights in tearDown

* N°7085 - ci: fix config file rights in tearDown (again)

* N°7085 - ci: fix config file content

* N°7085 - ci : add runTestsInSeparateProcesses

* Update core/config.class.inc.php

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>

* N°7085 - exit -1 + enhance log message

* PR feedbacks from Romain regarding LoginTest annotations

---------

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2024-01-12 08:13:40 +01:00
Molkobain
fddf9e36c7 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-01-11 22:16:10 +01:00
Molkobain
b181914d25 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2024-01-11 22:04:48 +01:00
Molkobain
7a0a4e377b N°7137 - Fix regression from 7fffbb60, missing "default_value" parameter 2024-01-11 16:40:40 +01:00
Thomas Casteleyn
7fffbb60e9 N°7137 - DataSynchro: Remove "Organization" as default value for SynchroReplica->dest_class (#551) 2024-01-11 15:38:02 +01:00
Benjamin Dalsass
03b095f246 N°7133 - Linkset displayed as property failed when filter contains single quote or new line 2024-01-10 16:50:03 +01:00
Pierre Goiffon
e8c371174c Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	approot.inc.php
#	datamodels/2.x/authent-cas/module.authent-cas.php
#	datamodels/2.x/authent-external/module.authent-external.php
#	datamodels/2.x/authent-ldap/module.authent-ldap.php
#	datamodels/2.x/authent-local/module.authent-local.php
#	datamodels/2.x/combodo-backoffice-darkmoon-theme/module.combodo-backoffice-darkmoon-theme.php
#	datamodels/2.x/combodo-db-tools/module.combodo-db-tools.php
#	datamodels/2.x/itop-attachments/module.itop-attachments.php
#	datamodels/2.x/itop-backup/module.itop-backup.php
#	datamodels/2.x/itop-bridge-cmdb-ticket/module.itop-bridge-cmdb-ticket.php
#	datamodels/2.x/itop-bridge-virtualization-storage/module.itop-bridge-virtualization-storage.php
#	datamodels/2.x/itop-change-mgmt-itil/module.itop-change-mgmt-itil.php
#	datamodels/2.x/itop-change-mgmt/module.itop-change-mgmt.php
#	datamodels/2.x/itop-config-mgmt/module.itop-config-mgmt.php
#	datamodels/2.x/itop-config/module.itop-config.php
#	datamodels/2.x/itop-core-update/module.itop-core-update.php
#	datamodels/2.x/itop-datacenter-mgmt/module.itop-datacenter-mgmt.php
#	datamodels/2.x/itop-endusers-devices/module.itop-endusers-devices.php
#	datamodels/2.x/itop-faq-light/module.itop-faq-light.php
#	datamodels/2.x/itop-files-information/module.itop-files-information.php
#	datamodels/2.x/itop-full-itil/module.itop-full-itil.php
#	datamodels/2.x/itop-hub-connector/module.itop-hub-connector.php
#	datamodels/2.x/itop-incident-mgmt-itil/module.itop-incident-mgmt-itil.php
#	datamodels/2.x/itop-knownerror-mgmt/module.itop-knownerror-mgmt.php
#	datamodels/2.x/itop-oauth-client/module.itop-oauth-client.php
#	datamodels/2.x/itop-portal-base/module.itop-portal-base.php
#	datamodels/2.x/itop-portal/module.itop-portal.php
#	datamodels/2.x/itop-problem-mgmt/module.itop-problem-mgmt.php
#	datamodels/2.x/itop-profiles-itil/module.itop-profiles-itil.php
#	datamodels/2.x/itop-request-mgmt-itil/module.itop-request-mgmt-itil.php
#	datamodels/2.x/itop-request-mgmt/module.itop-request-mgmt.php
#	datamodels/2.x/itop-service-mgmt-provider/module.itop-service-mgmt-provider.php
#	datamodels/2.x/itop-service-mgmt/module.itop-service-mgmt.php
#	datamodels/2.x/itop-sla-computation/module.itop-sla-computation.php
#	datamodels/2.x/itop-storage-mgmt/module.itop-storage-mgmt.php
#	datamodels/2.x/itop-structure/module.itop-structure.php
#	datamodels/2.x/itop-themes-compat/module.itop-themes-compat.php
#	datamodels/2.x/itop-tickets/module.itop-tickets.php
#	datamodels/2.x/itop-virtualization-mgmt/module.itop-virtualization-mgmt.php
#	datamodels/2.x/itop-welcome-itil/module.itop-welcome-itil.php
#	datamodels/2.x/version.xml
2024-01-05 17:48:19 +01:00
Pierre Goiffon
b8892e9651 🔖 Prepare 3.0.4 version 2024-01-05 17:34:39 +01:00
Pierre Goiffon
8cde0ce5c5 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	approot.inc.php
#	css/css-variables.scss
#	datamodels/2.x/authent-cas/module.authent-cas.php
#	datamodels/2.x/authent-external/module.authent-external.php
#	datamodels/2.x/authent-ldap/module.authent-ldap.php
#	datamodels/2.x/authent-local/module.authent-local.php
#	datamodels/2.x/combodo-db-tools/module.combodo-db-tools.php
#	datamodels/2.x/itop-attachments/module.itop-attachments.php
#	datamodels/2.x/itop-backup/module.itop-backup.php
#	datamodels/2.x/itop-bridge-virtualization-storage/module.itop-bridge-virtualization-storage.php
#	datamodels/2.x/itop-change-mgmt-itil/module.itop-change-mgmt-itil.php
#	datamodels/2.x/itop-change-mgmt/module.itop-change-mgmt.php
#	datamodels/2.x/itop-config-mgmt/module.itop-config-mgmt.php
#	datamodels/2.x/itop-config/module.itop-config.php
#	datamodels/2.x/itop-core-update/module.itop-core-update.php
#	datamodels/2.x/itop-datacenter-mgmt/module.itop-datacenter-mgmt.php
#	datamodels/2.x/itop-endusers-devices/module.itop-endusers-devices.php
#	datamodels/2.x/itop-files-information/module.itop-files-information.php
#	datamodels/2.x/itop-full-itil/module.itop-full-itil.php
#	datamodels/2.x/itop-hub-connector/module.itop-hub-connector.php
#	datamodels/2.x/itop-incident-mgmt-itil/module.itop-incident-mgmt-itil.php
#	datamodels/2.x/itop-knownerror-mgmt/module.itop-knownerror-mgmt.php
#	datamodels/2.x/itop-oauth-client/module.itop-oauth-client.php
#	datamodels/2.x/itop-portal-base/module.itop-portal-base.php
#	datamodels/2.x/itop-portal/module.itop-portal.php
#	datamodels/2.x/itop-problem-mgmt/module.itop-problem-mgmt.php
#	datamodels/2.x/itop-profiles-itil/module.itop-profiles-itil.php
#	datamodels/2.x/itop-request-mgmt-itil/module.itop-request-mgmt-itil.php
#	datamodels/2.x/itop-request-mgmt/module.itop-request-mgmt.php
#	datamodels/2.x/itop-service-mgmt-provider/module.itop-service-mgmt-provider.php
#	datamodels/2.x/itop-service-mgmt/module.itop-service-mgmt.php
#	datamodels/2.x/itop-sla-computation/module.itop-sla-computation.php
#	datamodels/2.x/itop-storage-mgmt/module.itop-storage-mgmt.php
#	datamodels/2.x/itop-tickets/module.itop-tickets.php
#	datamodels/2.x/itop-virtualization-mgmt/module.itop-virtualization-mgmt.php
#	datamodels/2.x/itop-welcome-itil/module.itop-welcome-itil.php
#	datamodels/2.x/version.xml
2024-01-05 17:26:28 +01:00
Pierre Goiffon
2fd9523c16 🔖 Prepare 2.7.10 version 2024-01-05 15:50:41 +01:00
Eric Espie
18887bf7f9 N°7118 - Act on guaranteed object deletion, with the object still accessible (EVENT_DB_ABOUT_TO_DELETE) 2024-01-05 11:21:59 +01:00
Pierre Goiffon
fad5571d9b Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2024-01-05 11:03:34 +01:00
Pierre Goiffon
48c4e2d13d Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	application/ajaxwebpage.class.inc.php
#	application/webpage.class.inc.php
#	application/xmlpage.class.inc.php
#	core/config.class.inc.php
2024-01-05 10:58:51 +01:00
Eric Espie
5b2b9c92e1 Merge branch 'support/3.1.1' into support/3.1 2024-01-05 10:51:21 +01:00
Pierre Goiffon
a4f6f6e877 N°4368 Fix CORB blocking regression (#598)
Don't send X-Content-Type-Options HTTP header for certain WebPage impl to workaround CORB blocking
To disable globally this new behavior introduced in 9865bf07, set the `security.enable_header_xcontent_type_options` config parameter to false

Thanks @Molkobain for the review !
2024-01-05 10:41:18 +01:00
Eric Espie
68fa3d0236 N°7080 - EVENT_DB_LINKS_CHANGED not fired when deleting a user 2024-01-05 10:36:37 +01:00
Pierre Goiffon
abb3ea3272 N°7080 - EVENT_DB_LINKS_CHANGED not fired when deleting a user
Fix regressions caused by deletion plan reorder
2024-01-04 18:07:16 +01:00
Eric Espie
1de390a24d N°7080 - EVENT_DB_LINKS_CHANGED not fired when deleting a user 2024-01-04 15:56:48 +01:00
jf-cbd
20478958ad Merge branch 'support/3.1.1' into support/3.1 2024-01-04 11:07:07 +01:00
jf-cbd
34499a719f Update test - broken with N°7079 fix 2024-01-04 10:59:51 +01:00
jf-cbd
ba99f8f5a4 Merge branch 'support/3.1.1' into support/3.1 2024-01-04 10:34:48 +01:00
jf-cbd
8092f566a5 N°7079 - EVENT_DB_LINKS_CHANGED not fired when creating/updating a user with profiles 2024-01-04 10:29:25 +01:00
Pierre Goiffon
379062f1f7 Merge remote-tracking branch 'origin/support/3.0' into support/3.1
Most of the conflicts are caused by HU translations (N°7077 / #584)

# Conflicts:
#	css/setup.css
#	datamodels/2.x/authent-cas/dictionaries/hu.dict.authent-cas.php
#	datamodels/2.x/authent-ldap/dictionaries/hu.dict.authent-ldap.php
#	datamodels/2.x/authent-local/dictionaries/hu.dict.authent-local.php
#	datamodels/2.x/combodo-backoffice-darkmoon-theme/dictionaries/hu.dict.combodo-backoffice-darkmoon-theme.php
#	datamodels/2.x/combodo-db-tools/dictionaries/hu.dict.combodo-db-tools.php
#	datamodels/2.x/itop-attachments/dictionaries/hu.dict.itop-attachments.php
#	datamodels/2.x/itop-backup/dictionaries/hu.dict.itop-backup.php
#	datamodels/2.x/itop-bridge-cmdb-ticket/dictionaries/hu.dict.itop-bridge-cmdb-ticket.php
#	datamodels/2.x/itop-change-mgmt-itil/dictionaries/hu.dict.itop-change-mgmt-itil.php
#	datamodels/2.x/itop-change-mgmt/dictionaries/hu.dict.itop-change-mgmt.php
#	datamodels/2.x/itop-config-mgmt/dictionaries/hu.dict.itop-config-mgmt.php
#	datamodels/2.x/itop-config/dictionaries/hu.dict.itop-config.php
#	datamodels/2.x/itop-core-update/dictionaries/hu.dict.itop-core-update.php
#	datamodels/2.x/itop-faq-light/dictionaries/hu.dict.itop-faq-light.php
#	datamodels/2.x/itop-hub-connector/dictionaries/hu.dict.itop-hub-connector.php
#	datamodels/2.x/itop-incident-mgmt-itil/dictionaries/hu.dict.itop-incident-mgmt-itil.php
#	datamodels/2.x/itop-knownerror-mgmt/dictionaries/hu.dict.itop-knownerror-mgmt.php
#	datamodels/2.x/itop-oauth-client/hu.dict.itop-oauth-client.php
#	datamodels/2.x/itop-portal-base/dictionaries/hu.dict.itop-portal-base.php
#	datamodels/2.x/itop-portal/dictionaries/hu.dict.itop-portal.php
#	datamodels/2.x/itop-problem-mgmt/dictionaries/hu.dict.itop-problem-mgmt.php
#	datamodels/2.x/itop-request-mgmt-itil/dictionaries/hu.dict.itop-request-mgmt-itil.php
#	datamodels/2.x/itop-request-mgmt/dictionaries/hu.dict.itop-request-mgmt.php
#	datamodels/2.x/itop-service-mgmt-provider/dictionaries/hu.dict.itop-service-mgmt-provider.php
#	datamodels/2.x/itop-service-mgmt/dictionaries/hu.dict.itop-service-mgmt.php
#	datamodels/2.x/itop-structure/dictionaries/hu.dict.itop-structure.php
#	datamodels/2.x/itop-tickets/dictionaries/hu.dict.itop-tickets.php
#	dictionaries/hu.dictionary.itop.core.php
#	dictionaries/hu.dictionary.itop.ui.php
#	dictionaries/ui/components/breadcrumbs/hu.dictionary.itop.breadcrumbs.php
#	dictionaries/ui/components/datatable/hu.dictionary.itop.datatable.php
#	dictionaries/ui/components/field/hu.dictionary.itop.field.php
#	dictionaries/ui/components/global-search/hu.dictionary.itop.global-search.php
#	dictionaries/ui/components/input/hu.dictionary.itop.input.php
#	dictionaries/ui/components/quick-create/hu.dictionary.itop.quick-create.php
#	dictionaries/ui/layouts/activity-panel/hu.dictionary.itop.activity-panel.php
#	dictionaries/ui/layouts/navigation-menu/hu.dictionary.itop.navigation-menu.php
#	dictionaries/ui/layouts/object-details/hu.dictionary.itop.object-details.php
#	dictionaries/ui/layouts/page-content/hu.dictionary.itop.page-content.php
#	dictionaries/ui/layouts/tab-container/hu.dictionary.itop.tab-container.php
#	dictionaries/ui/pages/errorpage/hu.dictionary.itop.errorpage.php
#	dictionaries/ui/pages/preferences/hu.dictionary.itop.preferences.php
#	tests/php-unit-tests/unitary-tests/setup/DBBackupTest.php
2024-01-03 17:30:57 +01:00
Pierre Goiffon
6042e7f74d Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	tests/php-unit-tests/post-build-integration-tests/SetupCssIntegrityChecklistTest.php
#	tests/php-unit-tests/unitary-tests/core/CMDBSource/CMDBSourceTest.php
2024-01-03 10:43:41 +01:00
denis.flaven@combodo.com
5e233f4bec N°7017 - Prevent race conditions when rebuilding cache 2024-01-02 17:02:44 +01:00
Molkobain
19c93249e3 Merge remote-tracking branch 'origin/support/3.1.1' into support/3.1 2024-01-02 11:56:30 +01:00
denis.flaven@combodo.com
a1e2b648f4 N°7001 - Being admin to generate oAuth token is too restrictive 2024-01-02 11:38:43 +01:00
Molkobain
94c604a6af N°3062 - Fix setup.css compilation test to ensure that it is versioned correctly. 2023-12-21 12:00:26 +01:00
Pierre Goiffon
f84e2060be N°7077 Hungarian translations based on iTop 3.0.2-1 (#584)
Many thanks to Csaba TARJÁNYI (@tacsaby) !
2023-12-20 15:52:41 +01:00
Pierre Goiffon
6995a3c641 N°6889 backup mysqldump call : restore possibility to connect using socket protocol (#591)
With previous fix (N°6123) we forced to use the tcp protocol each time. This was blocking for users wanting to connect using the socket protocol on localhost.

Now for localhost we will : 
- send both port and protocol arguments if the `db_host` config parameter does contain a port
- don't send any of the port or protocol arguments if `db_host` doesn't contain a port
2023-12-20 15:19:50 +01:00
Pierre Goiffon
e007e09155 Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	pages/ajax.render.php
2023-12-19 18:41:57 +01:00
Pierre Goiffon
4ee70cb95a Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	application/ajaxwebpage.class.inc.php
#	application/csvpage.class.inc.php
#	application/itopwebpage.class.inc.php
#	application/webpage.class.inc.php
#	application/xmlpage.class.inc.php
#	datamodels/2.x/itop-hub-connector/hubconnectorpage.class.inc.php
#	pages/ajax.document.php
#	pages/ajax.render.php
#	sources/application/TwigBase/Controller/Controller.php
#	webservices/export-v2.php
2023-12-19 18:38:45 +01:00
Pierre Goiffon
9865bf0779 N°4368 add sending X-Content-Type-Options HTTP header
Replace in consumers the \WebPage::add_xframe_options call by \WebPage::add_http_headers
2023-12-19 18:25:26 +01:00
Molkobain
2144933927 N°6816 - Search: Fix JS "me._onACSearchContainsSuccess is not a function" error (#556) 2023-12-14 10:57:53 +01:00
Molkobain
e2574a0738 Merge remote-tracking branch 'origin/support/3.1.0' into support/3.1 2023-12-13 18:47:00 +01:00
denis.flaven@combodo.com
3fb5c05467 N°7001 - Being admin to generate oAuth token is too restrictive 2023-12-13 13:57:44 +01:00
jf-cbd
17d131a9b1 N°7021 - Fix error log and useless compilation time due to SCSS file unnecessary compilation #579 2023-12-13 09:21:26 +01:00
Eric Espie
fc2be85c95 N°7054 - Rework the UpdateImpactedItems calls on Tickets 2023-12-12 11:25:27 +01:00
Eric Espie
e748d72c03 N°7054 - Rework the UpdateImpactedItems calls on Tickets 2023-12-12 10:40:48 +01:00
Pierre Goiffon
797aae58e3 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-12-08 17:21:01 +01:00
Pierre Goiffon
f63f3bb547 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-12-08 17:20:48 +01:00
Pierre Goiffon
d5449cca42 💡 iTopMutex: add link to mysql doc 2023-12-08 17:20:37 +01:00
Pierre Goiffon
3f8017f43d N°7046 Fix authent-cas: "CAS_ServiceBaseUrl_Static" not found
Regression in 3.1.0 brought by N°5270 (02afa2f1)
2023-12-08 10:41:04 +01:00
Molkobain
4846532368 N°7047 - Fix regression from 7b59df21, portal themes others than "bootstrap" and "portal" not loaded due to change in expected path (now relative) 2023-12-08 08:28:43 +01:00
Molkobain
90d28c1f90 N°7039 - Fix incorrect retrieval of SecurityHelper due to previous merge 2023-12-07 12:38:16 +01:00
Molkobain
8cc1970931 💚 Fix unit test not working on server with self-signed certificate 2023-12-07 11:18:51 +01:00
Molkobain
75732faf1d N°7039 - Fix warnings in the CI due to unnecessary use statement 2023-12-07 11:18:02 +01:00
Molkobain
c13d0a60e8 N°7039 - Fix placeholder :current_contact->id not working in OQL in iTop 3.1 2023-12-07 10:04:53 +01:00
Molkobain
66d1ffa00f Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-12-06 16:31:03 +01:00
Molkobain
181c180824 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-12-06 16:28:27 +01:00
Molkobain
5d38d22c50 N°7023 - Fix regression from the initial fix that throw exceptions even for ext. keys set programatically (eg. ComputeValues), which we still want to allow 2023-12-06 16:27:37 +01:00
Molkobain
c8d2cff0ff Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-12-04 23:19:22 +01:00
Molkobain
974c155855 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-12-04 23:16:35 +01:00
Pierre Goiffon
99d69493d1 N°7023 - Update tests so that we are now checking negative ext. keys 2023-12-04 22:36:26 +01:00
Molkobain
c9bb628c30 N°7023 - Improve debug message on portal \DBObject::CheckChangedExtKeysValues() call 2023-12-04 22:36:09 +01:00
Molkobain
08e8d15d78 N°7023 - Fix check to write error when adding a contact on a new user request on the end-users portal 2023-12-04 22:35:07 +01:00
Molkobain
be699b4358 🔖 Increase version number to 3.1.1 2023-11-28 19:56:14 +01:00
Eric Espie
ed12495ec5 N°6228 - Fix Unit tests due to logs added in CRUD 2023-11-28 15:16:48 +01:00
Stephen Abello
d79bbca8ce N°6874 - Make unit test more robust 2023-11-28 11:27:19 +01:00
Eric Espie
ad8922861b N°6531 - Fix refactor 2023-11-27 14:49:27 +01:00
odain
57671f336c N°6901 - Enable tracking of iTop active sessions (monitoring) 2023-11-27 12:34:19 +01:00
Stephen Abello
fdf48b8338 N°6874 - Add unit test 2023-11-27 12:15:07 +01:00
Stephen Abello
f0ea97850b Fix LogFile type emails 2023-11-27 12:14:33 +01:00
Stephen Abello
9b1cdd3581 N°6874 - Fix encoding issue in out-going emails 2023-11-27 10:37:13 +01:00
Molkobain
2d96cf34d4 Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	datamodels/2.x/itop-portal-base/portal/public/css/portal.css
2023-11-24 17:25:11 +01:00
Molkobain
bed1db9c51 N°938 - Update compiled portal stylesheet in minified version 2023-11-24 17:07:02 +01:00
Molkobain
7e3e8e43a8 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	datamodels/2.x/itop-portal-base/portal/public/css/portal.css
#	datamodels/2.x/itop-portal-base/portal/templates/layout.html.twig
2023-11-24 16:45:04 +01:00
Molkobain
7b59df216b N°7005 - Fix portal stylesheets not being re-compiled when outdated
Stylesheets should remain as a relative path in the portal configuration, only when consumed by the TWIG should they become URLs

Note that if not absolute, URLs will be append to ITOP/pages/
2023-11-24 16:40:58 +01:00
Molkobain
cb5eab812e N°938 - Update compiled portal stylesheet 2023-11-24 16:22:36 +01:00
Anne-Cath
675affb7f2 Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	datamodels/2.x/itop-portal-base/portal/public/css/portal.scss
2023-11-24 15:21:39 +01:00
Anne-Cath
484a0bb6b6 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-11-24 15:19:05 +01:00
Anne-Catherine
c9b73a7fe2 N°938 - Improve print of portal object page and portal dashboard page (#537)
N°938 - Improve print of portal object page and portal dashboard page
2023-11-24 15:17:42 +01:00
Pierre Goiffon
9266458cba Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-11-23 15:55:33 +01:00
Pierre Goiffon
6f1de11c59 N°6976 Fix DeprecatedCallsLog error handler never set (#576)
Caused by N°6274 (disabling error handler when running phpunit)
There is now a test testing the handler is really fixed when not in the phpunit context
Also a TRACE log is made on setting the handler
2023-11-23 15:54:10 +01:00
Molkobain
a18f50615a Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#    pages/exec.php
2023-11-23 15:07:11 +01:00
Molkobain
e02b6ee14a Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-11-23 14:25:16 +01:00
Anne-Catherine
0d388cb3e7 N°3465 - Fix attachment file name hardcoded to "uploaded-file" when imported from CSV import (#533)
N°3465 - Fix attachment file name hardcoded to "uploaded-file" when imported from CSV import
2023-11-23 14:15:59 +01:00
Anne-Catherine
5283df5ae9 N°3767 - Impact analysis: Display filtering box on CIs list and groups (#473)
N°3767 - Impact analysis: Display filtering box on CIs list and groups
2023-11-23 14:06:10 +01:00
Eric Espie
8e0d6d1f00 N°6228 - Refactor after review 2023-11-23 11:14:37 +01:00
Eric Espie
f72d8f4955 N°6531 - Trigger on Update on n-n fields not working when object updated in pop-up 2023-11-23 11:14:37 +01:00
Pierre Goiffon
ea845dc6eb N°6228 - CheckToWrite() propagation to target objects based on with_php_constraint property 2023-11-23 11:14:37 +01:00
Molkobain
3b2da39469 N°6989 - Security hardening 2023-11-22 18:02:50 +01:00
odain-cbd
9a59bc7890 N°6901 - Enable tracking of iTop active sessions (monitoring) (#568)
Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
Co-authored-by: Romain Quetiez <romain.quetiez@combodo.com>
2023-11-22 17:46:00 +01:00
odain
88008b3925 Merge branch 'support/3.0' into support/3.1 2023-11-22 12:31:02 +01:00
odain
8484bee269 N°6949 - Run subset of itop core unit tests after the setup when validating a module github code 2023-11-22 11:16:03 +01:00
odain
c5b43f3157 Merge branch 'support/2.7' into support/3.0 2023-11-22 11:10:06 +01:00
odain
fc22d91232 N°6949 - Run subset of itop core unit tests after the setup when validating a module github code 2023-11-22 10:14:58 +01:00
Pierre Goiffon
cfe73699cf N°6967 Deprecate DBDeleteTracked_Internal methods 2023-11-21 18:05:29 +01:00
Pierre Goiffon
fa830bdd7f N°6966 Deprecate DBCloneTracked and DBCloneTracked_Internal methods 2023-11-21 18:04:05 +01:00
Pierre Goiffon
2c1df77f4d Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-11-21 11:01:31 +01:00
Pierre Goiffon
3068a6a360 N°6951 Fix autoloader 2023-11-21 11:01:16 +01:00
Stephen Abello
47e7c35c2b Merge branch 'support/3.0' into support/3.1
# Conflicts:
#	dictionaries/cs.dictionary.itop.core.php
#	dictionaries/da.dictionary.itop.core.php
#	dictionaries/de.dictionary.itop.core.php
#	dictionaries/es_cr.dictionary.itop.core.php
#	dictionaries/hu.dictionary.itop.core.php
#	dictionaries/it.dictionary.itop.core.php
#	dictionaries/ja.dictionary.itop.core.php
#	dictionaries/nl.dictionary.itop.core.php
#	dictionaries/pl.dictionary.itop.core.php
#	dictionaries/pt_br.dictionary.itop.core.php
#	dictionaries/ru.dictionary.itop.core.php
#	dictionaries/sk.dictionary.itop.core.php
#	dictionaries/tr.dictionary.itop.core.php
#	lib/composer/autoload_classmap.php
#	lib/composer/autoload_static.php
#	sources/Application/Helper/ExportHelper.php
2023-11-21 10:24:29 +01:00
Stephen Abello
083a0b79bf N°6951 - Security hardening 2023-11-21 10:08:46 +01:00
Stephen Abello
e22220b4fe Merge branch 'support/2.7' into support/3.0
# Conflicts:
#	core/csvbulkexport.class.inc.php
#	core/excelbulkexport.class.inc.php
#	lib/composer/autoload_classmap.php
#	lib/composer/autoload_files.php
#	lib/composer/autoload_real.php
#	lib/composer/autoload_static.php
2023-11-21 09:47:14 +01:00
Stephen Abello
b10bcb976d N°6951 - Security hardening 2023-11-21 09:42:11 +01:00
Pierre Goiffon
a2181b3478 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-11-21 09:25:21 +01:00
Pierre Goiffon
154a20b757 💡 Fix ItopCustomDatamodelTestCase since phpdoc
See https://docs.phpdoc.org/guide/references/phpdoc/tags/since.html#since
2023-11-21 09:21:30 +01:00
Pierre Goiffon
79c24dfc96 N°6975 Fix ItopCustomDatamodelTestCase removing symlinks flag (#574) 2023-11-21 09:20:11 +01:00
Molkobain
403c369ea0 N°6963 - Update comment 2023-11-20 09:20:09 +01:00
Molkobain
d5875047fa N°6963 - Update PHP min version prerequisite (8.1) for next iTop version (3.2.0) 2023-11-17 10:25:22 +01:00
Molkobain
6955f74c97 N°5281 - Fix methods name case 2023-11-17 08:48:51 +01:00
Molkobain
6bf9ce3237 Merge remote-tracking branch 'origin/release/designer-lot-3' into support/3.1 2023-11-16 16:33:17 +01:00
Molkobain
5726f9f81a N°6960 - Fix \MFDocument::GetNodes() adding a predicate on last expression only instead of the whole XPath 2023-11-16 16:31:47 +01:00
Pierre Goiffon
be93b41363 N°6458 Fix failing tests due to ItopDataTestCase modifications 2023-11-16 15:43:11 +01:00
Pierre Goiffon
d33d82bcd8 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-11-16 15:35:52 +01:00
Pierre Goiffon
b9d960e89e N°6458 Fix ItopDataTestCase::$bIsUsingSilo visibility 2023-11-16 15:35:04 +01:00
Pierre Goiffon
8540ec644a N°6458 Improve ItopDataTestCase tests speed
What was measured :
- 1'54 with previous code (always doing a reset in tearDown)
- 1'44 without any ResetMetaModelQueyCacheGetObject call (but 3 tests are failing)
- 1'44 with new optin mechanism + don't call Logoff if no current user logged
2023-11-16 15:23:18 +01:00
Pierre Goiffon
5b19593ede 📝 README tests : add prerequisites 2023-11-16 14:38:15 +01:00
Pierre Goiffon
57b70e48bd Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-11-16 12:02:20 +01:00
Pierre Goiffon
0915081f50 ItopDataTestCase fix cached SQL queries with silo 2023-11-16 11:57:29 +01:00
Pierre Goiffon
7798df0d53 Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	tests/php-unit-tests/src/BaseTestCase/ItopDataTestCase.php
2023-11-16 11:29:31 +01:00
Pierre Goiffon
a23d629e31 ItopDataTestCase fix using non existing EventService (added in 3.1.0) 2023-11-16 11:23:07 +01:00
Pierre Goiffon
47ccd7589f Fix TriggerTest relying on hardcoded admin user id 2023-11-16 11:16:59 +01:00
Pierre Goiffon
7521fc3006 N°6458 Tests : remove processIsolation
Was caused by cached User instances in UserRights + same login for each created User objects instances
2023-11-16 10:56:47 +01:00
Pierre Goiffon
8f61c02cbe N°6458 Fix portal errors 2023-11-16 09:23:19 +01:00
Pierre Goiffon
e3e8b25cfc Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	core/dbobject.class.php
#	datamodels/2.x/itop-portal-base/portal/src/Form/ObjectFormManager.php
#	lib/composer/autoload_files.php
#	lib/composer/autoload_real.php
#	lib/composer/autoload_static.php
#	pages/UI.php
#	tests/php-unit-tests/unitary-tests/core/DBObjectTest.php
2023-11-15 15:31:56 +01:00
Pierre Goiffon
c955fe00b7 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	application/cmdbabstract.class.inc.php
#	application/utils.inc.php
#	core/coreexception.class.inc.php
#	core/userrights.class.inc.php
#	datamodels/2.x/itop-portal-base/portal/src/Form/ObjectFormManager.php
#	tests/php-unit-tests/README.md
#	tests/php-unit-tests/unitary-tests/core/DBObjectTest.php
2023-11-15 15:03:04 +01:00
Pierre Goiffon
5a43448644 N°6458 Security hardening 2023-11-15 11:14:07 +01:00
Pierre Goiffon
f5a0b4bf8e Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-11-13 16:27:34 +01:00
Pierre Goiffon
a2b9583379 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-11-13 16:25:53 +01:00
Pierre Goiffon
77409eed99 🎨 DBObject small phpdoc fixes 2023-11-13 16:25:37 +01:00
Molkobain
eb7c971091 N°6948 - Upgrade "symfony/twig-bridge" to v5.4.31 2023-11-13 15:17:52 +01:00
Eric Espie
4d5a704d9a N°6062 - Fix unit tests 2023-11-13 15:14:29 +01:00
Eric Espie
b758113752 N°6436 - Integrate Performance Audit pre requisite (log events for extensions) 2023-11-13 15:02:54 +01:00
Stephen Abello
5465287089 Merge branch 'support/3.0' into support/3.1 2023-11-13 11:21:21 +01:00
Stephen Abello
09be84f69d N°6908 - Security hardening 2023-11-13 11:19:02 +01:00
Romain Quetiez
3b987f97eb Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-11-10 16:15:08 +01:00
Romain Quetiez
d9bdcfeae3 N°6658 - Fix regression: do not reset current user's profile cache 2023-11-10 15:57:08 +01:00
Pierre Goiffon
8df7c22464 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-11-10 15:21:10 +01:00
Pierre Goiffon
d725ba3d84 N°6765 Avoid behat scenario loading issues on portal modal (#569)
- New CombodoJsActivity API
- Replace existing calls in NiceWebPage (ready scripts)
- Add calls in ready block in portal object create template (used in both create and edit)
2023-11-10 15:10:37 +01:00
Molkobain
2d8ecd465b N°6903 - Fix crash when emptying file attribute (eg. picture of a contact) 2023-11-09 18:17:35 +01:00
Molkobain
34ba4fa0ce N°6917 - Security hardening 2023-11-09 16:43:37 +01:00
Molkobain
08d22219f4 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-11-08 14:59:56 +01:00
Molkobain
8a3d81c430 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-11-08 14:59:06 +01:00
Anne-Catherine
83a70daf68 N°6887 - Fix excessive OQL requests to display user's grant matrix (#564)
* N°6887 - Fix excessive OQL requests to display user's grant matrix

* N°6887 - Rename variable and add PHPDoc

---------

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2023-11-08 14:57:28 +01:00
Molkobain
d5a8a3bb09 N°4756 - Fix PHPDoc 2023-11-07 12:00:19 +01:00
jf-cbd
eaeb114754 N°6852 - Use "email_default_sender_address" when "forgot_password_from" config param is empty 2023-11-06 10:47:40 +01:00
Molkobain
cfd32581b7 N°6861 - Add PHPDoc and return type hint 2023-11-03 09:20:15 +01:00
vdumas
85a6bd0a05 Typo in EN Dictionary - Allowed orgs class name 2023-11-02 17:43:48 +01:00
Stephen Abello
92cd1e3f19 N°6861 - Display warning message when creating/editing a mandatory blob in modal depending on edition mode and blob value 2023-11-02 14:58:46 +01:00
Stephen Abello
b54022e2ad N°6385 - Move Linkset flags and edit_when logic from UIBlock to DisplayBareRelations 2023-11-02 10:16:35 +01:00
odain-cbd
eaa80c5396 N°6824 - Notification with current_contact placeholder trigger hundred of email sent (#562)
Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
Co-authored-by: Thomas Casteleyn <thomas.casteleyn@super-visions.com>
Co-authored-by: Romain Quetiez <romain.quetiez@combodo.com>
2023-10-31 16:17:57 +01:00
Molkobain
3aec6bff79 N°6866 - Fix regression from previous merge 2023-10-31 16:13:54 +01:00
Molkobain
83313ce1d5 N°6866 - Fix usages of hard-coded "listInObject" to \DisplayBlock::ENUM_STYLE_LIST_IN_OBJECT 2023-10-31 14:01:19 +01:00
Molkobain
8aa3dcdaa7 N°6866 - Fix regression from previous merge 2023-10-31 13:56:17 +01:00
Molkobain
306d8136ef Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	sources/Application/UI/Base/Component/DataTable/DataTableUIBlockFactory.php
2023-10-31 11:16:13 +01:00
Molkobain
cbb37f27d7 N°6866 - Fix issue when creating new fields in Request Template in French 2023-10-31 11:10:54 +01:00
odain-cbd
e78fa18359 N°6849 - Enhance setup error message in case of unmet module dependencies (#557)
* N°6849 - add cross/checkmark emoj to missing depenency message and remove unmet word

* N°6849 - PR advice to avoid modifying aDeps
2023-10-31 11:07:29 +01:00
Benjamin Dalsass
1385a3dc03 N°6774 - Risque d'erreur de chargement des relations dans le portail en visualisation 2023-10-31 10:18:21 +01:00
Benjamin Dalsass
789f0c826b N°6557 - PHP 8.1 : Deprecated Constant when adding a contact to ticket on ticket creation 2023-10-31 09:34:00 +01:00
Molkobain
ac070b0cbe Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-10-30 16:58:43 +01:00
Molkobain
e21dc4d21c Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-10-30 16:55:45 +01:00
Molkobain
a49a4e6c2b N°6886 - Add OAuth tests folder to removable directories list 2023-10-30 16:54:28 +01:00
Stephen Abello
95aa4afe75 N°6385 - Allow to disable LinkedSet (1:n & n:n) edition by XML in host edition 2023-10-30 16:29:25 +01:00
bdalsass
74004fa375 N°6651 - 3.1 bulk modify n:n like Tagset: checkbox ignored (#552)
- handle selectize enable/disable to update operation hidden input state
- don't execute elements click callback when input disabled
- merge current and initial values for the initial value
2023-10-30 13:57:41 +01:00
vdumas
d2fc87c6f9 N°6884 - Error on creating User from a Person edit screen 2023-10-30 12:22:07 +01:00
Romain Quetiez
5264a1f10d New test related to the build of SQL queries 2023-10-27 16:01:57 +02:00
Romain Quetiez
f0199a4cf2 Optimize tests execution time (no need for process isolation as long as we leave the premises clean) 2023-10-27 15:50:17 +02:00
Romain Quetiez
f8877ef3e7 Optimize tests execution time (no need for process isolation as long as we leave the premises clean) 2023-10-27 15:49:58 +02:00
Romain Quetiez
00b1156526 Optimize tests execution time (force cache usage and set the modification date in the past instead of waiting 1s) 2023-10-27 15:45:28 +02:00
Romain Quetiez
39d2ba8d1b Optimize tests execution time (no need for process isolation as long as we leave the premises clean) 2023-10-27 15:43:11 +02:00
Romain Quetiez
322adcb180 Optimize tests execution time (no need for process isolation as long as we leave the premises clean) 2023-10-27 14:27:00 +02:00
Romain Quetiez
77e7685c90 Optimize tests execution time (no need for process isolation as long as we leave the premises clean) 2023-10-27 14:24:31 +02:00
Romain Quetiez
3c14e5e032 Optimize tests execution time (no need for process isolation as long as we leave the premises clean) 2023-10-27 14:24:16 +02:00
Romain Quetiez
f58ec7e38e Optimize tests execution time (no need for process isolation as long as we leave the premises clean) 2023-10-27 14:22:20 +02:00
Romain Quetiez
73fd0b06b2 Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	tests/php-unit-tests/integration-tests/DictionariesConsistencyTest.php
#	tests/php-unit-tests/src/BaseTestCase/ItopTestCase.php
#	tests/php-unit-tests/unitary-tests/core/CMDBSource/TransactionsTest.php
#	tests/php-unit-tests/unitary-tests/sources/Application/TwigBase/Twig/TwigTest.php
2023-10-27 14:12:06 +02:00
Romain Quetiez
8fa9336568 Fix regression introduced with the optimization done in 15148f7, and seen only in the context of the CI 2023-10-27 11:21:56 +02:00
Romain Quetiez
15148f7d1d Fix regression introduced with the optimization done in 798cd10, and seen only if APC is enabled 2023-10-27 10:43:13 +02:00
Romain Quetiez
7e8589ba95 Fix regression introduced with the optimization done in d641504. Cope with the fact that sometimes the admin account already exists, sometimes not. 2023-10-27 09:21:36 +02:00
Romain Quetiez
fba668207f Optimize tests execution time (test rework and defensive cleanup) 2023-10-26 21:35:52 +02:00
Romain Quetiez
798cd10d6b Optimize tests execution time (no need for process isolation as long as we leave the premises clean) 2023-10-26 21:23:47 +02:00
Romain Quetiez
442721bcb5 Optimize tests execution time (no need for process isolation as long as we leave the premises clean) 2023-10-26 21:22:54 +02:00
Romain Quetiez
1a9049d277 Optimize tests execution time (no need for process isolation as long as we leave the premises clean) 2023-10-26 21:16:24 +02:00
Romain Quetiez
c0931af91a Optimize tests execution time (no need for process isolation as long as we leave the premises clean, set file modification date instead of waiting for 1 second) 2023-10-26 21:15:57 +02:00
Romain Quetiez
29e9a06dc1 Optimize tests execution time (no need for process isolation as long as we leave the premises clean) 2023-10-26 21:10:47 +02:00
Romain Quetiez
d6415042ae Optimize tests execution time (no need for process isolation as long as we leave the premises clean) 2023-10-26 21:10:07 +02:00
Romain Quetiez
90006667fe Optimize tests execution time (copy fixture files only when necessary) 2023-10-26 20:58:26 +02:00
Romain Quetiez
fd351df08b Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-10-26 20:53:24 +02:00
Romain Quetiez
7419749ba6 Prerequisites for boosting tests 2023-10-26 20:51:28 +02:00
Romain Quetiez
73bed04555 Twig tests not executed 2023-10-26 10:47:11 +02:00
Romain Quetiez
8893cdac1d Optimize tests execution time (no need for process isolation as long as we leave the premises clean) 2023-10-26 10:44:37 +02:00
Romain Quetiez
7f245a15be Optimize tests execution time (suppress meaningless test and merge two test in one, while preserving test coverage) 2023-10-25 23:01:05 +02:00
Romain Quetiez
b5c46ccd4a Optimize tests execution time (x10 / no need for a systematic check of date formats, which was ok as a first approach) 2023-10-25 22:59:03 +02:00
Romain Quetiez
7fbc211c43 Optimize tests execution time (x50 / eval is way faster than exec) 2023-10-25 22:57:03 +02:00
Romain Quetiez
cf774cdb90 Explain why process isolation is a must 2023-10-25 22:18:05 +02:00
Romain Quetiez
722a58491c Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	tests/php-unit-tests/src/BaseTestCase/ItopTestCase.php
2023-10-25 22:08:08 +02:00
Romain Quetiez
037dfe1df6 Optimize tests execution time 2023-10-25 17:51:12 +02:00
Romain Quetiez
0b26d45014 Prerequisites for boosting tests 2023-10-25 17:50:41 +02:00
Eric Espie
44e826543d N°6870 - Community re-integration support 2023-10-25 14:30:16 +02:00
Eric Espie
50f5ab6be4 Fix ModelFactory tests 2023-10-25 14:03:26 +02:00
Eric Espie
941412a365 Community integration: changed default behaviour for datamodel XML nodes without _delta from 'must_exist' to 'merge' 2023-10-25 10:05:46 +02:00
Stephen Abello
a9bd62dc43 N°6385 - Allow to disable LinkedSet (1:n & n:n) edition by XML
Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2023-10-24 11:09:12 +02:00
Stephen Abello
4f336abeb8 N°6861 - Display warning message when creating/editing a mandatory blob in modal 2023-10-23 15:51:38 +02:00
Molkobain
40d1ae0b1c Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-10-23 15:17:43 +02:00
Molkobain
b9c566238a Merge remote-tracking branch 'origin/support/2.7' into support/3.0
Remove PHPUnit annotations as from support/3.0 and newer they are no longer necessary
2023-10-23 15:09:49 +02:00
Molkobain
4fd8177165 N°3715 - Fix unit tests 2023-10-23 14:55:06 +02:00
Anne-Cath
c597c34e5c Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-10-20 17:06:11 +02:00
Anne-Cath
0cc0f39d9e Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-10-20 17:04:26 +02:00
Anne-Catherine
a2cdf214f0 N°3715 - Export above 1000 entries ignore obsolete data from user preference (#468)
* N°3715 - Export above 10000 entries ignore obsolete data from user preference
2023-10-20 17:02:16 +02:00
Anne-Cath
189fd1d9e3 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-10-20 16:55:41 +02:00
Anne-Cath
4f75d012e5 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-10-20 16:54:37 +02:00
Anne-Catherine
013173019f N°2909 - Search on Enum, Date, TagSet,... with index fails (#496) 2023-10-20 16:45:35 +02:00
Anne-Catherine
ed8d4df5ef N°5786 - Problem with text color in public log and in AttributeHTML (#527)
* N°5786 - Problem with text color in public log and in AttributeHTML
2023-10-17 12:09:52 +02:00
Pierre Goiffon
31a1370028 Merge branch 'support/3.1.0' into support/3.1
# Conflicts:
#	core/DbConnectionWrapper.php
#	tests/php-unit-tests/unitary-tests/core/CMDBSource/TransactionsTest.php
2023-10-17 11:13:29 +02:00
Pierre Goiffon
f36f3aa05b 💡 N°6848 Fix PHPDoc 2023-10-17 11:12:38 +02:00
Pierre Goiffon
d0d90d7c69 N°6848 Fix TransactionsTest::testTransactionOpenedNotClosed failing
Was caused by 239c51bb, which adds 65bb76b9 tests improvements but only partly : we were missing in TransactionsTest::tearDown the mysqli reset from mock to original mysqli cnx

Without this reset the rollback made in ItopTestCase::tearDown is throwing an exception (query() method on the DbConnectionWrapper cnx returns false in \CMDBSource::DBQuery) on PHP 8.1 and 8.2

Co-authored-by: Romain Quetiez <romain.queriez@combodo.com>
2023-10-17 10:53:26 +02:00
Stephen Abello
aa618468d1 Merge branch 'support/3.0' into support/3.1 2023-10-17 09:23:06 +02:00
Stephen Abello
fadfd94bac Merge branch 'support/2.7' into support/3.0 2023-10-17 09:19:16 +02:00
Stephen Abello
9469681a0c N°6777 - Security hardening 2023-10-17 09:12:40 +02:00
Pierre Goiffon
d4ab55dd9a Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	pages/ajax.render.php
2023-10-13 17:33:26 +02:00
Pierre Goiffon
da27ddba82 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	application/utils.inc.php
#	pages/ajax.render.php
2023-10-13 17:27:03 +02:00
Pierre Goiffon
c72cb7e70e N°6606 security hardening 2023-10-13 17:15:37 +02:00
Pierre Goiffon
9df92665e0 N°6606 Backport of utils::ENUM_SANITIZATION_FILTER_* constants
Were introduced in 3.0.0, but not added to the support/2.7 branch
2023-10-13 17:10:35 +02:00
Molkobain
819baa3951 Merge remote-tracking branch 'origin/support/3.1.0' into support/3.1 2023-10-06 17:47:52 +02:00
Eric Espie
c78024394e Better log of twig syntax errors 2023-10-06 15:25:27 +02:00
Eric Espie
4267f2b855 N°6747 - Customizing UserLDAP, generates presentation error messages in Designer during MTP 2023-10-06 09:53:26 +02:00
vdumas
ba8f18e1d4 N°6815 - DataModel : wrong attribute type for SLA.customercontracts_list 2023-10-05 18:08:46 +02:00
vdumas
ba13d24206 N°6814 - Datamodel remove lnkConnectableCIToNetworkDevice uniqueness rule 2023-10-05 18:08:46 +02:00
odain
239c51bb53 ci enhancement: complete tearDown to cleanup transactions and cmdb changes properly 2023-10-03 10:09:26 +02:00
Stephen Abello
ab3a4a2468 Merge branch 'support/3.0' into support/3.1
# Conflicts:
#	pages/ajax.render.php
2023-10-02 15:16:18 +02:00
Stephen Abello
3647291475 N°6778 - Security hardening 2023-10-02 15:06:17 +02:00
Molkobain
a472d83e3d Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	application/wizardhelper.class.inc.php
#	pages/ajax.render.php
2023-09-26 22:21:48 +02:00
Molkobain
6dc6392fab Merge remote-tracking branch 'origin/support/3.0.3' into support/3.0 2023-09-26 22:20:02 +02:00
Anne-Catherine
e793b02f8b N°6766 - Fix dependent fields not updated due to WizardHelper.UpdateFields() being triggered too early (#548)
* N°6766 - Javascript : function WizardHelper.UpdateFields triggered to early does not update fields

* N°6766 - Code review

---------

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2023-09-26 12:25:56 +02:00
Pierre Goiffon
c5cb84f976 N°6733 Fix some attributes impl not prompted in transitions when mandatory 2023-09-26 11:32:06 +02:00
Molkobain
12c0edc530 N°6547 - Fix flags init being an hard-coded int instead of the corresponding constant 2023-09-21 18:25:44 +02:00
Stephen Abello
61565b25a3 N°6767 - Error in ajax request when there's dict to load and no onready scripts 2023-09-21 10:40:22 +02:00
Pierre Goiffon
7619d055dd N°6695 Handle multiline dict entries in portal tooltips (#542)
Report Tippy fix from admin console (/css/backoffice/vendors/_tippy.scss) to user portal.
Thanks DaveHeart  for the bug report !
2023-09-20 18:10:56 +02:00
Molkobain
f01997f2ad Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-09-20 16:16:53 +02:00
Molkobain
fc6e98b534 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-09-20 16:12:51 +02:00
Molkobain
8ecebee511 PHP unit tests: Fix typo for "final private" methods as they can't be both 2023-09-20 16:11:39 +02:00
Eric Espie
b5e26061e1 Merge branch 'issue/6667_trigger_on_state_enter' into support/3.1 2023-09-20 10:11:58 +02:00
Pierre Goiffon
14fa20b428 Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	tests/ci_description.ini
2023-09-19 12:30:16 +02:00
Pierre Goiffon
2690fa3315 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-09-19 12:27:19 +02:00
Pierre Goiffon
35cd965360 N°6629 Update ci_description php_version 2023-09-19 12:25:40 +02:00
Pierre Goiffon
133fc29ad5 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-09-19 09:58:53 +02:00
Pierre Goiffon
83a5b98f82 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-09-19 09:58:40 +02:00
Pierre Goiffon
e5dd51f637 N°6600 Portal download attachment : don't display anymore SQL query on attachment not found error (#525) 2023-09-19 09:54:43 +02:00
Molkobain
2f6bcc3534 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-09-19 08:41:46 +02:00
Molkobain
4923418f58 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-09-19 08:39:41 +02:00
Molkobain
0a6c82dfe1 N°6752 - PHP unit tests: Fix typo in postbuild_integration.xml.dist 2023-09-19 08:37:46 +02:00
Molkobain
f89d843ab3 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-09-18 16:06:53 +02:00
Molkobain
2dd7f5cada Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-09-18 15:37:32 +02:00
Molkobain
24c0f4950f Add missing .htaccess / web.config files in .gitignore for /extensions folder 2023-09-18 15:26:06 +02:00
Molkobain
d4dbbc59d4 N°6754 - PHP unit tests: Add local PHPUnit XML files to .gitignore 2023-09-18 15:23:52 +02:00
Molkobain
dc0cd44c79 N°6752 - PHP unit tests: Migrate usages of unitestautoload.php to composer autoloader 2023-09-18 15:14:44 +02:00
Pierre Goiffon
d7df249586 Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	application/ajaxwebpage.class.inc.php
#	application/capturewebpage.class.inc.php
#	application/clipage.class.inc.php
#	application/csvpage.class.inc.php
#	application/errorpage.class.inc.php
#	application/itopwebpage.class.inc.php
#	application/itopwizardwebpage.class.inc.php
#	application/nicewebpage.class.inc.php
#	application/pdfpage.class.inc.php
#	application/webpage.class.inc.php
#	application/xmlpage.class.inc.php
2023-09-18 15:10:19 +02:00
Pierre Goiffon
f3c4fcb0f5 💡 Pages files : add depreciation version 2023-09-18 15:07:32 +02:00
Pierre Goiffon
9a8e9a0b01 N°5491 Fix HU iTopUpdate:Error:MissingFile dict key 2023-09-18 08:45:45 +02:00
vdumas
f6a7e6b4e1 N°3506 - allow_target_creation based on UR_ACTION_MODIFY 2023-09-15 16:40:20 +02:00
Stephen Abello
2829fb291f Update contribution stickers with 2023 design (better late than never 🙃) 2023-09-15 15:43:50 +02:00
odain
6110abfc7f Merge branch 'support/3.0' into support/3.1 2023-09-15 10:08:37 +02:00
odain
6046f44f56 Merge branch 'support/2.7' into support/3.0 2023-09-15 10:08:08 +02:00
odain
6c6131ce03 N°5491 - test enhancement to reduce false positive 2023-09-15 10:07:42 +02:00
Stephen Abello
178c922407 Merge branch 'support/3.0' into support/3.1 2023-09-15 09:57:59 +02:00
Stephen Abello
343e87a8d4 N°6581 - Security hardening 2023-09-15 09:55:51 +02:00
Stephen Abello
d7e5d6fb7f N°6734 - Fix not being able to add dashlets to a dashboard when iBackofficeDictEntriesExtension is used and its JS files are loaded through ajax calls 2023-09-14 17:25:00 +02:00
Pierre Goiffon
993606f102 Merge branch 'support/3.1.0' into support/3.1
# Conflicts:
#	setup/itopdesignformat.class.inc.php
2023-09-14 16:54:28 +02:00
Pierre Goiffon
bdf0b4daa9 N°6562 Fix DOMNode->textContent write
This attribute is read only
Causes layout issues on PHP 8.1.21 and 8.2.8

(cherry picked from commit 734a788340)
(cherry picked from commit 7aa478d6ff)
2023-09-14 15:31:02 +02:00
Eric Espie
44c189223e Merge branch 'support/3.1.0' into support/3.1
# Conflicts:
#	tests/php-unit-tests/unitary-tests/core/DBObjectTest.php
2023-09-14 14:31:29 +02:00
Eric Espie
7fdbb59c30 N°6716 - High memory Consomption and performance issue 2023-09-14 14:09:05 +02:00
Eric Espie
5acf38ac36 Fix unit tests for MariaDB
(cherry picked from commit 61a9a4ac65)
2023-09-14 14:09:05 +02:00
odain-cbd
e76728b2bf N°5491 - Inconsistent dictionnary entries regarding arguments to pass to Dict::Format-test first (#545) 2023-09-13 12:02:49 +02:00
odain
3e258f32cc N°5491-fix redundant GetNonPublicStaticProperty 2023-09-13 10:30:56 +02:00
odain
3c51d6fb98 N°5491- fix dictionary test 2023-09-13 10:27:19 +02:00
odain
7cfe1389aa Merge branch 'support/3.0' into support/3.1 2023-09-13 10:20:38 +02:00
Stephen Abello
7292a8540b N°6547 - Disallow linkset edition when lnk attribute is readonly 2023-09-13 10:53:32 +02:00
odain
f65c690462 N°5491-fix test 2023-09-13 10:03:05 +02:00
odain
ecf8bc42fa Merge branch 'support/2.7' into support/3.0 2023-09-13 10:01:15 +02:00
vdumas
faba812fc1 N°6646 - Wrong dictionary entry for FR - Lnk Contact / Contrat 2023-09-12 12:48:33 +02:00
vdumas
add433d702 N°6706 - Missing dictionary entry for DE - Lnk Provider Contract / Service 2023-09-12 12:24:56 +02:00
vdumas
9c99cb35e5 N°6706 - Wrong dictionary entry for FR - Lnk Provider Contract / Service 2023-09-12 12:21:25 +02:00
Pierre Goiffon
9d392ad167 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-09-07 14:53:02 +02:00
Pierre Goiffon
ea8509db1f N°6709 Use ItopTestCase::RequireOnceCurrentModuleFile in GetAppRoot 2023-09-07 14:47:36 +02:00
Pierre Goiffon
df25ce76b6 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-09-07 14:43:29 +02:00
Pierre Goiffon
e946fc65fc N°6709 New ItopTestCase::RequireOnceCurrentModuleFile 2023-09-07 14:38:19 +02:00
Pierre Goiffon
d203e075a8 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-09-06 09:09:37 +02:00
Pierre Goiffon
dbe2f66539 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-09-06 09:07:45 +02:00
Pierre Goiffon
0d8ff7bbac N°6629 Set commit tests back to Mysql
For now we have perf issues on Jenkins with MariaDB (see N°6694)
2023-09-04 10:25:41 +02:00
Eric Espie
48eb022824 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-09-01 14:15:06 +02:00
Stephen Abello
03c9ffc033 N°6560 - Fix unescaped backtick in friendlyname breaking details page scripts 2023-09-01 09:41:23 +02:00
Eric Espie
61a9a4ac65 Fix unit tests for MariaDB 2023-09-01 09:29:21 +02:00
acognet
38962e68ee Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	pages/ajax.render.php
2023-08-31 16:22:01 +02:00
Pierre Goiffon
483dbb4a5d N°6658 Remove useless annotations
See comment for ItopTestCase::$preserveGlobalState
2023-08-31 16:06:34 +02:00
acognet
1f4dcc4f9e N°5136 - Relations: Fix "Select All objects" adding obsolete objects even if "show obsolete data" param. not activated - Merge from support/2.7 2023-08-31 16:04:03 +02:00
acognet
e86309669e Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	pages/ajax.render.php
2023-08-31 15:56:16 +02:00
Pierre Goiffon
6d6f55acf7 Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	tests/php-unit-tests/src/BaseTestCase/ItopDataTestCase.php
2023-08-31 15:40:56 +02:00
Pierre Goiffon
6ebcd44bb1 💡 N°6658 Add more comments and since tags 2023-08-31 15:34:44 +02:00
Anne-Catherine
f8fb51fea0 N°5145 - Fix attachments missing in new ticket when clone from an old ticket with object copier (#530) 2023-08-31 15:27:23 +02:00
Anne-Catherine
bf768311c2 N°5136 - "Select All objects" add obsolete objects even if the parameter show obsolete data is not activated (#467) 2023-08-31 15:13:20 +02:00
Anne-Catherine
d797436786 N°6555 - Add class description in tooltip of Dashlet badge (#504)
cheery pick from branch develop due to target branch error
2023-08-31 14:55:06 +02:00
Anne-Catherine
b508c0d983 N°6152 - Search: Criteria & object list loaded twice (#495) 2023-08-31 12:03:31 +02:00
Anne-Catherine
351893bbdd N°4494 - Fix auto-locking on log save and transition (#358) 2023-08-31 11:23:58 +02:00
vdumas
59e4bb028f N°6682 - Pbs with Audit classes and AccessRight 2023-08-29 16:41:27 +02:00
vdumas
6d895371ec N°6682 - AuditDomain XML meta declaration missing 2023-08-29 16:41:27 +02:00
Stephen Abello
ab91631e68 N°6677 - Ensure emails in test are never sent to cc'd and bcc'd addresses 2023-08-29 15:56:52 +02:00
Eric Espie
cc4af0a027 N°6667 - Ignore trigger on state entering with auto-dispatch 2023-08-22 14:30:18 +02:00
Eric Espie
3366bae0ab N°6061 - Add tests on Expression evaluation 2023-08-18 15:34:06 +02:00
Romain Quetiez
03b484c349 Tests: fix test not working on MariaDB (unexpected coma tolerated by MySQL) 2023-08-18 12:13:11 +02:00
Molkobain
70081ecf33 N°6436 - Add unit test for API introduced in 3.1 (\iFieldRendererMappingsExtension) 2023-08-18 10:31:05 +02:00
Molkobain
575ba1cd7b Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	core/metamodel.class.php
2023-08-18 10:24:50 +02:00
Molkobain
d130959692 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	core/metamodel.class.php
2023-08-18 10:14:51 +02:00
Molkobain
a8c689c6c0 N°6436 - Add unit test to ensure that we don't lose an API during merge between branches 2023-08-18 09:55:45 +02:00
Molkobain
1990ccb5d8 N°6436 - Move interfaces enumeration from 1 line to 1 line / interface (and re-ordered them) for easier merges in newer branches 2023-08-18 09:52:55 +02:00
Molkobain
e107be56e4 N°6097 - Tests: Fix missing hook entry in PHPUnit XML file that led to compiled environment being re-build for each test case 2023-08-18 09:51:15 +02:00
Romain Quetiez
0f8e87e001 Tests: allow execution of RouterTest alone, fix tool to execute each test class separately 2023-08-18 08:44:54 +02:00
Molkobain
d92d2b5e9e Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	core/metamodel.class.php
2023-08-17 21:36:19 +02:00
Romain Quetiez
ebd0136773 Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	tests/php-unit-tests/src/BaseTestCase/ItopTestCase.php
2023-08-17 18:36:34 +02:00
Molkobain
f6653e1594 N°6436 - Restore 3.0 APIs lost during 6433678d merge 2023-08-17 17:47:46 +02:00
Romain Quetiez
65bb76b9e3 N°6658 - Boost PHPUnit tests execution 2023-08-17 17:27:55 +02:00
Molkobain
f238593966 Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	tests/php-unit-tests/src/BaseTestCase/ItopDataTestCase.php
#	tests/php-unit-tests/src/BaseTestCase/ItopTestCase.php
2023-08-11 09:19:49 +02:00
Molkobain
d951d3b872 💚 Fix typo in extended class name 2023-08-11 09:05:30 +02:00
Molkobain
ccceb870e3 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	tests/php-unit-tests/src/BaseTestCase/ItopDataTestCase.php
#	tests/php-unit-tests/src/BaseTestCase/ItopTestCase.php
2023-08-10 15:53:05 +02:00
Molkobain
ed6df77cbb N°6097 - Tests: Optimize performances by creating custom env. only once and re-using it across test classes 2023-08-10 15:45:39 +02:00
Molkobain
1ad28312ec N°6097 - Tests: Introduce autoloader for "utility" classes and move them to a sub-folder for better organization as folder was still messy
Note that unittestautoload.php is now useless. We just keep for now until everything is migrated (projects / branches / modules)
2023-08-10 15:45:39 +02:00
Molkobain
f002aa04cd N°6097 - Tests: Enable PHP unit tests on a custom DataModel 2023-08-10 15:45:39 +02:00
Molkobain
b86d70623e N°6097 - Tests: Temporarily add test case for the new ItopCustomDatamodelTestCase class 2023-08-10 15:45:39 +02:00
Molkobain
fe3467309d N°6097 - Tests: Refactor base test classes for better extensibility 2023-08-10 15:45:39 +02:00
Molkobain
851ab9c356 N°6097 - Add \utils::GetDataPath() method to avoid duplicating manual path build 2023-08-10 15:45:39 +02:00
Molkobain
aef3c2e609 N°6097 - Fix \CMDBSource::DropDB() not resetting cache like \CMDBSource::DropTable() which can lead to errors when trying to re-create it afterwards 2023-08-10 15:45:39 +02:00
Pierre Goiffon
5212e15cc4 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-08-10 14:41:05 +02:00
Pierre Goiffon
f04fc546b5 N°6643 Fix TypeError in \CMDBSource::LogDeadLock 2023-08-10 14:34:09 +02:00
Lars Kaltefleiter
caf3076b12 N°3441 - Portal: Fix failure to open an object containing a link to an archived object (#523)
* N°3441 - Portal : cannot open an object containing a link to an archived object

* N°3441 - Display fa-archive icon in portal

* Update sources/Renderer/Bootstrap/FieldRenderer/BsSelectObjectFieldRenderer.php

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>

* Update sources/Renderer/Bootstrap/FieldRenderer/BsSelectObjectFieldRenderer.php

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>

* Update sources/Renderer/Bootstrap/FieldRenderer/BsSelectObjectFieldRenderer.php

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>

---------

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2023-08-10 09:52:22 +02:00
Pierre Goiffon
c4c400d852 N°6638 💡 More explanations on CompiledDictionariesConsistencyTest::testImportCsvMessageStillOk 2023-08-09 14:54:19 +02:00
Pierre Goiffon
6cc4cc4fb6 📝 Version history : add 3.1.0-2 2023-08-09 10:20:27 +02:00
Pierre Goiffon
d7495af207 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-08-08 15:42:39 +02:00
Pierre Goiffon
13ad98b9b3 Add other integration tests in the beforeSetup group
All of those tests can be ran without a running iTop instance, and are blocking
2023-08-08 15:34:27 +02:00
Pierre Goiffon
4be54fdd65 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-08-08 15:33:36 +02:00
Pierre Goiffon
6d13397ba1 Add other integration tests in the beforeSetup group
All of those tests can be ran without a running iTop instance, and are blocking
2023-08-08 15:33:09 +02:00
Pierre Goiffon
48e7e0309a N°6638 Fix DictionariesConsistencyTest::testImportCsvMessageStillOk not run on Jenkins
Was contained in a class with a beforeSetup group annotation, whereas it tries to read files in env-production (!)
Plus the dataprovider was using APPROOT const + utils class, which aren't available by default :(
=> Fixed by moving in a dedicated class (CompiledDictionariesConsistencyTest) and removing the dataprovider
2023-08-08 15:30:01 +02:00
Pierre Goiffon
2ce9b2afaf Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-08-04 14:58:38 +02:00
Pierre Goiffon
d64a91d4ce Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	core/metamodel.class.php
2023-08-04 14:58:22 +02:00
Pierre Goiffon
c0c8a13864 💡 \MetaModel::GetObject : remove documented throw Exception 2023-08-04 14:55:38 +02:00
Pierre Goiffon
5ffa41bc16 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-08-03 11:09:14 +02:00
Pierre Goiffon
d2eef06276 AttributeURLTest : remove useless separateProcess annotations 2023-08-03 11:08:47 +02:00
Pierre Goiffon
77b14c516e Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-08-03 09:41:22 +02:00
Pierre Goiffon
880a824f2f N°6562 Replace new DOMText() by \DOMDocument::createTextNode
Because init using constructor outputs a read only node, see https://www.php.net/manual/en/domelement.construct.php
Thanks @Hipska
See conversation in 734a788
2023-08-03 09:40:39 +02:00
Molkobain
f7f1b5f399 Merge remote-tracking branch 'origin/support/3.1.0' into support/3.1 2023-08-02 15:27:17 +02:00
Molkobain
85f66f5e0c N°6618 - Router: Add protection against invalid routes cache 2023-08-02 11:44:20 +02:00
Molkobain
a5c980113b N°6618 - Router: Fix available routes cache being re-generated at each call 2023-08-02 11:44:20 +02:00
Pierre Goiffon
18efbfa803 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-08-02 10:39:51 +02:00
Pierre Goiffon
7aa478d6ff N°6562 💡 Fix comment
Thanks @Molkobain !
2023-08-02 10:35:30 +02:00
Pierre Goiffon
97700dbf15 N°6562 Re-enable failing tests
Conditional disabling was made in ea8e7c5
2023-08-01 14:27:57 +02:00
Pierre Goiffon
c25c69d746 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-08-01 14:27:41 +02:00
Pierre Goiffon
734a788340 N°6562 Fix DOMNode->textContent write
This attribute is read only
Causes layout issues on PHP 8.1.21 and 8.2.8
2023-08-01 14:22:56 +02:00
Eric Espie
eb1eb15791 N°6061 - Allow services to implement interfaces
N°6061 - allow local path from an arbitrary path

(cherry picked from commit 19e7fc9cb9)
(cherry picked from commit fb23bddeb2)
(cherry picked from commit 750ecd4804)
2023-07-28 10:46:06 +02:00
Pierre Goiffon
a84077782d N°4354 N°6587 Remove duplicated ItopDataTestCase::CreateContactlessUser method
Regression introduced by 26048150
2023-07-27 16:48:49 +02:00
Pierre Goiffon
26048150d3 Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	tests/php-unit-tests/ItopDataTestCase.php
2023-07-27 16:44:02 +02:00
Pierre Goiffon
e5b6e2eb8c N°4354 N°6587 Add test to cover $oUser->Get('profile_list') VS security.hide_administrators config param 2023-07-27 16:42:56 +02:00
Pierre Goiffon
87b6ea4def 📝 Version history : add missing 3.1.0-beta 2023-07-27 14:55:55 +02:00
purplegrape
72873a3343 🌐 Improve zh-cn dict
Manual merge for #516
Translation by @purplegrape, many thanks !
2023-07-27 11:17:09 +02:00
Pierre Goiffon
5ef25ccb77 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-07-26 12:07:50 +02:00
Pierre Goiffon
1682a85cc0 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-07-26 12:07:35 +02:00
Pierre Goiffon
cd9beec313 Merge remote-tracking branch 'origin/support/2.6' into support/2.7 2023-07-26 12:07:09 +02:00
Pierre Goiffon
8295eaed90 Merge remote-tracking branch 'origin/support/2.5' into support/2.6 2023-07-26 12:06:32 +02:00
Eric Espie
86a7cefa68 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-07-25 17:56:12 +02:00
Eric Espie
829b648dd2 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-07-25 17:55:45 +02:00
Eric Espie
5475b9fbbe N°3454 - MoveToProd in 2 steps - fix utils::GetCurrentModuleName() 2023-07-25 17:44:43 +02:00
Eric Espie
6f8e7c7002 N°3454 - MoveToProd in 2 steps - fix utils::GetCurrentModuleUrl() 2023-07-25 17:20:37 +02:00
Pierre Goiffon
67ca554261 📝 Version history : add 3.1.0-1 2023-07-25 17:07:30 +02:00
Pierre Goiffon
f89953f39e Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-07-24 15:39:09 +02:00
Pierre Goiffon
772368ef8a 💡 PHPDoc for object list panels 2023-07-24 15:38:57 +02:00
Pierre Goiffon
2e049aa244 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-07-24 11:59:57 +02:00
Pierre Goiffon
a57b6471c9 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-07-24 11:59:40 +02:00
Pierre Goiffon
bc7c1b4744 N°6590 Fix DictionariesConsistencyTest for PL dict files 2023-07-24 11:14:37 +02:00
Eric Espie
12c78697f4 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-07-19 15:20:15 +02:00
Eric Espie
046e857768 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	core/config.class.inc.php
2023-07-19 15:19:06 +02:00
Eric Espie
4d8246c4d8 N°6436 - Integrate Performance Audit pre requisite in iTop Pro 2.7.9 (changed config variable name) 2023-07-19 15:13:43 +02:00
Eric Espie
5c61d725e1 N°6436 - Integrate Performance Audit pre requisite in iTop Pro 2.7.9 (changed config variable name) 2023-07-19 15:06:00 +02:00
Eric Espie
0c7195f1a3 Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	core/kpi.class.inc.php
2023-07-19 10:53:09 +02:00
Eric Espie
00b070b3cf Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	core/kpi.class.inc.php
2023-07-19 10:44:22 +02:00
Eric Espie
2c4cad4dac N°6436 - Integrate Performance Audit pre requisite in iTop Pro 2.7.9 (avoid unnecessary calls) 2023-07-19 10:37:41 +02:00
Eric Espie
9c37d5c23e Merge remote-tracking branch 'origin/support/3.0' into support/3.1
# Conflicts:
#	application/applicationextension.inc.php
#	application/cmdbabstract.class.inc.php
#	core/dbobject.class.php
#	core/kpi.class.inc.php
#	core/metamodel.class.php
#	lib/composer/autoload_classmap.php
#	lib/composer/autoload_static.php
#	tests/php-unit-tests/unitary-tests/setup/DBBackupTest.php
2023-07-19 09:26:46 +02:00
Stephen Abello
89145593ef N°6552 - Security hardening 2023-07-19 09:25:48 +02:00
Eric Espie
b2e80d37dd N°6436 - typo 2023-07-18 14:48:32 +02:00
Eric Espie
6432678de9 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	application/cmdbabstract.class.inc.php
#	application/utils.inc.php
#	bootstrap.inc.php
#	composer.json
#	core/MyHelpers.class.inc.php
#	core/cmdbsource.class.inc.php
#	core/config.class.inc.php
#	core/dbobject.class.php
#	core/kpi.class.inc.php
#	core/metamodel.class.php
#	lib/composer/autoload_classmap.php
#	lib/composer/autoload_real.php
#	lib/composer/autoload_static.php
2023-07-18 14:36:58 +02:00
Pierre Goiffon
952194b385 N°6570 Fix BulkChangeExtKeyTest errors
- transaction started but never stopped
- invalid value label typo
- urlencode on search url
2023-07-18 14:12:29 +02:00
Pierre Goiffon
bfb452dd69 N°6570 Rename BulkChangeExtKeyTest file so it is run in Jenkins
Was *Test.inc.php instead of default *Test.php
2023-07-18 14:12:29 +02:00
Pierre Goiffon
64baeba1c7 Merge remote-tracking branch 'origin/support/3.0' into support/3.1 2023-07-18 09:49:03 +02:00
Molkobain
71ed784c60 N°6532 - Fix missing "/" in path
(cherry picked from commit 32fd75bc4b)
2023-07-18 09:40:34 +02:00
Eric Espie
da45651121 Merge branch 'feature/6548_Hide_DBHost_and_DBUser_in_log' into support/2.7 2023-07-18 09:34:48 +02:00
Eric Espie
d388ce9a06 Merge branch 'feature/6548_Hide_DBHost_and_DBUser_in_log' into support/2.7 2023-07-18 09:17:40 +02:00
Eric Espie
47e71d8838 Merge branch 'feature/6436-Integrate_Performance_Audit_extensibility' into support/2.7 2023-07-18 09:17:05 +02:00
Stephen Abello
2b5973ec67 N°6436 - Integrate Performance Audit pre requisite in iTop Pro 2.7.9 2023-07-18 09:15:37 +02:00
Benjamin Dalsass
e58918f53e N°6546 - AttributeLinkedSetIndirect filter dosen't work 2023-07-18 08:53:26 +02:00
Molkobain
125715af3f N°6562 - Temporarily disable XML conversion unit tests failing in PHP 8.2.8 2023-07-14 21:09:37 +02:00
Molkobain
ea8e7c5131 N°6562 - Temporarily disable XML conversion unit tests failing in PHP 8.1.21 2023-07-13 10:11:56 +02:00
Eric Espie
06e5e0b102 Merge branch 'support/3.1.0' into support/3.1 2023-07-12 13:31:34 +02:00
Eric Espie
df1cb0b6e3 N°6408 - CRUD : Fix log consuming too much memory 2023-07-12 11:21:32 +02:00
Pierre Goiffon
5247f5b3ea 🔖 Prepare version 3.1.1 2023-07-11 09:56:59 +02:00
Eric Espie
78396d8e4a 6548 - [ER] Hide DBHost and DBUser in log 2023-07-10 17:37:27 +02:00
Pierre Goiffon
f1ee22cbed Merge branch 'release/3.1.0' into develop 2023-07-10 16:57:23 +02:00
Molkobain
9b409b117f N°6043 - Booking: Move \TemporaryObjectDescriptor to /core to keep compatibility with legacy/custom packages
Cherry picked from 39305468
2023-07-10 13:16:53 +02:00
Molkobain
39305468f8 N°6043 - Booking: Move \TemporaryObjectDescriptor to /core to keep compatibility with legacy/custom packages 2023-07-10 12:25:32 +02:00
Molkobain
32fd75bc4b N°6532 - Fix missing "/" in path 2023-07-10 09:43:28 +02:00
Pierre Goiffon
efadf2cc79 Merge remote-tracking branch 'origin/support/3.0' into develop 2023-07-07 10:24:57 +02:00
Pierre Goiffon
40d63a2fa4 N°3663 💡 Fix depreciation comment in core/coreexception.class.inc.php 2023-07-07 10:24:15 +02:00
Pierre Goiffon
baa6dedbcf Merge remote-tracking branch 'origin/support/3.0' into develop 2023-07-07 09:32:14 +02:00
Pierre Goiffon
556b9ad89a N°6532 Fix "failed to open stream" error on require_once approot in coreexception.class.inc.php
Was occurring in TemplateFieldValueTest templates-base phpunit test
2023-07-07 09:31:34 +02:00
Stephen Abello
9afc22bd8f N°6123 - Add tests and comments 2023-07-07 09:29:15 +02:00
Pierre Goiffon
ef0b0f88c9 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	sources/Core/Email/EmailSwiftMailer.php
#	tests/php-unit-tests/integration-tests/DictionariesConsistencyTest.php
#	tests/php-unit-tests/postbuild_integration.xml.dist
2023-07-06 17:11:10 +02:00
Pierre Goiffon
a010239efb Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-07-06 15:48:42 +02:00
Pierre Goiffon
264a8cd70a N°6494 - Some tests are run twice, some never
(cherry picked from commit a2a0b2cd0b)

(cherry picked from commit 4c9ea0c9d4)

# Conflicts:
#	tests/php-unit-tests/integration-tests/DictionariesConsistencyTest.php
2023-07-06 15:45:09 +02:00
Pierre Goiffon
a2a0b2cd0b N°6494 Fix missing PHPUnit log in console log for postbuild tests 2023-07-06 15:28:32 +02:00
Stephen Abello
aa1834170b N°6427 - Fix SwiftMailer not retrieving sendmail path 2023-07-06 14:31:54 +02:00
Stephen Abello
f94d67ab35 N°6340 - Fix permission refused when sending an email and renewing OAuth token in synchronous mode 2023-07-06 10:28:10 +02:00
Stephen Abello
3048c8c41f N°5560 - Display an error when trying to regenerate an expired OAuth token 2023-07-06 09:52:00 +02:00
Stephen Abello
246e4a9f50 N°6123 - Fix warnings when launching a backup on MariaDB > v10.6.1 with localhost dbhost 2023-07-06 09:28:01 +02:00
odain
4c9ea0c9d4 N°6494 - Some tests are run twice, some never 2023-07-05 14:37:02 +02:00
Benjamin Dalsass
e654daf4a5 N°6516 - Add @experimental PHP annotation on temporary objects features 2023-07-05 14:24:05 +02:00
Molkobain
8292b16387 N°6502 - Fix AttributeImage::GetAsHtml() using download URL instead of display URL which triggers download listeners 2023-07-05 10:35:36 +02:00
Molkobain
340b982d77 N°6502 - Avoid new history entry on AttributeBlob download 2023-07-05 10:35:35 +02:00
Stephen Abello
3e187282b0 N°6498 - Fix str_replace crashing with null value 2023-07-05 09:18:56 +02:00
Molkobain
722a4a2c4d Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	js/jquery.ba-bbq.js
2023-07-05 08:59:47 +02:00
Molkobain
8907525b78 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-07-05 08:56:17 +02:00
Molkobain
6d58adb6dd N°6359 - Fix JS crash due to new version trying to detect MSIE browser through a dependency that we don't have.
Cherry-picked from f889c53d71
2023-07-05 08:41:00 +02:00
Benjamin Dalsass
03e7e0e79f N°6503 - Logs purge system delete index.php 2023-07-05 08:39:48 +02:00
Molkobain
83529da319 N°6500 - Fix user request approval freezing in the portal due to "Cannot read properties of undefined (reading 'validation')" 2023-07-04 21:36:34 +02:00
bdalsass
9d38b4d1d6 N°6043 - Booking: Add prerequisites in iTop core - CRUD extensibility (#520) 2023-07-04 16:22:53 +02:00
Stephen Abello
40dc3deabb N°6495 - Fix strlen crashing with null value in AttributePassword 2023-07-04 13:56:31 +02:00
Stephen Abello
56688fbbff Merge branch 'support/3.0' into develop 2023-07-03 14:30:20 +02:00
Stephen Abello
764a170cd0 N°6483 - Security hardening 2023-07-03 14:29:45 +02:00
Stephen Abello
c30da57818 N°6488 - Fix object keyboard shortcut not working anymore due to summary cards stealing its shortcuts 2023-07-03 11:50:12 +02:00
Pierre Goiffon
e36b9eb664 N°6414 Make AbstractSimpleField::Validate final
We don't have any overrides remaining anymore
2023-07-03 11:30:04 +02:00
Pierre Goiffon
6cc2d49cd5 N°6414 Move existing AbstractSimpleField::Validate impl to custom validators
- LinkedSetField
- SelectObjectField
- MultipleChoicesField (warning this hierarchy contains non multiple value fields like SelectField !)

Also change AbstractValidator::Validate signature : now we are returning an array of error messages, so that we can return multiple ones
2023-07-03 11:30:04 +02:00
Pierre Goiffon
d085f15b6d N°6414 Separate SubFormField and Scalar fields
This will help to set methods as final, as SubFormField is often the sole one to have a real custom impl
2023-07-03 11:30:04 +02:00
Pierre Goiffon
6606af71ff N°6414 Validator refactoring
New AbstractValidator class, with new method Validate
All existing validators are now children of AbstractRegexpValidator
Handle validators JS counterparts in renderers : only regexp validators are implemented client side
2023-07-03 11:30:04 +02:00
Pierre Goiffon
52049b7837 N°6414 Disable Field validation for untouched attcodes 2023-07-03 11:30:04 +02:00
Pierre Goiffon
f40674ec85 N°6414 Replace SelectObjectField::VerifyCurrentValue by ResetCurrentValueIfNotAmongAllowedValues 2023-07-03 11:30:04 +02:00
bdalsass
b46d4db8ff N°6476 - Revert datamodel / compiler changes from N°5563 (#515) 2023-06-29 15:11:30 +02:00
Molkobain
12dbd0ed3d N°6482 - Fix URP_UserProfile classes not flagged as link classes so they can benefit of the same mechanisms (eg. events) 2023-06-29 09:59:09 +02:00
Lars Kaltefleiter
0d9f33ec4c 🌐 Updated german translations for 3.1 (#511) 2023-06-29 09:05:27 +02:00
Molkobain
71704404d0 N°5945 - Apply same explicit value comparison as previous commit 2023-06-28 10:19:07 +02:00
Molkobain
3c8bea8921 N°5945 - Fix "menu" option in dashlet list having no effect since relations refactoring 2023-06-28 10:11:51 +02:00
Molkobain
b755f65a8a Improve PHPDoc 2023-06-27 23:35:57 +02:00
Molkobain
3bd3081359 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	synchro/synchro_exec.php
2023-06-27 18:19:48 +02:00
Molkobain
5a33fb7a6a N°6474 - Fix regression introduced by 70e6f707 2023-06-27 18:16:55 +02:00
Stephen Abello
29a90fe244 N°6474 - Fix undefined variable due to failed merge + refactoring 2023-06-27 16:55:25 +02:00
Molkobain
011116029b N°6478 - Add "edit_mode" node for AttributeLinkedSetIndirect (n:n) for future usages 2023-06-27 16:41:01 +02:00
Eric Espie
f95cb50002 N°6442 - comment 2023-06-27 15:49:39 +02:00
Eric Espie
2c8db92504 N°6442 - Error in Database integrity due to "translate placeholder in notification" 2023-06-27 15:23:28 +02:00
Eric Espie
98d4fa4331 N°6384 - fix typo 2023-06-27 14:13:33 +02:00
Anne-Catherine
4a39a5e51d N°6342 - Fix empty list when configuring a list adding a log attribute (#498)
* N°6342 - Empty list when configuring a list adding a case log attribute

* Update js/dataTables.settings.js

---------

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2023-06-27 13:45:04 +02:00
Eric Espie
8373a03d82 N°6408 - CRUD fix tests 2023-06-27 12:11:36 +02:00
Eric Espie
befbe2dfa9 N°6408 - CRUD fix tests 2023-06-27 11:52:23 +02:00
Eric Espie
86ca7fcb7a N°6408 - CRUD : rework on DBUpdate reentrancy 2023-06-27 11:37:10 +02:00
Stephen Abello
ccf1d7ecfb N°6446 Fix OAuth landing page missing jQuery library needed in ajax calls 2023-06-27 11:24:06 +02:00
Stephen Abello
178e82a039 N°6446 Replace jQuery with vanilla JS in ajax dictionaries 2023-06-27 11:24:06 +02:00
Stephen Abello
452cc77168 N°6446 Prevent loaded js file constant from being missing if an ajax call is made from a page that's not a Webpage 2023-06-27 11:24:05 +02:00
Molkobain
7fc46fbc50 N°6472 - Fix empty tables in "Progress" tab of a survey 2023-06-27 10:36:30 +02:00
Benjamin Dalsass
f338d3bdc8 N°6326 - Magnifier pop-up search from ExtKey in Link edit in pop-up, fails 2023-06-27 09:42:12 +02:00
Benjamin Dalsass
d41e54bf34 N°6473 - Do not track QueryOQL statistic values 2023-06-27 08:42:44 +02:00
Eric Espie
aa75456e6e N°6271 - Fix drop-down list not refreshed when adding an external key with a friendlyname built on an external key 2023-06-27 08:41:20 +02:00
Eric Espie
db6e4137b1 N°6271 - Fix drop-down list not refreshed when adding an external key with a friendlyname built on an external key 2023-06-26 18:00:04 +02:00
Benjamin Dalsass
a206af1813 N°6005 - CSV import : import an object and a linkset fails
- Restore old get as html for linked set with display style tab
2023-06-26 15:11:41 +02:00
Eric Espie
77868e356b N°6408 - CRUD : Issue on DBlinkchange event when delete et create 2023-06-26 11:34:00 +02:00
Eric Espie
60e302162c N°6408 - CRUD : Issue on DBlinkchange event when delete et create 2023-06-26 11:31:53 +02:00
Eric Espie
f36c8c5cdd N°6408 - CRUD : Issue on DBlinkchange event when delete et create 2023-06-26 11:17:20 +02:00
Molkobain
d062ba8196 N°6456 - Code convention 2023-06-24 11:49:43 +02:00
Eric Espie
c3469e43bc N°6408 - Add logs, changed modification test of current object and prevent calling OnDBUpdate() when object is not modified 2023-06-23 17:02:31 +02:00
acognet
68ee12bf5e N°6456 - Empty list when configuring a list and cancel 2023-06-23 09:35:42 +02:00
Purple Grape
47400d94ba N°6468 update zh-cn dict (#512) 2023-06-23 09:03:49 +02:00
Molkobain
b642dbe3d6 N°6389 - Fix SQL error when saving an object with an emptied blob attribute 2023-06-22 20:43:56 +02:00
Molkobain
83564849e0 N°6356 - Search, SELECT on class with a single field display the count and an empty list 2023-06-22 20:18:18 +02:00
Molkobain
3e73038709 N°6380 - Fix exception "Failed to parse time string" with check_backup.php script 2023-06-22 13:51:01 +02:00
vdumas
dcfefc1588 N°1350 - Audit domains: add uniqueness rule on n:n with Category 2023-06-22 11:19:53 +02:00
vdumas
4db092ea52 N°6370 - Replace Audit Category menu by a dashboard only in module 2023-06-22 11:05:01 +02:00
Molkobain
96f1bd3646 N°6462 - Sort \AttributeApplicationLanguage alphabetically (eg. "Language" in ActionEmail class) 2023-06-21 18:33:12 +02:00
Molkobain
f889c53d71 N°6359 - Fix JS crash due to new version trying to detect MSIE browser through a dependency that we don't have.
It's far from perfect but as mentioned in the previous commit, we don't have much choices for now
2023-06-21 17:21:40 +02:00
Molkobain
814916fb21 N°6362 - Fix export of linkset tab not working due to JS error 2023-06-21 17:04:55 +02:00
Eric Espie
9e667c968e N°6408 - CRUD : Issue on DBlinkchange event when delete et create 2023-06-21 16:41:54 +02:00
Molkobain
a8a3385969 N°6460 - Sort \AttributeClassAttCodeSet alphabetically (eg. "Target fields" in Trigger class) 2023-06-21 16:06:22 +02:00
Molkobain
87e04547bd N°6448 - Restore sort order for \AttributeClass and \AttributeSetEnumPadded (eg. "Target class" and "Context" in DataSynchronisation and Trigger classes) 2023-06-21 15:58:11 +02:00
Eric Espie
6fe41796d9 N°5909 - Fix iApplicationExtension not called when attachment is added 2023-06-21 15:15:59 +02:00
Eric Espie
99a4e5e861 N°5909 - Fix iApplicationExtension not called when attachment is added 2023-06-21 14:39:04 +02:00
Molkobain
3d3a751072 N°6200 - Delete old redundant turkish dict file 2023-06-21 13:13:57 +02:00
Molkobain
216a1b95b1 N°6405 - Fix XML displayed corrupted when using \DesignerLongTextField due to usage of \utils::EscapeHtml() without double encoding 2023-06-21 11:33:18 +02:00
Benjamin Dalsass
2074a0fa0d N°5305 - CSV import ergonomy for SaaS
- Fix ext key displayable value
2023-06-21 11:21:40 +02:00
Eric Espie
bfd078c2a3 N°6281 - Rest API core/create key value is no more between quote 2023-06-20 17:25:13 +02:00
Benjamin Dalsass
85a879b587 N°5305 - CSV import ergonomy for SaaS
- Change checkbox error ugly font
- Improve errors messages (ambiguous, mismatch)
2023-06-20 17:21:39 +02:00
Eric Espie
9b9ba3c440 N°6281 - Rest API core/create key value is no more between quote 2023-06-20 16:58:16 +02:00
bdalsass
4d43d83b95 N°6000 - CSV Import with quote no more handled (#508) 2023-06-20 16:39:56 +02:00
Benjamin Dalsass
63487226a9 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	core/csvbulkexport.class.inc.php
2023-06-20 10:24:03 +02:00
vdumas
7b5ef52865 N°6422 - Improve french dictionary 2023-06-20 08:37:17 +02:00
Molkobain
4550dfb1d4 N°5388 - PHP 8.2: Fix dynamic property declaration 2023-06-19 16:27:45 +02:00
Molkobain
1a5ffc23ce N°6251 - Fix dynamic property declaration 2023-06-19 14:47:06 +02:00
vdumas
3a9198bf1c N°6422 - Finalize french dictionaries 2023-06-16 16:39:05 +02:00
vdumas
2242a80808 N°6428 - Portal : Hide role attribute in linkset Contact/Ticket 2023-06-16 16:19:04 +02:00
Benjamin Dalsass
86148ecf57 N°6415 - Linked set shown as tag set in csv import is ugly 2023-06-16 16:06:35 +02:00
Benjamin Dalsass
2c4a7c5a77 # Conflicts:
#	core/csvbulkexport.class.inc.php
2023-06-16 15:57:58 +02:00
Benjamin Dalsass
2cca57c7fa N°6431 - CSV bulk export text delimiter option not initialized correctly 2023-06-16 15:50:28 +02:00
Timothee
e52fa28089 Merge remote-tracking branch 'origin/release/3.1.0-beta' into develop 2023-06-16 15:21:51 +02:00
Pierre Goiffon
42dfa2c066 Merge branch 'develop' into release/3.1.0-beta 2023-06-16 10:47:37 +02:00
odain-cbd
49d3f4c2b2 N°6047 - Make iTop scripts work by HTTP via token with specific scopes (#494)
* N°6047 - Make iTop scripts work by HTTP via token with specific scopes

* Update core/contexttag.class.inc.php

---------

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2023-06-15 15:36:35 +02:00
odain
d91eda1343 ci: enhance AddProfileToUser to work with any User 2023-06-15 15:07:09 +02:00
Timothee
e075bf8e89 Licenses update 2023-06-15 10:47:16 +02:00
Molkobain
40355c9442 N°6426 - Fix RenderAllUiBlocks test page not displaying 2023-06-15 10:20:41 +02:00
Timothee
f548dc2898 Dictionaries update for 3.1 beta 2023-06-15 09:47:51 +02:00
Benjamin Dalsass
0ece69112a N°6416 - In user portal, empty ext key drop down doesn't display error message anymore
Fix wrong jquery element resulting in select all form field instead of links elements
2023-06-15 08:37:03 +02:00
Molkobain
587b6a7148 N°6179 - Add visual test 2023-06-14 19:25:02 +02:00
Pierre Goiffon
baa4641795 Merge remote-tracking branch 'origin/support/3.0' into develop 2023-06-14 19:03:02 +02:00
Pierre Goiffon
52820925b1 N°4725 DeprecatedCallsLog::NotifyDeprecatedFile remove throw ConfigException
Those exceptions are handled silently since 3.0.1
2023-06-14 19:01:50 +02:00
Benjamin Dalsass
578f2dfa8e N°3190 - Edit n:n LinkedSetIndirect in object details using a tagset-like widget
Add security if add option button js code isn't provided
2023-06-14 14:50:17 +02:00
Anne-Catherine
5185f721bd N°5594 - Dashboard Bug with Group by (table) - iTop 3.0 (#466) 2023-06-14 11:06:25 +02:00
Pierre Goiffon
add038d649 Merge remote-tracking branch 'origin/support/3.0' into develop 2023-06-14 10:28:46 +02:00
Pierre Goiffon
1824111de8 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-06-14 10:28:30 +02:00
Pierre Goiffon
5a0b5364d6 N°4698 setup/phpinfo.php : if no iTop installation then display a proper message instead of an exception (#265) 2023-06-14 10:18:38 +02:00
Pierre Goiffon
76eed2eba0 N°6098 updateLicenses script : check availability of the required JQ command (#458)
This packaging script requires both bash and the JQ command when running on Windows.
If the later isn't available, it will run without throwing an error...

With this change the script will now check directly at launch for the JQ command availability, and exit in error if it isn't.
2023-06-14 10:17:00 +02:00
Anne-Catherine
c2309876fb N°6239 - Portail: Fix error message when trying to display object with missing icon (#485) 2023-06-14 09:42:43 +02:00
Molkobain
1d12ebd733 N°6398 - Improve PHPDoc 2023-06-14 09:38:05 +02:00
Eric Espie
5578147002 N°5906 - CRUD Event - fire event EVENT_DB_LINKS_CHANGED when an n-n link is created/updated/deleted 2023-06-14 09:32:19 +02:00
Eric Espie
a152c5db66 N°6351 - code hardening 2023-06-14 09:11:36 +02:00
Eric Espie
5d5589dd64 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-06-14 09:09:12 +02:00
Eric Espie
1ec671ef61 N°6351 - code hardening 2023-06-14 09:08:42 +02:00
vdumas
04e0950efb N°1350 - Audit selection: use absolute url 2023-06-14 08:13:48 +02:00
Molkobain
79d6cadfde N°4106 - Fix typo in the PHPDoc thanks to @piRGoif 2023-06-13 22:34:50 +02:00
Tarjányi Csaba
a1daef70e2 N°6419 - Update hungarian translations thanks to @tacsaby (#472)
* Update hu.dictionary.itop.ui.php

Some corrections

* Revert formatting changes

---------

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2023-06-13 18:00:21 +02:00
Molkobain
eb7afd53a1 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	datamodels/2.x/itop-config-mgmt/dictionaries/nl.dict.itop-config-mgmt.php
2023-06-13 17:50:57 +02:00
Thomas Casteleyn
b8199a6e2c N°6418 - Fix dutch translations on impact relation view (#499)
* Fix author and copyrights
* Correct NL dict for impact relation view
2023-06-13 17:48:36 +02:00
Purple Grape
68e1f359d3 N°6417 - Update chinese translations thanks to @purplegrape (#500) 2023-06-13 17:36:27 +02:00
Eric Espie
e574fe3dc5 N°5906 - CRUD Event - fire event EVENT_DB_LINKS_CHANGED when an n-n link is created/updated/deleted 2023-06-13 17:12:35 +02:00
Molkobain
0fbef99875 N°4010 - Remove unnecessary single quote escape 2023-06-13 15:59:16 +02:00
Denis
9a5ad6681d Typo in en.dictionary.itop.core.php 2023-06-13 13:44:20 +02:00
Pierre Goiffon
d0cad4d829 N°1150 Fix regression : cannot add caselog in the user portal
Was caused by field value check added in MultipleChoicesField and SelectObjectField in b71cd218

With this commit the checks are now only done if we have a ContextTag::TAG_REST
2023-06-13 12:34:46 +02:00
Pierre Goiffon
b3ef634d21 N°1150 SelectObjectField : factorize DBObjectSet retrieval between Validate and VerifyCurrentValue 2023-06-13 12:34:46 +02:00
Molkobain
5915b2cc01 Merge remote-tracking branch 'origin/support/3.0' into develop 2023-06-13 11:43:11 +02:00
Molkobain
9f38eec40a N°4106 - Reword PHPDoc to avoid confusion as the @internal was not accurate 2023-06-13 11:42:28 +02:00
Benjamin Dalsass
b2c2d5eaea N°6398 - Portal: Allow linkset visible attributes to be limited to attributes defined in a zlist 2023-06-13 10:51:05 +02:00
Denis
fed149dc66 N°918 - Translate placeholders in notifications (#506)
- Localization of date & time formats
- Use of DataLocalizer (if present)
- All placeholders can be used in the uploaded HTML template as well as in the notification "message"
2023-06-13 09:51:32 +02:00
Molkobain
58a20e9a11 N°1646 - Fix crash in case no value return (real fix about to be discussed) 2023-06-13 09:36:30 +02:00
Benjamin Dalsass
0a45039c5c N°6005 - CSV import : import an object and a linkset fails 2023-06-13 08:14:34 +02:00
Benjamin Dalsass
465388b5e3 N°803 - Allow display & edition of attributes on n:n relations on Portal
- Issue when selecting links rows with checkbox
- Change linked set field validation to prevent checking host id -1
2023-06-12 17:26:34 +02:00
vdumas
ad1836d028 N°1350 - Audit: propose domains selection as default 2023-06-12 14:15:57 +02:00
Eric Espie
1655674543 Merge remote-tracking branch 'origin/support/3.0' into develop 2023-06-12 11:39:39 +02:00
Eric Espie
5f5537b8b9 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	js/breadcrumb.js
2023-06-12 11:39:13 +02:00
Eric Espie
72716b7ec8 N°6396 - Protect URL display 2023-06-12 11:36:51 +02:00
Eric Espie
5084f7fccb N°6396 - Protect URL display 2023-06-12 11:33:33 +02:00
Molkobain
bd96247f97 N°1345 - Fix typo in conf. param. description 2023-06-12 09:56:57 +02:00
vdumas
01fb3466c8 N°1350 - Audit: propose domains selection as default 2023-06-12 09:22:34 +02:00
vdumas
b5a637fa11 N°1350 - Audit: Title, breadcrumb, back button and link to configure 2023-06-09 20:13:44 +02:00
Molkobain
4d6236cbea N°1345 - Restrict unit test iTop community only as it is based on the standard DM (thanks @piRGoif) 2023-06-09 17:55:54 +02:00
vdumas
2829068499 N°6381 - Add rank on Enums of default DataModel 2023-06-09 17:51:00 +02:00
Molkobain
8304e4df00 N°6394 - Force header statistics to sort [meta]enums pills according to the datamodel instead of the selection order 2023-06-09 17:49:20 +02:00
Pierre Goiffon
2824718189 N°6376 Fix french labels (requête => demande) 2023-06-09 16:35:21 +02:00
Pierre Goiffon
2d866b8f47 N°6320 Fix GetSelectFilterTest::testGetSelectFilter crashing when authent-token module installed 2023-06-09 15:47:19 +02:00
vdumas
36ad278b1f N°2199 - Request history tables without the Admin profile 2023-06-09 13:05:05 +02:00
Molkobain
74fec312d8 N°1345 - Add unit test 2023-06-09 13:01:59 +02:00
vdumas
05559a944b N°6381 - Add capital letter on enum values so rank by label works 2023-06-09 12:53:42 +02:00
Molkobain
508647fe0b N°1345 - Add possibility to sort transitions automatically 2023-06-09 12:49:42 +02:00
vdumas
c04c7e06ea N°6381 - Add capital letter on enum values so rank by label works 2023-06-09 11:48:14 +02:00
Benjamin Dalsass
2041a6ad3f N°803 - Allow display & edition of attributes on n:n relations on Portal
- Remove column mandatory information when object is in view mode
2023-06-09 10:40:24 +02:00
Benjamin Dalsass
c486aea299 N°803 - Allow display & edition of attributes on n:n relations on Portal
- Remove input when object is in view mode
- Improve form errors handling
- Prevent row selection when clicking input 
- Attach date time picker to table instead of input to prevent popup truncating (popup will be visible but not aligned on the input)
2023-06-09 10:34:19 +02:00
Eric Espie
1b7529fcb9 N°6384 - Flag LinkedSet to specify that it has CheckToWrite constraint (more specific parameter name) 2023-06-09 10:21:47 +02:00
Eric Espie
191742c2a9 N°6384 - Flag LinkedSet to specify that it has CheckToWrite constraint (more specific parameter name) 2023-06-09 10:17:22 +02:00
vdumas
d985ff860d N°2199 - Request history tables without the Admin profile 2023-06-09 09:20:41 +02:00
Molkobain
ae65856797 N°1646 - Fix unit tests to reflect new enum sort 2023-06-09 08:34:09 +02:00
vdumas
0fb770783d N°6381 - Add rank on Enums of default DataModel 2023-06-08 18:56:45 +02:00
Anne-Catherine
cc8c6ac027 N°3213 - Order transition attributes like in the "details" zlist instead of reordering them regarding the dependencies (#306)
N°3213 - Order transition attributes like in the "details" zlist instead of reordering them regarding the dependencies (#306)

---------

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2023-06-08 17:29:53 +02:00
Eric Espie
99e84e86cd N°6384 - fix typo 2023-06-08 17:19:45 +02:00
Eric Espie
7ebf5a6dd4 N°6384 - Flag LinkedSet (Indirect) when CheckToWrite must be requested to Hosted Object 2023-06-08 17:07:01 +02:00
Vincent Dumas
55009b53e2 N°2199 - Request history tables without the Admin profile (#497) 2023-06-08 16:50:06 +02:00
vdumas
42304fb489 N°2199 - New History Group for access to other than Administrator 2023-06-08 16:38:09 +02:00
Eric Espie
f4fcfee03b N°6359 - Add comment 2023-06-08 15:52:08 +02:00
Eric Espie
a6e56e37c9 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	tests/php-unit-tests/ItopDataTestCase.php
2023-06-08 15:11:39 +02:00
Eric Espie
e288af4ddb Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	tests/setup_params/default-params.xml
2023-06-08 14:33:54 +02:00
Eric Espie
4f999de844 N°6359 - ⬆️ Update jQuery BBQ (from https://github.com/cee-chen/jquery-bbq) 2023-06-08 14:30:09 +02:00
denis.flaven@combodo.com
1809ea647f 💄 More explicit icon for the 'Add criterion' button 2023-06-08 11:55:08 +02:00
Anne-Catherine
f47133bc28 N°6125 - Issue with GetAttributeFlags and GetInitialStateAttributeFlags within iTop 3.0.2 (#474) 2023-06-08 11:12:22 +02:00
Pierre Goiffon
14d3eb6624 N°6238 Security hardening 2023-06-08 09:31:15 +02:00
odain
ea49c0a87c enable authent-cas in ci 2023-06-07 21:44:17 +02:00
odain
6cc971849b ci: enhance AddProfile 2023-06-07 21:44:00 +02:00
vdumas
68a1c0f0cb N°1350 - Audit result and audit configuration: add navigation from one to the other 2023-06-07 20:17:39 +02:00
Molkobain
edba3270a2 N°1646 - Update standard datamodel with enum sorted by rank 2023-06-07 19:53:12 +02:00
Molkobain
4d5d149079 N°1646 - Add unit tests 2023-06-07 19:53:12 +02:00
Molkobain
bac6cbc1d8 N°1646 - Add possibility to sort Attribute[Meta]Enum either by code (default), rank or label 2023-06-07 19:53:11 +02:00
Eric Espie
f886c78f24 Merge remote-tracking branch 'origin/support/3.0' into develop -> fix unit tests 2023-06-07 17:49:52 +02:00
Eric Espie
62ed5adbc5 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	application/loginwebpage.class.inc.php
#	composer.json
#	lib/composer/installed.json
#	lib/guzzlehttp/psr7/.github/workflows/ci.yml
#	lib/guzzlehttp/psr7/.github/workflows/integration.yml
#	lib/guzzlehttp/psr7/.github/workflows/static.yml
#	lib/guzzlehttp/psr7/CHANGELOG.md
#	lib/guzzlehttp/psr7/composer.json
#	lib/guzzlehttp/psr7/src/MessageTrait.php
#	tests/php-unit-tests/ItopDataTestCase.php
2023-06-07 17:45:50 +02:00
Eric Espie
0fbd41a884 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 -> fix syntax error 2023-06-07 17:30:39 +02:00
Eric Espie
70e6f707c4 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 -> composer autoloader 2023-06-07 17:23:47 +02:00
Eric Espie
e76ada641f Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	application/loginbasic.class.inc.php
#	application/loginexternal.class.inc.php
#	application/loginform.class.inc.php
#	application/loginurl.class.inc.php
#	application/loginwebpage.class.inc.php
#	composer.lock
#	datamodels/2.x/authent-cas/src/CASLoginExtension.php
#	lib/composer/autoload_real.php
#	lib/composer/installed.php
#	synchro/synchro_exec.php
#	synchro/synchro_import.php
#	tests/php-unit-tests/unitary-tests/application/utilsTest.php
2023-06-07 17:21:09 +02:00
Pierre Goiffon
2405810864 N°6238 Security hardening 2023-06-07 16:45:35 +02:00
Denis
120b8b55ed Typo 2023-06-07 15:53:52 +02:00
Eric Espie
fff46d99fc N°6358 - Login REST API - renamed test 2023-06-07 15:31:51 +02:00
Benjamin Dalsass
11c147574a N°803 - Allow display & edition of attributes on n:n relations on Portal 2023-06-07 15:30:08 +02:00
odain
3a891f707c ci: enhance AddProfile test method to work with any User (not only UserLocal) 2023-06-07 15:06:28 +02:00
odain
8b6ea43ebe N°6358 - Login REST API - fix cas + add tests 2023-06-07 15:05:32 +02:00
Eric Espie
90cf7502e8 N°6358 - Login REST API 2023-06-07 10:09:30 +02:00
Eric Espie
c596fa2967 N°6358 - Login API REST 2023-06-07 09:17:24 +02:00
Timothee
a45177410e N°6350 - Fixing phpunit test 2023-06-06 16:47:06 +02:00
vdumas
d778203f99 N°6370 - Replace Audit Category menu by a dashboard 2023-06-05 18:32:57 +02:00
vdumas
652a9f6e40 N°6370 - Replace Audit Category menu by a dashboard 2023-06-05 17:58:14 +02:00
Benjamin Dalsass
8eb1053daa N°803 - Allow display & edition of attributes on n:n relations on Portal 2023-06-05 16:19:06 +02:00
Eric Espie
519751faa1 N°6348 - Add unit test 2023-06-05 14:50:37 +02:00
Eric Espie
b99ff5e84a ✏️ typo 2023-06-05 08:22:29 +02:00
Benjamin Dalsass
4264123ef6 N°6219 - 1:n Read: tooltip, modal title and message on Add-Edit-Remove-Delete 2023-06-02 08:08:29 +02:00
vdumas
eb1ff95437 N°6347 - 1:n Add nice french dico entry on standard 1:n relationship 2023-06-01 17:12:47 +02:00
Eric Espie
cb7cbe9297 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	pages/UI.php
#	tests/php-unit-tests/unitary-tests/application/utilsTest.php
2023-06-01 16:59:59 +02:00
Eric Espie
b8f61362f5 N°6348 - Hardening code 2023-06-01 16:44:40 +02:00
Eric Espie
e3ba826e5d N°6349 - Hardening code 2023-06-01 16:36:56 +02:00
Eric Espie
17d22219d2 N°6350 - Fix unit tests 2023-06-01 16:30:09 +02:00
Eric Espie
a49025f371 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	application/utils.inc.php
2023-06-01 16:04:52 +02:00
Eric Espie
9e96ea2873 N°6350 - code hardening 2023-06-01 15:35:56 +02:00
Eric Espie
1172159745 N°6351 - code hardening 2023-06-01 15:12:50 +02:00
vdumas
c2fb0150b0 N°6347 - 1:n Add nice french dico entry on standard 1:n relationship 2023-06-01 11:56:34 +02:00
Molkobain
41bce359a0 N°6307 - Fix mentions not working in edition due to CRUD changes 2023-05-31 17:45:20 +02:00
Eric Espie
3e7c48d5c6 N°6357 - Prevent entering same password on change user password 2023-05-31 17:12:26 +02:00
vdumas
5e3b813da7 N°6339 - n:n Add nice french dico entry 2023-05-31 16:50:54 +02:00
Eric Espie
d680369733 N°5726 - loose data localizer language in console after impersonating a user with a different langage 2023-05-31 16:45:20 +02:00
vdumas
0af8f65a11 N°6339 - n:n Add nice french dico entry 2023-05-31 16:33:48 +02:00
Molkobain
f41879f0b1 N°6307 - Fix unappropriate confirm message when updating log on object edition
Proper fix as 345a8371 was temporary
2023-05-31 16:26:26 +02:00
Molkobain
eec9b027ac Revert "N°6307 Fix alert when caselog filled and submitting form"
This reverts commit 4b9b0a91a9.
2023-05-31 16:26:26 +02:00
Eric Espie
5f359b2b61 N°6151 - Allow to select classes on union outside the already selected classes 2023-05-31 14:40:13 +02:00
Benjamin Dalsass
31a96d24dd N°6219 - 1:n Read: tooltip, modal title and message on Add-Edit-Remove-Delete 2023-05-31 10:10:02 +02:00
Molkobain
d07bce3063 N°6352 - Portal: Fix autoloaders 2023-05-30 16:29:07 +02:00
Molkobain
c9beba0cea N°6352 - Portal: Fix "Combodo\iTop\Portal\Controller\AggregatePageBrickController" has no container set due to Symfony 5.4 migration 2023-05-30 16:09:58 +02:00
vdumas
4d9b054430 N°2639 - Add Tooltips EN/FR dico entries for Data Synchro 2023-05-30 15:42:42 +02:00
Eric Espie
2c4c69fcfc Fixed regression due to forcing camel case names in operation methods, now allow both camel case and snake case 2023-05-30 15:25:00 +02:00
Eric Espie
173960e717 N°6324 - CRUD Event for one time treatment before creation and before update 2023-05-30 11:54:15 +02:00
vdumas
79585c7128 N°6339 - n:n Add nice french dico entry on standard lnk 2023-05-30 11:34:33 +02:00
Eric Espie
c3bb995407 N°6324 - CRUD Event for one time treatment before creation and before update 2023-05-30 11:29:24 +02:00
vdumas
e3dd805f24 N°6338 - Add silo (org_id) and location on all final Interfaces, LogicalVolume & NASFileSystem 2023-05-26 13:49:49 +02:00
acognet
649457bfc2 N°6308 - issue on displaying a userrequest list with Service_details fields with PHP 8 2023-05-26 00:25:42 +02:00
vdumas
e933807b1c N°6203 - Complementary name on Ticket sub-classes 2023-05-24 18:41:02 +02:00
vdumas
52fd333922 N°6339 - n:n Add nice french dico entry on standard lnk 2023-05-24 18:17:58 +02:00
vdumas
91a9997480 N°6203 - Overcard & complementary on Ticket classes 2023-05-24 15:39:22 +02:00
vdumas
906ad70156 N°6331 - Add Service tab in Provider Contract and add fieldsets 2023-05-24 13:07:52 +02:00
Pierre Goiffon
0508608e78 N°6322 Delegate \AttributeCustomFields::CheckValue to the handler
This allows to move template_id checks from BuildForm (which is called in the UI to construct the form also) to a dedicated method only called for validation
2023-05-24 09:28:26 +02:00
vdumas
63fcf4e6f9 N°6203 - Add summary to CMDB classes 2023-05-23 20:00:57 +02:00
vdumas
f805c2f834 N°6203 - Add complementary name to CMDB classes 2023-05-22 18:30:33 +02:00
vdumas
976c9c1523 N°6311 - Add a Log on User Local, LDAP and External 2023-05-20 18:54:10 +02:00
vdumas
22a14a2de2 N°6323 - n:n Add filter on lnk ExtKey aligned to PrefillSearchForm 2023-05-20 17:21:10 +02:00
vdumas
bd04b2a24c N°6203 - Standard DM overcard, complementary name 2023-05-20 17:20:16 +02:00
Eric Espie
0188108a68 Add EVENT_DB_BEFORE_CREATE and EVENT_DB_BEFORE_UPDATE events in CRUD calls 2023-05-17 10:16:18 +02:00
Pierre Goiffon
4038d4d925 N°6314 N°1150 Fix cannot reopen or close a UR in the user portal
Since introduction of MultipleChoicesField and SelectObjectField value checks with b71cd218, when a portal user was trying to do an action on a resolved UR the agent_id field was rejected. The reason for the rejection is the corresponding SelectObjectField query is containing the portal user scopes (query generated in ObjectFormManager::Build), and of course the agent_id set isn't in this scope...

As a workaround we are disabling those checks for read only fields (values are set server side and possibly in a different context than the portal user)
2023-05-16 17:54:24 +02:00
acognet
ea88aa85df N°4517 - PHP 8.1 compatibility : Replace htmlentities(***, ENT_QUOTES,'UTF-8') with utils::EscapeHtml 2023-05-16 17:45:58 +02:00
Eric Espie
8f2814a590 Undo... Move event declaration where the object is defined 2023-05-16 15:59:50 +02:00
Eric Espie
ad25d8823f Add EVENT_DB_BEFORE_CREATE and EVENT_DB_BEFORE_UPDATE events in CRUD calls 2023-05-16 15:52:02 +02:00
Eric Espie
59cd489e72 N°6252 - Make designer itop 3.1 compatible - Fix deprecated calls of opendir() with null value 2023-05-16 14:06:01 +02:00
Pierre Goiffon
4b9b0a91a9 N°6307 Fix alert when caselog filled and submitting form
Regression was introduced in 8dc7d68b
Temporary fix, as the alert is caused by activity-panel.js which is disabled only if another handler is registered before 🤯 As a temporary fix I add an empty handler at the same place as the one that was there before, but we need a better way to disable activity-panel.js handler !
2023-05-16 12:14:26 +02:00
vdumas
a21def5329 N°4010 - Configuration file overwritten - fine tune messages 2023-05-16 12:06:26 +02:00
vdumas
55f8efe0db N°4010 - Configuration file overwritten - fine tune messages 2023-05-16 12:06:26 +02:00
Eric Espie
0cc28b42b2 Move EventService init to Metamodel::Startup() for unit tests 2023-05-16 10:23:01 +02:00
Anne-Catherine
a98fab8f66 N°6240 - Improve display of picture in read or edit mode (#484) 2023-05-15 16:12:26 +02:00
vdumas
bf21481bf6 N°6212 - Replace 'case logs' by 'logs' in naming of ActionEmail for TriggerOnObjectMention 2023-05-15 12:32:31 +02:00
Eric Espie
cda51c67c5 Fix warning 2023-05-15 11:46:25 +02:00
Eric Espie
64264eb7ed Move event declaration where the object is defined (Fix undefined constant) 2023-05-15 10:42:58 +02:00
Eric Espie
940118967c Move event declaration where the object is defined 2023-05-15 09:33:53 +02:00
vdumas
a647c235c3 N°1350 - Audit domains: add description as complementary name 2023-05-15 09:27:02 +02:00
vdumas
752ac5a469 N°5971 - Allow changing the Org of a Person having Portal User without allowed orgs 2023-05-15 08:54:19 +02:00
vdumas
c61faf453c N°5971 - Prevent changing the Org of a Person having Portal User without the new Org allowed 2023-05-12 18:24:46 +02:00
Pierre Goiffon
b71cd2182f N°1150 Add value checks in MultipleChoicesField and SelectObjectField
Now current value is checked against list of possible values
2023-05-12 10:59:33 +02:00
Pierre Goiffon
7c594db4b9 N°1150 AtributeCustomFields : FromJSONToValue is now delegated to the handler
Method was always returning null before
2023-05-12 10:58:43 +02:00
Pierre Goiffon
cca27674d0 ItopDataTestCase : extract UR params to a method to allow overrides 2023-05-12 10:58:43 +02:00
Eric Espie
f426626b9a N°6299 - DBUpdate regression in 3.1 - Fix unit tests 2023-05-12 09:09:39 +02:00
Eric Espie
5dc80f31f5 N°6299 - DBUpdate regression in 3.1 when setting a field with same value in the concerned object 2023-05-11 16:16:49 +02:00
denis.flaven@combodo.com
7fe565c4fb Merge branch 'feature/6133-add-extra-files-to-backup-and-restore' into develop 2023-05-11 14:41:02 +02:00
denis.flaven@combodo.com
08ebac1b5c Fix PR remarks 2023-05-10 17:42:50 +02:00
vdumas
380723056a N°5559 - Obsolete replica locks object edition - fix default param value 2023-05-10 10:24:12 +02:00
Stephen Abello
2f20cf52f3 N°6219 Fix issues in dictionary entries 2023-05-10 10:08:18 +02:00
Stephen Abello
5219541b74 N°6154 Fix some classes names hardcoded in dict entries and calls MetaModel GetName instead of hardcoded dict entry 2023-05-10 10:03:02 +02:00
Pierre Goiffon
4695511b46 Merge remote-tracking branch 'origin/support/3.0' into develop 2023-05-09 15:37:05 +02:00
odain
0b5bf7bf6f N°6299 - DBUpdate regression in 3.1 when setting a field with same value in the concerned object - fix temporarly ci until fix comes 2023-05-09 14:51:26 +02:00
Pierre Goiffon
cdcc069099 Fix typo in exception message
Regression introduced in fe179079 in support/3.0 branch and upwards
2023-05-09 14:02:02 +02:00
Vincent Dumas
5c252849fa N°5559 - Prevent obsolete replica to lock iTop object (#376)
* N°5559 prevent obsolete replica to lock iTop object

* N°5559 - new config param for ignoring obsolete replica

* N°5559 - new config param for ignoring obsolete replica (2)
2023-05-09 11:28:44 +02:00
Eric Espie
9c50f0d072 Fixed regression due to typo 2023-05-05 17:09:10 +02:00
odain
b4f517b03b Merge branch 'support/3.0' into develop 2023-05-05 15:57:04 +02:00
odain
8c639fc23a N°5753 - add config parameter allow_rest_services_via_tokens to bypass rest secure profile option 2023-05-05 15:53:32 +02:00
Anne-Catherine
f29e748baa N°6265 - Too many call to current person in database (#488) 2023-05-05 15:08:48 +02:00
Eric Espie
f1d1aa8833 Fixed regression due to forcing camel case names in operation methods, now allow both camel case and snake case 2023-05-05 14:55:45 +02:00
bdalsass
b9cfb62d1a N°6251 - 1:n - Actions must not be proposed to user not allowed (#491) 2023-05-05 14:28:37 +02:00
odain
da5a825c7e N°6171 - Password Expiration: can expire mode has no effect on user who have never changed their password 2023-05-05 11:37:44 +02:00
Pierre Goiffon
d10e2ac25a Merge remote-tracking branch 'origin/support/3.0' into develop 2023-05-05 10:17:10 +02:00
Pierre Goiffon
b9230ad402 N°6274 DeprecatedCallsLogTest : replace expectException deprecated calls
Message was : Support for using expectException() with PHPUnit\Framework\Error\Warning is deprecated and will be removed in PHPUnit 10. Use expectWarning() instead.
2023-05-05 10:16:56 +02:00
Pierre Goiffon
436e6b80db Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	tests/php-unit-tests/ItopTestCase.php
2023-05-05 09:45:02 +02:00
Pierre Goiffon
959ac7e3be N°6274 DeprecatedCallsLogTest : fix expected exception mismatch in PHP 8.0+
Undefined offset notice was changed to a warning in PHP 8.0... Also message was changed :(
2023-05-05 09:13:03 +02:00
Molkobain
53e2d1103a Improve PHPDoc and type hints 2023-05-04 23:16:14 +02:00
Molkobain
8dc7d68b8c N°5890 - Use leave handler in backoffice forms to better handle leave confirmation message with multiple forms in a single page 2023-05-04 22:15:10 +02:00
Molkobain
bb46875679 N°5890 - Refactor leave handler to a global helper (not portal only) 2023-05-04 22:15:10 +02:00
Molkobain
1271bb31cb Fix "Syntax error, unrecognized expression" during object editing due to object class being already JSON encoded 2023-05-04 22:15:09 +02:00
Pierre Goiffon
1884596ecd N°6274 Fix log.class.inc.php crashing cause cannot load ItopTestCase class
Now the constant name is defined in approot
2023-05-04 17:34:14 +02:00
Pierre Goiffon
584cfa8cbf N°6274 Fix PHP Notices not caught in ItopDataTestCase PHPUnit
This was caused by the set_error_handler() done in DeprecatedCallsLog during startup

Now we are :
* not registering the handler if a PHPUnit test is running (based on a constant set in ItopTestCase::setUp)
* on registration only do it for the required notices
2023-05-04 17:08:47 +02:00
BenGrenoble
ae8012c75f N°4577 - Move service dependencies from "itop-bridge-cmdb-ticket" to another module
Add two more bridge for flexibilty and teemip needs
2023-05-04 15:42:51 +02:00
Benjamin Dalsass
34f3b92e2e N°5916 - Generic message on Link Uniqueness rules
Add unit test
2023-05-04 15:24:14 +02:00
Pierre Goiffon
881aa87ad2 N°6270 Remove empty model.*.php files
Not necessary anymore in 3.1.0 since :
* N°4875 - Compiler : do not force the model.*.php file to be present in the module.*.php file ('datamodel' key)
* N°4280 - Module loading : do not crash if 'datamodel' file doesn't exists (model.*.php)
2023-05-04 12:14:52 +02:00
Benjamin Dalsass
03e22ce42d N°5916 - Generic message on Link Uniqueness rules 2023-05-04 11:21:06 +02:00
Eric Espie
4f6e74a3ee N°2250 - DisplayObject with ormLinkSet ignore Removed 2023-05-04 11:01:51 +02:00
Benjamin Dalsass
5a856f96eb N°6124 - Workaround performance problem on the modification of an object with an n:n relation having a large volume
Add new bForceTableRefresh flag description
2023-05-04 10:54:04 +02:00
Benjamin Dalsass
c7e8c70ced N°6124 - Workaround performance problem on the modification of an object with an n:n relation having a large volume 2023-05-04 10:34:37 +02:00
Benjamin Dalsass
aa01003042 N°5916 - Generic message on Link Uniqueness rules
Replace space by non-breaking space
2023-05-03 12:48:33 +02:00
Benjamin Dalsass
27d9d6a822 N°6154 - n:n Read - tooltip, buttons tooltips on edit widgets 2023-05-03 12:42:45 +02:00
BenGrenoble
e16ffe5a99 N°4577 - Move service dependencies from "itop-bridge-cmdb-ticket" to another module
Fix empty files issue from previous commit
2023-05-03 10:57:57 +02:00
Eric Espie
befef6c71e N°5658 - Fix spinning wheel appearing on all application upgrade buttons - fix css 2023-05-03 10:49:08 +02:00
BenGrenoble
d86b3dba0e N°4577 - Move service dependencies from "itop-bridge-cmdb-ticket" to another module 2023-05-03 10:19:54 +02:00
Eric Espie
a972393685 N°5658 - Fix spinning wheel appearing on all application upgrade buttons - fix css 2023-05-03 10:17:04 +02:00
bdalsass
e16a32bad2 Feature/6154 - Change dict key (#490) 2023-05-03 09:47:56 +02:00
bdalsass
375677612d Feature/6154 - Confirmation modal issue (#489) 2023-05-03 09:47:40 +02:00
Molkobain
99376225de Improve PHPDoc 2023-05-03 09:46:45 +02:00
Molkobain
3ce810ee99 N°5655 - Router: Improve robustness
* Change visibility from public to protected of methods for which it was not necessary
  * Change visibility from static to non-static of methods that could be used as such for easier testability
  * Cache available routes for better performances
  * Finish Router::GetRoutes() so we can use the available routes data to display them to the developers somewhere (ideally in the toolkit)
  * Improve unit tests
2023-05-02 23:56:25 +02:00
Stephen Abello
1945708c16 Merge branch 'support/3.0' into develop 2023-05-02 09:25:55 +02:00
Stephen Abello
eebc61385d N°6009 - Fix restore backup button not working when JS dependencies are present 2023-05-02 09:24:54 +02:00
Eric Espie
9dd8ed2317 N°5658 - Fix spinning wheel appearing on all application upgrade buttons - fix css 2023-04-28 17:25:04 +02:00
Stephen Abello
98430bc16e N°6148 - Add icons to Ticket, AuditRule, AuditCategory and AuditDomain 2023-04-28 17:16:30 +02:00
Eric Espie
21fec412c3 N°5658 - Fix spinning wheel appearing on all application upgrade buttons - fix css 2023-04-28 17:14:22 +02:00
Eric Espie
cc45da5f29 N°5658 - Fix spinning wheel appearing on all application upgrade buttons - fix css 2023-04-28 17:14:01 +02:00
Eric Espie
e4412a5201 N°5658 - Fix spinning wheel appearing on all application upgrade buttons - move twig_base and itop-core-update to new router 2023-04-28 16:56:16 +02:00
Eric Espie
b1d32646d9 N°5658 - Fix spinning wheel appearing on all application upgrade buttons - move twig_base and itop-core-update to new router 2023-04-28 16:42:39 +02:00
Stephen Abello
55628288aa Add french translations to informative modals 2023-04-28 16:33:06 +02:00
Eric Espie
5dedb138bf N°5658 - Fix spinning wheel appearing on all application upgrade buttons - move twig_base and itop-core-update to new router 2023-04-28 16:15:51 +02:00
Eric Espie
e960d20826 N°5658 - Fix spinning wheel appearing on all application upgrade buttons - move twig_base and itop-core-update to new router 2023-04-28 16:02:54 +02:00
bdalsass
d91fafb2af N°5916 - Generic message on Link Uniqueness rules (#487) 2023-04-28 14:45:09 +02:00
bdalsass
de35d941c1 N°6154 N°6219 - Relations Read - tooltip, confirmation title and message (#486)
N°6154 - n:n Read - tooltip, confirmation title and message on Add-Edit-Remove
N°6219 - 1:n Read: tooltip, modal title and message on Add-Edit-Remove-Delete
2023-04-28 14:43:53 +02:00
Molkobain
269c1bf005 N°5957 - Restore transition button on linksets even when only 1 element
Moreover a refactor of the way actions were added has been done to avoid duplication of code among the method.
2023-04-28 11:19:04 +02:00
Stephen Abello
893032ccf5 Replace backup modals with iTop built-in modals 2023-04-28 11:03:08 +02:00
BenGrenoble
33818e188b N°6200 - Hamonize menu entries - Fix missing entries 2023-04-27 17:39:14 +02:00
Molkobain
e4e562d28e N°6253 - Fix crash due to missing test on main class 2023-04-27 16:45:57 +02:00
Molkobain
c1ae0ce7fa N°6253 - Fix only first selected class displayed in lists in run query page
Factorized code from \DataTableUIBlockFactory::MakeForRenderingObject() into \DataTableUIBlockFactory::MakeForRendering as 95% of their code where duplicated. 😵
\DataTableUIBlockFactory::MakeForRenderingObject() is now deprecated.
2023-04-27 16:09:14 +02:00
Pierre Goiffon
9112a06458 N°6237 Set external value reloaded instance in the m_aOrigValues too 2023-04-27 11:44:11 +02:00
Pierre Goiffon
edaa4fca31 💡 N°6237 Comment in ormCustomFieldsValue about current_* keys mandatory for DBUpdate to work 2023-04-27 11:10:01 +02:00
BenGrenoble
81abe68e44 N°6200 - Hamonize menu entries - fix typo 2023-04-27 10:58:06 +02:00
Pierre Goiffon
0cb3d699f0 N°6237 Fix ormCustomFieldsValue not reloaded after DBInsert or DBUpdate 2023-04-26 18:16:18 +02:00
Pierre Goiffon
900aa4a044 N°6043 Add phpdoc 2023-04-26 17:41:07 +02:00
BenGrenoble
0ded36fb52 N°6200 - Hamonize menu entries 2023-04-26 17:28:53 +02:00
Pierre Goiffon
dd5486eaa9 Merge remote-tracking branch 'origin/support/3.0' into develop 2023-04-26 17:13:14 +02:00
Pierre Goiffon
3c15186685 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-04-26 17:12:08 +02:00
Pierre Goiffon
fa038ded3d N°6254 ItopDataTestCase::CreateUserRequest : fix new argument default value
Was creating error Too few arguments passed
2023-04-26 16:42:27 +02:00
Pierre Goiffon
e7ea1b831c N°6254 ItopDataTestCase::CreateUserRequest : now pass fields values as array
More versatile way of doing things !
2023-04-26 16:22:26 +02:00
Eric Espie
d8b21e11ed N°6182 - Fix crash with UNION OQL queries when classes / aliases are different 2023-04-26 15:09:12 +02:00
Molkobain
7e08f6131c Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	js/links/links_widget.js
2023-04-26 12:19:04 +02:00
Molkobain
f15ac75f8f Merge remote-tracking branch 'origin/support/3.0.3' into support/3.0 2023-04-26 11:25:04 +02:00
Molkobain
c6edbf982d N°6124 - Performance: Draw datatable only once when elements added in linksets 2023-04-26 11:24:34 +02:00
Stephen Abello
d58ff8d73a N°6235 - Add robustness when creating an object that has a mandatory blob attribute in a modal 2023-04-26 11:02:44 +02:00
Molkobain
5aea7ccbc9 N°6124 - Performance: Draw datatable only once when elements remove in linksets 2023-04-26 10:33:18 +02:00
Molkobain
28f88f3ba3 Merge remote-tracking branch 'origin/support/3.0' into develop 2023-04-25 22:02:44 +02:00
Molkobain
e28dbebbd5 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	application/displayblock.class.inc.php
#	dictionaries/en.dictionary.itop.ui.php
#	dictionaries/fr.dictionary.itop.ui.php
2023-04-25 21:56:42 +02:00
Molkobain
4aff65f98b N°6217 - Add accessiblity meta data for title on "Power menu" 2023-04-25 21:51:32 +02:00
Molkobain
db26a72fd1 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	application/ui.linkswidget.class.inc.php
2023-04-25 21:22:24 +02:00
Molkobain
8aba578cfa Merge remote-tracking branch 'origin/support/3.0.3' into support/3.0 2023-04-25 21:05:42 +02:00
Molkobain
9d3e389011 N°6124 - Workaround performance problem on adding items to an object with an n:n relation having a large volume 2023-04-25 17:43:51 +02:00
Eric Espie
2e219e78c5 N°6182 - Fix crash with UNION OQL queries when classes / aliases are different 2023-04-25 15:30:34 +02:00
acognet
7e7f8577e8 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	application/displayblock.class.inc.php
2023-04-25 15:14:22 +02:00
acognet
3c94974d9d N°541 - Dashlets: Improve readability when to much labels (pie chart) or too long labels (bar chart) 2023-04-25 12:09:11 +02:00
Eric Espie
d0e6572fd0 N°1608 - Fix attachments access rights 2023-04-25 10:05:10 +02:00
Eric Espié
5644587e5d Merge pull request #481
* N°4010 - Configuration file protection against server changes

* N°4010 - Configuration file editor - Fix reset button
2023-04-25 09:35:54 +02:00
Stephen Abello
284117f33a Fix linkset sets' complementary name being double encoded 2023-04-25 09:18:18 +02:00
vdumas
900208f249 N°6212 - Report Target class info on Trigger, so it can be displayed in complementary_name 2023-04-24 18:12:35 +02:00
Molkobain
accd5670fe N°5890 - Handle locked object properly in modals 2023-04-24 17:25:46 +02:00
Molkobain
1a7f97d799 N°5890 - Improve JS selector for concurrent lock 2023-04-24 17:25:46 +02:00
Benjamin Dalsass
4ef93db9a7 N°5958 - 1:n - edit_mode=ADD_ONLY - Location -> Person
Disable blob edition only when editing via ajax
2023-04-24 15:18:08 +02:00
acognet
3e6e3919fb Merge remote-tracking branch 'origin/support/3.0' into develop 2023-04-24 15:04:58 +02:00
acognet
d6e5069dd5 N°541 - Dashlets: Improve readability when to much labels (pie chart) or too long labels (bar chart) 2023-04-24 14:26:33 +02:00
Tarjányi Csaba
55b6f9ebd1 N°6121 - Update hungarian translations (thanks to @tacsaby) (#462)
* Update hu.dictionary.itop.ui.php

Grammatical corrections

* Restore not translated entries

---------

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2023-04-24 10:09:23 +02:00
Molkobain
861b5fcd01 N°2889 - Fix notifications tab not display if trigger class is neither a leaf nor abstract 2023-04-24 09:44:07 +02:00
Molkobain
3f37858c70 N°2889 - Fix error on attachment download due to $oObj not being a \cmdbAbstractObject 2023-04-23 23:15:05 +02:00
Molkobain
c34bd42945 N°5957 - Introduce constants for DisplayBlock styles 2023-04-22 09:52:30 +02:00
Molkobain
f308d9b478 N°5957 - Relations: Refactor \DisplayBlock to correctly handle 'listInObject' style 2023-04-22 09:52:30 +02:00
Molkobain
58b230cd74 N°5388 - PHP 8.2: Fix dynamic properties that were actually just case-sensitive typos 2023-04-22 09:52:30 +02:00
vdumas
c3ace8e1a0 N°6213 - Add/remove current User from Ticket contacts_list 2023-04-21 17:11:33 +02:00
Stephen Abello
0404727fc9 N°6223 - Linkset modal edition: set extkey to host object read-only 2023-04-21 17:00:33 +02:00
Stephen Abello
f67544bb8a Merge branch 'support/3.0' into develop
# Conflicts:
#	application/cmdbabstract.class.inc.php
#	application/ui.linksdirectwidget.class.inc.php
2023-04-21 16:17:32 +02:00
Stephen Abello
f839638e0b N°6188 - Creation cancellation in pop-up while in edition of parent object wrongfully returns to object list 2023-04-21 16:12:37 +02:00
vdumas
6476e82c3d N°6212 - Mirror Target class on Trigger, so it can be displayed in complementary_name 2023-04-21 15:25:58 +02:00
Stephen Abello
62a717b93b N°6223 - On link modal creation, make ext key to current object readonly, but still submit its value (#483)
* On link creation, make ext key to current object readonly, but still submit it

* Dump autoloader

* Apply suggestions from code review thanks to @Molkobain and @Hipska

---------

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>

Co-authored-by: Thomas Casteleyn <thomas.casteleyn@super-visions.com>
2023-04-21 15:02:59 +02:00
Pierre Goiffon
b4e2c79175 Merge remote-tracking branch 'origin/support/3.0' into develop 2023-04-21 14:58:21 +02:00
Pierre Goiffon
740ff8c649 💡 DeprecatedCallsLog phpdoc 2023-04-21 14:58:00 +02:00
Molkobain
aca46fb1d6 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	application/ui.linkswidget.class.inc.php
2023-04-20 17:41:40 +02:00
Molkobain
cfe227e0c7 N°6216 - Fix line-height being too big in the attachments table 2023-04-20 15:28:20 +02:00
Molkobain
ed79c8f099 Merge remote-tracking branch 'origin/support/3.0.3' into support/3.0 2023-04-20 12:53:34 +02:00
Molkobain
4560f751d1 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	application/displayblock.class.inc.php
#	application/itopwebpage.class.inc.php
#	dictionaries/en.dictionary.itop.ui.php
#	dictionaries/fr.dictionary.itop.ui.php
2023-04-20 12:53:12 +02:00
Molkobain
46e869d1f4 N°6124 - Workaround performance problem on the modification of an object with an n:n relation having a large volume 2023-04-20 12:22:12 +02:00
Molkobain
fbd72b2783 N°6217 - Add accessiblity meta data for title on "Power menu" 2023-04-20 11:03:43 +02:00
Molkobain
f026e6f4b8 N°6208 - Router: Move to Service folder 2023-04-20 09:41:12 +02:00
Molkobain
e3252da5a9 N°6208 - Router: Add mechanism to generate complete route URL from its code 2023-04-20 09:41:12 +02:00
Molkobain
866d77dd14 N°5888 - Harmonize / implement missing methods 2023-04-19 22:33:02 +02:00
Molkobain
b078c0d289 N°5888 - Correctly handle size option for modals 2023-04-19 20:16:25 +02:00
Molkobain
5aaaaec829 N°5888 - Move resize observer to dedicated events listener method 2023-04-19 19:24:08 +02:00
vdumas
f8c2d4930d N°1350 - Audit domains: use tagset widget for adding them 2023-04-19 16:37:23 +02:00
vdumas
4645e9b94b N°6210 - Avoid n:n duplicates on User-Profile and Trigger-Actions - uniqueness rules 2023-04-19 16:35:31 +02:00
Pierre Goiffon
8d59542f0d N°6135 Delegate form & field creation in AttributeDefinition
Will allow to create SubFormField for the portal
2023-04-19 15:27:23 +02:00
Benjamin Dalsass
b2c0c5253a N°6201 - Change a CI role to "computed" in pop-up freeze the screen 2023-04-19 14:03:15 +02:00
jf-cbd
e436f9bf8d N°6179 - Tooltip attribute in field component (in Twig) (#478)
N°6179 - Tooltip attribute in field component (in Twig) (#478)
2023-04-19 11:02:47 +02:00
Stephen Abello
866a09e0c8 N°3191 - Handle max width and max height for summary cards -- missing file 2023-04-19 09:17:49 +02:00
Benjamin Dalsass
b8560e4862 N°6207 - Click on Tag Widget Tagset for n:n open in new tab, why? 2023-04-19 08:33:05 +02:00
Benjamin Dalsass
1c3117dd2c N°5958 - 1:n - edit_mode=ADD_ONLY - Location -> Person
Disable blob edition only when editing via ajax
2023-04-19 08:17:39 +02:00
Molkobain
6fbe66d2ec Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	tests/php-unit-tests/unitary-tests/webservices/RestTest.php
2023-04-18 22:50:31 +02:00
Molkobain
778118cfb4 N°6204 - REST API: Add unit test for callback parameter 2023-04-18 22:34:11 +02:00
Molkobain
096ed9a63a N°6204 - Improve REST API unit test readability 2023-04-18 22:14:39 +02:00
Molkobain
60ae3621c5 N°3191 - Refactor SCSS 2023-04-18 21:49:14 +02:00
Molkobain
9c9628b82c N°5958 - Fix regression from 51617113 2023-04-18 21:33:57 +02:00
vdumas
df0b0d1b00 N°6203 - standard DM - add summary and complementary (1) 2023-04-18 18:09:55 +02:00
vdumas
b8d5e811a4 N°3191 - Introduce summary cards - FR dico 2023-04-18 17:01:36 +02:00
Stephen Abello
b31bce7269 N°3191 - Add modify button as default action 2023-04-18 16:46:13 +02:00
Stephen Abello
e09749b288 N°3191 - Handle max width and max height for summary cards 2023-04-18 16:19:51 +02:00
Stephen Abello
e8c9255e0a N°3191 - Fix icon padding on object summary when no icon 2023-04-18 15:50:14 +02:00
Stephen Abello
41b4ef357f Do not render script methods when no script present, adcd0eb9 followup 2023-04-18 15:46:33 +02:00
Molkobain
51617113eb N°6204 - Fix REST/JSON API crash when using JSON-P and iBackofficeDictXXX interfaces 2023-04-18 15:33:57 +02:00
Pierre Goiffon
d46d1db8e4 💡 PHPDoc for ormCustomFieldsValue 2023-04-18 15:33:18 +02:00
Benjamin Dalsass
acf26754ef N°5958 - 1:n - edit_mode=ADD_ONLY - Location -> Person 2023-04-18 15:30:58 +02:00
Molkobain
425fb14188 Merge remote-tracking branch 'origin/support/3.0' into develop 2023-04-18 14:44:17 +02:00
Molkobain
06eb79d4f4 N°6204 - Fix REST/JSON API crash when using JSON-P and iBackofficeDictXXX interfaces 2023-04-18 14:42:36 +02:00
Pierre Goiffon
b9833f26e8 Fix request template regression : after selecting template no form displayed anymore
Caused by invalid returned JSON
This bug was introduced by adcd0eb9
2023-04-18 12:19:43 +02:00
Pierre Goiffon
3e454de77e N°1150 AtributeCustomFields : GetForJSON is now delegated to the handler
Method was always returning null before
2023-04-18 11:44:00 +02:00
Stephen Abello
adcd0eb9b0 Fix some js scripts being loaded before their dependencies in ajax calls 2023-04-18 10:38:29 +02:00
Pierre Goiffon
de32b96a83 💡 N°6172 PHPDoc typo 2023-04-18 08:48:53 +02:00
Pierre Goiffon
ebc5631d4e N°6172 \utils::DoPostRequest : crash if curl php ext not available
First commit was made in 3fc663a but I forgot to throw an exception
2023-04-17 17:09:33 +02:00
Molkobain
7b7c6d1136 N°5888 - Add move cursor on modals' header 2023-04-17 16:14:31 +02:00
Stephen Abello
cf74431543 N°3191 - Introduce summary cards for objects hyperlinks (#476) 2023-04-17 12:20:49 +02:00
Benjamin Dalsass
e645e9b006 N°4148 - LinkedSet 1:n in place edition, created then removed object are still created 2023-04-17 07:55:05 +02:00
Benjamin Dalsass
a70c3d7f92 N°5350 - 1:n in place edition, deleted object re-appears 2023-04-17 07:55:05 +02:00
vdumas
752b74c0ce N°6159 - Mail notification default search - remove importance 2023-04-14 17:19:48 +02:00
vdumas
95632f40d4 N°5972 - User details: improve tooltips in EN and FR 2023-04-14 11:42:34 +02:00
Stephen Abello
ff62b5fc0b N°5888 - Use spinner for modal template and regular loader 2023-04-14 11:27:27 +02:00
Stephen Abello
16e27ef189 Add features to Spinner block 2023-04-14 11:27:27 +02:00
vdumas
95f0e97b5e N°5972 - User details: align LDAP and external users with fieldsets 2023-04-13 18:16:34 +02:00
Stephen Abello
92e044fdf4 N°5888 - Handle modal sizes using CSS instead of JS 2023-04-13 15:30:53 +02:00
Stephen Abello
68817c70ee N°5888 - Add missing dict entry for success modal 2023-04-13 15:29:25 +02:00
Stephen Abello
c7e3dd74a5 N°5957 - Fix typo in French dictionaries 2023-04-13 14:33:16 +02:00
vdumas
a86a67e404 N°5972 - User creation- Enhance details display, search, FR dico 2023-04-13 13:10:01 +02:00
Stephen Abello
b245a5c0c1 N°5888 - Add robustness when a modal is closed as resize observer is still here 2023-04-13 11:38:05 +02:00
Anne-Catherine
4e95ca3c7b N°541 - Dashlets: Improve readability when to much labels (pie chart) or too long labels (bar chart) (#452)
* N°541 - Dashlets: Improve readability when to much labels (pie chart) or too long labels (bar chart)
2023-04-13 11:23:20 +02:00
Stephen Abello
aeb8229e9e N°5888 - Replace modal resize event listener by a resize observer as it's more reactive 2023-04-13 11:16:19 +02:00
Pierre Goiffon
c9af546867 💡 AttributeDefinition : fix phpdoc for GetForJSON and FromJSONToValue methods 2023-04-13 10:56:45 +02:00
Stephen Abello
615a38cfe3 N°5981 - Change links Add button tooltip dict entry / value 2023-04-13 10:41:49 +02:00
vdumas
4bab32264b N°5972 - Allow User creation in Pop-up - Add Profile description 2023-04-12 18:46:04 +02:00
vdumas
0e8fd1eead N°6159 - Enhancement on mail notification screen (2) 2023-04-12 18:20:36 +02:00
Stephen Abello
564c9388da N°6176 - Allow to deny creation on linkset tagset widget 2023-04-12 15:31:05 +02:00
Benjamin Dalsass
1960f370e9 Merge branch 'develop' of https://github.com/Combodo/iTop into develop 2023-04-12 14:39:09 +02:00
Benjamin Dalsass
284ede77db N°6153 - n:n - Polish edition in Tagset
Object option renderer conditional additional fields
2023-04-12 14:26:22 +02:00
vdumas
84b1eca6c8 N°6159 - Enhancement on mail notification screen 2023-04-12 14:16:46 +02:00
Stephen Abello
1be7e8526e N°5981 - Change Add button label/tooltip on links 2023-04-12 11:23:31 +02:00
Stephen Abello
478d1b41be N°5981 - Change create button label/tooltip on direct links 2023-04-12 11:07:51 +02:00
Stephen Abello
38dd095e40 N°5981 - Remove exclamation mark from delete buttons 2023-04-12 11:07:51 +02:00
Pierre Goiffon
45f792d5ae Merge remote-tracking branch 'origin/support/3.0' into develop 2023-04-12 10:22:52 +02:00
Pierre Goiffon
4c626d0782 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	core/log.class.inc.php
2023-04-12 10:22:34 +02:00
Pierre Goiffon
1114ed9562 N°6099 DeadLockLog : improve documentation and use existing constants (#441) 2023-04-12 10:21:34 +02:00
vdumas
169d5a81ed N°6169 - Prevent Profile creation from Link object 2023-04-12 09:20:36 +02:00
vdumas
4d33f6d165 French dictionary typo 2023-04-12 09:20:36 +02:00
Benjamin Dalsass
288641646c N°6147 - Filter list : tooltip and new action 2023-04-12 07:53:12 +02:00
Benjamin Dalsass
544ee695be N°5957 - actions rows order and color (use constant) 2023-04-12 07:44:59 +02:00
vdumas
ac245f6ff7 N°5915 - Remove Action using tagset widget on Trigger (keep only the opposite) 2023-04-11 19:32:12 +02:00
vdumas
63447ce5c8 N°5972 - Allow User creation in pop-up 2023-04-11 19:16:47 +02:00
Pierre Goiffon
3fc663a2c6 N°6172 \utils::DoPostRequest : remove fallback when curl not present
The CURL php extension is mandatory now (see a547358be4)
Note a fix was proposed in the fallback in #459
2023-04-11 18:22:38 +02:00
Pierre Goiffon
9a4307c518 Merge remote-tracking branch 'origin/support/3.0' into develop 2023-04-11 18:10:20 +02:00
Pierre Goiffon
1ddfaf0b61 N°6100 ObjectFormManager::OnSubmit : better log for DBWrite exceptions (#353)
Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2023-04-11 18:09:45 +02:00
jbostoen
cf8d675cb2 🐛 N°6174 Fix attachments to host objects without org_id can not be downloaded from the portal (#303) 2023-04-11 18:04:48 +02:00
Pierre Goiffon
924b28fd4c Merge remote-tracking branch 'origin/support/3.0' into develop 2023-04-11 17:56:12 +02:00
Pierre Goiffon
c6fb03547f Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-04-11 17:55:26 +02:00
Pierre Goiffon
34368fe795 N°6173 \HTMLSanitizer::Sanitize : Fix handling only svg_sanitizer (#450) 2023-04-11 17:52:41 +02:00
Stephen Abello
b7b578eee5 N°5888 - Avoid modals being larger than window, when a modal is resized, recenter it 2023-04-11 15:35:12 +02:00
Pierre Goiffon
c6d9fceff9 💡 N°4756 more info in the deprecated tag 2023-04-11 14:43:29 +02:00
Stephen Abello
a73f0ba362 N°6164 - Fix linkset tagset widget dropdown in modal 2023-04-11 14:41:28 +02:00
Benjamin Dalsass
31f163c8ca N°6006 - Linksetindirect export fails
Remove unnecessary escape html handled by twig
2023-04-11 11:40:41 +02:00
Benjamin Dalsass
a2d5e37714 N°5957 - actions rows order and color 2023-04-11 09:59:26 +02:00
Pierre Goiffon
db46298cb8 Merge branch 'support/3.0.3' into support/3.0 2023-04-11 09:19:56 +02:00
Pierre Goiffon
064e8ee511 Fix AttributeDefinitionTest parse error in PHP 7.2
(cherry picked from commit 307edd3f7a)
2023-04-11 09:19:31 +02:00
Stephen Abello
adb80b8f9a N°6153 - Add complementary attributes on linkset set tooltip 2023-04-07 11:13:15 +02:00
Eric Espie
57dce9a0f7 Merge remote-tracking branch 'origin/support/3.0' into develop 2023-04-07 09:46:55 +02:00
Eric Espie
424e7b37d7 Merge branch 'support/3.0.3' into support/3.0 2023-04-07 09:44:38 +02:00
Eric Espie
ca7aa482ab N°6085 - UNION is not supported in UserRightsProfile::GetSelectFilter
(cherry picked from commit 8ffddeff01)
2023-04-07 09:43:50 +02:00
Eric Espie
368b3f4ef7 N°6085 - UNION is not supported in UserRightsProfile::GetSelectFilter
(cherry picked from commit 21d37fb237)
2023-04-07 09:43:40 +02:00
Molkobain
dc8e6f314a N°6085 - UNION is not supported in UserRightsProfile::GetSelectFilter
(cherry picked from commit fca4006811)
2023-04-07 09:43:25 +02:00
Stephen Abello
51c76841ec N°6153 - Prevent Link set set items from wrapping and force them to truncate with ellipsis 2023-04-06 15:39:14 +02:00
Stephen Abello
4d2107f596 N°6153 - Prevent Link set set items from wrapping and force them to truncate with ellipsis 2023-04-06 15:35:20 +02:00
Molkobain
7df0526bda 💚 LinkedSet: Fix rename namespace not propagated everywhere in e6f1a872 2023-04-06 14:39:27 +02:00
Denis
d28b099401 N°6132 - Introduce API to disable tabs dynamically (#470)
* N°6132 - disable tabs dynamically

* Apply suggestions from code review

JS cleanup after review

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>

* Disable tabs by ID instead of index
Disabled tabs are visible (with a 'not-allowed' cursor)  instead of being hidden from the extra tabs menu.

* Typo!

* Update code to match conventions

* N°6132 - Fix show/hide of disabled tabs as it collided with internal methods

---------

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2023-04-06 12:12:42 +02:00
Eric Espie
2907efde4b N°6151 - Portal rules: source_oql containing UNION not allowed 2023-04-06 11:07:05 +02:00
denis.flaven@combodo.com
001194835f Config file may not exist during unattended setup/backup 2023-04-06 10:50:47 +02:00
Molkobain
e6f1a87234 💚 LinkedSet: Attempt to fix renaming 2023-04-05 19:24:42 +02:00
Molkobain
7ad3b07e89 LinkedSet: Rename classes / files to match conventions 2023-04-05 19:10:52 +02:00
Eric Espie
aafd05afd1 Merge remote-tracking branch 'origin/support/3.0' into develop 2023-04-05 18:00:46 +02:00
Molkobain
daa4cc3a5e N°2889 - Add tooltip on download counter 2023-04-05 17:46:09 +02:00
Molkobain
d47e3ecda4 N°2889 - Fix counter not updated when downloaded by a user that don't have write permission on the host object 2023-04-05 17:46:09 +02:00
Eric Espie
8ffddeff01 N°6085 - UNION is not supported in UserRightsProfile::GetSelectFilter 2023-04-05 17:42:26 +02:00
Eric Espie
21d37fb237 N°6085 - UNION is not supported in UserRightsProfile::GetSelectFilter 2023-04-05 17:07:23 +02:00
Molkobain
fca4006811 N°6085 - UNION is not supported in UserRightsProfile::GetSelectFilter 2023-04-05 15:58:31 +02:00
Eric Espie
f91259695a Move Event service from sources/Application/Service to sources/Service 2023-04-05 10:48:20 +02:00
Eric Espie
1c2cf116da N°6085 - UNION is not supported in UserRightsProfile::GetSelectFilter - Add unit tests 2023-04-05 10:37:03 +02:00
Pierre Goiffon
fe670fa1dd Fix freeze after choosing request template form to display
When having multiple request template for the same service, you have to choose first which template to fill.
After choosing from the drop down the form was reset and nothing displayed, with an error server side.

Regression introduced in 82d2ac66
2023-04-04 18:33:37 +02:00
Pierre Goiffon
5fbd49d386 💡 type hinting 2023-04-04 18:10:04 +02:00
Pierre Goiffon
d4af51e0cc N°6142 Remove new "filter this list" link from search_form and search_oql pages
search_oql is legacy and isn't used anymore,  but adding the ContextTag anyway
2023-04-04 15:19:26 +02:00
denis.flaven@combodo.com
955aefc05b Ignore non-existing files. 2023-04-04 14:26:31 +02:00
Benjamin Dalsass
dcc524c687 Revert "Add ResourceLogMenu in application data model"
This reverts commit 5b3e71d3c1.
2023-04-03 14:15:18 +02:00
denis.flaven@combodo.com
034ca26d01 Do NOT backup unsafe files. 2023-04-03 11:54:01 +02:00
Benjamin Dalsass
5b3e71d3c1 Add ResourceLogMenu in application data model 2023-04-03 11:34:22 +02:00
Pierre Goiffon
81d1c4a37e N°6042 Fix invalid test in utils::IsNotNullOrEmptyString
Introduced in 7fa06832
Thanks Molkobain and Hipska !
2023-04-03 09:50:15 +02:00
Molkobain
80cf094c02 N°3795 - Improve JSDoc 2023-03-31 20:16:26 +02:00
Molkobain
4651b09f13 Merge remote-tracking branch 'origin/support/3.0' into develop 2023-03-31 18:04:36 +02:00
Molkobain
c3b00939dd N°6140 - Add HTML metadata on custom fields to be aligned with regular fields 2023-03-31 17:58:09 +02:00
Pierre Goiffon
82ddc64e44 N°6042 Field init : use existing method in AttDef
Thanks Molkobain for the review in 0c70bd9
2023-03-31 16:58:40 +02:00
Pierre Goiffon
7fa06832b2 N°6042 Use utils::IsNotNullOrEmptyString
Thanks Molkobain for the review in 0c70bd9
2023-03-31 11:55:08 +02:00
Stephen Abello
d415db16d3 N°5976 - Correctly pass down context parameters when selecting a subclass 2023-03-31 11:38:05 +02:00
Stephen Abello
2758aaaa89 N°5976 - Add modal creation for linksets displayed with tagset-like widget (#469) 2023-03-31 10:32:07 +02:00
Stephen Abello
a80506b8e8 N°3795 - Replace JS alert native calls with centralized informative modals (#456)
* N°3795 - Replace JS alert native calls with centralized informative modals

* N°3795 - Add constants for severity

* N°3795 - Fix success severity value wrongfully set to 'error'

* N°3795 - Add constants for severity

* N°3795 - Simplify API consumption

* N°3795 - Allows to pass more options when consuming API
2023-03-31 10:24:49 +02:00
Pierre Goiffon
383b5623b1 Merge remote-tracking branch 'origin/support/3.0' into develop 2023-03-31 09:12:07 +02:00
Molkobain
75df33f606 N°6139 - Add HTML metadata on activity panel to be aligned with regular fields 2023-03-30 18:39:09 +02:00
Pierre Goiffon
ca7a920498 💡 N°5906 N°4756 add missing @since pdpdoc tags 2023-03-30 15:28:33 +02:00
denis.flaven@combodo.com
d03bd706e2 Support of extra files (configurable) in the backup. 2023-03-29 16:53:38 +02:00
Molkobain
c975affecf Merge remote-tracking branch 'origin/support/3.0' into develop 2023-03-29 16:36:20 +02:00
Tarjányi Csaba
17801d044f N°6121 Update HU translations (#471) 2023-03-29 09:27:08 +02:00
Pierre Goiffon
a2763df627 📝 Version history : add 3.0.3 2023-03-28 12:26:29 +02:00
Pierre Goiffon
cdb655f69f N°6042 Delegate history creation (CMDBChangeOp instances) to the new AttributeDefinition::RecordAttChange method 2023-03-28 12:08:29 +02:00
Pierre Goiffon
3e6ab57094 N°6042 Console : save values of AttDef with the FormField edit class
For this kinf of AttDef we are calling a new AttributeDefinition::ReadValueFromPostedForm method
2023-03-28 12:08:12 +02:00
Pierre Goiffon
0c70bd9f12 N°6042 Console : now handles AttDef with FormField edit class
Those fields will use FormField / Form / FieldRenderer mechanism (previously only implemented in the portal and custom fields)
2023-03-28 12:07:47 +02:00
Pierre Goiffon
639caaafa9 🎨 Fix formatting 2023-03-28 12:02:59 +02:00
Pierre Goiffon
82d2ac66d6 🎨 Fix argument of \ormCustomFieldsValue::GetForm 2023-03-28 12:02:59 +02:00
Molkobain
78d8829d65 N°6131 - Improve robustness of tooltips helper when no DOM element passed to CombodoTooltip::InitTooltipFromMarkup() 2023-03-27 18:04:01 +02:00
Molkobain
04a80fcd39 N°6055 - Fix undefined offset error in synchro_exec.php (#465)
Co-authored-by: odain <olivier.dain@combodo.com>
2023-03-24 22:25:58 +01:00
Tarjányi Csaba
1ca1c2b06a N°6121 - Update hungarian translations thanks to @tacsaby (#461)
Grammatical corrections
2023-03-22 17:14:31 +01:00
Tarjányi Csaba
8dc499479a N°6121 - Update hungarian translations thanks to @tacsaby (#463) 2023-03-22 17:06:38 +01:00
Pierre Goiffon
43ecac7e6a N°6119 Fix fresh install crashing on profile creation
Regression brought by fc97491 / #453
2023-03-22 11:19:29 +01:00
Pierre Goiffon
1fc1746e6d 💡 N°6042 iFieldRendererMappingsExtension is experimental 2023-03-22 10:16:32 +01:00
Pierre Goiffon
cd8dd59641 Merge remote-tracking branch 'origin/support/3.0' into develop 2023-03-21 09:24:32 +01:00
Pierre Goiffon
307edd3f7a Fix AttributeDefinitionTest parse error in PHP 7.2 2023-03-21 09:03:54 +01:00
Benjamin Dalsass
4a9c3d3582 🐛 N°6043 - fix linkset attribute default handler impact 2023-03-21 07:55:22 +01:00
Pierre Goiffon
d8d8756623 N°6043 - Booking: Add prerequisites in iTop core - Attribute extensibility 2023-03-20 14:33:02 +01:00
Molkobain
fa17a7db2d 💚 Revert year bump change on test reference files 2023-03-18 19:10:21 +01:00
Molkobain
c767ebe989 📝 Copyright year bump 2023-03-17 18:28:47 +01:00
Molkobain
5fd998819e Merge remote-tracking branch 'origin/support/3.0' into develop 2023-03-17 15:52:41 +01:00
Molkobain
6bf906a72f Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	js/dashboard.js
2023-03-17 15:44:23 +01:00
Molkobain
0f016d7511 N°6112 - Dashboard: Improve robustness by trimming dashlet ID returned by server 2023-03-17 15:37:57 +01:00
Pierre Goiffon
53fbbcb536 💡 \utils::GetClassesForInterface Add comment about return array ordering 2023-03-17 12:08:48 +01:00
Molkobain
673eca38e4 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	approot.inc.php
#	datamodels/2.x/authent-cas/module.authent-cas.php
#	datamodels/2.x/authent-external/module.authent-external.php
#	datamodels/2.x/authent-ldap/module.authent-ldap.php
#	datamodels/2.x/authent-local/module.authent-local.php
#	datamodels/2.x/combodo-backoffice-darkmoon-theme/module.combodo-backoffice-darkmoon-theme.php
#	datamodels/2.x/combodo-db-tools/module.combodo-db-tools.php
#	datamodels/2.x/itop-attachments/module.itop-attachments.php
#	datamodels/2.x/itop-backup/module.itop-backup.php
#	datamodels/2.x/itop-bridge-cmdb-ticket/module.itop-bridge-cmdb-ticket.php
#	datamodels/2.x/itop-bridge-virtualization-storage/module.itop-bridge-virtualization-storage.php
#	datamodels/2.x/itop-change-mgmt-itil/module.itop-change-mgmt-itil.php
#	datamodels/2.x/itop-change-mgmt/module.itop-change-mgmt.php
#	datamodels/2.x/itop-config-mgmt/module.itop-config-mgmt.php
#	datamodels/2.x/itop-config/module.itop-config.php
#	datamodels/2.x/itop-core-update/module.itop-core-update.php
#	datamodels/2.x/itop-datacenter-mgmt/module.itop-datacenter-mgmt.php
#	datamodels/2.x/itop-endusers-devices/module.itop-endusers-devices.php
#	datamodels/2.x/itop-faq-light/module.itop-faq-light.php
#	datamodels/2.x/itop-files-information/module.itop-files-information.php
#	datamodels/2.x/itop-full-itil/module.itop-full-itil.php
#	datamodels/2.x/itop-hub-connector/module.itop-hub-connector.php
#	datamodels/2.x/itop-incident-mgmt-itil/module.itop-incident-mgmt-itil.php
#	datamodels/2.x/itop-knownerror-mgmt/module.itop-knownerror-mgmt.php
#	datamodels/2.x/itop-oauth-client/module.itop-oauth-client.php
#	datamodels/2.x/itop-portal-base/module.itop-portal-base.php
#	datamodels/2.x/itop-portal/module.itop-portal.php
#	datamodels/2.x/itop-problem-mgmt/module.itop-problem-mgmt.php
#	datamodels/2.x/itop-profiles-itil/module.itop-profiles-itil.php
#	datamodels/2.x/itop-request-mgmt-itil/module.itop-request-mgmt-itil.php
#	datamodels/2.x/itop-request-mgmt/module.itop-request-mgmt.php
#	datamodels/2.x/itop-service-mgmt-provider/module.itop-service-mgmt-provider.php
#	datamodels/2.x/itop-service-mgmt/module.itop-service-mgmt.php
#	datamodels/2.x/itop-sla-computation/module.itop-sla-computation.php
#	datamodels/2.x/itop-storage-mgmt/module.itop-storage-mgmt.php
#	datamodels/2.x/itop-structure/module.itop-structure.php
#	datamodels/2.x/itop-themes-compat/module.itop-themes-compat.php
#	datamodels/2.x/itop-tickets/module.itop-tickets.php
#	datamodels/2.x/itop-virtualization-mgmt/module.itop-virtualization-mgmt.php
#	datamodels/2.x/itop-welcome-itil/module.itop-welcome-itil.php
#	datamodels/2.x/version.xml
#	setup/licenses/community-licenses.xml
2023-03-16 14:12:33 +01:00
Molkobain
2ca00caf49 N°6040 - Improve consistency of methods' visibility / arrangement 2023-03-16 14:08:32 +01:00
Molkobain
47399f083c N°6041 - Improve readability of the API 2023-03-15 11:02:05 +01:00
Molkobain
482261845c N°6041 - Introduce dynamic register of fields and renderers in Console form renderers 2023-03-15 11:02:05 +01:00
Molkobain
9023e338a5 N°6041 - Introduce dynamic register of fields and renderers in Bootstrap form renderers 2023-03-15 11:02:05 +01:00
Molkobain
7d01030d7c N°6041 - Introduce new \iFieldRendererMapping interface to register mapping between Field / FormRenderer (console, bootstrap, ...) / FieldRenderer 2023-03-15 11:02:05 +01:00
Molkobain
59586ad001 N°2889 - Improve PHPDoc and unit test cases 2023-03-14 19:16:19 +01:00
Molkobain
d75805fb5e N°2889 - Add placeholders for file data base64-encoded (simplifies many webhook calls) 2023-03-14 19:16:19 +01:00
Molkobain
0701f92143 N°2889 - MetaModel::ApplyParams now support placeholders with an arrow for non-object value (eg. $foo->bar$) 2023-03-14 19:16:19 +01:00
Molkobain
788a88fdc6 N°2889 - Fix attachment preview being handled as a download instead of a preview 2023-03-14 19:16:19 +01:00
Molkobain
0c8717f1f6 N°2889 - Adapt triggers to the new event system 2023-03-14 19:16:19 +01:00
Molkobain
d649d48153 N°2889 - Add triggers on file attributes / attachments downloads 2023-03-14 19:16:19 +01:00
Molkobain
0aa0229170 N°2889 - Add counter on file attributes / attachments downloads 2023-03-14 19:16:19 +01:00
Thomas Casteleyn
fc97491708 N°6105 - Cleanup unnecessary use of dirname(__FILE__) (#453) 2023-03-14 18:51:01 +01:00
Vladimir Kunin
799b6a9725 N°6104 - Fix exception thrown if 'item_class' has 'org_id' attcode mapped to another attcode (#311) 2023-03-14 18:44:16 +01:00
Pierre Goiffon
c3816c9d0b run_query : replace JQuery.hotkeys by standard keys detection (#359)
Use same technique as the one in #345
2023-03-14 17:54:09 +01:00
Pierre Goiffon
d782987f50 README : fix requirements link 2023-03-14 17:08:55 +01:00
Molkobain
b1fd7716f6 Fix community-licenses.xml 2023-03-14 12:08:54 +01:00
Molkobain
ac7abb3049 Prepare iTop 3.0.3 release
* Increase constants version to 3.0.3
* Increase modules version to 3.0.3
* Update licenses file
2023-03-14 09:55:18 +01:00
Pierre Goiffon
5d20b76476 N°5893 Fix \TriggerOnObject::LogException for PHPUnit 9
Replaced assertContains by assertStringContainsString
2023-03-10 16:50:57 +01:00
Pierre Goiffon
4548bba96a Merge remote-tracking branch 'origin/support/3.0' into develop 2023-03-10 16:25:58 +01:00
Pierre Goiffon
3689f3d026 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	tests/php-unit-tests/unitary-tests/core/TriggerTest.php
2023-03-10 16:24:17 +01:00
Pierre Goiffon
5ee6223434 N°5893 Add test for \TriggerOnObject::LogException 2023-03-10 16:04:55 +01:00
Eric Espie
ae5f4cc30f N°6040 - Booking: Add prerequisites in iTop core - Compilation extensibility - rework of properties 2023-03-10 11:48:22 +01:00
Pierre Goiffon
69beb05a55 N°6077 - Attachment class: now creation_date and user_id are init by default (#339)
Those fields were empty in case the Attachment instance was created in an extension (Mail to Ticket for example).

Now the values are set in the object DBInsertNoReload method : 
* creation_date : current date
* user_id : current user

The previous values set for console and portal are removed.

A fix for Mail to Ticket extension is also planned : N°4081.
2023-03-08 16:34:32 +01:00
Molkobain
559f5b4bdb Merge remote-tracking branch 'origin/support/3.0' into develop 2023-03-08 11:04:24 +01:00
Molkobain
4bfc1747b7 N°5784 - Fix AttributeOneWayPassword::HasAValue() implementation 2023-03-08 10:54:55 +01:00
Molkobain
15f32bf843 N°5784 - Fix ormPassword::IsEmpty() method 2023-03-08 10:04:59 +01:00
Molkobain
0ba386c0bc N°5784 - Rename unit test file to match convention 2023-03-08 09:47:42 +01:00
Molkobain
0c3cdb202b N°5784 - Fix ormPassword::IsEmpty() using the wrong class property 2023-03-08 09:36:52 +01:00
Molkobain
03ac3d4e7c N°5784 - Fix unit test for PHP 8.2 2023-03-08 09:34:35 +01:00
acognet
6510dc5c51 N°3805 - Collectors not working on iTop 3.0 (cherry picked from 4d7bac89f3 on origin/develop) 2023-03-07 22:58:38 +01:00
Molkobain
01faf39372 Tests: Force Synchro unit tests not to verify SSL certificate as most dev / test envs are self-signed 2023-03-07 22:50:29 +01:00
Molkobain
ec643d1975 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	templates/pages/backoffice/webpage/layout.html.twig
2023-03-07 22:10:47 +01:00
Molkobain
176e373d6c N°5530 - Fix list of impacted elements (Impact Analysis) not display correctly due to mixup in async JS files loading 2023-03-07 22:03:44 +01:00
Molkobain
19db527bf7 Merge remote-tracking branch 'origin/support/3.0' into develop 2023-03-07 10:25:15 +01:00
Molkobain
a34274b883 N°5784 - PHP 8.0: Fix mandatory attribute not visible in transition form due to bad emptiness test (#379)
* N°5784 - PHP 8.0: Fix mandatory attribute not visible in transition form due to bad emptiness test

* N°5784 - Rework AttributeDefinition::HasAValue() implementation after code review

* N°5784 - Add unit test
2023-03-07 10:16:14 +01:00
Eric Espie
4bd66ac0fe N°6040 - Booking: Add prerequisites in iTop core - Compilation extensibility for new attributes 2023-03-06 16:46:00 +01:00
Benjamin Dalsass
5da76096cf 🐛 Add missing data attributes in select template 2023-03-06 15:44:09 +01:00
bdalsass
baafb97bdd N°5993 - Add purge mechanism to log system (#447)
* N°5993 - Add purge mechanism to log system

* Update core/config.class.inc.php

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>

* Update core/log.class.inc.php

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>

* Update core/log.class.inc.php

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>

* Update core/log.class.inc.php

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>

* Update core/log.class.inc.php

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>

* Namespace the log purge config parameters

---------

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2023-03-06 15:25:26 +01:00
Pierre Goiffon
08a0c7ec88 Merge remote-tracking branch 'origin/support/3.0' into develop 2023-03-06 14:57:11 +01:00
Pierre Goiffon
03fb78c38c N°6068 Setup : fix no formatting on error messages 2023-03-06 14:23:21 +01:00
Stephen Abello
c9e656f7a0 N°4460 - Fix configuration editor selected line contrast in Darkmoon 2023-03-06 11:40:32 +01:00
Pierre Goiffon
2ccd1a667d Merge remote-tracking branch 'origin/support/3.0' into develop 2023-03-06 11:32:48 +01:00
Pierre Goiffon
976566ec71 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	setup/setuppage.class.inc.php
2023-03-06 11:26:33 +01:00
Pierre Goiffon
d908827787 N°6016 Setup Wizard : fix MissingDependencyException message logged as html in setup.log
Was the case since e831d66b (commit for parent bug N°5090)
Now we are getting the text version in the log (and still the html one on screen)

The unattended install isn't concerned : it just prints back CheckResult returned by \SetupUtils::CheckSelectedModules, with the exception text message ($e->getMessage())
2023-03-06 11:24:46 +01:00
Benjamin Dalsass
7ae86a8bf3 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	css/backoffice/pages/_csv-import.scss
#	pages/ajax.render.php
2023-03-03 14:26:21 +01:00
Denis
93c0b98eb7 N°5922 - Fix plus button semantic on ext. key widget (#448)
* N°5922 - Enhance plus button on extkeywidget

* Properly reset the target class when closing the dialog

* Make icon buttons as actual clickable links for BeHat

* Apply suggestions from code review

Review by Guillaume. Thanks!

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2023-03-03 14:20:38 +01:00
Stephen Abello
98ab5aa1a4 N°4460 - Fix menu drawer color in Darkmoon 2023-03-03 10:59:49 +01:00
Stephen Abello
f117a2912b N°4460 - Fix minor contrast issue in Darkmoon 2023-03-03 10:50:02 +01:00
Stephen Abello
6594072617 N°4460 - Fix import contrast in Darkmoon 2023-03-03 10:43:39 +01:00
Stephen Abello
6bed56b34e Fix csv import SCSS file 2023-03-03 10:43:17 +01:00
Stephen Abello
94e8151519 N°4460 - Fix popover menu icons and separators style in Darkmoon 2023-03-03 10:24:52 +01:00
Stephen Abello
75b350f638 N°4460 - Fix ace editor style in Darkmoon 2023-03-03 10:06:47 +01:00
Stephen Abello
14cd60dd17 Fix hardcoded white color in markup 2023-03-02 16:36:07 +01:00
Stephen Abello
08f1e5a041 N°4460 - Fix configure this list contrast in Darkmoon 2023-03-02 16:36:07 +01:00
Stephen Abello
4c117d1a33 Fix hardcoded orange in backoffice style 2023-03-02 16:36:07 +01:00
Stephen Abello
f91dfbcf23 N°4460 - Fix datamodel viewer autocomplete contrast in Darkmoon 2023-03-02 16:36:07 +01:00
Stephen Abello
58497b380b Allow to overload datamodel viewer autocomplete style 2023-03-02 16:36:07 +01:00
Stephen Abello
03bff9f2c2 N°4460 - Fix export header contrast in Darkmoon 2023-03-02 16:36:07 +01:00
Stephen Abello
a34d3f91be Fix tabular fields selector SCSS variables 2023-03-02 16:36:06 +01:00
Stephen Abello
05753f174a N°4460 - Fix "load more entries" activity panel buttons contrast in Darkmoon 2023-03-02 16:36:06 +01:00
Stephen Abello
d0c89343b4 N°4460 - Fix skeletons placeholders contrast issue in Darkmoon 2023-03-02 16:36:06 +01:00
Stephen Abello
3021234895 N°4460 - Allow to customize skeleton placeholders colors using CSS3 variables 2023-03-02 16:36:06 +01:00
Stephen Abello
bccdb1bc3a N°4460 - Fix <code> contrast in Darkmoon 2023-03-02 16:36:06 +01:00
Molkobain
a0483738bc Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	core/dbobject.class.php
#	core/trigger.class.inc.php
2023-02-28 21:54:40 +01:00
Molkobain
143410f4cd Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	core/dbobject.class.php
2023-02-28 15:20:07 +01:00
Pierre Goiffon
4cea418517 N°5893 - Log triggers exception in CRUD stack (#390)
* Log TriggerOnObjectCreate crash

* Log TriggerOnObjectUpdate crash

* Log TriggerOnObjectDelete crash

* Factorize TriggerOnObject log

* \TriggerOnObject::LogException : do not replace not persisted yet object keys
2023-02-28 15:13:28 +01:00
Molkobain
759b1825fe N°5918 - Fix activity panel disappearing when DoCheckToWrite fails 2023-02-28 13:33:47 +01:00
acognet
ba21687e5f Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	core/bulkchange.class.inc.php
2023-02-28 12:34:47 +01:00
Anne-Catherine
370c1345d9 N°2916 - Import of IPv6 addresses fails when reconciliation is done on the IP (#382) 2023-02-28 12:08:32 +01:00
acognet
948cbb1446 Merge remote-tracking branch 'origin/support/3.0' into develop 2023-02-27 16:44:16 +01:00
Anne-Catherine
af8f06c8c3 N°5603 - Autocomplete fails with error for an external key pointing to an abstract class with no friendlyname (#375) 2023-02-27 16:18:36 +01:00
Pierre Goiffon
099a045852 Merge remote-tracking branch 'origin/support/3.0' into develop 2023-02-27 15:20:12 +01:00
Pierre Goiffon
bfe55183d0 N°6023 Fix error log
Thanks @Hipska !
2023-02-27 15:09:49 +01:00
Eric Espie
cf5fd3e2a8 N°5906 - CRUD Event - 🎨 rename event_listeners/listener XML nodes by event_listeners/event_listener 2023-02-27 11:23:55 +01:00
Eric Espie
bb62723114 N°5906 - CRUD Event - Fix listener launched twice and refactor calls to Tickets::UpdateImpactedItems() 2023-02-27 11:17:05 +01:00
Pierre Goiffon
937313c20e N°5906 - CRUD Event - Fix \DBObject::IsCrudStackEmpty not static 2023-02-27 11:17:05 +01:00
odain
939771aa15 N°6022 - Make synchro scripts work by http via token authentication with SYNCHRO scopes 2023-02-27 11:07:52 +01:00
Molkobain
70cbaeac7a Merge remote-tracking branch 'origin/support/3.0' into develop 2023-02-24 22:42:06 +01:00
Molkobain
b174e4cab3 N°4517 - PHP 8.1: Fix deprecated notice for null value passed to string parameter of native PHP functions 2023-02-24 22:40:17 +01:00
Molkobain
b1bd1e1677 PHPUnit: Migrate deprecated usages of assertFileNotExists() and assertRegExp() 2023-02-24 21:41:53 +01:00
Molkobain
029c01b13e Merge remote-tracking branch 'origin/support/3.0' into develop 2023-02-24 21:41:05 +01:00
Molkobain
61bd8b6bb4 N°4517 - PHP 8.1: Fix deprecated notice for null value passed to string parameter of native PHP functions 2023-02-24 21:40:10 +01:00
Pierre Goiffon
3a77423b38 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	tests/php-unit-tests/unitary-tests/application/utilsTest.php
2023-02-23 18:57:50 +01:00
Pierre Goiffon
5c9eb7fa38 N°6020 PHPUnit for \utils::EscapeHtml and EscapedHtmlDecode methods
This will ensure conversion back and forth is working as expected (in other words, parameters to the php functions stays the same in both methods)
2023-02-23 18:56:28 +01:00
Pierre Goiffon
4e8a1563f8 Merge remote-tracking branch 'origin/support/3.0' into develop 2023-02-23 18:38:39 +01:00
Pierre Goiffon
e960a4ad53 N°6023 Fix cannot load SVG files in AttributeImage since 3.0.0 (#449)
Caused by merge error in ddd6bf2

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2023-02-23 18:38:03 +01:00
Molkobain
1980cf4700 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	composer.json
#	composer.lock
#	lib/composer/autoload_files.php
#	lib/composer/autoload_real.php
#	lib/composer/autoload_static.php
#	lib/composer/installed.json
#	lib/composer/installed.php
#	lib/firebase/php-jwt/README.md
#	lib/firebase/php-jwt/src/CachedKeySet.php
#	lib/firebase/php-jwt/src/JWK.php
#	lib/firebase/php-jwt/src/JWT.php
2023-02-23 16:29:06 +01:00
Molkobain
7aad60ed1b Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	composer.json
#	composer.lock
#	lib/composer/autoload_classmap.php
#	lib/composer/autoload_static.php
#	lib/composer/installed.php
#	lib/composer/platform_check.php
#	setup/setuputils.class.inc.php
2023-02-23 16:21:56 +01:00
Molkobain
97965277c7 N°6017 - Update OAuth dependencies 2023-02-23 15:57:32 +01:00
Pierre Goiffon
758933ae74 N°5849 use the new \utils::EscapedHtmlDecode method 2023-02-23 15:19:36 +01:00
Pierre Goiffon
f6a4cdbd8f Merge remote-tracking branch 'origin/support/3.0' into develop 2023-02-23 15:18:06 +01:00
Pierre Goiffon
93aee5883b N°6020 New \utils::EscapedHtmlDecode method 2023-02-23 15:17:46 +01:00
Molkobain
18ed5ed526 N°6019 - Increase PHP min version to 7.1.3 to enable dependencies update 2023-02-23 14:53:48 +01:00
Pierre Goiffon
93291454e5 Merge remote-tracking branch 'origin/support/3.0' into develop 2023-02-23 12:05:55 +01:00
Pierre Goiffon
bbf6476570 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-02-23 12:05:38 +01:00
Pierre Goiffon
94c4f8c929 N°6016 MissingDependencyException : better log message (#355)
The error displayed on screen was already improved (see #280)
This commit improves the log message we can have for example by running unattended install.
2023-02-23 12:04:56 +01:00
Pierre Goiffon
5e6ed950cb ReOrder LogChannels const 2023-02-23 11:55:31 +01:00
Pierre Goiffon
8ab459dfbc Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	core/log.class.inc.php
2023-02-23 11:54:42 +01:00
Pierre Goiffon
d40cf7fe3b ReOrder LogChannels const 2023-02-23 11:52:19 +01:00
Pierre Goiffon
6997c0fd83 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	core/log.class.inc.php
2023-02-23 11:47:49 +01:00
Pierre Goiffon
822922df5c N°5588 - Improve PDF export robustness when AttributeImage dimensions cannot be determined (#350)
Can happen for example on SVG images
Now the export won't crash anymore, and we'll get a log (export channel, warning level) with  the object and attribute causing a problem as context

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2023-02-23 11:45:29 +01:00
Pierre Goiffon
d39ecb7406 Merge remote-tracking branch 'origin/support/3.0' into develop 2023-02-23 11:23:31 +01:00
Pierre Goiffon
cb2be0eccd N°5121 New AttributeURL validation use case
In comment as it isn't handled yet
2023-02-23 11:16:50 +01:00
Molkobain
26169111ed Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	css/backoffice/utils/helpers/_misc.scss
2023-02-23 11:05:54 +01:00
Pierre Goiffon
f55fc8d264 N°6014 Validation pattern for URL : now handles commas in params (#356)
Seen on PRTG URLs

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2023-02-23 10:59:38 +01:00
Molkobain
577f125a8d PHP 8.1: Fix trim() usage with a null value in Trigger 2023-02-23 10:40:29 +01:00
Molkobain
04269747b7 N°5920 - Increase delay before displaying tooltip 2023-02-23 10:17:30 +01:00
Molkobain
826fbe10c8 N°6002 - Explicitly add symfony/http-foundation and symfony/http-kernel to composer.json for easier lib update 2023-02-22 22:38:15 +01:00
Molkobain
ea2140258c N°5317 - Handle overlapping tables when table cells have fixed widths 2023-02-22 18:57:56 +01:00
Molkobain
d997e36de0 N°6002 - Update Symfony libs to 5.4.19 2023-02-22 18:19:56 +01:00
Molkobain
5ee603f2ba Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	datamodels/2.x/itop-portal-base/portal/src/Form/ObjectFormManager.php
2023-02-22 18:08:56 +01:00
Stephen Abello
31f2666941 Merge branch 'support/2.7' into support/3.0
# Conflicts:
#	js/wizardhelper.js
2023-02-22 15:46:13 +01:00
Stephen Abello
cac7e94a67 N°5729 - Fix disabled button in bulk update/transition when picking a value in a drop-down list 2023-02-22 15:42:20 +01:00
Pierre Goiffon
7925a5bd7e N°6013 Remove combodo-webhook-integration file
Will be pushed in the corresponding module repo
2023-02-22 15:28:26 +01:00
Molkobain
cd72eee6dd N°6013 - Update hungarian translations thanks to @tacsaby 2023-02-22 14:47:10 +01:00
Stephen Abello
da02a05fa3 Merge branch 'support/2.7' into support/3.0 2023-02-22 10:18:38 +01:00
Stephen Abello
6d019615d0 N°5865 - Restore DoCheckToWrite error messages in portal 2023-02-22 10:17:34 +01:00
BenGrenoble
d3a5bb723f N°5968 - Add structural data for Brand, OSFamily and OSVersion 2023-02-22 10:15:51 +01:00
BenGrenoble
a37dea9cc2 N°4577 - Move service dependencies from "itop-bridge-cmdb-ticket" to another module
Move Document Services_list and Document Contracts_list to the bridge cmdb-services
2023-02-22 09:24:24 +01:00
Molkobain
0c962d7e32 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	datamodels/2.x/itop-bridge-cmdb-ticket/dictionaries/cs.dict.itop-bridge-cmdb-ticket.php
#	datamodels/2.x/itop-bridge-cmdb-ticket/dictionaries/da.dict.itop-bridge-cmdb-ticket.php
#	datamodels/2.x/itop-bridge-cmdb-ticket/dictionaries/de.dict.itop-bridge-cmdb-ticket.php
#	datamodels/2.x/itop-bridge-cmdb-ticket/dictionaries/fr.dict.itop-bridge-cmdb-ticket.php
#	datamodels/2.x/itop-bridge-cmdb-ticket/dictionaries/ja.dict.itop-bridge-cmdb-ticket.php
#	datamodels/2.x/itop-bridge-cmdb-ticket/dictionaries/sk.dict.itop-bridge-cmdb-ticket.php
#	datamodels/2.x/itop-config-mgmt/dictionaries/hu.dict.itop-config-mgmt.php
#	datamodels/2.x/itop-problem-mgmt/dictionaries/hu.dict.itop-problem-mgmt.php
#	datamodels/2.x/itop-service-mgmt/dictionaries/fr.dict.itop-service-mgmt.php
#	datamodels/2.x/itop-structure/dictionaries/fr.dict.itop-structure.php
#	dictionaries/hu.dictionary.itop.core.php
2023-02-21 22:26:54 +01:00
Molkobain
ccdd315357 N°5919 - Add missing linkset descriptions in french and other languages 2023-02-21 22:14:57 +01:00
Eric Espie
a9f08e87f9 N°5906 - CRUD Event - move some code 2023-02-21 11:06:10 +01:00
Molkobain
2d80d1c1df N°5741 - Fix wrong merge from 649674c7 2023-02-21 10:34:24 +01:00
Eric Espie
43d17f9519 Fix unit tests for PHP8.1 2023-02-20 11:57:39 +01:00
denis.flaven@combodo.com
d3f8e1c472 Revert "N°5619 - Hide newsroom menu when no provider"
This reverts commit 647b669eb9.
2022-11-14 18:28:18 +01:00
denis.flaven@combodo.com
647b669eb9 N°5619 - Hide newsroom menu when no provider 2022-11-14 18:18:10 +01:00
odain
0001e8ffc4 💚 use new ci validation 2020-10-09 10:13:51 +02:00
2514 changed files with 70345 additions and 40168 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB

View File

@@ -60,6 +60,14 @@ gitGraph
checkout develop
checkout support/2.7
commit id: "2022-12-28" tag: "2.7.8"
checkout support/3.0
commit id: "2023-04-12" tag: "3.0.3"
checkout develop
commit id: "2023-06-19" tag: "3.1.0-beta" type: REVERSE
commit id: "2023-07-26" tag: "3.1.0-1" type: HIGHLIGHT
branch support/3.1 order: 840
checkout support/3.1
commit id: "2023-08-09" tag: "3.1.0-2"
```
To learn more, check the [iTop community versions history on the official wiki](https://www.itophub.io/wiki/page?id=latest:release:start).
To learn more, check the [iTop community versions history on the official wiki](https://www.itophub.io/wiki/page?id=latest:release:start).

83
.github/pull_request_template.md vendored Normal file
View File

@@ -0,0 +1,83 @@
<!--
IMPORTANT: Please follow the guidelines within this PR template before submitting it, it will greatly help us process your PR. 🙏
Any PRs not following the guidelines or with missing information will not be considered.
-->
## Base information
| Question | Answer
|---------------------------------------------------------------|--------
| Related to a SourceForge thead / Another PR / Combodo ticket? | <!-- Put the URL -->
| Type of change? | Bug fix / Enhancement / Translations
## Symptom (bug) / Objective (enhancement)
<!--
If it's a bug
- Explain the symptom in details
- If possible put error messages, logs or screenshots (you can paste image directly in this editor).
If it's an enhancement
- Describe what is blocking you, what is the objective with as much details as possible.
- Add screenshots if it's related to UI.
-->
## Reproduction procedure (bug)
<!--
Remove this section only if it's NOT a bug.
Otherwise, explain step by step how to reproduce the issue on a standard iTop Community.
If it requires a custom datamodel, provide the minimal XML delta to reproduce it on a standard iTop Community.
-->
1. On iTop x.y.z <!-- Put complete iTop version (eg. 3.1.0-2) -->
2. With PHP x.y.z <!-- Put complete PHP version (eg. 8.1.24) -->
2. First go there
2. Then do that
3. ...
4. Finally, see that...
## Cause (bug)
<!--
Remove this section only if it's NOT a bug.
Otherwise, explain what is the cause of the issue (where in the code and why)
-->
## Proposed solution (bug and enhancement)
<!--
Explain in details how you are proposing to solve this:
- What did you do in the code and why
- If you changed something in the UI, put before / after screenshots (you can paste image directly in this editor)
-->
## Checklist before requesting a review
<!--
Don't remove these lines, check them once done.
-->
- [ ] I have performed a self-review of my code
- [ ] I have tested all changes I made on an iTop instance
- [ ] I have added a unit test, otherwise I have explained why I couldn't
- [ ] Is the PR clear and detailed enough so anyone can understand digging in the code?
## Checklist of things to do before PR is ready to merge
<!--
Things that needs to be done in the PR before it can be considered as ready to be merged
Examples:
- Changes requested in the review
- Unit test to add
- Dictionary entries to translate
- ...
-->
- [ ] ...
- [ ] ...
- [ ] ...

43
.github/workflows/action.yml vendored Normal file
View File

@@ -0,0 +1,43 @@
name: Add PRs to Combodo PRs Dashboard
on:
pull_request_target:
types:
- opened
jobs:
add-to-project:
name: Add PR to Combodo Project
runs-on: ubuntu-latest
steps:
- name: Check if author is a member of the organization
id: check-membership
run: |
ORG="Combodo"
AUTHOR=$(jq -r .pull_request.user.login "$GITHUB_EVENT_PATH")
RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" -H "Authorization: token ${{ secrets.PR_AUTOMATICALLY_ADD_TO_PROJECT }}" \
"https://api.github.com/orgs/$ORG/members/$AUTHOR")
if [ "$RESPONSE" == "404" ]; then
echo "project_url=https://github.com/orgs/Combodo/projects/5" >> $GITHUB_ENV
echo "is_member=false" >> $GITHUB_ENV
else
echo "project_url=https://github.com/orgs/Combodo/projects/4" >> $GITHUB_ENV
echo "is_member=true" >> $GITHUB_ENV
fi
- name: Add internal tag if member
if: env.is_member == 'true'
run: |
curl -X POST -H "Authorization: token ${{ secrets.PR_AUTOMATICALLY_ADD_TO_PROJECT }}" \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/Combodo/iTop/issues/${{ github.event.pull_request.number }}/labels \
-d '{"labels":["internal"]}'
env:
is_member: ${{ env.is_member }}
- name: Add PR to the appropriate project
uses: actions/add-to-project@v1.0.2
with:
project-url: ${{ env.project_url }}
github-token: ${{ secrets.PR_AUTOMATICALLY_ADD_TO_PROJECT }}

6
.gitignore vendored
View File

@@ -37,7 +37,9 @@ tests/*/vendor/*
# iTop extensions
/extensions/**
!/extensions/.htaccess
!/extensions/readme.txt
!/extensions/web.config
# all logs but listing prevention
/log/**
@@ -45,8 +47,10 @@ tests/*/vendor/*
!/log/index.php
!/log/web.config
# PHPUnit cache file
# PHPUnit: Cache file, local XML working copies
/tests/php-unit-tests/.phpunit.result.cache
/tests/php-unit-tests/phpunit.xml
/tests/php-unit-tests/postbuild_integration.xml
# Jetbrains

View File

@@ -1,7 +1,7 @@
<?php
/**
* Copyright (C) 2010-2021 Combodo SARL
* Copyright (C) 2010-2023 Combodo SARL
*
* This file is part of iTop.
*
@@ -27,7 +27,7 @@ $iTopFolder = __DIR__."/../../../";
require_once("$iTopFolder/approot.inc.php");
require_once(APPROOT."/application/utils.inc.php");
if (php_sapi_name() !== 'cli')
if (PHP_SAPI !== 'cli')
{
throw new \Exception('This script can only run from CLI');
}
@@ -48,4 +48,4 @@ if (!file_exists($sCssFile))
{
fwrite(STDERR, "Failed to compile $sCssFile, exiting.");
exit(1);
}
}

View File

@@ -1,6 +1,6 @@
<?php
/**
* Copyright (C) 2010-2021 Combodo SARL
* Copyright (C) 2010-2023 Combodo SARL
*
* This file is part of iTop.
*

View File

@@ -1,6 +1,6 @@
<?php
/**
* Copyright (C) 2010-2021 Combodo SARL
* Copyright (C) 2010-2023 Combodo SARL
*
* This file is part of iTop.
*
@@ -26,7 +26,7 @@ $iTopFolder = __DIR__ . "/../../" ;
require_once ("$iTopFolder/approot.inc.php");
require_once (APPROOT."/setup/setuputils.class.inc.php");
if (php_sapi_name() !== 'cli')
if (PHP_SAPI !== 'cli')
{
throw new \Exception('This script can only run from CLI');
}
@@ -70,4 +70,4 @@ if (false === empty($aMissing)) {
echo "Some new tests dirs exists !\n"
.' They must be declared either in the allowed or denied list in '.iTopComposer::class." (see N°2651).\n"
.' List of dirs:'."\n".var_export($aMissing, true);
}
}

View File

@@ -19,17 +19,24 @@
* The target license file path is in `$xmlFilePath`
*/
$iTopFolder = __DIR__ . "/../../" ;
$xmlFilePath = $iTopFolder . "setup/licenses/community-licenses.xml";
$iTopFolder = __DIR__."/../../";
$xmlFilePath = $iTopFolder."setup/licenses/community-licenses.xml";
function get_scope($product_node)
{
$jqExec = shell_exec("jq -V"); // a param is mandatory otherwise the script will freeze
if ((null === $jqExec) || (false === $jqExec)) {
echo "/!\ JQ is required but cannot be launched :( \n";
echo "Check this script PHPDoc block for instructions\n";
die(-1);
}
function get_scope($product_node) {
$scope = $product_node->getAttribute("scope");
if ($scope === "")
{ //put iTop first
if ($scope === "") { //put iTop first
return "aaaaaaaaa";
}
return $scope;
}

View File

@@ -161,4 +161,4 @@ We have one sticker per contribution type. You might get multiple stickers with
Here is the design of each stickers for year 2022:
![iTop stickers 2022](.doc/contributing-guide/2022.contributing-stickers-side-by-side.png)
![iTop stickers 2023](.doc/contributing-guide/2023.contributing-stickers-side-by-side.png)

View File

@@ -37,7 +37,7 @@ iTop also offers mass import tools to help you become even more efficient.
- [iTop Forums][1]: community support
- [iTop Tickets][2]: for feature requests and bug reports
- [Releases download][3]
- [Software requirements][4]
- [iTop requirements][4]
- [Documentation][5] covering both iTop and its official extensions
- [iTop Hub][6] : discover and install extensions !
- [iTop versions history][7]
@@ -46,7 +46,7 @@ iTop also offers mass import tools to help you become even more efficient.
[1]: https://sourceforge.net/p/itop/discussion/
[2]: https://sourceforge.net/p/itop/tickets/
[3]: https://sourceforge.net/projects/itop/files/itop/
[4]: https://www.itophub.io/wiki/page?id=latest:install:upgrading_itop
[4]: https://www.itophub.io/wiki/page?id=latest:install:requirements
[5]: https://www.itophub.io/wiki
[6]: https://store.itophub.io/en_US/
[7]: .doc/itop-version-history.md
@@ -107,7 +107,8 @@ We would like to give a special thank you 🤗 to the people from the community
- Rudner, Björn (a.k.a [@rudnerbjoern](https://github.com/rudnerbjoern))
- Seki, Shoji
- Shilov, Vladimir
- Stukalov, Ilya (a.k.a [@ilya](https://www.github.com/ilya)-stukalov)
- Stukalov, Ilya (a.k.a [@ilya](https://www.github.com/ilya-stukalov))
- Tarjányi, Csaba (a.k.a [@tacsaby](https://github.com/tacsaby))
- Tulio, Marco
- Turrubiates, Miguel

View File

@@ -1,5 +1,5 @@
<?php
// Copyright (C) 2010-2021 Combodo SARL
// Copyright (C) 2010-2023 Combodo SARL
//
// This file is part of iTop.
//
@@ -19,7 +19,7 @@
/**
* UserRightsMatrix (User management Module)
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,5 +1,5 @@
<?php
// Copyright (C) 2010-2021 Combodo SARL
// Copyright (C) 2010-2023 Combodo SARL
//
// This file is part of iTop.
//
@@ -20,7 +20,7 @@
* UserRightsNull
* User management Module - say Yeah! to everything
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
@@ -34,14 +34,15 @@ class URP_Profiles extends UserRightsBaseClassGUI
{
$aParams = array
(
"category" => "addon/userrights,grant_by_profile,filter",
"key_type" => "autoincrement",
"name_attcode" => "name",
"state_attcode" => "",
"reconc_keys" => array(),
"db_table" => "priv_urp_profiles",
"db_key_field" => "id",
"db_finalclass_field" => "",
"category" => "addon/userrights,grant_by_profile,filter",
"key_type" => "autoincrement",
"name_attcode" => "name",
"complementary_name_attcode" => array('description'),
"state_attcode" => "",
"reconc_keys" => array(),
"db_table" => "priv_urp_profiles",
"db_key_field" => "id",
"db_finalclass_field" => "",
);
MetaModel::Init_Params($aParams);
//MetaModel::Init_InheritAttributes();
@@ -219,24 +220,37 @@ class URP_UserProfile extends UserRightsBaseClassGUI
{
$aParams = array
(
"category" => "addon/userrights,grant_by_profile,filter",
"key_type" => "autoincrement",
"name_attcode" => array("userlogin", "profile"),
"state_attcode" => "",
"reconc_keys" => array(),
"db_table" => "priv_urp_userprofile",
"db_key_field" => "id",
"category" => "addon/userrights,grant_by_profile,filter",
"key_type" => "autoincrement",
"name_attcode" => array("userlogin", "profile"),
"state_attcode" => "",
"reconc_keys" => array(),
"db_table" => "priv_urp_userprofile",
"db_key_field" => "id",
"db_finalclass_field" => "",
"is_link" => true, /** @since 3.1.0 N°6482 */
'uniqueness_rules' => array(
'no_duplicate' => array(
'attributes' => array(
0 => 'userid',
1 => 'profileid',
),
'filter' => '',
'disabled' => false,
'is_blocking' => true,
),
),
);
MetaModel::Init_Params($aParams);
//MetaModel::Init_InheritAttributes();
MetaModel::Init_AddAttribute(new AttributeExternalKey("userid", array("targetclass"=>"User", "jointype"=> "", "allowed_values"=>null, "sql"=>"userid", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("userlogin", array("allowed_values"=>null, "extkey_attcode"=> 'userid', "target_attcode"=>"login")));
MetaModel::Init_AddAttribute(new AttributeExternalKey("userid", array("targetclass" => "User", "jointype" => "", "allowed_values" => null, "sql" => "userid", "is_null_allowed" => false, "on_target_delete" => DEL_AUTO, "depends_on" => array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("userlogin", array("allowed_values" => null, "extkey_attcode" => 'userid', "target_attcode" => "login")));
MetaModel::Init_AddAttribute(new AttributeExternalKey("profileid", array("targetclass"=>"URP_Profiles", "jointype"=> "", "allowed_values"=>null, "sql"=>"profileid", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("profile", array("allowed_values"=>null, "extkey_attcode"=> 'profileid', "target_attcode"=>"name")));
MetaModel::Init_AddAttribute(new AttributeExternalKey("profileid",
array("targetclass" => "URP_Profiles", "jointype" => "", "allowed_values" => null, "sql" => "profileid", "is_null_allowed" => false, "on_target_delete" => DEL_AUTO, "depends_on" => array(), "allow_target_creation" => false)));
MetaModel::Init_AddAttribute(new AttributeExternalField("profile", array("allowed_values" => null, "extkey_attcode" => 'profileid', "target_attcode" => "name")));
MetaModel::Init_AddAttribute(new AttributeString("reason", array("allowed_values"=>null, "sql"=>"description", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeString("reason", array("allowed_values" => null, "sql" => "description", "default_value" => null, "is_null_allowed" => true, "depends_on" => array())));
// Display lists
MetaModel::Init_SetZListItems('details', array('userid', 'profileid', 'reason')); // Attributes to be displayed for the complete details
@@ -432,6 +446,12 @@ class UserRightsProfile extends UserRightsAddOnAPI
UR_ACTION_BULK_DELETE => 'bd',
);
/**
* @var array $aUsersProfilesList Cache of users' profiles. Hash array of user ID => [profile ID => profile friendlyname, profile ID => profile friendlyname, ...]
* @since 2.7.10 3.0.4 3.1.1 3.2.0 N°6887
*/
private $aUsersProfilesList = [];
// Installation: create the very first user
public function CreateAdministrator($sAdminUser, $sAdminPwd, $sLanguage = 'EN US')
{
@@ -488,6 +508,7 @@ class UserRightsProfile extends UserRightsAddOnAPI
}
protected $m_aUserOrgs = array(); // userid -> array of orgid
protected $m_aAdministrators = null; // [user id]
// Built on demand, could be optimized if necessary (doing a query for each attribute that needs to be read)
protected $m_aObjectActionGrants = array();
@@ -544,6 +565,7 @@ class UserRightsProfile extends UserRightsAddOnAPI
// Cache
$this->m_aObjectActionGrants = array();
$this->m_aAdministrators = null;
}
public function LoadCache()
@@ -686,12 +708,10 @@ class UserRightsProfile extends UserRightsAddOnAPI
*/
private function GetAdministrators()
{
static $aAdministrators = null;
if ($aAdministrators === null)
if ($this->m_aAdministrators === null)
{
// Find all administrators
$aAdministrators = array();
$this->m_aAdministrators = array();
$oAdministratorsFilter = new DBObjectSearch('User');
$oLnkFilter = new DBObjectSearch('URP_UserProfile');
$oExpression = new FieldExpression('profileid', 'URP_UserProfile');
@@ -704,10 +724,10 @@ class UserRightsProfile extends UserRightsAddOnAPI
$oSet->OptimizeColumnLoad(array('User' => array('login')));
while($oUser = $oSet->Fetch())
{
$aAdministrators[] = $oUser->GetKey();
$this->m_aAdministrators[] = $oUser->GetKey();
}
}
return $aAdministrators;
return $this->m_aAdministrators;
}
/**
@@ -744,8 +764,12 @@ class UserRightsProfile extends UserRightsAddOnAPI
$sAction = self::$m_aActionCodes[$iActionCode];
$bStatus = null;
// Cache user's profiles
if(false === array_key_exists($iUser, $this->aUsersProfilesList)){
$this->aUsersProfilesList[$iUser] = UserRights::ListProfiles($oUser);
}
// Call the API of UserRights because it caches the list for us
foreach(UserRights::ListProfiles($oUser) as $iProfile => $oProfile)
foreach($this->aUsersProfilesList[$iUser] as $iProfile => $oProfile)
{
$bGrant = $this->GetProfileActionGrant($iProfile, $sClass, $sAction);
if (!is_null($bGrant))
@@ -871,11 +895,16 @@ class UserRightsProfile extends UserRightsAddOnAPI
// Note: this code is VERY close to the code of IsActionAllowed()
$iUser = $oUser->GetKey();
// Cache user's profiles
if(false === array_key_exists($iUser, $this->aUsersProfilesList)){
$this->aUsersProfilesList[$iUser] = UserRights::ListProfiles($oUser);
}
// Note: The object set is ignored because it was interesting to optimize for huge data sets
// and acceptable to consider only the root class of the object set
$bStatus = null;
// Call the API of UserRights because it caches the list for us
foreach(UserRights::ListProfiles($oUser) as $iProfile => $oProfile)
foreach($this->aUsersProfilesList[$iUser] as $iProfile => $oProfile)
{
$bGrant = $this->GetClassStimulusGrant($iProfile, $sClass, $sStimulusCode);
if (!is_null($bGrant))
@@ -904,8 +933,9 @@ class UserRightsProfile extends UserRightsAddOnAPI
}
/**
* Find out which attribute is corresponding the the dimension 'owner org'
* returns null if no such attribute has been found (no filtering should occur)
* @param string $sClass
* @return string|null Find out which attribute is corresponding the dimension 'owner org'
* returns null if no such attribute has been found (no filtering should occur)
*/
public static function GetOwnerOrganizationAttCode($sClass)
{

View File

@@ -1,6 +1,6 @@
<?php
/**
* Copyright (C) 2013-2021 Combodo SARL
* Copyright (C) 2013-2023 Combodo SARL
*
* This file is part of iTop.
*
@@ -69,14 +69,15 @@ class URP_Profiles extends UserRightsBaseClassGUI
{
$aParams = array
(
"category" => "addon/userrights",
"key_type" => "autoincrement",
"name_attcode" => "name",
"state_attcode" => "",
"reconc_keys" => array(),
"db_table" => "priv_urp_profiles",
"db_key_field" => "id",
"db_finalclass_field" => "",
"category" => "addon/userrights",
"key_type" => "autoincrement",
"name_attcode" => "name",
"complementary_name_attcode" => array('description'),
"state_attcode" => "",
"reconc_keys" => array(),
"db_table" => "priv_urp_profiles",
"db_key_field" => "id",
"db_finalclass_field" => "",
);
MetaModel::Init_Params($aParams);
//MetaModel::Init_InheritAttributes();
@@ -325,24 +326,26 @@ class URP_UserProfile extends UserRightsBaseClassGUI
{
$aParams = array
(
"category" => "addon/userrights",
"key_type" => "autoincrement",
"name_attcode" => array("userlogin", "profile"),
"state_attcode" => "",
"reconc_keys" => array(),
"db_table" => "priv_urp_userprofile",
"db_key_field" => "id",
"category" => "addon/userrights",
"key_type" => "autoincrement",
"name_attcode" => array("userlogin", "profile"),
"state_attcode" => "",
"reconc_keys" => array(),
"db_table" => "priv_urp_userprofile",
"db_key_field" => "id",
"db_finalclass_field" => "",
"is_link" => true, /** @since 3.1.0 N°6482 */
);
MetaModel::Init_Params($aParams);
//MetaModel::Init_InheritAttributes();
MetaModel::Init_AddAttribute(new AttributeExternalKey("userid", array("targetclass"=>"User", "jointype"=> "", "allowed_values"=>null, "sql"=>"userid", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("userlogin", array("allowed_values"=>null, "extkey_attcode"=> 'userid', "target_attcode"=>"login")));
MetaModel::Init_AddAttribute(new AttributeExternalKey("userid", array("targetclass" => "User", "jointype" => "", "allowed_values" => null, "sql" => "userid", "is_null_allowed" => false, "on_target_delete" => DEL_AUTO, "depends_on" => array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("userlogin", array("allowed_values" => null, "extkey_attcode" => 'userid', "target_attcode" => "login")));
MetaModel::Init_AddAttribute(new AttributeExternalKey("profileid", array("targetclass"=>"URP_Profiles", "jointype"=> "", "allowed_values"=>null, "sql"=>"profileid", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("profile", array("allowed_values"=>null, "extkey_attcode"=> 'profileid', "target_attcode"=>"name")));
MetaModel::Init_AddAttribute(new AttributeExternalKey("profileid",
array("targetclass" => "URP_Profiles", "jointype" => "", "allowed_values" => null, "sql" => "profileid", "is_null_allowed" => false, "on_target_delete" => DEL_AUTO, "depends_on" => array(), "allow_target_creation" => false)));
MetaModel::Init_AddAttribute(new AttributeExternalField("profile", array("allowed_values" => null, "extkey_attcode" => 'profileid', "target_attcode" => "name")));
MetaModel::Init_AddAttribute(new AttributeString("reason", array("allowed_values"=>null, "sql"=>"description", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeString("reason", array("allowed_values" => null, "sql" => "description", "default_value" => null, "is_null_allowed" => true, "depends_on" => array())));
// Display lists
MetaModel::Init_SetZListItems('details', array('userid', 'profileid', 'reason')); // Attributes to be displayed for the complete details
@@ -577,10 +580,10 @@ class UserRightsProfile extends UserRightsAddOnAPI
/**
* Read and cache organizations allowed to the given user
*
* @param $oUser
* @param $sClass (not used here but can be used in overloads)
* @param User $oUser
* @param string $sClass (not used here but can be used in overloads)
*
* @return array
* @return array keys of the User allowed org
* @throws \CoreException
* @throws \Exception
*/

View File

@@ -1,6 +1,6 @@
<?php
/**
* Copyright (C) 2013-2021 Combodo SARL
* Copyright (C) 2013-2023 Combodo SARL
*
* This file is part of iTop.
*
@@ -50,14 +50,15 @@ class URP_Profiles extends UserRightsBaseClass
{
$aParams = array
(
"category" => "addon/userrights",
"key_type" => "autoincrement",
"name_attcode" => "name",
"state_attcode" => "",
"reconc_keys" => array(),
"db_table" => "priv_urp_profiles",
"db_key_field" => "id",
"db_finalclass_field" => "",
"category" => "addon/userrights",
"key_type" => "autoincrement",
"name_attcode" => "name",
"complementary_name_attcode" => array('description'),
"state_attcode" => "",
"reconc_keys" => array(),
"db_table" => "priv_urp_profiles",
"db_key_field" => "id",
"db_finalclass_field" => "",
);
MetaModel::Init_Params($aParams);
//MetaModel::Init_InheritAttributes();
@@ -268,24 +269,26 @@ class URP_UserProfile extends UserRightsBaseClass
{
$aParams = array
(
"category" => "addon/userrights",
"key_type" => "autoincrement",
"name_attcode" => array("userlogin", "profile"),
"state_attcode" => "",
"reconc_keys" => array(),
"db_table" => "priv_urp_userprofile",
"db_key_field" => "id",
"category" => "addon/userrights",
"key_type" => "autoincrement",
"name_attcode" => array("userlogin", "profile"),
"state_attcode" => "",
"reconc_keys" => array(),
"db_table" => "priv_urp_userprofile",
"db_key_field" => "id",
"db_finalclass_field" => "",
"is_link" => true, /** @since 3.1.0 N°6482 */
);
MetaModel::Init_Params($aParams);
//MetaModel::Init_InheritAttributes();
MetaModel::Init_AddAttribute(new AttributeExternalKey("userid", array("targetclass"=>"User", "jointype"=> "", "allowed_values"=>null, "sql"=>"userid", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("userlogin", array("allowed_values"=>null, "extkey_attcode"=> 'userid', "target_attcode"=>"login")));
MetaModel::Init_AddAttribute(new AttributeExternalKey("userid", array("targetclass" => "User", "jointype" => "", "allowed_values" => null, "sql" => "userid", "is_null_allowed" => false, "on_target_delete" => DEL_AUTO, "depends_on" => array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("userlogin", array("allowed_values" => null, "extkey_attcode" => 'userid', "target_attcode" => "login")));
MetaModel::Init_AddAttribute(new AttributeExternalKey("profileid", array("targetclass"=>"URP_Profiles", "jointype"=> "", "allowed_values"=>null, "sql"=>"profileid", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("profile", array("allowed_values"=>null, "extkey_attcode"=> 'profileid', "target_attcode"=>"name")));
MetaModel::Init_AddAttribute(new AttributeExternalKey("profileid",
array("targetclass" => "URP_Profiles", "jointype" => "", "allowed_values" => null, "sql" => "profileid", "is_null_allowed" => false, "on_target_delete" => DEL_AUTO, "depends_on" => array(), "allow_target_creation" => false)));
MetaModel::Init_AddAttribute(new AttributeExternalField("profile", array("allowed_values" => null, "extkey_attcode" => 'profileid', "target_attcode" => "name")));
MetaModel::Init_AddAttribute(new AttributeString("reason", array("allowed_values"=>null, "sql"=>"description", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeString("reason", array("allowed_values" => null, "sql" => "description", "default_value" => null, "is_null_allowed" => true, "depends_on" => array())));
// Display lists
MetaModel::Init_SetZListItems('details', array('userid', 'profileid', 'reason')); // Attributes to be displayed for the complete details

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,8 +1,8 @@
<?php
/**
* @deprecated will be removed in 3.1.0 - moved to sources/Application/WebPage/AjaxPage.php, now loadable using autoloader
* @deprecated 3.0.0 will be removed in 3.1.0 - moved to sources/Application/WebPage/AjaxPage.php, now loadable using autoloader
* @license http://opensource.org/licenses/AGPL-3.0
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
*/
// cannot notify depreciation for now as this is still load in autoloader

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,5 +1,5 @@
<?php
// Copyright (C) 2010-2021 Combodo SARL
// Copyright (C) 2010-2023 Combodo SARL
//
// This file is part of iTop.
//
@@ -20,7 +20,7 @@
/**
* Class ApplicationContext
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
@@ -238,7 +238,7 @@ class ApplicationContext
{
$aContextInputBlocks = [];
foreach ($this->aValues as $sName => $sValue) {
$aContextInputBlocks[] = InputUIBlockFactory::MakeForHidden("c[$sName]", utils::EscapeHtml($sValue));
$aContextInputBlocks[] = InputUIBlockFactory::MakeForHidden("c[$sName]", $sValue);
}
return $aContextInputBlocks;
}

View File

@@ -1,7 +1,7 @@
<?php
/**
* Copyright (C) 2013-2021 Combodo SARL
* Copyright (C) 2013-2023 Combodo SARL
*
* This file is part of iTop.
*
@@ -29,7 +29,7 @@ require_once(APPROOT.'application/newsroomprovider.class.inc.php');
* Definition of interfaces that can be implemented to customize iTop.
* You may implement such interfaces in a module file (e.g. main.mymodule.php)
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
* @since 2.7.0
*/
@@ -336,7 +336,6 @@ abstract class AbstractPreferencesExtension implements iPreferencesExtension
*
* @api
* @package UIExtensibilityAPI
* @deprecated
*/
interface iApplicationUIExtension
{
@@ -487,7 +486,6 @@ interface iApplicationUIExtension
* @api
* @package UIExtensibilityAPI
* @since 2.7.0
* @deprecated
*/
abstract class AbstractApplicationUIExtension implements iApplicationUIExtension
{
@@ -560,6 +558,7 @@ abstract class AbstractApplicationUIExtension implements iApplicationUIExtension
* or through the GUI.
*
* @api
* @deprecated 3.1.0 N°4756 use the new event service instead, see {@see DBObject::FireEvent()} method. More details on each method PHPDoc.
* @package ORMExtensibilityAPI
*/
interface iApplicationObjectExtension
@@ -574,6 +573,7 @@ interface iApplicationObjectExtension
* Otherwise, the answer is definitively "yes, the object has changed".
*
* @api
* @deprecated 3.1.0 N°4756 No alternative available, this API was unstable and is abandoned
* @param \cmdbAbstractObject $oObject The target object
*
* @return boolean True if something has changed for the target object
@@ -587,6 +587,7 @@ interface iApplicationObjectExtension
* Anyhow, this API can be called in other contexts such as the CSV import tool.
*
* @api
* @deprecated 3.1.0 N°4756 Use EVENT_DB_CHECK_TO_WRITE event instead
* @param \cmdbAbstractObject $oObject The target object
*
* @return string[] A list of errors message. An error message is made of one line and it can be displayed to the end-user.
@@ -601,6 +602,7 @@ interface iApplicationObjectExtension
* Please not that it is not possible to cascade deletion by this mean: only stopper issues can be handled.
*
* @api
* @deprecated 3.1.0 N°4756 Use EVENT_DB_CHECK_TO_DELETE event instead
* @param \cmdbAbstractObject $oObject The target object
*
* @return string[] A list of errors message. An error message is made of one line and it can be displayed to the end-user.
@@ -617,6 +619,7 @@ interface iApplicationObjectExtension
* * {@see DBObject::Get()} : for a given attribute the new value that was persisted
*
* @api
* @deprecated 3.1.0 N°4756 Use EVENT_DB_AFTER_WRITE event instead
* @param \cmdbAbstractObject $oObject The target object
* @param CMDBChange|null $oChange A change context. Since 2.0 it is fine to ignore it, as the framework does maintain this information
* once for all the changes made within the current page
@@ -633,6 +636,7 @@ interface iApplicationObjectExtension
* The method is called right <b>after</b> the object has been written to the database.
*
* @api
* @deprecated 3.1.0 N°4756 Use EVENT_DB_AFTER_WRITE event instead
* @param \cmdbAbstractObject $oObject The target object
* @param CMDBChange|null $oChange A change context. Since 2.0 it is fine to ignore it, as the framework does maintain this information
* once for all the changes made within the current page
@@ -647,6 +651,7 @@ interface iApplicationObjectExtension
* The method is called right <b>before</b> the object will be deleted from the database.
*
* @api
* @deprecated 3.1.0 N°4756 Use EVENT_DB_AFTER_DELETE event instead
* @param \cmdbAbstractObject $oObject The target object
* @param CMDBChange|null $oChange A change context. Since 2.0 it is fine to ignore it, as the framework does maintain this information
* once for all the changes made within the current page
@@ -660,6 +665,7 @@ interface iApplicationObjectExtension
* Extend this class instead of iApplicationObjectExtension if you don't need to overload all methods
*
* @api
* @deprecated 3.1.0 N°4756 use the new event service instead, see {@see DBObject::FireEvent()} method
* @package ORMExtensibilityAPI
* @since 2.7.0
*/
@@ -1643,6 +1649,40 @@ abstract class AbstractPortalUIExtension implements iPortalUIExtension
}
}
/**
* Implement this interface to register a new field renderer mapping to either:
* - Add the rendering of a new attribute type
* - Overload the default rendering of an attribute type
*
* @since 3.1.0 N°6041
*
* @experimental Form / Field / Renderer should be used in more places in next iTop releases, which may introduce major API changes
*/
interface iFieldRendererMappingsExtension
{
/**
* @return array {
* array: {
* field: string,
* form_renderer: string,
* field_renderer: string
* }
* } List of field renderer mapping: FQCN field class, FQCN Form Renderer class, FQCN Field Renderer class
*
* Example:
*
* ```php
* [
* ['field' => 'FQCN\FieldA', 'form_renderer' => 'Combodo\iTop\Renderer\Console\ConsoleFormRenderer', 'field_renderer' => 'FQCN\FieldRendererA'],
* ['field' => 'FQCN\FieldB', 'form_renderer' => 'Combodo\iTop\Renderer\Console\ConsoleFormRenderer', 'field_renderer' => 'FQCN\FieldRendererB'],
* ['field' => 'FQCN\FieldA', 'form_renderer' => 'Combodo\iTop\Renderer\Bootstrap\BsFormRenderer', 'field_renderer' => 'FQCN\FieldRendererA'],
* ['field' => 'FQCN\FieldB', 'form_renderer' => 'Combodo\iTop\Renderer\Bootstrap\BsFormRenderer', 'field_renderer' => 'FQCN\FieldRendererB'],
* ]
* ```
*/
public static function RegisterSupportedFields(): array;
}
/**
* Implement this interface to add new operations to the REST/JSON web service
*
@@ -1975,6 +2015,8 @@ class RestUtils
*
* @return DBObject The object found
* @throws Exception If the input structure is not valid or it could not find exactly one object
*
* @see DBObject::CheckChangedExtKeysValues() generic method to check that we can access the linked object isn't used in that use case because values can be literal, OQL, friendlyname
*/
public static function FindObjectFromKey($sClass, $key, $bAllowNullValue = false)
{
@@ -2061,8 +2103,16 @@ class RestUtils
elseif (is_string($key))
{
// OQL
$oSearch = DBObjectSearch::FromOQL($key);
}
try {
$oSearch = DBObjectSearch::FromOQL($key);
} catch (Exception $e) {
throw new CoreOqlException('Query failed to execute', [
'query' => $key,
'exception_class' => get_class($e),
'exception_message' => $e->getMessage(),
]);
}
}
else
{
throw new Exception("Wrong format for key");
@@ -2212,3 +2262,27 @@ interface iModuleExtension
*/
public function __construct();
}
/**
* KPI logging extensibility point
*
* KPI Logger extension
*/
interface iKPILoggerExtension
{
/**
* Init the statistics collected
*
* @return void
*/
public function InitStats();
/**
* Add a new KPI to the stats
*
* @param \Combodo\iTop\Core\Kpi\KpiLogData $oKpiLogData
*
* @return mixed
*/
public function LogOperation($oKpiLogData);
}

View File

@@ -1,5 +1,5 @@
<?php
// Copyright (C) 2010-2021 Combodo SARL
// Copyright (C) 2010-2023 Combodo SARL
//
// This file is part of iTop.
//
@@ -22,7 +22,7 @@
* to check and is linked to a set of rules that determine the valid or invalid objects
* inside the set
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
@@ -34,14 +34,15 @@ class AuditCategory extends cmdbAbstractObject
{
$aParams = array
(
"category" => "application, grant_by_profile",
"key_type" => "autoincrement",
"name_attcode" => "name",
"state_attcode" => "",
"reconc_keys" => array('name'),
"db_table" => "priv_auditcategory",
"db_key_field" => "id",
"category" => "application,grant_by_profile",
"key_type" => "autoincrement",
"name_attcode" => "name",
"state_attcode" => "",
"reconc_keys" => array('name'),
"db_table" => "priv_auditcategory",
"db_key_field" => "id",
"db_finalclass_field" => "",
'style' => new ormStyle(null, null, null, null, null, '../images/icons/icons8-audit-folder.svg'),
);
MetaModel::Init_Params($aParams);
MetaModel::Init_AddAttribute(new AttributeString("name", array("description"=>"Short name for this category", "allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
@@ -49,8 +50,9 @@ class AuditCategory extends cmdbAbstractObject
MetaModel::Init_AddAttribute(new AttributeOQL("definition_set", array("allowed_values"=>null, "sql"=>"definition_set", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeLinkedSet("rules_list", array("linked_class"=>"AuditRule", "ext_key_to_me"=>"category_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array(), "edit_mode" => LINKSET_EDITMODE_INPLACE, "tracking_level" => LINKSET_TRACKING_ALL)));
MetaModel::Init_AddAttribute(new AttributeInteger("ok_error_tolerance", array("allowed_values"=>null, "sql"=>"ok_error_tolerance", "default_value"=>5, "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeInteger("warning_error_tolerance", array("allowed_values"=>null, "sql"=>"warning_error_tolerance", "default_value"=>25, "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("domains_list", array("linked_class" => "lnkAuditCategoryToAuditDomain", "ext_key_to_me" => "category_id", "ext_key_to_remote" => "domain_id", "allowed_values" => null, "count_min" => 0, "count_max" => 0, "depends_on" => array())));
MetaModel::Init_AddAttribute(new AttributeInteger("warning_error_tolerance", array("allowed_values" => null, "sql" => "warning_error_tolerance", "default_value" => 25, "is_null_allowed" => true, "depends_on" => array())));
MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("domains_list",
array("linked_class" => "lnkAuditCategoryToAuditDomain", "ext_key_to_me" => "category_id", "ext_key_to_remote" => "domain_id", "allowed_values" => null, "count_min" => 0, "count_max" => 0, "depends_on" => array(), "display_style" => 'property')));
// Display lists
MetaModel::Init_SetZListItems('details', array('name', 'description', 'definition_set', 'ok_error_tolerance', 'warning_error_tolerance', 'rules_list', 'domains_list')); // Attributes to be displayed for the complete details
@@ -72,15 +74,23 @@ class AuditCategory extends cmdbAbstractObject
public function GetReportColor($iTotal, $iErrors)
{
$sResult = 'red';
if ( ($iTotal == 0) || ($iErrors / $iTotal) <= ($this->Get('ok_error_tolerance') / 100) )
{
if ( ($iTotal == 0) || ($iErrors / $iTotal) <= ($this->Get('ok_error_tolerance') / 100) ) {
$sResult = 'green';
}
else if ( ($iErrors / $iTotal) <= ($this->Get('warning_error_tolerance') / 100) )
{
} else if (($iErrors / $iTotal) <= ($this->Get('warning_error_tolerance') / 100)) {
$sResult = 'orange';
}
return $sResult;
}
public static function GetShortcutActions($sFinalClass)
{
$aShortcutActions = parent::GetShortcutActions($sFinalClass);
if (!in_array('UI:Menu:RunAudit', $aShortcutActions)) {
$aShortcutActions[] = 'UI:Menu:RunAudit';
}
return $aShortcutActions;
}
}
?>

View File

@@ -1,5 +1,5 @@
<?php
// Copyright (C) 2010-2021 Combodo SARL
// Copyright (C) 2010-2023 Combodo SARL
//
// This file is part of iTop.
//
@@ -22,7 +22,7 @@
* to check and is linked to a set of rules that determine the valid or invalid objects
* inside the set
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
@@ -35,29 +35,42 @@ class AuditDomain extends cmdbAbstractObject
{
$aParams = array
(
"category" => "application, grant_by_profile",
"key_type" => "autoincrement",
"name_attcode" => "name",
"state_attcode" => "",
"reconc_keys" => array('name'),
"db_table" => "priv_auditdomain",
"db_key_field" => "id",
"db_finalclass_field" => "",
"category" => "application,grant_by_profile",
"key_type" => "autoincrement",
"name_attcode" => "name",
"complementary_name_attcode" => array('description'),
"state_attcode" => "",
"reconc_keys" => array('name'),
"db_table" => "priv_auditdomain",
"db_key_field" => "id",
"db_finalclass_field" => "",
'style' => new ormStyle(null, null, null, null, null, '../images/icons/icons8-audit-album.svg'),
);
MetaModel::Init_Params($aParams);
MetaModel::Init_AddAttribute(new AttributeString("name", array("description"=>"Short name for this category", "allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeString("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeImage("icon", array("is_null_allowed"=>true, "depends_on"=>array(), "display_max_width"=>96, "display_max_height"=>96, "storage_max_width"=>256, "storage_max_height"=>256, "default_image"=>null, "always_load_in_tables"=>false)));
MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("categories_list", array("linked_class" => "lnkAuditCategoryToAuditDomain", "ext_key_to_me" => "domain_id", "ext_key_to_remote" => "category_id", "allowed_values" => null, "count_min" => 0, "count_max" => 0, "depends_on" => array())));
MetaModel::Init_AddAttribute(new AttributeString("name", array("description" => "Short name for this category", "allowed_values" => null, "sql" => "name", "default_value" => "", "is_null_allowed" => false, "depends_on" => array())));
MetaModel::Init_AddAttribute(new AttributeString("description", array("allowed_values" => null, "sql" => "description", "default_value" => "", "is_null_allowed" => true, "depends_on" => array())));
MetaModel::Init_AddAttribute(new AttributeImage("icon", array("is_null_allowed" => true, "depends_on" => array(), "display_max_width" => 96, "display_max_height" => 96, "storage_max_width" => 256, "storage_max_height" => 256, "default_image" => null, "always_load_in_tables" => false)));
MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("categories_list",
array("linked_class" => "lnkAuditCategoryToAuditDomain", "ext_key_to_me" => "domain_id", "ext_key_to_remote" => "category_id", "allowed_values" => null, "count_min" => 0, "count_max" => 0, "depends_on" => array())));
// Display lists
MetaModel::Init_SetZListItems('details', array('name', 'description', 'icon', 'categories_list')); // Attributes to be displayed for the complete details
MetaModel::Init_SetZListItems('list', array('description', )); // Attributes to be displayed for a list
MetaModel::Init_SetZListItems('list', array('description',)); // Attributes to be displayed for a list
// Search criteria
MetaModel::Init_SetZListItems('standard_search', array('description')); // Criteria of the std search form
MetaModel::Init_SetZListItems('default_search', array('name', 'description')); // Criteria of the default search form
}
public static function GetShortcutActions($sFinalClass)
{
$aShortcutActions = parent::GetShortcutActions($sFinalClass);
if (!in_array('UI:Menu:RunAudit', $aShortcutActions)) {
$aShortcutActions[] = 'UI:Menu:RunAudit';
}
return $aShortcutActions;
}
}
/**
@@ -73,15 +86,26 @@ class lnkAuditCategoryToAuditDomain extends cmdbAbstractObject
{
$aParams = array
(
"category" => "application, grant_by_profile",
"key_type" => "autoincrement",
"name_attcode" => "",
"state_attcode" => "",
"reconc_keys" => array('category_id', 'domain_id'),
"db_table" => "priv_link_audit_category_domain",
"db_key_field" => "id",
"category" => "application,grant_by_profile",
"key_type" => "autoincrement",
"name_attcode" => "",
"state_attcode" => "",
"reconc_keys" => array('category_id', 'domain_id'),
"db_table" => "priv_link_audit_category_domain",
"db_key_field" => "id",
"db_finalclass_field" => "",
"is_link" => true,
"is_link" => true,
'uniqueness_rules' => array(
'no_duplicate' => array(
'attributes' => array(
0 => 'category_id',
1 => 'domain_id',
),
'filter' => '',
'disabled' => false,
'is_blocking' => true,
),
),
);
MetaModel::Init_Params($aParams);
MetaModel::Init_AddAttribute(new AttributeExternalKey("category_id", array("targetclass" => "AuditCategory", "jointype" => '', "allowed_values" => null, "sql" => "category_id", "is_null_allowed" => false, "on_target_delete" => DEL_AUTO, "depends_on" => array())));

View File

@@ -1,5 +1,5 @@
<?php
// Copyright (C) 2010-2021 Combodo SARL
// Copyright (C) 2010-2023 Combodo SARL
//
// This file is part of iTop.
//
@@ -23,7 +23,7 @@
* or the "bad" ones. The core audit engines computes the complement to the definition
* set when needed to obtain either the valid objects, or the ones with an error
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
@@ -35,22 +35,23 @@ class AuditRule extends cmdbAbstractObject
{
$aParams = array
(
"category" => "application, grant_by_profile",
"key_type" => "autoincrement",
"name_attcode" => "name",
"state_attcode" => "",
"reconc_keys" => array('name'),
"db_table" => "priv_auditrule",
"db_key_field" => "id",
"category" => "application,grant_by_profile",
"key_type" => "autoincrement",
"name_attcode" => "name",
"state_attcode" => "",
"reconc_keys" => array('name'),
"db_table" => "priv_auditrule",
"db_key_field" => "id",
"db_finalclass_field" => "",
'style' => new ormStyle(null, null, null, null, null, '../images/icons/icons8-audit.svg'),
);
MetaModel::Init_Params($aParams);
MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeString("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeOQL("query", array("allowed_values"=>null, "sql"=>"query", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeEnum("valid_flag", array("allowed_values"=>new ValueSetEnum('true,false'), "sql"=>"valid_flag", "default_value"=>"true", "is_null_allowed"=>false, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalKey("category_id", array("allowed_values"=>null, "sql"=>"category_id", "targetclass"=>"AuditCategory", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("category_name", array("allowed_values"=>null, "extkey_attcode"=> 'category_id', "target_attcode"=>"name")));
MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values" => null, "sql" => "name", "default_value" => "", "is_null_allowed" => false, "depends_on" => array())));
MetaModel::Init_AddAttribute(new AttributeString("description", array("allowed_values" => null, "sql" => "description", "default_value" => "", "is_null_allowed" => true, "depends_on" => array())));
MetaModel::Init_AddAttribute(new AttributeOQL("query", array("allowed_values" => null, "sql" => "query", "default_value" => "", "is_null_allowed" => false, "depends_on" => array())));
MetaModel::Init_AddAttribute(new AttributeEnum("valid_flag", array("allowed_values" => new ValueSetEnum('true,false'), "sql" => "valid_flag", "default_value" => "true", "is_null_allowed" => false, "depends_on" => array())));
MetaModel::Init_AddAttribute(new AttributeExternalKey("category_id", array("allowed_values" => null, "sql" => "category_id", "targetclass" => "AuditCategory", "is_null_allowed" => false, "on_target_delete" => DEL_MANUAL, "depends_on" => array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("category_name", array("allowed_values" => null, "extkey_attcode" => 'category_id', "target_attcode" => "name")));
// Display lists
MetaModel::Init_SetZListItems('details', array('category_id', 'name', 'description', 'query', 'valid_flag')); // Attributes to be displayed for the complete details
@@ -59,5 +60,16 @@ class AuditRule extends cmdbAbstractObject
MetaModel::Init_SetZListItems('standard_search', array('category_id', 'name', 'description', 'valid_flag', 'query')); // Criteria of the std search form
MetaModel::Init_SetZListItems('default_search', array('name', 'description', 'category_id')); // Criteria of the advanced search form
}
public static function GetShortcutActions($sFinalClass)
{
$aShortcutActions = parent::GetShortcutActions($sFinalClass);
if (!in_array('UI:Menu:RunAudit', $aShortcutActions)) {
$aShortcutActions[] = 'UI:Menu:RunAudit';
}
return $aShortcutActions;
}
}
?>

View File

@@ -1,8 +1,8 @@
<?php
/**
* @deprecated will be removed in 3.1.0 - moved to sources/Application/WebPage/CaptureWebPage.php, now loadable using autoloader
* @deprecated 3.0.0 will be removed in 3.1.0 - moved to sources/Application/WebPage/CaptureWebPage.php, now loadable using autoloader
* @license http://opensource.org/licenses/AGPL-3.0
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
*/
DeprecatedCallsLog::NotifyDeprecatedFile('moved to sources/Application/WebPage/CaptureWebPage.php, now loadable using autoloader');

View File

@@ -1,8 +1,8 @@
<?php
/**
* @deprecated will be removed in 3.1.0 - moved to sources/Application/WebPage/CLIPage.php, now loadable using autoloader
* @deprecated 3.0.0 will be removed in 3.1.0 - moved to sources/Application/WebPage/CLIPage.php, now loadable using autoloader
* @license http://opensource.org/licenses/AGPL-3.0
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
*/
DeprecatedCallsLog::NotifyDeprecatedFile('moved to sources/Application/WebPage/CLIPage.php, now loadable using autoloader');

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
<?php
/**
* Copyright (C) 2013-2020 Combodo SARL
* Copyright (C) 2013-2023 Combodo SARL
*
* This file is part of iTop.
*

View File

@@ -1,8 +1,8 @@
<?php
/**
* @deprecated will be removed in 3.1.0 - moved to sources/Application/WebPage/CSVPage.php, now loadable using autoloader
* @deprecated 3.0.0 will be removed in 3.1.0 - moved to sources/Application/WebPage/CSVPage.php, now loadable using autoloader
* @license http://opensource.org/licenses/AGPL-3.0
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
*/
DeprecatedCallsLog::NotifyDeprecatedFile('moved to sources/Application/WebPage/CSVPage.php, now loadable using autoloader');

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
@@ -918,6 +918,11 @@ class RuntimeDashboard extends Dashboard
{
$bCustomized = false;
$sDashboardFileSanitized = utils::RealPath(APPROOT.$sDashboardFile, APPROOT);
if (false === $sDashboardFileSanitized) {
throw new SecurityException('Invalid dashboard file !');
}
// Search for an eventual user defined dashboard
$oUDSearch = new DBObjectSearch('UserDashboard');
$oUDSearch->AddCondition('user_id', UserRights::GetUserId(), '=');
@@ -929,7 +934,7 @@ class RuntimeDashboard extends Dashboard
$sDashboardDefinition = $oUserDashboard->Get('contents');
$bCustomized = true;
} else {
$sDashboardDefinition = @file_get_contents($sDashboardFile);
$sDashboardDefinition = @file_get_contents($sDashboardFileSanitized);
}
@@ -937,7 +942,7 @@ class RuntimeDashboard extends Dashboard
$oDashboard = new RuntimeDashboard($sDashBoardId);
$oDashboard->FromXml($sDashboardDefinition);
$oDashboard->SetCustomFlag($bCustomized);
$oDashboard->SetDefinitionFile($sDashboardFile);
$oDashboard->SetDefinitionFile($sDashboardFileSanitized);
} else {
$oDashboard = null;
}
@@ -1136,7 +1141,7 @@ JS
$oToolbar->AddSubBlock($oActionButton);
$aActions = array();
$sFile = addslashes($this->sDefinitionFile);
$sFile = addslashes(utils::LocalPath($this->sDefinitionFile));
$sJSExtraParams = json_encode($aExtraParams);
if ($this->HasCustomDashboard()) {
$oEdit = new JSPopupMenuItem('UI:Dashboard:Edit', Dict::S('UI:Dashboard:EditCustom'), "return EditDashboard('{$this->sId}', '$sFile', $sJSExtraParams)");
@@ -1259,12 +1264,12 @@ EOF
$sOkButtonLabel = Dict::S('UI:Button:Save');
$sCancelButtonLabel = Dict::S('UI:Button:Cancel');
$sId = addslashes($this->sId);
$sLayoutClass = addslashes($this->sLayoutClass);
$sId = json_encode($this->sId);
$sLayoutClass = json_encode($this->sLayoutClass);
$sAutoReload = $this->bAutoReload ? 'true' : 'false';
$sAutoReloadSec = (string) $this->iAutoReloadSec;
$sTitle = addslashes($this->sTitle);
$sFile = addslashes($this->GetDefinitionFile());
$sTitle = json_encode($this->sTitle);
$sFile = json_encode($this->GetDefinitionFile());
$sUrl = utils::GetAbsoluteUrlAppRoot().'pages/ajax.render.php';
$sReloadURL = $this->GetReloadURL();
@@ -1320,15 +1325,15 @@ $('#dashboard_editor').dialog({
});
$('#dashboard_editor .ui-layout-center').runtimedashboard({
dashboard_id: '$sId',
layout_class: '$sLayoutClass',
title: '$sTitle',
dashboard_id: $sId,
layout_class: $sLayoutClass,
title: $sTitle,
auto_reload: $sAutoReload,
auto_reload_sec: $sAutoReloadSec,
submit_to: '$sUrl',
submit_parameters: {operation: 'save_dashboard', file: '$sFile', extra_params: $sJSExtraParams, reload_url: '$sReloadURL'},
submit_parameters: {operation: 'save_dashboard', file: $sFile, extra_params: $sJSExtraParams, reload_url: '$sReloadURL'},
render_to: '$sUrl',
render_parameters: {operation: 'render_dashboard', file: '$sFile', extra_params: $sJSExtraParams, reload_url: '$sReloadURL'},
render_parameters: {operation: 'render_dashboard', file: $sFile, extra_params: $sJSExtraParams, reload_url: '$sReloadURL'},
new_dashlet_parameters: {operation: 'new_dashlet'}
});

View File

@@ -1,5 +1,5 @@
<?php
// Copyright (C) 2010-2021 Combodo SARL
// Copyright (C) 2010-2023 Combodo SARL
//
// This file is part of iTop.
//
@@ -23,7 +23,7 @@ use Combodo\iTop\Application\UI\Base\Layout\Dashboard\DashboardRow;
/**
* Dashboard presentation
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
abstract class DashboardLayout

View File

@@ -1,5 +1,5 @@
<?php
// Copyright (C) 2012-2021 Combodo SARL
// Copyright (C) 2012-2023 Combodo SARL
//
// This file is part of iTop.
//
@@ -29,7 +29,7 @@ require_once(APPROOT.'application/forms.class.inc.php');
/**
* Base class for all 'dashlets' (i.e. widgets to be inserted into a dashboard)
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
abstract class Dashlet
@@ -667,7 +667,7 @@ class DashletUnknown extends Dashlet
*/
public function GetPropertiesFields(DesignerForm $oForm)
{
$oField = new DesignerLongTextField('xml', Dict::S('UI:DashletUnknown:Prop-XMLConfiguration'), $this->sOriginalDashletXML);
$oField = new DesignerXMLField('xml', Dict::S('UI:DashletUnknown:Prop-XMLConfiguration'), $this->sOriginalDashletXML);
$oForm->AddField($oField);
}
@@ -869,7 +869,7 @@ class DashletPlainText extends Dashlet
public function Render($oPage, $bEditMode = false, $aExtraParams = array())
{
$sText = $this->aProperties['text'];
$sText = utils::EscapeHtml($sText);
$sText = utils::EscapeHtml(Dict::S($sText));
$sText = str_replace(array("\r\n", "\n", "\r"), "<br/>", $sText);
$sId = 'plaintext_'.($bEditMode ? 'edit_' : '').$this->sId;

View File

@@ -186,8 +186,33 @@
</menu>
</menus>
<events>
<event id="EVENT_DB_BEFORE_WRITE" _delta="define">
<name>Before create or update</name>
<description><![CDATA[An object is about to be written into the database.
The object can be modified.]]></description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
<replaces>DBObject::OnInsert</replaces>
<event_data>
<event_datum id="object">
<description>The object inserted</description>
<type>DBObject</type>
</event_datum>
<event_datum id="is_new">
<description>Creation flag</description>
<type>boolean</type>
</event_datum>
<event_datum id="debug_info">
<description>Debug string</description>
<type>string</type>
</event_datum>
</event_data>
</event>
<event id="EVENT_DB_CHECK_TO_WRITE" _delta="define">
<description>Check an object before it is written into the database (no change possible). Call DBObject::AddCheckIssue() to signal an issue</description>
<name>Check to write</name>
<description><![CDATA[Check an object before it is written into the database (no change possible).
Call $this->AddCheckIssue() to signal an issue.]]></description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
@@ -197,14 +222,20 @@
<description>The object to check</description>
<type>DBObject</type>
</event_datum>
<event_datum id="is_new">
<description>Creation flag</description>
<type>boolean</type>
</event_datum>
<event_datum id="debug_info">
<description>Debug string</description>
<type>string</type>
</event_datum>
</event_data>
</event>
<event id="EVENT_DB_CREATE_DONE" _delta="define">
<description>An object has been created into the database. The modifications can be propagated to other objects.</description>
<event id="EVENT_DB_AFTER_WRITE" _delta="define">
<name>After create or update</name>
<description><![CDATA[An object has been written into the database.
The modifications can be propagated to other objects.]]></description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
@@ -214,22 +245,13 @@
<description>The object inserted</description>
<type>DBObject</type>
</event_datum>
<event_datum id="debug_info">
<description>Debug string</description>
<type>string</type>
<event_datum id="is_new">
<description>Creation flag</description>
<type>boolean</type>
</event_datum>
</event_data>
</event>
<event id="EVENT_DB_UPDATE_DONE" _delta="define">
<description>An object has been updated into the database and reloaded.</description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
<replaces>DBObject::AfterUpdate</replaces>
<event_data>
<event_datum id="object">
<description>The object updated</description>
<type>DBObject</type>
<event_datum id="changes">
<description><![CDATA[For updates, the list of changes done during this operation]]></description>
<type>array</type>
</event_datum>
<event_datum id="debug_info">
<description>Debug string</description>
@@ -238,7 +260,9 @@
</event_data>
</event>
<event id="EVENT_DB_CHECK_TO_DELETE" _delta="define">
<description>Check an object before it is deleted from the database. Call DBObject::AddDeleteIssue() to signal an issue</description>
<name>Check to delete</name>
<description><![CDATA[Check an object before it is deleted from the database.
Call $this->AddDeleteIssue() to signal an issue.]]></description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
@@ -254,8 +278,27 @@
</event_datum>
</event_data>
</event>
<event id="EVENT_DB_DELETE_DONE" _delta="define">
<description>An object has been deleted into the database</description>
<event id="EVENT_DB_ABOUT_TO_DELETE" _delta="define">
<name>Before delete</name>
<description><![CDATA[An object is about to be deleted from the database]]></description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
<replaces>cmdbAbstractObject::OnDelete</replaces>
<event_data>
<event_datum id="object">
<description>The object about to be deleted</description>
<type>DBObject</type>
</event_datum>
<event_datum id="debug_info">
<description>Debug string</description>
<type>string</type>
</event_datum>
</event_data>
</event>
<event id="EVENT_DB_AFTER_DELETE" _delta="define">
<name>After delete</name>
<description><![CDATA[An object has been deleted into the database]]></description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
@@ -271,8 +314,10 @@
</event_datum>
</event_data>
</event>
<event id="EVENT_DB_BEFORE_APPLY_STIMULUS" _delta="define">
<description>A stimulus is about to be applied to an object</description>
<event id="EVENT_ENUM_TRANSITIONS" _delta="define">
<name>Enum transitions</name>
<description><![CDATA[Manage the allowed transitions in current object state.
The only action allowed is to deny transitions with $this->DenyTransition()]]></description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
@@ -281,89 +326,9 @@
<description>The object where the stimulus is targeted</description>
<type>DBObject</type>
</event_datum>
<event_datum id="stimulus">
<description>Current stimulus applied</description>
<type>string</type>
</event_datum>
<event_datum id="previous_state">
<description>Object previous state</description>
<type>string</type>
</event_datum>
<event_datum id="new_state">
<description>Object new state</description>
<type>string</type>
</event_datum>
<event_datum id="save_object">
<description>The object must be saved in the database</description>
<type>boolean</type>
</event_datum>
<event_datum id="debug_info">
<description>Debug string</description>
<type>string</type>
</event_datum>
</event_data>
</event>
<event id="EVENT_DB_AFTER_APPLY_STIMULUS" _delta="define">
<description>A stimulus has been applied to an object</description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
<event_data>
<event_datum id="object">
<description>The object where the stimulus is targeted</description>
<type>DBObject</type>
</event_datum>
<event_datum id="stimulus">
<description>Current stimulus applied</description>
<type>string</type>
</event_datum>
<event_datum id="previous_state">
<description>Object previous state</description>
<type>string</type>
</event_datum>
<event_datum id="new_state">
<description>Object new state</description>
<type>string</type>
</event_datum>
<event_datum id="save_object">
<description>The object is asked to be saved in the database</description>
<type>boolean</type>
</event_datum>
<event_datum id="debug_info">
<description>Debug string</description>
<type>string</type>
</event_datum>
</event_data>
</event>
<event id="EVENT_DB_APPLY_STIMULUS_FAILED" _delta="define">
<description>A stimulus has failed</description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
<event_data>
<event_datum id="action">
<description>The action that failed to apply the stimulus</description>
<type>string</type>
</event_datum>
<event_datum id="object">
<description>The object where the stimulus is targeted</description>
<type>DBObject</type>
</event_datum>
<event_datum id="stimulus">
<description>Current stimulus applied</description>
<type>string</type>
</event_datum>
<event_datum id="previous_state">
<description>Object previous state</description>
<type>string</type>
</event_datum>
<event_datum id="new_state">
<description>Object new state</description>
<type>string</type>
</event_datum>
<event_datum id="save_object">
<description>The object must be saved in the database</description>
<type>boolean</type>
<event_datum id="allowed_stimuli">
<description>The list of available stimuli in the current state</description>
<type>array</type>
</event_datum>
<event_datum id="debug_info">
<description>Debug string</description>
@@ -372,7 +337,8 @@
</event_data>
</event>
<event id="EVENT_DB_LINKS_CHANGED" _delta="define">
<description>At least one link class was changed</description>
<name>Links on object have changed</name>
<description><![CDATA[At least one link class was changed]]></description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
@@ -388,7 +354,9 @@
</event_data>
</event>
<event id="EVENT_DB_OBJECT_RELOAD" _delta="define">
<description>An object has been re-loaded from the database</description>
<name>Object reload</name>
<internal>true</internal>
<description><![CDATA[An object has been re-loaded from the database]]></description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
@@ -404,7 +372,8 @@
</event_data>
</event>
<event id="EVENT_DB_COMPUTE_VALUES" _delta="define">
<description>An object needs to be recomputed after changes</description>
<name>Recompute object values</name>
<description><![CDATA[An object needs to be recomputed after changes]]></description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
@@ -421,7 +390,8 @@
</event_data>
</event>
<event id="EVENT_DB_ARCHIVE" _delta="define">
<description>An object has been archived</description>
<name>Object archived</name>
<description><![CDATA[An object has been archived]]></description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
@@ -437,7 +407,8 @@
</event_data>
</event>
<event id="EVENT_DB_UNARCHIVE" _delta="define">
<description>An object has been unarchived</description>
<name>Object unarchived</name>
<description><![CDATA[An object has been unarchived]]></description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
@@ -453,7 +424,9 @@
</event_data>
</event>
<event id="EVENT_DB_SET_ATTRIBUTES_FLAGS" _delta="define">
<description>Set object attributes flags. Call cmdbAbstractObject::AddAttributeFlags() for all the attributes to be set for this target state.</description>
<name>Set attributes flags</name>
<description><![CDATA[Set object attributes flags.
Call $this->AddAttributeFlags() for all the attributes to be set for this target state.]]></description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
@@ -464,7 +437,7 @@
</event_datum>
<event_datum id="target_state">
<description>The target state in which to evaluate the flags</description>
<type>array</type>
<type>string</type>
</event_datum>
<event_datum id="debug_info">
<description>Debug string</description>
@@ -473,7 +446,9 @@
</event_data>
</event>
<event id="EVENT_DB_SET_INITIAL_ATTRIBUTES_FLAGS" _delta="define">
<description>Set object initial attributes flags. Call cmdbAbstractObject::AddInitialAttributeFlags() for all the initial attributes to be set initially.</description>
<name>Set initial attributes flags</name>
<description><![CDATA[Set object initial attributes flags.
Call $this->AddInitialAttributeFlags() for all the initial attributes to be set initially.]]></description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
@@ -489,7 +464,8 @@
</event_data>
</event>
<event id="EVENT_DOWNLOAD_DOCUMENT" _delta="define">
<description>A document has been downloaded from the GUI</description>
<name>Document downloaded</name>
<description><![CDATA[A document has been downloaded from the GUI]]></description>
<sources>
<source id="Document">Document</source>
</sources>
@@ -509,7 +485,9 @@
</event_data>
</event>
<event id="EVENT_LOGIN" _delta="define">
<description>Inform the listeners about the connection states</description>
<name>Login</name>
<internal>true</internal>
<description><![CDATA[Inform the listeners about the connection states]]></description>
<event_data>
<event_datum id="code">
<description>The login step result code (LoginWebPage::EXIT_CODE_...) </description>

View File

@@ -3,7 +3,7 @@
use Combodo\iTop\Renderer\Console\ConsoleBlockRenderer;
/**
* Copyright (C) 2013-2021 Combodo SARL
* Copyright (C) 2013-2023 Combodo SARL
*
* This file is part of iTop.
*
@@ -386,7 +386,7 @@ EOF;
if (!$oPage->IsPrintableVersion())
{
$sMenuTitle = Dict::S('UI:ConfigureThisList');
$sHtml = '<div class="itop_popup toolkit_menu" id="tk_'.$this->iListId.'"><ul><li><i class="fas fa-tools"></i><i class="fas fa-caret-down"></i><ul>';
$sHtml = '<div class="itop_popup toolkit_menu" id="tk_'.$this->iListId.'"><ul><li aria-label="'.Dict::S('UI:Menu:Toolkit').'"><i class="fas fa-tools"></i><i class="fas fa-caret-down"></i><ul>';
$oMenuItem1 = new JSPopupMenuItem('iTop::ConfigureList', $sMenuTitle, "$('#datatable_dlg_".$this->iListId."').dialog('open');");
$aActions = array(

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
@@ -24,6 +24,7 @@ use Combodo\iTop\Application\UI\DisplayBlock\BlockChartAjaxBars\BlockChartAjaxBa
use Combodo\iTop\Application\UI\DisplayBlock\BlockChartAjaxPie\BlockChartAjaxPie;
use Combodo\iTop\Application\UI\DisplayBlock\BlockCsv\BlockCsv;
use Combodo\iTop\Application\UI\DisplayBlock\BlockList\BlockList;
use Combodo\iTop\Service\Router\Router;
require_once(APPROOT.'/application/utils.inc.php');
@@ -35,6 +36,72 @@ require_once(APPROOT.'/application/utils.inc.php');
*/
class DisplayBlock
{
/**
* @var string
* @since 3.1.0
*/
public const ENUM_STYLE_COUNT = 'count';
/**
* @var string
* @since 3.1.0
*/
public const ENUM_STYLE_JOIN = 'join';
/**
* @var string For regular list (objects or static data)
* @since 3.1.0
*/
public const ENUM_STYLE_LIST = 'list';
/**
* @var string For search results
* @since 3.1.0
*/
public const ENUM_STYLE_LIST_SEARCH = 'list_search';
/**
* @var string For objects list in other objects (direct / indirect linksets)
* @since 3.1.0
*/
public const ENUM_STYLE_LIST_IN_OBJECT = 'listInObject';
/**
* @var string
* @since 3.1.0
*/
public const ENUM_STYLE_ACTIONS = 'actions';
/**
* @var string
* @since 3.1.0
*/
public const ENUM_STYLE_SUMMARY = 'summary';
/**
* @var string
* @since 3.1.0
*/
public const ENUM_STYLE_CSV = 'csv';
/**
* @var string
* @since 3.1.0
*/
public const ENUM_STYLE_SEARCH = 'search';
/**
* @var string
* @since 3.1.0
*/
public const ENUM_STYLE_CHART = 'chart';
/**
* @var string
* @since 3.1.0
*/
public const ENUM_STYLE_CHART_AJAX = 'chart_ajax';
const TAG_BLOCK = 'itopblock';
/** @var \DBSearch */
protected $m_oFilter;
@@ -68,7 +135,7 @@ class DisplayBlock
*
* @throws \ApplicationException
*/
public function __construct(DBSearch $oFilter, $sStyle = 'list', $bAsynchronous = false, $aParams = array(), $oSet = null)
public function __construct(DBSearch $oFilter, $sStyle = self::ENUM_STYLE_LIST, $bAsynchronous = false, $aParams = array(), $oSet = null)
{
$this->m_oFilter = $oFilter->DeepClone();
$this->m_aConditions = array();
@@ -95,13 +162,13 @@ class DisplayBlock
protected function GetAllowedParams(string $sStyle): array
{
$aAllowedParams = [
'actions' => [
static::ENUM_STYLE_ACTIONS => [
'context_filter',
/** int if != 0 filter with user context */
'display_limit',
/** for dashlet*/
],
'chart' => [
static::ENUM_STYLE_CHART => [
'chart_type',
/** string 'pie' or 'bars' */
'group_by',
@@ -124,7 +191,7 @@ class DisplayBlock
/** string title */
'display_limit',
],
'chart_ajax' => [
static::ENUM_STYLE_CHART_AJAX => [
'chart_type', /** string 'pie' or 'bars' */
'group_by', /** string group by att code */
'group_by_expr', /** string group by expression */
@@ -135,7 +202,7 @@ class DisplayBlock
'order_by', /** string either 'attribute' group_by attcode or 'function' aggregation_function value */
'order_direction', /** string order direction 'asc' or 'desc' */
],
'count' => [
static::ENUM_STYLE_COUNT => [
'group_by', /** string group by att code */
'group_by_expr', /** string group by expression */
'group_by_label', /** string aggregation column name */
@@ -151,15 +218,15 @@ class DisplayBlock
/** string order direction 'asc' or 'desc' */
'display_limit',
],
'csv' => [],
'join' => array_merge([
static::ENUM_STYLE_CSV => [],
static::ENUM_STYLE_JOIN => array_merge([
'display_aliases',
/** string comma separated list of class aliases to display */
'group_by',
/** string group by att code */
], DataTableUIBlockFactory::GetAllowedParams()),
'links' => DataTableUIBlockFactory::GetAllowedParams(),
'list' => array_merge([
static::ENUM_STYLE_LIST => array_merge([
'update_history',
/** bool add breadcrumb entry */
'default',
@@ -177,7 +244,25 @@ class DisplayBlock
'refresh_action',
/**to add refresh button in datatable*/
], DataTableUIBlockFactory::GetAllowedParams()),
'list_search' => array_merge([
static::ENUM_STYLE_LIST_IN_OBJECT => array_merge([
'update_history',
/** bool add breadcrumb entry */
'default',
/** array of default attribute values */
'menu_actions_target',
/** string html link target */
'toolkit_menu',
/** bool add toolkit menu */
'selectionMode',
/**positive or negative*/
'max_height',
/** string Max. height of the list, if not specified will occupy all the available height no matter the pagination */
'localize_values',
/** param for export.php */
'refresh_action',
/**to add refresh button in datatable*/
], DataTableUIBlockFactory::GetAllowedParams()),
static::ENUM_STYLE_LIST_SEARCH => array_merge([
'update_history',
/** bool add breadcrumb entry */
'result_list_outer_selector',
@@ -200,7 +285,7 @@ class DisplayBlock
'search_header_force_dropdown', /** Html for <select> to choose the class to search */
'this',
], DataTableUIBlockFactory::GetAllowedParams()),
'search' => array_merge([
static::ENUM_STYLE_SEARCH => array_merge([
'baseClass',
/** string search root class */
'open',
@@ -222,7 +307,7 @@ class DisplayBlock
'class',
/** string class searched */
], DataTableUIBlockFactory::GetAllowedParams()),
'summary' => [
static::ENUM_STYLE_SUMMARY => [
'status[block]',
/** string object 'status' att code */
'status_codes[block]',
@@ -306,7 +391,7 @@ class DisplayBlock
}
}
}
public function GetFilter()
{
return $this->m_oFilter;
@@ -498,7 +583,7 @@ class DisplayBlock
');
}
if ($this->m_sStyle == 'list') // Search form need to extract result list extra data, the simplest way is to expose this configuration
if ($this->m_sStyle == static::ENUM_STYLE_LIST) // Search form need to extract result list extra data, the simplest way is to expose this configuration
{
$listJsonExtraParams = json_encode(json_encode($aExtraParams));
$oPage->add_ready_script("
@@ -565,7 +650,7 @@ class DisplayBlock
if ($this->m_oSet == null) {
// In case of search, the context filtering is done by the search itself
if (($this->m_sStyle != 'links') && ($this->m_sStyle != 'search') && ($this->m_sStyle != 'list_search')) {
if (($this->m_sStyle != 'links') && ($this->m_sStyle != static::ENUM_STYLE_SEARCH) && ($this->m_sStyle != static::ENUM_STYLE_LIST_SEARCH)) {
$oAppContext = new ApplicationContext();
$sClass = $this->m_oFilter->GetClass();
$aFilterCodes = MetaModel::GetFiltersList($sClass);
@@ -619,7 +704,7 @@ class DisplayBlock
if ($bDoSearch)
{
// Keep the table_id identifying this table if we're performing a search
$sTableId = utils::ReadParam('_table_id_', null, false, 'raw_data');
$sTableId = utils::ReadParam('_table_id_', null, false, utils::ENUM_SANITIZATION_FILTER_ELEMENT_IDENTIFIER);
if ($sTableId != null)
{
$aExtraParams['table_id'] = $sTableId;
@@ -652,8 +737,8 @@ class DisplayBlock
$this->m_oSet->SetShowObsoleteData($this->m_bShowObsoleteData);
switch($this->m_sStyle) {
case 'list_search':
case 'list':
case static::ENUM_STYLE_LIST_SEARCH:
case static::ENUM_STYLE_LIST:
break;
default:
// N°3473: except for 'list_search' and 'list' (which have more granularity, see the other switch below),
@@ -666,19 +751,20 @@ class DisplayBlock
}
switch ($this->m_sStyle) {
case 'count':
case static::ENUM_STYLE_COUNT:
$oBlock = $this->RenderCount($aExtraParams);
break;
case 'join':
case static::ENUM_STYLE_JOIN:
$oBlock = $this->RenderJoin($aExtraParams, $oPage);
break;
case 'list_search':
case static::ENUM_STYLE_LIST_SEARCH:
$oBlock = $this->RenderListSearch($aExtraParams, $oPage);
break;
case 'list':
case static::ENUM_STYLE_LIST:
case static::ENUM_STYLE_LIST_IN_OBJECT:
$oBlock = $this->RenderList($aExtraParams, $oPage);
break;
@@ -686,27 +772,27 @@ class DisplayBlock
$oBlock = $this->RenderLinks($oPage, $aExtraParams);
break;
case 'actions':
case static::ENUM_STYLE_ACTIONS:
$oBlock = $this->RenderActions($aExtraParams);
break;
case 'summary':
case static::ENUM_STYLE_SUMMARY:
$oBlock = $this->RenderSummary($aExtraParams);
break;
case 'csv':
case static::ENUM_STYLE_CSV:
$oBlock = $this->RenderCsv($oAppContext);
break;
case 'search':
case static::ENUM_STYLE_SEARCH:
$oBlock = $this->RenderSearch($oPage, $aExtraParams);
break;
case 'chart':
case static::ENUM_STYLE_CHART:
$oBlock = $this->RenderChart($sId, $aQueryParams, $aExtraParams);
break;
case 'chart_ajax':
case static::ENUM_STYLE_CHART_AJAX:
$oBlock = $this->RenderChartAjax($aExtraParams);
break;
@@ -750,7 +836,7 @@ class DisplayBlock
}
}
}
if (($bAutoReload) && ($this->m_sStyle != 'search')) // Search form do NOT auto-reload
if (($bAutoReload) && ($this->m_sStyle != static::ENUM_STYLE_SEARCH)) // Search form do NOT auto-reload
{
// Used either for asynchronous or auto_reload
// does a json_encode twice to get a string usable as function parameter
@@ -997,6 +1083,7 @@ JS
$this->m_oSet = new CMDBObjectSet($this->m_oFilter, array(), $aQueryParams);
$this->m_oSet->SetShowObsoleteData($this->m_bShowObsoleteData);
}
// Summary details
$aCounts = array();
$aStateLabels = array();
@@ -1043,6 +1130,18 @@ JS
}
$oBlock = new UIContentBlockWithJSRefreshCallback(null, ["ibo-dashlet-header-dynamic--container"]);
// N°6394 Make sure to sort elements as defined in the datamodel
if (utils::IsNotNullOrEmptyString($sStateAttrCode)) {
$oAttDef = MetaModel::GetAttributeDef($sClass, $sStateAttrCode);
$aAllowedValues = $oAttDef->GetAllowedValues() ?? [];
$AllowedValuesKeys = array_keys($aAllowedValues);
uksort($aStateLabels, function ($sKey1, $sKey2) use ($AllowedValuesKeys) {
return array_search($sKey1, $AllowedValuesKeys) > array_search($sKey2, $AllowedValuesKeys) ? 1 : -1;
});
}
foreach ($aStateLabels as $sStateValue => $sStateLabel) {
$aCount = $aCounts[$sStateValue];
$sHyperlink = $aCount['link'];
@@ -1051,7 +1150,7 @@ JS
$oPill = PillFactory::MakeForState($sClass, $sStateValue);
// N°5849 - Unencode label for ExternalKey attribute because friendlyname is already html encoded thanks to DBObject::GetName() in AttributeExternalKey::GetAllowedValues(). (A fix in this function may have too much impact).
if ($oAttDef instanceof AttributeExternalKey) {
$sPillTooltip = htmlspecialchars_decode($sStateLabel, ENT_QUOTES | ENT_DISALLOWED | ENT_HTML5);
$sPillTooltip = utils::EscapedHtmlDecode($sStateLabel);
$sPillLabel = $sStateLabel;
} else {
$sPillTooltip = $sStateLabel;
@@ -1147,6 +1246,10 @@ JS
} else {
$oBlock = DashletFactory::MakeForDashletBadge($sClassIconUrl, $sHyperlink, $iCount, $sClassLabel, null, null, $aRefreshParams);
}
$sClassDescription = MetaModel::GetClassDescription($sClass);
if (utils::IsNotNullOrEmptyString($sClassDescription)) {
$oBlock->SetClassDescription($sClassDescription);
}
return $oBlock;
}
@@ -1307,51 +1410,47 @@ JS
$oBlock->sFilter = $this->m_oFilter->ToOQL();
if (count($aClasses) > 1) {
// Check the classes that can be read (i.e authorized) by this user...
foreach ($aClasses as $sAlias => $sClassName) {
if (UserRights::IsActionAllowed($sClassName, UR_ACTION_READ, $this->m_oSet) != UR_ALLOWED_NO) {
$aAuthorizedClasses[$sAlias] = $sClassName;
}
}
if (count($aAuthorizedClasses) > 0) {
if (empty($aExtraParams['currentId'])) {
$iListId = utils::GetUniqueId(); // Works only if not in an Ajax page !!
} else {
$iListId = $aExtraParams['currentId'];
}
$oBlock->AddSubBlock(DataTableUIBlockFactory::MakeForObject($oPage, $iListId, $this->m_oSet, $aExtraParams));
} else {
// Not authorized
$oBlock->bNotAuthorized = true;
}
} else {
if (isset($aExtraParams['update_history']) && true == $aExtraParams['update_history']) {
$sSearchFilter = $this->m_oSet->GetFilter()->serialize();
// Limit the size of the URL (N°1585 - request uri too long)
if (strlen($sSearchFilter) < SERVER_MAX_URL_LENGTH) {
$oBlock->sEventAttachedData = json_encode(array(
'filter' => $sSearchFilter,
'breadcrumb_id' => "ui-search-".$this->m_oSet->GetClass(),
'breadcrumb_label' => MetaModel::GetName($this->m_oSet->GetClass()),
'breadcrumb_max_count' => utils::GetConfig()->Get('breadcrumb.max_count'),
'breadcrumb_instance_id' => MetaModel::GetConfig()->GetItopInstanceid(),
'breadcrumb_icon' => 'fas fa-search',
'breadcrumb_icon_type' => iTopWebPage::ENUM_BREADCRUMB_ENTRY_ICON_TYPE_CSS_CLASSES,
));
}
}
// The list is made of only 1 class of objects, actions on the list are possible
if (UserRights::IsActionAllowed($this->m_oSet->GetClass(), UR_ACTION_READ, $this->m_oSet) == UR_ALLOWED_YES) {
$oBlock->AddSubBlock(cmdbAbstractObject::GetDisplaySetBlock($oPage, $this->m_oSet, $aExtraParams));
} else {
$oBlock->bEmptySet = true;
$oBlock->sClass = $this->m_oFilter->GetClass();
$oBlock->sClassLabel = MetaModel::GetName($oBlock->sClass);
// Check the classes that can be read (i.e authorized) by this user...
foreach ($aClasses as $sAlias => $sClassName) {
if (UserRights::IsActionAllowed($sClassName, UR_ACTION_READ, $this->m_oSet) != UR_ALLOWED_NO) {
$aAuthorizedClasses[$sAlias] = $sClassName;
}
}
if (count($aAuthorizedClasses) === 0) {
// Not authorized
$oBlock->bNotAuthorized = true;
$oBlock->bEmptySet = true;
$oBlock->sClass = $this->m_oFilter->GetClass();
$oBlock->sClassLabel = MetaModel::GetName($oBlock->sClass);
return $oBlock;
}
if (isset($aExtraParams['update_history']) && true == $aExtraParams['update_history']) {
$sSearchFilter = $this->m_oSet->GetFilter()->serialize();
// Limit the size of the URL (N°1585 - request uri too long)
if (strlen($sSearchFilter) < SERVER_MAX_URL_LENGTH) {
$oBlock->sEventAttachedData = json_encode(array(
'filter' => $sSearchFilter,
'breadcrumb_id' => "ui-search-".$this->m_oSet->GetClass(),
'breadcrumb_label' => MetaModel::GetName($this->m_oSet->GetClass()),
'breadcrumb_max_count' => utils::GetConfig()->Get('breadcrumb.max_count'),
'breadcrumb_instance_id' => MetaModel::GetConfig()->GetItopInstanceid(),
'breadcrumb_icon' => 'fas fa-search',
'breadcrumb_icon_type' => iTopWebPage::ENUM_BREADCRUMB_ENTRY_ICON_TYPE_CSS_CLASSES,
));
}
}
$iListId = utils::IsNullOrEmptyString($aExtraParams['currentId']) ? utils::GetUniqueId() /* Works only if not in an Ajax page !! */ : $aExtraParams['currentId'];
// Note: Method calls not factorized into a single call with method name as a variable to keep track of DataTableUIBlockFactory calls as it is a critical / unstable component.
$oBlock->AddSubBlock(
$this->m_sStyle === static::ENUM_STYLE_LIST_IN_OBJECT ?
DataTableUIBlockFactory::MakeForObject($oPage, $iListId, $this->m_oSet, $aExtraParams) :
DataTableUIBlockFactory::MakeForResult($oPage, $iListId, $this->m_oSet, $aExtraParams)
);
return $oBlock;
}
@@ -1463,18 +1562,28 @@ JS
}
/**
* @deprecated 3.1.0 N°5957
*
* @param \WebPage $oPage
* @param array $aExtraParams
* @param string $sHtml
*
* @return \Combodo\iTop\Application\UI\Base\Component\Html\Html|\Combodo\iTop\Application\UI\Base\Layout\UIContentBlock|string
* @throws \ApplicationException
* @throws \ArchivedObjectException
* @throws \CoreException
* @throws \CoreUnexpectedValue
* @throws \DictExceptionMissingString
* @throws \MissingQueryArgument
* @throws \MySQLException
* @throws \MySQLHasGoneAwayException
* @throws \OQLException
* @throws \ReflectionException
*/
protected function RenderLinks(WebPage $oPage, array $aExtraParams)
{
// Note: No deprecation ticket yet as we want to wait and see if people / code actually use this method, in which case we might keep it.
DeprecatedCallsLog::NotifyDeprecatedPhpMethod('This method is most likely not used throughout the application and will be removed soon. If you ever see this message, please inform us.');
$oBlock = null;
if (($this->m_oSet->CountWithLimit(1) > 0) && (UserRights::IsActionAllowed($this->m_oSet->GetClass(), UR_ACTION_READ, $this->m_oSet) == UR_ALLOWED_YES)) {
$oBlock = cmdbAbstractObject::GetDisplaySetBlock($oPage, $this->m_oSet, $aExtraParams);
@@ -1578,6 +1687,7 @@ JS
$iTotalCount = 0;
$aURLs = array();
foreach ($aRes as $iRow => $aRow) {
$sValue = $aRow['grouped_by_1'];
$sHtmlValue = $oGroupByExp->MakeValueLabel($this->m_oFilter, $sValue, $sValue);
@@ -1588,6 +1698,7 @@ JS
'value' => (float)$aRow[$sFctVar],
);
// Build the search for this subset
$oSubsetSearch = $this->m_oFilter->DeepClone();
$oCondition = new BinaryExpression($oGroupByExp, '=', new ScalarExpression($sValue));
@@ -1604,9 +1715,13 @@ JS
switch ($sChartType) {
case 'bars':
$aNames = array();
$iMaxNbCharsInLabel = 0;
$aNames = [];
foreach ($aValues as $idx => $aValue) {
$aNames[$idx] = $aValue['label'];
if ($iMaxNbCharsInLabel < mb_strlen($aValue['label'])) {
$iMaxNbCharsInLabel = mb_strlen($aValue['label']);
}
}
$oBlock = new BlockChartAjaxBars();
$oBlock->sJSNames = json_encode($aNames);
@@ -1614,21 +1729,31 @@ JS
$oBlock->sId = $sId;
$oBlock->sJSURLs = $sJSURLs;
$oBlock->sURLForRefresh = str_replace("'", "\'", $sUrl);
$oBlock->iMaxNbCharsInLabel = $iMaxNbCharsInLabel;
break;
case 'pie':
$aColumns = array();
$aNames = array();
$aColumns = [];
$aNames = [];
foreach ($aValues as $idx => $aValue) {
$aColumns[] = array('series_'.$idx, (float)$aValue['value']);
$aNames['series_'.$idx] = $aValue['label'];
}
$iNbLinesToAddForName = 0;
if (count($aNames) > 50) {
// Calculation of the number of legends line add to the height of the graph to have a maximum of 5 legend columns
$iNbLinesIncludedInChartHeight = 10;
$iNbLinesToAddForName = ceil(count($aNames) / 5) - $iNbLinesIncludedInChartHeight;
}
$oBlock = new BlockChartAjaxPie();
$oBlock->sJSColumns = json_encode($aColumns);
$oBlock->sJSNames = json_encode($aNames);
$oBlock->sId = $sId;
$oBlock->sJSURLs = $sJSURLs;
$oBlock->sURLForRefresh = str_replace("'", "\'", $sUrl);
$oBlock->iNbLinesToAddForName = $iNbLinesToAddForName;
break;
}
if (isset($aExtraParams["surround_with_panel"]) && $aExtraParams["surround_with_panel"]) {
@@ -1680,7 +1805,6 @@ JS
$oBlock->sJsonParams = json_encode($aParamsToPost);
return $oBlock;
}
}
/**
@@ -1722,11 +1846,12 @@ class MenuBlock extends DisplayBlock
*/
public function GetRenderContent(WebPage $oPage, array $aExtraParams, string $sId)
{
$oRouter = Router::GetInstance();
$oRenderBlock = new UIContentBlock();
if ($this->m_sStyle == 'popup') // popup is a synonym of 'list' for backward compatibility
{
$this->m_sStyle = 'list';
$this->m_sStyle = static::ENUM_STYLE_LIST;
}
$sClass = $this->GetFilter()->GetClass();
@@ -1736,7 +1861,12 @@ class MenuBlock extends DisplayBlock
$iSetCount = $oSet->Count();
/** @var string $sRefreshAction JS snippet to run when clicking on the refresh button of the menu */
$sRefreshAction = $aExtraParams['refresh_action'] ?? '';
$bIsCreationInModalAllowed = isset($aExtraParams['creation_in_modal_is_allowed']) && $aExtraParams['creation_in_modal_is_allowed'] === true;
$bIsCreationInModal = isset($aExtraParams['creation_in_modal']) && $aExtraParams['creation_in_modal'] === true;
$bIsCreationDisallowed = isset($aExtraParams['creation_disallowed']) && $aExtraParams['creation_disallowed'] === true;
// Check rights
$oReflectionClass = new ReflectionClass($sClass);
$bIsCreationAllowed = (!$bIsCreationDisallowed && UserRights::IsActionAllowed($sClass, UR_ACTION_CREATE) === UR_ALLOWED_YES) && ($oReflectionClass->IsSubclassOf('cmdbAbstractObject'));
/** @var array $aRegularActions Any action other than a transition */
$aRegularActions = [];
@@ -1745,14 +1875,20 @@ class MenuBlock extends DisplayBlock
/** @var array $aToolkitActions Any "legacy" toolkit menu item, which are now displayed in the same menu as the $aRegularActions, after them */
$aToolkitActions = [];
if (!isset($aExtraParams['selection_mode']) || ($aExtraParams['selection_mode'] == "")) {
// Display menu actions only if...
if (
// ... NOT in a selection mode
(!isset($aExtraParams['selection_mode']) || ($aExtraParams['selection_mode'] == ""))
// ... "menu" parameter is NOT EXPLICITLY disabled
&& (!isset($aExtraParams['menu']) || $aExtraParams['menu'] === "1" || $aExtraParams['menu'] === true)
) {
$oAppContext = new ApplicationContext();
$sContext = $oAppContext->GetForLink();
if (utils::IsNotNullOrEmptyString($sContext)) {
$sContext = '&'.$sContext;
}
$oReflectionClass = new ReflectionClass($sClass);
$sFilter = $this->GetFilter()->serialize();
$sUIPage = cmdbAbstractObject::ComputeStandardUIPage($sClass);
$sRootUrl = utils::GetAbsoluteUrlAppRoot();
@@ -1772,17 +1908,114 @@ class MenuBlock extends DisplayBlock
}
}
// Check rights
$bIsCreationAllowed = (UserRights::IsActionAllowed($sClass, UR_ACTION_CREATE) === UR_ALLOWED_YES) && ($oReflectionClass->IsSubclassOf('cmdbAbstractObject'));
$bIsModifyAllowed = (UserRights::IsActionAllowed($sClass, UR_ACTION_MODIFY, $oSet) === UR_ALLOWED_YES) && ($oReflectionClass->IsSubclassOf('cmdbAbstractObject'));
// Check concurrent lock (can only be lock if we are handling a single object
$bLocked = false;
if ($iSetCount === 1) {
$oObj = $oSet->Fetch();
if (false === is_null($oObj)) {
if (MetaModel::GetConfig()->Get('concurrent_lock_enabled')) {
$aLockInfo = iTopOwnershipLock::IsLocked(get_class($oObj), $oObj->GetKey());
if ($aLockInfo['locked']) {
$bLocked = true;
}
}
}
unset($oObj);
$oSet->Rewind();
}
//--------------------------------------------
// Any object count, any style. Common actions
//--------------------------------------------
// Create in new tab
if ($bIsCreationAllowed && !$bIsCreationInModalAllowed) {
if ($bIsCreationAllowed && !$bIsCreationInModal) {
$this->AddNewObjectMenuAction($aRegularActions, $sClass, $sDefaultValuesAsUrlParams);
}
// Any style actions
// - Bulk actions on objects set
// Filter this list (provided by extra params has it need filter param)
if (array_key_exists('filter_this_list_url', $aExtraParams)) {
$aToolkitActions[] = [
'label' => Dict::S('UI:Menu:FilterList'),
'url' => $aExtraParams['filter_this_list_url'],
];
}
// Transitions
// - Do not perform time-consuming computations if there are too many objects in the list
$iLimit = MetaModel::GetConfig()->Get('complex_actions_limit');
if (
($iSetCount > 0) && (false === $bLocked) && MetaModel::HasLifecycle($sClass) &&
( ($iLimit == 0) || ($iSetCount < $iLimit) )
) {
$aTransitions = [];
// Processing (optimizations) and endpoints are not exactly the same depending on if there is only 1 object or a set
if ($iSetCount === 1) {
$oObj = $oSet->Fetch();
if (false === is_null($oObj)) {
$sLifecycleClass = get_class($oObj);
$aTransitions = $oObj->EnumTransitions();
$aUrlParams = [
'operation' => 'stimulus',
'id' => $oObj->GetKey(),
];
}
unset($oObj);
$oSet->Rewind();
} else {
// Life cycle actions may be available... if all objects are in the same state
// Group by <state>
$oGroupByExp = new FieldExpression(MetaModel::GetStateAttributeCode($sClass), $this->m_oFilter->GetClassAlias());
$aGroupBy = array('__state__' => $oGroupByExp);
$aQueryParams = array();
if (isset($aExtraParams['query_params'])) {
$aQueryParams = $aExtraParams['query_params'];
}
$sSql = $this->m_oFilter->MakeGroupByQuery($aQueryParams, $aGroupBy);
$aRes = CMDBSource::QueryToArray($sSql);
if (count($aRes) === 1) {
$sLifecycleClass = $sClass;
// All objects are in the same state...
$sState = $aRes[0]['__state__'];
$aTransitions = Metamodel::EnumTransitions($sLifecycleClass, $sState);
$aUrlParams = [
'operation' => 'select_bulk_stimulus',
'state' => $sState,
'filter' => $sFilter,
];
}
}
if (count($aTransitions)) {
$sUrlQueryString = http_build_query($aUrlParams).$sContext;
$aStimuli = Metamodel::EnumStimuli($sLifecycleClass);
foreach ($aTransitions as $sStimulusCode => $aTransitionDef) {
$oSet->Rewind();
// As soon as the user rights implementation will browse the object set,
// then we might consider using OptimizeColumnLoad() here
$iActionAllowed = UserRights::IsStimulusAllowed($sLifecycleClass, $sStimulusCode, $oSet);
$iActionAllowed = (get_class($aStimuli[$sStimulusCode]) === 'StimulusUserAction') ? $iActionAllowed : UR_ALLOWED_NO;
switch ($iActionAllowed) {
case UR_ALLOWED_YES:
case UR_ALLOWED_DEPENDS:
$aTransitionActions[$sStimulusCode] = array(
'label' => $aStimuli[$sStimulusCode]->GetLabel(),
'url' => "{$sRootUrl}pages/UI.php?stimulus=$sStimulusCode&class=$sLifecycleClass&{$sUrlQueryString}",
) + $aActionParams;
break;
default:
// Do nothing
}
}
$oSet->Rewind();
}
}
//------------------------------------------
// Several objects (bulk), any style actions
//------------------------------------------
if ($iSetCount > 1) {
// Bulk actions for each selected classes (eg. "link" and "remote" on n:n relations)
foreach ($aSelectedClasses as $sSelectedAlias => $sSelectedClass) {
@@ -1806,57 +2039,12 @@ class MenuBlock extends DisplayBlock
$this->AddBulkDeleteObjectsMenuAction($aRegularActions, $sSelectedClass, $oSelectedClassFilter->serialize(), 'UI:Menu:BulkDelete:'.$sSelectedAlias, Dict::Format('UI:Menu:BulkDelete_'.$sActionLabelCodeSuffix, $sSelectedClassName));
}
}
// Stimuli
$aStates = MetaModel::EnumStates($sClass);
// Do not perform time-consuming computations if there are too many objects in the list
$iLimit = MetaModel::GetConfig()->Get('complex_actions_limit');
if ((count($aStates) > 0) && (($iLimit == 0) || ($oSet->CountWithLimit($iLimit + 1) < $iLimit))) {
// Life cycle actions may be available... if all objects are in the same state
//
// Group by <state>
$oGroupByExp = new FieldExpression(MetaModel::GetStateAttributeCode($sClass), $this->m_oFilter->GetClassAlias());
$aGroupBy = array('__state__' => $oGroupByExp);
$aQueryParams = array();
if (isset($aExtraParams['query_params'])) {
$aQueryParams = $aExtraParams['query_params'];
}
$sSql = $this->m_oFilter->MakeGroupByQuery($aQueryParams, $aGroupBy);
$aRes = CMDBSource::QueryToArray($sSql);
if (count($aRes) == 1) {
// All objects are in the same state...
$sState = $aRes[0]['__state__'];
$aTransitions = Metamodel::EnumTransitions($sClass, $sState);
if (count($aTransitions)) {
$aStimuli = Metamodel::EnumStimuli($sClass);
foreach ($aTransitions as $sStimulusCode => $aTransitionDef) {
$oSet->Rewind();
// As soon as the user rights implementation will browse the object set,
// then we might consider using OptimizeColumnLoad() here
$iActionAllowed = UserRights::IsStimulusAllowed($sClass, $sStimulusCode, $oSet);
$iActionAllowed = (get_class($aStimuli[$sStimulusCode]) == 'StimulusUserAction') ? $iActionAllowed : UR_ALLOWED_NO;
switch ($iActionAllowed) {
case UR_ALLOWED_YES:
case UR_ALLOWED_DEPENDS:
$aTransitionActions[$sStimulusCode] = array(
'label' => $aStimuli[$sStimulusCode]->GetLabel(),
'url' => "{$sRootUrl}pages/UI.php?operation=select_bulk_stimulus&stimulus=$sStimulusCode&state=$sState&class=$sClass&filter=".urlencode($sFilter)."{$sContext}",
) + $aActionParams;
break;
default:
// Do nothing
}
}
}
}
}
}
// NOT "listInObject" style actions
if ($this->m_sStyle !== 'listInObject') {
//----------------------------------------------------
// Any style but NOT \DisplayBlock::ENUM_STYLE_LIST_IN_OBJECT (linksets) actions
//----------------------------------------------------
if ($this->m_sStyle !== static::ENUM_STYLE_LIST_IN_OBJECT) {
switch ($iSetCount) {
case 1:
$oObj = $oSet->Fetch();
@@ -1870,13 +2058,6 @@ class MenuBlock extends DisplayBlock
}
}
$bLocked = false;
if (MetaModel::GetConfig()->Get('concurrent_lock_enabled')) {
$aLockInfo = iTopOwnershipLock::IsLocked(get_class($oObj), $id);
if ($aLockInfo['locked']) {
$bLocked = true;
}
}
$bRawModifiedAllowed = (UserRights::IsActionAllowed($sClass, UR_ACTION_MODIFY, $oSet) == UR_ALLOWED_YES) && ($oReflectionClass->IsSubclassOf('cmdbAbstractObject'));
$bIsModifyAllowed = !$bLocked && $bRawModifiedAllowed;
$bIsDeleteAllowed = !$bLocked && UserRights::IsActionAllowed($sClass, UR_ACTION_DELETE, $oSet);
@@ -1885,7 +2066,7 @@ class MenuBlock extends DisplayBlock
if ($bIsModifyAllowed) {
$aRegularActions['UI:Menu:Modify'] = array(
'label' => Dict::S('UI:Menu:Modify'),
'url' => "{$sRootUrl}pages/$sUIPage?route=object.modify&class=$sClass&id=$id{$sContext}#",
'url' => $oRouter->GenerateUrl('object.modify', ['class' => $sClass, 'id' => $id]) . "{$sContext}#",
) + $aActionParams;
}
if ($bIsDeleteAllowed) {
@@ -1895,29 +2076,6 @@ class MenuBlock extends DisplayBlock
) + $aActionParams;
}
// Transitions / Stimuli
if (!$bLocked) {
$aTransitions = $oObj->EnumTransitions();
if (count($aTransitions)) {
$aStimuli = Metamodel::EnumStimuli(get_class($oObj));
foreach ($aTransitions as $sStimulusCode => $aTransitionDef) {
$iActionAllowed = (get_class($aStimuli[$sStimulusCode]) == 'StimulusUserAction') ? UserRights::IsStimulusAllowed($sClass,
$sStimulusCode, $oSet) : UR_ALLOWED_NO;
switch ($iActionAllowed) {
case UR_ALLOWED_YES:
$aTransitionActions[$sStimulusCode] = array(
'label' => $aStimuli[$sStimulusCode]->GetLabel(),
'url' => "{$sRootUrl}pages/UI.php?operation=stimulus&stimulus=$sStimulusCode&class=$sClass&id=$id{$sContext}",
) + $aActionParams;
break;
default:
// Do nothing
}
}
}
}
// Relations...
$aRelations = MetaModel::EnumRelationsEx($sClass);
if (count($aRelations)) {
@@ -1960,6 +2118,11 @@ class MenuBlock extends DisplayBlock
}
}
// Lock removal button is not supported in modals yet
if (utils::IsXmlHttpRequest()) {
$bCanKill = false;
}
if ($bCanKill) {
$this->AddMenuSeparator($aRegularActions);
$aRegularActions['concurrent_lock_unlock'] = array(
@@ -1997,7 +2160,7 @@ class MenuBlock extends DisplayBlock
}
});
if (empty($sRefreshAction) && $this->m_sStyle == 'list') {
if (empty($sRefreshAction) && $this->m_sStyle == static::ENUM_STYLE_LIST) {
//for the detail page this var is defined way beyond this line
$sRefreshAction = "window.location.reload();";
}
@@ -2013,8 +2176,8 @@ class MenuBlock extends DisplayBlock
// New extensions based on iPopupMenuItem interface
$oPopupMenuItemsBlock = new UIContentBlock();
switch ($this->m_sStyle) {
case 'list':
case 'listInObject':
case static::ENUM_STYLE_LIST:
case static::ENUM_STYLE_LIST_IN_OBJECT:
$oSet->Rewind();
$param = $oSet;
@@ -2169,19 +2332,27 @@ class MenuBlock extends DisplayBlock
}
// - Creation in modal
if ($bIsCreationInModalAllowed === true) {
if ($bIsCreationAllowed && $bIsCreationInModal) {
$oAddLinkActionButton = ButtonUIBlockFactory::MakeIconAction(
'fas fa-plus',
Dict::Format('UI:ClickToCreateNew', MetaModel::GetName($sClass)),
// Allow button tooltip customization
array_key_exists('creation_in_modal_tooltip', $aExtraParams) ?
$aExtraParams['creation_in_modal_tooltip'] :
Dict::Format('UI:ClickToCreateNew', MetaModel::GetName($sClass)),
'UI:Links:New',
'',
false
);
// creation form title
if (array_key_exists('creation_in_modal_form_title', $aExtraParams) && $aExtraParams['creation_in_modal_form_title'] !== null) {
$oAddLinkActionButton->AddDataAttribute('modal-title', $aExtraParams['creation_in_modal_form_title']);
}
// - If we are used in a Datatable, 'datatable_' will be prefixed to our $sId, so we do the same here
$sRealId = $sId;
if(in_array($this->m_sStyle, ['list', 'links', 'listInObject'])){
$sRealId = 'datatable_' . $sId;
if (in_array($this->m_sStyle, [static::ENUM_STYLE_LIST, 'links', static::ENUM_STYLE_LIST_IN_OBJECT])) {
$sRealId = 'datatable_'.$sId;
}
$oAddLinkActionButton->AddCSSClasses(['ibo-action-button', 'ibo-regular-action-button'])
->SetOnClickJsCode("$('#$sRealId').trigger('open_creation_modal.object.itop');");

View File

@@ -1,8 +1,8 @@
<?php
/**
* @deprecated will be removed in 3.1.0 - moved to sources/Application/WebPage/ErrorPage.php, now loadable using autoloader
* @deprecated 3.0.0 will be removed in 3.1.0 - moved to sources/Application/WebPage/ErrorPage.php, now loadable using autoloader
* @license http://opensource.org/licenses/AGPL-3.0
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
*/
DeprecatedCallsLog::NotifyDeprecatedFile('moved to sources/Application/WebPage/ErrorPage.php, now loadable using autoloader');

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
@@ -48,7 +48,7 @@ class CoreCannotSaveObjectException extends CoreException
if (count($this->aIssues) == 1) {
$sIssue = reset($this->aIssues);
$sContent .= " <span>".utils::HtmlEntities($sIssue)."</span>";
$sContent .= "&nbsp;<span>".utils::HtmlEntities($sIssue)."</span>";
} else {
$sContent .= '<ul>';
foreach ($this->aIssues as $sError) {
@@ -60,6 +60,24 @@ class CoreCannotSaveObjectException extends CoreException
return $sContent;
}
public function getTextMessage()
{
$sTitle = Dict::S('UI:Error:SaveFailed');
$sContent = utils::HtmlEntities($sTitle);
if (count($this->aIssues) == 1) {
$sIssue = reset($this->aIssues);
$sContent .= utils::HtmlEntities($sIssue);
} else {
foreach ($this->aIssues as $sError) {
$sContent .= " ".utils::HtmlEntities($sError).", ";
}
}
return $sContent;
}
public function getIssues()
{
return $this->aIssues;

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -0,0 +1,36 @@
<?php
/**
* @since 2.7.10 3.0.4 3.1.1 3.2.0 N°6458 object creation
*/
class InvalidExternalKeyValueException extends CoreUnexpectedValue
{
private const ENUM_PARAMS_OBJECT = 'current_object';
private const ENUM_PARAMS_ATTCODE = 'attcode';
private const ENUM_PARAMS_ATTVALUE = 'attvalue';
private const ENUM_PARAMS_USER = 'current_user';
public function __construct($oObject, $sAttCode, $aContextData = null, $oPrevious = null)
{
$aContextData[self::ENUM_PARAMS_OBJECT] = get_class($oObject) . '::' . $oObject->GetKey();
$aContextData[self::ENUM_PARAMS_ATTCODE] = $sAttCode;
$aContextData[self::ENUM_PARAMS_ATTVALUE] = $oObject->Get($sAttCode);
$oCurrentUser = UserRights::GetUserObject();
if (false === is_null($oCurrentUser)) {
$aContextData[self::ENUM_PARAMS_USER] = get_class($oCurrentUser) . '::' . $oCurrentUser->GetKey();
}
parent::__construct('Attribute pointing to an object that is either non existing or not readable by the current user', $aContextData, '', $oPrevious);
}
public function GetAttCode(): string
{
return $this->getContextData()[self::ENUM_PARAMS_ATTCODE];
}
public function GetAttValue(): string
{
return $this->getContextData()[self::ENUM_PARAMS_ATTVALUE];
}
}

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2022 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,6 +1,6 @@
<?php
/**
* Copyright (C) 2013-2020 Combodo SARL
* Copyright (C) 2013-2023 Combodo SARL
*
* This file is part of iTop.
*

View File

@@ -1,5 +1,5 @@
<?php
// Copyright (C) 2010-2021 Combodo SARL
// Copyright (C) 2010-2023 Combodo SARL
//
// This file is part of iTop.
//
@@ -20,7 +20,7 @@
* Helper class to build interactive forms to be used either in stand-alone
* modal dialog or in "property-sheet" panes.
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
class DesignerForm
@@ -60,7 +60,7 @@ class DesignerForm
$this->sHierarchySelector = '';
$this->StartFieldSet($this->sCurrentFieldSet);
$this->bDisplayed = true;
$this->aDefaultvalues = array();
$this->aDefaultValues = array();
}
public function AddField(DesignerFormField $oField)
@@ -1110,13 +1110,41 @@ $('#$sId').on('change keyup validate', function() { ValidateWithPattern('$sId',
}
EOF
);
$sValue = "<textarea $sCSSClasses id=\"$sId\" name=\"$sName\">".utils::EscapeHtml($this->defaultValue)."</textarea>";
$sValue = "<textarea $sCSSClasses id=\"$sId\" name=\"$sName\">".$this->PrepareValueForRendering()."</textarea>";
}
else {
$sValue = "<div $sCSSClasses id=\"$sId\">".utils::EscapeHtml($this->defaultValue)."</div>";
$sValue = "<div $sCSSClasses id=\"$sId\">".$this->PrepareValueForRendering()."</div>";
}
return array('label' => $this->sLabel, 'value' => $sValue);
}
/**
* @return string|null The value itself as expected for rendering. May it be encoded, escaped or else.
* @since 3.1.0 N°6405
*/
protected function PrepareValueForRendering(): ?string
{
return utils::EscapeHtml($this->defaultValue);
}
}
/**
* Class DesignerXMLField
*
* Field to display XML content
*
* @author Guillaume Lajarige <guillaume.lajarige@combodo.com>
* @since 3.1.0 N°6405
*/
class DesignerXMLField extends DesignerLongTextField
{
/**
* @inheritDoc
*/
protected function PrepareValueForRendering(): ?string
{
return utils::EscapeHtml($this->defaultValue, true);
}
}
class DesignerIntegerField extends DesignerFormField

View File

@@ -1,5 +1,5 @@
<?php
// Copyright (C) 2010-2021 Combodo SARL
// Copyright (C) 2010-2023 Combodo SARL
//
// This file is part of iTop.
//
@@ -20,7 +20,7 @@
/**
* Persistent class InputOutputTask
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,8 +1,8 @@
<?php
/**
* @deprecated will be removed in 3.1.0 - moved to sources/Application/WebPage/iTopWebPage.php, now loadable using autoloader
* @deprecated 3.0.0 will be removed in 3.1.0 - moved to sources/Application/WebPage/iTopWebPage.php, now loadable using autoloader
* @license http://opensource.org/licenses/AGPL-3.0
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
*/
// cannot notify depreciation for now as this is still MASSIVELY used in iTop core !

View File

@@ -1,8 +1,8 @@
<?php
/**
* @deprecated will be removed in 3.1.0 - moved to sources/Application/WebPage/iTopWizardWebPage.php, now loadable using autoloader
* @deprecated 3.0.0 will be removed in 3.1.0 - moved to sources/Application/WebPage/iTopWizardWebPage.php, now loadable using autoloader
* @license http://opensource.org/licenses/AGPL-3.0
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
*/
DeprecatedCallsLog::NotifyDeprecatedFile('moved to sources/Application/WebPage/iTopWizardWebPage.php, now loadable using autoloader');

View File

@@ -5,7 +5,7 @@ use Combodo\iTop\Application\Helper\Session;
/**
* Class LoginBasic
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
@@ -80,6 +80,11 @@ class LoginBasic extends AbstractLoginFSMExtension
{
if (Session::Get('login_mode') == 'basic')
{
$iOnExit = LoginWebPage::getIOnExit();
if ($iOnExit === LoginWebPage::EXIT_RETURN)
{
return LoginWebPage::LOGIN_FSM_RETURN; // Error, exit FSM
}
LoginWebPage::HTTP401Error();
}
return LoginWebPage::LOGIN_FSM_CONTINUE;

View File

@@ -1,6 +1,6 @@
<?php
/**
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
@@ -79,7 +79,7 @@ class LoginDefaultAfter extends AbstractLoginFSMExtension implements iLogoutExte
{
self::ResetLoginSession();
$iOnExit = LoginWebPage::getIOnExit();
if ($iOnExit == LoginWebPage::EXIT_RETURN)
if ($iOnExit === LoginWebPage::EXIT_RETURN)
{
return LoginWebPage::LOGIN_FSM_RETURN; // Error, exit FSM
}
@@ -95,6 +95,12 @@ class LoginDefaultAfter extends AbstractLoginFSMExtension implements iLogoutExte
{
if (!Session::IsSet('login_mode'))
{
// N°6358 - if EXIT_RETURN was asked, send an error
if (LoginWebPage::getIOnExit() === LoginWebPage::EXIT_RETURN) {
$iErrorCode = LoginWebPage::EXIT_CODE_WRONGCREDENTIALS;
return LoginWebPage::LOGIN_FSM_ERROR;
}
// If no plugin validated the user, exit
self::ResetLoginSession();
exit();
@@ -113,6 +119,11 @@ class LoginDefaultAfter extends AbstractLoginFSMExtension implements iLogoutExte
protected function OnConnected(&$iErrorCode)
{
Session::Unset('login_temp_auth_user');
if (is_null(UserRights::GetUserObject())){
//N°7085 avoid infinite loop
IssueLog::Error("No user logged in. exit");
exit(-1);
}
return LoginWebPage::LOGIN_FSM_CONTINUE;
}
@@ -128,4 +139,4 @@ class LoginDefaultAfter extends AbstractLoginFSMExtension implements iLogoutExte
}
}
}
}
}

View File

@@ -5,7 +5,7 @@ use Combodo\iTop\Application\Helper\Session;
/**
* Class LoginExternal
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
@@ -73,6 +73,11 @@ class LoginExternal extends AbstractLoginFSMExtension
{
if (Session::Get('login_mode') == 'external')
{
$iOnExit = LoginWebPage::getIOnExit();
if ($iOnExit === LoginWebPage::EXIT_RETURN)
{
return LoginWebPage::LOGIN_FSM_RETURN; // Error, exit FSM
}
LoginWebPage::HTTP401Error();
}
return LoginWebPage::LOGIN_FSM_CONTINUE;

View File

@@ -1,7 +1,7 @@
<?php
/**
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
@@ -44,6 +44,10 @@ class LoginForm extends AbstractLoginFSMExtension implements iLoginUIExtension
exit;
}
if (LoginWebPage::getIOnExit() === LoginWebPage::EXIT_RETURN) {
return LoginWebPage::LOGIN_FSM_CONTINUE;
}
// No credentials yet, display the form
$oPage = LoginWebPage::NewLoginWebPage();
$oPage->DisplayLoginForm($this->bForceFormOnError);

View File

@@ -2,7 +2,7 @@
/**
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -5,7 +5,7 @@ use Combodo\iTop\Application\Helper\Session;
/**
* Class LoginURL
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,5 +1,5 @@
<?php
// Copyright (C) 2010-2021 Combodo SARL
// Copyright (C) 2010-2023 Combodo SARL
//
// This file is part of iTop.
//
@@ -20,7 +20,7 @@
/**
* Class LoginWebPage
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
@@ -90,7 +90,7 @@ class LoginWebPage extends NiceWebPage
parent::__construct($sTitle);
$this->SetStyleSheet();
$this->no_cache();
$this->add_xframe_options();
$this->add_http_headers();
}
public function SetStyleSheet()
@@ -248,6 +248,7 @@ class LoginWebPage extends NiceWebPage
$oEmail = new Email();
$oEmail->SetRecipientTO($sTo);
$sFrom = MetaModel::GetConfig()->Get('forgot_password_from');
$sFrom = utils::IsNullOrEmptyString($sFrom) ? MetaModel::GetConfig()->Get('email_default_sender_address') : $sFrom;
$oEmail->SetRecipientFrom($sFrom);
$oEmail->SetSubject(Dict::S('UI:ResetPwd-EmailSubject', $oUser->Get('login')));
$sResetUrl = utils::GetAbsoluteUrlAppRoot().'pages/UI.php?loginop=reset_pwd&auth_user='.urlencode($oUser->Get('login')).'&token='.urlencode($sToken);
@@ -391,6 +392,11 @@ class LoginWebPage extends NiceWebPage
Session::Unset('can_logoff');
Session::Unset('archive_mode');
Session::Unset('impersonate_user');
Session::Unset('PluginProperties');
Session::Unset('UrlMakerClass');
Session::Unset('itop_env');
Session::Unset('obj_messages');
Session::Unset('profile_list');
UserRights::_ResetSessionCache();
// If it's desired to kill the session, also delete the session cookie.
// Note: This will destroy the session, and not just the session data!

View File

@@ -1,6 +1,6 @@
<?php
/**
* Copyright (C) 2013-2021 Combodo SARL
* Copyright (C) 2013-2023 Combodo SARL
*
* This file is part of iTop.
*

View File

@@ -1,6 +1,6 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
@@ -103,7 +103,7 @@ class ApplicationMenu
{
self::$sFavoriteSiloQuery = $sOQL;
}
/**
* Get the query used to limit the list of displayed organizations in the drop-down menu
* @return string The OQL query returning a list of Organization objects
@@ -536,7 +536,7 @@ EOF
return -1;
}
/**
* Retrieves the currently active menu (if any, otherwise the first menu is the default)
* @return string The Id of the currently active menu
@@ -544,7 +544,7 @@ EOF
public static function GetActiveNodeId()
{
$oAppContext = new ApplicationContext();
$sMenuId = $oAppContext->GetCurrentValue('menu', null);
$sMenuId = $oAppContext->GetCurrentValue('menu', null);
if ($sMenuId === null)
{
$sMenuId = self::GetDefaultMenuId();
@@ -654,7 +654,7 @@ abstract class MenuNode
/**
* Stimulus to check: if the user can 'apply' this stimulus, then she/he can see this menu
*/
*/
protected $m_aEnableStimuli;
/**
@@ -814,7 +814,7 @@ abstract class MenuNode
{
return false;
}
/**
* Add a limiting display condition for the same menu node. The conditions will be combined with a AND
* @param $oMenuNode MenuNode Another definition of the same menu node, with potentially different access restriction
@@ -987,7 +987,7 @@ class TemplateMenuNode extends MenuNode
* @var string
*/
protected $sTemplateFile;
/**
* Create a menu item based on a custom template and inserts it into the application's main menu
* @param string $sMenuId Unique identifier of the menu (used to identify the menu for bookmarking, and for getting the labels from the dictionary)
@@ -1058,7 +1058,7 @@ class OQLMenuNode extends MenuNode
* @var bool|null
*/
protected $bSearchFormOpen;
/**
* Extra parameters to be passed to the display block to fine tune its appearence
*/
@@ -1091,7 +1091,7 @@ class OQLMenuNode extends MenuNode
// Enhancement: we could set as the "enable" condition that the user has enough rights to "read" the objects
// of the class specified by the OQL...
}
/**
* Set some extra parameters to be passed to the display block to fine tune its appearence
* @param array $aParams paramCode => value. See DisplayBlock::GetDisplay for the meaning of the parameters
@@ -1111,7 +1111,7 @@ class OQLMenuNode extends MenuNode
*/
public function RenderContent(WebPage $oPage, $aExtraParams = array())
{
ContextTag::AddContext(ContextTag::TAG_OBJECT_SEARCH);
$oTag = new ContextTag(ContextTag::TAG_OBJECT_SEARCH);
ApplicationMenu::CheckMenuIdEnabled($this->GetMenuId());
OQLMenuNode::RenderOQLSearch
(
@@ -1120,7 +1120,7 @@ class OQLMenuNode extends MenuNode
'Menu_'.$this->GetMenuId(),
$this->bSearch, // Search pane
$this->bSearchFormOpen, // Search open
$oPage,
$oPage,
array_merge($this->m_aParams, $aExtraParams),
true
);
@@ -1354,10 +1354,10 @@ class NewObjectMenuNode extends MenuNode
{
// Enable this menu, only if the current user has enough rights to create such an object, or an object of
// any child class
$aSubClasses = MetaModel::EnumChildClasses($this->sClass, ENUM_CHILD_CLASSES_ALL); // Including the specified class itself
$bActionIsAllowed = false;
foreach($aSubClasses as $sCandidateClass)
{
if (!MetaModel::IsAbstract($sCandidateClass) && (UserRights::IsActionAllowed($sCandidateClass, UR_ACTION_MODIFY) == UR_ALLOWED_YES))
@@ -1366,7 +1366,7 @@ class NewObjectMenuNode extends MenuNode
break; // Enough for now
}
}
return $bActionIsAllowed;
return $bActionIsAllowed;
}
/**
@@ -1508,7 +1508,7 @@ class DashboardMenuNode extends MenuNode
throw new Exception("Error: failed to load dashboard file: '{$this->sDashboardFile}'");
}
}
}
/**
@@ -1549,7 +1549,7 @@ class ShortcutContainerMenuNode extends MenuNode
$sName = $this->GetMenuId().'_'.$oShortcut->GetKey();
new ShortcutMenuNode($sName, $oShortcut, $this->GetIndex(), $fRank++);
}
// Complete the tree
//
parent::PopulateChildMenus();

View File

@@ -1,5 +1,5 @@
<?php
// Copyright (C) 2010-2021 Combodo SARL
// Copyright (C) 2010-2023 Combodo SARL
//
// This file is part of iTop.
//

View File

@@ -1,8 +1,8 @@
<?php
/**
* @deprecated will be removed in 3.1.0 - moved to sources/Application/WebPage/NiceWebPage.php, now loadable using autoloader
* @deprecated 3.0.0 will be removed in 3.1.0 - moved to sources/Application/WebPage/NiceWebPage.php, now loadable using autoloader
* @license http://opensource.org/licenses/AGPL-3.0
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
*/
DeprecatedCallsLog::NotifyDeprecatedFile('moved to sources/Application/WebPage/NiceWebPage.php, now loadable using autoloader');

View File

@@ -1,8 +1,8 @@
<?php
/**
* @deprecated will be removed in 3.1.0 - moved to sources/Application/WebPage/PDFPage.php, now loadable using autoloader
* @deprecated 3.0.0 will be removed in 3.1.0 - moved to sources/Application/WebPage/PDFPage.php, now loadable using autoloader
* @license http://opensource.org/licenses/AGPL-3.0
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
*/
DeprecatedCallsLog::NotifyDeprecatedFile('moved to sources/Application/WebPage/PDFPage.php, now loadable using autoloader');

View File

@@ -1,6 +1,6 @@
<?php
/*
* Copyright (C) 2010-2021 Combodo SARL
* Copyright (C) 2010-2023 Combodo SARL
*
* This file is part of iTop.
*
@@ -74,6 +74,7 @@ abstract class Query extends cmdbAbstractObject
"default_value" => 0,
"is_null_allowed" => false,
"depends_on" => array(),
"tracking_level" => ATTRIBUTE_TRACKING_NONE,
)));
MetaModel::Init_AddAttribute(new AttributeDateTime("export_last_date", array(
@@ -82,6 +83,7 @@ abstract class Query extends cmdbAbstractObject
"default_value" => null,
"is_null_allowed" => true,
"depends_on" => array(),
"tracking_level" => ATTRIBUTE_TRACKING_NONE,
)));
MetaModel::Init_AddAttribute(new AttributeExternalKey("export_last_user_id",
@@ -93,14 +95,16 @@ abstract class Query extends cmdbAbstractObject
"depends_on"=>array(),
"display_style"=>'select',
"always_load_in_tables"=>false,
"on_target_delete"=>DEL_SILENT
"on_target_delete"=>DEL_SILENT,
"tracking_level" => ATTRIBUTE_TRACKING_NONE,
)));
MetaModel::Init_AddAttribute(new AttributeExternalField("export_last_user_contact",
array(
"allowed_values"=>null,
"extkey_attcode"=> "export_last_user_id",
"target_attcode"=>"contactid"
"target_attcode"=>"contactid",
"tracking_level" => ATTRIBUTE_TRACKING_NONE,
)));
// Display lists
@@ -292,7 +296,7 @@ class QueryOQL extends Query
}
catch
(OQLException $e) {
$oAlert = AlertUIBlockFactory::MakeForFailure(Dict::Format('UI:RunQuery:Error'), $e->getHtmlDesc())
$oAlert = AlertUIBlockFactory::MakeForFailure(Dict::S('UI:RunQuery:Error'), $e->getHtmlDesc())
->SetIsClosable(false)
->SetIsCollapsible(false);
$oAlert->AddCSSClass('mb-5');

View File

@@ -1,5 +1,5 @@
<?php
// Copyright (C) 2010-2021 Combodo SARL
// Copyright (C) 2010-2023 Combodo SARL
//
// This file is part of iTop.
//
@@ -22,7 +22,7 @@ use Combodo\iTop\Application\UI\Base\Component\DataTable\DataTableSettings;
* Persistent class Shortcut and derived
* Shortcuts of any kind
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,5 +1,5 @@
<?php
// Copyright (C) 2010-2021 Combodo SARL
// Copyright (C) 2010-2023 Combodo SARL
//
// This file is part of iTop.
//
@@ -15,10 +15,7 @@
//
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
use Combodo\iTop\Application\EventRegister\ApplicationEvents;
use Combodo\iTop\Application\Helper\Session;
use Combodo\iTop\Service\Events\EventData;
use Combodo\iTop\Service\Events\EventService;
require_once(APPROOT.'core/cmdbobject.class.inc.php');
require_once(APPROOT.'application/utils.inc.php');
@@ -30,7 +27,7 @@ require_once(APPROOT.'setup/setuputils.class.inc.php');
/**
* File to include to initialize the datamodel in memory
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
@@ -102,7 +99,10 @@ else
Session::Set('itop_env', ITOP_DEFAULT_ENV);
}
$sConfigFile = APPCONF.$sEnv.'/'.ITOP_CONFIG_FILE;
MetaModel::Startup($sConfigFile, false /* $bModelOnly */, $bAllowCache, false /* $bTraceSourceFiles */, $sEnv);
// Event service must be initialized after the MetaModel startup, otherwise it cannot discover classes implementing the iEventServiceSetup interface
EventService::InitService();
EventService::FireEvent(new EventData(ApplicationEvents::APPLICATION_EVENT_METAMODEL_STARTED));
try {
MetaModel::Startup($sConfigFile, false /* $bModelOnly */, $bAllowCache, false /* $bTraceSourceFiles */, $sEnv);
}
catch (MySQLException $e) {
IssueLog::Debug($e->getMessage());
throw new MySQLException('Could not connect to the DB server', []);
}

View File

@@ -1,6 +1,6 @@
<?php
/**
* Copyright (C) 2013-2021 Combodo SARL
* Copyright (C) 2013-2023 Combodo SARL
*
* This file is part of iTop.
*

View File

@@ -1,6 +1,6 @@
<?php
/**
* Copyright (C) 2013-2021 Combodo SARL
* Copyright (C) 2013-2023 Combodo SARL
*
* This file is part of iTop.
*

View File

@@ -1,6 +1,6 @@
<?php
/**
* Copyright (C) 2013-2020 Combodo SARL
* Copyright (C) 2013-2023 Combodo SARL
*
* This file is part of iTop.
*

View File

@@ -1,5 +1,5 @@
<?php
// Copyright (C) 2010-2021 Combodo SARL
// Copyright (C) 2010-2023 Combodo SARL
//
// This file is part of iTop.
//
@@ -24,7 +24,7 @@ use Combodo\iTop\Application\Helper\Session;
* which choice is configured via the parameter 'transaction_storage'
*
* @package iTop
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
class privUITransaction

View File

@@ -1,9 +1,10 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
use Combodo\iTop\Application\Helper\FormHelper;
use Combodo\iTop\Application\UI\Base\Component\Form\FormUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Layout\UIContentBlockUIBlockFactory;
use Combodo\iTop\Core\MetaModel\FriendlyNameType;
@@ -162,13 +163,11 @@ class UIExtKeyWidget
$oPage->add_linked_script('../js/extkeywidget.js');
$oPage->add_linked_script('../js/forms-json-utils.js');
$bCreate = (!$this->bSearchMode) && (UserRights::IsActionAllowed($this->sTargetClass, UR_ACTION_BULK_MODIFY) && $bAllowTargetCreation);
$bCreate = (!$this->bSearchMode) && (UserRights::IsActionAllowed($this->sTargetClass, UR_ACTION_MODIFY) && $bAllowTargetCreation);
$bExtensions = true;
$sMessage = Dict::S('UI:Message:EmptyList:UseSearchForm');
$sAttrFieldPrefix = ($this->bSearchMode) ? '' : 'attr_';
$sFilter = addslashes($oAllowedValues->GetFilter()->ToOQL());
if ($this->bSearchMode) {
$sWizHelper = 'null';
@@ -323,12 +322,12 @@ EOF
EOF
);
$sHTMLValue .= "<div class=\"ibo-input-select--action-buttons\">";
$sHTMLValue .= " <div class=\"ibo-input-select--action-button ibo-input-select--action-button--clear ibo-is-hidden\" id=\"mini_clear_{$this->iId}\" onClick=\"oACWidget_{$this->iId}.Clear();\" data-tooltip-content='".Dict::S('UI:Button:Clear')."'><i class=\"fas fa-times\"></i></div>";
$sHTMLValue .= " <a href=\"#\" class=\"ibo-input-select--action-button ibo-input-select--action-button--clear ibo-is-hidden\" id=\"mini_clear_{$this->iId}\" onClick=\"oACWidget_{$this->iId}.Clear();\" data-tooltip-content='".Dict::S('UI:Button:Clear')."'><i class=\"fas fa-times\"></i></a>";
}
if ($bCreate && $bExtensions) {
$sCallbackName = (MetaModel::IsAbstract($this->sTargetClass)) ? 'SelectObjectClass' : 'CreateObject';
$sHTMLValue .= "<div class=\"ibo-input-select--action-button ibo-input-select--action-button--create\" id=\"mini_add_{$this->iId}\" onClick=\"oACWidget_{$this->iId}.{$sCallbackName}();\" data-tooltip-content='".Dict::S('UI:Button:Create')."'><i class=\"fas fa-plus\"></i></div>";
$sHTMLValue .= "<a href=\"#\" class=\"ibo-input-select--action-button ibo-input-select--action-button--create\" id=\"mini_add_{$this->iId}\" onClick=\"oACWidget_{$this->iId}.{$sCallbackName}();\" data-tooltip-content='".Dict::S('UI:Button:Create')."'><i class=\"fas fa-plus\"></i></a>";
$oPage->add_ready_script(
<<<JS
if ($('#ajax_{$this->iId}').length == 0)
@@ -339,7 +338,7 @@ JS
);
}
if ($bExtensions && MetaModel::IsHierarchicalClass($this->sTargetClass) !== false) {
$sHTMLValue .= "<div class=\"ibo-input-select--action-button ibo-input-select--action-button--hierarchy\" id=\"mini_tree_{$this->iId}\" onClick=\"oACWidget_{$this->iId}.HKDisplay();\" data-tooltip-content='".Dict::S('UI:Button:SearchInHierarchy')."'><i class=\"fas fa-sitemap\"></i></div>";
$sHTMLValue .= "<a href=\"#\" class=\"ibo-input-select--action-button ibo-input-select--action-button--hierarchy\" id=\"mini_tree_{$this->iId}\" onClick=\"oACWidget_{$this->iId}.HKDisplay();\" data-tooltip-content='".Dict::S('UI:Button:SearchInHierarchy')."'><i class=\"fas fa-sitemap\"></i></a>";
$oPage->add_ready_script(
<<<JS
if ($('#ac_tree_{$this->iId}').length == 0)
@@ -350,7 +349,7 @@ JS
);
}
if ($oAllowedValues->CountExceeds($iMaxComboLength)) {
$sHTMLValue .= " <div class=\"ibo-input-select--action-button ibo-input-select--action-button--search\" id=\"mini_search_{$this->iId}\" onClick=\"oACWidget_{$this->iId}.Search();\" data-tooltip-content='".Dict::S('UI:Button:Search')."'><i class=\"fas fa-search\"></i></div>";
$sHTMLValue .= " <a href=\"#\" class=\"ibo-input-select--action-button ibo-input-select--action-button--search\" id=\"mini_search_{$this->iId}\" onClick=\"oACWidget_{$this->iId}.Search();\" data-tooltip-content='".Dict::S('UI:Button:Search')."'><i class=\"fas fa-search\"></i></a>";
}
$sHTMLValue .= "</div>";
$sHTMLValue .= "</div>";
@@ -904,7 +903,7 @@ JS
{
// For security reasons: check that the "proposed" class is actually a subclass of the linked class
// and that the current user is allowed to create objects of this class
$aSubClasses = MetaModel::EnumChildClasses($this->sTargetClass);
$aSubClasses = MetaModel::EnumChildClasses($this->sTargetClass, ENUM_CHILD_CLASSES_ALL);
$aPossibleClasses = array();
foreach($aSubClasses as $sCandidateClass)
{
@@ -924,6 +923,7 @@ JS
$sDialogTitleEscaped = addslashes($sDialogTitle);
$oPage->add_ready_script("$('#ac_create_$this->iId').dialog({ width: 'auto', height: 'auto', maxHeight: $(window).height() - 50, autoOpen: false, modal: true, title: '$sDialogTitleEscaped'});\n");
$oPage->add_ready_script("$('#ac_create_{$this->iId} form').removeAttr('onsubmit');");
$oPage->add_ready_script("$('#ac_create_{$this->iId} form').find('select').attr('id', 'ac_create_{$this->iId}_select');");
$oPage->add_ready_script("$('#ac_create_{$this->iId} form').on('submit.uilinksWizard', oACWidget_{$this->iId}.DoSelectObjectClass);");
}
@@ -966,15 +966,20 @@ JS
<div id="dcr_{$this->iId}">
HTML
);
$aFieldsFlags = array();
$aFieldsComments = array();
foreach (MetaModel::ListAttributeDefs($this->sTargetClass) as $sAttCode => $oAttDef) {
if (($oAttDef instanceof AttributeBlob) || (false)) {
$aFieldsFlags[$sAttCode] = OPT_ATT_READONLY;
$aFieldsComments[$sAttCode] = '&nbsp;<img src="../images/transp-lock.png" style="vertical-align:middle" title="'.utils::EscapeHtml(Dict::S('UI:UploadNotSupportedInThisMode')).'"/>';
}
$aFormExtraParams = array(
'formPrefix' => $this->iId,
'noRelations' => true,
);
// Remove blob edition from creation form @see N°5863 to allow blob edition in modal context
FormHelper::DisableAttributeBlobInputs($this->sTargetClass, $aFormExtraParams);
if(FormHelper::HasMandatoryAttributeBlobInputs($oNewObj)){
$oPage->AddUiBlock(FormHelper::GetAlertForMandatoryAttributeBlobInputsInModal(FormHelper::ENUM_MANDATORY_BLOB_MODE_CREATE));
}
cmdbAbstractObject::DisplayCreationForm($oPage, $this->sTargetClass, $oNewObj, array(), array('formPrefix' => $this->iId, 'noRelations' => true, 'fieldsFlags' => $aFieldsFlags, 'fieldsComments' => $aFieldsComments));
cmdbAbstractObject::DisplayCreationForm($oPage, $this->sTargetClass, $oNewObj, array(), $aFormExtraParams);
$oPage->add(<<<HTML
</div>
</div>
@@ -1067,18 +1072,27 @@ JS
{
$oObj = MetaModel::NewObject($this->sTargetClass);
$aErrors = $oObj->UpdateObjectFromPostedForm($this->iId);
if (count($aErrors) == 0)
{
$oObj->DBInsert();
if (count($aErrors) == 0) {
// Retrieve JSON data
$sJSON = utils::ReadParam('json', '{}', false, utils::ENUM_SANITIZATION_FILTER_RAW_DATA);
$oJSON = json_decode($sJSON);
$oObj->SetContextSection('temporary_objects', [
'create' => [
'transaction_id' => utils::ReadParam('root_transaction_id', '', false, utils::ENUM_SANITIZATION_FILTER_TRANSACTION_ID),
'host_class' => $oJSON->m_sClass,
'host_att_code' => $this->sAttCode,
],
]);
$oObj->DBInsertNoReload();
return array('name' => $oObj->GetName(), 'id' => $oObj->GetKey());
}
else
{
} else {
return array('error' => implode(' ', $aErrors), 'id' => 0);
}
}
catch(Exception $e)
{
catch (Exception $e) {
return array('error' => $e->getMessage(), 'id' => 0);
}
}

View File

@@ -1,5 +1,5 @@
<?php
// Copyright (C) 2010-2021 Combodo SARL
// Copyright (C) 2010-2023 Combodo SARL
//
// This file is part of iTop.
//
@@ -22,7 +22,7 @@ use Combodo\iTop\Application\Helper\WebResourcesHelper;
* UI wdiget for displaying and editing one-way encrypted passwords
*
* @author Romain Quetiez
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
@@ -71,15 +71,16 @@ class UIHTMLEditorWidget
// To change the default settings of the editor,
// a) edit the file /js/ckeditor/config.js
// b) or override some of the configuration settings, using the second parameter of ckeditor()
$sJSDefineWidth = '';
$aConfig = utils::GetCkeditorPref();
$sWidthSpec = addslashes(trim($this->m_oAttDef->GetWidth()));
if ($sWidthSpec != '')
{
$aConfig['width'] = $sWidthSpec;
if ($sWidthSpec != '') {
/*N°6543 - the function min allow to keep text inside the column when width is defined*/
$aConfig['width'] = "min($sWidthSpec,100%)";
$sJSDefineWidth = '$("#cke_'.$iId.' iframe").contents().find("body").css("width", "'.$sWidthSpec.'")';
}
$sHeightSpec = addslashes(trim($this->m_oAttDef->GetHeight()));
if ($sHeightSpec != '')
{
if ($sHeightSpec != '') {
$aConfig['height'] = $sHeightSpec;
}
$sConfigJS = json_encode($aConfig);
@@ -110,6 +111,7 @@ $('#$iId').on('update', function(evt){
else
{
oMe.data('ckeditorInstance').setReadOnly(oMe.prop('disabled'));
$sJSDefineWidth
}
};
setTimeout(delayedSetReadOnly, 50);

View File

@@ -1,16 +1,17 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
use Combodo\iTop\Application\UI\Links\Direct\BlockDirectLinksEditTable;
use Combodo\iTop\Application\Helper\FormHelper;
use Combodo\iTop\Application\UI\Links\Direct\BlockDirectLinkSetEditTable;
use Combodo\iTop\Renderer\Console\ConsoleBlockRenderer;
/**
* Class UILinksWidgetDirect
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
class UILinksWidgetDirect
@@ -82,8 +83,8 @@ class UILinksWidgetDirect
*/
public function Display(WebPage $oPage, $oValue, $aArgs, $sFormPrefix, $oCurrentObj)
{
$oBlock = new BlockDirectLinksEditTable($this, $this->sInputid);
$oBlock->InitTable($oPage, $oValue, $sFormPrefix);
$oBlock = new BlockDirectLinkSetEditTable($this, $this->sInputid);
$oBlock->InitTable($oPage, $oValue, $sFormPrefix, $oCurrentObj);
return ConsoleBlockRenderer::RenderBlockTemplateInPage($oPage, $oBlock);
}
@@ -118,15 +119,36 @@ class UILinksWidgetDirect
$sRealClass = $aKeys[0];
}
if ($sRealClass != '')
{
if ($sRealClass != '') {
$oLinksetDef = MetaModel::GetAttributeDef($this->sClass, $this->sAttCode);
$sExtKeyToMe = $oLinksetDef->GetExtKeyToMe();
$aFieldFlags = array( $sExtKeyToMe => OPT_ATT_HIDDEN);
$aFieldsFlags = array($sExtKeyToMe => OPT_ATT_HIDDEN);
$oObj = DBObject::MakeDefaultInstance($sRealClass);
$aPrefillParam = array('source_obj' => $oSourceObj);
$oObj->PrefillForm('creation_from_editinplace', $aPrefillParam);
cmdbAbstractObject::DisplayCreationForm($oPage, $sRealClass, $oObj, array(), array('formPrefix' => $this->sInputid, 'noRelations' => true, 'fieldsFlags' => $aFieldFlags));
$aFormExtraParams = array(
'formPrefix' => $this->sInputid,
'noRelations' => true,
'fieldsFlags' => $aFieldsFlags,
'js_handlers' => [
'cancel_button_on_click' =>
<<<JS
function() {
// Do nothing, already handled by linksdirectwidget.js
};
JS
,
],
);
// Remove blob edition from creation form @see N°5863 to allow blob edition in modal context
FormHelper::DisableAttributeBlobInputs($sRealClass, $aFormExtraParams);
if(FormHelper::HasMandatoryAttributeBlobInputs($oObj)){
$oPage->AddUiBlock(FormHelper::GetAlertForMandatoryAttributeBlobInputsInModal(FormHelper::ENUM_MANDATORY_BLOB_MODE_CREATE));
}
cmdbAbstractObject::DisplayCreationForm($oPage, $sRealClass, $oObj, array(), $aFormExtraParams);
}
else
{

View File

@@ -1,12 +1,12 @@
<?php
/*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
use Combodo\iTop\Application\UI\Base\Component\DataTable\DataTableUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Component\DataTable\StaticTable\FormTableRow\FormTableRow;
use Combodo\iTop\Application\UI\Links\Indirect\BlockIndirectLinksEditTable;
use Combodo\iTop\Application\UI\Links\Indirect\BlockIndirectLinkSetEditTable;
use Combodo\iTop\Application\UI\Links\Indirect\BlockObjectPickerDialog;
use Combodo\iTop\Renderer\Console\ConsoleBlockRenderer;
@@ -136,7 +136,7 @@ class UILinksWidget
*/
public function Display(WebPage $oPage, $oValue, $aArgs, $sFormPrefix, $oCurrentObj): string
{
$oBlock = new BlockIndirectLinksEditTable($this);
$oBlock = new BlockIndirectLinkSetEditTable($this);
$oBlock->InitTable($oPage, $oValue, $aArgs, $sFormPrefix, $oCurrentObj, $this->m_aTableConfig);
return ConsoleBlockRenderer::RenderBlockTemplateInPage($oPage, $oBlock);
@@ -178,17 +178,18 @@ class UILinksWidget
$oDisplayBlock = new DisplayBlock($oFilter, 'search', false);
$oBlock->AddSubBlock($oDisplayBlock->GetDisplay($oPage, "SearchFormToAdd_{$sLinkedSetId}",
array(
'menu' => false,
[
'menu' => false,
'result_list_outer_selector' => "SearchResultsToAdd_{$sLinkedSetId}",
'table_id' => "add_{$sLinkedSetId}",
'table_inner_id' => "ResultsToAdd_{$sLinkedSetId}",
'selection_mode' => true,
'json' => $sJson,
'cssCount' => '#count_'.$this->m_sAttCode.$this->m_sNameSuffix,
'query_params' => $oFilter->GetInternalParams(),
'hidden_criteria' => $sAlreadyLinkedExpression,
)));
'table_id' => "add_{$sLinkedSetId}",
'table_inner_id' => "ResultsToAdd_{$sLinkedSetId}",
'selection_mode' => true,
'json' => $sJson,
'cssCount' => '#count_'.$this->m_sAttCode.$this->m_sNameSuffix,
'query_params' => $oFilter->GetInternalParams(),
'hidden_criteria' => $sAlreadyLinkedExpression,
'submit_on_load' => false,
]));
$oBlock->AddForm();
}
@@ -243,7 +244,7 @@ class UILinksWidget
foreach ($aLinkedObjectIds as $iObjectId) {
$oLinkedObj = MetaModel::GetObject($this->m_sRemoteClass, $iObjectId, false);
if (is_object($oLinkedObj)) {
$oBlock = new BlockIndirectLinksEditTable($this);
$oBlock = new BlockIndirectLinkSetEditTable($this);
$aRow = $oBlock->GetFormRow($oP, $oLinkedObj, $iObjectId, array(), $oCurrentObj, $iAdditionId); // Not yet created link get negative Ids
$oRow = new FormTableRow("{$this->m_sAttCode}{$this->m_sNameSuffix}", $this->m_aTableConfig, $aRow, -$iAdditionId);
$oP->AddUiBlock($oRow);
@@ -268,11 +269,12 @@ class UILinksWidget
$aLinkedObjectIds = utils::ReadMultipleSelection($oFullSetFilter);
$iAdditionId = $iMaxAddedId + 1;
$bAllowRemoteExtKeyEdit = count($aLinkedObjectIds) <= utils::GetConfig()->Get('link_set_max_edit_ext_key');
foreach ($aLinkedObjectIds as $iObjectId) {
$oLinkedObj = MetaModel::GetObject($this->m_sRemoteClass, $iObjectId, false);
if (is_object($oLinkedObj)) {
$oBlock = new BlockIndirectLinksEditTable($this);
$aRow = $oBlock->GetFormRow($oP, $oLinkedObj, $iObjectId, array(), $oCurrentObj, $iAdditionId); // Not yet created link get negative Ids
$oBlock = new BlockIndirectLinkSetEditTable($this);
$aRow = $oBlock->GetFormRow($oP, $oLinkedObj, $iObjectId, array(), $oCurrentObj, $iAdditionId, false /* Default value */, $bAllowRemoteExtKeyEdit); // Not yet created link get negative Ids
$aData = [];
foreach ($aRow as $item) {
$aData[] = $item;

View File

@@ -1,5 +1,5 @@
<?php
// Copyright (C) 2010-2021 Combodo SARL
// Copyright (C) 2010-2023 Combodo SARL
//
// This file is part of iTop.
//
@@ -20,7 +20,7 @@
* Class UIPasswordWidget
* UI wdiget for displaying and editing one-way encrypted passwords
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

View File

@@ -1,7 +1,7 @@
<?php
/**
*
* Copyright (C) 2010-2021 Combodo SARL
* Copyright (C) 2010-2023 Combodo SARL
*
* This file is part of iTop.
*
@@ -60,7 +60,7 @@ class UISearchFormForeignKeys
$oPage->add(<<<HTML
<form id="ObjectsAddForm_{$this->m_iInputId}">
<div id="SearchResultsToAdd_{$this->m_iInputId}" style="vertical-align:top;background: #fff;height:100%;overflow:auto;padding:0;border:0;">
<div id="SearchResultsToAdd_{$this->m_iInputId}" style="vertical-align:top;height:100%;overflow:auto;padding:0;border:0;">
<div style="background: #fff; border:0; text-align:center; vertical-align:middle;"><p>{$sEmptyList}</p></div>
</div>
<input type="hidden" id="count_{$this->m_iInputId}" value="0"/>

View File

@@ -1,5 +1,5 @@
<?php
// Copyright (C) 2010-2021 Combodo SARL
// Copyright (C) 2010-2023 Combodo SARL
//
// This file is part of iTop.
//
@@ -20,7 +20,7 @@
/**
* Class UIWizard
*
* @copyright Copyright (C) 2010-2021 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/

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