Compare commits

...

228 Commits

Author SHA1 Message Date
Anne-Cath
79a9960235 Little optimization in search screen when there is only one result. 2023-11-10 14:09:01 +01:00
Molkobain
336b5da2a7 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-11-09 18:24:30 +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
6f39ae5d76 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-11-08 15:01:42 +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
078fc7bfb8 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-11-08 11:44:23 +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
a67d095c70 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-11-03 09:21:48 +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
647f43882b Merge branch 'support/3.1' into develop 2023-11-02 11:21:47 +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
ca47f5458c Merge remote-tracking branch 'origin/support/3.1' into develop 2023-10-31 16:15:03 +01:00
Molkobain
3aec6bff79 N°6866 - Fix regression from previous merge 2023-10-31 16:13:54 +01:00
Molkobain
3027bb5092 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-10-31 14:01:53 +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
893efa8e2d Merge remote-tracking branch 'origin/support/3.1' into develop 2023-10-31 13:57:04 +01:00
Molkobain
8aa3dcdaa7 N°6866 - Fix regression from previous merge 2023-10-31 13:56:17 +01:00
Molkobain
1ea9659227 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-10-31 11:27:42 +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
31e58d7597 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-10-31 10:20:10 +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
3b21ed8fe8 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-10-31 09:38:11 +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
0ad8db565d Merge remote-tracking branch 'origin/support/3.1' into develop 2023-10-30 17:00:20 +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
bdalsass
a1a83a1ba3 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 08:34:53 +01:00
Romain Quetiez
e7d11e4bec Merge remote-tracking branch 'origin/support/3.1' into develop 2023-10-27 19:41:01 +02: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
Molkobain
e3c26c97f2 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-10-26 11:27:40 +02:00
Molkobain
d6e132fbda 👥 Add @chileeb to contributors list! 🙌 2023-10-26 11:17:51 +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
Molkobain
74c4c642eb Update dictionaries/zh_cn.dictionary.itop.ui.php 2023-10-25 14:13:33 +02:00
libin
af3be19175 Chinese Dict Optimize: ProfilesMenu 2023-10-25 14:13:33 +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
ee49d64120 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-10-23 15:36:46 +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
58257fa25e Merge remote-tracking branch 'origin/support/3.1' into develop 2023-10-20 17:07:38 +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
cb3d8120bd Merge remote-tracking branch 'origin/support/3.1' into develop 2023-10-20 16:56:45 +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-Cath
ace88cb709 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-10-17 12:19:30 +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
Anne-Cath
8ca20e3135 Remove change push by error 2023-10-17 11:45:27 +02:00
Pierre Goiffon
4e13cce770 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-10-17 11:27:09 +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
Anne-Cath
f408e14d4b WIP - remove log + fix edition with a lot of values (>chunk_size) 2023-10-17 11:05:33 +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
Anne-Cath
543daac06d N°6847 - order of label pdf export 2023-10-16 16:03:25 +02:00
Pierre Goiffon
800d1b03c1 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-10-13 17:37:29 +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
9b970a472f Merge remote-tracking branch 'origin/support/3.1' into develop 2023-10-13 10:13:25 +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
593131a7ea Merge remote-tracking branch 'origin/support/3.1' into develop 2023-10-06 09:54:20 +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
Molkobain
148f708360 N°6805 - Add reference to classes implementing \iWorkingTimeComputer in the datamodel (meta tag) 2023-10-03 21:32:31 +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
7d0feab078 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-09-26 22:23:18 +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
aae2db8ad8 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-09-26 11:36:24 +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
f3d488de26 Update Jimmy avatar for the sample data 2023-09-25 15:52:10 +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
ebc15db75e Merge branch 'support/3.1' into develop 2023-09-21 16:32:40 +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
dd28aca260 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-09-20 18:13:27 +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
2a6e5b21a9 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-09-20 16:18:55 +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
14f6ce3626 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-09-19 12:30:33 +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
34a2a6ce03 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-09-19 09:59:06 +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
db940e3bba Merge remote-tracking branch 'origin/support/3.1' into develop 2023-09-19 08:52:06 +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
9f3a6be255 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-09-18 16:23:49 +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
b6ac92d192 Merge remote-tracking branch 'origin/support/3.1' into develop
# Conflicts:
#	datamodels/2.x/itop-core-update/dictionaries/hu.dict.itop-core-update.php
2023-09-18 15:10:58 +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
Stephen Abello
ce1c517a9f Merge branch 'support/3.1' into develop 2023-09-15 15:45:36 +02:00
Pierre Goiffon
75b6a3ede8 Merge remote-tracking branch 'origin/support/3.1' into develop
# Conflicts:
#	dictionaries/hu.dictionary.itop.ui.php
#	dictionaries/ja.dictionary.itop.ui.php
#	dictionaries/sk.dictionary.itop.ui.php
#	dictionaries/ui/layouts/navigation-menu/pt_br.dictionary.itop.navigation-menu.php
2023-09-14 16:55:38 +02:00
Thomas Casteleyn
3818bc3f98 N°5218 Fix toolkit error on enum since 3.0.0 (#513) 2023-09-12 17:27:46 +02:00
Pierre Goiffon
d8ec900933 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-09-07 14:53:16 +02:00
acognet
29ba5e73fa N°5491 - Inconsistent dictionnary entries regarding arguments to pass to Dict::Format - fix dictionnary 2023-09-06 10:02:28 +02:00
Pierre Goiffon
acf449c03a Merge remote-tracking branch 'origin/support/3.1' into develop 2023-09-06 09:09:57 +02:00
Pierre Goiffon
ecb4cb7435 📝 CONTRIBUTING : add a mention on "allow edits by maintainers" not available on org forks
Seen in #523, thanks Lars !
2023-09-05 17:35:48 +02:00
acognet
3200b5dc86 N°5491 - Inconsistent dictionnary entries regarding arguments to pass to Dict::Format - fix dictionnary 2023-09-05 15:28:08 +02:00
acognet
e20d4cecd5 N°5491 - Inconsistent dictionnary entries regarding arguments to pass to Dict::Format - fix dictionnary 2023-09-05 15:20:39 +02:00
Eric Espie
36177e09f7 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-09-01 14:15:35 +02:00
acognet
9ae62adff1 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-08-31 16:25:15 +02:00
Anne-Catherine
73a2c935a7 N°6555 - Add class description in tooltip of Dashlet badge (#504) 2023-08-31 14:37:37 +02:00
vdumas
42acbe66c3 N°6682 - Pbs with Audit classes and AccessRight 2023-08-29 16:27:28 +02:00
vdumas
22a9299d97 N°6682 - AuditDomain XML meta declaration missing 2023-08-29 15:13:08 +02:00
Molkobain
b9acd0a9a6 N°6670 - Fix unescaped quote from c761364b 2023-08-22 16:19:59 +02:00
Molkobain
c761364bed N°6670 - Fix EVENT_DOWNLOAD_DOCUMENT event XML declaration missing elements 2023-08-22 16:11:59 +02:00
Eric Espie
cc4af0a027 N°6667 - Ignore trigger on state entering with auto-dispatch 2023-08-22 14:30:18 +02:00
Romain Quetiez
d79dacf8a3 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-08-18 14:25:54 +02:00
BenGrenoble
efc36e12bc N°6361 - [ERGO] Change query example order to highlight the one working on an empty iTop 2023-08-17 14:25:39 +02:00
BenGrenoble
5a0b12f078 N°6361 - [ERGO] Change query example order to highlight the one working on an empty iTop 2023-08-16 11:04:56 +02:00
Molkobain
22d04cb9fc N°6103 - Remove jQuery Hotkeys plugin 2023-08-11 21:17:53 +02:00
Pierre Goiffon
d8da119c56 📝 Version history: fix typo in 2.7.9 date 2023-08-11 16:12:04 +02:00
Pierre Goiffon
a24d50d7e3 DBBackupDataTest::testPrepareFilesToBackup : fix cleanup not done on failing test 2023-08-11 15:19:48 +02:00
Molkobain
e5716e66bb Merge remote-tracking branch 'origin/support/3.1' into develop 2023-08-11 11:06:21 +02:00
Stephen Abello
c6c2bb33ed 📝 Version history: add 2.7.9 2023-08-10 15:08:56 +02:00
Pierre Goiffon
0d0ef86550 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-08-10 14:41:50 +02:00
Molkobain
ca0bd674a7 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-08-10 10:38:11 +02:00
Molkobain
260b2e0bd6 Fix typo in dictionary file 2023-08-09 15:56:49 +02:00
Pierre Goiffon
90413ae4fe Merge remote-tracking branch 'origin/support/3.1' into develop 2023-08-09 14:54:36 +02:00
Pavel Stetina
b7466e3206 N°6641 - Improve czech translations (thanks to @Stetinac !) (#524)
* 🌐Update cs.dictionary.itop.core.php

* 🌐Update cs.dictionary.itop.ui.php

* 🌐Update cs.dictionary.itop.ui.php

* 🌐Update cs.dict.itop-portal-base.php

* 🌐Update cs.dict.combodo-backoffice-darkmoon-theme.php

* 🌐 Update cs.dictionary.itop.ui.php

Typo fix
2023-08-09 11:46:39 +02:00
Pierre Goiffon
f2812cdbe5 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-08-09 10:21:12 +02:00
Pierre Goiffon
95a2fdec99 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-08-08 15:48:19 +02:00
Pierre Goiffon
6880c49a32 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-08-04 14:59:33 +02:00
Pierre Goiffon
1b48b4a1e1 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-08-03 11:09:29 +02:00
Pierre Goiffon
0516100aae Merge remote-tracking branch 'origin/support/3.1' into develop 2023-08-03 09:41:37 +02:00
Molkobain
5b4079ab7e Merge remote-tracking branch 'origin/support/3.1' into develop 2023-08-02 15:35:31 +02:00
Pierre Goiffon
d284d629a4 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-08-02 10:40:10 +02:00
Pierre Goiffon
c52195e6cd Merge remote-tracking branch 'origin/support/3.1' into develop 2023-08-01 14:39:28 +02:00
Eric Espie
a61734a6f8 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-07-28 10:57:54 +02:00
Eric Espie
750ecd4804 N°6061 - allow local path from an arbitrary path 2023-07-28 10:01:43 +02:00
Pierre Goiffon
781c15d1ee Merge remote-tracking branch 'origin/support/3.1' into develop 2023-07-27 17:03:47 +02:00
Pierre Goiffon
a1499a04d4 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-07-27 14:56:08 +02:00
Eric Espie
fb23bddeb2 N°6061 - allow local path from an arbitrary path 2023-07-27 12:06:14 +02:00
Pierre Goiffon
aa6fa4c674 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-07-27 11:32:52 +02:00
Eric Espie
19e7fc9cb9 N°6061 - Allow services to implement interfaces 2023-07-27 10:23:05 +02:00
Pierre Goiffon
a0a66f3b54 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-07-26 12:08:09 +02:00
Eric Espie
3c9c13a371 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-07-25 17:56:45 +02:00
Pierre Goiffon
96d04e35f9 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-07-25 17:07:44 +02:00
Pierre Goiffon
629a8412dc Merge remote-tracking branch 'origin/support/3.1' into develop 2023-07-24 15:39:25 +02:00
Pierre Goiffon
19a83bc944 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-07-24 12:00:25 +02:00
Eric Espie
a59dacf679 N°6436 - Performance Audit (KPI analysis) 2023-07-20 12:05:13 +02:00
Eric Espie
8b93a404ef Merge remote-tracking branch 'origin/support/3.1' into develop 2023-07-19 15:42:02 +02:00
Molkobain
ded204344d 👥 Add @Stetinac to the contributors list 🙌 2023-07-19 15:24:52 +02:00
Eric Espie
b3121d46c4 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-07-19 11:01:13 +02:00
Eric Espie
f60d03ddd3 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-07-19 09:28:23 +02:00
Pierre Goiffon
3d8345b92c Merge remote-tracking branch 'origin/support/3.1' into develop 2023-07-18 14:17:58 +02:00
Pierre Goiffon
9ab928e92e Merge remote-tracking branch 'origin/support/3.1' into develop 2023-07-18 09:49:17 +02:00
Benjamin Dalsass
ea56939b7a N°6546 - AttributeLinkedSetIndirect filter dosen't work 2023-07-17 10:12:48 +02:00
Molkobain
6caddb65e9 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-07-14 21:11:13 +02:00
Molkobain
8df0d66fb6 Merge remote-tracking branch 'origin/support/3.1' into develop 2023-07-13 10:18:03 +02:00
Eric Espie
a80aa20b23 Merge branch 'support/3.1' into develop 2023-07-12 13:32:26 +02:00
Pierre Goiffon
fd336ffd92 N°6558 Test for iTopDesignFormat::$aVersions consistency 2023-07-12 08:36:20 +02:00
Pierre Goiffon
be1c559ad4 Merge remote-tracking branch 'origin/support/3.1' into develop
# Conflicts:
#	core/config.class.inc.php
2023-07-11 11:59:09 +02:00
Pierre Goiffon
2dce37f289 🔖 Update XML files version to 3.2 2023-07-11 11:25:16 +02:00
Pierre Goiffon
22b5eef4ce 🔖 Fix typo in XML conversion method name 2023-07-11 11:24:45 +02:00
Pierre Goiffon
63426e459a 🔖 Update XML version to 3.2 2023-07-11 11:04:00 +02:00
Pierre Goiffon
8393172ad2 🔖 Prepare 3.2.0 version (modules) 2023-07-11 10:44:46 +02:00
Pierre Goiffon
cc06afc6df 🔖 Prepare 3.2.0 version 2023-07-11 10:30:53 +02:00
228 changed files with 2739 additions and 1670 deletions

View File

@@ -68,6 +68,8 @@ gitGraph
branch support/3.1 order: 840
checkout support/3.1
commit id: "2023-08-09" tag: "3.1.0-2"
checkout support/2.7
commit id: "2023-08-10" tag: "2.7.9"
```
To learn more, check the [iTop community versions history on the official wiki](https://www.itophub.io/wiki/page?id=latest:release:start).

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

@@ -140,7 +140,7 @@ When your code is working, please:
* Pull request description: mind to add all the information useful to understand why you're suggesting this modification and anything necessary to dive into your work. Especially:
- Bugfixes: exact steps to reproduce the bug (given/when/then), description of the bug cause and what solution is implemented
- Enhancements: use cases, implementation details if needed
* Mind to check the "[Allow edits from maintainers](https://docs.github.com/en/github-ae@latest/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork)" option !
* Mind to check the "[Allow edits from maintainers](https://docs.github.com/en/github-ae@latest/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork)" option ! (note that if you are working with an org fork, this option [won't be available](https://github.com/orgs/community/discussions/5634))
## 🙏 We are thankful

View File

@@ -90,6 +90,7 @@ We would like to give a special thank you 🤗 to the people from the community
- Dvořák, Lukáš
- Goethals, Stefan
- Gumble, David
- Ji, Leeb (冀利斌) (a.k.a [@chileeb](https://github.com/chileeb))
- Kaltefleiter, Lars (a.k.a [@larhip](https://www.github.com/larhip))
- Khamit, Shamil
- Kincel, Martin
@@ -107,6 +108,7 @@ 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
- Stetina, Pavel (a.k.a [@Stetinac](https://github.com/Stetinac))
- Stukalov, Ilya (a.k.a [@ilya](https://www.github.com/ilya)-stukalov)
- Tulio, Marco
- Turrubiates, Miguel

View File

@@ -446,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')
{
@@ -502,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();
@@ -558,6 +565,7 @@ class UserRightsProfile extends UserRightsAddOnAPI
// Cache
$this->m_aObjectActionGrants = array();
$this->m_aAdministrators = null;
}
public function LoadCache()
@@ -700,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');
@@ -718,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;
}
/**
@@ -758,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))
@@ -885,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))

View File

@@ -1,6 +1,6 @@
<?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-2023 Combodo SARL
*/

View File

@@ -335,7 +335,6 @@ abstract class AbstractPreferencesExtension implements iPreferencesExtension
* A recommended pattern is to cache data by the mean of static members.
*
* @api
* @deprecated 3.1.0 N°4756 use the new event service instead, see {@see DBObject::FireEvent()} method
* @package UIExtensibilityAPI
*/
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
*/

View File

@@ -1,6 +1,6 @@
<?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-2023 Combodo SARL
*/

View File

@@ -1,6 +1,6 @@
<?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-2023 Combodo SARL
*/

View File

@@ -744,7 +744,13 @@ HTML
$oPage->SetCurrentTab($sTabCode, $oAttDef->GetLabel().$sCount, $sTabDescription);
$aArgs = array('this' => $this);
$bReadOnly = ($iFlags & (OPT_ATT_READONLY | OPT_ATT_SLAVE));
$sEditWhen = $oAttDef->GetEditWhen();
// Calculate if edit_when allows to edit based on current $bEditMode
$bIsEditableBasedOnEditWhen = ($sEditWhen === LINKSET_EDITWHEN_ALWAYS) ||
($bEditMode ? $sEditWhen === LINKSET_EDITWHEN_ON_HOST_EDITION : $sEditWhen === LINKSET_EDITWHEN_ON_HOST_DISPLAY);
$bReadOnly = ($iFlags & (OPT_ATT_READONLY | OPT_ATT_SLAVE)) || !$bIsEditableBasedOnEditWhen;
if ($bEditMode && (!$bReadOnly)) {
$sInputId = $this->m_iFormId.'_'.$sAttCode;
$sDisplayValue = ''; // not used
@@ -754,9 +760,9 @@ HTML
$oPage->add($sHTMLValue);
} else {
if ($oAttDef->IsIndirect()) {
$oBlockLinkSetViewTable = new BlockIndirectLinkSetViewTable($oPage, $this, $sClass, $sAttCode, $oAttDef);
$oBlockLinkSetViewTable = new BlockIndirectLinkSetViewTable($oPage, $this, $sClass, $sAttCode, $oAttDef, $bReadOnly);
} else {
$oBlockLinkSetViewTable = new BlockDirectLinkSetViewTable($oPage, $this, $sClass, $sAttCode, $oAttDef);
$oBlockLinkSetViewTable = new BlockDirectLinkSetViewTable($oPage, $this, $sClass, $sAttCode, $oAttDef, $bReadOnly);
}
$oPage->AddUiBlock($oBlockLinkSetViewTable);
}

View File

@@ -1,6 +1,6 @@
<?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-2023 Combodo SARL
*/

View File

@@ -1264,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 = utils::HtmlEntities($this->sId);
$sLayoutClass = utils::HtmlEntities($this->sLayoutClass);
$sAutoReload = $this->bAutoReload ? 'true' : 'false';
$sAutoReloadSec = (string) $this->iAutoReloadSec;
$sTitle = addslashes($this->sTitle);
$sFile = addslashes($this->GetDefinitionFile());
$sTitle = utils::HtmlEntities($this->sTitle);
$sFile = utils::HtmlEntities($this->GetDefinitionFile());
$sUrl = utils::GetAbsoluteUrlAppRoot().'pages/ajax.render.php';
$sReloadURL = $this->GetReloadURL();

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
<classes>
<class id="AbstractResource" _delta="define">
<parent>cmdbAbstractObject</parent>
@@ -514,10 +514,18 @@
<description>The object containing the document</description>
<type>DBObject</type>
</event_datum>
<event_datum id="att_code">
<description>The optional object attribute code hosting the document</description>
<type>string</type>
</event_datum>
<event_datum id="document">
<description>The document downloaded</description>
<type>ormDocument</type>
</event_datum>
<event_datum id="content_disposition">
<description>The content disposition of the document ("inline" or "attachment")</description>
<type>string</type>
</event_datum>
<event_datum id="debug_info">
<description>Debug string</description>
<type>string</type>

View File

@@ -1911,6 +1911,7 @@ class MenuBlock extends DisplayBlock
// Check concurrent lock (can only be lock if we are handling a single object
$bLocked = false;
if ($iSetCount === 1) {
$oSet->OptimizeColumnLoad(array($this->GetFilter()->GetClassAlias() => array()));
$oObj = $oSet->Fetch();
if (false === is_null($oObj)) {
if (MetaModel::GetConfig()->Get('concurrent_lock_enabled')) {
@@ -2042,7 +2043,7 @@ class MenuBlock extends DisplayBlock
}
//----------------------------------------------------
// Any style but NOT "listInObject" (linksets) actions
// Any style but NOT \DisplayBlock::ENUM_STYLE_LIST_IN_OBJECT (linksets) actions
//----------------------------------------------------
if ($this->m_sStyle !== static::ENUM_STYLE_LIST_IN_OBJECT) {
switch ($iSetCount) {

View File

@@ -1,6 +1,6 @@
<?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-2023 Combodo SARL
*/

View File

@@ -1,6 +1,6 @@
<?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-2023 Combodo SARL
*/

View File

@@ -1,6 +1,6 @@
<?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-2023 Combodo SARL
*/

View File

@@ -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);

View File

@@ -1,6 +1,6 @@
<?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-2023 Combodo SARL
*/

View File

@@ -1,6 +1,6 @@
<?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-2023 Combodo SARL
*/

View File

@@ -975,6 +975,10 @@ HTML
// 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(), $aFormExtraParams);
$oPage->add(<<<HTML
</div>

View File

@@ -143,6 +143,10 @@ 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);
}

View File

@@ -52,22 +52,31 @@ class utils
{
/**
* @var string
* @since 3.0.0
* @since 2.7.10 3.0.0
*/
public const ENUM_SANITIZATION_FILTER_INTEGER = 'integer';
/**
* Datamodel class
* @var string
* @since 3.0.0
* @since 2.7.10 3.0.0
* @since 2.7.10 3.0.4 3.1.1 3.2.0 N°6606 update PHPDoc
* @uses MetaModel::IsValidClass()
*/
public const ENUM_SANITIZATION_FILTER_CLASS = 'class';
/**
* @var string
* @since 3.0.0
* @since 2.7.10 3.0.4 3.1.1 3.2.0 N°6606
* @uses class_exists()
*/
public const ENUM_SANITIZATION_FILTER_PHP_CLASS = 'php_class';
/**
* @var string
* @since 2.7.10 3.0.0
*/
public const ENUM_SANITIZATION_FILTER_STRING = 'string';
/**
* @var string
* @since 3.0.0
* @since 2.7.10 3.0.0
*/
public const ENUM_SANITIZATION_FILTER_CONTEXT_PARAM = 'context_param';
/**
@@ -82,22 +91,22 @@ class utils
public const ENUM_SANITIZATION_FILTER_OPERATION = 'operation';
/**
* @var string
* @since 3.0.0
* @since 2.7.10 3.0.0
*/
public const ENUM_SANITIZATION_FILTER_PARAMETER = 'parameter';
/**
* @var string
* @since 3.0.0
* @since 2.7.10 3.0.0
*/
public const ENUM_SANITIZATION_FILTER_FIELD_NAME = 'field_name';
/**
* @var string
* @since 3.0.0
* @since 2.7.10 3.0.0
*/
public const ENUM_SANITIZATION_FILTER_TRANSACTION_ID = 'transaction_id';
/**
* @var string For XML / HTML node identifiers
* @since 3.0.0
* @since 2.7.10 3.0.0
*/
public const ENUM_SANITIZATION_FILTER_ELEMENT_IDENTIFIER = 'element_identifier';
/**
@@ -107,12 +116,13 @@ class utils
public const ENUM_SANITIZATION_FILTER_VARIABLE_NAME = 'variable_name';
/**
* @var string
* @since 3.0.0
* @since 2.7.10 3.0.0
*/
public const ENUM_SANITIZATION_FILTER_RAW_DATA = 'raw_data';
/**
* @var string
* @since 3.0.2, 3.1.0 N°4899
* @since 3.0.2 3.1.0 N°4899
* @since 2.7.10 N°6606
*/
public const ENUM_SANITIZATION_FILTER_URL = 'url';
@@ -155,6 +165,8 @@ class utils
private static $iNextId = 0;
private static $m_sAppRootUrl = null;
protected static function LoadParamFile($sParamFile)
{
if (!file_exists($sParamFile)) {
@@ -396,6 +408,10 @@ class utils
* @since 2.7.0 new 'element_identifier' filter
* @since 3.0.0 new utils::ENUM_SANITIZATION_* const
* @since 2.7.7, 3.0.2, 3.1.0 N°4899 - new 'url' filter
* @since 2.7.10 N°6606 use the utils::ENUM_SANITIZATION_* const
* @since 2.7.10 N°6606 new case for ENUM_SANITIZATION_FILTER_PHP_CLASS
*
* @link https://www.php.net/manual/en/filter.filters.sanitize.php PHP sanitization filters
*/
protected static function Sanitize_Internal($value, $sSanitizationFilter)
{
@@ -416,6 +432,13 @@ class utils
$retValue = filter_var($value, FILTER_SANITIZE_SPECIAL_CHARS);
break;
case static::ENUM_SANITIZATION_FILTER_PHP_CLASS:
$retValue = $value;
if (!class_exists($value)) {
$retValue = false;
}
break;
case static::ENUM_SANITIZATION_FILTER_CONTEXT_PARAM:
case static::ENUM_SANITIZATION_FILTER_ROUTE:
case static::ENUM_SANITIZATION_FILTER_OPERATION:
@@ -481,6 +504,7 @@ class utils
// For URL
case static::ENUM_SANITIZATION_FILTER_URL:
// N°6350 - returns only valid URLs
$retValue = filter_var($value, FILTER_VALIDATE_URL);
break;
@@ -1024,7 +1048,7 @@ class utils
*/
public static function GetAbsoluteUrlAppRoot($bForceTrustProxy = false)
{
static $sUrl = null;
$sUrl = static::$m_sAppRootUrl;
if ($sUrl === null || $bForceTrustProxy)
{
$sUrl = self::GetConfig()->Get('app_root_url');
@@ -1045,8 +1069,9 @@ class utils
}
$sUrl = str_replace(SERVER_NAME_PLACEHOLDER, $sServerName, $sUrl);
}
static::$m_sAppRootUrl = $sUrl;
}
return $sUrl;
return static::$m_sAppRootUrl;
}
/**

View File

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

View File

@@ -351,6 +351,7 @@ class WizardHelper
/**
* @return string JS code to be executed for fields update
* @since 3.0.0 N°3198
* @deprecated 3.0.3-2 3.0.4 3.1.1 3.2.0 Use {@see \WizardHelper::AddJsForUpdateFields()} instead
*/
public function GetJsForUpdateFields()
{
@@ -363,6 +364,32 @@ class WizardHelper
JS;
}
/**
* Add necessary JS snippets (to the page) to be executed for fields update
*
* @param \WebPage $oPage
* @return void
* @since 3.0.3-2 3.0.4 3.1.1 3.2.0 N°6766
*/
public function AddJsForUpdateFields(WebPage $oPage)
{
$sWizardHelperJsVar = (!is_null($this->m_aData['m_sWizHelperJsVarName'])) ? utils::Sanitize($this->m_aData['m_sWizHelperJsVarName'], '', utils::ENUM_SANITIZATION_FILTER_PARAMETER) : 'oWizardHelper'.$this->GetFormPrefix();
$sWizardHelperJson = $this->ToJSON();
$oPage->add_script(<<<JS
{$sWizardHelperJsVar}.m_oData = {$sWizardHelperJson};
{$sWizardHelperJsVar}.UpdateFields();
JS
);
$oPage->add_ready_script(<<<JS
if ({$sWizardHelperJsVar}.m_oDependenciesUpdatedPromiseResolve !== null){
{$sWizardHelperJsVar}.m_oDependenciesUpdatedPromiseResolve();
}
JS
);
}
/*
* Function with an old pattern of code
* @deprecated 3.1.0
@@ -371,11 +398,9 @@ JS;
{
$aSet = json_decode($sJsonSet, true); // true means hash array instead of object
$oSet = CMDBObjectSet::FromScratch($sLinkClass);
foreach ($aSet as $aLinkObj)
{
foreach ($aSet as $aLinkObj) {
$oLink = MetaModel::NewObject($sLinkClass);
foreach ($aLinkObj as $sAttCode => $value)
{
foreach ($aLinkObj as $sAttCode => $value) {
$oAttDef = MetaModel::GetAttributeDef($sLinkClass, $sAttCode);
if (($oAttDef->IsExternalKey()) && ($value != '') && ($value > 0))
{

View File

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

View File

@@ -11,7 +11,7 @@ define('APPCONF', APPROOT.'conf/');
*
* @see ITOP_CORE_VERSION to get full iTop core version
*/
define('ITOP_DESIGN_LATEST_VERSION', '3.1');
define('ITOP_DESIGN_LATEST_VERSION', '3.2');
/**
* Constant containing the iTop core version, whatever application was built
@@ -23,7 +23,7 @@ define('ITOP_DESIGN_LATEST_VERSION', '3.1');
* @used-by utils::GetItopVersionWikiSyntax()
* @used-by iTopModulesPhpVersionIntegrationTest
*/
define('ITOP_CORE_VERSION', '3.1.0');
define('ITOP_CORE_VERSION', '3.2.0');
/**
* @since 3.0.4 N°6274 Allow to test if PHPUnit is currently running. Starting with PHPUnit 9.5 we'll be able to replace it with $GLOBALS['phpunit_version']

View File

@@ -60,6 +60,7 @@ class DbConnectionWrapper
*
* @param \mysqli|null $oMysqli
* @since 3.0.4 3.1.1 3.2.0 Param $oMysqli becomes nullable
* @since 3.1.0-4 N°6848 backport of restoring cnx on null parameter value
*/
public static function SetDbConnectionMockForQuery(?mysqli $oMysqli = null): void
{

View File

@@ -91,6 +91,12 @@ define('LINKSET_EDITMODE_ACTIONS', 2); // Show the usual 'Actions' popup menu
define('LINKSET_EDITMODE_INPLACE', 3); // The "linked" objects can be created/modified/deleted in place
define('LINKSET_EDITMODE_ADDREMOVE', 4); // The "linked" objects can be added/removed in place
define('LINKSET_EDITWHEN_NEVER', 0); // The linkset cannot be edited at all from inside this object
define('LINKSET_EDITWHEN_ON_HOST_EDITION', 1); // The only possible action is to open a new window to create a new object
define('LINKSET_EDITWHEN_ON_HOST_DISPLAY', 2); // Show the usual 'Actions' popup menu
define('LINKSET_EDITWHEN_ALWAYS', 3); // Show the usual 'Actions' popup menu
define('LINKSET_DISPLAY_STYLE_PROPERTY', 'property');
define('LINKSET_DISPLAY_STYLE_TAB', 'tab');
@@ -791,7 +797,7 @@ abstract class AttributeDefinition
public function HasAValue($proposedValue): bool
{
// Default implementation, we don't really know what type $proposedValue will be
return is_null($proposedValue);
return !(is_null($proposedValue));
}
/**
@@ -1703,6 +1709,15 @@ class AttributeLinkedSet extends AttributeDefinition
public function GetEditMode()
{
return $this->GetOptional('edit_mode', LINKSET_EDITMODE_ACTIONS);
}
/**
* @return int see LINKSET_EDITWHEN_* constants
* @since 3.1.1 3.2.0 N°6385
*/
public function GetEditWhen(): int
{
return $this->GetOptional('edit_when', LINKSET_EDITWHEN_ALWAYS);
}
/**
@@ -8584,7 +8599,7 @@ class AttributeBlob extends AttributeDefinition
public function RecordAttChange(DBObject $oObject, $original, $value): void
{
// N°6502 Don't record history if only the download count has changed
if ($original->EqualsExceptDownloadsCount($value)) {
if ((null !== $original) && (null !== $value) && $original->EqualsExceptDownloadsCount($value)) {
return;
}

View File

@@ -149,7 +149,9 @@ abstract class BulkExport
$this->oSearch = null;
$this->iChunkSize = 0;
$this->sFormatCode = null;
$this->aStatusInfo = array();
$this->aStatusInfo = [
'show_obsolete_data' => utils::ShowObsoleteData(),
];
$this->oBulkExportResult = null;
$this->sTmpFile = '';
$this->bLocalizeOutput = false;
@@ -203,15 +205,17 @@ abstract class BulkExport
if ($oInfo && ($oInfo->Get('user_id') == UserRights::GetUserId()))
{
$sFormatCode = $oInfo->Get('format');
$oSearch = DBObjectSearch::unserialize($oInfo->Get('search'));
$aStatusInfo = json_decode($oInfo->Get('status_info'),true);
$oSearch = DBObjectSearch::unserialize($oInfo->Get('search'));
$oSearch->SetShowObsoleteData($aStatusInfo['show_obsolete_data']);
$oBulkExporter = self::FindExporter($sFormatCode, $oSearch);
if ($oBulkExporter)
{
$oBulkExporter->SetFormat($sFormatCode);
$oBulkExporter->SetObjectList($oSearch);
$oBulkExporter->SetChunkSize($oInfo->Get('chunk_size'));
$oBulkExporter->SetStatusInfo(json_decode($oInfo->Get('status_info'), true));
$oBulkExporter->SetStatusInfo($aStatusInfo);
$oBulkExporter->SetLocalizeOutput($oInfo->Get('localize_output'));
@@ -289,6 +293,7 @@ abstract class BulkExport
*/
public function SetObjectList(DBSearch $oSearch)
{
$oSearch->SetShowObsoleteData($this->aStatusInfo['show_obsolete_data']);
$this->oSearch = $oSearch;
}

View File

@@ -29,7 +29,7 @@ define('ITOP_APPLICATION_SHORT', 'iTop');
*
* @see ITOP_CORE_VERSION to get iTop core version
*/
define('ITOP_VERSION', '3.1.1-dev');
define('ITOP_VERSION', '3.2.0-dev');
define('ITOP_VERSION_NAME', 'Fullmoon');
define('ITOP_REVISION', 'svn');

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
<user_rights>
<profiles>
<profile id="1024" _delta="define">
@@ -282,8 +282,13 @@
<field id="obj_attcode" xsi:type="AttributeString"/>
</fields>
</class>
<class id="DefaultWorkingTimeComputer" _delta="define">
<interfaces>
<interface id="iWorkingTimeComputer"/>
</interfaces>
</class>
</classes>
<attribute_properties_definition _delta="define">
<attribute_properties_definition _delta="define">
<properties>
<property id="sql">
<php_param>sql</php_param>

View File

@@ -3582,7 +3582,8 @@ abstract class DBObject implements iDisplay
$oKPI->ComputeStatsForExtension($this, 'AfterUpdate');
// - TriggerOnObjectUpdate
$aParams = array('class_list' => MetaModel::EnumParentClasses(get_class($this), ENUM_PARENT_CLASSES_ALL));
$aClassList = MetaModel::EnumParentClasses(get_class($this), ENUM_PARENT_CLASSES_ALL);
$aParams = array('class_list' => $aClassList);
$oSet = new DBObjectSet(DBObjectSearch::FromOQL('SELECT TriggerOnObjectUpdate AS t WHERE t.target_class IN (:class_list)'),
array(), $aParams);
while ($oTrigger = $oSet->Fetch()) {
@@ -3596,6 +3597,44 @@ abstract class DBObject implements iDisplay
}
}
$sClass = get_class($this);
if (MetaModel::HasLifecycle($sClass))
{
$sStateAttCode = MetaModel::GetStateAttributeCode($sClass);
if (isset($this->m_aPreviousValuesForUpdatedAttributes[$sStateAttCode])) {
$sPreviousState = $this->m_aPreviousValuesForUpdatedAttributes[$sStateAttCode];
// Change state triggers...
$aParams = array(
'class_list' => MetaModel::EnumParentClasses($sClass, ENUM_PARENT_CLASSES_ALL),
'previous_state' => $sPreviousState,
'new_state' => $this->Get($sStateAttCode),
);
$oSet = new DBObjectSet(DBObjectSearch::FromOQL('SELECT TriggerOnStateLeave AS t WHERE t.target_class IN (:class_list) AND t.state=:previous_state'), array(), $aParams);
while ($oTrigger = $oSet->Fetch()) {
/** @var \TriggerOnStateLeave $oTrigger */
try {
$oTrigger->DoActivate($this->ToArgs('this'));
}
catch (Exception $e) {
$oTrigger->LogException($e, $this);
utils::EnrichRaisedException($oTrigger, $e);
}
}
$oSet = new DBObjectSet(DBObjectSearch::FromOQL('SELECT TriggerOnStateEnter AS t WHERE t.target_class IN (:class_list) AND t.state=:new_state'), array(), $aParams);
while ($oTrigger = $oSet->Fetch()) {
/** @var \TriggerOnStateEnter $oTrigger */
try {
$oTrigger->DoActivate($this->ToArgs('this'));
}
catch (Exception $e) {
$oTrigger->LogException($e, $this);
utils::EnrichRaisedException($oTrigger, $e);
}
}
}
}
// Activate any existing trigger
// - TriggerOnObjectMention
// Forgotten by the fix of N°3245
@@ -4291,36 +4330,6 @@ abstract class DBObject implements iDisplay
$this->DBWrite();
}
// Change state triggers...
$aParams = array(
'class_list' => MetaModel::EnumParentClasses($sClass, ENUM_PARENT_CLASSES_ALL),
'previous_state' => $sPreviousState,
'new_state' => $sNewState,
);
$oSet = new DBObjectSet(DBObjectSearch::FromOQL("SELECT TriggerOnStateLeave AS t WHERE t.target_class IN (:class_list) AND t.state=:previous_state"), array(), $aParams);
while ($oTrigger = $oSet->Fetch()) {
/** @var \TriggerOnStateLeave $oTrigger */
try {
$oTrigger->DoActivate($this->ToArgs('this'));
}
catch (Exception $e) {
$oTrigger->LogException($e, $this);
utils::EnrichRaisedException($oTrigger, $e);
}
}
$oSet = new DBObjectSet(DBObjectSearch::FromOQL("SELECT TriggerOnStateEnter AS t WHERE t.target_class IN (:class_list) AND t.state=:new_state"), array(), $aParams);
while ($oTrigger = $oSet->Fetch()) {
/** @var \TriggerOnStateEnter $oTrigger */
try {
$oTrigger->DoActivate($this->ToArgs('this'));
}
catch (Exception $e) {
$oTrigger->LogException($e, $this);
utils::EnrichRaisedException($oTrigger, $e);
}
}
$this->FireEvent(EVENT_DB_AFTER_APPLY_STIMULUS, $aEventData);
}
else

View File

@@ -1671,6 +1671,8 @@ class ExceptionLog extends LogAPI
*/
private static function GetLastEventIssue()
{
return self::$oLastEventIssue;
$oRet = self::$oLastEventIssue;
self::$oLastEventIssue = null;
return $oRet;
}
}

View File

@@ -1241,7 +1241,7 @@ abstract class MetaModel
}
$sTable = self::DBGetTable($sClass);
// Could be completed later with all the classes that are using a given table
// Could be completed later with all the classes that are using a given table
if (!array_key_exists($sTable, $aTables)) {
$aTables[$sTable] = array();
}
@@ -3522,7 +3522,7 @@ abstract class MetaModel
}
// Set the "host class" as soon as possible, since HierarchicalKeys use it for their 'target class' as well
// and this needs to be know early (for Init_IsKnowClass 19 lines below)
// and this needs to be know early (for Init_IsKnowClass 19 lines below)
$oAtt->SetHostClass($sTargetClass);
// Some attributes could refer to a class
@@ -3564,7 +3564,7 @@ abstract class MetaModel
self::$m_aAttribDefs[$sTargetClass][$oAtt->GetCode()] = $oAtt;
self::$m_aAttribOrigins[$sTargetClass][$oAtt->GetCode()] = $sTargetClass;
// Note: it looks redundant to put targetclass there, but a mix occurs when inheritance is used
// Note: it looks redundant to put targetclass there, but a mix occurs when inheritance is used
}
/**
@@ -3764,7 +3764,7 @@ abstract class MetaModel
self::$m_aStimuli[$sTargetClass][$oStimulus->GetCode()] = $oStimulus;
// I wanted to simplify the syntax of the declaration of objects in the biz model
// Therefore, the reference to the host class is set there
// Therefore, the reference to the host class is set there
$oStimulus->SetHostClass($sTargetClass);
}
@@ -4219,40 +4219,77 @@ abstract class MetaModel
}
else
{
$aCurrentUser = array();
$aCurrentContact = array();
$aCurrentUser = [];
$aCurrentContact = [];
foreach ($aExpectedArgs as $expression)
{
$aName = explode('->', $expression->GetName());
if ($aName[0] == 'current_contact_id') {
$aPlaceholders['current_contact_id'] = UserRights::GetContactId();
}
if ($aName[0] == 'current_user') {
} else if ($aName[0] == 'current_user') {
array_push($aCurrentUser, $aName[1]);
}
if ($aName[0] == 'current_contact') {
} else if ($aName[0] == 'current_contact') {
array_push($aCurrentContact, $aName[1]);
}
}
if (count($aCurrentUser) > 0) {
$oUser = UserRights::GetUserObject();
$aPlaceholders['current_user->object()'] = $oUser;
foreach ($aCurrentUser as $sField) {
$aPlaceholders['current_user->'.$sField] = $oUser->Get($sField);
}
static::FillObjectPlaceholders($aPlaceholders, 'current_user', UserRights::GetUserObject(), $aCurrentUser);
}
if (count($aCurrentContact) > 0) {
$oPerson = UserRights::GetContactObject();
$aPlaceholders['current_contact->object()'] = $oPerson;
foreach ($aCurrentContact as $sField) {
$aPlaceholders['current_contact->'.$sField] = $oPerson->Get($sField);
}
static::FillObjectPlaceholders($aPlaceholders, 'current_contact', UserRights::GetContactObject(), $aCurrentContact);
}
}
return $aPlaceholders;
}
/**
* @since 3.1.1 N°6824
* @param array $aPlaceholders
* @param string $sPlaceHolderPrefix
* @param ?\DBObject $oObject
* @param array $aCurrentUser
*
* @return void
*
*/
private static function FillObjectPlaceholders(array &$aPlaceholders, string $sPlaceHolderPrefix, ?\DBObject $oObject, array $aCurrentUser) : void {
$sPlaceHolderKey = $sPlaceHolderPrefix."->object()";
if (is_null($oObject)){
$aContext = [
"current_user_id" => UserRights::GetUserId(),
"null object type" => $sPlaceHolderPrefix,
"fields" => $aCurrentUser,
];
IssueLog::Warning("Unresolved placeholders due to null object in current context", null,
$aContext);
$aPlaceholders[$sPlaceHolderKey] = \Dict::Format("Core:Placeholder:CannotBeResolved", $sPlaceHolderKey);
foreach ($aCurrentUser as $sField) {
$sPlaceHolderKey = $sPlaceHolderPrefix . "->$sField";
$aPlaceholders[$sPlaceHolderKey] = \Dict::Format("Core:Placeholder:CannotBeResolved", $sPlaceHolderKey);
}
} else {
$aPlaceholders[$sPlaceHolderKey] = $oObject;
foreach ($aCurrentUser as $sField) {
$sPlaceHolderKey = $sPlaceHolderPrefix . "->$sField";
if (false === MetaModel::IsValidAttCode(get_class($oObject), $sField)){
$aContext = [
"current_user_id" => UserRights::GetUserId(),
"obj_class" => get_class($oObject),
"placeholder" => $sPlaceHolderKey,
"invalid_field" => $sField,
];
IssueLog::Warning("Unresolved placeholder due to invalid attribute", null,
$aContext);
$aPlaceholders[$sPlaceHolderKey] = \Dict::Format("Core:Placeholder:CannotBeResolved", $sPlaceHolderKey);
continue;
}
$aPlaceholders[$sPlaceHolderKey] = $oObject->Get($sField);
}
}
}
/**
* @param \DBSearch $oFilter
*
@@ -6479,7 +6516,7 @@ abstract class MetaModel
$aCache['m_aExtensionClassNames'] = self::$m_aExtensionClassNames;
$aCache['m_Category2Class'] = self::$m_Category2Class;
$aCache['m_aRootClasses'] = self::$m_aRootClasses; // array of "classname" => "rootclass"
$aCache['m_aParentClasses'] = self::$m_aParentClasses; // array of ("classname" => array of "parentclass")
$aCache['m_aParentClasses'] = self::$m_aParentClasses; // array of ("classname" => array of "parentclass")
$aCache['m_aChildClasses'] = self::$m_aChildClasses; // array of ("classname" => array of "childclass")
$aCache['m_aClassParams'] = self::$m_aClassParams; // array of ("classname" => array of class information)
$aCache['m_aAttribDefs'] = self::$m_aAttribDefs; // array of ("classname" => array of attributes)
@@ -6737,7 +6774,13 @@ abstract class MetaModel
if ($bMustBeFound && empty($aRow))
{
throw new CoreException("No result for the single row query: '$sSQL'");
$sNotFoundErrorMessage = "No result for the single row query";
IssueLog::Info($sNotFoundErrorMessage, LogChannels::CMDB_SOURCE, [
'class' => $sClass,
'key' => $iKey,
'sql_query' => $sSQL,
]);
throw new CoreException($sNotFoundErrorMessage);
}
return $aRow;

View File

@@ -68,8 +68,6 @@ class PDFBulkExport extends HTMLBulkExport
//page format
$oSelectFormat = SelectUIBlockFactory::MakeForSelectWithLabel("page_size", Dict::S('Core:BulkExport:PDFPageSize'));
$oSelectFormat->SetIsLabelBefore(false);
//$oSelectFormat->AddCSSClass('ibo-input-checkbox');
$oFieldSetFormat->AddSubBlock($oSelectFormat);
$aPossibleFormat = ['A3', 'A4', 'Letter'];
@@ -79,10 +77,7 @@ class PDFBulkExport extends HTMLBulkExport
}
$oFieldSetFormat->AddSubBlock(new Html('</br>'));
$oSelectOrientation = SelectUIBlockFactory::MakeForSelectWithLabel("page_orientation",
Dict::S('Core:BulkExport:PDFPageOrientation'));
$oSelectOrientation->SetIsLabelBefore(false);
//$oSelectOrientation->AddCSSClass('ibo-input-checkbox');
$oSelectOrientation = SelectUIBlockFactory::MakeForSelectWithLabel("page_orientation", Dict::S('Core:BulkExport:PDFPageOrientation'));
$oFieldSetFormat->AddSubBlock($oSelectOrientation);
$aPossibleOrientation = ['P', 'L'];

View File

@@ -13,6 +13,9 @@ $body-overflow-x: hidden !default;
$body-overflow-y: auto !default;
/*N°5786 - Avoid strong text to always be grey (default Bulma color for this var.) so strong text can keep its color. This is mostly for text within the .ibo-is-html-content. */
$text-strong: inherit !default;
/**
* customize Bulma content variables
* See https://bulma.io/documentation/elements/content/

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
<constants>
</constants>
<classes>

View File

@@ -5,7 +5,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'authent-cas/3.1.0',
'authent-cas/3.2.0',
array(
// Identification
//

View File

@@ -27,7 +27,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'authent-external/3.1.0',
'authent-external/3.2.0',
array(
// Identification
//

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
<classes>
<class id="UserLDAP" _delta="define">
<parent>cmdbAbstractObject</parent>
@@ -355,4 +355,26 @@
</presentation>
</class>
</classes>
<meta>
<classes>
<class id="UserInternal" _delta="define_if_not_exists">
<fields>
<field id="contactid" xsi:type="AttributeExternalKey">
<target_class>Contact</target_class>
</field>
<field id="first_name" xsi:type="AttributeExternalField"/>
<field id="last_name" xsi:type="AttributeExternalField"/>
<field id="status" xsi:type="AttributeEnum"/>
<field id="org_id" xsi:type="AttributeExternalField"/>
<field id="email" xsi:type="AttributeExternalField"/>
<field id="login" xsi:type="AttributeString"/>
<field id="language" xsi:type="AttributeApplicationLanguage"/>
<field id="status" xsi:type="AttributeEnum"/>
<field id="allowed_org_list" xsi:type="AttributeLinkedSetIndirect"/>
<field id="profile_list" xsi:type="AttributeLinkedSetIndirect"/>
<field id="log" xsi:type="AttributeCaseLog"/>
</fields>
</class>
</classes>
</meta>
</itop_design>

View File

@@ -9,7 +9,7 @@ if (function_exists('ldap_connect'))
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'authent-ldap/3.1.0',
'authent-ldap/3.2.0',
array(
// Identification
//

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
<module_parameters>
<parameters id="authent-local" _delta="define">
<password_validation.pattern>^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\da-zA-Z]).{8,}$</password_validation.pattern>

View File

@@ -3,7 +3,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'authent-local/3.1.0',
'authent-local/3.2.0',
array(
// Identification
//

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
<branding>
<themes>
<theme id="darkmoon" _delta="define">

View File

@@ -21,5 +21,5 @@
* along with iTop. If not, see <http://www.gnu.org/licenses/>
*/
Dict::Add('CS CZ', 'Czech', 'Čeština', array(
'theme:darkmoon' => 'Dark moon~~',
));
'theme:darkmoon' => 'Dark moon',
));

View File

@@ -5,7 +5,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'combodo-backoffice-darkmoon-theme/3.1.0',
'combodo-backoffice-darkmoon-theme/3.2.0',
array(
// Identification
//

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
<menus>
<menu id="DBToolsMenu" xsi:type="WebPageMenuNode" _delta="define">
<rank>30</rank>

View File

@@ -24,7 +24,7 @@
/** @noinspection PhpUnhandledExceptionInspection */
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'combodo-db-tools/3.1.0',
'combodo-db-tools/3.2.0',
array(
// Identification
//

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
<classes>
<class id="Attachment" _delta="define">
<parent>DBObject</parent>

View File

@@ -19,7 +19,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-attachments/3.1.0',
'itop-attachments/3.2.0',
array(
// Identification
//

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
<menus>
<menu id="BackupStatus" xsi:type="WebPageMenuNode" _delta="define">
<rank>50</rank>

View File

@@ -3,7 +3,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-backup/3.1.0',
'itop-backup/3.2.0',
array(
// Identification
//

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
<constants/>
<classes>
<class id="lnkFunctionalCIToProviderContract" _delta="define">

View File

@@ -5,7 +5,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-bridge-cmdb-services/3.1.0',
'itop-bridge-cmdb-services/3.2.0',
array(
// Identification
//

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
<constants/>
<classes>
<class id="lnkFunctionalCIToTicket" _delta="define">

View File

@@ -5,7 +5,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-bridge-cmdb-ticket/3.1.0',
'itop-bridge-cmdb-ticket/3.2.0',
array(
// Identification
//

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
<constants/>
<classes>
<class id="Rack" _delta="must_exist">

View File

@@ -5,7 +5,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-bridge-datacenter-mgmt-services/3.1.0',
'itop-bridge-datacenter-mgmt-services/3.2.0',
array(
// Identification
//

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
<constants/>
<classes>
<class id="Phone" _delta="must_exist">

View File

@@ -5,7 +5,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-bridge-endusers-devices-services/3.1.0',
'itop-bridge-endusers-devices-services/3.2.0',
array(
// Identification
//

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
<constants/>
<classes>
<class id="SANSwitch" _delta="must_exist">

View File

@@ -5,7 +5,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-bridge-storage-mgmt-services/3.1.0',
'itop-bridge-storage-mgmt-services/3.2.0',
array(
// Identification
//

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
<constants/>
<classes>
<class id="Hypervisor" _delta="must_exist">

View File

@@ -5,7 +5,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-bridge-virtualization-mgmt-services/3.1.0',
'itop-bridge-virtualization-mgmt-services/3.2.0',
array(
// Identification
//

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
<classes>
<class id="lnkVirtualDeviceToVolume" _delta="define">
<parent>cmdbAbstractObject</parent>

View File

@@ -3,7 +3,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-bridge-virtualization-storage/3.1.0',
'itop-bridge-virtualization-storage/3.2.0',
array(
// Identification
//

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
<classes>
<class id="Change" _delta="define">
<parent>Ticket</parent>
@@ -21,7 +21,7 @@
<attribute id="ref"/>
</attributes>
<complementary_attributes>
<attribute id="title"></attribute>
<attribute id="title"/>
</complementary_attributes>
</naming>
<fields_semantic>
@@ -49,20 +49,12 @@
<value id="approved">approved
<code>approved</code>
<rank>60</rank>
<style>
<main_color>$ibo-lifecycle-success-state-primary-color</main_color>
<complementary_color>$ibo-lifecycle-success-state-secondary-color</complementary_color>
<decoration_classes>fas fa-user-check</decoration_classes>
</style>
<style><main_color>$ibo-lifecycle-success-state-primary-color</main_color><complementary_color>$ibo-lifecycle-success-state-secondary-color</complementary_color><decoration_classes>fas fa-user-check</decoration_classes></style>
</value>
<value id="assigned">assigned
<code>assigned</code>
<rank>40</rank>
<style>
<main_color>$ibo-lifecycle-neutral-state-primary-color</main_color>
<complementary_color>$ibo-lifecycle-neutral-state-secondary-color</complementary_color>
<decoration_classes/>
</style>
<style><main_color>$ibo-lifecycle-neutral-state-primary-color</main_color><complementary_color>$ibo-lifecycle-neutral-state-secondary-color</complementary_color><decoration_classes/></style>
</value>
<value id="closed">
<code>closed</code>
@@ -1296,7 +1288,7 @@
<attribute id="ref"/>
</attributes>
<complementary_attributes>
<attribute id="title"></attribute>
<attribute id="title"/>
</complementary_attributes>
</naming>
<style>
@@ -2097,7 +2089,7 @@
<attribute id="ref"/>
</attributes>
<complementary_attributes>
<attribute id="title"></attribute>
<attribute id="title"/>
</complementary_attributes>
</naming>
<style>
@@ -3103,7 +3095,7 @@
<attribute id="ref"/>
</attributes>
<complementary_attributes>
<attribute id="title"></attribute>
<attribute id="title"/>
</complementary_attributes>
</naming>
<style>
@@ -3801,7 +3793,7 @@
<attribute id="ref"/>
</attributes>
<complementary_attributes>
<attribute id="title"></attribute>
<attribute id="title"/>
</complementary_attributes>
</naming>
<style>

View File

@@ -3,7 +3,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-change-mgmt-itil/3.1.0',
'itop-change-mgmt-itil/3.2.0',
array(
// Identification
//

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
<classes>
<class id="Change" _delta="define">
<parent>Ticket</parent>
@@ -21,7 +21,7 @@
<attribute id="ref"/>
</attributes>
<complementary_attributes>
<attribute id="title"></attribute>
<attribute id="title"/>
</complementary_attributes>
</naming>
<fields_semantic>

View File

@@ -3,7 +3,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-change-mgmt/3.1.0',
'itop-change-mgmt/3.2.0',
array(
// Identification
//

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
<classes>
<class id="FunctionalCI" _delta="define">
<parent>cmdbAbstractObject</parent>
@@ -15,7 +15,7 @@
<attribute id="name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="organization_name"/>
</complementary_attributes>
</naming>
<style>
@@ -272,7 +272,7 @@
<attribute id="name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="organization_name"/>
<attribute id="location_name"/>
</complementary_attributes>
</naming>
@@ -530,8 +530,8 @@
<attribute id="name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="location_name"></attribute>
<attribute id="organization_name"/>
<attribute id="location_name"/>
</complementary_attributes>
</naming>
<style>
@@ -702,8 +702,8 @@
<attribute id="name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="location_name"></attribute>
<attribute id="organization_name"/>
<attribute id="location_name"/>
</complementary_attributes>
</naming>
<style>
@@ -992,8 +992,8 @@
<attribute id="name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="networkdevicetype_name"></attribute>
<attribute id="organization_name"/>
<attribute id="networkdevicetype_name"/>
</complementary_attributes>
</naming>
<style>
@@ -1293,8 +1293,8 @@
<attribute id="name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="location_name"></attribute>
<attribute id="organization_name"/>
<attribute id="location_name"/>
</complementary_attributes>
</naming>
<style>
@@ -1621,7 +1621,7 @@
<attribute id="name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="organization_name"/>
</complementary_attributes>
</naming>
<fields_semantic>
@@ -1797,7 +1797,7 @@
<attribute id="name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="organization_name"/>
</complementary_attributes>
</naming>
<fields_semantic>
@@ -1943,7 +1943,7 @@
<attribute id="system_name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="organization_name"/>
</complementary_attributes>
</naming>
<fields_semantic>
@@ -2145,7 +2145,7 @@
<attribute id="system_name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="organization_name"/>
</complementary_attributes>
</naming>
<style>
@@ -2299,7 +2299,7 @@
<attribute id="system_name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="organization_name"/>
</complementary_attributes>
</naming>
<style>
@@ -2453,7 +2453,7 @@
<attribute id="system_name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="organization_name"/>
</complementary_attributes>
</naming>
<style>
@@ -2607,7 +2607,7 @@
<attribute id="system_name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="organization_name"/>
</complementary_attributes>
</naming>
<style>
@@ -2740,7 +2740,7 @@
<attribute id="system_name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="organization_name"/>
</complementary_attributes>
</naming>
<style>
@@ -2872,8 +2872,8 @@
<attribute id="name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="middleware_name"></attribute>
<attribute id="organization_name"/>
<attribute id="middleware_name"/>
</complementary_attributes>
</naming>
<style>
@@ -3011,8 +3011,8 @@
<attribute id="name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="dbserver_name"></attribute>
<attribute id="organization_name"/>
<attribute id="dbserver_name"/>
</complementary_attributes>
</naming>
<style>
@@ -3148,8 +3148,8 @@
<attribute id="name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="webserver_name"></attribute>
<attribute id="organization_name"/>
<attribute id="webserver_name"/>
</complementary_attributes>
</naming>
<style>
@@ -3304,8 +3304,8 @@
<attribute id="version"/>
</attributes>
<complementary_attributes>
<attribute id="vendor"></attribute>
<attribute id="type"></attribute>
<attribute id="vendor"/>
<attribute id="type"/>
</complementary_attributes>
</naming>
<style>
@@ -3782,7 +3782,7 @@
<attribute id="name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="organization_name"/>
</complementary_attributes>
</naming>
<style>
@@ -4260,7 +4260,6 @@
<rank>70</rank>
</item>
</items>
</summary>
</presentation>
</class>
@@ -4372,7 +4371,7 @@
<attribute id="name"/>
</attributes>
<complementary_attributes>
<attribute id="osfamily_name"></attribute>
<attribute id="osfamily_name"/>
</complementary_attributes>
</naming>
<style>
@@ -4561,8 +4560,8 @@
<attribute id="name"/>
</attributes>
<complementary_attributes>
<attribute id="brand_name"></attribute>
<attribute id="type"></attribute>
<attribute id="brand_name"/>
<attribute id="type"/>
</complementary_attributes>
</naming>
<style>
@@ -5425,8 +5424,8 @@
<attribute id="ip_mask"/>
</attributes>
<complementary_attributes>
<attribute id="org_name"></attribute>
<attribute id="subnet_name"></attribute>
<attribute id="org_name"/>
<attribute id="subnet_name"/>
</complementary_attributes>
</naming>
<style>
@@ -5649,7 +5648,7 @@
<attribute id="vlan_tag"/>
</attributes>
<complementary_attributes>
<attribute id="org_name"></attribute>
<attribute id="org_name"/>
</complementary_attributes>
</naming>
<style>
@@ -5942,7 +5941,7 @@
<attribute id="name"/>
</attributes>
<complementary_attributes>
<attribute id="ipaddress"></attribute>
<attribute id="ipaddress"/>
</complementary_attributes>
</naming>
<style>
@@ -6354,17 +6353,7 @@
<attribute id="connectableci_id"/>
</attributes>
</reconciliation>
<uniqueness_rules>
<rule id="no_duplicate">
<attributes>
<attribute id="networkdevice_id"/>
<attribute id="connectableci_id"/>
</attributes>
<filter><![CDATA[]]></filter>
<disabled>false</disabled>
<is_blocking>true</is_blocking>
</rule>
</uniqueness_rules>
<uniqueness_rules/>
</properties>
<fields>
<field id="networkdevice_id" xsi:type="AttributeExternalKey">
@@ -6841,8 +6830,8 @@
<attribute id="name"/>
</attributes>
<complementary_attributes>
<attribute id="owner_name"></attribute>
<attribute id="type"></attribute>
<attribute id="owner_name"/>
<attribute id="type"/>
</complementary_attributes>
</naming>
<fields_semantic>

View File

@@ -3,7 +3,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-config-mgmt/3.1.0',
'itop-config-mgmt/3.2.0',
array(
// Identification
//

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
<menus>
<menu id="ConfigEditor" xsi:type="WebPageMenuNode" _delta="define">
<rank>10</rank>

View File

@@ -3,7 +3,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-config/3.1.0',
'itop-config/3.2.0',
array(
// Identification
//

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
<menus>
<menu id="iTopUpdate" xsi:type="WebPageMenuNode" _delta="define">
<rank>60</rank>

View File

@@ -68,47 +68,47 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array(
'iTopUpdate:UI:CanCoreUpdate:Failed' => 'Fájlrendszer ellenőrzése sikertelen',
'iTopUpdate:UI:CanCoreUpdate:Yes' => 'Az alkalmazás frissíthető',
'iTopUpdate:UI:CanCoreUpdate:No' => 'Az alkalmazás nem frissíthető: %1$s',
'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Figyelem: alkalmazás frissítés sikertelen lehet: %1$s',
'iTopUpdate:UI:CannotUpdateUseSetup' => '<b>SNéhány módosított fájlt észleltünk</b>, a részleges frissítés nem hajtható végre.</br>Kövesse a <a target="_blank" href="%2$s"> eljárást</a> az iTop manuális frissítéséhez. Az alkalmazás frissítéséhez a <a href="%1$s">setup</a> parancsot kell használnia.',
'iTopUpdate:UI:CheckInProgress' => 'Kérjük, várjon az integritás ellenőrzés alatt',
'iTopUpdate:UI:SetupLaunch' => 'Launch '.ITOP_APPLICATION_SHORT.' Setup~~',
'iTopUpdate:UI:SetupLaunchConfirm' => 'This will launch '.ITOP_APPLICATION_SHORT.' setup, are you sure?~~',
'iTopUpdate:UI:CanCoreUpdate:Warning' => 'Figyelem: alkalmazás frissítés sikertelen lehet: %1$s',
'iTopUpdate:UI:CannotUpdateUseSetup' => '<b>SNéhány módosított fájlt észleltünk</b>, a részleges frissítés nem hajtható végre.</br>Kövesse a <a target="_blank" href="%2$s"> eljárást</a> az iTop manuális frissítéséhez. Az alkalmazás frissítéséhez a <a href="%1$s">setup</a> parancsot kell használnia.',
'iTopUpdate:UI:CheckInProgress' => 'Kérjük, várjon az integritás ellenőrzés alatt',
'iTopUpdate:UI:SetupLaunch' => 'Launch '.ITOP_APPLICATION_SHORT.' Setup~~',
'iTopUpdate:UI:SetupLaunchConfirm' => 'This will launch '.ITOP_APPLICATION_SHORT.' setup, are you sure?~~',
// Setup Messages
'iTopUpdate:UI:SetupMessage:Ready' => 'Készen állunk',
'iTopUpdate:UI:SetupMessage:EnterMaintenance' => 'Karbantartási módba lépés',
'iTopUpdate:UI:SetupMessage:Backup' => 'Adatbázis biztonsági mentése',
'iTopUpdate:UI:SetupMessage:FilesArchive' => 'Alkalmazás fájlok archiválása',
'iTopUpdate:UI:SetupMessage:CopyFiles' => 'Új fájlverziók másolása',
'iTopUpdate:UI:SetupMessage:CheckCompile' => 'Alkalmazásfrissítés ellenőrzése',
'iTopUpdate:UI:SetupMessage:Compile' => 'Az alkalmazás és az adatbázis frissítése',
'iTopUpdate:UI:SetupMessage:UpdateDatabase' => 'Adatbázis frissítés',
'iTopUpdate:UI:SetupMessage:ExitMaintenance' => 'Kilépés a karbantartási módból',
'iTopUpdate:UI:SetupMessage:UpdateDone' => 'A frissítés befejeződött',
'iTopUpdate:UI:SetupMessage:Ready' => 'Készen állunk',
'iTopUpdate:UI:SetupMessage:EnterMaintenance' => 'Karbantartási módba lépés',
'iTopUpdate:UI:SetupMessage:Backup' => 'Adatbázis biztonsági mentése',
'iTopUpdate:UI:SetupMessage:FilesArchive' => 'Alkalmazás fájlok archiválása',
'iTopUpdate:UI:SetupMessage:CopyFiles' => 'Új fájlverziók másolása',
'iTopUpdate:UI:SetupMessage:CheckCompile' => 'Alkalmazásfrissítés ellenőrzése',
'iTopUpdate:UI:SetupMessage:Compile' => 'Az alkalmazás és az adatbázis frissítése',
'iTopUpdate:UI:SetupMessage:UpdateDatabase' => 'Adatbázis frissítés',
'iTopUpdate:UI:SetupMessage:ExitMaintenance' => 'Kilépés a karbantartási módból',
'iTopUpdate:UI:SetupMessage:UpdateDone' => 'A frissítés befejeződött',
// Errors
'iTopUpdate:Error:MissingFunction' => 'Lehetetlen elindítani a frissítést, hiányzó funkció',
'iTopUpdate:Error:MissingFile' => 'Hiányzó fájl: %1$s',
'iTopUpdate:Error:CorruptedFile' => 'A %1$s fájl sérült',
'iTopUpdate:Error:BadFileFormat' => 'A frissítési fájl nem zip fájl',
'iTopUpdate:Error:BadFileContent' => 'A frissítési fájl nem alkalmazás archívum',
'iTopUpdate:Error:BadItopProduct' => 'A frissítési fájl nem kompatibilis az alkalmazással',
'iTopUpdate:Error:Copy' => 'Hiba: \'%1$s\' nem másolható \'%2$s\' -ba',
'iTopUpdate:Error:FileNotFound' => 'Nincs meg a fájl',
'iTopUpdate:Error:NoFile' => 'Nincs fájl megadva',
'iTopUpdate:Error:InvalidToken' => 'Érvénytelen token',
'iTopUpdate:Error:UpdateFailed' => 'Frissítés sikertelen',
'iTopUpdate:Error:FileUploadMaxSizeTooSmall' => 'A feltöltés maximális mérete túl kicsinek tűnik a frissítéshez. Kérjük, módosítsa a PHP konfigurációt.',
'iTopUpdate:UI:RestoreArchive' => 'Visszaállíthatja az alkalmazást a \'%1$s\' archívumból',
'iTopUpdate:UI:RestoreBackup' => 'Visszaállíthatja az adatbázist a \'%1$s\' archívumból',
'iTopUpdate:UI:UpdateDone' => 'Frissítés sikeres',
'Menu:iTopUpdate' => 'Alkalmazás frissítés',
'Menu:iTopUpdate+' => 'Alkalmazás frissítés',
'iTopUpdate:Error:MissingFunction' => 'Lehetetlen elindítani a frissítést, hiányzó funkció',
'iTopUpdate:Error:MissingFile' => 'Hiányzó fájl: %1$s',
'iTopUpdate:Error:CorruptedFile' => 'A %1$s fájl sérült',
'iTopUpdate:Error:BadFileFormat' => 'A frissítési fájl nem zip fájl',
'iTopUpdate:Error:BadFileContent' => 'A frissítési fájl nem alkalmazás archívum',
'iTopUpdate:Error:BadItopProduct' => 'A frissítési fájl nem kompatibilis az alkalmazással',
'iTopUpdate:Error:Copy' => 'Hiba: \'%1$s\' nem másolható \'%2$s\' -ba',
'iTopUpdate:Error:FileNotFound' => 'Nincs meg a fájl',
'iTopUpdate:Error:NoFile' => 'Nincs fájl megadva',
'iTopUpdate:Error:InvalidToken' => 'Érvénytelen token',
'iTopUpdate:Error:UpdateFailed' => 'Frissítés sikertelen',
'iTopUpdate:Error:FileUploadMaxSizeTooSmall' => 'A feltöltés maximális mérete túl kicsinek tűnik a frissítéshez. Kérjük, módosítsa a PHP konfigurációt.',
'iTopUpdate:UI:RestoreArchive' => 'Visszaállíthatja az alkalmazást a \'%1$s\' archívumból',
'iTopUpdate:UI:RestoreBackup' => 'Visszaállíthatja az adatbázist a \'%1$s\' archívumból',
'iTopUpdate:UI:UpdateDone' => 'Frissítés sikeres',
'Menu:iTopUpdate' => 'Alkalmazás frissítés',
'Menu:iTopUpdate+' => 'Alkalmazás frissítés',
// Missing itop entries
// Missing itop entries
'Class:ModuleInstallation/Attribute:installed' => 'Telepítve ',
'Class:ModuleInstallation/Attribute:name' => 'Név',
'Class:ModuleInstallation/Attribute:version' => 'Verzió',
'Class:ModuleInstallation/Attribute:name' => 'Név',
'Class:ModuleInstallation/Attribute:version' => 'Verzió',
'Class:ModuleInstallation/Attribute:comment' => 'Megjegyzés',
));

View File

@@ -24,7 +24,7 @@
/** @noinspection PhpUnhandledExceptionInspection */
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-core-update/3.1.0',
'itop-core-update/3.2.0',
[
// Identification
//

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
<classes>
<class id="Rack" _delta="define">
<parent>PhysicalDevice</parent>
@@ -15,7 +15,7 @@
<attribute id="name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="organization_name"/>
<attribute id="location_name"/>
</complementary_attributes>
</naming>
@@ -213,7 +213,7 @@
<attribute id="name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="organization_name"/>
<attribute id="location_name"/>
<attribute id="rack_name"/>
</complementary_attributes>
@@ -419,7 +419,7 @@
<attribute id="name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="organization_name"/>
<attribute id="location_name"/>
</complementary_attributes>
</naming>
@@ -585,7 +585,7 @@
<attribute id="name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="organization_name"/>
<attribute id="location_name"/>
</complementary_attributes>
</naming>
@@ -754,7 +754,7 @@
<attribute id="name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="organization_name"/>
<attribute id="location_name"/>
<attribute id="rack_name"/>
<attribute id="powerstart_name"/>

View File

@@ -18,7 +18,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-datacenter-mgmt/3.1.0',
'itop-datacenter-mgmt/3.2.0',
array(
// Identification
//

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
<classes>
<class id="TelephonyCI" _delta="define">
<parent>PhysicalDevice</parent>
@@ -15,7 +15,7 @@
<attribute id="name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="organization_name"/>
<attribute id="phonenumber"/>
</complementary_attributes>
</naming>
@@ -173,7 +173,7 @@
<attribute id="name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="organization_name"/>
<attribute id="phonenumber"/>
</complementary_attributes>
</naming>
@@ -343,7 +343,7 @@
<attribute id="name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="organization_name"/>
<attribute id="phonenumber"/>
</complementary_attributes>
</naming>
@@ -533,7 +533,7 @@
<attribute id="name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="organization_name"/>
<attribute id="phonenumber"/>
</complementary_attributes>
</naming>
@@ -703,7 +703,7 @@
<attribute id="name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="organization_name"/>
</complementary_attributes>
</naming>
<style>
@@ -869,8 +869,8 @@
<attribute id="name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="location_name"></attribute>
<attribute id="organization_name"/>
<attribute id="location_name"/>
</complementary_attributes>
</naming>
<style>
@@ -1139,8 +1139,8 @@
<attribute id="name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="location_name"></attribute>
<attribute id="organization_name"/>
<attribute id="location_name"/>
</complementary_attributes>
</naming>
<style>
@@ -1339,8 +1339,8 @@
<attribute id="name"/>
</attributes>
<complementary_attributes>
<attribute id="organization_name"></attribute>
<attribute id="location_name"></attribute>
<attribute id="organization_name"/>
<attribute id="location_name"/>
</complementary_attributes>
</naming>
<style>

View File

@@ -25,7 +25,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-endusers-devices/3.1.0',
'itop-endusers-devices/3.2.0',
array(
// Identification
//

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
<classes>
<class id="FAQ" _delta="define">
<parent>cmdbAbstractObject</parent>

View File

@@ -3,7 +3,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-faq-light/3.1.0',
'itop-faq-light/3.2.0',
array(
// Identification
//

View File

@@ -1,3 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
</itop_design>

View File

@@ -24,7 +24,7 @@
/** @noinspection PhpUnhandledExceptionInspection */
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-files-information/3.1.0',
'itop-files-information/3.2.0',
array(
// Identification
//

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
<classes>
<class id="Ticket">
<methods>

View File

@@ -6,7 +6,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-full-itil/3.1.0',
'itop-full-itil/3.2.0',
array(
// Identification
//

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
<constants>
</constants>
<classes>

View File

@@ -5,7 +5,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-hub-connector/3.1.0',
'itop-hub-connector/3.2.0',
array(
// Identification
//

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
<classes>
<class id="Incident" _delta="define">
<parent>Ticket</parent>
@@ -21,7 +21,7 @@
<attribute id="ref"/>
</attributes>
<complementary_attributes>
<attribute id="title"></attribute>
<attribute id="title"/>
</complementary_attributes>
</naming>
<fields_semantic>

View File

@@ -3,7 +3,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-incident-mgmt-itil/3.1.0',
'itop-incident-mgmt-itil/3.2.0',
array(
// Identification
//

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
<classes>
<class id="KnownError" _delta="define">
<parent>cmdbAbstractObject</parent>

View File

@@ -3,7 +3,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-knownerror-mgmt/3.1.0',
'itop-knownerror-mgmt/3.2.0',
array(
// Identification
//

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.2">
<constants/>
<classes>
<class id="OAuthClient" _delta="define">

View File

@@ -5,7 +5,7 @@
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-oauth-client/3.1.0',
'itop-oauth-client/3.2.0',
array(
// Identification
//

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<itop_design version="3.1">
<itop_design version="3.2">
<events>
<event id="EVENT_DISPLAY_OBJECT_DETAILS" _delta="define">
<description>An object details is about to be displayed to a user</description>

View File

@@ -23,9 +23,9 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array(
'Page:Home' => 'Domů',
'Page:GoPortalHome' => 'Domů',
'Page:GoPreviousPage' => 'Předchozí stránka',
'Page:ReloadPage' => 'Reload page~~',
'Page:ReloadPage' => 'Reload stránky',
'Portal:Button:Submit' => 'Odeslat',
'Portal:Button:Apply' => 'Update~~',
'Portal:Button:Apply' => 'Aktualizovat',
'Portal:Button:Cancel' => 'Zrušit',
'Portal:Button:Close' => 'Zavřít',
'Portal:Button:Add' => 'Přidat',
@@ -87,7 +87,7 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array(
// AggregatePageBrick
Dict::Add('CS CZ', 'Czech', 'Čeština', array(
'Brick:Portal:AggregatePage:DefaultTitle' => 'Dashboard~~',
'Brick:Portal:AggregatePage:DefaultTitle' => 'Dashboard',
));
// BrowseBrick brick
@@ -95,7 +95,7 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array(
'Brick:Portal:Browse:Name' => 'Procházet položky',
'Brick:Portal:Browse:Mode:List' => 'Seznam',
'Brick:Portal:Browse:Mode:Tree' => 'Strom',
'Brick:Portal:Browse:Mode:Mosaic' => 'Mosaic~~',
'Brick:Portal:Browse:Mode:Mosaic' => 'Mozaika',
'Brick:Portal:Browse:Action:Drilldown' => 'Rozpad',
'Brick:Portal:Browse:Action:View' => 'Podrobnosti',
'Brick:Portal:Browse:Action:Edit' => 'Upravit',
@@ -112,16 +112,16 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array(
'Brick:Portal:Manage:Table:NoData' => 'Žádná položka',
'Brick:Portal:Manage:Table:ItemActions' => 'Actions~~',
'Brick:Portal:Manage:DisplayMode:list' => 'List~~',
'Brick:Portal:Manage:DisplayMode:pie-chart' => 'Pie Chart~~',
'Brick:Portal:Manage:DisplayMode:bar-chart' => 'Bar Chart',
'Brick:Portal:Manage:Others' => 'Others~~',
'Brick:Portal:Manage:All' => 'All~~',
'Brick:Portal:Manage:Group' => 'Group~~',
'Brick:Portal:Manage:fct:count' => 'Total~~',
'Brick:Portal:Manage:fct:sum' => 'Sum~~',
'Brick:Portal:Manage:fct:avg' => 'Average~~',
'Brick:Portal:Manage:fct:min' => 'Min~~',
'Brick:Portal:Manage:fct:max' => 'Max~~',
'Brick:Portal:Manage:DisplayMode:pie-chart' => 'Koláčový graf',
'Brick:Portal:Manage:DisplayMode:bar-chart' => 'Sloupcový graf',
'Brick:Portal:Manage:Others' => 'Ostatní',
'Brick:Portal:Manage:All' => 'Vše',
'Brick:Portal:Manage:Group' => 'Skupina',
'Brick:Portal:Manage:fct:count' => 'Celkem',
'Brick:Portal:Manage:fct:sum' => 'Suma',
'Brick:Portal:Manage:fct:avg' => 'Průměr',
'Brick:Portal:Manage:fct:min' => 'Min',
'Brick:Portal:Manage:fct:max' => 'Max',
));
// ObjectBrick brick
@@ -132,23 +132,23 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array(
'Brick:Portal:Object:Form:View:Title' => '%1$s : %2$s',
'Brick:Portal:Object:Form:Stimulus:Title' => 'Vyplňte prosím následující informace:',
'Brick:Portal:Object:Form:Message:Saved' => 'Uloženo',
'Brick:Portal:Object:Form:Message:ObjectSaved' => '%1$s uloženo~~',
'Brick:Portal:Object:Form:Message:ObjectSaved' => '%1$s uloženo',
'Brick:Portal:Object:Search:Regular:Title' => 'Vybrat %1$s (%2$s)',
'Brick:Portal:Object:Search:Hierarchy:Title' => 'Vybrat %1$s (%2$s)',
'Brick:Portal:Object:Copy:TextToCopy' => '%1$s: %2$s~~',
'Brick:Portal:Object:Copy:Tooltip' => 'Copy object link~~',
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Copied~~'
'Brick:Portal:Object:Copy:TextToCopy' => '%1$s: %2$s',
'Brick:Portal:Object:Copy:Tooltip' => 'Zkopíruj odkaz na objekt',
'Brick:Portal:Object:Copy:CopiedTooltip' => 'Zkopírováno'
));
// CreateBrick brick
Dict::Add('CS CZ', 'Czech', 'Čeština', array(
'Brick:Portal:Create:Name' => 'Rychlé vytvoření',
'Brick:Portal:Create:ChooseType' => 'Please, choose a type~~',
'Brick:Portal:Create:ChooseType' => 'Vyberte typ',
));
// Filter brick
Dict::Add('CS CZ', 'Czech', 'Čeština', array(
'Brick:Portal:Filter:Name' => 'Prefilter a brick~~',
'Brick:Portal:Filter:SearchInput:Placeholder' => 'eg. connect wifi~~',
'Brick:Portal:Filter:SearchInput:Submit' => 'Search~~',
'Brick:Portal:Filter:SearchInput:Submit' => 'Vyhledat',
));

View File

@@ -20,7 +20,7 @@
/** @noinspection PhpUnhandledExceptionInspection */
SetupWebPage::AddModule(
__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
'itop-portal-base/3.1.0', array(
'itop-portal-base/3.2.0', array(
// Identification
'label' => 'Portal Development Library',
'category' => 'Portal',

File diff suppressed because one or more lines are too long

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