Compare commits

...

4881 Commits

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

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

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

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

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

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

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

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

---------

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

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

(cherry picked from commit 4c9ea0c9d4)

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

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

* Update js/dataTables.settings.js

---------

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

* Update core/contexttag.class.inc.php

---------

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

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

Some corrections

* Revert formatting changes

---------

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

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

---------

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

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

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

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

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

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

Grammatical corrections

* Restore not translated entries

---------

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

* Dump autoloader

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

---------

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

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

* Apply suggestions from code review

JS cleanup after review

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

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

* Typo!

* Update code to match conventions

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

---------

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

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

* N°3795 - Add constants for severity

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

* N°3795 - Add constants for severity

* N°3795 - Simplify API consumption

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

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

The previous values set for console and portal are removed.

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

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

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

* Update core/config.class.inc.php

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

* Update core/log.class.inc.php

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

* Update core/log.class.inc.php

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

* Update core/log.class.inc.php

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

* Update core/log.class.inc.php

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

* Namespace the log purge config parameters

---------

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

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

* Properly reset the target class when closing the dialog

* Make icon buttons as actual clickable links for BeHat

* Apply suggestions from code review

Review by Guillaume. Thanks!

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

* Log TriggerOnObjectUpdate crash

* Log TriggerOnObjectDelete crash

* Factorize TriggerOnObject log

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

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

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

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2023-02-23 10:59:38 +01:00
Molkobain
577f125a8d PHP 8.1: Fix trim() usage with a null value in Trigger 2023-02-23 10:40:29 +01:00
Molkobain
04269747b7 N°5920 - Increase delay before displaying tooltip 2023-02-23 10:17:30 +01:00
Molkobain
826fbe10c8 N°6002 - Explicitly add symfony/http-foundation and symfony/http-kernel to composer.json for easier lib update 2023-02-22 22:38:15 +01:00
Molkobain
ea2140258c N°5317 - Handle overlapping tables when table cells have fixed widths 2023-02-22 18:57:56 +01:00
Molkobain
d997e36de0 N°6002 - Update Symfony libs to 5.4.19 2023-02-22 18:19:56 +01:00
Molkobain
5ee603f2ba Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	datamodels/2.x/itop-portal-base/portal/src/Form/ObjectFormManager.php
2023-02-22 18:08:56 +01:00
Stephen Abello
31f2666941 Merge branch 'support/2.7' into support/3.0
# Conflicts:
#	js/wizardhelper.js
2023-02-22 15:46:13 +01:00
Stephen Abello
cac7e94a67 N°5729 - Fix disabled button in bulk update/transition when picking a value in a drop-down list 2023-02-22 15:42:20 +01:00
Pierre Goiffon
7925a5bd7e N°6013 Remove combodo-webhook-integration file
Will be pushed in the corresponding module repo
2023-02-22 15:28:26 +01:00
Molkobain
cd72eee6dd N°6013 - Update hungarian translations thanks to @tacsaby 2023-02-22 14:47:10 +01:00
Stephen Abello
da02a05fa3 Merge branch 'support/2.7' into support/3.0 2023-02-22 10:18:38 +01:00
Stephen Abello
6d019615d0 N°5865 - Restore DoCheckToWrite error messages in portal 2023-02-22 10:17:34 +01:00
BenGrenoble
d3a5bb723f N°5968 - Add structural data for Brand, OSFamily and OSVersion 2023-02-22 10:15:51 +01:00
BenGrenoble
a37dea9cc2 N°4577 - Move service dependencies from "itop-bridge-cmdb-ticket" to another module
Move Document Services_list and Document Contracts_list to the bridge cmdb-services
2023-02-22 09:24:24 +01:00
Molkobain
0c962d7e32 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	datamodels/2.x/itop-bridge-cmdb-ticket/dictionaries/cs.dict.itop-bridge-cmdb-ticket.php
#	datamodels/2.x/itop-bridge-cmdb-ticket/dictionaries/da.dict.itop-bridge-cmdb-ticket.php
#	datamodels/2.x/itop-bridge-cmdb-ticket/dictionaries/de.dict.itop-bridge-cmdb-ticket.php
#	datamodels/2.x/itop-bridge-cmdb-ticket/dictionaries/fr.dict.itop-bridge-cmdb-ticket.php
#	datamodels/2.x/itop-bridge-cmdb-ticket/dictionaries/ja.dict.itop-bridge-cmdb-ticket.php
#	datamodels/2.x/itop-bridge-cmdb-ticket/dictionaries/sk.dict.itop-bridge-cmdb-ticket.php
#	datamodels/2.x/itop-config-mgmt/dictionaries/hu.dict.itop-config-mgmt.php
#	datamodels/2.x/itop-problem-mgmt/dictionaries/hu.dict.itop-problem-mgmt.php
#	datamodels/2.x/itop-service-mgmt/dictionaries/fr.dict.itop-service-mgmt.php
#	datamodels/2.x/itop-structure/dictionaries/fr.dict.itop-structure.php
#	dictionaries/hu.dictionary.itop.core.php
2023-02-21 22:26:54 +01:00
Molkobain
ccdd315357 N°5919 - Add missing linkset descriptions in french and other languages 2023-02-21 22:14:57 +01:00
Eric Espie
a9f08e87f9 N°5906 - CRUD Event - move some code 2023-02-21 11:06:10 +01:00
Molkobain
2d80d1c1df N°5741 - Fix wrong merge from 649674c7 2023-02-21 10:34:24 +01:00
Eric Espie
43d17f9519 Fix unit tests for PHP8.1 2023-02-20 11:57:39 +01:00
Molkobain
6c4289a491 Tests: Rename file to match conventions 2023-02-17 15:33:09 +01:00
Eric Espie
8940051c3d N°5906 - CRUD Event - fire event EVENT_DB_LINKS_CHANGED when an n-n link is created/updated/deleted 2023-02-17 14:25:01 +01:00
Eric Espie
72dad5dd07 N°5891 - Make CSV import unit tests work 2023-02-16 16:14:37 +01:00
Molkobain
dc38db1c3d PHP 8.1: Reduce time interval to something more pragmatic for quicker test execution 2023-02-16 11:40:59 +01:00
Molkobain
45df1002ec N°5388 - PHP 8.2: Fix dynamic properties to standard declared properties 2023-02-15 23:02:40 +01:00
Molkobain
737388053f PHP 8.1: Fix FunctionExpression::Evaluate() "TO_DAYS" misalignment due to PHP 8.1 bug fix 2023-02-15 21:31:11 +01:00
dariocodes
d0b000d125 Update README.md to improve grammar
- Using hyphens to combine "web-based" ensures that the reader understands that it is a compound modifier.
- Adding a comma after "platform" helps to separate the list of items that follows and improve readability.
- Using commas to separate the list of items in the series (CMDB, helpdesk system, and document management tool) helps to clarify that each item is a distinct element.
- Fixed a typo where "adds-on" was written instead of "add-ons".
- Uses the wrong form of the verb "be." In this context, the correct form of the verb to use is "become," not "being." 
- Adding a comma after led is grammatically better as is referenced here: https://github.com/Combodo/combodo-workflow-graphical-view/pull/1
2023-02-15 18:02:54 +01:00
Eric Espie
1d0ce1862d N°4756 - Ease extensibility for CRUD operations : Event Service - Fix unit tests 2023-02-14 15:53:12 +01:00
Eric Espie
c0589715c1 N°4756 - Ease extensibility for CRUD operations : Event Service - Fix RegisterListener() signature and calls 2023-02-14 11:26:47 +01:00
Eric Espie
8b18fd7cc0 Merge remote-tracking branch 'origin/support/3.0' into develop 2023-02-14 09:35:59 +01:00
Eric Espie
9f81e4875a Merge branch 'hotfix/5944_GetClassesForInterface_filter' into support/3.0 2023-02-14 09:16:49 +01:00
Molkobain
33717b9610 N°5951 - Fix crash when creating a user with a non valid password
/!\ Mind that this could have impact on DoCheckToWrite() overloads for people using \DBObject::GetKey() instead of \DBObject::IsNew()
2023-02-13 20:22:39 +01:00
Molkobain
b97a464bb1 N°2783 - Initialize property correctly (highlighted by 58c0da7e) 2023-02-13 19:36:46 +01:00
Pierre Goiffon
58c0da7e87 N°2783 Fix setup crashing because of a php warning (#389) 2023-02-13 17:09:24 +01:00
Molkobain
4203382920 N°2783 - Add support for custom zlists (#389) 2023-02-13 16:13:51 +01:00
Molkobain
825e402dd6 N°5279 - Improve DBBackup::MakeName() unit test by evaluating placeholders 2023-02-13 15:57:29 +01:00
Molkobain
fa75c8964a Tests: Improve REST API tests robustness when output JSON is not always ordered the same (even though the content is semantically the same) 2023-02-13 10:27:28 +01:00
Pierre Goiffon
fc58c6f4ce N°4577 setup params : add itop-bridge-cmdb-services 2023-02-13 09:23:19 +01:00
Molkobain
ef4e38f6b9 Merge remote-tracking branch 'origin/support/3.0' into develop 2023-02-11 09:55:15 +01:00
Molkobain
4f102d764a Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-02-10 23:18:37 +01:00
Molkobain
dbd58cfeb6 Tests: Force RestAPI unit tests not to verify SSL certificate as most dev / test envs are self-signed 2023-02-10 23:07:27 +01:00
Molkobain
1086eaaffe N°3190 - Fix XML conversion unit test 2023-02-10 22:37:24 +01:00
Molkobain
f7ee21f1d7 N°5279 - PHP 8.1: Migrate usages of deprecated strftime() function
In the end we made an adapter to keep using the strftime() format (https://www.php.net/manual/fr/function.strftime.php); not to ease migration but because we couldn't use \DateTime::format().
We can't use \DateTime::format() directly on the whole filename as it would also format characters that are not supposed to be. eg. "__DB__-Y-m-d-production" would become "itopdb-2023-02-09-+01:00Thu, 09 Feb 2023 11:34:01 +0100202309", mind the "production" part being converted.
2023-02-10 22:15:18 +01:00
Pierre Goiffon
35b0b16e20 N°4756 Add listenerId to register call for debug purposes 2023-02-10 17:31:48 +01:00
Pierre Goiffon
ca72ec736e N°4756 DBObject Rename Event* methods to FireEvent* 2023-02-10 15:22:33 +01:00
Pierre Goiffon
e63d66aa5d N°4756 Fix TypeError on EventData::$aCallbackData 2023-02-10 15:01:56 +01:00
bdalsass
2803f0be49 N°3190 - Add iTop design format compatibility converter
- Add converter for  for display_style property
- Update php unit test to control conversion
2023-02-10 13:47:10 +01:00
BenGrenoble
278b0d643f N°5968 - Add structural data for Brand, OSFamily and OSVersion
Refactor file model.itop-bridge-cmdb-services.php
2023-02-10 11:21:19 +01:00
vdumas
569045f675 N°5946 - Error in a french translation - user preference 2023-02-09 17:30:17 +01:00
vdumas
25989bc00f N°5947 - Typos in french translation for incident 2023-02-09 17:25:25 +01:00
vdumas
fc60759db5 N°5920 - Align icon, title and tooltip for extra tabs in standard DM 2023-02-09 17:13:07 +01:00
BenGrenoble
3a931ff79e N°5968 - Add structural data for Brand, OSFamily and OSVersion
Change path and correct osversion id
2023-02-09 11:32:57 +01:00
BenGrenoble
f6bd380ad0 N°5968 - Add structural data for Brand, OSFamily and OSVersion
Remove sample brand
2023-02-09 11:10:00 +01:00
BenGrenoble
97c4ecf8bc N°5968 - Add structural data for Brand, OSFamily and OSVersion
Correct brand id
2023-02-09 10:50:59 +01:00
BenGrenoble
5f4ef74d34 N°5968 - Add structural data for Brand, OSFamily and OSVersion
Move data to config-mgmt
2023-02-09 10:45:10 +01:00
BenGrenoble
6184dbafff N°4577 - Move service dependencies from "itop-bridge-cmdb-ticket" to another module 2023-02-09 10:32:39 +01:00
BenGrenoble
630c1dcdc8 N°5968 - Add structural data for Brand, Model, OSFamily and OSVersion 2023-02-09 09:59:06 +01:00
vdumas
cb84cbf7a8 N°5106 - Add Associated User tab on Person 2023-02-09 09:40:19 +01:00
vdumas
b025f86b21 N°5106 - Add Associated User tab on Person 2023-02-09 09:06:48 +01:00
vdumas
5a76175ec1 N°5908 - add a description on "known error" tab on UserRequest and Incident 2023-02-09 09:03:18 +01:00
vdumas
ce162f05da N°5908 - add a description on "known error" tab on UserRequest and Incident 2023-02-08 19:00:57 +01:00
Molkobain
d358c9e8fa N°5920 - Tab manager: Fallback on dict entry code convention (tab code followed by "+" sign) for tab's description / tooltip if none given 2023-02-08 18:23:20 +01:00
bdalsass
86a208a86d N°5904 - Use attribute linked set edit mode to enable actions in view (improvement) 2023-02-08 14:34:46 +01:00
vdumas
372888c7a7 N°5106 - Add Associated User tab on Person 2023-02-08 13:01:41 +01:00
Molkobain
547a520ab1 N°5951 - Temporary fix to unblock 3.1.0-alpha1, we need to discuss the DBObject::DBInsertNoReload() sequence before going further 2023-02-07 19:41:03 +01:00
Molkobain
8bf788dcb9 N°5904 - PHP 8.1: Migrate usage of deprecated FILTER_SANITIZE_STRING constant 2023-02-07 14:57:24 +01:00
Molkobain
a157e754a9 N°5074 - Clean up of dynamically created class properties due to bdb29fd99 2023-02-07 14:51:42 +01:00
Molkobain
eae84ab399 N°5074 - Clean up of dynamically created class properties due to bdb29fd99 2023-02-07 14:51:00 +01:00
Molkobain
4d4d3bd9a2 N°5904 - Fix crash when adding a 1:n link item in object edition 2023-02-07 14:35:49 +01:00
Benjamin Dalsass
9f9630d011 N°5904 - remove link as tagset add button 2023-02-07 09:42:41 +01:00
Benjamin Dalsass
de1c58a84c N°5904 - Use attribute linked set edit mode to enable actions in view 2023-02-06 17:22:30 +01:00
bdalsass
1fe9520b7e N°5904 - Use attribute linked set edit mode to enable actions (#440)
* Add corresponding buttons depending on old edit mode (need to check with piR pour récuperer l'ancienne valeur.

* N°5904 - Handle attribute linked set edit_mode

* N°5904 Move calls to private jquery widget methods to public

* N°5904 - Worker improvements add button on link tagset

* Change itop set widget to new set block UI (5)

* Change itop set widget to new set block UI (5)

* Renommage variables JS avec le prefix combodo

* Search dialog block id conflict with form id

* add moved js files in iTopWebPage compatibility list

---------

Co-authored-by: Stephen Abello <stephen.abello@combodo.com>
2023-02-06 16:07:55 +01:00
Stephen Abello
3fbc5e1ce0 N°5904 Hide decorative plus icon on attribute set edit 2023-02-06 14:24:44 +01:00
Molkobain
786e7d647c N°5388 - PHP 8.2: Fix partially supported callable 2023-02-03 23:01:24 +01:00
Eric Espie
99b7d66cf2 N°5944 - Wrong filter for utils::GetClassesForInterface() 2023-02-03 11:10:37 +01:00
Molkobain
1768274aaf N°5943 - Fix undefined array key "Remote" in AjaxRenderController.php with DokuWiki extension 2023-02-03 09:38:28 +01:00
Stephen Abello
7cc1e33950 N°5904 Fix attribute set / linkset wrapping 2023-02-02 10:05:55 +01:00
Molkobain
72a586e490 N°5905 - Fix linkset panel description still in an alert when editing host object 2023-02-01 18:09:46 +01:00
Stephen Abello
0cce58e0cf N°5904 Fix hardcoded string when existing dict entry was available 2023-02-01 09:40:38 +01:00
Stephen Abello
53b68f88b8 Fix typo in dictionaries 2023-02-01 09:39:33 +01:00
Stephen Abello
7fb10da013 N°5904 Fix hardcoded strings when existing dict entries were available 2023-02-01 09:33:58 +01:00
Stephen Abello
0b1352fe37 N°5904 Move dict entries 2023-01-31 09:57:06 +01:00
acognet
e0cc00e772 N°5849 - Fix wrong encoding of external keys in "Header with statstics" dashlet - fix for 3.1 2023-01-30 17:29:51 +01:00
Molkobain
002e52cc3e N°5929 - Fix parse error due to not closed array from bbea9782 2023-01-30 17:21:41 +01:00
Thomas Casteleyn
bbea978259 N°5929 - Update hungarian translations thanks to @tacsaby (#438)
Co-authored-by: tacsaby
Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2023-01-30 17:15:08 +01:00
Molkobain
bddfa4cd7a Merge remote-tracking branch 'origin/support/3.0' into develop 2023-01-30 17:09:36 +01:00
Anne-Catherine
12ef74ec42 N°5849 - Fix wrong encoding of external keys in "Header with statstics" dashlet (#384)
N°5849 - Fix wrong encoding of external keys in "Header with statstics" dashlet #384
2023-01-30 16:06:10 +01:00
Eric Espie
cd1b441025 N°4756 - Ease extensibility for CRUD operations: 🎨 add log 2023-01-30 14:45:58 +01:00
Pierre Goiffon
0f97b93617 N°5856 Fix object lists always ajax loaded
Regression introduced in N°3200 with 4f7a1ea9
2023-01-30 09:31:10 +01:00
Molkobain
b61c8ea4ca N°5388 - PHP 8.2: Fix dynamic properties to standard declared properties 2023-01-27 19:00:59 +01:00
Molkobain
f48df74933 N°5388 - PHP 8.2: Fix dynamic properties that were actually just case-sensitive typos 2023-01-27 17:57:50 +01:00
Molkobain
6fb00cbbf3 N°5388 - PHP 8.2: Fix dynamic properties to standard declared properties 2023-01-27 17:56:55 +01:00
Molkobain
af2421a2cb N°5905 - Move tab description to a tooltip on the panel's title instead of a big blue alert 2023-01-27 17:25:03 +01:00
Molkobain
0374e303e4 N°5905 - Refactor CSS class .ibo-has-description so it can be used on any element 2023-01-27 17:25:03 +01:00
Molkobain
27bd78d76b Refactor SCSS misc. partial to dedicated partials as it was growing too much 2023-01-27 17:25:03 +01:00
Stephen Abello
bc3b43958c N°5904 When getting an error in a popup (e.g. uniqueness rule), remove submit state, so we can submit the form again 2023-01-27 14:33:49 +01:00
Molkobain
fd4a2f17d2 N°4481 - Fix CSS class name 2023-01-27 13:24:54 +01:00
vdumas
d741656028 N°5904 - Linksets: tooltip & pop-up title 2023-01-27 11:00:08 +01:00
Molkobain
f7e8bd31f5 N°5905 - Fix "+" button displayed twice on linksets with 1 item 2023-01-26 17:49:17 +01:00
Eric Espie
1e37370789 N°4756 - Ease extensibility for CRUD operations : 🎨 refactor after code review with PG 2023-01-26 17:32:08 +01:00
Tarjányi Csaba
5844717980 Update hu.dict.authent-local.php
a small fix
2023-01-26 16:20:11 +01:00
Vincent Dumas
9437968d0e N°5825 - Add friendlyname & uniqueness rule on Links (#416)
* N°5825 - Add label, friendlyname, filter, details view, uniqueness rules on Link classes
* N°5825 - Add label, friendlyname, details view, uniqueness rules on Link classes
2023-01-26 14:26:31 +01:00
Molkobain
e72ed33a40 N°5920 - Add linkset's description as corresponding tab's tooltip in object details 2023-01-26 12:01:56 +01:00
Molkobain
2a825c6ba0 N°5905 - Fix "+" button displayed twice on linksets with no item 2023-01-26 11:03:01 +01:00
vdumas
6b8d9ea08d N°5915 - Complementary Name on Trigger and Action 2023-01-26 09:03:52 +01:00
vdumas
52d57293c9 N°5825 - Add label, friendlyname, details view (on LnkPersonToTeam) 2023-01-25 18:37:38 +01:00
Molkobain
40cebf1eb7 N°5923 - Align panel's header within another panel when it has no icon 2023-01-25 16:50:21 +01:00
Molkobain
f1d6f3e5c2 N°5905 - Harmonize how known errors are displayed in an object 2023-01-25 15:33:44 +01:00
Pierre Goiffon
834c4a2654 N°5563 Restore edit_mode getter
Woops forgot in 13550fd6
2023-01-25 14:57:30 +01:00
Molkobain
ed1a076ebb N°5905 - Harmonize how notifications are displayed in an object 2023-01-25 10:41:18 +01:00
Molkobain
1dcf38f2ea N°5905 - Harmonize how linksets are displayed in edition part I
* Always display a table and its actions to ease link creation
* Display linkset description in an alert block
2023-01-25 10:29:48 +01:00
odain
2f034253e7 N°5891 - Make CSV import unit tests work-use another password for user authentication 2023-01-25 08:56:15 +01:00
Molkobain
a10ac7fdcb N°5905 - Harmonize how linksets are displayed part I
* Always display a table and its actions to ease link creation
* Display linkset description in an alert block
2023-01-24 21:12:49 +01:00
vdumas
3775ccea74 N°5915 - Display n:n in Trigger and Action using tagset widget 2023-01-24 17:23:44 +01:00
bdalsass
f743971c93 N°5914 - Wrong encoding in modules configuration editor (#392) 2023-01-24 16:33:02 +01:00
Stephen Abello
dd213df9c4 N°5822 Fix 7127b192 SCSS rule 2023-01-24 14:33:41 +01:00
Molkobain
96825c646e N°4756 - Move event register to dedicated folder 2023-01-24 14:20:35 +01:00
Stephen Abello
1152b2f401 N°5904 Hide transitions in modals 2023-01-24 11:21:35 +01:00
Stephen Abello
8f7003c694 N°5904 Change dict entry value 2023-01-24 11:21:33 +01:00
bdalsass
fb1ceebaa4 N°3190 - Edit n:n LinkedSetIndirect in object details using a tagset-like widget
- Add generic set block ui component
- Add model link set (direct and indirect) attribute (display style)
- Add model link set direct allowed values
- Create link set viewer block UI (BlockLinksSetDisplayAsProperty)
- Add set block ui factory for linkset
- Add object factory and create new endpoint in object controller (with data binder)
- Add link set model, link set repository and link set data transformer services
2023-01-24 10:03:10 +01:00
Stephen Abello
9482139b5a N°5904 Fix undefined attribute when refreshing Datatables 2023-01-23 16:42:43 +01:00
Stephen Abello
7ea2315323 Fix php warning and missing dict entry for 1-n (3d9a85d follow-up) 2023-01-23 16:36:13 +01:00
Stephen Abello
9487d63b9c N°5904 When detaching/deleting a linked object, refresh datatable or display an error message 2023-01-23 16:16:23 +01:00
Stephen Abello
3d9a85d577 Fix php warning and missing dict entry 2023-01-23 15:36:38 +01:00
Molkobain
b2397fc570 N°4517 - Fix missing use statement from 7ec12f1e1 2023-01-20 15:30:53 +01:00
Molkobain
0d15b01b3f Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	pages/UI.php
2023-01-20 11:59:26 +01:00
vdumas
f7e87c1ea1 N°5347 - Change default value of allow_menu_on_linkset 2023-01-20 11:30:55 +01:00
Molkobain
3ca4122673 N°5834 - Fix activity panel disappearing when creating a Ticket in 'resolved' state 2023-01-20 11:30:05 +01:00
Stephen Abello
f21f6aec30 Missing class import 2023-01-20 10:10:05 +01:00
Pierre Goiffon
c76d351379 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	datamodels/2.x/combodo-db-tools/module.combodo-db-tools.php
2023-01-19 17:54:29 +01:00
Pierre Goiffon
efa20e77d0 N°3769 Add data-input-id HTML attribute to fields in a transition form
Was only present in object edit mode :(
2023-01-19 17:53:14 +01:00
Eric Espie
effc4141c7 N°5900 - DB integrity analysis crashes when too many errors - module version 2023-01-19 09:30:37 +01:00
Eric Espie
b4813de0a5 Merge branch 'support/3.0' into develop
# Conflicts:
#	datamodels/2.x/combodo-db-tools/module.combodo-db-tools.php
2023-01-19 08:52:47 +01:00
Eric Espie
f75a51d59e N°5900 - DB integrity analysis crashes when too many errors - limit the results to 100 to avoid memory errors 2023-01-19 08:51:02 +01:00
Molkobain
8e3bad11ae N°5563 - Fix XML conversion XPaths 2023-01-18 19:35:59 +01:00
Pierre Goiffon
13550fd643 N°5563 Relations XML : restore edit_mode node
There are (yet !) not change in the relations UI when in object is in edit mode, so we need to keep previous behaviors.
2023-01-18 18:11:02 +01:00
Molkobain
44977d69b6 N°5608 - Fix event service unit tests namespace 2023-01-18 17:50:22 +01:00
Molkobain
15f108152c N°5608 - Fix Twig unit test and re-enable all tests under /sources dir that were not run! (Application/Helper, Application/Service, Application/TwigBase, Composer, Router) 2023-01-18 17:41:47 +01:00
Molkobain
9be167cf5e N°5608 - Rename unit tests dirs "sources/application" to match counter-part dirs name 2023-01-18 17:39:55 +01:00
Eric Espie
34688c2bf6 Merge branch 'support/3.0' into develop 2023-01-18 16:42:30 +01:00
Eric Espie
9dc54d6e4c N°5901 - Warnings in Details part of file system Tab 2023-01-18 16:39:40 +01:00
Eric Espie
640b1b9176 ✏️ Added missing use of class Toolbar 2023-01-18 16:38:16 +01:00
Stephen Abello
c1922e2b3f N°3300 - Add creation and modification of 1-n objects in object details (#385)
* Rebase onto develop

* Use exit condition instead of englobing condition

* Add informative modals that can be called from modal toolbox

* Refactor "apply_modify" and "apply_new" into own controller, handle ajax requests with a json response and handle these responses in linkset creation/edition

* Fix merge issues

* Remove inverted condition

* Move linkset create button to a better place, still needs to fix duplicate "New" button caused by a refactor

* Handle "Cancel" button in modals

* Do not display relations when editing an object in a modal

* More elegant way to add "New" button to relations lists

* Factorize vertical highlights in alerts and modal in a single mixin

* Replace button name with dict entry code

* Change route name to snake case

* More elegant way to add "Create in modal" button to relations lists

* Replace triple if with in_array

* Move listener to body

* Rename variable to match boolean rules

* Rename event

* Rename extra param

* Add phpdoc

* Revert changes

* Check indirect linkset rights before allowing creation in modal

* Allow to modify linked object from 1-n relation in modal

* Add "New" button to 1-n relations

* Fix "new" button on 1-n

* Add todo

* Handle multiple classes choice

* Rework multiple classes choice and only allow LinksetController to be called from an ajax context

* PhpDoc

* Update sources/Application/UI/Links/Direct/BlockDirectLinksViewTable.php

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2023-01-18 15:43:31 +01:00
Stephen Abello
e1ffa65d8b N°3136 - Add creation and modification of n-n objects in object details (#378)
* Rebase onto develop

* Use exit condition instead of englobing condition

* Add informative modals that can be called from modal toolbox

* Refactor "apply_modify" and "apply_new" into own controller, handle ajax requests with a json response and handle these responses in linkset creation/edition

* Fix merge issues

* Remove inverted condition

* Move linkset create button to a better place, still needs to fix duplicate "New" button caused by a refactor

* Handle "Cancel" button in modals

* Do not display relations when editing an object in a modal

* More elegant way to add "New" button to relations lists

* Factorize vertical highlights in alerts and modal in a single mixin

* Replace button name with dict entry code

* Change route name to snake case

* More elegant way to add "Create in modal" button to relations lists

* Replace triple if with in_array

* Move listener to body

* Rename variable to match boolean rules

* Rename event

* Rename extra param

* Add phpdoc

* Revert changes

* Check indirect linkset rights before allowing creation in modal
2023-01-18 13:35:48 +01:00
Molkobain
cc2881a7b0 Merge remote-tracking branch 'origin/support/3.0' into develop 2023-01-17 19:21:52 +01:00
Molkobain
0d8a21f6ef N°5897 - Improve deprecated logs relevance for PHP "trigger_deprecation" 2023-01-17 16:30:35 +01:00
Molkobain
3459dc5997 N°5897 - Improve deprecated logs relevance for PHP "trigger_deprecation" 2023-01-17 16:29:25 +01:00
Pierre Goiffon
01d9d34118 Merge remote-tracking branch 'origin/support/3.0' into develop 2023-01-17 15:37:43 +01:00
Pierre Goiffon
de7c9d965e 💡 PHPDoc in \DeprecatedCallsLog 2023-01-17 15:37:23 +01:00
Eric Espie
6549c95d4f N°4756 - Ease extensibility for CRUD operations : XML format migration 2023-01-17 10:17:11 +01:00
Molkobain
da07fadfb3 N°5302 - PHP 8.1: Migrate some strlen() usages to internal method 2023-01-16 16:47:26 +01:00
Molkobain
b2c256e51e Merge remote-tracking branch 'origin/support/3.0' into develop 2023-01-16 16:37:22 +01:00
Pierre Goiffon
7305a30b50 N°3200 Remove "Filter list" icon
The link is still here but on objects total (see c693d03a)
2023-01-16 15:29:18 +01:00
Molkobain
4c127b6f61 Revert "N°4517 - PHP 8.1: Fix return type hint for iterable classes"
This reverts commit 61be903eb2.
2023-01-16 14:38:20 +01:00
Molkobain
61be903eb2 N°4517 - PHP 8.1: Fix return type hint for iterable classes 2023-01-16 14:21:00 +01:00
Pierre Goiffon
59792b2a3d N°4660 Remove useless chmod 2023-01-16 11:55:18 +01:00
Pierre Goiffon
19dda61d4f Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	tests/php-unit-tests/unitary-tests/webservices/RestTest.php
2023-01-16 11:54:24 +01:00
Pierre Goiffon
a50ed02057 N°4660 Fix OQLTest 2023-01-16 11:39:38 +01:00
Pierre Goiffon
0a7c8f9fd1 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	tests/php-unit-tests/unitary-tests/core/OQLTest.php
#	tests/php-unit-tests/unitary-tests/core/iTopConfigParserTest.php
#	tests/php-unit-tests/unitary-tests/webservices/RestTest.php
2023-01-16 11:36:02 +01:00
Pierre Goiffon
f65e14397c N°4660 Fix permissions changes in tests 2023-01-16 11:22:23 +01:00
Eric Espie
06a5d645da N°4756 - Ease extensibility for CRUD operations : Add unit tests 2023-01-12 17:40:17 +01:00
Pierre Goiffon
5d1852fe45 Merge remote-tracking branch 'origin/support/3.0' into develop 2023-01-12 16:43:41 +01:00
Pierre Goiffon
d7b94fb123 N°3769 Add data-input-type HTML attribute to fields in a transition form
Was only present in object edit mode :(
2023-01-12 16:40:31 +01:00
Eric Espie
ced4f82585 N°5412 - Upgrade to PHPUnit 9 to fix PHPUnit 8.5 error with PHP 8.1 - replaced removed function 2023-01-12 16:34:14 +01:00
Pierre Goiffon
de0110abc6 RestTest : test json_decode return value 2023-01-12 15:50:57 +01:00
Molkobain
a53bea5eb9 Add @jf-cbd to the sample data, welcome! 👋 2023-01-12 14:41:41 +01:00
Pierre Goiffon
47435869b3 Merge remote-tracking branch 'origin/support/3.0' into develop 2023-01-12 10:43:31 +01:00
Pierre Goiffon
80a9ded404 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-01-12 10:43:09 +01:00
Pierre Goiffon
c696a81c3a N°5821 JenkinsFile : introduce buildDiscarder 2023-01-12 10:42:06 +01:00
Molkobain
e04ea2d178 N°5608 - Fix status unit tests for PHPUNit 9 2023-01-11 18:22:48 +01:00
Molkobain
42ce397e13 N°5608 - Fix event service unit tests suite 2023-01-11 18:22:48 +01:00
Pierre Goiffon
22162aa55f Merge remote-tracking branch 'origin/support/3.0' into develop 2023-01-11 18:09:49 +01:00
Pierre Goiffon
c693d03a77 N°3200 Add "Filter list" link on datatable count 2023-01-11 17:19:49 +01:00
Pierre Goiffon
b9ed00d53f N°4660 Fix iTopConfigParserTest setting permissions of iTop config file
Alternative method to restore config file
chmod cannot be used with +w
In \Config::WriteToFile we are using fopen with mode=w, so using the same
In consequence we are not modifying anymore the iTop config file permissions \o/
2023-01-11 16:04:21 +01:00
Molkobain
29e0df9bbc Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	test/sources/application/Helper/WebResourcesHelperTest.php
#	tests/php-unit-tests/ItopTestCase.php
#	tests/php-unit-tests/composer.lock
#	tests/php-unit-tests/unitary-tests/.make/release/DatamodelsXmlFilesTest.php
#	tests/php-unit-tests/unitary-tests/application/UI/Base/Layout/NavigationMenuTest.php
#	tests/php-unit-tests/unitary-tests/application/query/QueryTest.php
#	tests/php-unit-tests/unitary-tests/core/DBSearchTest.php
#	tests/php-unit-tests/unitary-tests/datamodels/2.x/itop-config/BulkChangeExtKeyTest.inc.php
#	tests/php-unit-tests/unitary-tests/datamodels/2.x/itop-config/CRUD/DBObjectTest.php
#	tests/php-unit-tests/unitary-tests/service/EventTest.php
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/3.0_to_3.1.expected.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/3.0_to_3.1.input.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/3.1_to_3.0.expected.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/3.1_to_3.0.input.xml
#	tests/php-unit-tests/unitary-tests/sources/Application/Helper/WebResourcesHelperTest.php
#	tests/php-unit-tests/unitary-tests/sources/Router/RouterTest.php
#	tests/php-unit-tests/unitary-tests/sources/application/Helper/WebResourcesHelperTest.php
#	tests/php-unit-tests/unitary-tests/webservices/ImportTest.inc.php
#	tests/php-unit-tests/unitary-tests/webservices/RestTest.php
2023-01-11 15:55:08 +01:00
Molkobain
c4508ea80c N°4660 - Fix data synchro unit test failure due to another test not restoring correct user permissions on conf file 2023-01-11 14:26:23 +01:00
Molkobain
16390c9b00 N°5857 - PHPUnit: Replace usage of deprecated assetContains with assertStringContainsString 2023-01-11 13:26:54 +01:00
Molkobain
1271a895d1 N°5857 - PHPUnit: Replace usage of deprecated assetContains with assertStringContainsString 2023-01-11 11:59:01 +01:00
Eric Espie
030f1e2463 Fix Status test 2023-01-11 10:28:32 +01:00
Molkobain
ec90c0b6cd N°5872 - Navigation menu: Wrap menu group label instead of ellipsis in drawer 2023-01-11 10:21:46 +01:00
Molkobain
7b79da3f32 N°5871 - Navigation menu: Show ellipsis on long menu group labels 2023-01-11 10:18:15 +01:00
Pierre Goiffon
5729d6a9cd 🎨 StatusIncTest : fix phpdoc, replace @expectedException 2023-01-11 10:02:59 +01:00
acognet
4d7bac89f3 N°3805 - Collectors not working on itop 3.0 2023-01-11 09:47:53 +01:00
Molkobain
a5efef900c N°5608 - Harmonize namespaces and merge duplicated test files 2023-01-10 23:02:54 +01:00
Molkobain
c851a10982 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2023-01-10 22:49:13 +01:00
Molkobain
845adf43c6 N°5608 - Harmonize namespaces and merge duplicated test files 2023-01-10 22:36:35 +01:00
Molkobain
5916e4ea39 N°5608 - Ensure both old & new tests structure are ran for extensions for backward compatibility 2023-01-10 22:03:40 +01:00
Molkobain
7f37de777e N°5608 - Fix unit tests following restructuring Part III
* Missed a usage of "use_legacy_search" conf param on the last commit
* Fix log tests which didn't moved correctly from Git PoV 😕
2023-01-10 21:11:10 +01:00
Molkobain
bcf880f327 N°5608 - Fix unit tests following restructuring Part II
"use_legacy_search" conf param was removed some time ago
2023-01-10 19:23:54 +01:00
Thomas Casteleyn
b593beb8c7 N°5867 Display binary data size in SynchroReplica details (#286) 2023-01-10 18:53:00 +01:00
Lars Kaltefleiter
57ab3a0336 N°1350 - link audit catecories to domains and evaluate only categories of a given domain via interactive audit 2023-01-10 18:20:15 +01:00
Lars Kaltefleiter
4a54b2f8ff N°1350 - Configurable error tolerance for report color of audit categories 2023-01-10 18:20:15 +01:00
Molkobain
6aa9aa2831 N°5608 - Fix unit tests following restructuring Part I 2023-01-10 18:15:53 +01:00
Eric Espie
9b47ee12e7 N°4307 - Replace SwiftMailer by laminas-mail - Fix connecting to server without password 2023-01-10 17:58:03 +01:00
Molkobain
d177ee4a7f Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	tests/manual-visual-tests/Backoffice/RenderAllUiBlocks.php
#	tests/php-unit-tests/ItopDataTestCase.php
#	tests/php-unit-tests/ItopTestCase.php
#	tests/php-unit-tests/integration-tests/dictionaries-test/fr.dictionary.itop.core.KO.wrong_php
#	tests/php-unit-tests/integration-tests/dictionaries-test/fr.dictionary.itop.core.OK.php
#	tests/php-unit-tests/integration-tests/iTopModulesPhpVersionChecklistTest.php
#	tests/php-unit-tests/integration-tests/iTopXmlVersionChecklistTest.php
#	tests/php-unit-tests/phpunit.xml.dist
#	tests/php-unit-tests/unitary-tests/application/SCSSCompilationTest.php
#	tests/php-unit-tests/unitary-tests/application/Session/SessionTest.php
#	tests/php-unit-tests/unitary-tests/application/ThemeHandlerTest.php
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/DO_NOT_CHANGE.css-variables.scss
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/DO_NOT_CHANGE.light-grey.scss
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/README.md
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/_included_file3.scss
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/cross_reference1.scss
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/cross_reference2.scss
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/feature1/_feature1.scss
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/included_file1.scss
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/included_scss/included_file2.scss
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/included_scss/included_file4.scss
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/multi_imports.scss
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/shortcut.scss
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/shortcut2.scss
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/simple_import.scss
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/simple_import2.scss
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/typography.scss
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/ui-lightness/DO_NOT_CHANGE.jqueryui.scss
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/css/ui-lightness/images/ui-icons_1c94c4_256x240.png
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/css/ui-lightness/images/ui-icons_222222_256x240.png
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/css/ui-lightness/images/ui-icons_E87C1E_256x240.png
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/css/ui-lightness/images/ui-icons_F26522_256x240.png
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/css/ui-lightness/images/ui-icons_ffd27a_256x240.png
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/css/ui-lightness/images/ui-icons_ffffff_256x240.png
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/ac-background.gif
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/actions_right.png
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/bg.gif
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/breadcrumb-separator.png
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/calendar.png
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/delete.png
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/desc.gif
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/error.png
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/eye-closed-555.png
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/eye-closed-fff.png
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/eye-open-555.png
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/eye-open-fff.png
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/full-screen.png
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/green-header.gif
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/green-square.gif
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/indicator.gif
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/info-mini.png
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/minus.gif
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/ok.png
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/orange-header.gif
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/plus.gif
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/red-header.gif
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/truncated.png
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/tv-collapsable-last.gif
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/tv-collapsable.gif
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/tv-expandable-last.gif
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/tv-expandable.gif
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/tv-item-last.gif
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/tv-item.gif
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/themes/basque-red/main.css
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/themes/basque-red/main_imagemodified.css
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/themes/basque-red/main_importmodified.css
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/themes/basque-red/main_stylesheet.css
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/themes/basque-red/main_testcompilethemes.css
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/themes/basque-red/main_varchanged.css
#	tests/php-unit-tests/unitary-tests/application/theme-handler/expected/themes/basque-red/theme-parameters.json
#	tests/php-unit-tests/unitary-tests/application/theme-handler/getimages/expected-getimages.json
#	tests/php-unit-tests/unitary-tests/application/theme-handler/getimages/test-getimages.scss
#	tests/php-unit-tests/unitary-tests/core/ActionEmailTest.php
#	tests/php-unit-tests/unitary-tests/core/AttributeDefTest.inc.php
#	tests/php-unit-tests/unitary-tests/core/AttributeURLDefaultPattern.php
#	tests/php-unit-tests/unitary-tests/core/AttributeURLTest.php
#	tests/php-unit-tests/unitary-tests/core/BulkChangeTest.inc.php
#	tests/php-unit-tests/unitary-tests/core/CSVParserTest.php
#	tests/php-unit-tests/unitary-tests/core/DBObjectTest.php
#	tests/php-unit-tests/unitary-tests/core/DBSearchAddConditionPointingTo.php
#	tests/php-unit-tests/unitary-tests/core/ExpressionEvaluateTest.php
#	tests/php-unit-tests/unitary-tests/core/GetSelectFilterTest.php
#	tests/php-unit-tests/unitary-tests/core/InlineImageTest.php
#	tests/php-unit-tests/unitary-tests/core/Log/ExceptionLogTest.php
#	tests/php-unit-tests/unitary-tests/core/Log/ExceptionLogTest/Exceptions.php
#	tests/php-unit-tests/unitary-tests/core/Log/LogAPITest.php
#	tests/php-unit-tests/unitary-tests/core/Log/LogFileNameBuilderTest.php
#	tests/php-unit-tests/unitary-tests/core/LogAPITest.php
#	tests/php-unit-tests/unitary-tests/core/LogFileNameBuilderTest.php
#	tests/php-unit-tests/unitary-tests/core/MetaModelTest.php
#	tests/php-unit-tests/unitary-tests/core/OQLTest.php
#	tests/php-unit-tests/unitary-tests/core/UniquenessConstraintTest.php
#	tests/php-unit-tests/unitary-tests/core/XMLDataLoaderTest.php
#	tests/php-unit-tests/unitary-tests/core/dictApcuTest.php
#	tests/php-unit-tests/unitary-tests/core/dictTest.php
#	tests/php-unit-tests/unitary-tests/core/ormCaseLogTest.php
#	tests/php-unit-tests/unitary-tests/core/ormPasswordTest.php
#	tests/php-unit-tests/unitary-tests/core/ormStyleTest.php
#	tests/php-unit-tests/unitary-tests/setup/MFCompilerTest.php
#	tests/php-unit-tests/unitary-tests/setup/SubMFCompiler.php
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/1.7_to_1.6.expected.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/1.7_to_1.6.input.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/1.6_to_1.7_2.expected.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/1.6_to_1.7_2.input.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/1.7.input.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/1.7_to_1.6.expected.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/1.7_to_1.6.input.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/1.7_to_1.6_2.expected.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/1.7_to_1.6_2.input.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/1.7_to_3.0.expected.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/1.7_to_3.0.input.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/3.0_to_1.7.expected.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/3.0_to_1.7.input.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/Bug_4569.expected.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/Bug_4569.input.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_deleted_to_deleted.expected.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_deleted_to_deleted.input.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_deleted_to_in-definition.expected.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_deleted_to_in-definition.input.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_deleted_to_not-in-definition.expected.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_deleted_to_not-in-definition.input.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_in-definition_to_deleted.expected.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_in-definition_to_deleted.input.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_in-definition_to_in-definition.expected.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_in-definition_to_in-definition.input.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_in-definition_to_not-in-definition.expected.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_in-definition_to_not-in-definition.input.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_not-in-definition_to_deleted.expected.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_not-in-definition_to_deleted.input.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_not-in-definition_to_in-definition.expected.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_not-in-definition_to_in-definition.input.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_not-in-definition_to_not-in-definition.expected.xml
#	tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_not-in-definition_to_not-in-definition.input.xml
#	tests/php-unit-tests/unitary-tests/setup/ressources/datamodels/datamodel-branding.xml
#	tests/php-unit-tests/unitary-tests/sources/application/Helper/WebResourcesHelperTest.php
#	tests/php-unit-tests/unitary-tests/sources/application/status/StatusIncTest.php
#	tests/php-unit-tests/unitary-tests/sources/application/status/status.php
#	tests/php-unit-tests/unitary-tests/synchro/DataSynchroTest.php
2023-01-10 15:27:44 +01:00
Lars Kaltefleiter
b354058eb5 N°5622 Fix backup cannot be done if TLS enabled with no CA (#354) 2023-01-10 12:13:33 +01:00
Molkobain
fbc0a898ae N°5608 - Move test files to corresponding directories after branch rebase 2023-01-10 12:11:12 +01:00
Molkobain
36f8e58e25 N°5608 - Use new ItopTestCase::RequireOnceXXX in unit tests 2023-01-10 12:11:12 +01:00
Molkobain
6a7dbb06b0 N°5608 - Add methods to require_once an iTop or a unit test file to avoid crashes when tests dir is moved 2023-01-10 12:11:12 +01:00
Pierre Goiffon
43dd0b7df8 N°2013 Fix regression when installing from scratch
Error was "Call to a member function UpdateFromParams() on null"
Regression introduced by 15d3201a
2023-01-10 10:56:21 +01:00
Pierre Goiffon
43d86ad8e2 N°2013 Setup : fix crash on setting readonly mode if initial DB info were wrong
Same as 15d3201a, but this error happened before compilation, when setting read only mode.
As before this is another fix for #351.

This fix introduces the new method \WizardController::GetParamForConfigArray
I replaced existing duplicate code with a call to this new generic method.
2023-01-10 10:56:21 +01:00
Eric Espie
d3d89b1ee2 N°5857 Fix PHPUnitPrettyPrint with PHPUnit 9 2023-01-10 09:42:13 +01:00
Pierre Goiffon
15d3201a40 N°2013 Setup : fix crash on compilation if initial DB info were wrong
Use case :
- having in the iTop config file wrong DB parameters (unreachable server for example)
- launch the setup in update mode
- fix the DB config in the wizard

The PR #351 solved the errors that were happening in the following steps.
But we still had an error during compilation, caused by the maintenance mode activation.
2023-01-09 16:11:27 +01:00
Eric Espie
cf4616d9a1 N°4756 - Ease extensibility for CRUD operations : Unit tests 2023-01-09 13:59:55 +01:00
Molkobain
5721a324c1 Tests: Always display test status for better feedback 2023-01-06 22:30:09 +01:00
Molkobain
7de6c72154 Tests: Rename provider method name to match convention 2023-01-06 22:30:09 +01:00
Molkobain
c0cee02351 N°5608 - Factorize all core modules tests to a single test suite 2023-01-06 22:30:09 +01:00
Molkobain
bb674fb873 N°5608 - Move/rename "status" unit tests to match their counterpart location/name 2023-01-06 22:30:09 +01:00
Molkobain
6136eadd31 N°5608 - Fix some broken require paths since move/rename 2023-01-06 22:30:08 +01:00
Molkobain
87cb73c038 N°5608 - Rename "test" folder to "tests" to better match conventions 2023-01-06 22:30:08 +01:00
Molkobain
11d8547cef N°5608 - Move/rename unit tests to match their counterpart location/name 2023-01-06 22:30:08 +01:00
Molkobain
0998c73a1a N°5608 - Add README files 2023-01-06 22:30:07 +01:00
Molkobain
471f66649a N°5608 - Rename unitary test folders for better understanding 2023-01-06 22:30:07 +01:00
Molkobain
e8bf9cf688 N°5608 - Move "twig" PHP unit test to new folder
Notice: Test was not working, still not working
2023-01-06 22:30:07 +01:00
Molkobain
4f88a0e7d2 N°5608 - Move legacy PHP unit tests (not run by CI) to a dedicated folder 2023-01-06 22:30:07 +01:00
Molkobain
c6b0e273e6 N°5608 - Rename "VisualTests" folder to match new convention 2023-01-06 22:30:07 +01:00
Molkobain
d9539f9d01 N°5608 - Add comments to main autoloader 2023-01-06 22:30:06 +01:00
Molkobain
a3e309acb5 N°5608 - Revert "authent-local" test suite to its original rank as it is crashing the CI 🤔 2023-01-06 22:30:06 +01:00
Molkobain
c06cbfd4a9 N°5608 - Rename "coreExtensions" test suite to correct datamodel module (authent-local) 2023-01-06 22:30:06 +01:00
Molkobain
1d7e4e1a42 N°5608 - Move unit tests to a dedicated folder and start reorganizing to match iTop folder structure 2023-01-06 22:30:06 +01:00
Molkobain
083d19c688 📝 PHPDoc 2023-01-05 21:19:56 +01:00
Eric Espie
4e9a34d8d8 Merge branch 'support/3.0' into develop 2023-01-05 09:25:11 +01:00
Eric Espie
524e65a29b 📝 fix PHPDoc 2023-01-05 09:23:48 +01:00
Pierre Goiffon
25048ba0cc N°3200 🎨 Replace !empty() by \utils::IsNotNullOrEmptyString
Thanks Molkobain !
2023-01-05 09:07:13 +01:00
Pierre Goiffon
4f7a1ea9da N°3200 Datatable "filter list" icon : specific query for 1,n and n,n objects relations
This specific query passes attcodes list to display to UI.php, but this endpoint doesn't handle it yet. Adding this enhancements would require too much time for now (datatables legacy code), hopefully a refactoring work will be done soon and we'll get back to it !

Note that dedicated ContextTag is renamed from Search to ObjectSearch
2023-01-04 16:23:52 +01:00
Pierre Goiffon
a62a373f64 N°3200 ♻️ Refactor relations attcode list generation
The existing code was added in N°2334
Its generic part is now callable in the MetaModel::GetAttributeLinkedSetIndirectDatatableAttCodesToDisplay method
2023-01-04 16:23:52 +01:00
Pierre Goiffon
6b23171d65 N°3200 New "Filter list" icon in datatables
Every datatables will open its query in a new UI.php?operation=search page
2023-01-04 16:23:52 +01:00
Pierre Goiffon
09b69728a0 📝 Version history : highlight for major versions 2023-01-04 14:24:27 +01:00
Pierre Goiffon
bc0dbc7860 📝 Version history : add link to versions details on the wiki 2023-01-04 14:20:34 +01:00
Eric Espie
a693c343e8 N°4756 - Ease extensibility for CRUD operations : Reduce events after review 2023-01-04 14:18:01 +01:00
Eric Espie
cd17eb484a N°4756 - Ease extensibility for CRUD operations : Reduce events after review 2023-01-04 12:23:23 +01:00
Vincent Dumas
259eb60f97 N°5841 - Non-admin managing User can't see Administrator by default (#383) 2023-01-03 14:08:28 +01:00
Eric Espie
1afa3e2003 Merge branch 'support/3.0' into develop 2023-01-03 08:52:10 +01:00
Eric Espie
df7d7c877d N°5490 - PHP 8.0: Fix crash of bulk modify 2023-01-03 08:50:18 +01:00
Eric Espie
4c4d7c12e8 N°4756 - Ease extensibility for CRUD operations : Coherency in method parameters 2023-01-02 14:23:36 +01:00
Eric Espie
97c3cacfaa N°4756 - Ease extensibility for CRUD operations : Pass DeletionPlan to EVENT_DB_CHECK_TO_DELETE 2023-01-02 14:20:17 +01:00
Eric Espie
98ec568788 N°4756 - Ease extensibility for CRUD operations : Events not sent in overridable methods 2023-01-02 14:06:02 +01:00
Eric Espie
626ba7ee66 📝 PHPDoc reworked packages 2022-12-30 14:17:57 +01:00
Eric Espie
3920f84f45 📝 PHPDoc reworked for auto-doc 2022-12-30 10:11:11 +01:00
Eric Espie
30d2557342 Merge branch 'support/3.0' into develop 2022-12-29 16:00:23 +01:00
Eric Espie
4bcad431aa 📝 Change packages for auto-documentation 2022-12-29 15:59:59 +01:00
Eric Espie
f3cea730af Merge branch 'support/3.0' into develop
# Conflicts:
#	application/applicationextension.inc.php
2022-12-29 14:40:26 +01:00
Eric Espie
5fe32aac15 Merge branch 'support/2.7' into support/3.0
# Conflicts:
#	application/applicationextension.inc.php
2022-12-29 12:40:37 +01:00
Eric Espie
88d9a29599 📝 Change packages for auto-documentation 2022-12-29 12:38:31 +01:00
Eric Espie
92a36dcfdd 📝 Change packages for auto-documentation 2022-12-29 12:24:56 +01:00
Eric Espie
23b4d4cb6b Merge branch 'support/2.7' into support/3.0 2022-12-28 09:52:52 +01:00
Eric Espie
b37e74b407 📝 Change packages for auto-documentation 2022-12-28 09:51:46 +01:00
Eric Espie
0fad249124 N°5564 - ⬆️ twig bump 2022-12-26 09:42:56 +01:00
Pierre Goiffon
94d7d94bff 💡 Fix PHPDoc in \ApplicationMenu::GetSubMenuNodes 2022-12-23 16:14:38 +01:00
Vincent Dumas
48645dd519 N°4852 - Navigation menu: Display "+" dict entries as a tooltip on sub-nodes (#380) 2022-12-23 15:48:52 +01:00
Stephen Abello
9df9077595 N°4737 - Adjust progress bar position in iTop hub connector 2022-12-23 15:45:58 +01:00
Stephen Abello
756241918e N°4737 - Adjust button position in iTop hub connector 2022-12-23 15:44:22 +01:00
Stephen Abello
f819fdae98 N°5507 - Fix impact analysis page title when displaying "Depends on" graph 2022-12-23 15:09:13 +01:00
Stephen Abello
7127b192a2 N°5822 - Do not display the tab separator in scroll mode when there is only one tab 2022-12-23 14:28:22 +01:00
Eric Espie
1cac189077 N°4756 - Ease extensibility for CRUD operations : Fix CRUD after review 2022-12-23 10:37:08 +01:00
Eric Espie
0383fb124b N°4756 - Ease extensibility for CRUD operations : Events renamed 2022-12-22 15:28:31 +01:00
Eric Espie
f378fd3d72 N°4756 - Ease extensibility for CRUD operations : Events renamed 2022-12-22 15:22:06 +01:00
Eric Espie
44fac686f9 N°4756 - Ease extensibility for CRUD operations : Events renamed 2022-12-22 15:16:52 +01:00
Molkobain
eff2afbc69 N°4756 - Improve PHPDoc and type hints 2022-12-22 10:25:24 +01:00
Molkobain
86b3129c08 N°4756 - Fix event listeners for modules
Counter part is that we can no longer fire events before MetaModel::Startup
2022-12-22 10:21:39 +01:00
Eric Espie
bdd5741290 N°4756 - Ease extensibility for CRUD operations : Protect against update loops 2022-12-22 08:56:40 +01:00
Eric Espie
53091fc5df N°4756 - Ease extensibility for CRUD operations : 🌐 dictionaries 2022-12-21 09:03:16 +01:00
Eric Espie
06db3561dc N°4756 - Ease extensibility for CRUD operations : Protect against update loops 2022-12-20 14:26:44 +01:00
Molkobain
5cb2f19ea0 N°4756 - Improve PHPDoc and type hints 2022-12-20 11:11:14 +01:00
Eric Espie
a668b92051 N°4307 - Add option verify_peer => not novalidatecert in SMTP 2022-12-20 10:27:41 +01:00
bdalsass
eda11e97e3 N°5074 - Linkset datatable actions row improvements
Linkset updates, feedbacks 09/12:

- Distinguish action label and tool tip message
- Change default action button label Ok => Confirm
- Use action label in place of default confirm button label
- Attach do not show again preference key to table instance
- Obsolescence flag for link selection (select all)  issue correction
2022-12-20 10:10:25 +01:00
Molkobain
64146b6e1b N°5655 - Add dedicated dict entries for bulk modify/delete actions on linksets 2022-12-20 09:43:25 +01:00
Eric Espie
7b85cb92b0 💡 phpdoc 2022-12-19 09:27:46 +01:00
Eric Espie
a28fcb7c8c N°4756 - Ease extensibility for CRUD operations : Event Service - 💄 better model view display 2022-12-16 11:47:26 +01:00
Eric Espie
f8ec180a0f N°4756 - Ease extensibility for CRUD operations : Event Service - 💚 Fix CI 2022-12-16 11:42:40 +01:00
Eric Espie
0810a113c1 N°4756 - Ease extensibility for CRUD operations : Event Service - Moved Events source code under sources/application/events 2022-12-16 11:30:00 +01:00
Eric Espie
1b4a21fafa N°4756 - Ease extensibility for CRUD operations : Event Service - Moved Events source code under sources/application/events 2022-12-16 11:28:52 +01:00
Eric Espie
fae857175b N°4756 - Ease extensibility for CRUD operations : Event Service - Changed CheckToWrite and CheckToDelete events and add two new events to set attributes flags 2022-12-16 11:07:41 +01:00
Eric Espie
9c21ca2ee6 💡 phpdoc @package ventilation and @api on methods 2022-12-16 11:03:15 +01:00
Pierre Goiffon
ccdb5ec79f Merge remote-tracking branch 'origin/support/3.0' into develop 2022-12-15 15:37:09 +01:00
Pierre Goiffon
cb6232cc05 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2022-12-15 15:36:43 +01:00
Pierre Goiffon
0d49c605e2 💡 Fix \DBSearch::FromOQL phpdoc + modifiers order 2022-12-15 15:36:14 +01:00
Eric Espie
207d312b12 N°4756 - Ease extensibility for CRUD operations : Event Service - Moved ApplicationEvents 2022-12-15 14:03:23 +01:00
Eric Espie
08d83478da N°4756 - Ease extensibility for CRUD operations : Event Service - Revert default value for utils::GetClassesForInterface() 2022-12-15 13:54:51 +01:00
Eric Espie
8665f4ff06 N°4756 - Ease extensibility for CRUD operations : Event Service - PHP Doc 2022-12-15 13:46:06 +01:00
Pierre Goiffon
6a5beb89cc 📝 Version history : 2.7.0-1 was a major version
2.7.0 community was never released
2022-12-15 11:55:51 +01:00
Molkobain
3d09e3b57b Merge remote-tracking branch 'origin/support/3.0' into develop 2022-12-14 20:35:47 +01:00
Molkobain
6d47b0f4f8 N°4517 - PHP 8.0: Fix undefined array key due to type cast being done before coalesce 2022-12-14 20:34:40 +01:00
Molkobain
27cf8159d0 N°5388 - PHP 8.2: Fix dynamic properties 2022-12-14 19:55:08 +01:00
Eric Espie
314dd7d7ad Merge remote-tracking branch 'origin/develop' into develop 2022-12-14 15:50:17 +01:00
Eric Espie
6412f1ab23 Merge branch 'support/3.0' into develop
# Conflicts:
#	sources/Core/Email/EmailSwiftMailer.php
2022-12-14 15:48:52 +01:00
jbostoen
32ee1a8226 N°5793 - HTML Sanitizer: Allow 'start' attribute in 'ol' tag (#368)
* * Extended allowed attributes on ol, li (based on W3Schools)

* Change unit test case label

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2022-12-14 15:46:59 +01:00
Eric Espie
e1c28a5c22 Merge branch 'support/2.7' into support/3.0 2022-12-14 15:45:27 +01:00
Eric Espie
296ee019a0 Merge branch 'support/2.7' into support/3.0 - nothing to do 2022-12-14 15:44:05 +01:00
Thomas Casteleyn
fe997d1254 N°2013 Fix setup when doing update to new DB (#351)
During the setup there are some queries done to the DB.
Only the config file parameters were used, meaning changing those parameters in the setup form wasn't effective :(
This is a regression made in 2.5.0 with N°1260 (MySQL TLS)
2022-12-14 10:29:58 +01:00
Eric Espie
e38951ebae N°4756 - Ease extensibility for CRUD operations : Event Service - Changed some tags 2022-12-14 09:43:41 +01:00
Molkobain
7c2f8f4d93 N°5765 - Setup: Never cache folder permissions test response (#374) 2022-12-14 09:33:54 +01:00
Pierre Goiffon
1f76ff940d N°5797 Replace wrong config load (#338) 2022-12-13 18:23:09 +01:00
Pierre Goiffon
fde6cac7a2 📝 SECURITY: Add disclosure policy (#372)
Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2022-12-13 18:15:25 +01:00
jbostoen
93209265f2 N°5792 - Update dutch translations thanks to @jbostoen 2022-12-13 17:49:32 +01:00
Eric Espie
b50675fc29 N°4756 - Ease extensibility for CRUD operations : Event Service - Fix CI 2022-12-13 13:44:20 +01:00
Eric Espie
deb6d1fd9a N°4756 - Ease extensibility for CRUD operations : Event Service - move event description to an object 2022-12-13 11:55:05 +01:00
Eric Espie
432579657c N°4756 - Ease extensibility for CRUD operations : Event Service - cleanup 2022-12-13 11:52:21 +01:00
Molkobain
f09bd5fdff N°5655 - Add icon to linkset bulk actions in case they are set as shortcut actions 2022-12-13 11:47:32 +01:00
Molkobain
4f37a9e447 N°5655 - Router: Add method to dump available routes 2022-12-13 11:47:32 +01:00
Molkobain
32297d93dd N°5655 - Add utils::ToSnakeCase() method 2022-12-13 11:47:32 +01:00
Pierre Goiffon
7083e1263d 📝 Version history : add 2.7.8 2022-12-13 10:53:59 +01:00
Eric Espie
329d1a7c41 N°4756 - Ease extensibility for CRUD operations : Event Service - documentation 2022-12-13 10:43:05 +01:00
Eric Espie
22749caeb4 N°4756 - Ease extensibility for CRUD operations : Event Service - renamed service setup interface 2022-12-13 10:19:25 +01:00
Eric Espie
baaa4474f9 N°5102 - Allow to send emails using GSuite SMTP and OAuth - cleanup unnecessary include 2022-12-13 10:01:57 +01:00
Molkobain
af804a9dc1 N°5655 - Enable bulk modify/delete on linksets 2022-12-12 23:44:31 +01:00
Molkobain
899f4fdc0a N°5655 - Fix regression from e5d67d22
Can't use "let" as this snippet seems to be evaluated several with the same variables 😭
2022-12-12 23:38:55 +01:00
Molkobain
8cced3a79e N°5655 - Refactor of menu actions generation to reduce duplicated code 2022-12-12 17:25:48 +01:00
Eric Espie
bb26e48d38 Update version to next release 2.7.9 2022-12-12 16:19:42 +01:00
Pierre Goiffon
4eb45f1b34 N°5779 iTopDesignFormatTest : test file conversion from version N to N
For example for a 3.1 version content will try to convert the file from 3.0 to 3.1
2022-12-12 10:48:59 +01:00
Pierre Goiffon
c2f503e2ac N°5779 update-xml : update code using iterators 2022-12-12 09:28:42 +01:00
Pierre Goiffon
e4e654100e N°5779 update-xml : check we are indeed targeting all of the design files 2022-12-09 18:19:15 +01:00
Pierre Goiffon
3270c3f775 🔨 N°5779 update-xml : if XML files already at current version, tries to convert from previous one 2022-12-08 17:08:00 +01:00
Eric Espie
7f88a6aa1a Merge branch 'support/3.0' into develop
# Conflicts:
#	datamodels/2.x/itop-portal-base/portal/src/Twig/AppExtension.php
2022-12-08 08:39:55 +01:00
Eric Espie
26042b990f Merge branch 'support/2.7' into support/3.0
# Conflicts:
#	datamodels/2.x/itop-portal-base/portal/src/Twig/AppExtension.php
2022-12-08 08:34:16 +01:00
Eric Espie
cf433f2f80 N°5725 - Twig update 'filter', 'map' and 'reduce' filters 2022-12-08 08:25:11 +01:00
Eric Espie
c02f84969a N°4756 - Ease extensibility for CRUD operations : Event Service 2022-12-08 08:21:13 +01:00
Eric Espie
bdebea62b6 N°5394 - use session for the FSM (use Session object) 2022-12-08 08:21:13 +01:00
Pierre Goiffon
4a22361f39 🔨 N°5633 update-xml.php : add new XML dir (/application and /core) 2022-12-07 17:40:48 +01:00
Pierre Goiffon
025f8b9dc3 🔨 N°5633 update-xml.php : if no version passed, assuming current version 2022-12-07 17:40:48 +01:00
Benjamin Dalsass
9defedb862 N°5073 - Issue, row actions listeners lost on refresh 2022-12-07 15:31:19 +01:00
Eric Espie
ae94e58a43 N°5725 - Twig update 'filter', 'map' and 'reduce' filters 2022-12-07 13:53:15 +01:00
Eric Espie
e4d8489292 Merge branch 'support/3.0' into develop
# Conflicts:
#	datamodels/2.x/itop-portal-base/portal/src/Twig/AppExtension.php
2022-12-07 13:52:42 +01:00
Eric Espie
f66692d5cf Merge branch 'support/2.7' into support/3.0
# Conflicts:
#	datamodels/2.x/itop-portal-base/portal/src/Twig/AppExtension.php
2022-12-07 13:44:54 +01:00
Eric Espie
2b917f6647 Merge branch 'support/2.7' into support/3.0
# Conflicts:
#	datamodels/2.x/itop-oauth-client/src/Service/PopupMenuExtension.php
2022-12-07 13:42:36 +01:00
Eric Espie
cda017fa4f N°5725 - Twig update 'filter', 'map' and 'reduce' filters 2022-12-07 13:37:52 +01:00
Pierre Goiffon
dad22f6f83 📄 Update Licenses 2022-12-07 11:04:33 +01:00
Eduardo Mozart de Oliveira
0579f1b1dc Add Windows / macOS auto-generated files to .gitignore (#367)
Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2022-12-06 18:08:51 +01:00
Pierre Goiffon
a551bf0499 📝 CONTRIBUTING: Improvements (#371) 2022-12-06 17:19:44 +01:00
vdumas
4f36819ab2 Fix @param & @return comments for GetTagFromLabel 2022-12-06 16:43:55 +01:00
Stephen Abello
26359cf1ee Move datatable SCSS files under the same directory 2022-12-06 16:14:42 +01:00
Stephen Abello
00a25f3e8b Move datatable SCSS files under the same directory 2022-12-06 16:10:58 +01:00
Molkobain
2d122448c8 N°5655 - Fix is_callable() call for PHP 8.0+ 2022-12-06 16:04:26 +01:00
Molkobain
e5d67d2219 N°5655 - Small refactor for better reading 2022-12-06 14:07:15 +01:00
Molkobain
4ac0de5fff N°5655 - Code format 2022-12-06 14:07:15 +01:00
bdalsass
dbe7fae82e Feature/modals - generic modal API (#373)
Default modal JS Implementation:

Add title option
Add buttons option
Change template cloning
Confirmation Modal:

Add implementation
Do not show again functionality
Web Page:

Add blocks array with twig loop insertion
2022-12-06 10:18:59 +01:00
Stephen Abello
98a53a46f0 Fix "Configure this list" modal content display 2022-12-02 15:33:35 +01:00
Eric Espie
e6946d33e6 Merge branch 'support/3.0' into develop 2022-12-02 11:21:04 +01:00
Eric Espie
9474f43d61 Merge branch 'support/2.7' into support/3.0
# Conflicts:
#	datamodels/2.x/itop-oauth-client/src/Service/PopupMenuExtension.php
2022-12-02 11:20:31 +01:00
Eric Espie
9077f7ba37 N°5430 - OAuth authentication : customize redirect landing URL - remove unnecessary parameter to JS function OAuthConnect 2022-12-02 11:17:01 +01:00
Eric Espie
3548251997 Merge branch 'support/3.0' into develop 2022-12-02 09:27:40 +01:00
Eric Espie
4d365c8a44 Merge branch 'support/2.7' into support/3.0 2022-12-02 09:26:40 +01:00
Eric Espie
957ff40f30 N°5155 - Email by SMTP with self-signed certificate (changed default values to the previous behaviour) 2022-12-02 09:25:53 +01:00
Eric Espie
93e0dde1a1 Merge branch 'support/3.0' into develop
# Conflicts:
#	sources/Core/Email/EmailSwiftMailer.php

Email by SMTP with self-signed certificate ported from EmailSwiftMailer to EmailLaminas
2022-11-30 14:35:13 +01:00
Eric Espie
7bb12c35ea Merge branch 'support/2.7' into support/3.0
# Conflicts:
#	core/config.class.inc.php
2022-11-30 14:27:32 +01:00
Eric Espie
aff9c7748b N°5155 - Email by SMTP with self-signed certificate 2022-11-30 14:18:11 +01:00
Eric Espie
e518d34bc9 N°5553 - OAuth 2 : Hide Client Secret
* client_id is now 255 chars (AttributeString)
 * client_secret is now 64 chars (AttributePassword) and cannot be anymore in the uniqueness rules
 * The modification of redirect_url, client_id or client_secret change the status to inactive and generate a session message to ask for token regeneration
2022-11-30 14:15:37 +01:00
Eric Espie
f02e95e8bf Merge branch 'support/3.0' into develop
# Conflicts:
#	datamodels/2.x/itop-portal-base/portal/src/Twig/AppExtension.php
#	test/twig/test.html
#	test/twig/test.html.twig
2022-11-30 13:57:28 +01:00
Eric Espie
51a305b445 N°5725 - Twig update 'filter', 'map' and 'reduce' filters (twig functions signature changed) 2022-11-30 13:40:44 +01:00
Eric Espie
5577f4a62e Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2022-11-30 13:36:18 +01:00
Eric Espie
f0141530b9 N°5725 - Twig update 'filter', 'map' and 'reduce' filters (+1 squashed commits)
Squashed commits:

[00148dec5] N°5725 - Twig update 'filter', 'map' and 'reduce' filters
2022-11-30 13:28:33 +01:00
Vladimir Kunin
98bcfeb2ba 🐛 N°5369 - Fix BrowseBrick tree "opening_target" mode for "self" and "new" values (#299)
Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2022-11-30 11:45:06 +01:00
Pierre Goiffon
669c69ff39 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-11-29 19:04:04 +01:00
Pierre Goiffon
92a802947d Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	setup/wizardsteps.class.inc.php
2022-11-29 19:02:51 +01:00
xtophe38
ce5096a896 N°5758 Change setup test for GDPR consent (#336)
We were using SetupUtils::IsProductVersion, but this was blocking for certain packages like TeemIP standalone.
After this change we are now relying on a new method : \SetupUtils::IsConnectableToITopHub. It will check the iTop Hub Connector module presence instead.
2022-11-29 19:00:17 +01:00
Pierre Goiffon
c5e00194b7 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	pages/ajax.render.php
2022-11-29 18:22:35 +01:00
Pierre Goiffon
5efd45eafc Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	pages/ajax.render.php
2022-11-29 18:18:24 +01:00
Pierre Goiffon
23e0ed5e56 N°4449 Test for FPD detection in RuntimeDashboard 2022-11-29 18:10:17 +01:00
Pierre Goiffon
d412a52fcc N°4449 Fix FPD in dashboard export/import 2022-11-29 18:10:17 +01:00
Eric Espie
ded2f8af9a Fix CI 2022-11-29 14:39:16 +01:00
Molkobain
084f3ec52b N°5655 - Continue work on CombodoModal Part 2 2022-11-28 15:57:25 +01:00
Molkobain
bedc8bbf46 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-11-26 00:25:05 +01:00
Molkobain
cf5745b985 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	core/pdfbulkexport.class.inc.php
2022-11-26 00:09:10 +01:00
Molkobain
3e18ad590f Fix image attributes not being visible in PDF exports 2022-11-25 19:30:35 +01:00
Eric Espie
b174aa9aeb Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	datamodels/2.x/itop-oauth-client/vendor/composer/InstalledVersions.php
#	datamodels/2.x/itop-oauth-client/vendor/composer/installed.php
2022-11-25 17:37:01 +01:00
Pierre Goiffon
4ec3f22173 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	core/log.class.inc.php
2022-11-24 17:28:39 +01:00
Pierre Goiffon
34f03715b6 LogChannel : add missing @since 2022-11-24 17:27:30 +01:00
Eric Espie
ebf3f48584 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	datamodels/2.x/itop-oauth-client/vendor/composer/installed.php
2022-11-24 14:37:35 +01:00
Eric Espie
6a0cdb8705 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	datamodels/2.x/itop-oauth-client/vendor/composer/InstalledVersions.php
#	datamodels/2.x/itop-oauth-client/vendor/composer/installed.php
2022-11-24 14:35:51 +01:00
Eric Espie
22111bf667 N°5611 - Fix missing composer files in itop-oauth-client 2022-11-24 14:32:51 +01:00
Eric Espie
6d0c46595d N°5611 - Fix missing composer files in itop-oauth-client 2022-11-24 14:27:42 +01:00
Eric Espie
8db89c3d5f Merge remote-tracking branch 'origin/support/3.0' into develop 2022-11-24 13:58:52 +01:00
Eric Espie
1e2205ecb0 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2022-11-24 13:58:12 +01:00
Eric Espie
d292a6b0c3 N°5333 - OAuth and iTop url change 2022-11-24 13:55:36 +01:00
Eric Espie
74702c8d06 N°5430 - OAuth authentication : customize redirect landing URL 2022-11-24 13:55:36 +01:00
Eric Espie
649674c786 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	application/twigextension.class.inc.php
#	datamodels/2.x/authent-cas/composer.json
#	datamodels/2.x/authent-cas/composer.lock
#	datamodels/2.x/authent-cas/main.php
#	datamodels/2.x/authent-cas/vendor/apereo/phpcas/composer.json
#	datamodels/2.x/authent-cas/vendor/composer/ClassLoader.php
#	datamodels/2.x/authent-cas/vendor/composer/autoload_classmap.php
#	datamodels/2.x/authent-cas/vendor/composer/autoload_psr4.php
#	datamodels/2.x/authent-cas/vendor/composer/autoload_real.php
#	datamodels/2.x/authent-cas/vendor/composer/autoload_static.php
#	datamodels/2.x/authent-cas/vendor/composer/installed.json
#	datamodels/2.x/itop-portal-base/portal/src/Twig/AppExtension.php
#	lib/apereo/phpcas/source/CAS.php
#	lib/apereo/phpcas/source/CAS/Client.php
#	lib/apereo/phpcas/source/CAS/Languages/Galego.php
#	lib/apereo/phpcas/source/CAS/Languages/Portuguese.php
#	lib/symfony/cache-contracts/InstalledVersions.php
#	lib/symfony/cache-contracts/installed.php
#	lib/symfony/cache-contracts/platform_check.php
#	sources/Application/UI/Base/Layout/NavigationMenu/NavigationMenu.php
#	sources/application/TwigBase/Twig/Extension.php
2022-11-24 13:17:09 +01:00
Benjamin Dalsass
038e6d7f3f datatable - row actions - allow returning null 2022-11-24 09:16:02 +01:00
Pierre Goiffon
df4a205ba0 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2022-11-24 09:00:56 +01:00
Pierre Goiffon
e9c91d986d 📝 CONTRIBUTING : fix typo (stash in stead of squash)
Thanks Molkobain ! (https://github.com/Combodo/iTop/pull/371#discussion_r1030759606)
2022-11-24 09:00:32 +01:00
Eric Espie
feafd5e2c9 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
N°5741 - remove use of get_config_parameter and get_module_setting in Twig

# Conflicts:
#	application/twigextension.class.inc.php
#	datamodels/2.x/itop-portal-base/portal/src/Twig/AppExtension.php
#	sources/application/TwigBase/Twig/Extension.php
2022-11-23 17:38:27 +01:00
bdalsass
bdb29fd99a Issue/5074 - Routage, Block UI relations, Links row actions (#369)
* datatable row actions

Below is a sample of extra param to enable feature:

		$aExtraParams['row_actions'] = [
			[
				'tooltip'        => 'remove an element',
				'icon_css_class' => 'fa-minus',
				'js_row_action'   => 'console.log("You clicked the remove button");',
				'confirmation'  => [
					'message'                  => 'UI:ConfirmationMessage',
					'message_row_data'         => "name",
					'remember_choice_pref_key' => 'remove_do_not_show_again',
				],
			],
			[
				'tooltip'        => 'open in new tab',
				'icon_css_class' => 'fa-external-link-square-alt',
				'on_action_js'   => 'window.open("http://localhost/itop-branchs/dev/pages/UI.php?operation=details&class=UserRequest&id=" + aData.id + "&c[menu]=UserRequest%3AOpenRequests");',
			],
			[
				'tooltip'        => 'other actions',
				'icon_css_class' => 'fa-ellipsis-v',
				'on_action_js'   => 'console.log(event);',
			],
		];

* Contrôleur pour la suppression et le détachement de liens
* Block UI pour l'édition des relations
* Block UI pour la visualisation des relations
* Boutons d'actions pour la suppression et le détachement de liens
* Gestion dialogue de confirmation pour les row actions
2022-11-23 16:10:34 +01:00
Molkobain
a0a5037554 Merge remote-tracking branch 'origin/feature/5655-edit-object-in-modal' into develop
# Conflicts:
#	pages/ajax.render.php
2022-11-23 15:59:23 +01:00
Eric Espie
70a6b276ca Merge branch 'issue/5685-UpgradeApereoPHPCas' into support/2.7 2022-11-23 15:58:36 +01:00
Eric Espie
f77361ceb2 N°5685 - Upgrade apereo/phpcas 2022-11-23 15:53:43 +01:00
Eric Espie
75f4751b82 N°5741 - remove use of get_config_parameter in Twig 2022-11-23 15:09:20 +01:00
Eric Espie
6af62c4a50 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-11-23 11:07:09 +01:00
Eric Espie
65b6c0f4ea Fix CI 2022-11-23 11:04:58 +01:00
Eric Espie
c05684945f Fix CI 2022-11-23 10:34:24 +01:00
Eric Espie
6b1c033ec1 Fix CI 2022-11-23 09:54:30 +01:00
Eric Espie
4f14d1fb23 N°4974 - Session rework 2022-11-22 15:38:02 +01:00
odain
0ef5e9d3ff N°5620 - Hide the organization filter with a conf parameter 2022-11-22 13:57:42 +01:00
odain
1c705bdb94 ci: fix ItopDataTestCase CreateUser contactid unset 2022-11-22 13:57:37 +01:00
odain
28a1324d3a ci: adapt impersonate test to any friendlyname output 2022-11-22 13:57:37 +01:00
odain
af51f05c56 ci: add CreateContactlessUser method in test framework 2022-11-22 13:57:37 +01:00
Pierre Goiffon
1a7b3f0631 N°5563 Fix setup crash when notices enabled and invalid edit_mode value 2022-11-22 09:56:31 +01:00
Eric Espie
4ff82f5c12 Fix CI 2022-11-21 09:54:36 +01:00
Eric Espie
e2e08351b0 Fix CI 2022-11-21 09:51:11 +01:00
Pierre Goiffon
d83c45812d N°5405 UpdateXML update tool now do a full file conversion 2022-11-21 09:15:43 +01:00
Pierre Goiffon
6258b97b92 N°5563 Convert datamodels files with new 3.1 conversion methods 2022-11-21 09:15:23 +01:00
Pierre Goiffon
3aab49c372 N°5563 AttributeLinkedSet & LinkedSetIndirect conversions between 3.0 and 3.1 formats 2022-11-21 09:15:17 +01:00
Pierre Goiffon
ecfae75e10 Setup : catch also fatal error during conversion 2022-11-18 20:15:00 +01:00
Pierre Goiffon
f60331e0f9 iTopFormatTest : better info on conversion error 2022-11-18 20:14:59 +01:00
Pierre Goiffon
8f6065d4f4 ♻️ iTopDesignFormatTest : get version directly from expected content 2022-11-18 19:15:56 +01:00
Eric Espie
52c984d5e7 N°4756 - Fix Unit tests 2022-11-18 10:49:59 +01:00
Eric Espie
6585f717c5 N°4756 - Event service initialization 2022-11-16 21:03:01 +01:00
Molkobain
363a1507cf Merge remote-tracking branch 'origin/support/3.0' into develop 2022-11-16 19:06:51 +01:00
Molkobain
8c95bd5a65 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2022-11-16 19:04:21 +01:00
Romain Quetiez
b56f2f56f1 N°5704 - Fix compatibility with PHP <7.3 (HEREDOC syntax) 2022-11-16 17:12:53 +01:00
Eric Espie
0bba9b0fad Merge remote-tracking branch 'origin/support/3.0' into develop 2022-11-16 13:57:07 +01:00
Eric Espie
282d47aed4 N°5727 - REST API/get_related: Seemingly wrong results, when using [impacts, up] with [redundancy: true] 2022-11-16 13:51:38 +01:00
Eric Espie
2f8f0b658c N°5722 - code hardening 2022-11-16 09:40:19 +01:00
Eric Espie
e4884470ad Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2022-11-16 09:38:31 +01:00
Eric Espie
68d44fa981 N°5724 - code hardening 2022-11-16 09:32:47 +01:00
Eric Espie
7e5307bd96 N°4867 - "Twig content not allowed" error 2022-11-16 09:31:42 +01:00
Stephen Abello
75c8738538 Add an event to refresh Datatables 2022-11-15 10:08:29 +01:00
Molkobain
a553616ea2 N°5655 - Introduce auto-routing mechanism for backoffice pages (Part 1) 2022-11-15 08:42:27 +01:00
Molkobain
8c14d36dfe TwigBase: Allow operation param to be in snake case in order to handle/redirect existing operations 2022-11-15 08:42:26 +01:00
Molkobain
4486842169 N°5655 - Align "activity panel" and "preferences" ajax operation code to new convention 2022-11-15 08:42:26 +01:00
Molkobain
f5b216fd9a N°5655 - Refactor object modification logic to a dedicated controller for both page / modal modes 2022-11-15 08:42:26 +01:00
Molkobain
dcdce52608 N°5655 - Add new sanitization filters for routing
* utils::ENUM_SANITIZATION_FILTER_OPERATION filter to enable operation "namespaces" in current operations for better reading
  * utils::ENUM_SANITIZATION_FILTER_ROUTE filter for upcoming auto routing
2022-11-15 08:42:26 +01:00
Molkobain
73139e82cb N°5655 - Switch backoffice controllers' methods to non-static and now extend an abstract controller 2022-11-15 08:42:25 +01:00
Molkobain
36ec455e6d N°5655 - Refactor portal modal dialog helper to global helper for both GUIs 2022-11-15 08:42:25 +01:00
denis.flaven@combodo.com
d3f8e1c472 Revert "N°5619 - Hide newsroom menu when no provider"
This reverts commit 647b669eb9.
2022-11-14 18:28:18 +01:00
denis.flaven@combodo.com
647b669eb9 N°5619 - Hide newsroom menu when no provider 2022-11-14 18:18:10 +01:00
Pierre Goiffon
df3fc8be7f N°5563 XML for new relations UI : constants for AttributeLinkedSet relation_type values 2022-11-14 18:16:24 +01:00
Pierre Goiffon
3191caa700 N°5563 XML for new relations UI : mock methods in AttributeDefinition 2022-11-14 18:10:48 +01:00
Molkobain
9a3324de07 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	setup/modelfactory.class.inc.php
2022-11-08 21:18:11 +01:00
Molkobain
5839d0e8e3 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	test/ItopTestCase.php
2022-11-08 21:14:50 +01:00
DudekArtur
07fc8c1e5b N°5706 - Update polish translations thanks to @DudekArtur ! (#357)
Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2022-11-08 21:06:25 +01:00
Romain Quetiez
cd010afb48 N°5704 - Unit tests on XML assembly (#329)
* Add a complete test suite for XML assembly

* Add a complete test suite for XML assembly

* Dispatched the test of GetDelta into real unit tests

* Add test for GetDelta on a rename operation

* Add comments on a weird case and a case on rename

* Update XML version after rebase from develop to support/2.7

* Fix phpdoc about coverage

* Remove ModelFactory::GetRootDirs and ItopTestCase::RecurseRmDir+CreateTmpDir+RecurseMkDir+RecurseCopy, that were meant to be introduced in iTop 3.0 and have been copied here by mistake, when rebasing the branch from develop to 2.7.0

* Update test/ItopTestCase.php

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

* Update test/setup/ModelFactoryTest.php

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

* Update test/ItopTestCase.php

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

Co-authored-by: Pierre Goiffon <pierre.goiffon@combodo.com>
Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2022-11-08 19:43:07 +01:00
Pierre Goiffon
e14cf23ecb Merge remote-tracking branch 'origin/support/3.0' into develop 2022-11-08 18:14:55 +01:00
Pierre Goiffon
be5a252be7 iTopDesignTestFormat : improve code readability 2022-11-08 18:14:20 +01:00
Pierre Goiffon
974dddbe19 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-11-08 17:29:24 +01:00
Molkobain
5e0698b7f3 Add support for "Ctrl + Enter" and "Meta (Cmd) + Enter" submit on multi-line fields 2022-11-08 17:28:42 +01:00
Pierre Goiffon
073488a7bd Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2022-11-08 17:27:26 +01:00
Lars Kaltefleiter
2dccedf8d7 🐛 navigation menu z-index workaround for safari
Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2022-11-08 17:25:49 +01:00
Pierre Goiffon
0cf8d731bb Rename iTopDesignFormat test class 2022-11-08 15:59:14 +01:00
acognet
3d083fca05 N°5671 - Export data in Excel does not work with XLSX files 2022-11-04 18:11:59 +01:00
Eric Espie
e496513275 cleanup code (php warning) 2022-10-31 15:09:16 +01:00
Eric Espie
e70e9de1c8 N°4756 - restrict readonly mode to events only for CheckToWrite (keep legacy calls unprotected) 2022-10-31 12:15:52 +01:00
Benjamin Dalsass
fcdfd54066 N°4454 - Measuring the use of the queryphrase book 2022-10-25 14:34:42 +02:00
Pierre Goiffon
efdf780c79 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-10-25 11:58:56 +02:00
Pierre Goiffon
4e7df37931 📝 jqueryui.scss : add comment to inform it is deprecated 2022-10-25 11:54:02 +02:00
Benjamin Dalsass
e90335e943 N°4454 - Measuring the use of the queryphrase book 2022-10-25 10:37:43 +02:00
Molkobain
f0bce86e28 N°4765 - Revert unwanted change on ActionEmail::status values tooltip translations 2022-10-24 23:15:41 +02:00
Pierre Goiffon
fac689ecf7 N°5651 Fix JS method GetAbsoluteUrlModulePage() not reporting parameters values
This JS method is legacy and never used with parameters, so we are choosing to fix it only in the develop branch.
2022-10-21 16:19:10 +02:00
Pierre Goiffon
6e8949a880 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-10-20 16:47:38 +02:00
Pierre Goiffon
4b670cfa90 N°5625 Fix crash when opening DocumentFile in ES language
Regression introduced in 3.0.1 with a merge : 67fa156c
The % was removed in 530ec111 but we kept the call to Dict::Format, and the merge restored the % in ES dict

A larger fix will be done later with N°5491
2022-10-20 16:46:37 +02:00
Molkobain
7028b2f76c N°4703 - Fix english translations of "in-person" 2022-10-19 17:24:05 +02:00
Molkobain
a547358be4 N°5270 - Move cURL from optional to mandatory PHP extension as it is required for authent-cas dependency "apereo/phpcas" 2022-10-19 17:22:23 +02:00
Molkobain
ddcff1f8ba Fix typo 2022-10-19 17:06:49 +02:00
Molkobain
1d7c527ea1 Activity panel: Fix compose button opening log picker menu when only 1 log available 2022-10-19 17:06:49 +02:00
Thomas Casteleyn
4baff1b3d1 N°4703 Add Dutch translations to new origins (#352)
* Add Dutch translations

* Update description
2022-10-19 16:51:48 +02:00
Molkobain
9c4f1419b1 N°4703 - Add "chat" / "in person" as possible "origin" value for tickets 2022-10-19 16:51:48 +02:00
Molkobain
848c4ca204 N°4798 - Align attribute "description" type for Service class 2022-10-19 16:31:07 +02:00
Molkobain
e9aa9cc8df N°5550 - Add missing french translation for "Other Transitions" button (#348)
* Fix typo

* N°5550 - Add missing french translation for "Other Transitions" button
2022-10-19 16:29:00 +02:00
acognet
2eadb632df N°5618 - Setup : Compatibility PHP 8.1 2022-10-19 09:21:16 +02:00
acognet
a57056a035 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-10-18 09:18:57 +02:00
acognet
87db88254b N°4517 - PHP 8.1 compatibility - Fix uppercase 2022-10-17 21:34:26 +02:00
acognet
c1dde51404 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-10-17 16:35:19 +02:00
acognet
5ddc006f51 N°4517 - PHP 8.1 compatibility 2022-10-17 16:27:42 +02:00
acognet
1fcb3af4c0 N°5618 - Setup : Compatibility PHP 8.1 2022-10-14 17:09:35 +02:00
acognet
9ccff4f8de Fix comment. filter created only since 3.1. 2022-10-14 09:27:59 +02:00
BenGrenoble
1e0fc4714d Correction of the system tooltip, following discussion with Molkobain 2022-10-13 09:31:09 +02:00
Eric Espie
8fc8342358 Revert default value for AttributeDateTime 2022-10-12 10:28:10 +02:00
Eric Espie
14673ff1f5 Return HTTP 400 when operation is not found (instead of 404 page not found) 2022-10-11 15:24:54 +02:00
Pierre Goiffon
ae95cf37f5 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-10-11 14:29:26 +02:00
Pierre Goiffon
85a72d6a10 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2022-10-11 14:29:07 +02:00
Pierre Goiffon
189ca3c555 🚚 Move visual test file to the dedicated directory 2022-10-11 14:28:44 +02:00
Eric Espie
567f333017 Remove default value for AttributeDateTime 2022-10-10 14:28:55 +02:00
BenGrenoble
acd8944aec Add tooltip on System 2022-10-06 16:01:30 +02:00
Pierre Goiffon
5b1b5b0cc1 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-10-03 15:56:16 +02:00
Pierre Goiffon
c02b36a00c Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2022-10-03 15:56:02 +02:00
Pierre Goiffon
1e1f1f78bf 📝 Backup : more details on check-backup parameters 2022-10-03 14:41:44 +02:00
Pierre Goiffon
1494604740 📝 Backup : move info from wiki to distrib file 2022-10-03 14:35:14 +02:00
Timmy38
30664bc5ec N°4765 fixing a typo 2022-09-30 11:30:42 +02:00
Molkobain
59b20ac1ee Fix typo 2022-09-27 20:14:53 +02:00
Eric Espie
f32f36fc74 N°5551 - System information database size is way off 2022-09-26 11:51:51 +02:00
bdalsass
5157f511fc N°5073 - Implements line actions in a datatable (#337)
* datatable row actions

Below is a sample of extra param to enable feature:

		$aExtraParams['row_actions'] = [
			[
				'tooltip'        => 'add an element',
				'icon_css_class' => 'fa-plus',
				'css_class'      => 'ibo-is-success',
				'level'          => 'secondary',
				'on_action_js'   => 'console.log(aData);',
			],
			[
				'tooltip'        => 'remove an element',
				'icon_css_class' => 'fa-minus',
				'css_class'      => 'ibo-is-danger',
				'level'          => 'secondary',
				'on_action_js'   => 'console.log("You clicked the remove button");',
			],
			[
				'tooltip'        => 'open in new tab',
				'icon_css_class' => 'fa-external-link-square-alt',
				'on_action_js'   => 'window.open("http://localhost/itop-branchs/dev/pages/UI.php?operation=details&class=UserRequest&id=" + aData.id + "&c[menu]=UserRequest%3AOpenRequests");',
			],
			[
				'tooltip'        => 'other actions',
				'icon_css_class' => 'fa-ellipsis-v',
				'on_action_js'   => 'console.log(event);',
			],
		];

* datatable row actions (update)

* datatable row actions (update)

* datatable row actions (add template role)

* datatable row actions (align actions)

* datatable row actions (change template factory make to make standard)

* datatable row actions (use trait to handle row actions)

* datatable row actions (row actions templates)

* datatable row actions (row actions templates)

* datatable row actions (row actions templates)

* datatable row actions (extends to static and form)

* datatable row actions (extends to static and form)

* datatable row actions (code review S)

* datatable row actions (code review S)

* datatable row actions (code review S)

* Update js/dataTables.main.js

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

* Update js/dataTables.main.js

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

* Update sources/Application/UI/Base/Component/DataTable/StaticTable/StaticTable.php

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

* Update templates/base/components/datatable/row-actions/handler.js.twig

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

* datatable row actions (code review M)

* Update js/dataTables.main.js

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

* Update js/dataTables.main.js

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

* Update js/dataTables.main.js

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

* Update sources/Application/UI/Base/Component/DataTable/StaticTable/StaticTable.php

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

* Update sources/Application/UI/Base/Component/DataTable/StaticTable/StaticTable.php

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

* Update sources/Application/UI/Base/Component/DataTable/StaticTable/StaticTable.php

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

* Update js/dataTables.main.js

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

* Update sources/Application/UI/Base/Component/DataTable/DataTableUIBlockFactory.php

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

* Update sources/Application/UI/Base/Component/DataTable/StaticTable/StaticTable.php

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

* Update application/utils.inc.php

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

* datatable row actions (code review M2)

* datatable row actions (code review M3)

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2022-09-26 08:20:28 +02:00
Eric Espie
3196e105a1 N°4756 - small adjustments 2022-09-23 15:10:21 +02:00
Eric Espie
b9d865f881 N°4756 - Fix DBInsert/NoReload call order 2022-09-21 18:08:44 +02:00
Molkobain
2e39a650eb Merge remote-tracking branch 'origin/support/3.0' into develop 2022-09-21 17:48:57 +02:00
Molkobain
c753b57265 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2022-09-21 16:23:42 +02:00
Molkobain
583ab98210 Fix typo 2022-09-21 16:11:24 +02:00
Pierre Goiffon
e4f6a02de6 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	lib/composer/autoload_files.php
#	lib/composer/autoload_real.php
#	lib/composer/autoload_static.php
2022-09-21 14:28:25 +02:00
Pierre Goiffon
a5b5518533 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	core/cmdbsource.class.inc.php
#	test/core/CMDBSource/TransactionsTest.php
2022-09-21 14:21:28 +02:00
Pierre Goiffon
88d743b1cc N°5538 Make PHPUnit test fail if transaction opened but not closed 2022-09-21 14:05:27 +02:00
Pierre Goiffon
7ac4bc95bb ItopDataTestCase : improve log message 2022-09-21 11:51:07 +02:00
Eric Espie
fac455da48 N°4756 - Global event listeners 2022-09-21 10:34:38 +02:00
odain
b01627f39d Merge branch 'saas/3.0' into develop 2022-09-20 16:04:55 +02:00
odain-cbd
766c9f0e7e N°5305 - CSV import ergonomy PR (#332)
Reworked UI feedbacks on following attributes:
- enum
- date
- external key
2022-09-20 16:00:33 +02:00
Eric Espie
d1414a3f34 N°4756 - revert events for datamodel/2.x objects for backward compatibility 2022-09-20 15:35:59 +02:00
Molkobain
6386a302b2 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	composer.json
2022-09-20 13:44:11 +02:00
Molkobain
7071712a0a N°5535 - Fix PHP max version to 8.1 in composer for iTop 3.0.2+ 2022-09-20 13:42:45 +02:00
Molkobain
31454b2946 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	core/config.class.inc.php
#	setup/setuputils.class.inc.php
2022-09-20 13:27:20 +02:00
Molkobain
e55ac6002a Increase ITOP_VERSION to 3.0.3-dev 2022-09-20 13:22:18 +02:00
Molkobain
e9c6549847 N°5535 - Fix PHP not validated version to 8.1 in iTop 3.0.2+ 2022-09-20 13:17:59 +02:00
Eric Espie
4aad555649 N°4756 - Fix unit tests, 2022-09-20 12:18:53 +02:00
Eric Espie
93ee565d29 N°4756 - Fix unit tests 2022-09-19 16:59:51 +02:00
Eric Espie
6c097a128b N°4756 - Fix unit tests 2022-09-19 16:49:40 +02:00
Eric Espie
eea3f78cec N°4756 - Fix unit tests 2022-09-19 16:28:13 +02:00
Eric Espie
6c4caf64c8 N°4756 - Fix unit tests 2022-09-19 16:26:02 +02:00
Eric Espie
88f0013330 N°4756 - Fix unit tests 2022-09-19 16:09:02 +02:00
Eric Espie
aa31da34e5 N°5389 - Email Notification templates with AttributeLinkedSetIndirect failed 2022-09-19 15:30:24 +02:00
Eric Espie
71464f6d0e Merge branch 'develop' into feature/faf_event_service
# Conflicts:
#	core/cmdbobject.class.inc.php
#	core/dbobject.class.php
#	core/designdocument.class.inc.php
#	lib/composer/autoload_files.php
#	lib/composer/autoload_static.php
2022-09-19 09:45:08 +02:00
Pierre Goiffon
e5a9648206 📝 CONTRIBUTING : keep stickers images history in directory 2022-09-14 18:02:16 +02:00
Molkobain
abf2120097 Add 3.0.2-1 to mermaid graph 2022-09-14 17:14:48 +02:00
Pierre Goiffon
2f5eaa2dfd Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	sources/Core/Email/EmailSwiftMailer.php
2022-09-14 15:36:14 +02:00
Pierre Goiffon
091aaac55e Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2022-09-14 15:34:36 +02:00
Pierre Goiffon
d431811725 N°4947 Fix Email always picking "production" env config file (#331)
Note that the code was duplicated in both Email* impl, this is refactored : LoadConfig and m_oConfig are pulled up in Email, and SetRecipientFrom() calls are also refactored in Email
2022-09-14 15:33:48 +02:00
Pierre Goiffon
b161a863df Merge remote-tracking branch 'origin/support/3.0' into develop 2022-09-14 12:17:57 +02:00
Pierre Goiffon
203cf17c67 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	setup/setuputils.class.inc.php
#	setup/wizardsteps.class.inc.php
2022-09-14 12:16:35 +02:00
acognet
cea75e07f2 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-09-14 11:01:30 +02:00
Pierre Goiffon
7d1893a2b8 Add @RohacRichard to contributors list 🙌 (#333) 2022-09-14 10:52:20 +02:00
xtophe38
7512f721e9 Setup wizard : use the ITOP_APPLICATION constant instead of hardcoded "iTop" string (#335)
* Update wizardsteps.class.inc.php

* Done as requested

* Fix typo for better readability/genericity

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2022-09-13 20:11:38 +02:00
Molkobain
b32d82f11e Add @eduardomozart to contributors list 🙌 2022-09-13 19:35:30 +02:00
Pierre Goiffon
bdfe3a3b35 N°5235 Tmp dir setup check is now non blocking (woops previous commit was incomplete) (#301) 2022-09-13 18:22:29 +02:00
Pierre Goiffon
5cf391c3bb N°5235 - Add non blocking setup check : is tmp dir is writable (#301) 2022-09-13 18:20:35 +02:00
acognet
1ee5432b96 N°5508 - PHP 8 and PHP 8.1 : Add compatibility Alarm Console 2022-09-13 18:04:28 +02:00
Eduardo Mozart de Oliveira
9f963686b5 N°4765 - Update brazilian translations thanks to @eduardomozart (#268)
Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2022-09-13 17:20:53 +02:00
Richard Roháč
56f8dd2942 🐛 N°5522 - Fix session storage (breadcrumbs) not cleared on logout (#333)
Co-authored-by: richard.rohac <richard.rohac@elso-systems.com>
Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2022-09-13 17:15:54 +02:00
Eric Espie
e4e4365cce Merge remote-tracking branch 'origin/support/3.0' into develop 2022-09-13 12:18:09 +02:00
Eric Espie
425362f515 N°5510 - Add unit test 2022-09-13 12:14:04 +02:00
Anne-Catherine
b061c29a5b N°2250 - DisplayObject with ormLinkSet ignore Removed (#309) 2022-09-13 10:33:12 +02:00
Eric Espie
5d9e58f194 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-09-12 11:48:44 +02:00
Eric Espie
d50fe1573c Merge branch 'support/3.0.2' into support/3.0
# Conflicts:
#	application/loginbasic.class.inc.php
#	application/loginexternal.class.inc.php
#	application/loginform.class.inc.php
#	application/loginurl.class.inc.php
2022-09-12 11:00:07 +02:00
Eric Espie
2a064fd97d N°5394 - use session for the FSM 2022-09-12 10:56:25 +02:00
Eric Espie
e9a3974b98 N°5394 - revert 2.7 merge 2022-09-12 10:54:55 +02:00
Eric Espie
f02bc529fe Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	application/loginbasic.class.inc.php
#	application/loginexternal.class.inc.php
#	application/loginform.class.inc.php
#	application/loginurl.class.inc.php
2022-09-12 09:55:01 +02:00
Eric Espie
4c1df9927d N°5394 - use session for the FSM 2022-09-12 09:45:30 +02:00
Eric Espie
ca3c0cb163 N°5510 - Exception "$amount: Expected 5% to be within 0% and 1%" when compiling a theme 2022-09-09 09:20:52 +02:00
Pierre Goiffon
e6821f1d16 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-09-08 18:53:20 +02:00
Pierre Goiffon
56e7992d4a Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	test/ItopTestCase.php
2022-09-08 18:25:15 +02:00
Pierre Goiffon
74003f12c1 N°5513 Remove test name debug info 2022-09-08 18:20:52 +02:00
Pierre Goiffon
3bc12b0434 N°5513 Improve PHPUnit output to stdout
Will allow to see progress when looking at the Jenkins output
2022-09-08 15:11:02 +02:00
Eric Espie
44c0e236b0 N°5509 - User Provisioning Issue 2022-09-08 09:58:29 +02:00
Eric Espie
320eb83c10 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-09-07 10:48:45 +02:00
Eric Espie
cb2a597267 Fix notice on empty case log 2022-09-07 10:33:31 +02:00
Eric Espie
7621a0fd31 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-09-05 12:14:57 +02:00
Eric Espie
57bb0160c4 Merge branch 'support/3.0.2' into support/3.0 2022-09-05 12:08:53 +02:00
Eric Espie
6c4cd6c99c constants missing if no ticket in DM (vanilla) 2022-09-02 13:57:36 +02:00
Eric Espie
6190429f51 N°5394 - Rework session start 2022-09-01 16:08:16 +02:00
Benjamin Dalsass
2b84c0384d N°5085 - Move menu is impossible - Error after compilation 2022-08-31 15:31:00 +02:00
Molkobain
146ed0f6a6 N°3390 - Update comment 2022-08-30 20:18:30 +02:00
Molkobain
9826b40ec6 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	approot.inc.php
#	datamodels/2.x/authent-cas/module.authent-cas.php
#	datamodels/2.x/authent-external/module.authent-external.php
#	datamodels/2.x/authent-ldap/module.authent-ldap.php
#	datamodels/2.x/authent-local/module.authent-local.php
#	datamodels/2.x/combodo-backoffice-darkmoon-theme/module.combodo-backoffice-darkmoon-theme.php
#	datamodels/2.x/combodo-db-tools/module.combodo-db-tools.php
#	datamodels/2.x/itop-attachments/module.itop-attachments.php
#	datamodels/2.x/itop-backup/module.itop-backup.php
#	datamodels/2.x/itop-bridge-cmdb-ticket/module.itop-bridge-cmdb-ticket.php
#	datamodels/2.x/itop-bridge-virtualization-storage/module.itop-bridge-virtualization-storage.php
#	datamodels/2.x/itop-change-mgmt-itil/module.itop-change-mgmt-itil.php
#	datamodels/2.x/itop-change-mgmt/module.itop-change-mgmt.php
#	datamodels/2.x/itop-config-mgmt/module.itop-config-mgmt.php
#	datamodels/2.x/itop-config/module.itop-config.php
#	datamodels/2.x/itop-core-update/module.itop-core-update.php
#	datamodels/2.x/itop-datacenter-mgmt/module.itop-datacenter-mgmt.php
#	datamodels/2.x/itop-endusers-devices/module.itop-endusers-devices.php
#	datamodels/2.x/itop-faq-light/module.itop-faq-light.php
#	datamodels/2.x/itop-files-information/module.itop-files-information.php
#	datamodels/2.x/itop-full-itil/module.itop-full-itil.php
#	datamodels/2.x/itop-hub-connector/module.itop-hub-connector.php
#	datamodels/2.x/itop-incident-mgmt-itil/module.itop-incident-mgmt-itil.php
#	datamodels/2.x/itop-knownerror-mgmt/module.itop-knownerror-mgmt.php
#	datamodels/2.x/itop-oauth-client/module.itop-oauth-client.php
#	datamodels/2.x/itop-portal-base/module.itop-portal-base.php
#	datamodels/2.x/itop-portal/module.itop-portal.php
#	datamodels/2.x/itop-problem-mgmt/module.itop-problem-mgmt.php
#	datamodels/2.x/itop-profiles-itil/module.itop-profiles-itil.php
#	datamodels/2.x/itop-request-mgmt-itil/module.itop-request-mgmt-itil.php
#	datamodels/2.x/itop-request-mgmt/module.itop-request-mgmt.php
#	datamodels/2.x/itop-service-mgmt-provider/module.itop-service-mgmt-provider.php
#	datamodels/2.x/itop-service-mgmt/module.itop-service-mgmt.php
#	datamodels/2.x/itop-sla-computation/module.itop-sla-computation.php
#	datamodels/2.x/itop-storage-mgmt/module.itop-storage-mgmt.php
#	datamodels/2.x/itop-structure/module.itop-structure.php
#	datamodels/2.x/itop-themes-compat/module.itop-themes-compat.php
#	datamodels/2.x/itop-tickets/module.itop-tickets.php
#	datamodels/2.x/itop-virtualization-mgmt/module.itop-virtualization-mgmt.php
#	datamodels/2.x/itop-welcome-itil/module.itop-welcome-itil.php
#	datamodels/2.x/version.xml
2022-08-30 17:53:13 +02:00
Molkobain
bdda29ef6a Merge remote-tracking branch 'origin/support/3.0.2' into support/3.0 2022-08-30 17:46:25 +02:00
Benjamin Dalsass
b154952869 N°3390 - Upgrade from Symfony 3.4 to Symfony 5.4 2022-08-30 14:36:26 +02:00
Pierre Goiffon
ef07f8366d Merge remote-tracking branch 'origin/support/3.0' into develop 2022-08-29 13:50:34 +02:00
Pierre Goiffon
9c57b0b1b7 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2022-08-29 12:33:06 +02:00
Pierre Goiffon
02a0969b53 N°5414 Fix undefined constant error in notification with wrong placeholder
Fix regression introduced in 33c2168 (#282)
2022-08-29 12:31:45 +02:00
Molkobain
6e3ff0e429 Update iTop version to 3.0.2 2022-08-29 09:40:47 +02:00
Benjamin Dalsass
9a9707e15c N°4517 - PHP 8.1 compatibility: Fix deprecated call str_replace with null value 2022-08-25 11:52:11 +02:00
Stephen Abello
bc7749602d Merge branch 'support/3.0.2' into support/3.0
# Conflicts:
#	setup/setup.js
2022-08-24 16:46:16 +02:00
Stephen Abello
14facb4d6c N°5462 Add a setup check to verify if directory-level configuration files (.htaccess and web.config) are used by the server 2022-08-24 16:44:11 +02:00
Stephen Abello
7c6cc23aa8 Merge branch 'support/2.7' into support/3.0
# Conflicts:
#	setup/setup.js
2022-08-24 16:40:18 +02:00
Stephen Abello
d78a25ee4e N°5462 Add a setup check to verify if directory-level configuration files (.htaccess and web.config) are used by the server 2022-08-24 16:33:54 +02:00
Pierre Goiffon
06c3e295d6 Fix iTopXmlVersionIntegrationTest
* remove annotations for data tests : we are only comparing constants
* remove itop-community group : this test can be run whatever target was used to build
* remove wrong `@covers` annotation
2022-08-24 14:54:02 +02:00
Pierre Goiffon
6f438d52b2 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	test/integration/iTopModulesPhpVersionChecklistTest.php
2022-08-24 14:46:55 +02:00
Pierre Goiffon
7a6a3d1ac0 Integration tests : move and comment itop-community group 2022-08-24 14:41:32 +02:00
odain
f923ac879f ci: tag some tests with addition annotations to ease exclusion/inclusion mechanism 2022-08-24 12:07:04 +02:00
odain
0b46ab9e48 ci: add phpunit defaultProfiles annotation + tag some tests with addition annotations to ease exclusion/inclusion mechanism 2022-08-24 11:02:11 +02:00
Molkobain
bdf11e32a7 N°5318 - Security hardening 2022-08-24 10:47:40 +02:00
Molkobain
bbb5b86864 N°5122 - Minor libs update according to new PHP min version 2022-08-23 11:26:47 +02:00
Molkobain
7b60c9c71a Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	composer.json
#	composer.lock
#	lib/composer/installed.json
#	lib/composer/installed.php
#	lib/twig/twig/.travis.yml
#	lib/twig/twig/CHANGELOG
#	lib/twig/twig/composer.json
#	lib/twig/twig/lib/Twig/Loader/String.php
#	lib/twig/twig/src/Environment.php
#	lib/twig/twig/src/ExpressionParser.php
#	lib/twig/twig/src/Extension/AbstractExtension.php
#	lib/twig/twig/src/Extension/CoreExtension.php
#	lib/twig/twig/src/Extension/ProfilerExtension.php
#	lib/twig/twig/src/Loader/ArrayLoader.php
#	lib/twig/twig/src/Loader/ChainLoader.php
#	lib/twig/twig/src/Loader/FilesystemLoader.php
#	lib/twig/twig/src/Node/EmbedNode.php
#	lib/twig/twig/src/Node/Expression/BlockReferenceExpression.php
#	lib/twig/twig/src/Node/Expression/Test/DefinedTest.php
#	lib/twig/twig/src/Node/Expression/TestExpression.php
#	lib/twig/twig/src/Node/ForNode.php
#	lib/twig/twig/src/Node/IfNode.php
#	lib/twig/twig/src/Node/IncludeNode.php
#	lib/twig/twig/src/Node/ModuleNode.php
#	lib/twig/twig/src/Node/Node.php
#	lib/twig/twig/src/Node/WithNode.php
#	lib/twig/twig/src/Template.php
#	lib/twig/twig/src/TokenParser/ApplyTokenParser.php
2022-08-23 10:38:09 +02:00
Molkobain
2caf3e2217 Merge remote-tracking branch 'origin/support/3.0.2' into support/3.0 2022-08-23 10:27:59 +02:00
Molkobain
1441b8a1d2 N°5318 - Fix bad merge of the coreexception.class.inc.php file 2022-08-23 10:01:51 +02:00
Stephen Abello
b1bc2cec1b N°5138 Fix tooltips flickering in bulk modify when it contains hyperlinks 2022-08-22 16:59:24 +02:00
Molkobain
e280f99996 N°5437 - PHP 8.0: Fix deprecated PHP notice in TWIG lib 2022-08-22 16:43:38 +02:00
Pierre Goiffon
2f90b8e6a6 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-08-22 09:04:39 +02:00
acognet
d33bd88832 N°5428 - Request template: autocomplete field can not be a master field 2022-08-19 15:06:38 +02:00
Pierre Goiffon
a92b1971c0 N°5423 Fix "unexpected value" error on \CMDBChangeOpSetAttributeURL.newvalue for AttributeUrl with custom patterns 2022-08-18 14:48:55 +02:00
Molkobain
428827ed91 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-08-18 09:26:01 +02:00
Molkobain
0efaf47325 N°4910 - Improve comment 2022-08-18 09:25:03 +02:00
Pierre Goiffon
a31451d5af Merge remote-tracking branch 'origin/support/3.0' into develop 2022-08-17 14:29:49 +02:00
Pierre Goiffon
a8f1b1d9d8 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	core/action.class.inc.php
2022-08-17 14:29:27 +02:00
Pierre Goiffon
6b32be0899 N°5216 Fix invalid message-id when sending notification using cron on system with a specific locale set (#297)
The timestamp used was indeed locale dependent.
This commit fixes this behavior by removing the locale dependency using a better printf format (see https://www.php.net/manual/fr/function.sprintf.php)
2022-08-17 14:11:32 +02:00
Pierre Goiffon
33c2168af2 🔊 Adds a debug log for invalid placeholders (#282)
This adds a debug log when a placeholder cannot be replaced.
Before the placeholder was just not replaced.
Now we can enable a debug log on the LogChannels::NOTIFICATION channel.
2022-08-17 14:09:59 +02:00
Molkobain
99f75111ce N°4517 - PHP 8.1: Fix str_replace() called with null value 2022-08-16 19:03:30 +02:00
Molkobain
a2c6b08cf4 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	datamodels/2.x/itop-config-mgmt/module.itop-config-mgmt.php
2022-08-16 17:52:03 +02:00
Molkobain
efd2fbb19a Fix module version after wrong merge 2022-08-16 17:49:23 +02:00
Molkobain
25af155113 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	datamodels/2.x/itop-config-mgmt/module.itop-config-mgmt.php
2022-08-16 17:38:10 +02:00
Molkobain
c8b82e6e48 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	approot.inc.php
#	css/css-variables.scss
#	datamodels/2.x/authent-cas/module.authent-cas.php
#	datamodels/2.x/authent-external/module.authent-external.php
#	datamodels/2.x/authent-ldap/module.authent-ldap.php
#	datamodels/2.x/authent-local/module.authent-local.php
#	datamodels/2.x/combodo-db-tools/module.combodo-db-tools.php
#	datamodels/2.x/itop-attachments/module.itop-attachments.php
#	datamodels/2.x/itop-backup/module.itop-backup.php
#	datamodels/2.x/itop-bridge-virtualization-storage/module.itop-bridge-virtualization-storage.php
#	datamodels/2.x/itop-change-mgmt-itil/module.itop-change-mgmt-itil.php
#	datamodels/2.x/itop-change-mgmt/module.itop-change-mgmt.php
#	datamodels/2.x/itop-config-mgmt/module.itop-config-mgmt.php
#	datamodels/2.x/itop-config/module.itop-config.php
#	datamodels/2.x/itop-core-update/module.itop-core-update.php
#	datamodels/2.x/itop-datacenter-mgmt/module.itop-datacenter-mgmt.php
#	datamodels/2.x/itop-endusers-devices/module.itop-endusers-devices.php
#	datamodels/2.x/itop-files-information/module.itop-files-information.php
#	datamodels/2.x/itop-full-itil/module.itop-full-itil.php
#	datamodels/2.x/itop-hub-connector/module.itop-hub-connector.php
#	datamodels/2.x/itop-incident-mgmt-itil/module.itop-incident-mgmt-itil.php
#	datamodels/2.x/itop-knownerror-mgmt/module.itop-knownerror-mgmt.php
#	datamodels/2.x/itop-oauth-client/module.itop-oauth-client.php
#	datamodels/2.x/itop-portal-base/module.itop-portal-base.php
#	datamodels/2.x/itop-portal/module.itop-portal.php
#	datamodels/2.x/itop-problem-mgmt/module.itop-problem-mgmt.php
#	datamodels/2.x/itop-profiles-itil/module.itop-profiles-itil.php
#	datamodels/2.x/itop-request-mgmt-itil/module.itop-request-mgmt-itil.php
#	datamodels/2.x/itop-request-mgmt/module.itop-request-mgmt.php
#	datamodels/2.x/itop-service-mgmt-provider/module.itop-service-mgmt-provider.php
#	datamodels/2.x/itop-service-mgmt/module.itop-service-mgmt.php
#	datamodels/2.x/itop-sla-computation/module.itop-sla-computation.php
#	datamodels/2.x/itop-storage-mgmt/module.itop-storage-mgmt.php
#	datamodels/2.x/itop-tickets/module.itop-tickets.php
#	datamodels/2.x/itop-virtualization-mgmt/module.itop-virtualization-mgmt.php
#	datamodels/2.x/itop-welcome-itil/module.itop-welcome-itil.php
#	datamodels/2.x/version.xml
2022-08-16 17:35:00 +02:00
Lars Kaltefleiter
ae021064a4 🌐 Update German translations for oauth-client (#319) 2022-08-16 17:02:37 +02:00
Pierre Goiffon
d5917299fc N°5410 Fix PHP notice after removing autoloader 2022-08-16 16:58:58 +02:00
Molkobain
25103b9f0b Merge remote-tracking branch 'origin/support/3.0' into develop 2022-08-16 14:35:39 +02:00
Molkobain
c5d5379c49 N°5408 - Mentions: Fix empty results for class with no image attribute 2022-08-16 14:21:28 +02:00
Molkobain
5442768229 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-08-16 13:47:00 +02:00
Molkobain
83b2096d2d N°5407 - Mentions: Fix RegExp wildcard not usable as marker 2022-08-16 13:43:51 +02:00
Molkobain
8f0a62c1c9 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-08-16 12:17:23 +02:00
Molkobain
c8cb64db24 N°4739 - Remove precompiled themes unit test as they are no longer used since the introduction of DM classes style SCSS 2022-08-16 11:48:38 +02:00
Benjamin Dalsass
0a61169326 Update version to next release 2.7.8 2022-08-16 09:47:46 +02:00
Molkobain
f70073cf3e N°3979 - Fix typo 2022-08-16 09:31:56 +02:00
Molkobain
fc9ac1b441 N°4739 - Add semantic on state for user classes
* Add new section in the backoffice SCSS structure for PHP classes of the DM that are in the core (not a module) and can't be styled via XML.
2022-08-14 21:35:56 +02:00
acognet
02d5f8560f Merge remote-tracking branch 'origin/support/3.0' into develop 2022-08-12 18:26:00 +02:00
Anne-Catherine
47becb3be8 N°5024 - Missing result in search widget for external key (#327)
* N°5024 - Missing result in search widget for external key
2022-08-12 18:23:29 +02:00
acognet
c94e24c0ff Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	application/cmdbabstract.class.inc.php
2022-08-12 18:17:00 +02:00
acognet
7320005c08 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	application/cmdbabstract.class.inc.php
#	core/coreexception.class.inc.php
#	core/dbobject.class.php
2022-08-12 18:13:42 +02:00
Anne-Catherine
d7e5705520 N°5318 - Fix DBObject::CheckValue() messages being HTML encoded when not necessary (#326)
* Rollback N°4898 - Security fix

* N°5318 - security fix
2022-08-12 17:50:14 +02:00
Anne-Catherine
bacdd63dd4 N°3979 - Handle initial values on dependent fields (#325)
N°3979 - Handle initial values on dependent fields
2022-08-12 17:48:53 +02:00
Molkobain
9438d063cd Merge remote-tracking branch 'origin/support/3.0' into develop 2022-08-12 14:59:38 +02:00
Molkobain
b91ab8940e N°4918 - Fix "other tabs" menu displayed behind some elements 2022-08-12 14:59:06 +02:00
Stephen Abello
9bf65da420 Merge branch 'support/2.7' into support/3.0 2022-08-12 11:35:47 +02:00
Stephen Abello
35a8b501c9 N°5393 Security hardening 2022-08-12 11:33:55 +02:00
Molkobain
bb948fdd1b Merge remote-tracking branch 'origin/support/3.0' into develop 2022-08-12 11:15:30 +02:00
Molkobain
8e7aef17c6 N°4903 - Fix dynamic "app_root_url" conf. param. not used properly for the app. icon 2022-08-12 11:11:55 +02:00
Molkobain
24f2416427 Navigation menu: Fix duplicated conf. property code usage 2022-08-12 11:11:55 +02:00
Eric Espie
6a384b0405 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-08-12 10:51:46 +02:00
Eric Espie
cc6cf79835 N°5389 - Email Notification templates with AttributeLinkedSetIndirect failed 2022-08-12 10:37:43 +02:00
Benjamin Dalsass
df6d459bb0 Symfony 5.4 migration - missing macro import in login template 2022-08-12 10:21:07 +02:00
Stephen Abello
f10e9c2d64 N°5393 Security hardening 2022-08-12 09:54:35 +02:00
Stephen Abello
bd97d9c7ca Replace OAuth object subtitle icon with a solid icon for more harmony 2022-08-12 09:53:24 +02:00
Stephen Abello
94b9fda354 Remove OAuth object subtitle tooltip as it's always empty 2022-08-12 09:53:24 +02:00
Eric Espie
37cb882507 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-08-11 17:18:10 +02:00
Eric Espie
7a7498537f N°5135 - Impersonate: history of changes versus log entries - Fix typo 2022-08-11 17:17:29 +02:00
acognet
ebab664c1a Merge remote-tracking branch 'origin/support/3.0' into develop 2022-08-11 16:54:43 +02:00
acognet
b6e22e47ca N°4910 - Adding a regexp on an existing field with value not complient, block the object modification 2022-08-11 16:43:36 +02:00
jbostoen
d17e399a5f 🌐 N°5397 - Updated Dutch translations (#262)
Co-authored-by: Thomas Casteleyn <thomas.casteleyn@me.com>
2022-08-11 14:07:51 +02:00
Molkobain
48742f334f N°5198 - Add comment to clarify usage of array_replace 2022-08-11 11:38:53 +02:00
Eric Espie
a577799fee Merge remote-tracking branch 'origin/support/3.0' into develop 2022-08-11 11:33:59 +02:00
odain-cbd
ec01ab73aa N°5135 - Impersonate: history of changes versus log entries (#290)
* N°5135 - Impersonate: history of changes versus log entries

* N°5135 - enrich impersonated changelog userinfo with its previous value when overrided by an extension (ie approvalbase)

* N°5135 - indicate impersonation inside changelogs in both caselogs and activity

* N°5135 - Impersonate: history of changes versus log entries add specific username for caselogs

Co-authored-by: Eric Espie <eric.espie@combodo.com>
2022-08-11 11:12:07 +02:00
acognet
26b779cd0e Merge remote-tracking branch 'origin/support/3.0' into develop 2022-08-10 17:51:35 +02:00
acognet
931bafe380 N°5198 - Inconsistent behavior in selection of combobox with more than 150 results 2022-08-10 17:49:40 +02:00
Stephen Abello
5164976b76 N°5050 * Revert changes made in 3b83d3f2 in english dictionary 🤦
* Move it to Spanish dictionary
2022-08-10 15:38:42 +02:00
Eric Espie
7a9e16766f Merge remote-tracking branch 'origin/support/3.0' into develop 2022-08-10 15:28:13 +02:00
Eric Espie
5854eefcce N°5395 - Errors from OAuth servers for email are not well handled (use 3.0 constants) 2022-08-10 15:27:25 +02:00
Molkobain
706b81b929 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-08-10 15:16:09 +02:00
Molkobain
5845972941 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2022-08-10 15:14:27 +02:00
Eric Espie
8fab14f072 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-08-10 15:01:54 +02:00
Eric Espie
7f7538ed58 N°5395 - Errors from OAuth servers for email are not well handled 2022-08-10 14:59:32 +02:00
Eric Espie
8fa616f440 N°5395 - Errors from OAuth servers for email are not well handled 2022-08-10 14:57:26 +02:00
Molkobain
08387e2814 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-08-10 14:54:23 +02:00
Molkobain
62aaaabd7e Update visual test comment 2022-08-10 14:53:42 +02:00
Stephen Abello
1f3e91efae Merge branch 'support/3.0' into develop 2022-08-10 14:09:50 +02:00
Stephen Abello
b3750e46cf Stylize datatables before widget is loaded in order to avoid flickering 2022-08-10 14:07:39 +02:00
Stephen Abello
b43b2e9741 Remove padding between Dashlet/Preferences datatables and their parent panel 2022-08-10 14:07:38 +02:00
Stephen Abello
77e9eaba00 Add highlighted rows to RenderAllUiBlocks 2022-08-10 14:07:38 +02:00
Stephen Abello
3d593faad8 Fix datatables semantic colors not using sematinc variables 2022-08-10 14:07:38 +02:00
Stephen Abello
118622493f N°5050 Revert entry deleted in 3b83d3f2 2022-08-10 14:07:38 +02:00
Molkobain
2aacb58e7f Merge remote-tracking branch 'origin/support/3.0' into develop 2022-08-09 17:55:27 +02:00
Molkobain
e44523e623 N°5343 - Avoid crash when 1 level menu group is not actually a MenuGroup (#312) 2022-08-09 17:45:31 +02:00
Eric Espie
cc7dceed1a Merge remote-tracking branch 'origin/support/3.0' into develop 2022-08-09 17:42:23 +02:00
Eric Espié
69749a5cbe N°5375 - XML custo on Semantic field with hierarchy, breaks at compilation (#323) 2022-08-09 17:37:01 +02:00
Molkobain
43b49034df Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2022-08-09 17:33:18 +02:00
Molkobain
5829e698da Fix typo 2022-08-09 17:19:21 +02:00
Eric Espie
8d8cefe948 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-08-09 17:11:34 +02:00
Eric Espié
d2041c0334 N°5009 - Invalid XML for class Attachment (icon node) (#324)
N°5009 - Invalid XML for class Attachment (icon node)
2022-08-09 16:55:50 +02:00
Stephen Abello
f9487e55d5 N°5088 Fix audit displaying only 10 rules per category 2022-08-09 15:34:46 +02:00
Eric Espie
83b4f2bf34 Fix autoloader (directories name) 2022-08-09 14:48:59 +02:00
Stephen Abello
b8ecb68ad7 N°5192 Make highlighted row more visible by adding a border to the first cell 2022-08-09 14:27:09 +02:00
Stephen Abello
3b83d3f209 N°5050 Update Spanish translations (thanks to Miguel Turrubiates!) 2022-08-09 14:27:09 +02:00
Eric Espie
11d9435f08 Fix autoloader 2022-08-09 11:53:18 +02:00
Eric Espie
952bceb3c3 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	composer.json
#	core/config.class.inc.php
#	core/legacy/dbobjectsearchlegacy.class.php
#	core/legacy/querybuildercontextlegacy.class.inc.php
#	core/legacy/querybuilderexpressionslegacy.class.inc.php
#	lib/composer/autoload_files.php
#	lib/composer/autoload_static.php
2022-08-09 10:49:40 +02:00
Eric Espie
029e6114ad N°4715 - Remove deprecated legacy SQL build 2022-08-09 10:41:46 +02:00
Eric Espie
4b0c94d609 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-08-09 09:27:49 +02:00
Eric Espié
de5fee8876 N°4792 - memory limit is reached when an AttributeExternalKey is pointing to a class with an AttributeBlob (#322)
N°4792 - memory limit is reached when an AttributeExternalKey is poin…
2022-08-09 09:17:15 +02:00
Molkobain
02afa2f19b N°5270 - Move "apereo/phpcas" lib from "authent-cas" module to core composer.json (#320)
* N°5270 - Move "apereo/phpcas" lib from "authent-cas" module to core composer.json

* N°5270 - Rebase on develop branch
2022-08-08 16:44:42 +02:00
Stephen Abello
8cdc251378 Merge branch 'support/3.0' into develop 2022-08-08 16:42:24 +02:00
Molkobain
80fa4ec71f Code format 2022-08-08 16:30:46 +02:00
Stephen Abello
b1432ef1c6 N°4927 Fix date picker widget initialized visible 2022-08-08 15:07:02 +02:00
Stephen Abello
0599341515 N°4975 Security hardening 2022-08-08 15:07:02 +02:00
Stephen Abello
8e840d4529 N°5138 N°4425 Fix not being able to click on hyperlinks in tooltips 2022-08-08 15:07:01 +02:00
Stephen Abello
b4880beb5b N°5192 Fix HILIGHT_CLASS_OK not displaying green rows since iTop 3.0 2022-08-08 15:07:01 +02:00
Molkobain
57c36d0e51 N°5122 - Update libs to new PHP requirements 2022-08-08 14:10:26 +02:00
Molkobain
30021d9236 N°5122 - Change PHP min. version to 7.4.0 2022-08-08 13:59:24 +02:00
Molkobain
95c43adc4e Merge remote-tracking branch 'origin/support/3.0' into develop 2022-08-08 12:00:16 +02:00
Molkobain
c6b88c4db0 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	core/dbobject.class.php
2022-08-08 11:57:12 +02:00
Molkobain
df347b90e5 N°5383 - Declare DBObject::EnumTransitions() as "overwritable hook" 2022-08-08 11:53:46 +02:00
Molkobain
47683f3bd4 N°5033 - Add model file to 'itop-bridge-virtualization-storage' module to avoid compilation crash when lnkVirtualDeviceToVolume class is removed 2022-08-08 08:58:34 +02:00
Molkobain
8357e5b8d0 Fix typo 2022-08-05 19:53:12 +02:00
Molkobain
02af3cf197 N°4838 - Fix comment 2022-08-05 19:45:46 +02:00
Molkobain
1655a377f0 N°4838 - Redirect to login page automatically from logoff screen 2022-08-04 22:56:42 +02:00
acognet
aad4a5e20c Merge remote-tracking branch 'origin/support/3.0' into develop 2022-08-04 16:43:20 +02:00
acognet
b704e0d131 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2022-08-04 16:38:47 +02:00
acognet
bb861aa262 N°3024 - Archiving Service Families (or any class with no child) with combodo-archive-manual 2022-08-04 16:26:21 +02:00
acognet
f9ac07830e Fix translation 2022-08-04 16:26:01 +02:00
Molkobain
78a29ab3ca N°5108 - Rename variable 2022-08-04 10:11:35 +02:00
Stephen Abello
1ab35c68c8 Fix typo in datetime input autocomplete attribute 2022-08-03 14:47:01 +02:00
Molkobain
79021fba1f Add @rudnerbjoern to contributors list, thanks! 🙌 2022-08-03 13:32:15 +02:00
Molkobain
cf21025cd7 N°3390 - Cleanup "debug" param remains by moving logs to debug level / portal channel 2022-08-03 10:51:32 +02:00
Molkobain
b718d40eb9 N°4517 - PHP 8.1: Replace deprecated FILTER_SANITIZE_STRING constant with FILTER_SANITIZE_SPECIAL_CHARS 2022-08-03 10:37:44 +02:00
Molkobain
ef81bdb1e1 N°4517 - PHP 8.1: Fix return type for classes implementing ArrayAccess
Return type cannot be set to mixed as the code need to be compatible with PHP 7.2+
2022-08-03 10:37:02 +02:00
Molkobain
784f568575 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-08-03 10:35:25 +02:00
Molkobain
f1acc956f4 N°4517 - PHP 8.1: Fix return type for class implementing IteratorAggregate 2022-08-03 10:33:24 +02:00
Benjamin Dalsass
b30bc64319 update mermaid itop history 2.7.7 2022-08-02 14:44:51 +02:00
Benjamin Dalsass
ca5bbc596e pass twig environment to twig filter filter 2022-08-01 10:33:45 +02:00
Benjamin Dalsass
8188d76f63 remove mixed return type from portal AppVariable 2022-08-01 10:32:04 +02:00
Benjamin Dalsass
57a3da1cca remove outdated PHP min comment 2022-08-01 09:30:18 +02:00
Benjamin Dalsass
eb9b9cfce7 remove kernel depreciation calls 2022-08-01 09:30:18 +02:00
Benjamin Dalsass
8b8e6bab33 remove request param for env dev switch (use log instead for debug) 2022-08-01 09:30:18 +02:00
Benjamin Dalsass
549bfcafd9 Change boostrap default env to prod 2022-08-01 09:30:18 +02:00
Molkobain
435dce91d7 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-07-29 15:28:11 +02:00
Molkobain
a2973f6f28 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	js/wizardhelper.js
2022-07-29 15:25:13 +02:00
Molkobain
614a586b4c N°3129 - PHP 8.0: Fix unit test for which the tested error message as changed 2022-07-29 11:08:32 +02:00
Pierre Goiffon
0f4c7ac90f N°5129 Prevent "fieldForm is null" JS error when updating dependant field
For example when changing Server.location, 3 JS errors are thrown in the console :/
2022-07-29 10:12:37 +02:00
Stephen Abello
8c7fa53696 N°5335 Disable datatables hyperlinks when rows are selectable 2022-07-29 09:59:00 +02:00
Molkobain
d60109d3c9 N°4517 - PHP 8.1: Fix typo from htmlentities() replacements 2022-07-28 15:46:40 +02:00
Molkobain
12c9aad445 N°4517 - PHP 8.1: Fix typos 2022-07-28 11:52:28 +02:00
Molkobain
0c90b2f1aa Fix code style 2022-07-28 11:52:28 +02:00
Molkobain
8c27476d2a N°4517 - PHP 8.1: Fix trim() called with null value 2022-07-28 11:52:28 +02:00
Molkobain
dfd0406160 N°4517 - PHP 8.1: Replace usage of strftime() with date() 2022-07-28 11:52:27 +02:00
Molkobain
af36177b03 N°4517 - PHP 8.1: Fix false to array conversion which is longer allowed 2022-07-28 11:22:26 +02:00
Molkobain
7e15c0874d Update autoloaders 2022-07-28 10:34:30 +02:00
Molkobain
86e1f165cd Merge remote-tracking branch 'origin/develop' into feature/4517-from-dev
# Conflicts:
#	CONTRIBUTING.md
#	composer.lock
#	core/designdocument.class.inc.php
#	lib/composer/installed.json
#	lib/composer/installed.php
2022-07-28 10:30:25 +02:00
Molkobain
ee783257d9 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	lib/symfony/polyfill-iconv/Resources/charset/from.big5.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.cp037.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.cp1006.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.cp1026.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.cp424.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.cp437.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.cp500.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.cp737.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.cp775.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.cp850.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.cp852.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.cp855.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.cp856.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.cp857.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.cp860.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.cp861.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.cp862.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.cp863.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.cp864.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.cp865.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.cp866.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.cp869.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.cp874.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.cp875.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.cp932.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.cp936.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.cp949.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.cp950.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.iso-8859-1.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.iso-8859-10.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.iso-8859-11.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.iso-8859-13.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.iso-8859-14.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.iso-8859-15.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.iso-8859-16.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.iso-8859-2.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.iso-8859-3.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.iso-8859-4.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.iso-8859-5.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.iso-8859-6.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.iso-8859-7.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.iso-8859-8.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.iso-8859-9.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.koi8-r.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.koi8-u.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.us-ascii.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.windows-1250.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.windows-1251.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.windows-1252.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.windows-1253.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.windows-1254.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.windows-1255.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.windows-1256.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.windows-1257.php
#	lib/symfony/polyfill-iconv/Resources/charset/from.windows-1258.php
2022-07-28 10:11:13 +02:00
Molkobain
77aa154388 Convert line endings to LF on misaligned text files 2022-07-28 10:02:18 +02:00
Molkobain
414e1542d0 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	datamodels/2.x/authent-external/ja.dict.authent-external.php
#	datamodels/2.x/authent-local/da.dict.authent-local.php
#	datamodels/2.x/authent-local/ja.dict.authent-local.php
2022-07-28 10:00:32 +02:00
Molkobain
0687f9a0a9 Convert line endings to LF on misaligned text files 2022-07-28 09:58:04 +02:00
Molkobain
6e75ab2889 Add .gitattributes to enforce line endings
More info: https://docs.github.com/en/get-started/getting-started-with-git/configuring-git-to-handle-line-endings
2022-07-28 09:44:42 +02:00
Molkobain
d4a0c141b3 #296 Fix typos 2022-07-27 10:35:37 +02:00
Benjamin Dalsass
192dd86469 correct composer PHP max version and update setup utils constant 2022-07-27 08:54:39 +02:00
bdalsass
cd861263fb Update sources/Application/TwigBase/Twig/Extension.php
Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2022-07-27 08:54:03 +02:00
Benjamin Dalsass
dbd5c32535 restore important security fix on twig filter
see N°4867 "Twig content not allowed" error when use the extkey widget search icon in the user portal
2022-07-27 08:54:03 +02:00
Molkobain
76062ca8b2 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-07-26 22:32:22 +02:00
Molkobain
a80cfb6b05 N°5302 - Code cleanup 2022-07-26 22:18:21 +02:00
Molkobain
6ee67a2a36 N°5108 - Fix variable name 2022-07-26 22:11:38 +02:00
Molkobain
a11bbd667a Fix typos 2022-07-26 20:09:37 +02:00
Pierre Goiffon
ce7f251064 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-07-26 17:21:59 +02:00
Pierre Goiffon
7268cf7311 👥 Add @nv35 to contributors list! 🙌
See #183
2022-07-26 17:21:19 +02:00
Stephen Abello
5e497aff90 Update OAuth Azure 2022-07-26 14:36:58 +02:00
Stephen Abello
70d1504cd4 Update guzzle library 2022-07-26 14:36:58 +02:00
Benjamin Dalsass
742ef2b23b Update pelago/emogrifier bundle (^6.0.0)
>> files omitted
2022-07-26 14:36:58 +02:00
Benjamin Dalsass
f6c50733fc Update pelago/emogrifier bundle (^6.0.0) 2022-07-26 14:36:58 +02:00
Benjamin Dalsass
25a612da04 Update Symfony bundles 2022-07-26 14:36:58 +02:00
Benjamin Dalsass
31cc294cc3 Upgrade composer php max version to 8.1 2022-07-26 14:36:58 +02:00
bdalsass
d93a0b698b N°5281 - Portal: Add method to declare brick controller since Symfony 5.4 migration (#313)
* Add controllers declaration interface to ItopExtensionsExtraRoutes

* N°3390 - Upgrade from Symfony 3.4 to Symfony 5.4
Container setter issues

* Show Symfony original error page when app debug is on

* Update datamodels/2.x/itop-portal-base/portal/src/Form/ObjectFormManager.php

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

* Update datamodels/2.x/itop-portal-base/portal/src/Form/ObjectFormManager.php

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

* Update datamodels/2.x/itop-portal-base/portal/src/Form/ObjectFormManager.php

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

* Update datamodels/2.x/itop-portal-base/portal/src/Form/ObjectFormManager.php

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

* Update datamodels/2.x/itop-portal-base/portal/src/Form/ObjectFormManager.php

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

* Update datamodels/2.x/itop-portal-base/portal/src/Helper/ObjectFormHandlerHelper.php

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

* Update datamodels/2.x/itop-portal-base/portal/src/Helper/ObjectFormHandlerHelper.php

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

* Update datamodels/2.x/itop-portal-base/portal/src/Helper/ObjectFormHandlerHelper.php

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

* Update datamodels/2.x/itop-portal-base/portal/src/Helper/ObjectFormHandlerHelper.php

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

* Update datamodels/2.x/itop-portal-base/portal/src/Routing/ItopExtensionsExtraRoutes.php

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

* Update datamodels/2.x/itop-portal-base/portal/src/Form/ObjectFormManager.php

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

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2022-07-25 14:19:47 +02:00
Molkobain
9cf329c475 Add @Timmy38 to the sample data, welcome! 👋 2022-07-25 11:50:04 +02:00
Molkobain
f978cc4e22 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-07-20 17:51:29 +02:00
Molkobain
6cda9e001f Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2022-07-20 17:48:47 +02:00
Molkobain
b90d29d448 🔧 Add IntelliLang.xml file to provide PHP synthax highlighting in DM XML files 2022-07-20 17:48:01 +02:00
Molkobain
494b70950c Merge remote-tracking branch 'origin/support/3.0' into develop 2022-07-18 16:49:05 +02:00
Molkobain
808092acdd N°5311 - Update deprecation comment to match PHP deprecations convention 2022-07-18 16:05:41 +02:00
Molkobain
b9c716a247 N°5102 - Convert line separators 2022-07-18 15:58:11 +02:00
Molkobain
f71fadda17 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-07-18 14:17:16 +02:00
Molkobain
bf7b2e1e7e Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2022-07-18 14:15:50 +02:00
Molkobain
1f78bf4119 N°5287 - Fix license in composer.json 2022-07-18 13:52:40 +02:00
Molkobain
91c73b562a Merge remote-tracking branch 'origin/support/3.0' into develop 2022-07-13 17:15:53 +02:00
Molkobain
28df2dad60 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	js/wizardhelper.js
2022-07-13 17:11:04 +02:00
Molkobain
5d25e77189 Code format 2022-07-13 17:03:01 +02:00
Molkobain
d9dabf25da PHPDoc 2022-07-13 17:03:01 +02:00
Molkobain
73af605892 Fix typo in dictionaries 2022-07-13 17:03:00 +02:00
Eric Espie
3ae862d690 N°5310 - Mail to ticket: Migration 3.1 - PHPMail 2022-07-12 13:37:02 +02:00
Molkobain
51d5c00bcd N°5313 - Remove "enable_formmanager_content_check" module parameter from itop-portal 2022-07-12 12:06:35 +02:00
Molkobain
99b4fceaf3 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-07-12 11:43:49 +02:00
Molkobain
a71d8a660f N°5311 - Deprecate old backoffice stylesheets 2022-07-12 11:20:48 +02:00
Eric Espie
e91e53c0ec Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	composer.lock
#	datamodels/2.x/itop-oauth-client/datamodel.itop-oauth-client.xml
#	lib/composer/autoload_files.php
#	lib/composer/autoload_real.php
#	lib/composer/autoload_static.php
#	lib/composer/installed.json
#	lib/composer/installed.php
2022-07-11 17:24:06 +02:00
Eric Espie
03b56b2941 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 : wrong positioning of module_parameters for portal 2022-07-11 16:26:41 +02:00
Eric Espie
01ee91d003 N°5102 - Allow to send emails (eg. notifications) using GSuite SMTP and OAuth
* migration to iTop 3.0
2022-07-11 15:20:47 +02:00
Benjamin Dalsass
f70f95c119 Update community licence 2.7.7 (script from git bash, not php execution) 2022-07-11 15:20:36 +02:00
Eric Espie
badc5ff3ec Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2022-07-11 15:20:29 +02:00
Eric Espie
8dbdcdcb25 autoloader updated 2022-07-11 14:18:44 +02:00
Eric Espie
13533a2fa9 ⬆️ libs upgrade 2022-07-11 14:18:20 +02:00
Eric Espie
e4343ded01 autoloader updated 2022-07-11 09:24:24 +02:00
Eric Espie
e105cc6d44 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	composer.lock
#	core/log.class.inc.php
#	datamodels/2.x/itop-tickets/datamodel.itop-tickets.xml
#	lib/composer/autoload_real.php
#	setup/licenses/community-licenses.xml
#	setup/setuputils.class.inc.php
2022-07-11 09:23:18 +02:00
Benjamin Dalsass
53c50cf6fc Update community licence 2.7.7 2022-07-11 08:24:20 +02:00
Vincent Dumas
f19d1472c5 N°5102 - OAuth - replace double quote char EN
Use a special double quote characters so it is correctly handled in HTML
2022-07-08 13:44:00 +02:00
Vincent Dumas
eef00502cd N°5102 - OAuth - remove unsupported quote FR 2022-07-08 13:38:37 +02:00
Molkobain
0b1caac195 N°4867 - Restore datamodel node to avoid minor version migration crash
Will be properly removed in 3.1.0
2022-07-08 13:22:27 +02:00
Vincent Dumas
e900a44d47 N°5102 - OAuth client - FR tooltips 2022-07-08 12:22:52 +02:00
Vincent Dumas
a3de9fa898 N°5102 - OAuth client - Add EN tooltips 2022-07-08 12:06:47 +02:00
Eric Espie
aa8de912fd Merge branch 'support/3.0.1' into support/3.0 2022-07-08 11:01:02 +02:00
Eric Espie
f8648e2929 N°5267 - Error on class view when datamodel encoding is not UTF-8 - add logs to ease finding the model load errors 2022-07-08 10:59:21 +02:00
bdalsass
33054d306d N°5302 - Replace deprecated php strlen usages (#308) 2022-07-08 10:27:52 +02:00
Eric Espie
2c265aab44 N°4756 - Ease extensibility for CRUD operations
- Change event order in CRUD
 - Add LinkHostObject for link update
 - Add events EVENT_SERVICE_DB_ARCHIVE and  EVENT_SERVICE_DB_UNARCHIVE
2022-07-08 10:19:54 +02:00
bdalsass
8b0154cc62 N°5168 - Access to unauthorized contact information on Portal (#305)
GlobalRequestMgmt issue
2022-07-08 09:51:20 +02:00
Eric Espie
1a225bf55b N°5102 - Allow to send emails using GSuite SMTP and OAuth - Access rights 2022-07-07 17:57:24 +02:00
Eric Espie
24d19cd8d6 N°5102 - Allow to send emails using GSuite SMTP and OAuth - Add a flag to select OAuth client for SMTP usage 2022-07-07 16:34:19 +02:00
Eric Espie
c25a4a7346 N°5102 - Allow to send emails using GSuite SMTP and OAuth - Access rights 2022-07-07 14:17:09 +02:00
Stephen Abello
65c6e99a3f Fix typo/useless comment 2022-07-07 09:16:11 +02:00
Stephen Abello
8e85058495 Fix SCSS comment type 2022-07-07 09:15:20 +02:00
Eric Espie
20fb7b241f N°5102 - Allow to send emails using GSuite SMTP and OAuth - Highlight classes 2022-07-06 17:23:44 +02:00
Eric Espie
a0553e1195 N°5102 - Allow to send emails using GSuite SMTP and OAuth - Highlight classes 2022-07-06 17:10:59 +02:00
Eric Espie
fe28319d22 Merge from Develop 2022-07-06 14:28:55 +02:00
Eric Espie
f40141072a N°5102 - Allow to send emails using GSuite SMTP and OAuth - Fix errors on vendor name 2022-07-06 14:10:01 +02:00
Eric Espie
c759856a61 N°5102 - Allow to send emails using GSuite SMTP and OAuth - Highlight classes 2022-07-06 10:10:42 +02:00
Pierre Goiffon
237b181eec 💡 Fix \SetupUtils::GetTmpDir PHPDoc 2022-07-05 18:09:59 +02:00
Pierre Goiffon
c56cb516ed 🔨 composer/listOutdated : fix default composer path and update doc 2022-07-05 17:59:53 +02:00
Eric Espie
48957fd2f0 N°5102 - Allow to send emails using GSuite SMTP and OAuth - refactor scopes 2022-07-05 17:54:43 +02:00
Romain Quetiez
db9b239d71 Update CONTRIBUTING.md
Combodo's Copyright does not apply to third-party libraries / icons.
2022-07-05 17:16:00 +02:00
Pierre Goiffon
d793a4e3ab 🚚 Version history : move to /.doc 2022-07-05 15:19:40 +02:00
Pierre Goiffon
8a99c37200 N°5287 Fix composer.json errors
See https://getcomposer.org/doc/03-cli.md#validate
2022-07-05 15:08:29 +02:00
Pierre Goiffon
dbf4389307 📝 Version history : rotate version labels 2022-07-05 14:34:20 +02:00
Pierre Goiffon
e62c1c629f 📝 Version history : remove duplicated 2.4.0 tag 2022-07-05 14:33:07 +02:00
Pierre Goiffon
797184f452 📝 Version history : change branches order 2022-07-05 14:30:26 +02:00
Pierre Goiffon
9f0ac99abb 📝 New version history file 2022-07-05 12:38:14 +02:00
Eric Espie
d388c3fd3d N°5102 - Allow to send emails using GSuite SMTP and OAuth - Limit error size 2022-07-04 16:48:56 +02:00
Stephen Abello
9fd2b7f4da N°5071 Fix objects popup shrinking when scrolling 2022-07-04 16:41:10 +02:00
Stephen Abello
b43e6d7af3 N°5071 Fix properties tab on objects popup hiding in "..." overflowing button 2022-07-04 16:39:02 +02:00
Eric Espie
1b8e48539d N°5102 - Allow to send emails using GSuite SMTP and OAuth - Add comment in configuration 2022-07-01 14:32:44 +02:00
acognet
6d025479c6 composer dump autoloader 2022-07-01 11:35:42 +02:00
acognet
616381a16c N°5232 - Deprecate \CMDBObject::DBCloneTracked 2022-07-01 11:35:42 +02:00
acognet
e1bf3d9ee0 N°2743 - Upgrade libraries php-parser
php composer.phar update  nikic/php-parser
2022-07-01 11:35:41 +02:00
Romain Quetiez
5ff4db5a4d Update CONTRIBUTING.md
Clarify the copyright ownership
2022-07-01 11:35:41 +02:00
Molkobain
01023801b8 Prepare 3.0.0-beta4
- Update translations
- Update version number
2022-07-01 11:35:40 +02:00
acognet
00bdcf14dd composer dump autoloader 2022-07-01 11:18:41 +02:00
acognet
b98e1889d5 composer dump autoloader 2022-07-01 11:06:58 +02:00
acognet
d1eef0853b N°5232 - Deprecate \CMDBObject::DBCloneTracked 2022-07-01 10:49:07 +02:00
acognet
29f23fa992 N°2743 - Upgrade libraries php-parser
php composer.phar update  nikic/php-parser
2022-07-01 10:45:55 +02:00
acognet
7ec12f1e12 N°4517 - PHP 8.1: Replace htmlentities(***, ENT_QUOTES, 'UTF-8') with utils::EscapeHtml 2022-07-01 09:22:25 +02:00
acognet
139be3a9b7 Fix display of hub connector 2022-07-01 09:05:49 +02:00
Eric Espie
7f6f5c0c3b Refactor event name 2022-06-30 16:24:13 +02:00
Benjamin Dalsass
f5389a2d2d N°4517 - PHP 8.1 compatibility: Replace strlen with Utils::StrLen to avoid null value issue 2022-06-30 16:18:27 +02:00
acognet
31dffcf5e0 N°4517 - PHP 8.1:Fix use of strftime 2022-06-30 15:41:38 +02:00
acognet
4afadc39aa Fix libpng warning: iCCP: known incorrect sRGB profile 2022-06-30 15:41:08 +02:00
Benjamin Dalsass
f13ed9494b N°4517 - PHP 8.1 compatibility: Replace strlen with Utils::StrLen to avoid null value issue 2022-06-30 15:12:59 +02:00
Benjamin Dalsass
acd5547618 N°4517 - PHP 8.1 compatibility: Replace strlen with Utils::StrLen to avoid null value issue 2022-06-30 15:10:28 +02:00
Benjamin Dalsass
8733ac416c N°4517 - PHP 8.1 compatibility: Function with return type must return a value 2022-06-30 15:05:22 +02:00
Benjamin Dalsass
ab40b1b556 N°4517 - PHP 8.1 compatibility: Fix deprecated call str_replace with null value 2022-06-30 15:03:12 +02:00
Eric Espie
682ab44dea Merge branch 'develop' into feature/faf_event_service 2022-06-30 14:22:52 +02:00
Romain Quetiez
0ff25728a4 Update CONTRIBUTING.md
Clarify the copyright ownership
2022-06-30 09:58:17 +02:00
Eric Espie
104beff158 N°5102 - Allow to send emails using GSuite SMTP and OAuth - Fix log 2022-06-29 15:09:17 +02:00
Pierre Goiffon
4712569a36 📝 CONTRIBUTING : fix GitMoji link 2022-06-29 10:56:21 +02:00
Pierre Goiffon
56fdf8dd63 Merge remote-tracking branch 'origin/support/3.0.0-beta4' into develop
# Conflicts:
#	datamodels/2.x/authent-local/dictionaries/de.dict.authent-local.php
#	datamodels/2.x/authent-local/dictionaries/es_cr.dict.authent-local.php
#	datamodels/2.x/authent-local/dictionaries/zh_cn.dict.authent-local.php
#	datamodels/2.x/itop-backup/dictionaries/de.dict.itop-backup.php
#	datamodels/2.x/itop-backup/dictionaries/fr.dict.itop-backup.php
#	datamodels/2.x/itop-backup/dictionaries/zh_cn.dict.itop-backup.php
#	datamodels/2.x/version.xml
#	dictionaries/cs.dictionary.itop.ui.php
#	dictionaries/de.dictionary.itop.ui.php
#	dictionaries/tr.dictionary.itop.ui.php
#	dictionaries/ui/components/datatable/de.dictionary.itop.datatable.php
#	dictionaries/ui/components/datatable/es_cr.dictionary.itop.datatable.php
#	dictionaries/ui/components/datatable/ru.dictionary.itop.datatable.php
#	dictionaries/ui/components/datatable/zh_cn.dictionary.itop.datatable.php
#	dictionaries/zh_cn.dictionary.itop.ui.php
2022-06-29 10:00:38 +02:00
acognet
0b2510f6cc N°4517 - PHP 8.1: Fix htmlentities 2022-06-29 09:17:25 +02:00
acognet
eb408e2ea4 N°4517 - PHP 8.1: Fix static method in a trait 2022-06-29 09:17:08 +02:00
acognet
958a86bbb5 N°4517 - PHP 8.1: Fix strlen 2022-06-29 09:16:50 +02:00
acognet
b45da1eaa5 N°4517 - PHP 8.1: Fix use of Serializable 2022-06-29 09:16:25 +02:00
Molkobain
6facaec353 N°4517 - PHP 8.1: Replace mixed return types with #[\ReturnTypeWillChange] PHP attributes to restore PHP 7.4 compatibility
Also add comment on previous #[\ReturnTypeWillChange]
2022-06-28 16:34:41 +02:00
Molkobain
7dc4a2776b N°4517 - PHP 8.1: Fix deprecated notice for null value passed to string parameter of native PHP functions 2022-06-28 16:34:35 +02:00
Molkobain
09b0ac38ef N°4517 - PHP 8.1: Hide (for now) deprecate notices of mismatching return types when union types as it would not be supported by PHP 7.2 => 7.4 2022-06-28 16:34:27 +02:00
Molkobain
9d62e87de4 N°4517 - PHP 8.1: Fix MFElement::__construct() being called with $namespaceURI as null when it should be strictly a string
MFDocument::createElement() default value for $namespaceURI is now a string
2022-06-28 16:34:18 +02:00
Molkobain
04dbaef257 N°4517 - PHP 8.1: Fix deprecated usages of MySQLi
* init() method should not be called in OOP
  * real_connect() "flags" param should not be null to match its type (int)
2022-06-28 16:34:12 +02:00
Molkobain
ff12dd99b5 N°4517 - PHP 8.1: Fix return types to match ArrayAccess interface 2022-06-28 16:34:07 +02:00
Molkobain
7ee5184afc N°4517 - PHP 8.1: Fix return types to match Iterator interface 2022-06-28 16:34:01 +02:00
Molkobain
212565b01e N°4517 - PHP 8.1: Fix return types to match parent Countable class
* DBObjectSet::Seek() now returns void instead of the current object, this was mandatory in to order to match parent class. Returned object is never used in iTop core and extensions so we consider it ok and will document it in the migration notes.
2022-06-28 16:32:26 +02:00
Pierre Goiffon
130b4b176f Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	composer.lock
#	lib/composer/autoload_classmap.php
#	lib/composer/autoload_files.php
#	lib/composer/autoload_static.php
#	lib/composer/installed.json
#	lib/composer/installed.php
2022-06-28 16:00:54 +02:00
Pierre Goiffon
779ac0e4d9 Dump autoloader 2022-06-28 15:19:08 +02:00
Pierre Goiffon
4a20a6e525 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	composer.lock
#	lib/composer/autoload_files.php
#	lib/composer/autoload_real.php
#	lib/composer/autoload_static.php
#	lib/composer/installed.json
#	lib/composer/installed.php
2022-06-28 15:16:41 +02:00
Pierre Goiffon
2392f4a902 🔒 Update guzzlehttp/guzzle 2022-06-28 15:13:04 +02:00
Benjamin Dalsass
cb1203fde9 Merge 2.7 into Support 3.0 : Update oauth composer 2022-06-28 15:09:19 +02:00
Purple Grape
0c14423213 improved Chinese translation (#302)
1. words refine
2. remove unwanted blank
3. punctuation related issue

Co-Authored-By: Devin <bdejin@hotmail.com>
2022-06-28 12:34:21 +02:00
Pierre Goiffon
1135896b3d Composer dump autoloader 2022-06-28 12:05:47 +02:00
acognet
39cd933ebb N°5108 - Update embedded libs for PHP 8.0 (3.0 branch) 2022-06-28 12:03:01 +02:00
Pierre Goiffon
2fcc386e1e Fix compilation error on OAuthClient.status
XML file version was update but structure wasn't aligned with the new XML version (AttributeEnum structure)
2022-06-28 11:55:03 +02:00
acognet
bf01be6f19 N°4988 - History API : change consumers (iTop core) 2022-06-28 11:30:16 +02:00
acognet
b47d3cda12 N°5232 - Deprecate \CMDBObject::DBCloneTracked - fix phpdoc 2022-06-28 11:29:15 +02:00
acognet
01c76f19ed N°4988 - History API : change consumers (iTop core) 2022-06-28 11:26:19 +02:00
acognet
682f20bbba N°5108 - Update embedded libs for PHP 8.0 (3.0 branch) 2022-06-28 11:24:47 +02:00
Pierre Goiffon
eb8ea0fbd4 Remove Symfony tests dir 2022-06-28 11:14:52 +02:00
Pierre Goiffon
784e553d23 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	composer.json
#	composer.lock
#	lib/composer/autoload_classmap.php
#	lib/composer/autoload_files.php
#	lib/composer/autoload_real.php
#	lib/composer/autoload_static.php
#	lib/composer/installed.php
2022-06-28 11:10:01 +02:00
Pierre Goiffon
74f7775332 Restore images/icons/*
Were removed by the merge in f0b94dd0
2022-06-28 11:02:56 +02:00
Eric Espie
a0f28a9098 N°5102 - Allow to send emails using GSuite SMTP and OAuth - Rework 2022-06-28 10:47:20 +02:00
acognet
93a69cbc49 N°5108 - Update embedded libs for PHP 8.0 (3.0 branch) 2022-06-27 23:38:58 +02:00
Benjamin Dalsass
de040a0922 Merge 3.0 into Dev : Upgrade oauth module version to 3.1.0 2022-06-27 09:54:50 +02:00
Benjamin Dalsass
4af54f26b6 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-06-27 09:52:15 +02:00
Benjamin Dalsass
15b9ea45a0 Merge 2.7 into Support 3.0 : Upgrade oauth module version to 3.0.1 2022-06-27 09:31:49 +02:00
Benjamin Dalsass
02dab4eb72 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	lib/composer/autoload_files.php
#	lib/composer/autoload_static.php
#	templates/pages/backoffice/oauth/Wizard.html.twig
2022-06-27 08:38:01 +02:00
Benjamin Dalsass
1b76e96720 Merge 2.7 into Support 3.0 : Update autoload 2022-06-27 08:18:49 +02:00
Benjamin Dalsass
f0b94dd0f7 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	core/config.class.inc.php
#	datamodels/2.x/installation.xml
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-adjust.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-administrative-tools.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-application-window.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-apps-tab.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-archive-folder.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-audit.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-automatic.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-bandage.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-book-error.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-calendar.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-cassette.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-change-approved.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-change-emergency.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-change-normal.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-change-routine.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-change.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-checkmark.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-cloud-file.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-conflict.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-contract.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-customer.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-database-custom.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-database.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-delete.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-department.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-desktop.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-discussion-forum.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-documents.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-electrical.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-electricity.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-electronics.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-enclosure-for-servers.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-export-csv.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-faq.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-farm.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-file.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-globe-cable.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-globe-fiber.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-globe-wire.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-hdd.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-hierarchy.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-hypervisor.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-import-csv.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-important-book.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-in-transit.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-laptop.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-licence.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-map-as-drive.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-map-marker.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-mobile.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-music-robot.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-nas.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-network.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-new-item.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-note.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-office-phone.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-old-vmware-logo.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-organization.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-person-female.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-phone.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-plug-socket.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-power-plant.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-print.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-process-improvement.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-puzzle.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-rack.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-server-custom.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-server-storage.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-server.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-service.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-services.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-smartphone-tablet.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-software-instance.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-software-license.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-software-other.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-software.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-solve.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-stack.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-switch-san.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-switch.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-tape-library.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-tasklist.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-team.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-telephone.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-time-limit.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-virtual-machine.svg
#	datamodels/2.x/itop-oauth-client/assets/img/icons8-web.svg
#	datamodels/2.x/itop-welcome-itil/datamodel.itop-welcome-itil.xml
#	dictionaries/cs.dictionary.itop.ui.php
#	dictionaries/da.dictionary.itop.ui.php
#	dictionaries/de.dictionary.itop.ui.php
#	dictionaries/en.dictionary.itop.ui.php
#	dictionaries/es_cr.dictionary.itop.ui.php
#	dictionaries/fr.dictionary.itop.ui.php
#	dictionaries/hu.dictionary.itop.ui.php
#	dictionaries/it.dictionary.itop.ui.php
#	dictionaries/ja.dictionary.itop.ui.php
#	dictionaries/nl.dictionary.itop.ui.php
#	dictionaries/pt_br.dictionary.itop.ui.php
#	dictionaries/ru.dictionary.itop.ui.php
#	dictionaries/sk.dictionary.itop.ui.php
#	dictionaries/tr.dictionary.itop.ui.php
#	dictionaries/zh_cn.dictionary.itop.ui.php
#	js/wizardhelper.js
#	lib/composer/autoload_classmap.php
#	lib/composer/autoload_real.php
#	lib/composer/autoload_static.php
#	templates/pages/backoffice/oauth/Wizard.html.twig
2022-06-27 08:11:28 +02:00
Eric Espie
6df622e8ed N°5102 - Allow to send emails using GSuite SMTP and OAuth - Rework 2022-06-23 14:05:17 +02:00
Eric Espie
54eb9d081b N°5102 - Allow to send emails using GSuite SMTP and OAuth - Rework 2022-06-23 12:20:53 +02:00
Eric Espie
9f60f27636 N°5102 - Allow to send emails using GSuite SMTP and OAuth - Rework 2022-06-22 16:41:45 +02:00
acognet
306e16147a N°5232 - Deprecate \CMDBObject::DBCloneTracked 2022-06-22 09:19:58 +02:00
acognet
aae1e12b2e N°4988 - History API : change consumers (iTop core) 2022-06-21 18:12:35 +02:00
Eric Espie
ba59643f52 N°5102 - Allow to send emails using GSuite SMTP and OAuth - Rework 2022-06-21 16:47:46 +02:00
Eric Espie
01c02a75a8 N°5102 - Allow to send emails using GSuite SMTP and OAuth - Rework 2022-06-21 16:40:43 +02:00
Eric Espie
f5b3e5f341 N°5102 - Allow to send emails using GSuite SMTP and OAuth - Rework 2022-06-21 16:10:34 +02:00
Eric Espie
9b825cb529 N°5102 - Allow to send emails using GSuite SMTP and OAuth - Rework 2022-06-21 16:05:58 +02:00
Eric Espie
3f326f0913 N°5102 - Allow to send emails using GSuite SMTP and OAuth - Rework 2022-06-21 16:05:58 +02:00
acognet
ec86bd246a N°5129 - Unwanted popup during a transition with an AttributeExternalField 2022-06-21 15:24:25 +02:00
Eric Espie
aa90d5b6ab N°5102 - Allow to send emails using GSuite SMTP and OAuth - Rework 2022-06-21 13:51:08 +02:00
Pierre Goiffon
d6798470e7 💡 N°5248 \cmdbAbstractObject::DisplayBareHeader phpdoc v3 2022-06-21 12:15:04 +02:00
Pierre Goiffon
073388436b 💡 N°5248 \cmdbAbstractObject::DisplayBareHeader phpdoc v2 2022-06-21 10:21:10 +02:00
Pierre Goiffon
84d1be07cd 💡 N°5248 Document method signature change in \cmdbAbstractObject::DisplayBareHeader 2022-06-20 15:38:51 +02:00
Benjamin Dalsass
bd3724be8f symfony 5.4 (twig filter initialization correction) 2022-06-20 08:22:23 +02:00
Pierre Goiffon
26747b8c7e Merge remote-tracking branch 'origin/support/3.0.1' into support/3.0 2022-06-17 10:50:18 +02:00
Benjamin Dalsass
683ab25e83 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	lib/composer/autoload_files.php
#	lib/composer/autoload_static.php
2022-06-17 10:14:01 +02:00
Benjamin Dalsass
d0b8c560f6 N°5037 - Setup: Add disclaimer about collected data
3.0 look and feel adaptation
2022-06-17 09:50:36 +02:00
Benjamin Dalsass
4d180eb303 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	composer.lock
#	js/wizardhelper.js
#	lib/composer/autoload_real.php
#	lib/composer/installed.json
#	lib/composer/installed.php
#	lib/guzzlehttp/guzzle/CHANGELOG.md
#	setup/wizardsteps.class.inc.php
2022-06-17 09:25:57 +02:00
acognet
53d2129bd1 N°5129 - Unwanted popup during a transition with an AttributeExternalField 2022-06-16 17:58:19 +02:00
Benjamin Dalsass
977a8add67 Adjust php setup requirement to version 7.2.5.
Improve test error message.
2022-06-16 10:04:13 +02:00
bdalsass
79da71ecf8 migration symfony 5 4 (#300)
* symfony 5.4 (diff dev)

* symfony 5.4 (working)

* symfony 5.4 (update autoload)

* symfony 5.4 (remove swiftmailer mailer implementation)

* symfony 5.4 (php doc and split Global accessor class)


### Impacted packages:

composer require php:">=7.2.5 <8.0.0" symfony/console:5.4.* symfony/dotenv:5.4.* symfony/framework-bundle:5.4.* symfony/twig-bundle:5.4.* symfony/yaml:5.4.* --update-with-dependencies

composer require symfony/stopwatch:5.4.* symfony/web-profiler-bundle:5.4.* --dev --update-with-dependencies
2022-06-16 09:13:24 +02:00
Pierre Goiffon
abb13b70b9 Compiler : when generating model file add it to module (#296)
Before this fix, when creating a module for iTop that was creating PHP code (an iTop class for example, a snippet, ...) it was mandatory to add the model.php file in your module.php file ("datamodel" key). If you forgot this, then the compilation was completed OK but the result code wasn't included in iTop.

Now the compiler automatically adds the model.php file to the included files.
2022-06-15 18:07:16 +02:00
Pierre Goiffon
023ead39ec N°4280 Handle modules with non existing model.*.php files imported (#295)
We were crashing iTop when having a module with : 
* in the 'datamodel' key in the module.*.php file a 'model.*.php' declared
* no model.*.php file in the module sources
* no model.*.php generated after compilation

This behavior is improved : 
* if isdevenv an exception will be thrown detailing which module is concerned
* else : 
  - model.*.php won't be added in iTop datamodel autoload
  - a SetupLog::Error will be made
2022-06-15 17:20:13 +02:00
Pierre Goiffon
8890940b06 CONTRIBUTING.md : update stickers text (#292)
Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2022-06-14 18:57:44 +02:00
Eric Espie
d21b577dd7 N°5229 - Caselog inline image lost after migration to 3.0 - missing calls to InlineImage::FixUrls() 2022-06-14 17:40:21 +02:00
Benjamin Dalsass
00e8c11ec2 N°5037 - Setup: Add disclaimer about collected data
change ui organization
2022-06-14 17:18:34 +02:00
Benjamin Dalsass
617b6b991f N°5037 - Setup: Add disclaimer about collected data
flip modules array
2022-06-14 14:33:35 +02:00
Benjamin Dalsass
b3ea1050eb N°5037 - Setup: Add disclaimer about collected data 2022-06-14 12:40:36 +02:00
Benjamin Dalsass
ca98066d68 N°5037 - Setup: Add disclaimer about collected data 2022-06-14 10:54:25 +02:00
Pierre Goiffon
352f7c8675 Update guzzlehttp/guzzle 2022-06-14 09:47:13 +02:00
Pierre Goiffon
44a8bfd764 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	composer.lock
#	core/email.class.inc.php
#	datamodels/2.x/itop-portal-base/portal/src/Twig/AppExtension.php
#	lib/bin/generate-deps-for-config-factory
#	lib/bin/generate-deps-for-config-factory.bat
#	lib/bin/generate-factory-for-class
#	lib/bin/generate-factory-for-class.bat
#	lib/composer/autoload_classmap.php
#	lib/composer/autoload_files.php
#	lib/composer/autoload_psr4.php
#	lib/composer/autoload_real.php
#	lib/composer/autoload_static.php
#	lib/composer/installed.json
#	lib/composer/installed.php
#	lib/laminas/laminas-servicemanager/bin/generate-deps-for-config-factory
#	lib/laminas/laminas-servicemanager/bin/generate-factory-for-class
#	lib/laminas/laminas-servicemanager/src/AbstractPluginManager.php
#	lib/laminas/laminas-servicemanager/src/ServiceManager.php
#	lib/laminas/laminas-validator/src/Db/AbstractDb.php
#	lib/laminas/laminas-validator/src/Isbn/Isbn10.php
#	lib/laminas/laminas-validator/src/Isbn/Isbn13.php
#	sources/Core/Email/EmailFactory.php
#	templates/pages/backoffice/oauth/Wizard.html.twig
2022-06-14 09:41:45 +02:00
Eric Espie
df5d514c28 N°4642 - Core Update : limit the usage of this function to minor version - fix error message (revert) 2022-06-13 15:59:25 +02:00
Eric Espie
16663797b2 N°4642 - Core Update : limit the usage of this function to minor version - fix error message 2022-06-13 15:51:36 +02:00
Benjamin Dalsass
7176218a5f composer autoload mapping correction 2022-06-10 07:37:00 +02:00
Eric Espie
4099376472 N°5102 - Allow to send emails using GSuite SMTP and OAuth - Defer the deletion (expunge) to the end of connection 2022-06-09 11:40:13 +02:00
Pierre Goiffon
fb64fbab0b Fix syntax error in Darkmoon theme 2022-06-08 18:10:03 +02:00
Eric Espie
6aef59e42d Merge branch 'develop' into feature/faf_event_service
# Conflicts:
#	core/dbobject.class.php
#	datamodels/2.x/itop-config/config.php
#	lib/composer/autoload_classmap.php
#	lib/composer/autoload_static.php
#	lib/composer/installed.php
2022-06-08 16:51:44 +02:00
bdalsass
2b885beb82 Feature/merge 3 0 develop (#298)
* merging 3.0 into develop

* N°5102 - Allow to send emails (eg. notifications) using GSuite SMTP and OAuth
* migration to iTop 3.1

Co-authored-by: Eric Espie <eric.espie@combodo.com>
2022-06-08 16:27:20 +02:00
Eric Espie
86024107af deprecated includes 2022-06-08 15:55:20 +02:00
Eric Espie
754f87fd0c debug log 2022-06-08 15:54:27 +02:00
Eric Espie
6e4fb5888c N°5102 - Allow to send emails (eg. notifications) using GSuite SMTP and OAuth
* migration to iTop 3.0
2022-06-08 15:47:52 +02:00
Eric Espie
c94c727058 N°3169 - Add feature to connect Gsuite mail box with OAuth
N°2504 - Add feature to connect Office mail box with OAuth2 for Microsoft Graph
N°5102 - Allow to send emails (eg. notifications) using GSuite SMTP and OAuth
 * migration to iTop 3.0
2022-06-08 15:46:29 +02:00
Eric Espie
6d3118d9e9 N°5102 - Allow to send emails (eg. notifications) using GSuite SMTP and OAuth (fix config error message) 2022-06-08 13:24:29 +02:00
Benjamin Dalsass
a0c78a94c6 Merge remote-tracking branch 'origin/support/3.0' into support/3.0
# Conflicts:
#	core/log.class.inc.php
2022-06-08 13:05:50 +02:00
Benjamin Dalsass
f014ebfeb1 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	core/log.class.inc.php
#	setup/modelfactory.class.inc.php
2022-06-08 13:04:50 +02:00
Benjamin Dalsass
220b384479 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	core/log.class.inc.php
#	setup/modelfactory.class.inc.php
2022-06-08 12:38:41 +02:00
odain
4c585614cd ease testing: CreateTestOrganization returns org object 2022-06-08 11:07:31 +02:00
Eric Espie
9674378c56 N°5211 - Core update not working with auto-selected modules (comments) 2022-06-08 10:36:55 +02:00
Eric Espie
9e314ba77b N°5211 - Core update not working with auto-selected modules 2022-06-08 10:24:03 +02:00
Eric Espie
cdd7dcdc5c N°5211 - Core update not working with auto-selected modules 2022-06-08 10:12:19 +02:00
Benjamin Dalsass
34bed5ec4f N°5215 - Portal insufficient access control for ajax search form 2022-06-07 11:14:43 +02:00
Pierre Goiffon
3ea82e37d5 N°4635 Report \LogChannels::NOTIFICATIONS 2022-06-03 18:00:29 +02:00
Pierre Goiffon
596c62aec8 💡 N°4867 Add bug reference in phpdoc 2022-06-03 09:54:29 +02:00
Eric Espie
972e894bc5 debug log 2022-06-02 17:32:15 +02:00
Eric Espie
86a2db7e7f Remove AFTER_DISPLAY_PAGE Event 2022-06-02 17:23:07 +02:00
Eric Espie
4c31081de2 Remove AFTER_DISPLAY_PAGE Event 2022-06-02 17:19:43 +02:00
Benjamin Dalsass
834084a3e2 Correct dictionary entry 2022-06-02 17:15:10 +02:00
Benjamin Dalsass
0819b9baba Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	composer.json
#	composer.lock
#	core/config.class.inc.php
#	core/dbobject.class.php
#	core/email.class.inc.php
#	datamodels/2.x/itop-core-update/dictionaries/hu.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/dictionaries/it.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/dictionaries/ja.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/dictionaries/nl.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/dictionaries/ru.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/dictionaries/sk.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/dictionaries/tr.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/dictionaries/zh_cn.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/pt_br.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/view/ConfirmUpdate.html.twig
#	datamodels/2.x/itop-portal-base/portal/src/Twig/AppExtension.php
#	datamodels/2.x/itop-tickets/datamodel.itop-tickets.xml
#	datamodels/2.x/itop-welcome-itil/datamodel.itop-welcome-itil.xml
#	dictionaries/cs.dictionary.itop.core.php
#	dictionaries/cs.dictionary.itop.ui.php
#	dictionaries/da.dictionary.itop.core.php
#	dictionaries/da.dictionary.itop.ui.php
#	dictionaries/de.dictionary.itop.core.php
#	dictionaries/de.dictionary.itop.ui.php
#	dictionaries/en.dictionary.itop.ui.php
#	dictionaries/es_cr.dictionary.itop.core.php
#	dictionaries/es_cr.dictionary.itop.ui.php
#	dictionaries/fr.dictionary.itop.core.php
#	dictionaries/fr.dictionary.itop.ui.php
#	dictionaries/hu.dictionary.itop.core.php
#	dictionaries/hu.dictionary.itop.ui.php
#	dictionaries/it.dictionary.itop.core.php
#	dictionaries/it.dictionary.itop.ui.php
#	dictionaries/ja.dictionary.itop.core.php
#	dictionaries/ja.dictionary.itop.ui.php
#	dictionaries/nl.dictionary.itop.core.php
#	dictionaries/nl.dictionary.itop.ui.php
#	dictionaries/pt_br.dictionary.itop.core.php
#	dictionaries/pt_br.dictionary.itop.ui.php
#	dictionaries/ru.dictionary.itop.core.php
#	dictionaries/ru.dictionary.itop.ui.php
#	dictionaries/sk.dictionary.itop.core.php
#	dictionaries/sk.dictionary.itop.ui.php
#	dictionaries/tr.dictionary.itop.core.php
#	dictionaries/tr.dictionary.itop.ui.php
#	dictionaries/zh_cn.dictionary.itop.core.php
#	dictionaries/zh_cn.dictionary.itop.ui.php
#	lib/composer/autoload_classmap.php
#	lib/composer/autoload_real.php
#	lib/composer/autoload_static.php
#	lib/composer/installed.json
#	lib/composer/installed.php
#	sources/application/TwigBase/Controller/Controller.php
#	sources/application/TwigBase/Twig/TwigHelper.php
2022-06-02 16:30:48 +02:00
Eric Espie
23c95ebbf3 Block if event is not registered 2022-06-02 13:48:59 +02:00
acognet
265415030e N°4867 - "Twig content not allowed" error when use the extkey widget search icon in the user portal - Add comment 2022-06-02 12:35:42 +02:00
Eric Espie
e77f21a0b5 refactor Event Listeners 2022-06-01 14:29:43 +02:00
Eric Espie
35e1f080b8 Attachments events 2022-06-01 11:46:00 +02:00
Eric Espie
3d26f28f9b N°5102 - Allow to send emails (eg. notifications) using GSuite SMTP and OAuth
* Add icons to wizard
2022-06-01 11:44:02 +02:00
Eric Espie
812c1f6bb4 Migrate datamodel 2022-06-01 11:19:46 +02:00
Eric Espie
0abec767e3 Dictionaries 2022-06-01 10:45:53 +02:00
Eric Espie
9adb7f20ce Event "Compute Values" 2022-06-01 09:11:03 +02:00
Eric Espie
c7e54c66c8 Event "Compute Values" 2022-06-01 09:09:16 +02:00
Eric Espie
f6855b0d2b Display events in the datamodel page 2022-06-01 08:44:12 +02:00
Benjamin Dalsass
9fd10bd73e N°5168 - Security hardening 2022-05-31 16:28:02 +02:00
Eric Espie
1ceef602f0 Remove debug 2022-05-31 15:44:56 +02:00
Eric Espie
93cc29f4d9 refactor 2022-05-31 15:42:09 +02:00
Eric Espie
c9317542c8 refactor 2022-05-31 15:37:29 +02:00
Eric Espie
aed8337c51 Protection against reentrance for DBUpdate 2022-05-30 17:03:47 +02:00
acognet
95dafc87c0 N°4867 - "Twig content not allowed" error when use the extkey widget search icon in the user portal - Add tests 2022-05-30 15:10:50 +02:00
acognet
fe1790793e N°4898 - security hardening 2022-05-30 15:10:49 +02:00
Eric Espie
af4a5e1b8d New CRUD behaviour (removed Reload in DBInsert and DBUpdate) and protection against reentrance 2022-05-27 17:46:10 +02:00
Eric Espie
ddb95dc64e Removed laminas service manager test folder 2022-05-27 09:32:16 +02:00
Eric Espie
f6f9ee26e1 Removed laminas service manager test folder 2022-05-27 09:29:00 +02:00
Eric Espie
21faa92904 Merge branch 'support/2.7' into feature/OAuthMail 2022-05-27 09:06:28 +02:00
acognet
1fd792fed9 N°3950 - Deprecate old unreferenced methods that are @deprecated - remove application/itopwebpage.class.inc.php 2022-05-25 11:35:54 +02:00
Eric Espie
e7c09c83f0 internal doc 2022-05-25 10:59:38 +02:00
Eric Espie
56103d1952 Refactor 2022-05-25 10:38:07 +02:00
Eric Espie
301c308fec Refactor 2022-05-25 10:32:41 +02:00
Eric Espie
b827c68187 Merge branch 'develop' into feature/faf_event_service 2022-05-25 10:04:54 +02:00
Eric Espie
622f40c06c N°3169 - Add feature to connect Gsuite mail box with OAuth
N°2504 - Add feature to connect Office mail box with OAuth2 for Microsoft Graph
 * Fix legacy mailboxes compatibility
2022-05-25 08:21:16 +02:00
acognet
964134cb60 N°4867 - "Twig content not allowed" error when use the extkey widget search icon in the user portal - Remove useless code 2022-05-24 18:20:18 +02:00
Pierre Goiffon
3d541b2a2d Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	datamodels/2.x/itop-portal-base/portal/src/Twig/AppExtension.php
2022-05-24 11:29:12 +02:00
Pierre Goiffon
f0d1c3ac60 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	application/utils.inc.php
#	core/htmlsanitizer.class.inc.php
#	datamodels/2.x/itop-portal-base/portal/src/Twig/AppExtension.php
#	pages/UI.php
#	test/OQL/DataLocalizerTest.php
#	test/OQL/OQLToSQLAllClassesTest.php
#	test/OQL/OQLToSQLGroupByTest.php
#	test/OQL/OQLToSQLNestedSelectTest.php
#	test/OQL/OQLToSQLTest.php
#	test/application/UtilsTest.php
2022-05-24 11:13:28 +02:00
acognet
72f498a63b N°5168 - Fix error message "Call to a member function GetKey() on null" 2022-05-24 10:50:56 +02:00
Pierre Goiffon
f9a1f68295 N°4655 Remove OQL tests
Were only here to check legacy OQL engine, but since 2.7.0 we fixed couple of bugs in the current OQL engine : we can't keep same functionalities in both engines :/.

Plus now we are working on 2.7.7 and we're not aware of any use of this legacy engine...

Note that it will be deprecated (N°3141) and removed (N°4715) very soon.
2022-05-24 10:38:59 +02:00
Pierre Goiffon
9b67b0b9d5 Same options in phpunit config files 2022-05-23 14:53:13 +02:00
acognet
44ca8acf37 remove useless comment 2022-05-23 14:27:51 +02:00
acognet
f798ef1d76 N°4538 - Dashlet Groupby on ExternalKey with special character, bad display - remove useless test 2022-05-23 14:21:03 +02:00
Eric Espie
754946bf62 N°3169 - Add feature to connect Gsuite mail box with OAuth
N°2504 - Add feature to connect Office mail box with OAuth2 for Microsoft Graph
 * Fix legacy mailboxes compatibility
2022-05-23 12:09:40 +02:00
Eric Espie
a6580e3cd8 Merge branch 'support/2.7' into feature/OAuthMail 2022-05-23 10:56:32 +02:00
Pierre Goiffon
da6621f2ff Fix include warning in unittestautoload.php on Windows 2022-05-23 09:53:30 +02:00
Molkobain
f2d42a7e56 N°5002 - Simplify code 2022-05-20 18:41:39 +02:00
Benjamin Dalsass
d01e4b4a85 N°5168 - Security hardening 2022-05-20 16:08:25 +02:00
acognet
b371072a61 N°3141 - Deprecate legacy SQL build 2022-05-20 11:34:52 +02:00
acognet
d874b749d0 Revert N°3141 - Deprecate legacy SQL build 2022-05-20 11:22:20 +02:00
acognet
cff26563cc N°3950 - Deprecate old unreferenced methods that are @deprecated - Expression:: Render 2022-05-20 11:09:03 +02:00
Pierre Goiffon
f57d1f1de3 Fix PHPunit errors with InlineImageMock.php and UtilsTest
HTMLDOMSanitizerTest : fix "Fatal error: Cannot declare class InlineImage, because the name is already in use in /var/www/html/iTop/test/core/sanitizer/InlineImageMock.php"
We are now injecting the class to mock, instead of declaring another class with the same name (was working before but why ?!???)

\UtilsTest::testSanitizer : no more testing the "class" filter, because it is a simple indirection, and we need to load datamodel which is causing multiple problems (see the comment in the test method dataprovider)
2022-05-20 10:48:05 +02:00
acognet
fd1064b044 N°3950 - Deprecate old unreferenced methods that are @deprecated - BulkUpdate 2022-05-20 10:40:29 +02:00
Eric Espie
a3f122184c N°4642 - Core Update : limit the usage of this function - revert due to N°4666 fix 2022-05-20 10:20:47 +02:00
acognet
16fcddc249 N°4867 - "Twig content not allowed" error when use the extkey widget search icon in the user portal (regression of N°4384 ) 2022-05-20 09:52:25 +02:00
Eric Espie
2a9c9be36a N°4666 - Core Update : handle modules 2022-05-20 09:42:14 +02:00
Molkobain
6086131d3c Merge remote-tracking branch 'origin/support/3.0' into develop 2022-05-20 09:36:03 +02:00
Molkobain
227814e6c3 N°4517 - PHP 8.1: Fix missing use statement 2022-05-20 09:35:23 +02:00
Eric Espie
ca3aae23a1 N°4666 - Core Update : handle modules 2022-05-20 09:33:41 +02:00
bdalsass
4dd384e418 N°4872 - Create a ticket in resolved statut Inlineimage disappear (#294) 2022-05-20 09:26:06 +02:00
Molkobain
80e7313b24 PHPDoc 2022-05-19 17:40:14 +02:00
Eric Espie
183c3c1baf N°4666 - Core Update : handle modules 2022-05-19 16:30:06 +02:00
Eric Espie
160c52fe81 Merge branch 'support/2.7' into feature/OAuthMail 2022-05-19 14:49:48 +02:00
Benjamin Dalsass
5f0a820b4a N°4899 - add sanitizer url since annotation and tests for sanitizer function 2022-05-19 08:36:42 +02:00
Molkobain
2b0cc4d0e7 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-05-18 20:01:52 +02:00
Molkobain
60aaa01e2e N°4517 - PHP 8.1: Replace strlen() usages with utils::StrLen() for compatibility 2022-05-18 19:59:20 +02:00
Molkobain
4eb43cd02d Merge remote-tracking branch 'origin/support/3.0' into develop 2022-05-18 19:29:57 +02:00
Molkobain
d3fb08ba81 PHP 8.1: Replace strlen() usages with utils::StrLen() for compatibility 2022-05-18 18:32:48 +02:00
Benjamin Dalsass
03ef4246bf N°4899 - add sanitizer url since annotation and tests for sanitizer function 2022-05-18 12:03:07 +02:00
Benjamin Dalsass
5574eabfed N°4899 Adjust url sanitizer for 3.0 compliance 2022-05-18 10:49:23 +02:00
Molkobain
6a332ca60b Merge remote-tracking branch 'origin/support/3.0' into develop 2022-05-18 10:43:22 +02:00
Benjamin Dalsass
87f606f768 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	application/dashlet.class.inc.php
#	pages/ajax.render.php
#	pages/csvimport.php
#	test/phpunit.xml.dist
2022-05-18 10:38:50 +02:00
Pierre Goiffon
534e7cf59d N°4655 New nightly PHPUnit file containing OQL tests
Those tests were removed in 72af2b7c as they took too much time to run.
We are re-enabling them but only for nightly builds !
2022-05-18 09:35:13 +02:00
Eric Espie
e1645f6903 N°3169 - Add feature to connect Gsuite mail box with OAuth
N°2504 - Add feature to connect Office mail box with OAuth2 for Microsoft Graph
N°5102 - Allow to send emails (eg. notifications) using GSuite SMTP and OAuth
 * Config messages
 * Fix unit tests
2022-05-18 08:41:58 +02:00
Benjamin Dalsass
61a2d200b4 N°4900 - Stored XSS in dashlets failed OQL query 2022-05-18 08:10:01 +02:00
Benjamin Dalsass
3d6bbe4029 Revert "N°4900 - Stored XSS in dashlets failed OQL query"
This reverts commit 562dd8fc21.
2022-05-18 08:05:19 +02:00
Thomas Casteleyn
3d04cf1cd6 🌐 Improve DBObject::CheckValue and CheckConsistency error messages (#288)
Now contains attribute code and value
2022-05-17 17:01:41 +02:00
Eric Espie
44eda676a3 N°3169 - Add feature to connect Gsuite mail box with OAuth
N°2504 - Add feature to connect Office mail box with OAuth2 for Microsoft Graph
N°5102 - Allow to send emails (eg. notifications) using GSuite SMTP and OAuth
 * 2.7 migration
2022-05-17 16:56:43 +02:00
Molkobain
eac6f07823 N°4985 - PHP 8.0: Fix optional parameter before mandatory parameter
* Method is always (once) called with the value defined in iTop
  * No Combodo extension call the method
  * No customization in the ITSM Designer (snippets / extensions) call the method
  * Calling method with only the first parameter would crash anyway
2022-05-17 16:51:50 +02:00
Pierre Goiffon
424e2a5745 💡 Fix PHPDoc for \DBObject::CheckConsistency 2022-05-17 15:52:43 +02:00
Molkobain
46713236c4 PHPDoc - Add corresponding link thanks to @pirGoif 2022-05-17 15:34:58 +02:00
Molkobain
0ef4fee0b4 N°4985 - PHP 8.0: Fix usort callback return type 2022-05-17 15:28:04 +02:00
Pierre Goiffon
82f4736ad2 N°4921 Fix cannot find object when attvalue contains special cars
Sanitization filter wasn't set, so we were filtering a bit too much :/
2022-05-17 15:13:24 +02:00
Eric Espie
1d45eff9b0 N°3169 - Add feature to connect Gsuite mail box with OAuth
N°2504 - Add feature to connect Office mail box with OAuth2 for Microsoft Graph
N°5102 - Allow to send emails (eg. notifications) using GSuite SMTP and OAuth
 * 2.7 migration
2022-05-17 10:11:15 +02:00
Benjamin Dalsass
8e97279401 N°4899 - Reflected XSS on revert_dashboard operation 2022-05-17 09:27:06 +02:00
Eric Espie
932ef780fd N°3169 - Add feature to connect Gsuite mail box with OAuth
N°2504 - Add feature to connect Office mail box with OAuth2 for Microsoft Graph
N°5102 - Allow to send emails (eg. notifications) using GSuite SMTP and OAuth
 * 2.7 migration
2022-05-17 09:06:49 +02:00
Benjamin Dalsass
59424c3126 N°4976 - CSRF in import page 2022-05-17 09:02:06 +02:00
Benjamin Dalsass
562dd8fc21 N°4900 - Stored XSS in dashlets failed OQL query 2022-05-17 08:20:26 +02:00
Vladimir Kunin
f3e601e340 🐛 N°4834 - Fix mentions working only with latin alphabet (no dash, no cyrillic, no asian, ...) (#274)
* 🐛 Add the 'pattern' parameter with the unicode Cyrillic block regex to the CKEditor mentions config.

* Revert "🐛 Add the 'pattern' parameter with the unicode Cyrillic block regex to the CKEditor mentions config."

This reverts commit 1f5ac000b6.

* 🐛 Rewrite the CKEditor Mentions plugin regexp to make it suitable for all Unicode alphabets.
2022-05-16 20:06:30 +02:00
Molkobain
cf745554fb N°4985 - PHP 8.0: Fix strlen() test condition that needs to be more strict 2022-05-16 18:04:29 +02:00
Molkobain
e909eac98e N°4985 - PHP 8.0: Fix is_callable() first param syntax in ObjectFormManager 2022-05-16 17:44:34 +02:00
Molkobain
5e42efc3ec N°4985 - PHP 8.0: Fix usort callback return type in portal's lists initialization 2022-05-16 17:44:33 +02:00
Molkobain
020937d4f6 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-05-16 16:22:53 +02:00
Molkobain
ff58fb8617 N°5172 - Add internal helpers to keep usage of null value in native PHP methods: strlen() => utils::StrLen() 2022-05-16 16:15:18 +02:00
Pierre Goiffon
98b24dff36 Merge remote-tracking branch 'origin/support/3.0.1' into support/3.0 2022-05-16 15:28:10 +02:00
Pierre Goiffon
ed9197e6ef N°4224 Fix failed Jenkins build due to "Function ReflectionType::__toString() is deprecated"
E_DEPRECATED were previously hidden on the whole test infra.
But after PHPUnit update (N°3091) we restored them.

On legacy builds we are still using PHPUnit 6 and mocks which are generating such notices. So we are now hiding them only where necessary !
2022-05-16 15:16:03 +02:00
Eric Espie
eb1d56f439 N°3169 - Add feature to connect Gsuite mail box with OAuth
N°2504 - Add feature to connect Office mail box with OAuth2 for Microsoft Graph
N°5102 - Allow to send emails (eg. notifications) using GSuite SMTP and OAuth
 * 2.7 migration
2022-05-16 14:51:12 +02:00
acognet
438b84d4ee N°3141 - Deprecate legacy SQL build 2022-05-16 09:24:42 +02:00
Molkobain
afc8354523 Code cleanup 2022-05-14 20:42:48 +02:00
Molkobain
23fab1bab0 N°4287 - Portal: Factorize TWIG extensions between portal and backoffice 2022-05-14 20:42:48 +02:00
Eric Espie
644e1ac4f6 N°3169 - Add feature to connect Gsuite mail box with OAuth
N°2504 - Add feature to connect Office mail box with OAuth2 for Microsoft Graph
N°5102 - Allow to send emails (eg. notifications) using GSuite SMTP and OAuth
 * 2.7 migration (wip)
2022-05-13 16:27:56 +02:00
Stephen Abello
4c88dbd9ac N°2504 N°3169 N°5102 Add libraries 2022-05-13 14:39:19 +02:00
Stephen Abello
11d2e62e67 N°2504 N°3169 N°5102 Correctly disable authentication button for 2.7 2022-05-13 14:38:55 +02:00
Stephen Abello
58b27a9daa N°2504 N°3169 N°5102 Handle result display 2022-05-13 14:28:38 +02:00
Stephen Abello
caf939bf58 N°2504 N°3169 N°5102 Add dictionaries 2022-05-13 14:06:11 +02:00
Eric Espie
8c217fdac9 N°3169 - Add feature to connect Gsuite mail box with OAuth
N°2504 - Add feature to connect Office mail box with OAuth2 for Microsoft Graph
N°5102 - Allow to send emails (eg. notifications) using GSuite SMTP and OAuth
 * 2.7 migration (wip)
2022-05-13 12:07:27 +02:00
Eric Espie
6b80bbeaa2 N°3169 - Add feature to connect Gsuite mail box with OAuth
N°2504 - Add feature to connect Office mail box with OAuth2 for Microsoft Graph
N°5102 - Allow to send emails (eg. notifications) using GSuite SMTP and OAuth
 * 2.7 migration (wip)
2022-05-13 11:45:42 +02:00
Eric Espie
134736dce5 N°3169 - Add feature to connect Gsuite mail box with OAuth
N°2504 - Add feature to connect Office mail box with OAuth2 for Microsoft Graph
N°5102 - Allow to send emails (eg. notifications) using GSuite SMTP and OAuth
 * 2.7 migration (wip)
2022-05-13 11:37:09 +02:00
acognet
8b26b34f96 N°4690 - Deprecate "FilterCodes" 2022-05-13 10:28:53 +02:00
Stephen Abello
4b870bcf1e N°2504 N°3169 N°5102 Add js template 2022-05-12 17:38:38 +02:00
acognet
c20cedf266 Deprecate unused and broken method 2022-05-12 17:09:16 +02:00
acognet
2165bfe8c2 Fix "undefined offset" error during "Anonymize" action 2022-05-12 14:45:18 +02:00
Eric Espie
dd8a4a0082 N°3169 - Add feature to connect Gsuite mail box with OAuth
N°2504 - Add feature to connect Office mail box with OAuth2 for Microsoft Graph
N°5102 - Allow to send emails (eg. notifications) using GSuite SMTP and OAuth
2022-05-12 14:40:55 +02:00
Molkobain
cfd0b80225 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-05-11 18:14:00 +02:00
Molkobain
865aaf0191 Merge branch 'support/3.0' into develop 2022-05-11 18:12:46 +02:00
Molkobain
c1f335fedb Merge remote-tracking branch 'origin/support/3.0.1' into support/3.0 2022-05-11 18:10:46 +02:00
Molkobain
22a4a2fc5e Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	setup/wizardsteps.class.inc.php
2022-05-11 17:50:00 +02:00
Molkobain
bb2c9dedeb N°4628 - Upgrade bulma lib to v0.9.4 to avoid hack from N°4481 2022-05-11 16:55:25 +02:00
acognet
6946bb54ed Revert "Fix "undefined offset" error during "Anonymize" action"
This reverts commit b4e623d1
2022-05-11 12:38:23 +02:00
acognet
b4e623d175 Fix "undefined offset" error during "Anonymize" action 2022-05-11 10:18:58 +02:00
Timmy38
891dd31290 N°5072 - Fix default priority to undefined (null) or default value if not nullable (#279)
* Fix default priority to undefined

* Default priority : if null value not allowed, use default value for priority

* Default priority : moving code from ComputeValues() to ComputePriority()

* Default priority : re-indenting code
2022-05-10 17:36:56 +02:00
acognet
6a4217e87b N°3950 - Deprecate old unreferenced methods that are @deprecated - remove ajaxwebpage and iTopWebPage 2022-05-10 16:39:31 +02:00
Eric Espie
34cac2ac1b No autoload for deprecated class 2022-05-10 14:57:04 +02:00
Molkobain
1dd25be6ef N°4034 - Deprecate duplicated TWIG extensions class 2022-05-09 17:58:26 +02:00
acognet
f4e04477db Fix "undefined offset" error during "Anonymize" action 2022-05-09 16:08:33 +02:00
Molkobain
7bfa7fa9f4 N°2883 - Improve XML compiler robustness on branding logos 2022-05-09 14:32:03 +02:00
Molkobain
c2607c4223 N°5035 - Setup: Remove tracking image at the end of the setup 2022-05-09 13:55:06 +02:00
Molkobain
66953be67d N°5060 - Activity panel: Increase "max_history_length" conf. parameter from 50 to 200 2022-05-09 13:14:09 +02:00
Molkobain
ce355e311c N°5060 - Activity panel: Show "load more entries" buttons no matter the filters 2022-05-09 13:14:08 +02:00
acognet
0a5411d411 N°2363 - API : deprecate old linkedset update pattern 2022-05-09 10:53:53 +02:00
acognet
7598b9e29a N°3357 - Deprecate core/expression.class.inc.php 2022-05-06 17:26:29 +02:00
Pierre Goiffon
edd96d46f9 📝 CONTRIBUTING : fix version name
Rename was forgotten in b026e5ab
Thanks @hipska to have pointed this out !
2022-05-06 15:11:01 +02:00
Pierre Goiffon
00581b82f5 📝 CONTRIBUTING remove duplicate on "allow edits from maintainers" option 2022-05-06 11:11:23 +02:00
Pierre Goiffon
bab14e1489 N°4224 remove workarounds for DEPRECATED notices generated by mock
We shouldn't have the problem anymore with PHPUnit 8.5 !
2022-05-05 15:43:59 +02:00
Anne-Catherine
65a0aa7abb Update README.md 2022-05-04 10:48:33 +02:00
Anne-Catherine
261a44764d Update README.md
Change logo
2022-05-04 10:40:37 +02:00
Pierre Goiffon
b3ef9333af 💡 Added since annotation to \LogAPI::IsLogLevelEnabled 2022-05-03 17:18:07 +02:00
Pierre Goiffon
8c8ab9988c 📝 CONTRIBUTING : added the PR "allow edits from maintainers" option 2022-05-03 17:02:48 +02:00
Pierre Goiffon
fe4aa9dcd7 N°3091 Update PHPUnit to 8.5 : fix setUp and teardDown methods signatures
"Return type declaration must be compatible with parent"
See https://phpunit.de/announcements/phpunit-8.html "Return Type of Template Methods"

Was done in support/2.7 (ec143c43) but there is one new test in this branch...
2022-05-03 11:14:59 +02:00
Pierre Goiffon
1fb0911710 🔧 N°3091 postbuild PHPunit XML : change html_errors PHP setting 2022-05-03 10:53:32 +02:00
Pierre Goiffon
a71a5f53f7 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	core/email.class.inc.php
2022-05-03 10:52:50 +02:00
Pierre Goiffon
867cc6ce7e Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2022-05-03 10:52:01 +02:00
Pierre Goiffon
b348e0ff27 🔧 N°3091 PHPunit XML : change html_errors PHP setting
We are outputting to console, and will get results in Jenkins or terminal, so no HTML please :o)
2022-05-03 10:51:48 +02:00
Pierre Goiffon
4646a05c7a N°4824 Update consumers after swiftmailer/swiftmailer
Multiple things to do as there were some changes in 6.0
Reference : https://github.com/swiftmailer/swiftmailer/blob/master/CHANGES#L107

* Fix "Call to undefined method Swift_Message::newInstance()" exception in notifications
* Fix removed Swift_MailTransport
2022-05-03 09:35:48 +02:00
Pierre Goiffon
84e35e27b8 N°5143 Fix FunctionExpression for DATE_FORMAT and formats %j, %k and %l 2022-05-02 18:59:10 +02:00
Pierre Goiffon
c5527c106c 🔧 N°3091 PHPunit XML : set columns 2022-05-02 15:33:39 +02:00
Pierre Goiffon
5eac1b8730 🔧 N°3091 PHPunit XML : fix correct PHP INI settings
see https://phpunit.readthedocs.io/en/8.5/configuration.html#the-php-element
2022-05-02 15:25:59 +02:00
Pierre Goiffon
197bad19ab Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	composer.json
#	composer.lock
#	lib/autoload.php
#	lib/composer/autoload_real.php
#	lib/composer/autoload_static.php
#	lib/composer/installed.php
#	lib/true/punycode/LICENSE
#	sources/Composer/iTopComposer.php
2022-05-02 14:33:29 +02:00
Pierre Goiffon
603934bac1 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	composer.lock
#	lib/composer/installed.php
2022-05-02 09:43:33 +02:00
Pierre Goiffon
0de15d040f ⬇️ N°4824 rollback scssphp/scssphp update (won't be done in this branch !) 2022-05-02 09:15:48 +02:00
Pierre Goiffon
41d032eee6 N°4284 Update BackOffice JQuery UI SCSS to remove SCSSPHP warnings 2022-05-02 08:48:28 +02:00
Pierre Goiffon
c4ae94fd4c Update denied test dirs 2022-04-29 17:15:50 +02:00
Pierre Goiffon
afaf72573b N°4284 remove unused dependencies 2022-04-29 17:13:58 +02:00
Pierre Goiffon
32ed40e733 N°4284 remove unused dependencies 2022-04-29 17:11:10 +02:00
Pierre Goiffon
fa5644064a 📄 N°4284 N°4307 Update licenses 2022-04-29 16:43:56 +02:00
Pierre Goiffon
dd3f77a397 Update lib test dirs 2022-04-29 16:41:38 +02:00
Pierre Goiffon
909fb4c75b Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	composer.json
#	composer.lock
#	core/email.class.inc.php
#	lib/composer/autoload_classmap.php
#	lib/composer/autoload_files.php
#	lib/composer/autoload_psr4.php
#	lib/composer/autoload_static.php
#	lib/composer/installed.json
#	lib/composer/installed.php
#	lib/swiftmailer/swiftmailer/.gitattributes
#	lib/swiftmailer/swiftmailer/.gitignore
#	lib/swiftmailer/swiftmailer/.php_cs.dist
#	lib/swiftmailer/swiftmailer/CHANGES
#	lib/swiftmailer/swiftmailer/LICENSE
#	lib/swiftmailer/swiftmailer/composer.json
#	lib/swiftmailer/swiftmailer/lib/classes/Swift.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Attachment.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/ByteStream/AbstractFilterableInputStream.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/ByteStream/ArrayByteStream.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/ByteStream/FileByteStream.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/ByteStream/TemporaryFileByteStream.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/CharacterReader/GenericFixedWidthReader.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/CharacterReader/UsAsciiReader.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/CharacterReader/Utf8Reader.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/CharacterReaderFactory/SimpleCharacterReaderFactory.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/CharacterStream.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/CharacterStream/ArrayCharacterStream.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/CharacterStream/NgCharacterStream.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/ConfigurableSpool.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/DependencyContainer.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/EmbeddedFile.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Encoder/Base64Encoder.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Encoder/QpEncoder.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Encoder/Rfc2231Encoder.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Events/CommandEvent.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Events/CommandListener.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Events/EventDispatcher.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Events/EventObject.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Events/ResponseEvent.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Events/ResponseListener.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Events/SendEvent.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Events/SendListener.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Events/SimpleEventDispatcher.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Events/TransportChangeListener.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Events/TransportExceptionEvent.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Events/TransportExceptionListener.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/FailoverTransport.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/FileSpool.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Filterable.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Image.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/InputByteStream.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/IoException.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/KeyCache.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/KeyCache/ArrayKeyCache.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/KeyCache/DiskKeyCache.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/KeyCache/KeyCacheInputStream.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/KeyCache/NullKeyCache.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/KeyCache/SimpleKeyCacheInputStream.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/LoadBalancedTransport.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Mailer.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Mailer/ArrayRecipientIterator.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/MemorySpool.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Message.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Attachment.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/Base64ContentEncoder.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/NativeQpContentEncoder.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/PlainContentEncoder.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/QpContentEncoder.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/QpContentEncoderProxy.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/RawContentEncoder.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Mime/EmbeddedFile.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Mime/EncodingObserver.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Header.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Mime/HeaderEncoder/Base64HeaderEncoder.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Mime/HeaderEncoder/QpHeaderEncoder.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/AbstractHeader.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/DateHeader.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/IdentificationHeader.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/OpenDKIMHeader.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/ParameterizedHeader.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/PathHeader.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/UnstructuredHeader.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Mime/MimePart.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleHeaderFactory.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleHeaderSet.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleMessage.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleMimeEntity.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/MimePart.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/NullTransport.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/AntiFloodPlugin.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/BandwidthMonitorPlugin.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/DecoratorPlugin.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/ImpersonatePlugin.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/LoggerPlugin.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Loggers/ArrayLogger.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Loggers/EchoLogger.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/MessageLogger.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/PopBeforeSmtpPlugin.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/RedirectingPlugin.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Reporter.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/ReporterPlugin.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Reporters/HitReporter.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Reporters/HtmlReporter.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/ThrottlerPlugin.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Preferences.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/SendmailTransport.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Signer.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Signers/BodySigner.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Signers/DKIMSigner.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Signers/DomainKeySigner.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Signers/HeaderSigner.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Signers/OpenDKIMSigner.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Signers/SMimeSigner.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/SmtpTransport.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Spool.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/SpoolTransport.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/StreamFilters/ByteArrayReplacementFilter.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilter.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilterFactory.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/SwiftException.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Transport.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/CramMd5Authenticator.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/LoginAuthenticator.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/NTLMAuthenticator.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/PlainAuthenticator.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/XOAuth2Authenticator.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/AuthHandler.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Authenticator.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Transport/EsmtpHandler.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Transport/EsmtpTransport.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Transport/FailoverTransport.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Transport/IoBuffer.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Transport/LoadBalancedTransport.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Transport/NullTransport.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Transport/SendmailTransport.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Transport/SmtpAgent.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Transport/SpoolTransport.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php
#	lib/swiftmailer/swiftmailer/lib/classes/Swift/TransportException.php
#	lib/swiftmailer/swiftmailer/lib/dependency_maps/cache_deps.php
#	lib/swiftmailer/swiftmailer/lib/dependency_maps/mime_deps.php
#	lib/swiftmailer/swiftmailer/lib/dependency_maps/transport_deps.php
#	lib/swiftmailer/swiftmailer/lib/mime_types.php
#	lib/swiftmailer/swiftmailer/lib/preferences.php
#	lib/swiftmailer/swiftmailer/lib/swift_required.php
#	lib/swiftmailer/swiftmailer/lib/swiftmailer_generate_mimes_config.php
2022-04-29 16:37:39 +02:00
Pierre Goiffon
ddd41d2ba7 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	composer.json
#	composer.lock
#	core/email.class.inc.php
#	css/ui-lightness/jqueryui.scss
#	lib/bin/php-parse
#	lib/bin/php-parse.bat
#	lib/composer/autoload_classmap.php
#	lib/composer/autoload_static.php
#	lib/composer/installed.json
#	lib/composer/installed.php
#	lib/composer/platform_check.php
#	lib/nikic/php-parser/grammar/php7.y
#	lib/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php
#	lib/nikic/php-parser/lib/PhpParser/Builder/Param.php
#	lib/nikic/php-parser/lib/PhpParser/Builder/Property.php
#	lib/nikic/php-parser/lib/PhpParser/BuilderFactory.php
#	lib/nikic/php-parser/lib/PhpParser/BuilderHelpers.php
#	lib/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php
#	lib/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php
#	lib/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php
#	lib/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php
#	lib/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php
#	lib/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php
#	lib/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php
#	lib/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php
#	lib/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php
#	lib/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php
#	lib/nikic/php-parser/lib/PhpParser/Node/Param.php
#	lib/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php
#	lib/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php
#	lib/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php
#	lib/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php
#	lib/nikic/php-parser/lib/PhpParser/Node/UnionType.php
#	lib/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php
#	lib/nikic/php-parser/lib/PhpParser/Parser/Php7.php
#	lib/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php
#	lib/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php
#	test/core/ConfigValidator/iTopConfigAstValidatorTest.php
2022-04-29 16:18:08 +02:00
Pierre Goiffon
1e8818984e 📄 N°4284 Update licenses 2022-04-29 15:53:03 +02:00
Pierre Goiffon
a023f73509 N°4284 Update jquery UI SCSS to remove SCSSPHP warnings
Replace "Alpha(..." with "alpha(..."

Example of warning at compilation with SCSSPHP :

DEPRECATION WARNING: Calling built-in functions with a non-standard name is deprecated since Scssphp 1.8.0 and will not work anymore in 2.0 (they will be treated as CSS function calls instead).
Use "alpha" instead of "Alpha".
         on line 55 of /var/www/html/iTop/css/../css/ui-lightness/jqueryui.scss
2022-04-29 15:39:26 +02:00
Pierre Goiffon
6f0e1a7f47 N°4824 Update consumers after swiftmailer/swiftmailer update
Also remove new Doctrine test dir (iTopComposerTest feedback)
2022-04-29 15:24:56 +02:00
Pierre Goiffon
0ef9bb1a47 ⬆️ N°4824 Composer libs : update swiftmailer/swiftmailer 2022-04-29 15:24:56 +02:00
Pierre Goiffon
71ceedc4bb 🔨 N°4284 Detect new test dirs on composer update 2022-04-29 15:24:56 +02:00
Pierre Goiffon
73c3c1249f ⬆️ N°4824 Composer libs : update scssphp/scssphp 2022-04-29 15:24:56 +02:00
Pierre Goiffon
88a10dba28 N°4824 Update consumers after pelago/emogrifier update 2022-04-29 15:24:56 +02:00
Pierre Goiffon
001e222f67 ⬆️ N°4824 Composer libs : update pelago/emogrifier 2022-04-29 15:24:56 +02:00
Pierre Goiffon
af8bcdc242 ⬆️ N°4824 Composer libs : update pear/archive_tar 2022-04-29 15:24:56 +02:00
Pierre Goiffon
f4c7afc148 N°4824 Update consumers & tests after nikic/php-parser update
Was done in 3.0.0 with N°3867
(cherry picked from commit cd1ba097cb)
(cherry picked from commit 5b42f67a99)
(cherry picked from commit 2d98ca2318)
(cherry picked from commit ddc5bbd1bb)
2022-04-29 15:24:56 +02:00
Pierre Goiffon
b19c73a36e ⬆️ N°4284 Composer libs : update nikic/php-parser
Was done in 3.0.0 with N°3867
2022-04-29 15:24:55 +02:00
Pierre Goiffon
5fe0d0b94f ⬆️ N°4284 Composer libs : update combodo/tcpdf 2022-04-29 15:18:41 +02:00
Pierre Goiffon
f8d435d5f3 N°4284 Composer libs : refresh symfony 2022-04-29 15:18:41 +02:00
Pierre Goiffon
f15ef36fd1 N°4284 Composer libs : remove symfony/polyfill-php70
Though it is still downloaded because asked by symfony framework, but as we don't need it in our code no need to specify it here !
2022-04-29 15:18:41 +02:00
Pierre Goiffon
64b25c4daa 📌 N°4284 Composer libs : fix twig/twig to ~1.42.5
Without specifying explicitly the Twig version, since the update of require php from 5.6 to 7.0 we are getting Twig 2.12.5 !
We don't want Twig 2 as this version changes the macro scope and causes massive changes in our code... This update will be done later in other branches.
2022-04-29 15:15:32 +02:00
vdumas
c0f0e354dd N°5124 - ConnectableCI to NetworkDevice update failing 2022-04-26 13:03:43 +02:00
vdumas
d6f58d04f1 N°4702 - DataModel : wrong attribute type for SLA.customercontracts_list 2022-04-25 15:08:46 +02:00
vdumas
cc88ee1de0 Revert "N°4702 - DataModel : wrong attribute type for SLA.customercontracts_list"
This reverts commit 6b7183d500706a2bcf6340eca3478a7ca22ce7e3.
2022-04-25 15:08:46 +02:00
vdumas
8008e4d840 N°4702 - DataModel : wrong attribute type for SLA.customercontracts_list 2022-04-25 15:08:46 +02:00
Molkobain
a4390fbb57 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	test/application/search/CriterionConversionTest.php
#	test/application/search/CriterionParserTest.php
#	test/application/search/SearchFormTest.php
2022-04-25 14:03:02 +02:00
vdumas
f4170ade8a N°4702 - DataModel : wrong attribute type for SLA.customercontracts_list 2022-04-25 10:23:12 +02:00
Pierre Goiffon
e81587470d N°3091 Fix ExpressionEvaluateTest::testEveryTimeFormat
Might need a real fix sometime !!
2022-04-22 17:06:03 +02:00
Pierre Goiffon
fc6df1063c N°4660 restore old phpunit testsuites order
Was causing error in DataSynchroTest::testDataSynchroByHttp
2022-04-22 16:29:01 +02:00
Pierre Goiffon
5a37bc338a N°3091 Update PHPUnit to 8.5 : fix setUp and teardDown methods signatures on support/3.0 new tests 2022-04-22 16:04:54 +02:00
Pierre Goiffon
f4a027b474 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	composer.json
#	core/cmdbchangeop.class.inc.php
#	core/cmdbobject.class.inc.php
#	css/light-grey.scss
#	setup/setuputils.class.inc.php
#	test/ItopTestCase.php
#	test/core/ConfigTest.php
#	test/core/LogAPITest.php
#	test/core/UserRightsTest.php
#	test/core/dictApcuTest.php
#	test/core/dictTest.php
#	test/core/iTopConfigParserTest.php
#	test/core/ormLinkSetTest.php
#	test/phpunit.xml.dist
#	test/postbuild_integration.xml.dist
#	test/setup/SetupUtilsTest.php
#	test/status/StatusIncTest.php
#	webservices/cron.php
2022-04-22 15:26:18 +02:00
Pierre Goiffon
d0ba0d193b N°3091 iTopComposerTest : change deprecated PHPUnit method call 2022-04-22 14:42:12 +02:00
vdumas
1d9a9bcb28 N°3889 - Missing default search zlist on SLA and SLT 2022-04-22 12:52:01 +02:00
Stephen Abello
178ba60973 N°4307 Replace SwiftMailer with Laminas-mail 2022-04-22 10:58:28 +02:00
Pierre Goiffon
8e6e2432d3 Extensibility : iPortalUIExtension and AbstractPortalUIExtension aren't experimental anymore 2022-04-21 17:29:40 +02:00
Molkobain
83ec19dfca Remove duplicated lines in .gitignore 2022-04-21 14:26:56 +02:00
Pierre Goiffon
6e619f2c35 Fix \iTopConfigParserTest::testConfigWriteToFile_FromScratchInstallation throwing error 2022-04-21 12:02:35 +02:00
Pierre Goiffon
163ba41e8d N°3091 Update PHPUnit to 8.5 : remove doesNotPerformAssertions annotation
Modified tests :
- iTopConfigParsertest
- DBSearchIntersectTest::testIntersectOptimization

As expected this isn't working with PHPUnit 8.5
Why does it worked with previous PHPUnit 6 version ? Maybe this annotation wasn't handled yet ? The corresponding PHPUnit doc isn't available anymore...

Annotations doc for PHP 8.5 : https://phpunit.readthedocs.io/en/8.5/annotations.html#doesnotperformassertions
2022-04-21 12:02:35 +02:00
Pierre Goiffon
ec143c43db N°3091 Update PHPUnit to 8.5 : fix setUp and teardDown methods signatures
"Return type declaration must be compatible with parent"
See https://phpunit.de/announcements/phpunit-8.html "Return Type of Template Methods"
2022-04-21 12:02:35 +02:00
Pierre Goiffon
cacf0004a5 🙈 N°3091 Update PHPUnit to 8.5 : add PHPunit cache file to ignore
We don't want to disable the feature, nor we want this file to be versionned
https://phpunit.readthedocs.io/en/8.5/configuration.html#the-cacheresult-attribute
2022-04-21 12:02:35 +02:00
Pierre Goiffon
cb39541e2a N°3091 Update PHPUnit to 8.5 : composer and base files
Autoload wasn't working anymore, easy to see : just launch `php unittestautoload.php` (or see fatal errors when launching tests with your IDE)
2022-04-21 10:47:30 +02:00
Pierre Goiffon
b9ddadeb44 N°5109 update PHP requirements from 5.6 to 7.0
No embedded libs supports all versions from PHP 5.6 to 8.0 included :/
7.0.8 is required for our Symfony version (updated with N°4770)
2022-04-20 17:29:20 +02:00
Benjamin Dalsass
dabd2a3f4d N°5101 - Setup error when semantic field attribute code is not defined in current class 2022-04-20 14:32:03 +02:00
Pierre Goiffon
11e811cc4b N°3717 Improve iTop object history API (#192)
This fixes a major flaw in the history API that was causing "phantom" CMDBChange records (without any CMDBChangeOp attached). That was happening especially in iProcess impl.
For example this lead to the creation of the combodo-cmdbchange-cleaner module in the Mail To Ticket extension.

The modifications in detail : 
- We can now pass a non persisted CMDBChange instance to \CMDBObject::SetCurrentChange
- No persistence done in \CMDBObject::CreateChange anymore
- Persistence of the attached CMDChange will be done if necessary in CMDBChangeOp::OnInsert
- New CMDBObject::SetCurrentChangeFromParams helper method to ease resetting the current change
2022-04-19 17:13:18 +02:00
Pierre Goiffon
c47f224566 💡 N°4919 add @since 2022-04-19 15:29:35 +02:00
Pierre Goiffon
8fcd454445 N°4919 New 'Launch setup" in Application Upgrade (#244)
Admin will now be able to re-launch the iTop setup directly from the administration console in the Administration / Application Upgrade screen.
Before the only way to launch setup on an existing iTop instance was to change permissions on the configuration file.

This button will be enabled depending on the isDevEnv (if true it will be displayed) and `setup.launch_button.enabled` new configuration parameter (not present by default ; if set to false will always hide the button, if set to true will always display it, if not set will display button depending on isDevEnv only).

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
2022-04-19 14:36:15 +02:00
Pierre Goiffon
e422adb0d0 N°4998 Fix CSS for AttributeDuration in transition form (#281) 2022-04-19 12:25:15 +02:00
Molkobain
b03e28efb9 N°4966 - Code cleanup 2022-04-19 12:13:14 +02:00
Pierre Goiffon
7b3d859522 N°5027 AttributeUrl handle anchors starting with digits 2022-04-19 10:57:47 +02:00
Stephen Abello
ba9d5f0c4b N°3607 Handle error and fix unit test 2022-04-19 09:31:02 +02:00
Pierre Goiffon
e02d9f3f0e 💡 N°5090 Improve phpdoc using list array shape 2022-04-15 17:43:20 +02:00
Pierre Goiffon
e831d66b76 N°5090 Setup : improve missing dependencies message (#280)
The setup now relies on the new method MissingDependencyException::getHtmlDesc to get the message to display
MissingDependencyException is also now a CoreException child.

Note that previous behavior (MissingDependencyException instantiator setting message) is kept, as some consumer still do $e->getMessage() (like unattended install)
2022-04-15 17:30:05 +02:00
Stephen Abello
0efc978004 N°3607 Change XML node format 2022-04-15 15:48:21 +02:00
acognet
6fa2d47780 N°4538 - Dashlet Groupby on ExternalKey with special character, bad display 2022-04-15 10:03:04 +02:00
acognet
e691454339 N°5002 - memory leak after object creation in popup 2022-04-15 10:00:08 +02:00
acognet
079b406f18 N°4966 - No more custom dashboard switch 2022-04-15 09:54:41 +02:00
Timothee
dbe02a42c2 N°4888 New url() placeholder 2022-04-14 12:05:41 +02:00
Molkobain
b026e5ab87 Update branches examples on contributing guide 2022-04-13 16:22:02 +02:00
Molkobain
1e75154cc7 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-04-13 16:15:26 +02:00
Molkobain
94365ea40e Update contributors stickers image to 2022! 🚀 2022-04-13 16:05:00 +02:00
Thomas Casteleyn
e4a04de9f4 N°5066 - Clean CMDBSource methods (#229)
* Improve function calls

* Deprecate CMDBSource::GetServerInfo

* Improve documentation

* Update core/cmdbsource.class.inc.php

Co-authored-by: Pierre Goiffon <pierre.goiffon@combodo.com>

* Single quotes

* Apply suggestion, so  method still returns empty string instead of null

Co-authored-by: Pierre Goiffon <pierre.goiffon@combodo.com>
2022-04-12 17:10:41 +02:00
Timothee
645e612e8b N°5042 - Fixing inconsistent "Problem" tickets display compared to other types of tickets 2022-04-12 14:49:15 +02:00
Stephen Abello
26a78a10bc N°3607 Allow extensions to register variables/stylesheets to be compiled with every theme 2022-04-12 10:23:50 +02:00
Eric Espie
8ba28adf68 Refactor 2022-04-08 15:10:58 +02:00
Molkobain
1feb5e6ad6 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-04-08 13:32:08 +02:00
Molkobain
2716f9d24c Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	core/config.class.inc.php
2022-04-08 13:30:42 +02:00
Stephen Abello
bac2918ceb N°5028 Revert default logos by png ones 2022-04-08 09:46:26 +02:00
Pierre Goiffon
92997e3e57 💡 N°2498 add @since 2022-04-08 08:54:07 +02:00
Eric Espie
34a26d33a1 Fix reloads 2022-04-07 18:15:18 +02:00
Eric Espie
b0a55e057b Events to cmdbAbstract 2022-04-07 17:02:19 +02:00
Stephen Abello
604837c770 N°5028 Fix updated default logo in error webpages 2022-04-07 16:46:39 +02:00
Molkobain
f32c283c9c N°4759 - Navigation menu: Fix menu groups icons glitch when switching between collapsed / expanded mode 2022-04-07 16:02:06 +02:00
Stephen Abello
27d06a712b N°5028 Update setup favicon to default one 2022-04-07 15:01:07 +02:00
Stephen Abello
b15050487c N°5028 Fix updated default logo in unauthenticated webpages 2022-04-07 14:59:48 +02:00
Stephen Abello
46f232d561 N°4759 Harmonize top and bottom space around branding logo 2022-04-07 11:04:24 +02:00
Stephen Abello
63976df2e1 N°5028 Update iTop and Combodo logos to new ones 2022-04-07 11:03:32 +02:00
Eric Espie
5ac9b05b2d new CRUD 2022-04-06 23:51:21 +02:00
Eric Espie
63e582a07f Unit tests 2022-04-05 10:30:47 +02:00
Eric Espie
470076daa2 Unit tests 2022-04-05 10:29:52 +02:00
Eric Espie
f6d92a189b CRUD reentrance protection 2022-04-05 10:28:12 +02:00
Molkobain
42599eae64 N°3838 - Improve PHPDoc of \DBObjectSearch::AddCondition() as it cannot have multiple condition on the same field 2022-04-04 17:49:41 +02:00
Molkobain
3514e21772 Revert precompiled themes update 2022-04-04 10:54:11 +02:00
Molkobain
3463b1715a N°4674 - CKEditor: Fix space indentation in code blocks 2022-04-04 10:21:52 +02:00
Eric Espie
c788c93542 Merge branch 'develop' into feature/faf_event_service 2022-03-30 08:22:47 +02:00
acognet
b75f29b8d7 N°3067 - Cannot edit in place attributes with HTML editors 2022-03-28 14:18:54 +02:00
Eric Espie
81d285a143 CEX SDK V2:
* Pre and post actions
2022-03-28 09:43:46 +02:00
Pierre Goiffon
631b38a160 N°5003 Change cron_max_execution_time config param help text 2022-03-25 15:56:11 +01:00
Eric Espie
0287500feb N°4999 - Wrong object save order in activity panel 2022-03-25 09:31:16 +01:00
Molkobain
e4cbaf7096 Typo 2022-03-23 10:23:35 +01:00
Molkobain
ad4442ae78 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-03-23 09:49:11 +01:00
Molkobain
73c6b4be20 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	test/core/DBObjectTest.php
2022-03-23 09:44:13 +01:00
Molkobain
fde2103659 👥 Add link to contributors' GitHub profile 2022-03-23 09:42:31 +01:00
Molkobain
24500216f6 👥 Add @ChristianBeer to contributors list! 🙌 2022-03-23 09:41:24 +01:00
acognet
2039b872d3 N°4977 - Wrong result in search on a Service subcategory for Service provider 2022-03-22 17:06:05 +01:00
Molkobain
b368c593e5 N°4462 - Improve message to explicitly say next "major" release 2022-03-22 12:25:52 +01:00
Stephen Abello
c9c731a2a5 N°3541 Split button and button-group js in 2 different files 2022-03-22 10:16:17 +01:00
acognet
8204723b5b N°4667 - Remove call to tooltip function - change type of preview (fix seen with Guillaume) 2022-03-21 15:14:30 +01:00
acognet
f93218a80f N°4479 - Impact analysis : Display and apply filter before display impact analysis graphical - fix var name 2022-03-21 11:11:47 +01:00
Molkobain
4f5a9c898c N°4462 - Set next min. PHP version for iTop 3.1
Note: This might change to PHP 7.2 this summer depending on RedHat 9.0 release date / plans
2022-03-21 09:51:23 +01:00
Eric Espie
7ce5712b71 N°4967 - 'Previous Values For Updated Attributes' not updated if DBUpdate is called without modifying the object 2022-03-21 08:43:03 +01:00
acognet
90b41e0b81 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	core/displayablegraph.class.inc.php
#	pages/UI.php
2022-03-18 15:51:45 +01:00
Pierre Goiffon
9d2c89f118 N°4959 Fix graph dashlet not refreshed
Previous fix in e4501389 was incomplete, cause passing empty as id isn't handled in called method.
2022-03-18 15:16:52 +01:00
acognet
61137a6f65 N°4479 - Impact analysis : Display and apply filter before display impact analysis graphical - Fix dictionnary 2022-03-18 11:02:04 +01:00
acognet
a26c8fbd48 N°4971 - "Please specify a value" does not disappear after selecting the value via the popup 2022-03-17 17:39:31 +01:00
Pierre Goiffon
0080a2e733 💡 N°3129 Fix phpdoc
Method was renamed in 45b5c39a but I forgot to update the PHPDoc
2022-03-17 15:36:39 +01:00
acognet
992ee3a74b N°4667 - Remove call to tooltip function - tooltip on attachment in portal 2022-03-17 12:53:03 +01:00
acognet
e45013891c N°4959 - Chart update fails in dashboard 2022-03-16 11:05:50 +01:00
acognet
1db4b9a12e Merge remote-tracking branch 'origin/support/3.0' into develop 2022-03-16 09:44:33 +01:00
Eric Espie
a773f0d8a2 EventService: refactoring 2022-03-15 17:53:38 +01:00
Eric Espie
29c6b73d93 EventService: refactoring 2022-03-15 17:50:13 +01:00
Eric Espie
5b52ca4776 EventService: phpdoc 2022-03-15 15:45:03 +01:00
Eric Espie
8ddaf1b731 EventService: call FireEvent with only one parameter (PSR14) 2022-03-15 15:41:55 +01:00
Eric Espie
964ce44577 EventService: code cleanup 2022-03-15 15:11:57 +01:00
acognet
ea043960ff Rename the map file. We are using the min version 2022-03-15 11:23:57 +01:00
acognet
d0f83046cd Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	datamodels/2.x/itop-files-information/dictionaries/pt_br.dict.itop-files-information.php
#	datamodels/2.x/itop-files-information/dictionaries/zh_cn.dict.itop-files-information.php
2022-03-15 10:56:01 +01:00
Eric Espie
cea6c557ce Merge branch 'develop' into feature/faf_event_service 2022-03-15 10:52:45 +01:00
acognet
7f4fddb378 N°4644 - Core update : confusing warning message when integrity of iTop std files is modified - fix default translation 2022-03-15 10:52:19 +01:00
Stephen Abello
9cd076131f N°3541 Add event listener to enable/disable loading state for buttons group block 2022-03-14 15:32:42 +01:00
acognet
a71cb97db3 N°4644 - Core update : confusing warning message when integrity of iTop std files is modified - fix comment 2022-03-14 15:30:35 +01:00
acognet
0c80a4e430 N°4644 - Core update : confusing warning message when integrity of iTop std files is modified - merge from 2.7.0 2022-03-14 15:28:47 +01:00
acognet
779211e638 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	datamodels/2.x/itop-core-update/dictionaries/cs.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/dictionaries/da.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/dictionaries/de.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/dictionaries/en.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/dictionaries/es_cr.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/dictionaries/fr.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/dictionaries/hu.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/dictionaries/it.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/dictionaries/ja.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/dictionaries/nl.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/dictionaries/ru.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/dictionaries/sk.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/dictionaries/tr.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/dictionaries/zh_cn.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/pt_br.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/view/SelectUpdateFile.html.twig
#	datamodels/2.x/itop-datacenter-mgmt/dictionaries/pl.dict.itop-datacenter-mgmt.php
#	datamodels/2.x/itop-endusers-devices/dictionaries/pl.dict.itop-endusers-devices.php
#	datamodels/2.x/itop-files-information/src/Service/FilesIntegrity.php
2022-03-14 15:17:28 +01:00
acognet
4c99f497cc N°4644 - Core update : confusing warning message when integrity of iTop std files is modified - List all modified files 2022-03-14 14:45:07 +01:00
Stephen Abello
d1e2be97d2 Typo in cron_task_max_execution_time description 2022-03-14 11:46:27 +01:00
Stephen Abello
93c6cfffda N°4931 Fix background tasks max duration being set to 3 times its periodicity 2022-03-14 09:35:46 +01:00
Molkobain
b50ba0ad49 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2022-03-13 20:36:49 +01:00
Molkobain
0205cdf713 N°4791 - Portal: Fix "Twig not allowed" error when transition form has no editable field (auto redirect)
Regression from b6fac4b4
2022-03-13 18:15:49 +01:00
Molkobain
39fc59a8b2 Code cleanup 2022-03-13 17:55:04 +01:00
Molkobain
107c9adf60 N°4791 - Expand usage of ObjectFormHandlerHelper::ENUM_MODE_XXX constants for better robustness / comprehension 2022-03-13 17:29:55 +01:00
Molkobain
143c30b099 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	datamodels/2.x/itop-core-update/cs.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/da.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/de.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/en.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/es_cr.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/fr.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/hu.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/it.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/ja.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/nl.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/pt_br.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/ru.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/sk.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/src/Service/CoreUpdater.php
#	datamodels/2.x/itop-core-update/tr.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/view/ConfirmUpdate.html.twig
#	datamodels/2.x/itop-core-update/zh_cn.dict.itop-core-update.php
2022-03-11 18:03:21 +01:00
Molkobain
d29880b1b8 Update PHPDoc 2022-03-11 17:52:10 +01:00
acognet
3edfc2016d Fix typo 2022-03-11 15:41:12 +01:00
Molkobain
5f80be75ed N°4938 - Fix remaining broken AJAX endpoints in ajax.render.php 2022-03-11 10:47:05 +01:00
Molkobain
0d4796ae2b N°4938 - Fix background calls broken by lazy JS dictionaries loads 2022-03-11 09:34:27 +01:00
acognet
2d156bd77b N°4642 - Core Update : limit the usage of this function - disable if new modules found 2022-03-10 16:47:21 +01:00
Pierre Goiffon
5908ec5197 N°4515 AttributeURLTest : add SF forum url 2022-03-10 16:42:43 +01:00
acognet
d122dbfdd6 N°4642 - Core Update : limit the usage of this function - disable if new modules found 2022-03-10 16:06:37 +01:00
acognet
46d58e6512 N°4642 - Core Update : limit the usage of this function - disable if new modules found 2022-03-10 15:24:29 +01:00
Christian Beer
6cf781da33 🌐 Improve German translation (#277)
Many thanks @ChristianBeer for this great contribution, and @larhip for the validation !
2022-03-10 14:16:59 +01:00
Molkobain
0f2cbaf186 N°4849 - Enable notification emails grouping in threads in email clients (#275)
N°4849 - Enable notification emails grouping in threads in email clients (#275)
Co-authored-by: Thomas Casteleyn <thomas.casteleyn@super-visions.com>
2022-03-10 09:31:29 +01:00
Molkobain
7ddb47dc83 N°4312 - Activity panel: Fix JS error on object without tabs (typically DBObject instead of cmdbAbstractObject)
Regression from b9c5f2c523
2022-03-09 20:06:19 +01:00
Molkobain
f4ecdf116a Merge remote-tracking branch 'origin/support/3.0' into develop 2022-03-09 19:55:35 +01:00
Molkobain
304e379c01 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	datamodels/2.x/itop-core-update/cs.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/da.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/de.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/en.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/es_cr.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/fr.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/hu.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/it.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/ja.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/nl.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/pt_br.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/ru.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/sk.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/tr.dict.itop-core-update.php
#	datamodels/2.x/itop-core-update/view/SelectUpdateFile.html.twig
#	datamodels/2.x/itop-core-update/view/SelectUpdateFile.ready.js.twig
#	datamodels/2.x/itop-core-update/zh_cn.dict.itop-core-update.php
2022-03-09 18:31:34 +01:00
Molkobain
93a138606f N°4664 - Core Update : block zip file upload until instance declared OK 2022-03-09 18:21:08 +01:00
Molkobain
70074ee1cb N°4644 - Core update: Update translations with missing entry 2022-03-09 17:31:22 +01:00
Molkobain
d28ccb264f N°4644 - Core update : confusing warning message when integrity of iTop std files is modified
(cherry picked from commit 69a0bd0c34)
2022-03-09 17:28:38 +01:00
Pierre Goiffon
8d4545f008 N°4921 - Add support for attcode & attvalue parameters in URL to access an object (#273)
This is a way to solve problems when an object ref and id isn't equals : for example id=99 and ref = 100.
This could happen since iTop 2.7.0, see https://www.itophub.io/wiki/page?id=2_7_0%3Arelease%3A2_7_whats_new#ticket_ref_generation

Note that id parameter can be set to the object's friendlyname as a workaround, but this might not be enough for some objects where friendlyname contains more that the ref field (for example title, org, ...)

* Admin console : new UI.php URL parameters : attcode and attvalue.
Example URLs : 
/pages/UI.php?operation=details&class=UserRequest&id=99
/pages/UI.php?operation=details&class=UserRequest&attcode=ref&attvalue=R-000100

An exception will be thrown if no object is found or multiple instances are.

* User portal
New route : /object/view/{sObjectClass}/{sObjectAttCode}/{sObjectAttValue}
For example :
/pages/exec.php/object/view/UserRequest/99?exec_module=itop-portal-base&exec_page=index.php&portal_id=itop-portal
/pages/exec.php/object/view/UserRequest/ref/R-000100?exec_module=itop-portal-base&exec_page=index.php&portal_id=itop-portal

On error we will get a 404 error page
2022-03-09 10:51:21 +01:00
Thomas Casteleyn
9f95d45f51 Fix check on when to load JS dicts 2022-03-08 18:42:55 +01:00
odain-cbd
8ab38854a8 N°4920 - Fix "undefined index" notice in user rights (#271) 2022-03-08 18:21:40 +01:00
acognet
bceb570d84 N°4874 - Auto Refresh of attribute Dasboard 2022-03-08 15:31:41 +01:00
acognet
138fa569f2 N°4642 - Core Update : limit the usage of this function to minor version 2022-03-08 14:56:15 +01:00
Molkobain
1f65ab5a92 N°4642 - Improve conventions
* Rename SCSS variables
  * Optimize SCSS rules
2022-03-07 17:05:29 +01:00
Molkobain
7cfac7300b N°4642 - Fix typo in SCSS variables 2022-03-07 16:31:43 +01:00
Molkobain
5854c199d0 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-03-07 12:54:13 +01:00
Molkobain
ede720c9b9 Merge remote-tracking branch 'origin/support/2.7' into support/3.0 2022-03-07 12:52:09 +01:00
Molkobain
684efee5d2 N°4664 - Code format 2022-03-07 12:49:27 +01:00
acognet
e347989dcb N°4664 - Core Update : block zip file upload until instance declared OK 2022-03-07 12:05:54 +01:00
acognet
e1051e7a47 N°4654 - Missing licence Information in About iTop for non admin users - add since 3.0.1 2022-03-07 11:35:18 +01:00
Molkobain
7e8eb26866 N°4654 - Change block ID to match conventions 2022-03-07 09:50:07 +01:00
Molkobain
6775a3e928 Code cleanup 2022-03-07 09:47:54 +01:00
Molkobain
faa38155e5 N°4911 - Mentions: Fix DBObject::Reload() for classes with an image attribute 2022-03-06 22:44:13 +01:00
Molkobain
558bbc3357 Revert "N°4911 - Mentions: Fix Person picture not displayed if marker configured on parent class (Contact)"
This reverts commit 106127e6b7.

As the image attribute can be different depending on the object finalclass, it cannot be added in the DBObjectSet::OptimizeColumnLoad(), which means that retrieving it within the loop might lead to a complete DBObject::Reload() of the object which can have a real impact on performances depending on the objects.
2022-03-06 22:44:13 +01:00
Molkobain
cd7f9e478f N°4913 - Avoid object initials to overflow in medallions 2022-03-06 22:44:12 +01:00
Molkobain
e3586cff65 Unit tests: Add unit cyrillic alphabet test case for utils::ToAcronym() 2022-03-06 16:31:48 +01:00
Molkobain
106127e6b7 N°4911 - Mentions: Fix Person picture not displayed if marker configured on parent class (Contact) 2022-03-06 12:49:11 +01:00
Molkobain
2299983db3 N°4741 - Factorize activation of on mention triggers 2022-03-06 11:54:39 +01:00
acognet
2fab7de34b N°4806 - UI:WelcomeMenu:Text contains empty string 2022-03-04 10:36:28 +01:00
acognet
c0ab79971c N°4654 - Missing licence Information in About iTop for non admin users - nicer loading icon 2022-03-04 10:36:27 +01:00
Molkobain
03ed9c9deb N°4905 - Fix usage of ITOP_APPLICATION constant in dictionaries 2022-03-04 10:31:01 +01:00
acognet
7152277760 N°4642 - Core Update : limit the usage of this function to minor version or disable the functionality ? 2022-03-03 22:02:35 +01:00
acognet
14d05da9f6 N°4664 - Core Update : block zip file upload until instance declared OK 2022-03-03 22:00:15 +01:00
acognet
69a0bd0c34 N°4644 - Core update : confusing warning message when integrity of iTop std files is modified 2022-03-03 21:59:04 +01:00
acognet
c09cee994a N°2884 - Core update : Database version not updated - remove definitively lines with $sDataModelVersion 2022-03-03 16:17:16 +01:00
acognet
50ee0b3eed N°4654 - Missing licence Information in About iTop for non admin users 2022-03-03 16:16:45 +01:00
Molkobain
84169a864c N°4856 - Update PHPDoc 2022-03-03 15:50:28 +01:00
acognet
9f27cf2b84 N°4525 - bad source for extensions in system information and about iTop with iTop Pr 2022-03-03 15:14:28 +01:00
Pierre Goiffon
f78986009f Improve messages of iTopModuleXmlInstallationChecklistTest::testAllModuleAreIncludedInInstallationXml 2022-03-03 10:46:06 +01:00
Eric Espie
a937d08655 Fix CI (wrong module version) 2022-03-03 10:42:24 +01:00
Eric Espie
4bdf84bf6c Merge remote-tracking branch 'origin/support/3.0' into develop 2022-03-03 10:23:38 +01:00
Eric Espie
4fdbec72d4 N°4569 - dictionaries 2022-03-03 10:00:25 +01:00
Eric Espie
94d31827e7 N°4569 - Fix tests 2022-03-02 17:54:27 +01:00
Eric Espie
45a8eb93e7 N°4569 - Add itop-themes-compat 2022-03-02 17:14:08 +01:00
Eric Espie
6ac3539373 N°4569 - Revert meta save of deleted nodes 2022-03-02 17:08:45 +01:00
Stephen Abello
a5d8425fe7 N°4741 Fix On mention trigger not working on object creation 2022-03-02 16:13:00 +01:00
Stephen Abello
3608c6b8ab N°4582 Prevent selectize behavior introduced by 2e08cff from displaying unescaped characters 2022-03-02 16:12:59 +01:00
Pierre Goiffon
2b1e583dc7 💡 N°4854 Document compiler behavior change for model.*.php files 2022-03-02 10:06:59 +01:00
Pierre Goiffon
3081aa473a Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	setup/runtimeenv.class.inc.php
2022-03-02 09:49:59 +01:00
Pierre Goiffon
809ea2eb49 💡 N°4854 Add phpdoc to utils::*Module* methods 2022-03-02 09:42:09 +01:00
acognet
2f98a3e7ac N°2884 - Core update : Database version not updated - prevent multi click on button "About iTop" 2022-03-01 17:04:37 +01:00
acognet
c737fc46ff N°2884 - Core update : Database version not updated 2022-02-28 15:21:44 +01:00
Stephen Abello
619c0d34e8 N°4764 Fix unit test 2022-02-28 14:59:56 +01:00
acognet
bdc7ed6f8e N°4057 - Custom Translation for Custom Tab is not inherited by instanciable Classes 2022-02-28 12:09:38 +01:00
Eric Espie
d9819d9c2a N°4784 - CAS authentication issue with iTop 3.0
* Fix regression when setting cas as first login mode
2022-02-28 11:55:45 +01:00
Eric Espie
f24f8a2f34 N°4569 - Fix restoring deleted nodes when parent is not present 2022-02-28 10:54:59 +01:00
Stephen Abello
3890b1a020 N°4764 Remove iTop version from webservices/status.php 2022-02-25 10:08:43 +01:00
Stephen Abello
2e08cff9ee N°4582 Align backspace behavior in selectize widgets with jQuery autocomplete one 2022-02-25 09:40:02 +01:00
Pierre Goiffon
968a0e5f3a Add check to prevent setup crash when creating config
Cherry-pick of 09b12bd0
This will prevent also a warning when running on PHP 8.0 (N°3129)
2022-02-24 15:39:20 +01:00
Molkobain
4694e8152e N°4809 - Remove iTopOwnershipToken class from CSV import list 2022-02-22 11:42:28 +01:00
Pierre Goiffon
4b731dd336 N°4836 Better fix by adding AjaxPage::SetOutputDataOnly() 2022-02-22 10:23:15 +01:00
Stephen Abello
5e0c7c211b N°4460 Fix run-query highlight color on error for Full Moon and Darkmoon 2022-02-22 10:13:36 +01:00
Pierre Goiffon
9ce88699ca Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	datamodels/2.x/itop-portal-base/portal/templates/bricks/browse/mode_mosaic.html.twig
#	datamodels/2.x/itop-portal-base/portal/templates/bricks/browse/mode_tree.html.twig
2022-02-22 09:40:37 +01:00
Pierre Goiffon
815870fe6b Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	application/cmdbabstract.class.inc.php
#	dictionaries/cs.dictionary.itop.model.php
#	dictionaries/da.dictionary.itop.model.php
#	dictionaries/de.dictionary.itop.model.php
#	dictionaries/es_cr.dictionary.itop.model.php
#	dictionaries/fr.dictionary.itop.model.php
#	dictionaries/hu.dictionary.itop.model.php
#	dictionaries/it.dictionary.itop.model.php
#	dictionaries/ja.dictionary.itop.model.php
#	dictionaries/pl.dictionary.itop.model.php
#	dictionaries/pt_br.dictionary.itop.model.php
#	dictionaries/tr.dictionary.itop.model.php
#	dictionaries/zh_cn.dictionary.itop.model.php
2022-02-22 09:36:06 +01:00
Pierre Goiffon
33ceab86fb N°4836 Fix dashlet editor when iBackofficeDictEntriesExtension impl exists 2022-02-21 16:52:31 +01:00
Molkobain
fe1bf3bfc1 PHPDoc 2022-02-19 17:18:42 +01:00
acognet
3727223db3 Fix comment 2022-02-18 18:05:36 +01:00
Stephen Abello
5b96d9f778 N°4769 Fix badly escaped run query suggestions containing multiple lines 2022-02-18 10:17:14 +01:00
Stephen Abello
162b15236d N°4783 Fix tabs headers hiding on Chrome with zoom-in/out 2022-02-18 09:17:55 +01:00
acognet
83e98ef2b8 N°4284 - Object modification: Attribute value lost if not allowed to be seen 2022-02-17 17:06:06 +01:00
Stephen Abello
d783954d13 N°4671 Fix dark moon extra tabs color 2022-02-17 14:48:35 +01:00
Molkobain
7207dc657c N°4662 - Add comment to all concerned templates 2022-02-17 14:13:41 +01:00
Stephen Abello
f1cce8e430 N°4582 Nicer focus indicator for extkey selectize inputs 2022-02-16 15:35:11 +01:00
Molkobain
3da49e6603 N°4814 - Improve image attribute placeholder when no default image 2022-02-16 11:45:18 +01:00
Pierre Goiffon
5048421bfa 🔥 N°4815 Remove .model files in /dictionaries
They were added with 3fb0c768 in 2.5.2, probably by mistake as they :
* exists only for certain languages and not for english
* only contain comments
2022-02-16 10:17:42 +01:00
Stephen Abello
b9c5f2c523 N°4312 Keep selected activity panel tab active when refreshing or modifying an object 2022-02-15 15:45:41 +01:00
acognet
ec75195a2f N°4662 - Portal: Fix broken display of the services catalogue when installing Service Provider + Sample Data
(cherry picked from commit f9e8bf88c8)
2022-02-15 14:08:44 +01:00
Stephen Abello
e971d628dd N°4565 Add a message indicator to caselog tabs toggler 2022-02-15 10:21:09 +01:00
acognet
bbd50ba73b N°4438 - Disable (temporarly) copy of precompiled stylesheets after setup 2022-02-15 09:59:47 +01:00
acognet
ba71c1bcd5 N°4747 - Broken XLSX Templates created 2022-02-15 09:59:47 +01:00
acognet
16be8fd3d3 N°4777 - UserRequest: selecting organisation through hierarchy tree 2022-02-15 09:59:47 +01:00
acognet
cacae0a2b3 N°4591 - Space trimed when filling html attribute or log attribute with object-copier 2022-02-15 09:59:47 +01:00
acognet
f9e8bf88c8 N°4662 - Portal: Fix broken display of the services catalogue when installing Service Provider + Sample Data 2022-02-15 09:50:44 +01:00
Pierre Goiffon
b1ed15f31c N°4787 Remove useless "+" dict entries
Emptied "+" entries when their value is the same as its counterpart
2022-02-14 16:33:10 +01:00
acognet
788caf9c50 N°4284 - Object modification: Attribute value lost if not allowed to be seen 2022-02-14 12:26:16 +01:00
Eric Espie
1728dcc40c N°4784 - CAS authentication issue with iTop 3.0
* Moved session closing after the login
2022-02-14 09:31:52 +01:00
acognet
35165568af N°4057 - Custom Translation for Custom Tab is not inherited by instanciable Classes 2022-02-14 09:10:18 +01:00
Pierre Goiffon
bddf7a11c8 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-02-14 09:01:26 +01:00
Pierre Goiffon
cb5554ddb1 N°4714 Fix setup crashing with "Call to undefined method utils::GetCoreVersionWikiSyntax()" 2022-02-14 08:49:46 +01:00
Pierre Goiffon
ee7fb15fc2 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-02-14 08:44:12 +01:00
Pierre Goiffon
6a5840ed82 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	lib/composer/installed.php
#	setup/licenses/community-licenses.xml
#	setup/setuputils.class.inc.php
#	sources/application/TwigBase/Controller/Controller.php
2022-02-14 08:41:33 +01:00
Molkobain
4a67819f87 N°4714 - Revert rename of utils::GetItopVersionWikiSyntax as it is used in cached packages in the ITSM Designer 2022-02-11 20:00:39 +01:00
Pierre Goiffon
8473df0f0c 💡 Add attribute phpdoc for \RestResultWithObjects::$objects 2022-02-11 18:26:16 +01:00
Pierre Goiffon
81c39c35cd N°4771 Fix lib test dir detection
Thanks to @Molkobain and @Hipska for their review in dfaa9733
2022-02-11 18:15:56 +01:00
Pierre Goiffon
4caf52f1ae 🔥 N°4781 Remove SetupUtils::Log 2022-02-11 16:48:24 +01:00
Pierre Goiffon
0c5b845c8a 📄 N°4770 Update license file 2022-02-11 16:23:54 +01:00
Pierre Goiffon
cdfdb1f2ca 🔧 N°4770 composer.json version constraint
Will help Dependabot !
2022-02-11 16:23:54 +01:00
Pierre Goiffon
f29a8792af ⬆️ N°4770 Update to latest Symfony 3.4 2022-02-11 16:23:03 +01:00
Pierre Goiffon
b494ff2ce6 N°4488 Remove cmdbAbstractObject methods used in export.php from API methods and add comment in export.php
`@deprecated` was added in 03e9bcd4 but as none of those will be removed in a near future, we are using `@internal`instead !
2022-02-11 16:15:35 +01:00
Molkobain
a65c55fc48 iTopWebPage: Add CSS classes in addition to HTML IDs in template
This ease mocking several pages in a single one when IDs are removed
2022-02-11 15:51:52 +01:00
Molkobain
01b94f42fe Fix object's actions menu cannot be open (regression from 0d26211d) 2022-02-11 15:00:44 +01:00
odain
df1e19dc43 enhance ItopDataTestCase->CreateUser to avoid be able to avoid hardcoded contact_id 2022-02-11 14:10:02 +01:00
Thomas Casteleyn
cbef9bb267 Allow binary data to be imported/synchronised with the synchro_import.php 2022-02-11 12:16:09 +01:00
Pierre Goiffon
9ad341f73a N°4771 Fix .make/composer/rmDeniedTestDir.php Throwing errors when dir in denied list not existing on disk 2022-02-10 15:12:31 +01:00
acognet
03e9bcd47a N°4488 - deprecate cmdbAbstractObject::GetSetAsHTMLSpreadsheet() used only by the old export.php 2022-02-10 15:04:59 +01:00
acognet
55effea0a3 N°4513 - User Portal can apply transition on on an objetc not in his scope 2022-02-10 14:01:21 +01:00
Pierre Goiffon
dfaa973359 N°4771 improve iTopComposerTest
- debug testListDeniedTestDir not working well on Windows
- update error message for testAllDirCovered
2022-02-10 12:54:09 +01:00
Pierre Goiffon
2e45b20fc4 N°4771 Fix .make/composer/rmDeniedTestDir.php doing nothing on Windows
Note that a .gitignore entry was added in dbc3da7b but it isn't necessary if rmDeniedTestDir work as expected !
2022-02-10 12:45:52 +01:00
Pierre Goiffon
e89090f0ec N°4771 Update lib test dirs list : reordered for readability / easier maintenance 2022-02-10 12:08:18 +01:00
Molkobain
c9d02826a0 Code cleanup (indentation and PHPDoc) 2022-02-09 19:28:21 +01:00
Pierre Goiffon
47db04bcb7 💡 N°4760 Add complement in phpdoc 2022-02-09 11:48:17 +01:00
Pierre Goiffon
a49c451ae4 💡 N°4760 Fix wrong phpdoc 2022-02-09 11:43:42 +01:00
Pierre Goiffon
25c3704990 N°4761 Fix license.xml content not displayed in setup with multi modules extensions (#261)
For example :
module "mymodule" is in extension "myextension"
On the file system the `license.xml` file will be in `/extensions/myextension/mymodule/license.mymodule.xml`
This form wasn't working in the setup but well displayed in the about box.

When \SetupUtils::GetLicenses was called in the setup it was searching with a GLOB pattern only in one level subfolders. Now we are searching 2 levels.
When called from the console, it is only searching in env-*, where everything is on one level.
2022-02-08 17:28:47 +01:00
Pierre Goiffon
3000659e86 🎨 Change disable breadcrumb method name to clarify usage
Thanks @eespie for the review !
2022-02-08 17:04:11 +01:00
Pierre Goiffon
ce36c00b83 Remove now useless default values
Co-authored-by: Thomas Casteleyn <thomas.casteleyn@super-visions.com>
2022-02-08 17:04:11 +01:00
Pierre Goiffon
2a3e6384d9 ♻️ After dev team code review 2022-02-08 17:04:11 +01:00
Pierre Goiffon
dd7e73e413 🎨 Simpler code
Thanks Hipska !
2022-02-08 17:04:11 +01:00
Pierre Goiffon
1709082e39 Controller::CreatePage : default values for sUrl and sIcon 2022-02-08 17:04:11 +01:00
Pierre Goiffon
41f6e85673 Controller::CreatePage : use @list() intead of 3 lines with count() tests
Thanks Hipska !

Co-authored-by: Thomas Casteleyn <thomas.casteleyn@super-visions.com>
2022-02-08 17:04:11 +01:00
Pierre Goiffon
3ef3166bd5 Add new methods to override in order to control breadcrumb in Controller children classes 2022-02-08 17:04:11 +01:00
Pierre Goiffon
7eab003f3c N°4714 Fix setup crashing with "Call to undefined method utils::GetItopVersionWikiSyntax()"
Missed this in the merge (d437e2d6) cause there were lots of datamodels/2.x/*/module.*.php changes to discard :(
2022-02-08 15:58:34 +01:00
Pierre Goiffon
d437e2d662 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	application/displayblock.class.inc.php
#	core/config.class.inc.php
#	datamodels/2.x/authent-cas/module.authent-cas.php
#	datamodels/2.x/authent-external/module.authent-external.php
#	datamodels/2.x/authent-ldap/module.authent-ldap.php
#	datamodels/2.x/authent-local/module.authent-local.php
#	datamodels/2.x/combodo-backoffice-darkmoon-theme/module.combodo-backoffice-darkmoon-theme.php
#	datamodels/2.x/combodo-db-tools/module.combodo-db-tools.php
#	datamodels/2.x/itop-attachments/module.itop-attachments.php
#	datamodels/2.x/itop-backup/module.itop-backup.php
#	datamodels/2.x/itop-bridge-cmdb-ticket/module.itop-bridge-cmdb-ticket.php
#	datamodels/2.x/itop-bridge-virtualization-storage/module.itop-bridge-virtualization-storage.php
#	datamodels/2.x/itop-change-mgmt-itil/module.itop-change-mgmt-itil.php
#	datamodels/2.x/itop-change-mgmt/module.itop-change-mgmt.php
#	datamodels/2.x/itop-config-mgmt/module.itop-config-mgmt.php
#	datamodels/2.x/itop-config/module.itop-config.php
#	datamodels/2.x/itop-core-update/module.itop-core-update.php
#	datamodels/2.x/itop-datacenter-mgmt/module.itop-datacenter-mgmt.php
#	datamodels/2.x/itop-endusers-devices/module.itop-endusers-devices.php
#	datamodels/2.x/itop-faq-light/module.itop-faq-light.php
#	datamodels/2.x/itop-files-information/module.itop-files-information.php
#	datamodels/2.x/itop-full-itil/module.itop-full-itil.php
#	datamodels/2.x/itop-hub-connector/module.itop-hub-connector.php
#	datamodels/2.x/itop-incident-mgmt-itil/module.itop-incident-mgmt-itil.php
#	datamodels/2.x/itop-knownerror-mgmt/module.itop-knownerror-mgmt.php
#	datamodels/2.x/itop-portal-base/module.itop-portal-base.php
#	datamodels/2.x/itop-portal/module.itop-portal.php
#	datamodels/2.x/itop-problem-mgmt/module.itop-problem-mgmt.php
#	datamodels/2.x/itop-profiles-itil/module.itop-profiles-itil.php
#	datamodels/2.x/itop-request-mgmt-itil/module.itop-request-mgmt-itil.php
#	datamodels/2.x/itop-request-mgmt/module.itop-request-mgmt.php
#	datamodels/2.x/itop-service-mgmt-provider/module.itop-service-mgmt-provider.php
#	datamodels/2.x/itop-service-mgmt/module.itop-service-mgmt.php
#	datamodels/2.x/itop-sla-computation/module.itop-sla-computation.php
#	datamodels/2.x/itop-storage-mgmt/module.itop-storage-mgmt.php
#	datamodels/2.x/itop-structure/module.itop-structure.php
#	datamodels/2.x/itop-tickets/module.itop-tickets.php
#	datamodels/2.x/itop-virtualization-mgmt/module.itop-virtualization-mgmt.php
#	datamodels/2.x/itop-welcome-itil/module.itop-welcome-itil.php
#	datamodels/2.x/version.xml
2022-02-08 15:43:20 +01:00
Pierre Goiffon
0d26211dbe Fix error in object details : "Too few arguments to function MenuBlock::GetRenderContent()" 2022-02-08 15:16:57 +01:00
Pierre Goiffon
3b99006159 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	test/integration/iTopModulesPhpVersionChecklistTest.php
2022-02-08 14:49:08 +01:00
Pierre Goiffon
299ad7e753 N°4714 Fix \utils::GetCoreVersionWikiSyntax throwing Exception when 2nd version digit is "0" (for example in 3.0.1) 2022-02-08 14:48:02 +01:00
Pierre Goiffon
94a2421186 N°4714 Fix iTopModulesPhpVersionIntegrationTest
Was still testing removed utils::GetItopMinorVersion()
And also wrong merge done in testITopModulesPhpVersion()
2022-02-08 14:30:06 +01:00
Pierre Goiffon
923c3a27a3 Prepare 3.0.1 version 2022-02-08 14:28:27 +01:00
Pierre Goiffon
c1a1186bf7 N°4714 Fix setup crashing with "Call to undefined method utils::GetItopVersionWikiSyntax()"
Regression caused by merge b3605146
2022-02-08 13:55:20 +01:00
Pierre Goiffon
b360514646 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	application/displayblock.class.inc.php
#	application/ui.extkeywidget.class.inc.php
#	application/utils.inc.php
#	approot.inc.php
#	core/config.class.inc.php
#	css/css-variables.scss
#	datamodels/2.x/authent-cas/module.authent-cas.php
#	datamodels/2.x/authent-external/module.authent-external.php
#	datamodels/2.x/authent-ldap/module.authent-ldap.php
#	datamodels/2.x/authent-local/module.authent-local.php
#	datamodels/2.x/combodo-db-tools/module.combodo-db-tools.php
#	datamodels/2.x/itop-attachments/module.itop-attachments.php
#	datamodels/2.x/itop-backup/module.itop-backup.php
#	datamodels/2.x/itop-bridge-virtualization-storage/module.itop-bridge-virtualization-storage.php
#	datamodels/2.x/itop-change-mgmt-itil/module.itop-change-mgmt-itil.php
#	datamodels/2.x/itop-change-mgmt/module.itop-change-mgmt.php
#	datamodels/2.x/itop-config-mgmt/module.itop-config-mgmt.php
#	datamodels/2.x/itop-config/module.itop-config.php
#	datamodels/2.x/itop-core-update/module.itop-core-update.php
#	datamodels/2.x/itop-datacenter-mgmt/module.itop-datacenter-mgmt.php
#	datamodels/2.x/itop-endusers-devices/module.itop-endusers-devices.php
#	datamodels/2.x/itop-files-information/module.itop-files-information.php
#	datamodels/2.x/itop-full-itil/module.itop-full-itil.php
#	datamodels/2.x/itop-hub-connector/module.itop-hub-connector.php
#	datamodels/2.x/itop-incident-mgmt-itil/module.itop-incident-mgmt-itil.php
#	datamodels/2.x/itop-knownerror-mgmt/module.itop-knownerror-mgmt.php
#	datamodels/2.x/itop-portal-base/module.itop-portal-base.php
#	datamodels/2.x/itop-portal/module.itop-portal.php
#	datamodels/2.x/itop-problem-mgmt/module.itop-problem-mgmt.php
#	datamodels/2.x/itop-profiles-itil/module.itop-profiles-itil.php
#	datamodels/2.x/itop-request-mgmt-itil/module.itop-request-mgmt-itil.php
#	datamodels/2.x/itop-request-mgmt/module.itop-request-mgmt.php
#	datamodels/2.x/itop-service-mgmt-provider/module.itop-service-mgmt-provider.php
#	datamodels/2.x/itop-service-mgmt/module.itop-service-mgmt.php
#	datamodels/2.x/itop-sla-computation/module.itop-sla-computation.php
#	datamodels/2.x/itop-storage-mgmt/module.itop-storage-mgmt.php
#	datamodels/2.x/itop-tickets/module.itop-tickets.php
#	datamodels/2.x/itop-virtualization-mgmt/module.itop-virtualization-mgmt.php
#	datamodels/2.x/itop-welcome-itil/module.itop-welcome-itil.php
#	datamodels/2.x/version.xml
#	lib/composer/autoload_classmap.php
#	lib/composer/autoload_static.php
#	lib/composer/installed.php
#	setup/modelfactory.class.inc.php
#	setup/setuputils.class.inc.php
#	test/integration/iTopModulesPhpVersionChecklistTest.php
2022-02-08 13:18:50 +01:00
acognet
541794ca9c N°4482 - Polishing : Export page 2022-02-07 16:45:25 +01:00
acognet
5fbcae1f55 N°4576 - issue with search date widget 2022-02-07 16:44:13 +01:00
Eric Espie
99819527db Changed the <Hooks> grammar (typo) 2022-02-07 16:28:19 +01:00
Eric Espie
965273009c Changed the <Hooks> grammar to allow module extensibility 2022-02-07 16:10:00 +01:00
Eric Espie
7bee616b1b Update application events definition 2022-02-07 15:25:38 +01:00
Eric Espie
f5302133d9 Add application events definition 2022-02-07 15:06:00 +01:00
Eric Espie
0f6e0e5085 Allow file name to be set with parameters 2022-02-07 15:02:47 +01:00
Stephen Abello
3541a9e1db N°3541 Add event listener to enable/disable loading state for buttons block 2022-02-07 14:54:23 +01:00
Stephen Abello
1f95a4ee21 N°3541 Add loading state design to buttons block 2022-02-07 14:54:23 +01:00
Eric Espie
bf2aba1b06 Reformat code 2022-02-07 14:11:00 +01:00
Molkobain
af5a0d5006 N°4751 - Fix crash when disabling newsroom in configuration 2022-02-04 22:58:48 +01:00
acognet
84280a3b5f N°4530 - Bug with OQL and profiles. 2022-02-04 16:21:53 +01:00
Molkobain
e3bce622e5 Dashboard: Add "input" event to properties listeners for real-time updates 2022-02-02 21:29:35 +01:00
Molkobain
ef9392a8d5 Fix icon selection misalignment in edition 2022-02-02 21:10:34 +01:00
Molkobain
15087ab848 N°592 - Fix ModelFactory::GetField() always failing as $aLoadedClasses is never filled 2022-02-02 19:06:38 +01:00
Molkobain
7bb7445c91 N°4482 - Small refacto
- SCSS partial rule should target only the concerned elements
- Improve PHPDoc
2022-02-02 16:47:15 +01:00
Molkobain
60c372f535 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-02-02 11:20:58 +01:00
Molkobain
6a4ce3c3b1 Fix regression from c3a2713bb 2022-02-02 10:54:01 +01:00
Stephen Abello
7df27de5c1 N°4674 Fix code highlighter calls 2022-02-02 10:35:50 +01:00
Pierre Goiffon
b4fc647845 N°4714 Rename \utils::GetItopVersionWikiSyntax to GetCoreVersionWikiSyntax
Will avoid confusion between core or product version !
2022-02-01 15:40:43 +01:00
Pierre Goiffon
de053eed72 N°4714 Update iTopXmlVersionIntegrationTest::testItopXmlVersion to use new constant 2022-02-01 15:27:57 +01:00
Pierre Goiffon
17612f88d3 N°4714 utils version method refactoring
- removes utils::GetItopPatchVersion and GetItopMinorVersion : unused and badly named :/
- GetItopVersionWikiSyntax now uses core version constant
- iTopModulesPhpVersionIntegrationTest::testiTopModulesPhpVersion now uses ITOP_CORE_VERSION constant
2022-02-01 15:24:56 +01:00
Pierre Goiffon
e14845728c Prepare 2.7.7 2022-02-01 15:19:10 +01:00
Pierre Goiffon
4e80fc0f76 N°4624 Remove processIsolation flag from postBuild tests
Was done in standard test suite (test/phpunit.xml.dist) with 6bf25f90
2022-02-01 14:50:33 +01:00
Pierre Goiffon
fcfcf85e0d N°4714 fix constant version usages in utils methods 2022-02-01 11:39:57 +01:00
Pierre Goiffon
f0715baf7d N°4714 move constant from core/config.class.inc.php to approot.inc.php
see N°4406
2022-02-01 11:39:35 +01:00
Molkobain
2733e7966f N°4731 - Restore "data-value-raw" HTML metadata on attributes in object details 2022-01-31 20:03:02 +01:00
Eric Espie
52327d1086 Migrate default theme test-red 2022-01-31 17:50:54 +01:00
Eric Espie
81cf3df5e2 Migrate default theme test-red 2022-01-31 17:35:26 +01:00
Pierre Goiffon
45b5c39af7 N°3129 PHP 8.0 compat : code review modifications
Many thanks @Molkobain & @Hipska !
2022-01-31 16:41:35 +01:00
Eric Espie
4463e91d85 N°4569 - Fix unit tests 2022-01-31 16:41:01 +01:00
Eric Espie
ce87bf9e23 N°4569 - Fix bad alteration on trashed nodes 2022-01-31 16:23:01 +01:00
Pierre Goiffon
dbc3da7bc3 N°3129 Remove twig-bundle Test dir
Thanks to iTopComposerTest::testNoDeniedDirIsPresentForNow :o)
2022-01-28 17:25:55 +01:00
Pierre Goiffon
ebc9fa684a N°3129 PHP 8.0 compat: Fix "Private methods cannot be final as they are never overridden by other classes"
Was breaking setup ajax compilation
Fixed in:
* \SetupUtils::Log
* \MetaModel::SetUniquenessRuleRootClass
2022-01-28 17:01:07 +01:00
Pierre Goiffon
606bdc1909 N°3129 PHP 8.0 compat: Fix "Access level to MFElement::ReplaceWith() must be public (as in class DOMElement)" 2022-01-28 17:01:07 +01:00
Pierre Goiffon
7495fb9af4 N°3129 PHP 8.0 compat: Fix "Deprecated: Required parameter ... follows optional parameter ..." in Twig
Update symfony/twig-bundle from 3.4.36 to 3.4.47
2022-01-28 17:01:07 +01:00
Pierre Goiffon
75dbad7406 N°3129 PHP 8.0 compat: Fix "Deprecated: Required parameter ... follows optional parameter ..."
* \SQLObjectQuery::PrepareSingleTable
* \HistoryBlock::GetRenderContent
* \MenuBlock::GetRenderContent
* \UILinksWidgetDirect::DisplayAsBlock
* \UILinksWidgetDirect::Display
* \UILinksWidgetDirect::DisplayEditInPlace
* \UIExtKeyWidget::AutoComplete
* \UIExtKeyWidget::DisplayFromAttCode
2022-01-28 17:01:07 +01:00
acognet
c95064b76d N°4433 - Fix "date_format" TWIG filter not working for date without time 2022-01-28 14:52:44 +01:00
acognet
f0933eaf1e N°4446 - Attachments: deleted file re-appear 2022-01-28 10:34:53 +01:00
Eric Espie
b9ea7d4913 N°4569 - Fix collision between existing nodes and saved ones 2022-01-27 17:42:52 +01:00
Molkobain
22f9d16743 N°4415 - Remove SetupPage:log* 2022-01-27 17:37:14 +01:00
Molkobain
3d3d94e837 N°2522 - API : Deprecate SetupPage:log* 2022-01-27 17:23:12 +01:00
Stephen Abello
9c75a705f3 N°4570 Harmonize inputs font size/weight 2022-01-27 16:31:33 +01:00
Pierre Goiffon
3381c085f4 💡 N°4714 fix phpdoc 2022-01-27 16:15:57 +01:00
Molkobain
3bec96abe1 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	core/config.class.inc.php
#	setup/itopdesignformat.class.inc.php
2022-01-27 16:09:22 +01:00
acognet
b89d181125 N°4634 - Missing class icone in predefined search 2022-01-27 14:47:24 +01:00
Molkobain
44c18395b3 N°4072 - Deprecate ajax.render.php xlsx_* operations 2022-01-27 11:42:30 +01:00
Molkobain
09ff052c1f N°4072 - Add method to deprecate PHP endpoints 2022-01-27 11:42:30 +01:00
Pierre Goiffon
c3a2713bba N°4725 Fix \DeprecatedCallsLog::NotifyDeprecatedFile doesn't catch ConfigException 2022-01-27 09:25:28 +01:00
Pierre Goiffon
99b73fe1ee 🐛 N°4714 Restore ITOP_VERSION_NAME constant
Was removed by mistake on merge (627c0070)
2022-01-27 08:57:19 +01:00
Stephen Abello
151f42ceef N°4626 Fix backup error message not showing 2022-01-26 16:14:41 +01:00
Pierre Goiffon
627c0070c1 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	core/config.class.inc.php
#	setup/itopdesignformat.class.inc.php
2022-01-26 16:07:34 +01:00
Eric Espie
3a56824cde N°4569 - Fix unit tests names 2022-01-26 16:02:07 +01:00
Pierre Goiffon
9b6f7d94f4 N°4714 Handle ITOP_CORE_VERSION update in .make/release/update-versions.php 2022-01-26 15:45:10 +01:00
Eric Espie
9a6d40e9db N°4569 - Fix unit tests 2022-01-26 15:30:03 +01:00
Pierre Goiffon
64e8aa5fee N°4714 New ITOP_CORE_VERSION constant
See following constants PHPDoc for information :
* core/config.class.inc.php ITOP_VERSION
* core/config.class.inc.php ITOP_CORE_VERSION
* setup/itopdesignformat.class.inc.php ITOP_DESIGN_LATEST_VERSION
2022-01-26 15:19:29 +01:00
Eric Espie
a839b1c4ae N°4569 - Fix unit tests 2022-01-26 15:14:42 +01:00
Eric Espie
b58df7150f N°4634 - Fix typo 2022-01-26 14:43:30 +01:00
Eric Espie
1cd230a543 N°4569 - Fix module XML migration during setup (fix _delta and list ids) 2022-01-26 14:39:47 +01:00
Eric Espie
fc47e031b6 N°4569 - Fix module XML migration during setup 2022-01-26 14:03:44 +01:00
Pierre Goiffon
477128ad53 💡 N°4023 More phpdoc on \DBObjectSearch::AddCondition 2022-01-26 13:58:49 +01:00
acognet
3b4ba2aafd N°4634 - Missing class icone in predefined search 2022-01-26 12:51:39 +01:00
acognet
70f67068f4 N°4553 - Fix label size for "Greater/equals" in search for numeric attributes 2022-01-26 11:07:41 +01:00
acognet
4fec344799 N°4550 - Fix scroll bar in search for date attribute 2022-01-26 11:05:38 +01:00
Molkobain
cc5f7608e3 N°3861 - Dictionaries: Replace usages of hardcoded "iTop" string by ITOP_APPLICATION_SHORT constant 2022-01-26 10:28:47 +01:00
Eric Espie
468de06fe1 N°4569 - Fix deletion of light-grey theme for iTop 2.7 and older 2022-01-26 10:00:48 +01:00
Benjamin Dalsass
9ef5fd70c0 Merge remote-tracking branch 'origin/develop' into develop 2022-01-26 08:12:13 +01:00
Benjamin Dalsass
3b599a40f3 N°4454 - Measuring the use of the queryphrase book (code review 2) 2022-01-26 08:11:16 +01:00
acognet
aa20289dfe N°4576 - issue with search date widget 2022-01-25 17:14:33 +01:00
acognet
4449fdbbc5 N°4311 - Bubble caselog : differences between console and portal for Agent Name 2022-01-25 15:35:52 +01:00
Stephen Abello
04a690caff N°4696 Improve spacing between a fieldset and a field 2022-01-25 15:26:13 +01:00
Molkobain
0156eb0dda Activity panel: Fix missing space in HTML markup 2022-01-25 13:29:43 +01:00
acognet
e8448332f4 N°4529 - Object list: Count in header not updated when refreshing through the icon 2022-01-25 10:24:44 +01:00
acognet
e8e6ceb29e N°4529 - Object list: Count in header not updated when refreshing through the icon 2022-01-25 08:56:43 +01:00
Molkobain
1f42f897d8 N°4667 - Remove call to tooltip function 2022-01-25 08:55:49 +01:00
Pierre Goiffon
aa66bec783 💡 Add comment for the timezone config parameter 2022-01-24 15:54:42 +01:00
Pierre Goiffon
1da52a8517 Revert "dbtools report.php : compatibility with CLI + symlinks"
Woops pushed by mistake, sorry :/

This reverts commit cbd2181862.
2022-01-24 14:22:01 +01:00
Pierre Goiffon
cbd2181862 dbtools report.php : compatibility with CLI + symlinks 2022-01-24 14:16:41 +01:00
Molkobain
1495ab992f N°3824 - Update autoloader 2022-01-23 16:13:55 +01:00
Molkobain
102528195b Fix typo, thanks to @jbostoen 2022-01-23 16:10:42 +01:00
Molkobain
7def094291 N°4705 - Fix newsroom messages not formatted correctly 2022-01-23 15:52:16 +01:00
Molkobain
d89dc1aa4d N°3824 - History: Remove deprecated APIs from 2.7 and older 2022-01-21 18:10:12 +01:00
acognet
ffb3edced5 N°4668 - Remove all deprecated function from iTopExtensions - ajax_page 2022-01-21 15:20:25 +01:00
acognet
17e8c53236 demove deprecated functions : replace ajax_page by AjaxPage 2022-01-21 11:52:02 +01:00
acognet
910638d93f N°4667 - Remove call to tooltip function 2022-01-21 11:51:59 +01:00
acognet
d005ff0099 Remove deprecated functions : replace ormLinkSet::AddObject by ormLinkSet::AddItem 2022-01-21 11:51:57 +01:00
acognet
4fdf8803a5 Remove deprecied function $oField->Render replaced by $oField->RenderExpression() 2022-01-21 11:51:56 +01:00
acognet
06af788480 N°4622 - Advanced search: Fix dictionaries being retrieved by XHR calls 2022-01-21 11:51:54 +01:00
Molkobain
7aa1719514 N°4701 - Fix meta-enums labels being double encoded when displayed 2022-01-21 11:12:53 +01:00
Pierre Goiffon
81c0951c2a N°4694 Fix ServiceSubcategory icon path in datamodel.itop-service-mgmt-provider.xml
Many thanks to hong on SourceForge (https://sourceforge.net/p/itop/tickets/2018/)
2022-01-19 09:27:14 +01:00
Benjamin Dalsass
1fac2ae787 N°4454 - Measuring the use of the queryphrase book (code review) 2022-01-19 07:48:03 +01:00
Molkobain
ff7d1f2d6a Merge remote-tracking branch 'origin/support/3.0' into develop 2022-01-17 19:21:52 +01:00
Molkobain
89ecdeb13b Code cleanup: Add missing quotes in selector 2022-01-17 19:03:05 +01:00
Pierre Goiffon
c6211cde09 Revert REST API init objects array (#231)
We didn't anticipated this was causing the REST API response to be changed for all consumers :
- before PR `"objects":null`
- after `"objects":[]`

We don't want that :/

We will instead fix collector-base (object of another PR, see #231)

This reverts commit 7243da3576.
This reverts commit 0940741568.
2022-01-17 18:38:33 +01:00
acognet
739001eca4 Fix PHP comments 2022-01-17 09:18:36 +01:00
Pierre Goiffon
7243da3576 💚 Fix RestTest
When no objects to return, since #231 we are now getting `[]` instead of `null`
2022-01-17 08:24:10 +01:00
acognet
c9d547030f Fix Get filter in DoAddObject 2022-01-14 15:34:24 +01:00
acognet
4923ac7015 N°4482 - Polishing : Export page 2022-01-14 11:52:55 +01:00
Benjamin Dalsass
91d4da85e1 N°4454 - Measuring the use of the queryphrase book 2022-01-14 11:12:30 +01:00
acognet
c1c264d6d8 Fix Get filter in DoAddObject 2022-01-14 11:03:19 +01:00
Thomas Casteleyn
0940741568 RestResultWithObjects : properly init objects array (#231) 2022-01-14 11:01:00 +01:00
annProg
041a938fc0 🐛 fix notice log when upload svg image 2022-01-14 10:24:37 +01:00
Stephen Abello
839048fab2 Merge branch 'support/2.7' into support/3.0 2022-01-14 10:22:48 +01:00
Stephen Abello
4180a41f27 N°4652 Better error message when XML node define fails from delta (#256)
N°4652 Add more details when trying to define an already existing XML node
Co-authored-by: Molkobain <guillaume.lajarige@combodo.com>
Co-authored-by: Pierre Goiffon <pierre.goiffon@combodo.com>
2022-01-14 10:20:46 +01:00
Stephen Abello
8ada56fc53 N°4652 Better error message when XML node define fails from delta (#256)
N°4652 Add more details when trying to define an already existing XML node
Co-authored-by: Molkobain <guillaume.lajarige@combodo.com>
Co-authored-by: Pierre Goiffon <pierre.goiffon@combodo.com>
2022-01-14 10:18:02 +01:00
Pierre Goiffon
6c5ca614e0 🔧 phpunit.xml restoring old style
Not enough time to work on this right now :(
Will be done with N°4660
2022-01-13 14:14:59 +01:00
Pierre Goiffon
4ddee0b624 🔧 phpunit.xml setup at the end
\Combodo\iTop\Test\UnitTest\Synchro\DataSynchroTest::RunDataSynchroTest was generating a ConfigException (file exists but cannot be read)
2022-01-13 13:50:39 +01:00
Pierre Goiffon
135ddbf37d Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	test/phpunit.xml.dist
2022-01-13 13:36:09 +01:00
Pierre Goiffon
a43adcd202 🔧 phpunit.xml comment OQL better
Was executing on Jenkins :(
2022-01-13 13:11:26 +01:00
Pierre Goiffon
e8e170fb06 🔧 phpunit.xml reorder testSuites again 2022-01-13 13:05:42 +01:00
Pierre Goiffon
5ac5d649aa 🔧 Try again : reorder test suites for better readability
Jenkins should now be fixed
2022-01-13 12:15:12 +01:00
acognet
ec0c98bb0f N°4482 - Polishing : Export page 2022-01-13 10:52:18 +01:00
Pierre Goiffon
decb802df4 Revert "🔧 Reorder test suites for better readability"
This reverts commit cacc3a3085.
2022-01-13 09:48:07 +01:00
Pierre Goiffon
cacc3a3085 🔧 Reorder test suites for better readability 2022-01-13 09:42:21 +01:00
Pierre Goiffon
0fd2ea6a47 🎨 phpunit.xml code formatting 2022-01-13 09:42:21 +01:00
Pierre Goiffon
dcd52d6919 N°3863 - exec.php : allow subdirectories in the page parameter (#221) 2022-01-12 17:24:30 +01:00
Molkobain
9a75ca2c21 Merge remote-tracking branch 'origin/support/3.0' into develop 2022-01-12 16:06:29 +01:00
Molkobain
ab7e73ef9b Unit tests: Fix typo in tests suite name 2022-01-12 15:56:42 +01:00
Molkobain
812606db78 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	core/config.class.inc.php
2022-01-12 15:54:18 +01:00
Molkobain
31e7a5383c Unit tests: Activate tests that were never ran... 🥶 2022-01-12 15:31:40 +01:00
Molkobain
64afa07ff5 Unit tests: Fix themes compilation test 2022-01-12 15:14:05 +01:00
Molkobain
656bbfe46d Update precompiled themes 2022-01-12 15:13:39 +01:00
Pierre Goiffon
426f275c03 💡 Add additional phpdoc to \DBBackup::GetMysqlCliTlsOptions 2022-01-12 11:21:21 +01:00
Pierre Goiffon
b55ba2ac7f Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	core/cmdbsource.class.inc.php
#	core/log.class.inc.php
#	test/setup/iTopDesignFormat/iTopDesignFormatTest.php
2022-01-12 09:56:16 +01:00
Pierre Goiffon
693a861e7d ♻️ Refactor DBBackuptest
Split each test in a dedicated method
2022-01-12 09:42:57 +01:00
Pierre Goiffon
0ee6c60e94 Fix DBBackupTest (again :/)
Was working on Windows but not on Linux...
2022-01-12 09:12:04 +01:00
Pierre Goiffon
a663e9fded Fix DBBackupTest
DB connection dependency was added in a222ead4 (N°2336) in \DBBackup::GetMysqlCliTlsOptions but test wasn't updated accordingly :/^

The test wasn't ran on Jenkins until b11bf308, so we saw the regression only yesterday :(

This is now fixed ! 🥳
2022-01-12 09:00:26 +01:00
Pierre Goiffon
b3bf516b20 💡 Fix PHPDoc for \DBBackup::GetMysqlCliTlsOptions 2022-01-12 08:24:28 +01:00
Molkobain
c2408b74cd Unit tests: Fix invalid/duplicate class name 2022-01-11 18:13:13 +01:00
Pierre Goiffon
6855c2f83a N°4624 restore backupGlobals to default 2022-01-11 17:29:32 +01:00
Molkobain
b11bf30881 Unit tests: Activate tests that were never ran... 🥶
Note that testGetMysqlCliTlsOptions will fail
2022-01-11 15:49:21 +01:00
Molkobain
64736f1463 Fix unit test provider 2022-01-11 15:48:45 +01:00
Pierre Goiffon
930b224ca2 💡 N°4624 phpdoc for ItopDataTestCase 2022-01-11 15:36:40 +01:00
Molkobain
c17ceb1702 N°4621 - Rename corresponding unit tests folder 2022-01-11 14:35:45 +01:00
acognet
c87de1024d N°4479 - Impact analysis : Display and apply filter before display impact analysis graphical 2022-01-11 08:32:58 +01:00
acognet
24e6840a8b N°4647 - Dictionaries for Polish not up to date 2022-01-10 18:07:30 +01:00
acognet
06ed048983 N°4448 - Enabled x icon on Organisation filter box even if there is no change on filter 2022-01-10 17:53:26 +01:00
acognet
937313495d Fix checkbox in datatable. 2022-01-10 17:53:25 +01:00
Pierre Goiffon
9493e31a5d 💡 N°4558 Add PHPDoc to document that\LogChannels::CMDB_SOURCE constant was added in 3.0.0 2022-01-10 17:11:13 +01:00
Pierre Goiffon
92b61c7491 N°4558 Rename \LogChannels::CMDBSOURCE to CMDB_SOURCE to match existing constant in support/3.0 branch 2022-01-10 17:09:43 +01:00
Pierre Goiffon
3a4c4cd33d N°4624 Fix SessionTest 2022-01-10 16:50:02 +01:00
Pierre Goiffon
9aa399894c N°4624 Add processIsolation PHPUnit option to all tests implementing ItopDataTestCase 2022-01-10 16:41:26 +01:00
Pierre Goiffon
bde5dc825d 💡 Fix iTopModulesPhpVersionIntegrationTest phpdoc 2022-01-10 16:35:48 +01:00
Pierre Goiffon
8578d18e7f Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	core/cmdbsource.class.inc.php
#	core/config.class.inc.php
#	core/displayablegraph.class.inc.php
#	core/log.class.inc.php
#	datamodels/2.x/itop-config-mgmt/dictionaries/tr.dict.itop-config-mgmt.php
#	datamodels/2.x/itop-knownerror-mgmt/dictionaries/tr.dict.itop-knownerror-mgmt.php
#	datamodels/2.x/itop-service-mgmt/dictionaries/tr.dict.itop-service-mgmt.php
#	datamodels/2.x/itop-tickets/tr.dict.itop-tickets.php
#	datamodels/2.x/itop-welcome-itil/tr.dict.itop-welcome-itil.php
#	dictionaries/tr.dictionary.itop.core.php
#	dictionaries/tr.dictionary.itop.ui.php
#	pages/UI.php
#	setup/itopdesignformat.class.inc.php
#	test/core/LogAPITest.php
#	test/integration/iTopModulesPhpVersionChecklistTest.php
#	test/postbuild_integration/SetupCssIntegrityChecklistTest.php
#	test/postbuild_integration/iTopModuleXmlInstallationChecklistTest.php
#	test/status/StatusTest.php
2022-01-10 16:15:00 +01:00
acognet
9b0e55210d N°4349 - Drop-down mandatory template field documented still required in modification 2022-01-10 15:08:41 +01:00
Pierre Goiffon
e530cbb4f2 N°4624 Restore processIsolation on tests which actually need it
Warning, one symptom was having the CI returning an empty phpunit.results.xml !!
2022-01-07 17:25:18 +01:00
Pierre Goiffon
ddb8378fe6 N°4624 align phpunit annotations
Remove processIsolation when not needed
When needed, make sure to have also their counterpart (preserveGlobalState and backupGlobals)
2022-01-07 15:20:34 +01:00
Pierre Goiffon
47db23d91c 💚 N°4624 Fix other tests after global processIsolation was disabled in 6bf25f90 2022-01-07 12:44:08 +01:00
Pierre Goiffon
fc1f701bf6 💚 N°4624 TransactionsTest : add process isolation
Was global before 6bf25f90
2022-01-07 12:34:09 +01:00
Pierre Goiffon
ece31855af :bulb N°4619 table-selectable-lines.js fix missing doc comment 2022-01-07 12:08:35 +01:00
Pierre Goiffon
d57ef77758 N°4619 table-selectable-lines.js : handles better all click types
* Set one click handler instead of two
* Remove the now useless test on input:radio in updateLines()
* If clicking in a cell that have one input:radio or input:checkbox, and isn't located in the first column :
  - click on the cell input
  - don't select the line
2022-01-07 12:04:33 +01:00
Stephen Abello
365c7bb89e N°4397 Update Turkish translations 2022-01-07 11:09:51 +01:00
Pierre Goiffon
bf2c4dee1b 💡 N°4619 Document table-selectable-lines.js 2022-01-07 09:05:02 +01:00
acognet
11b812b5fc N°4564 - Tooltip for switching from standard dashboard to custo dashboard not refreshed 2022-01-06 15:09:48 +01:00
Pierre Goiffon
b073e4385c 💡 Document versions constants (#255)
Clarify ITOP_VERSION and ITOP_DESIGN_LATEST_VERSION uses
2022-01-06 14:49:34 +01:00
acognet
c37c46a4a8 N°4619 - Strange colors on selected lines on a list 2022-01-06 14:47:05 +01:00
Thomas Casteleyn
ce01dad875 utils::GetImageSize can be simplified since minimal PHP version is 7.1.3 2022-01-05 10:15:41 +01:00
Pierre Goiffon
f592d94af3 iTopModuleXmlInstallationChecklistTest : fix phpdoc, remove process isolation annotation, remove inspection warnings 2022-01-04 18:00:23 +01:00
Pierre Goiffon
f9359431fe 💡 N°4558 Add PHPDoc 2022-01-03 12:21:55 +01:00
Eric Espie
c04beea38c OnInsert and OnUpdate replacement 2021-12-31 17:07:59 +01:00
Pierre Goiffon
25e560fdaa N°4558 Fix possible PHP notice in \CMDBSource::StartTransaction 2021-12-31 16:34:19 +01:00
Pierre Goiffon
9ca106d889 N°4621 Fix criterionconversionabstract.class.inc.php requires 2021-12-31 16:01:29 +01:00
Pierre Goiffon
5f575d524a N°4621 Fix naming inconsistencies in sources/* 2021-12-31 15:44:59 +01:00
Eric Espie
93d88cca37 refactor 2021-12-31 15:26:54 +01:00
Pierre Goiffon
0ce805b192 \MFCompilerTest::testCompileThemes : fix calling protected method 2021-12-31 15:09:18 +01:00
Eric Espie
0997750816 cleanup 2021-12-31 15:06:27 +01:00
Eric Espie
427c8b0794 * better comparison 2021-12-31 14:33:23 +01:00
Eric Espie
06008ed8eb * Add KPI object loaded counter 2021-12-31 12:12:32 +01:00
Eric Espie
374b71c017 * refactor
* Add event AFTER_DISPLAY_PAGE
2021-12-31 11:06:03 +01:00
Eric Espie
fba78e7d9b Changed event name to DISPLAY_OBJECT_DETAILS 2021-12-31 08:53:36 +01:00
Eric Espie
551abc861e Merge branch 'develop' into feature/faf_event_service
# Conflicts:
#	application/cmdbabstract.class.inc.php
#	application/loginwebpage.class.inc.php
#	core/dbobject.class.php
#	core/log.class.inc.php
#	lib/composer/autoload_classmap.php
#	lib/composer/autoload_static.php
#	setup/compiler.class.inc.php
#	test/phpunit.xml.dist
2021-12-31 08:42:16 +01:00
Pierre Goiffon
6bf25f90bc Tests : remove global process isolation
Is done in ItopDataTestCase using annotation
Other tests (like the one extending ItopTestCase) won't use isolation anymore
2021-12-29 15:31:25 +01:00
Pierre Goiffon
30d36fca81 N°4515 Fix function header for \Config::GetDefault 2021-12-29 14:30:19 +01:00
Pierre Goiffon
ffd0bbb1a4 N°4515 Fix default validation pattern for AttributeURL (#249)
URL containing ":" in their path were rejected. This caused problems with some URL from Alfresco or Sharepoint...
The default regexp used by AttributeURL was updated to avoid this.
Warning, check your config to see if you have any custom regexp configured (`url_validation_pattern` config parameter) !

Also a test was added to document the default regexp.
2021-12-29 11:43:07 +01:00
acognet
16142bd979 Change version number to 3.1.0 2021-12-23 17:23:24 +01:00
acognet
c1e2ba8abc Change version number to 3.1.0 2021-12-23 17:05:54 +01:00
acognet
3db20e8028 N°4479 - Impact analysis : Display and apply filter before display impact analysis graphical 2021-12-23 16:53:15 +01:00
acognet
cc2efe432e Change version number to 3.1.0 2021-12-23 16:37:32 +01:00
acognet
e879ae2f11 Change version number to 3.1.0 2021-12-23 14:14:51 +01:00
acognet
ed12f98075 Fix warning PHP seen in N°3702 - Migrate module to new UIBlock system : Follow-up forms without authentication 2021-12-23 13:19:18 +01:00
acognet
19eef5bd72 N°4578 - Dict::CloneString replace entry if already exists 2021-12-23 13:19:18 +01:00
Pierre Goiffon
8bcd2ce571 Merge remote-tracking branch 'origin/support/3.0' into develop
# Conflicts:
#	core/config.class.inc.php
2021-12-23 10:05:53 +01:00
Pierre Goiffon
7b2bcd1055 Merge remote-tracking branch 'origin/support/2.7' into support/3.0
# Conflicts:
#	css/css-variables.scss
#	datamodels/2.x/authent-cas/module.authent-cas.php
#	datamodels/2.x/authent-external/module.authent-external.php
#	datamodels/2.x/authent-ldap/module.authent-ldap.php
#	datamodels/2.x/authent-local/module.authent-local.php
#	datamodels/2.x/combodo-db-tools/module.combodo-db-tools.php
#	datamodels/2.x/itop-attachments/module.itop-attachments.php
#	datamodels/2.x/itop-backup/module.itop-backup.php
#	datamodels/2.x/itop-bridge-virtualization-storage/module.itop-bridge-virtualization-storage.php
#	datamodels/2.x/itop-change-mgmt-itil/module.itop-change-mgmt-itil.php
#	datamodels/2.x/itop-change-mgmt/module.itop-change-mgmt.php
#	datamodels/2.x/itop-config-mgmt/module.itop-config-mgmt.php
#	datamodels/2.x/itop-config/module.itop-config.php
#	datamodels/2.x/itop-core-update/module.itop-core-update.php
#	datamodels/2.x/itop-datacenter-mgmt/module.itop-datacenter-mgmt.php
#	datamodels/2.x/itop-endusers-devices/module.itop-endusers-devices.php
#	datamodels/2.x/itop-files-information/module.itop-files-information.php
#	datamodels/2.x/itop-full-itil/module.itop-full-itil.php
#	datamodels/2.x/itop-hub-connector/module.itop-hub-connector.php
#	datamodels/2.x/itop-incident-mgmt-itil/module.itop-incident-mgmt-itil.php
#	datamodels/2.x/itop-knownerror-mgmt/module.itop-knownerror-mgmt.php
#	datamodels/2.x/itop-portal-base/module.itop-portal-base.php
#	datamodels/2.x/itop-portal/module.itop-portal.php
#	datamodels/2.x/itop-problem-mgmt/module.itop-problem-mgmt.php
#	datamodels/2.x/itop-profiles-itil/module.itop-profiles-itil.php
#	datamodels/2.x/itop-request-mgmt-itil/module.itop-request-mgmt-itil.php
#	datamodels/2.x/itop-request-mgmt/module.itop-request-mgmt.php
#	datamodels/2.x/itop-service-mgmt-provider/module.itop-service-mgmt-provider.php
#	datamodels/2.x/itop-service-mgmt/module.itop-service-mgmt.php
#	datamodels/2.x/itop-sla-computation/module.itop-sla-computation.php
#	datamodels/2.x/itop-storage-mgmt/module.itop-storage-mgmt.php
#	datamodels/2.x/itop-tickets/module.itop-tickets.php
#	datamodels/2.x/itop-virtualization-mgmt/module.itop-virtualization-mgmt.php
#	datamodels/2.x/itop-welcome-itil/module.itop-welcome-itil.php
#	datamodels/2.x/version.xml
2021-12-23 10:05:18 +01:00
Pierre Goiffon
108c1fcb2b iTopXmlVersionIntegrationTest : more details in test feedback 2021-12-23 09:56:12 +01:00
acognet
d301562ffe Change version number to 3.1.0 2021-12-23 09:41:16 +01:00
acognet
caed22ea8d Change version number to 3.1.0 2021-12-23 09:39:24 +01:00
acognet
ced29dea8e Change iTop version to 3.0.1-dev 2021-12-22 16:03:58 +01:00
odain
20a07d61c6 N°4541 - no failure exit code captured when csv a import fails in CLI mode 2021-12-20 16:13:10 +01:00
Molkobain
682c821d0e Fix combodo-backoffice-darkmoon-theme version to 3.0.0 2021-12-20 16:12:14 +01:00
Molkobain
5f382ee053 Fix ThemeHandlerTest for file imports in a module 2021-12-20 15:56:58 +01:00
Stephen Abello
dc81630b16 Add Darkmoon to default datamodel 2021-12-20 14:00:21 +01:00
Pierre Goiffon
f84c095b22 💡 Some PHPDoc 2021-12-16 14:56:27 +01:00
Molkobain
9bfa60d272 N°4556 - Remove double icon on pop-up for 1-n links 2021-12-15 11:17:33 +01:00
Molkobain
3e51d010d2 N°4555 - Restore ability to kill concurrent lock 2021-12-15 11:15:40 +01:00
Pierre Goiffon
b190d0e385 Prepare 2.7.6 version 2021-12-14 16:54:42 +01:00
Stephen Abello
0bd64ef700 N°4481 Update filter with current class on datamodel viewer class details 2021-12-14 16:01:42 +01:00
Stephen Abello
9665c7c947 N°4481 Re-enable autocomplete filtering classes list in datamodel viewer 2021-12-14 15:49:11 +01:00
Pierre Goiffon
dcf872bcd5 N°4519 Reload ormLinkset during \DBObject::DBWriteLinks
This will fix a bug when doing a DBUpdate() inside \iApplicationObjectExtension::OnDBInsert : if nothing done (no Set() call for example) then \DBObject::ListChanges will return a change in all non empty ormLinkset.

With this fix, no change will be returned.
2021-12-14 14:54:56 +01:00
Stephen Abello
6254617814 Update opensearch favion & icon 2021-12-14 14:48:04 +01:00
Stephen Abello
fc4d19be5e N°4434 Prevent CIs' active ticket list from flickering 2021-12-14 14:01:05 +01:00
Stephen Abello
88d6b63e12 N°4434 Prevent FormTables from flickering 2021-12-14 14:01:05 +01:00
Molkobain
60b24bad64 Add Benjamin to the sample data, welcome! 👋 2021-12-14 13:32:14 +01:00
acognet
cde2f333b4 N°4543 - Restore API to add dictionary entries in the backoffice pages 2021-12-14 13:24:30 +01:00
acognet
427ec288ef N°4544 - Fix PopupMenuItem API not including item's JS / CSS files 2021-12-14 13:23:26 +01:00
Molkobain
18041527c5 N°4542 - Restore log default value being set through "default" URL param 2021-12-14 09:30:54 +01:00
Molkobain
f58e2ce6c0 ormCaseLog: Introduce class constants for formats 2021-12-13 23:23:43 +01:00
Molkobain
6312063cd3 Add Martin to the sample data, welcome! 🙌 2021-12-13 23:23:43 +01:00
acognet
d0c1f650d1 N°3816 - Migrate module to new UIBlock system : Bulk Event Management - add count of selected items 2021-12-13 18:59:27 +01:00
Stephen Abello
4511883baf N°4481 Fix created elements on 1-n disappearing when table is redrawn 2021-12-13 17:01:18 +01:00
Stephen Abello
1e6a4621ea N°4481 Fix badly escaped dialog tooltip 2021-12-13 17:01:18 +01:00
Molkobain
2a0fc227de Fix chinese dictionaries 2021-12-13 15:55:39 +01:00
annProg
05e98be6c7 🌐 Person Name for chinese user 2021-12-13 15:38:57 +01:00
Molkobain
fe7fa2035d Tab container: Fix flickering of hidden tabs on init 2021-12-13 15:37:47 +01:00
Purple Grape
a00f4156ea improved translation for ZH_CN 2021-12-13 15:36:15 +01:00
Molkobain
4d37e2267f N°4481 - Fix n:n link addition when there are more than 3+ ext. keys on the link class 2021-12-13 15:01:23 +01:00
Molkobain
5055397024 N°4481 - Restore HTML tables style identical between edition and visualization 2021-12-11 18:34:36 +01:00
Pierre Goiffon
2bb142e8ee Merge remote-tracking branch 'origin/support/2.7' into develop
# Conflicts:
#	application/ui.extkeywidget.class.inc.php
#	pages/ajax.render.php
2021-12-10 18:18:17 +01:00
Pierre Goiffon
93f273a287 N°4384 Fix PHP warning when decoding formmanager_data when it is already in a PHP array form 2021-12-10 17:10:46 +01:00
Pierre Goiffon
04e7616c84 Merge remote-tracking branch 'origin/support/2.6' into support/2.7
# Conflicts:
#	sources/renderer/bootstrap/fieldrenderer/bslinkedsetfieldrenderer.class.inc.php
2021-12-10 15:57:49 +01:00
Pierre Goiffon
219b970703 N°4478 Fix linkedset widget in portal when adding new items with already selected ones
Was already committed to develop with e59d472c
2021-12-10 15:56:33 +01:00
Molkobain
408ca6d427 Code cleanup 2021-12-10 15:41:20 +01:00
Molkobain
ae323d393d Fix usage of ITOP_APPLICATION_SHORT constant in dictionaries 2021-12-10 15:35:04 +01:00
Pierre Goiffon
76c139253e 🎨 Fix language injection 2021-12-10 15:24:16 +01:00
Molkobain
2a50a543bf CSV Import: Fix order of confirmation dialog to match convention 2021-12-10 15:12:43 +01:00
Molkobain
ee54d6869b UIContentBlock: Fix PHPDoc 2021-12-10 15:08:57 +01:00
Molkobain
bd753d65a4 Hierarchical dialog: Put validation button on the right to match convention 2021-12-10 15:05:09 +01:00
Molkobain
2fe8f0e43b Add comment to prevent future misunderstanding 2021-12-10 15:05:09 +01:00
Stephen Abello
94cb5d3439 Correctly set selectize sub-input text color 2021-12-10 15:01:20 +01:00
Molkobain
0ed2388cf8 Rename "refresh action" param of datatables to match conventions 2021-12-10 14:55:51 +01:00
Stephen Abello
b91dee6c0c N°4495 Fix adv. search eternal key values as iTop 3.0 autocomplete endpoint returns html escaped content 2021-12-10 13:45:53 +01:00
Pierre Goiffon
02b09c2535 Merge remote-tracking branch 'origin/support/2.6' into support/2.7 2021-12-10 13:38:42 +01:00
Pierre Goiffon
10cfb373f2 N°4481 Fix badly escaped dialog tooltip
Was commited to develop first (99a0e0c5 and 4f27f3ac)
2021-12-10 13:38:24 +01:00
Pierre Goiffon
69578d5d07 Merge remote-tracking branch 'origin/support/2.6' into support/2.7 2021-12-10 12:30:57 +01:00
Pierre Goiffon
97d6d413bb N°4502 Fix dashboard page not refreshed after saving customm dashboard 2021-12-10 12:30:33 +01:00
Stephen Abello
4f27f3ac37 N°4481 Fix dialog title being escaped twice following 99a0e0c commit 2021-12-10 11:11:00 +01:00
Stephen Abello
4771908f42 Adv. Search hints: Remove markup from dict files and display hint message in a tooltip 2021-12-10 11:11:00 +01:00
Molkobain
d1751a042e N°4481 - Portal: Fix overflowing tables in logs 2021-12-10 10:48:14 +01:00
Stephen Abello
99a0e0c58e N°4481 Fix badly escaped dialog tooltip 2021-12-10 10:02:18 +01:00
Pierre Goiffon
7e0d5d64ce Merge remote-tracking branch 'origin/support/2.6' into support/2.7 2021-12-10 09:21:43 +01:00
Pierre Goiffon
3f8f57fa9a N°4502 Fix cannot create new or edit existing custom dashboard
Regression brought by dbaf9241
2021-12-10 09:15:43 +01:00
Molkobain
434ce57b7e N°4481 - Fix lost code highlighting / formatting in attributes 2021-12-09 19:06:38 +01:00
Molkobain
c1eb928893 CombodoBackofficeToolbox.InitCodeHighlighting: Better protection as it was adding a log on every page with no attribute 💩 2021-12-09 18:05:27 +01:00
Molkobain
97cf0a2534 Object details: Fix code format in HTML fields when read-only and no log attribute 2021-12-09 18:01:13 +01:00
Molkobain
ec02657113 CombodoBackofficeToolbox.InitCodeHighlighting: Fix AttributeTemplateHTML not being formatted when read-only 2021-12-09 18:01:13 +01:00
Molkobain
600a629734 CombodoBackofficeToolbox.InitCodeHighlighting: Add protection against not loaded lib 2021-12-09 18:01:13 +01:00
Molkobain
9acdb45482 Object details: Fix JS selector for ownership lock workflow 2021-12-09 18:01:12 +01:00
odain
e51bd4c95f add ci annotation sampleDataNeeded 2021-12-09 17:13:21 +01:00
Pierre Goiffon
71b3eb0ec7 Merge remote-tracking branch 'origin/support/2.7' into develop
# Conflicts:
#	datamodels/2.x/itop-tickets/datamodel.itop-tickets.xml
2021-12-09 16:32:11 +01:00
Molkobain
c14c851e94 Breadcrumbs: Fix JS error on (auto submitting) search page when only 1 item in the breadcrumbs 2021-12-09 16:27:59 +01:00
acognet
011ac0222c change version number for 3.0.0 2021-12-09 14:18:44 +01:00
acognet
00580856ae update dictionnaries for 3.0 2021-12-09 14:18:11 +01:00
acognet
9b6dabf5fb update dictionnaries for 3.0 2021-12-09 14:00:49 +01:00
Pierre Goiffon
eb2a615bd2 N°4384 Security hardening
Module parameter flag for extensions
2021-12-09 12:08:23 +01:00
Molkobain
cfc3a82c44 N°4481 - Fix new lines not working in textarea on Firefox (better SCSS rule for fields) 2021-12-09 12:03:45 +01:00
acognet
b23dac591e Update license for 3.0 2021-12-09 11:57:33 +01:00
acognet
de004af288 update dictionnaries for 3.0 2021-12-09 11:57:22 +01:00
acognet
f48cdd51f4 update dictionnaries for 3.0 2021-12-09 11:29:39 +01:00
Molkobain
10d303f43f Advanced search: Fix border radius on criteria panel 2021-12-09 11:18:38 +01:00
Stephen Abello
6a7c953344 N°4481 Fix configure this list in external key creating alerts 2021-12-09 11:13:43 +01:00
Pierre Goiffon
0432727ace 🎨 Reformat itop-tickets XML 2021-12-09 11:07:57 +01:00
Stephen Abello
d0a4e541c3 N°4481 Move hierarchical key browser expand/collapse buttons to bottom button panel 2021-12-09 11:02:17 +01:00
Stephen Abello
d515816488 Fix hierarchical key browser dialog max height 2021-12-09 10:52:07 +01:00
Pierre Goiffon
25a5ec4bcf Update autoload 2021-12-08 18:43:32 +01:00
Pierre Goiffon
4fbe391243 Fix \Combodo\iTop\Test\UnitTest\Core\dictApcuTest that was broken with last merge 2021-12-08 18:41:57 +01:00
Pierre Goiffon
c9ef543e2e Merge remote-tracking branch 'origin/support/2.7' into develop
# Conflicts:
#	core/log.class.inc.php
#	datamodels/2.x/itop-attachments/renderers.itop-attachments.php
#	js/search/search_form_criteria_enum.js
#	lib/composer/autoload_classmap.php
#	lib/composer/autoload_static.php
#	test/core/dictTest.php
2021-12-08 18:30:20 +01:00
Molkobain
cd5286d03b N°4522 - Remove DB views still present after migration from iTop 2.7 Pro to iTop 3.0 Pro 2021-12-08 18:07:14 +01:00
Pierre Goiffon
e6d61d1ebd Merge remote-tracking branch 'origin/support/2.6' into support/2.7 2021-12-08 17:16:33 +01:00
Pierre Goiffon
f916f9cde8 N°4289 Allow to use privUITransactionFile when no user logged
Before we were throwing a SecurityException, which was blocking for combodo-unauthenticated-form for example
2021-12-08 17:16:12 +01:00
Molkobain
be06adc794 Export: Polish preview table headers 2021-12-08 16:40:07 +01:00
Molkobain
271c51f1f4 N°4481 - Export: Fix tooltip not unchecked when removing column 2021-12-08 16:21:54 +01:00
Molkobain
28e9f95f7c N°4481 - Export: Fix check/uncheck all buttons not working when several classes 2021-12-08 11:39:36 +01:00
Molkobain
d4da1b99d8 N°4518 - ActivityPanel: Fix inline images being shrinked in quick edit 2021-12-08 10:27:45 +01:00
vdumas
28ecb77bf1 N°4520 - Robustness of XML compilation with extensions 2021-12-08 10:22:30 +01:00
acognet
85effd0fb0 Merge branch 'develop' of https://github.com/Combodo/iTop into develop 2021-12-07 17:12:13 +01:00
Pierre Goiffon
c89c47d671 Fix mkdir race condition
See https://github.com/kalessil/phpinspectionsea/blob/master/docs/probable-bugs.md#mkdir-race-condition
2021-12-07 17:01:05 +01:00
acognet
6de4511601 Fix Language name 2021-12-07 16:16:00 +01:00
Stephen Abello
00acf271e2 N°4481 Fix wrong attribute name used in SLA methods 2021-12-07 16:13:06 +01:00
acognet
0e03e78490 Fix "0" for value or name of button 2021-12-07 15:55:12 +01:00
Stephen Abello
99cbb6c996 Set primary color on "run the import" button in import confirmation graph dialog 2021-12-07 15:30:35 +01:00
Stephen Abello
0e36070f0a Rework efcd065 method of determining whether UIContentBlock needs a div tag 2021-12-07 15:29:11 +01:00
Stephen Abello
bc349253cf N°4481 Fix hierarchical key browser bottom buttons position 2021-12-07 15:19:49 +01:00
Stephen Abello
f3ed286ee0 N°4481 Fix import confirmation graph not displaying anymore 2021-12-07 14:40:36 +01:00
Stephen Abello
efcd0654c7 Fix UIContentBlock not creating a div if it's only inheriting CSS classes 2021-12-07 14:40:36 +01:00
Stephen Abello
d413ebff2d N°4481 Fix icon selection label overflowing 2021-12-07 14:40:36 +01:00
Molkobain
33f94b7886 Fix webhook action tables not displaying in notifications page 2021-12-07 11:21:40 +01:00
acognet
817aded5aa N°3816 - Migrate module to new UIBlock system : Bulk Event Management 2021-12-07 10:10:02 +01:00
Stephen Abello
5e61388b65 N°4495 Security hardening 2021-12-07 09:56:20 +01:00
acognet
9e9cdd3d56 N°3816 - Migrate module to new UIBlock system : Bulk Event Management 2021-12-07 09:48:52 +01:00
acognet
d7d430e2a3 N°3695 - Migrate module to new UIBlock system : Alarm Console 2021-12-07 09:48:52 +01:00
Pierre Goiffon
09c4ba4044 N°4512 update-versions.php : update script for iTop 3.0.0
css-variables.scss doesn't contains iTop version anymore
2021-12-06 16:53:39 +01:00
Molkobain
3f795c7555 Allow wider tooltips on class attributes' label 2021-12-05 11:48:09 +01:00
Molkobain
c451e61972 CombodoTooltip: Add option to define max. width of the tooltip 2021-12-05 11:47:27 +01:00
Molkobain
afc0a02058 N°3508 - Rework notifications page to have distinct tabs depending on the action type 2021-12-04 20:49:30 +01:00
Molkobain
a5bf059e23 N°3508 - Add warning message on save if action has no trigger attached 2021-12-04 19:43:51 +01:00
Molkobain
9f0e2c0a3a Dashboard: Remove extra top margin when dashboard layout as no title or toolbar (eg. in dashboard pages) 2021-12-04 14:14:11 +01:00
Molkobain
827a108a38 N°4252 - Force form modals to have a max height of 90% of the window's height to avoid overflowing from the viewport 2021-12-03 13:27:57 +01:00
Stephen Abello
4b50f5e1db N°4481 Fix caselog edition in transition 2021-12-03 11:34:52 +01:00
Stephen Abello
910bbe1160 N°4501 Security hardening 2021-12-03 11:10:52 +01:00
Stephen Abello
5b742c97c9 N°4481 Fix activity panel in printable object pages 2021-12-03 10:29:04 +01:00
Stephen Abello
16a2137777 N°4481 Fix printable object pages when using vertical tabs 2021-12-03 10:29:04 +01:00
Stephen Abello
e8316782aa N°4481 Fix double encoding for delete pages 2021-12-03 10:29:04 +01:00
Molkobain
edcf9e6a1e N°4498 - Introduce new APIs due to iPageUIExtension deprecation (#245)
* Introduce new APIs due to iPageUIExtension deprecation

* Fix typo in interface name

* Rename interface to more consistent names
2021-12-02 13:38:05 +01:00
odain-cbd
9addc4a7ca Merge pull request #224 from Combodo/feature/dict-apcu-bug
Feature/dict apcu bug
2021-12-02 12:22:22 +01:00
odain
5ed71ecb96 N°4125 - fix file ending (hipska remark) 2021-12-02 12:21:54 +01:00
Stephen Abello
7db97c6804 N°3835 Upload file name security hardening 2021-12-02 10:40:18 +01:00
Stephen Abello
f039d54a51 Merge remote-tracking branch 'origin/support/2.7' into develop
# Conflicts:
#	webservices/export-v2.php
2021-12-02 10:36:16 +01:00
Stephen Abello
dab0e372d0 N°4499 Security hardening 2021-12-02 10:32:29 +01:00
Stephen Abello
dc8c6ed7a9 N°3835 Tagsets displayed in history security hardening 2021-12-02 10:21:55 +01:00
Stephen Abello
18e341b0b7 Merge remote-tracking branch 'origin/support/2.7' into develop
# Conflicts:
#	application/displayblock.class.inc.php
#	js/search/search_form_criteria_enum.js
#	test/core/ormLinkSetTest.php
2021-12-02 10:04:04 +01:00
Stephen Abello
2722f305e0 Fix C3 scss variable 2021-12-02 09:59:12 +01:00
Stephen Abello
469e2e6e0e N°3835 Tagset's tooltip security hardening 2021-12-02 09:57:26 +01:00
Stephen Abello
05301d4191 N°3835 Dashlets' Pill label security hardening 2021-12-02 09:57:26 +01:00
Stephen Abello
3df5febd3e N°3835 Autocomplete security hardening 2021-12-02 09:57:26 +01:00
Stephen Abello
dfd1d5fe35 N°4493 Security hardening 2021-12-02 09:54:31 +01:00
Stephen Abello
d289457c0c N°4495 Security hardening 2021-12-02 09:39:10 +01:00
Stephen Abello
f52b3bff0d N°4492 Security hardening 2021-12-01 15:53:52 +01:00
Stephen Abello
b6b17733bf N°4491 Security hardening 2021-12-01 10:29:29 +01:00
acognet
fc2b00699e Change the name of the css class to a valid name 2021-12-01 09:00:07 +01:00
acognet
b00b08d08b Remove role="row" in tr This selector is not used 2021-12-01 08:56:21 +01:00
Molkobain
c02ea05883 Fix AttributePassword rendering in the backoffice 2021-11-30 16:25:55 +01:00
Molkobain
61a0028d02 Change welcome message to remove "responsive" mention to be honest with ourselves 🤡 2021-11-30 15:45:47 +01:00
acognet
c1c2d027c3 N°4402 - DbObject::ListPreviousValuesForUpdatedAttributes() returns new values for _list-attributes (at least in DbObject::AfterUpdate()) Fix test 2021-11-30 12:11:04 +01:00
acognet
5269096ecd Merge branch 'support/2.7' of github.com:Combodo/iTop into support/2.7 2021-11-29 15:07:14 +01:00
Molkobain
e6511e049a N°4283 - Fix textarea padding in some pages, also fix "Run query" parameters header 2021-11-29 10:26:41 +01:00
odain
e4c68936a0 N°4125 - log error in an apc channel 2021-11-29 09:23:05 +01:00
Pierre Goiffon
74fbd12709 Merge remote-tracking branch 'origin/support/2.7' into develop
# Conflicts:
#	datamodels/2.x/itop-portal-base/portal/src/Helper/ObjectFormHandlerHelper.php
#	datamodels/2.x/itop-portal-base/portal/templates/layout.html.twig
2021-11-26 17:24:41 +01:00
Pierre Goiffon
4db5d4c08d N°4213 Allow all AttributeSet impl to be saved in portal 2021-11-26 17:14:01 +01:00
odain
3511867ba3 N°4125 - use Error log level + apc dedicated log channel 2021-11-26 17:07:20 +01:00
Molkobain
c40394638a N°4252 - Fix bad initialization of DesignerFormField::$aCssClasses 2021-11-26 16:01:22 +01:00
Stephen Abello
cc2862837a Fix activity panel header links color 2021-11-26 15:52:48 +01:00
Stephen Abello
e27c6b1cd7 Allow Selectize input color css rules to be overloaded through iTop 3.0 themes 2021-11-26 15:52:48 +01:00
Stephen Abello
ae00686e58 Allow C3 css rules to be overloaded through iTop 3.0 themes 2021-11-26 15:52:48 +01:00
Pierre Goiffon
7934f9b9dc N°4213 Fix EnumSet modifications cannot be saved in portal 2021-11-26 15:25:30 +01:00
Molkobain
7f2eef4a24 Merge remote-tracking branch 'origin/support/2.6' into support/2.7 2021-11-26 13:59:29 +01:00
Molkobain
8a65a592f3 N°4360 - Rename class to match other classes convention 2021-11-26 13:47:05 +01:00
Pierre Goiffon
7d6b019cfa Merge remote-tracking branch 'origin/support/2.6' into support/2.7
# Conflicts:
#	sources/renderer/bootstrap/fieldrenderer/bslinkedsetfieldrenderer.class.inc.php
2021-11-26 11:45:11 +01:00
Pierre Goiffon
5e48400cb1 N°4478 Fix line selection (global and unique) not checking checkbox anymore 2021-11-26 11:44:32 +01:00
Pierre Goiffon
252562ace9 N°4478 Fix "Requested unknown parameter '' for row 0, column 0" when opening search on related object
Forgotten file :/
2021-11-26 11:08:25 +01:00
Pierre Goiffon
c9c32b0de1 Merge remote-tracking branch 'origin/support/2.6' into support/2.7 2021-11-26 10:58:30 +01:00
Pierre Goiffon
770ac8ffe5 N°4478 Fix "Requested unknown parameter '' for row 0, column 0" when opening search on related object 2021-11-26 10:58:17 +01:00
Molkobain
db137d3816 N°4283 - Fix spacing for Pills when wrapping
Also repalce some spacing with variables
2021-11-26 10:34:57 +01:00
odain
dcfdb2d0a9 N°4125 - add integration test apart from ApcService mocking 2021-11-26 10:28:56 +01:00
odain
0cbf34ba5a N°4125 - fix tests under windows (again) 2021-11-26 09:47:01 +01:00
Molkobain
77768e8400 N°4252 - Fix DesignerFormField CSS classes for better integration within the Designer 2021-11-26 09:24:36 +01:00
Molkobain
5621eb2191 SCSS: Center on both axis DesignerField apply/cancel buttons 2021-11-26 09:24:35 +01:00
odain
f1037147a9 N°4125 - phpdoc only coming from pull request
Thanks to Hispka and  piRGoif
2021-11-26 09:17:19 +01:00
odain
bea52d5fb9 N°4125 - test did not run under windows 2021-11-26 09:12:58 +01:00
Stephen Abello
2bf970932e N°3515 Add missing icon for default welcome dashboard 2021-11-26 08:50:40 +01:00
Pierre Goiffon
b6fac4b411 N°4384 Security hardening 2021-11-25 16:07:40 +01:00
Pierre Goiffon
d8a77c22a3 Merge remote-tracking branch 'origin/support/2.6' into support/2.7
# Conflicts:
#	datamodels/2.x/itop-portal-base/portal/public/lib/datatables/js/dataTables.fixedHeader.min.js
#	datamodels/2.x/itop-portal-base/portal/public/lib/datatables/js/dataTables.responsive.min.js
#	datamodels/2.x/itop-portal-base/portal/public/lib/datatables/js/dataTables.scroller.min.js
#	datamodels/2.x/itop-portal-base/portal/public/lib/datatables/js/dataTables.select.min.js
#	datamodels/2.x/itop-portal-base/portal/public/lib/datatables/js/jquery.dataTables.min.js
2021-11-25 15:33:52 +01:00
Stephen Abello
b75a495336 N°4283 Add more blocks to RenderAllUiBlocks.php 2021-11-25 11:39:14 +01:00
Pierre Goiffon
ed3c387712 N°4478 Update Datatables lib 2021-11-25 10:55:48 +01:00
Stephen Abello
bbadc1f0be Replace hardcoded font size with SCSS variables 2021-11-25 10:34:38 +01:00
Stephen Abello
a141db4737 N°4283 Fix some spacing/sizing issue on specific pages 2021-11-25 10:09:49 +01:00
Stephen Abello
cb67dd1f1c Fix French dict typo 2021-11-25 09:42:09 +01:00
Stephen Abello
af653608ef N°4283 Replace hardcoded spacing values by SCSS spacing variables 2021-11-24 17:02:48 +01:00
Stephen Abello
9dac061b04 N°4283 Centralize blocks spacing between each other in block-integration 2021-11-24 17:02:48 +01:00
Stephen Abello
ccf1bba235 N°4283 Introduce SCSS variables for size and spacing 2021-11-24 17:02:48 +01:00
Pierre Goiffon
312a5b246b N°4399 Fix memory error on setup when lots of attachment in DB 2021-11-24 16:55:34 +01:00
Pierre Goiffon
ddd6bf22af Merge remote-tracking branch 'origin/support/2.7' into develop
# Conflicts:
#	core/attributedef.class.inc.php
#	core/config.class.inc.php
#	core/htmlsanitizer.class.inc.php
#	sources/Renderer/RenderingOutput.php
#	test/core/sanitizer/HTMLDOMSanitizerTest.php
#	test/integration/DictionariesConsistencyTest.php
2021-11-24 15:01:38 +01:00
acognet
903de43589 N°4402 - DbObject::ListPreviousValuesForUpdatedAttributes() returns new values for _list-attributes (at least in DbObject::AfterUpdate()) Add tests 2021-11-24 12:10:30 +01:00
Pierre Goiffon
2d67594ccf N°4213 Fix EnumSet rendering on details form in portal 2021-11-24 12:07:10 +01:00
Pierre Goiffon
0c7eee7f9c 💡 Add doc for why phpinfo ext is mandatory 2021-11-24 12:01:44 +01:00
Pierre Goiffon
65f9f86bcc N°3635 DictionariesConsistencyTest : now we can have multiple possible localized language desc
The 'Español, Castellaño' to 'Español, Castellano' was causing problem on builds with other modules that we don't want to update !
2021-11-23 18:59:10 +01:00
Pierre Goiffon
efaf53e568 Merge remote-tracking branch 'origin/support/2.6' into support/2.7
# Conflicts:
#	core/htmlsanitizer.class.inc.php
2021-11-23 18:07:02 +01:00
Pierre Goiffon
81a2a9278c N°4360 Fix SvgDOMSanitizer expected data 2021-11-23 17:38:30 +01:00
Pierre Goiffon
e15d4bfab6 N°4360 Security hardening 2021-11-23 17:25:50 +01:00
acognet
e23c41232d N°4465 - Polishing iTop 3.0 beta6 - fix "configure this list" 2021-11-23 15:34:53 +01:00
Stephen Abello
e25d070a38 N°4465 Fix tagset and enumset dropdown overflowing out of the screen and not autoplacing themselves 2021-11-23 13:33:08 +01:00
Stephen Abello
499c97b914 N°4465 Fix transition button not grouping/ungrouping in some cases 2021-11-23 11:51:31 +01:00
Molkobain
c472b8ad3b N°4466 - Fix line breaks not displayed correctly 2021-11-23 11:40:52 +01:00
Molkobain
94ceb98b9e N°4466 - Fix line breaks not displayed correctly 2021-11-23 11:32:26 +01:00
Stephen Abello
b1de8683f0 N°3523 Adjust buttons and links colors to make application more accessible 2021-11-23 11:26:16 +01:00
Stephen Abello
cff2105908 Remove debug line 2021-11-23 11:06:23 +01:00
Stephen Abello
e11d5c142c N°3523 Adjust buttons and links colors to make application more accessible 2021-11-23 10:39:11 +01:00
Molkobain
f77b3bedaf N°2370 - Change PHPDoc to reflect reality, method will not be removed 2021-11-23 10:15:28 +01:00
Molkobain
3654df1cae N°4466 - SCSS: Improve readability 2021-11-23 09:57:53 +01:00
Molkobain
f3d2e89c68 N°4466 - Revert changes that broke contraints for fields to stay in their column (d0f9868 and c9aa6938) 2021-11-23 09:40:33 +01:00
Molkobain
dd46536f7c N°4477 - Update dataTables lib. to 1.11.3 in iTop 3.0 2021-11-22 17:31:48 +01:00
Molkobain
e249907a9c N°4475 N°4408 - Fix update on external key not refreshing dependents fields 2021-11-22 16:45:35 +01:00
Eric Espie
4ded943a43 N°2527 - Fix require approot 2021-11-22 16:00:45 +01:00
Molkobain
bd52f4fefb N°4468 - Add data-resource-id meta-data on all buttons 2021-11-22 15:44:27 +01:00
Pierre Goiffon
f57785e422 Merge remote-tracking branch 'origin/support/2.7' into develop
# Conflicts:
#	datamodels/2.x/authent-local/dictionaries/es_cr.dict.authent-local.php
#	datamodels/2.x/itop-config-mgmt/dictionaries/es_cr.dict.itop-config-mgmt.php
#	datamodels/2.x/itop-knownerror-mgmt/dictionaries/es_cr.dict.itop-knownerror-mgmt.php
#	datamodels/2.x/itop-service-mgmt/dictionaries/es_cr.dict.itop-service-mgmt.php
#	datamodels/2.x/itop-tickets/dictionaries/es_cr.dict.itop-tickets.php
#	datamodels/2.x/itop-welcome-itil/es_cr.dict.itop-welcome-itil.php
#	dictionaries/es_cr.dictionary.itop.ui.php
#	test/integration/DictionariesConsistencyTest.php
2021-11-22 09:08:34 +01:00
Pierre Goiffon
77880c3675 🌐 N°3635 ES dict : change 'Español, Castellaño' to 'Español, Castellano' 2021-11-22 08:55:08 +01:00
Molkobain
bb369e68b5 N°4283 - Rename some SCSS partials to match conventions 2021-11-20 18:52:54 +01:00
Molkobain
2a2d68e204 N°4283 - Textarea: Make sure to use monospace font for code
- CSV import is now using monospace font
- Simplify SCSS code

Note: TextArea and all input UIBlocks need to be reworked as they are not properly organized, see comment in _input-text.scss
2021-11-20 18:42:41 +01:00
Molkobain
b49fbf1a97 N°4283 - Textarea: Make them take all available width 2021-11-20 18:12:41 +01:00
Molkobain
308bff7875 SCSS: Fix typo in variable name 2021-11-20 14:23:13 +01:00
Molkobain
9444e61856 N°4283 - Improve spacing of HTML inputs with their labels 2021-11-19 18:35:50 +01:00
Molkobain
2f114701a1 N°4283 - AttributeOneWayPassword: Fix spacing between the fields / button 2021-11-19 17:40:48 +01:00
Molkobain
5128db05cf N°4283 - AttributeBlob: Fix extra between the value and the links / input 2021-11-19 17:39:54 +01:00
Molkobain
9675202bb2 N°4283 - Force field labels to wrap even if it is a single giant word 2021-11-19 17:09:23 +01:00
Molkobain
cbe42cd727 N°4283 - Improve textarea and OQL inputs style
- All textarea app. wide avec the same padding
- OQL fields have the same padding as the other textareas
- OQL fields have the monospaced font
2021-11-19 16:34:01 +01:00
Pierre Goiffon
3559425fc1 N°°4463 Trigger : remove user rights check when controlling filter 2021-11-19 15:20:21 +01:00
Molkobain
a246528eec Update DoPostRequest() in itoprest.examples.php to fix optional headers like in utils::DoPostRequest 2021-11-19 14:47:51 +01:00
Stephen Abello
7fbbf1088a N°4460 Fix SCSS variable usage 2021-11-19 12:22:08 +01:00
Molkobain
fa4a5e2990 Merge spanish translations and remove duplicated files due to merge 2021-11-19 11:49:48 +01:00
Molkobain
b662a7e3c6 Remove (some) redundant description in spanish translations 2021-11-19 11:49:36 +01:00
Stephen Abello
cdc452282e Fix dictionnary entries 2021-11-19 11:38:08 +01:00
Molkobain
d8c4251c03 Remove (some) redundant description in spanish translations 2021-11-19 11:27:46 +01:00
Stephen Abello
72d1ab5cbc N°3523 Add accessibility to silo selection and user menu toggler 2021-11-19 11:16:19 +01:00
Stephen Abello
18b8e7093a N°3515 Update Enclosure icon (thanks to icons8 quick response ❤️) 2021-11-19 11:16:19 +01:00
Stephen Abello
aedb9ccbba N°3525 Make colors more accessible 2021-11-19 11:16:18 +01:00
Pierre Goiffon
67fa156c0e Merge remote-tracking branch 'origin/support/2.7' into develop
# Conflicts:
#	application/dashboard.class.inc.php
#	core/action.class.inc.php
#	datamodels/2.x/combodo-db-tools/dictionaries/es_cr.dict.combodo-db-tools.php
#	datamodels/2.x/itop-attachments/dictionaries/es_cr.dict.itop-attachments.php
#	datamodels/2.x/itop-config-mgmt/dictionaries/es_cr.dict.itop-config-mgmt.php
#	datamodels/2.x/itop-core-update/dictionaries/es_cr.dict.itop-core-update.php
#	datamodels/2.x/itop-hub-connector/dictionaries/es_cr.dict.itop-hub-connector.php
#	datamodels/2.x/itop-knownerror-mgmt/dictionaries/es_cr.dict.itop-knownerror-mgmt.php
#	datamodels/2.x/itop-portal-base/dictionaries/es_cr.dict.itop-portal-base.php
#	datamodels/2.x/itop-request-mgmt-itil/dictionaries/es_cr.dict.itop-request-mgmt-itil.php
#	datamodels/2.x/itop-request-mgmt/dictionaries/es_cr.dict.itop-request-mgmt.php
#	datamodels/2.x/itop-sla-computation/dictionaries/es_cr.dict.itop-sla-computation.php
#	datamodels/2.x/itop-storage-mgmt/dictionaries/es_cr.dict.itop-storage-mgmt.php
#	datamodels/2.x/itop-tickets/dictionaries/es_cr.dict.itop-tickets.php
#	datamodels/2.x/itop-virtualization-mgmt/dictionaries/es_cr.dict.itop-virtualization-mgmt.php
#	datamodels/2.x/itop-welcome-itil/es_cr.dict.itop-welcome-itil.php
#	dictionaries/es_cr.dictionary.itop.core.php
#	dictionaries/es_cr.dictionary.itop.ui.php
#	pages/ajax.render.php
#	setup/wizardsteps.class.inc.php
#	synchro/synchro_import.php
2021-11-19 10:28:46 +01:00
Pierre Goiffon
9437e689fd N°3635 Update ES translations
Many thanks to Miguel Turrubiates !
2021-11-18 17:48:43 +01:00
Pierre Goiffon
a79459bc53 N°4162 Portal exception page : restore exception message
Was removed with Silex to Symfony migration
2021-11-18 14:56:17 +01:00
Pierre Goiffon
500bd15843 Merge remote-tracking branch 'origin/support/2.6' into support/2.7 2021-11-18 08:54:32 +01:00
Pierre Goiffon
3e8dd2f4a5 N°4286 Setup : fix loop in first steps
Setup token wasn't removed at the right place :/
2021-11-18 08:54:10 +01:00
Pierre Goiffon
d0fade9ce1 Merge remote-tracking branch 'origin/support/2.6' into support/2.7
# Conflicts:
#	pages/ajax.render.php
#	setup/wizardsteps.class.inc.php
2021-11-17 17:39:36 +01:00
Pierre Goiffon
51a49dfce8 Remove warnings, use finally block, formatting 2021-11-17 16:10:50 +01:00
Molkobain
db8462ccc9 N°2788 - Constraint table to fit as much as possible in its column 2021-11-17 15:55:01 +01:00
Pierre Goiffon
066b71686d N°4286 Setup : restore backup download on WizStepDone
Setup token was put with N°2016 (6b5cc7c)
But later on we refactored the token handling in SetupUtils methods, and we had token removal in WizStepDone (43daa2ef) : so the backup download cannot be done :/
2021-11-17 14:39:44 +01:00
Pierre Goiffon
be633001a5 Revert "N°4360 Security hardening"
This reverts commit 8adf743cc7.

We will implement a different solution later (hopefully for 2.6.5 / 2.7.6 / 3.0.0 as well)
2021-11-17 11:13:29 +01:00
Molkobain
b0904cabfd N°4447 - Update german translations thanks to Martin Raeker from @itomig-de ! 2021-11-17 10:26:12 +01:00
Pierre Goiffon
84426c6634 N°4365 Security hardening 2021-11-17 10:15:12 +01:00
Molkobain
9d19c189e6 N°4420 N°4421 - Decrease transition duration a bit to match other transitions feeling 2021-11-16 22:41:42 +01:00
Molkobain
91d030933b Rename cmdbAbstractObject::EnumDisplayMode() to be consistent with the rest 2021-11-16 21:38:51 +01:00
Molkobain
d0f9868a19 N°2788 - Constraint table with <pre> to fit as much as possible in its column 2021-11-16 18:20:31 +01:00
Molkobain
2a913cd484 Restore prototypes of cmdbAbstractObject methods in which we added $sMode to preserve compatibility with existing extensions (#240)
* Restore prototypes of cmdbAbstractObject methods in which we added $sMode to preserve compatibility with existing extensions

* Rename cmdbAbstractObject::ENUM_OBJECT_MODE_XXX

* Add cmdbAbstractObject::ENUM_OBJECT_MODE_BULK_EDIT

* Refactor usage of $sDisplayMode in cmdbAbstractObject::DisplayModifyForm()
2021-11-16 17:47:09 +01:00
Pierre Goiffon
dbaf924171 N°4363 Security hardening 2021-11-16 17:19:19 +01:00
Pierre Goiffon
1b2d75efd6 N°4420 N°4421 Table selectable lines : restore style, restore script inclusion in object edition (#242) 2021-11-16 16:05:07 +01:00
Stephen Abello
d66a1e8c10 N°3515 Update some classes/dashboard icons to match 3.0 UI 2021-11-16 15:21:53 +01:00
Molkobain
a5ad981d70 N°4408 - Fix visual glitches on transition buttons in object details 2021-11-16 14:42:32 +01:00
Pierre Goiffon
8adf743cc7 N°4360 Security hardening 2021-11-16 12:01:16 +01:00
Molkobain
4e544a8eab Object details: Fix header buttons being too close to the right border when editing with a sticky header 2021-11-15 18:42:11 +01:00
Pierre Goiffon
75450ded1d N°4359 Security hardening 2021-11-15 16:38:11 +01:00
Molkobain
2b97fed5db Fix unclosed TWIG tag in toolbar spacer 2021-11-15 16:24:41 +01:00
Molkobain
62d8a2ba1f Fix crash in activity panel when entry user is unknown 2021-11-15 16:24:41 +01:00
acognet
fe9a442500 N°4370 - Field content overlapping on rest of the UI (Backoffice) - 2 2021-11-15 15:48:51 +01:00
acognet
11d2991286 N°4417 - Fix portal user not seeing support agent avatar on caselog in portal 2021-11-15 15:36:03 +01:00
Pierre Goiffon
bcca6ac720 Merge remote-tracking branch 'origin/support/2.6' into support/2.7 2021-11-15 15:07:19 +01:00
Molkobain
abb63182e3 N°4346 - Fix operator 2021-11-15 12:08:28 +01:00
Molkobain
4409162eb7 N°2875 - Fix mentions not working with some non url encoded "markers" (eg. '#') 2021-11-14 22:53:10 +01:00
Molkobain
0dc3d249da N°3526 - Clean up pass on UIBlocks
- Add ancestors CSS classes on UIBlocks when missing (programmatically)
- Fix SCSS due to some blocks inheriting their ancestors rules
2021-11-14 22:33:48 +01:00
Molkobain
3598da8808 N°3526 - Clean up pass on UIBlocks
- Move UIBlock::ENUM_BLOCK_FILES_TYPE_XXX to iUIBlock
- Add PHPDoc
- Remove Object return type hint on overloadable methods
- Add scalar return type hint
- Add type hint on parameters
2021-11-14 22:33:48 +01:00
Molkobain
a9b30e160f N°3526 - Clean up pass on UIBlockFactories
- Add PHPDoc
- Remove (Object) return type hint on overloadable methods
2021-11-14 22:33:48 +01:00
Stephen Abello
249fa6ca93 N°3515 Update some classes icon to match 3.0 UI 2021-11-13 11:57:00 +01:00
acognet
50d73e7fca N°4346 - Restore HTML metadata (data-xxx) on lists in the backoffice 2021-11-12 11:20:48 +01:00
Molkobain
1b9e67dc6e SCSS: Fix Quick Create / Global Search drawers being slightly visible when closed and with a full history 2021-11-11 11:09:40 +01:00
Molkobain
ca2124130f N°3517 - Clean-up pass on all block factories 2021-11-10 19:51:59 +01:00
Molkobain
fffd4cf962 N°4346 - Remove duplicated loop and factorize code 2021-11-10 19:12:14 +01:00
Molkobain
4a6b351c37 N°4440 - Fix hierarchy tooltip on ext. key widget 2021-11-10 18:49:25 +01:00
Molkobain
206143824b N°4408 - Improve transition buttons UX in object details
Transition buttons are now grouped in the "Apply" button when there is not enough space to display them all
2021-11-10 18:44:25 +01:00
Molkobain
90c866f696 N°4427 - Fix bouncing results in search page 2021-11-09 19:22:50 +01:00
vdumas
0bbdbdb1cd N°3735 revert typo fix on Known Error module as it would remove the module on all iTop having it installed today 2021-11-09 18:03:11 +01:00
odain
865f9f4f67 add @since annotation + @see from Hispka 2021-11-09 17:14:13 +01:00
odain
a7e54d4bad N°4125 - fix infinite loop 2021-11-09 17:08:08 +01:00
Stephen Abello
395c9c288b N°4355/1745 Prevent malformed caselog entries from breaking activity panel DOM 2021-11-09 16:19:16 +01:00
acognet
60a17c9a65 N°4406 - Warning: Missing constant ITOP_DESIGN_LATEST_VERSION 2021-11-09 15:20:42 +01:00
acognet
2de6ba2827 N°3928 - Polishing: Impact analysis 2021-11-09 15:18:08 +01:00
Pierre Goiffon
2beb795f9a N°4304 Security hardening 2021-11-09 11:32:53 +01:00
Pierre Goiffon
6847d8a5c7 N°4414 Startup error handler : fix message logged twice (#243) 2021-11-09 10:25:29 +01:00
Stephen Abello
f6885567eb N°4408 Add correct CSS class to console renderer richtext field 2021-11-09 09:49:37 +01:00
Stephen Abello
4b888a3805 N°4378 Restore keyboard shortcuts behavior for object details 2021-11-09 09:49:37 +01:00
odain
07f470024a N°4367 : renamed the phpunit annotation for ci purpose 2021-11-09 08:55:54 +01:00
Molkobain
4c69865480 N°2875 - Fix error when trigger has an OQL on a root class which is not abstract 2021-11-08 19:21:43 +01:00
Pierre Goiffon
06985d3cf2 N°4387 synchro_import restore previous set_time_limit call
Was changed in b1761e04 (iTop 2.7.0) by mistake

Added noinspection as the IDE warning (https://github.com/kalessil/phpinspectionsea/blob/master/docs/control-flow.md#statement-could-be-decoupled-from-foreach) seems to be a false positive ?
2021-11-08 16:14:19 +01:00
acognet
ab40c67678 N°4346 - Restore HTML metadata (data-xxx) on lists in the backoffice - after configure this list 2021-11-08 15:02:45 +01:00
odain
a286564345 N°4367 : add phpunit annotation for ci 2021-11-08 06:42:45 +01:00
Stephen Abello
c9e592c07d N°3904 Avoid restore buttons from asking for confirmation multiple times 2021-11-05 15:51:04 +01:00
denis.flaven@combodo.com
5bcdcb52b2 N°4534 - creation of a new category 'filter' to hide admins to
non-admins without breaking legacy code.
2021-11-05 11:29:41 +01:00
Pierre Goiffon
456283866c ✏️ Fix typo in code comment 2021-11-05 11:24:18 +01:00
Stephen Abello
821c14ee86 N°3904 Fix scheduled backups not being restorable from user interface 2021-11-05 10:28:09 +01:00
Stephen Abello
30f1ad8da8 N°4412 Activity panel's notification entries weren't expandable since c0fc62b 2021-11-05 10:07:30 +01:00
vdumas
6d0b979bcd N°3735 revert one part of the previous commit done by mistake 2021-11-04 17:58:49 +01:00
Pierre Goiffon
e16425ab8a Revert behavior change in \UserRights::FindUser v2
Was made in 2ab0fab0 by mistake, committed incorrectly in 2e426d37 (wooops)
2021-11-04 17:28:06 +01:00
Pierre Goiffon
2e426d373d Revert behavior change in \UserRights::FindUser
Was made in 2ab0fab0 by mistake
2021-11-04 17:26:09 +01:00
vdumas
a1a38ca224 N°3735 Add missing translation for older methods 2021-11-04 17:10:17 +01:00
vdumas
05830de4e7 N°3735 Add Method Parameters translation for ITSM Designer 2021-11-04 16:42:10 +01:00
Pierre Goiffon
2e8920f3d1 N°4367 Fix \privUITransactionFileTest::testIsTransactionValid
Was crashing because of limitations on loading User objects
2021-11-04 16:15:01 +01:00
Stephen Abello
4450c28295 N°4408 Prevent dependent field from being triggered twice 2021-11-04 16:02:51 +01:00
Stephen Abello
aa43201cbe N°4408 Do not display non-interpreted HTML when richtext fields are loading 2021-11-04 16:02:51 +01:00
Eric Espie
3d7df7600f N°4346 - Restore HTML metadata (data-xxx) on lists in the backoffice 2021-11-04 14:56:06 +01:00
Stephen Abello
aba0d4144c N°4408 Fix inputs flickering when widgets are loading 2021-11-04 10:49:17 +01:00
Stephen Abello
fe82f54066 N°4396 Fix graphs not displaying anymore in Dashboard Attribute 2021-11-03 15:26:33 +01:00
Pierre Goiffon
2d44d9d1c6 N°4367 disable test for now
On develop we have an error on Jenkins :
> Login with user2 throw an error
2021-11-03 15:19:42 +01:00
Molkobain
8c03525fbb N°2875 - Fix missing argument ":this" when submitting an entry in the activity panel 2021-11-03 12:01:20 +01:00
Eric Espie
79c17970f8 Fix tests on packages missing composer.json file 2021-11-03 11:31:43 +01:00
Pierre Goiffon
04f7660267 Merge remote-tracking branch 'origin/support/2.7' into develop
# Conflicts:
#	js/utils.js
2021-11-03 11:19:23 +01:00
Pierre Goiffon
8c7f7abaab Merge remote-tracking branch 'origin/support/2.6' into support/2.7
# Conflicts:
#	test/application/privUITransactionFileTest.php
2021-11-03 11:10:43 +01:00
Eric Espie
e963a6741f N°3985 - avoid sql request for notifications in case of object creation and avoid reloads on requesting triggers 2021-11-03 11:00:41 +01:00
Pierre Goiffon
e8d314e1f6 N°4367 Fix \privUITransactionFileTest::testIsTransactionValid
* change user name for when password policy is active
* admin user doesn't exist on Jenkins : create a second user
* test UserRights::Login return value
* document that we depend on the sample data
2021-11-03 10:50:25 +01:00
Molkobain
ebe493f7f7 Set attribute: Add tooltip on items when attribute is in edition 2021-11-02 18:48:03 +01:00
Pierre Goiffon
e29f1825be N°4367 Fix "redeclaration of const CombodoSanitizer"
The utils.js can be included more than once in old iTop branches :( This is fixed in 3.0.0 (develop branch)

Also add missing ";"
2021-11-02 17:14:16 +01:00
vdumas
2df8bb1707 N°3735 - Add SetComputedDate on DBObject 2021-11-02 16:55:25 +01:00
Eric Espie
27995c14bf N°3985 - avoid sql request for history in case of object creation 2021-11-02 15:35:51 +01:00
Molkobain
890d0f64ce Add @ilya-stukalov to the constributors, thanks! 2021-11-01 18:18:17 +01:00
Vladimir Kunin
a29bb83a20 Fix typos 2021-10-29 18:27:04 +02:00
Vladimir Kunin
413820a22b Update general UI translations: many typos & errors, "iTop" replaced by constant ITOP_APPLICATION_SHORT, add new & improve existing strings. 2021-10-29 18:27:04 +02:00
Vladimir Kunin
860472beea Update CMDBChangeOp UI translations 2021-10-29 18:27:04 +02:00
Vladimir Kunin
dd4283199e Update NavigationMenu translations 2021-10-29 18:27:04 +02:00
Vladimir Kunin
e147aa31aa Add KeyboardShortcuts translations 2021-10-29 18:27:04 +02:00
Vladimir Kunin
b8aa3dfb0c Update Activity panel translations 2021-10-29 18:27:04 +02:00
Vladimir Kunin
83e2dbc30a Update Newsroom translations 2021-10-29 18:27:04 +02:00
Vladimir Kunin
f63dad7a3a Update tab container translations 2021-10-29 18:27:04 +02:00
Vladimir Kunin
c75bb6b892 Update Navigation Menu translations 2021-10-29 18:27:04 +02:00
Vladimir Kunin
15ffb82257 Update preferences translations 2021-10-29 18:27:04 +02:00
Vladimir Kunin
5e2ae18570 Typo 2021-10-29 18:27:04 +02:00
ilya.stukalov
070a23e61b Add UI translations for iTop 3.0. 2021-10-29 18:27:04 +02:00
acognet
0ab6655ae7 N°4385 - MetaModel::GetRelatedObjectsUp does yield correct results, while DBObject->GetRelatedObjectsUp does not 2021-10-29 13:36:32 +02:00
acognet
322371dd9f N°4349 - Drop-down mandatory template field documented still required in modification 2021-10-29 13:33:44 +02:00
Molkobain
b8e974cfd1 N°4398 - Add object name in the tab name when browsing datamodel viewer 2021-10-28 15:58:32 +02:00
odain
e03eb1e279 N°3556: fix broken ci temporarly for test using ItopDataTestCase 2021-10-28 11:48:14 +02:00
bruno-ds
6d2b75df9e N°4261 - test correctness: log deactivation is performed using bool false and not Error level
thanks @BenGrenoble
2021-10-26 15:54:44 +02:00
Stephen Abello
ab1b6837a2 N°3800 Fix line spacing in rich text editor and in its displayed content 2021-10-26 15:26:29 +02:00
Stephen Abello
5c02b5c38c N°4396 Fix graphs not displaying anymore in Dashboard Attribute 2021-10-26 10:50:32 +02:00
Stephen Abello
dd486dd015 N°3911 Fix datamodel viewer table overflowing in some case 2021-10-26 10:11:12 +02:00
Molkobain
b7e8c0de8a N°4400 - Restore PHP debug output being displayed in a modal 2021-10-25 21:34:03 +02:00
Molkobain
32dae59b9b N°4400 - Move inline JS functions to corresponding JS file 2021-10-25 19:51:07 +02:00
acognet
5540988001 N°4349 - Drop-down mandatory template field documented still required in modification 2021-10-25 15:50:43 +02:00
Stephen Abello
f8c59e6171 N°3911 Allow datamodel viewer graph to be horizontally scrolled when overflowing out of page 2021-10-25 15:35:33 +02:00
acognet
ab23ea1da0 N°3928 - Polishing: Impact analysis 2021-10-25 14:12:11 +02:00
Molkobain
3d49cd199a Fix Panel not being collapsible anymore (regression from 1c11cef2f, thanks @accognet !) 2021-10-25 12:15:02 +02:00
denis.flaven@combodo.com
ee848129b7 New methods for creating/import test data from XML files. 2021-10-25 11:49:56 +02:00
Molkobain
63448276cc Tooltips: Add possibility to define theme through meta-data 2021-10-24 11:12:07 +02:00
Stephen Abello
d5af6e9061 N°4319 Backup page datatable no longer grow off limits, even on Chrome, also fix restore button 2021-10-22 14:39:30 +02:00
Molkobain
2fc3e7ad38 N°2875 - Fix empty mention results when host object is being created 2021-10-22 13:23:24 +02:00
Stephen Abello
465ed58471 N°4319 Backup page datatable no longer grow off limits 2021-10-22 10:35:43 +02:00
Eric Espie
fac454595a removing meaningless information 2021-10-22 10:10:14 +02:00
acognet
89ea4adbce N°4366 - RCSS in /pages/ajax.searchform.php on develop 2021-10-21 17:15:27 +02:00
bruno-ds
427f107ddf N°4261 - Fix CI and add a test case 2021-10-21 17:04:08 +02:00
Pierre Goiffon
59d674d744 Fix broken export
Argument 1 passed to Combodo\iTop\Controller\AjaxRenderController::ExportBuild() must be an instance of Combodo\iTop\Controller\ajax_page, instance of AjaxPage given,

Caused by merge of support/2.7 with 2 conflicts on the same line (347cbca5)
2021-10-21 17:03:36 +02:00
Molkobain
54db7243bf N°2875 - Restore correct app. version check in the module installer 🥶 2021-10-21 16:36:41 +02:00
Eric Espie
e6d2b0bc18 N°4346 - Restore HTML metadata (data-xxx) on lists in the backoffice 2021-10-21 16:18:57 +02:00
bruno-ds
9e1f5a1b63 N°4261 - ExceptionLog restore Portal log level to Error as for iTop 2.7 (no more BC break)
- default level is now Error,
 - for "write in DB": each level (including error) are ignored by default
2021-10-21 16:18:27 +02:00
Stephen Abello
5b42b8983a N°3515 Update some classes icon to match 3.0 UI 2021-10-21 16:00:18 +02:00
Molkobain
5bae964064 Setup: Fix spacing between module's label and module's more info link 2021-10-21 15:58:19 +02:00
Molkobain
ef9c18e393 Fix setup crash on upgrade when env-production / data/cache-production have been deleted (missing dict files) 2021-10-21 15:16:15 +02:00
Pierre Goiffon
ed43d00afe Merge remote-tracking branch 'origin/support/2.7' into develop
# Conflicts:
#	application/transaction.class.inc.php
#	core/userrights.class.inc.php
2021-10-21 15:12:23 +02:00
Pierre Goiffon
908a48e0a1 Merge remote-tracking branch 'origin/support/2.6' into support/2.7
# Conflicts:
#	application/transaction.class.inc.php
#	test/application/privUITransactionFileTest.php
2021-10-21 15:09:50 +02:00
Pierre Goiffon
9b854dbcc7 N°4289 skip test (not working on Jenkins) 2021-10-21 14:52:59 +02:00
Pierre Goiffon
7757f1f2d2 N°4289 Security hardening 2021-10-21 12:43:03 +02:00
bruno-ds
5e2f8a4ea6 N°4261 - ExceptionLog: improve readability 2021-10-21 11:07:44 +02:00
bruno-ds
62f7eca0a8 N°4261 - Log in db: change default level.
In order to preserve the existing behavior: not EventIssue creation (unless configured otherwise).
2021-10-21 11:07:44 +02:00
Stephen Abello
820f2cbed6 N°4015 Set a minimum height for last tab in scrollable mode and allow customizing tabs minimum height in themes 2021-10-21 10:37:38 +02:00
bruno-ds
d03718681f N°4261 - Log in db: change default configuration.
As since the latest changes by Pir, the default value is handled directly in the class.
2021-10-21 10:11:26 +02:00
Pierre Goiffon
a353317746 N°4289 Fix privUITransactionFile generating error if MetaModel not loaded 2021-10-20 17:26:32 +02:00
Pierre Goiffon
723eb90160 N°4289 privUITransactionSession phpDoc 2021-10-20 17:25:58 +02:00
Pierre Goiffon
0e14be8b15 N°4261 Refactor ExceptionLog (#239)
Doing a code review with Bruno, we agreed to do some little refactoring :

* Level per exception class
  - Before the whole ExceptionLog::Log method was a total rewrite of its parent, with some code duplicates... not a good idea : we should better improve LogAPI to make other similar uses possible in the future !
  - The logic to get level from config must be in a GetMinLogLevel override
* Write to DB
  - Pull up this functionnality in LogAPI
  - Add a sCode parameter in GetLevelDefault

Doing this refactoring, I also improved :

* Test the attributes set when creating the EventIssue object : during my dev I had crashes because I didn't filled all the mandatory fields... Having a PHPUnit test checking this will prevent future bugs to happen if attributes are modified in the class or in the object creation method
* Use Throwable instead of Exception : this was added in PHP 7.0 and will allow to catch both Exception and Error
* Because we need to have 2 statements on the same line in \Combodo\iTop\Test\UnitTest\Core\Log\ExceptionLogTest::testLogInFile, I modified the editorConfig file to allow disabling the formatter using comments.
2021-10-20 16:01:08 +02:00
Pierre Goiffon
ef6d7925fc Log : always log the same structure, and add a delimiter at the end
This will allow to parse the logs more easily !
2021-10-20 15:16:57 +02:00
acognet
ec8c2ca122 N°4374 - Add sanitizer helper for front end (JS) - Rollback 2021-10-20 10:31:41 +02:00
acognet
ebe50b319a N°4357 - Autocomplete issue with accent in a list 2021-10-20 10:31:40 +02:00
Eric Espie
48b1a15bf7 N°4369 - updated autoloader 2021-10-20 09:52:32 +02:00
Eric Espie
5102400be4 N°4369 - Return product and version in status rest ws 2021-10-20 08:52:25 +02:00
Molkobain
4bde828dbb 🌐 N°2875 - Fix missing word in TriggerOnObjectMention:mentioned_filter(+) thanks to @jbostoen 2021-10-19 21:36:23 +02:00
Eric Espie
e0929f4d0d N°4375 - Change CKEditor plugins init 2021-10-19 17:16:17 +02:00
Eric Espie
ef1903dabe N°4369 - Return product and version in status rest ws 2021-10-19 16:20:06 +02:00
Molkobain
e53a45ec5d N°2875 - Update config. param. 2021-10-19 15:40:42 +02:00
Molkobain
0811fd4aa7 N°2875 - Default triggers/action are created during first install/upgrade of 3.0.0 for DM classes with a log attribute in order to allow Person mention out of the box 2021-10-19 15:16:43 +02:00
Molkobain
cdf5789d62 N°2875 - Add $bRootFirst param. to MetaModel::EnumChildClasses() to be iso with MetaModel::EnumParentClasses() 2021-10-19 15:16:43 +02:00
Molkobain
8f2b5ad8e2 N°2875 - Invert TriggerOnObjectMention approach
- Trigger is now positioned on a specific "host" class (eg. Ticket)
- Trigger now has a "mentioned objects" filter which determines the scope of mentioned objects which will activate the trigger
2021-10-19 15:16:42 +02:00
Molkobain
df49e9c3b5 N°2875 - Add class icon to Trigger and Action 2021-10-19 15:16:42 +02:00
Molkobain
6915b0b824 N°2875 - RichText: Fix config property being an array instead of a string (also add a setter) 2021-10-19 15:16:42 +02:00
Molkobain
0b0c99c935 🌐 N°2875 - Add TriggerOnObjectMention:mentioned_filter(+) translations 2021-10-19 15:16:42 +02:00
Molkobain
b9a68f4aeb 🌐 N°2875 - Add TriggerOnObject:filter description
Note: The new translations are based on the russian one as it seemed pretty good, hence the russian translation is not "reset".
2021-10-19 15:16:41 +02:00
Eric Espie
c611b11981 N°4369 - About box with reduced information for non-administrators 2021-10-19 14:52:57 +02:00
Stephen Abello
25763c2d2e N°4351 Fix case log own entries overflowing when unnecessary 2021-10-19 14:49:44 +02:00
acognet
c8f3d23d30 N°4361 - XSS in csvimport on develop 2021-10-19 11:32:05 +02:00
acognet
88fda1466e N°4374 - Add sanitizer helper for front end (JS) 2021-10-19 11:26:29 +02:00
Eric Espie
8a7f0d346d N°4375 - Change CKEditor plugins init 2021-10-19 11:04:33 +02:00
acognet
3e5440aa3b N°3928 - Polishing: Impact analysis - remove icons in pdf list 2021-10-19 10:19:41 +02:00
acognet
6f08038f34 N°4347 - Fix JS errors in custom dashboards for list dahslets 2021-10-19 09:50:53 +02:00
Pierre Goiffon
216e62c448 N°4367 Replace uses of utils.js EncodeHtml() 2021-10-19 08:48:58 +02:00
Eric Espie
f4856150ed N°4375 - Upgrade to CKEditor 4.16.2 2021-10-19 08:46:58 +02:00
Pierre Goiffon
d73d39e71a utils.js : deprecate EncodeHtml and copy it to CombodoSanitizer.EscapeHtml 2021-10-19 08:43:27 +02:00
Pierre Goiffon
6abdabd197 Removing config file writing in OQL PHPUnit tests (#238) 2021-10-18 16:37:24 +02:00
Pierre Goiffon
020460d048 N°4367 update test to use new utils constants 2021-10-18 15:24:10 +02:00
Pierre Goiffon
347cbca5cf Merge remote-tracking branch 'origin/support/2.7' into develop
# Conflicts:
#	application/transaction.class.inc.php
#	application/ui.extkeywidget.class.inc.php
#	composer.json
#	composer.lock
#	js/utils.js
#	lib/composer/InstalledVersions.php
#	lib/composer/installed.json
#	lib/composer/installed.php
#	lib/pear/archive_tar/Archive/Tar.php
#	lib/pear/archive_tar/package.xml
#	setup/wizardsteps.class.inc.php
#	sources/Controller/AjaxRenderController.php
2021-10-18 14:57:19 +02:00
Pierre Goiffon
8ea5be4ead Merge remote-tracking branch 'origin/support/2.6' into support/2.7
# Conflicts:
#	application/transaction.class.inc.php
2021-10-18 14:32:27 +02:00
Pierre Goiffon
b3f827ed5e N°4367 Security hardening 2021-10-18 14:27:58 +02:00
Pierre Goiffon
eaf8a187aa N°3332 report function rename
The method was renamed in 18d52319 but only on support/2.7 and above
2021-10-18 11:36:17 +02:00
Pierre Goiffon
34f64c61f6 privUITransaction fix inspections errors + formatting 2021-10-18 11:32:38 +02:00
acognet
1d28bbe3f4 N°3928 - Polishing: Impact analysis 2021-10-18 11:15:22 +02:00
Molkobain
54c89dcbb5 PHPDoc 2021-10-14 18:03:27 +02:00
acognet
06dac2417a Rollback N°4361 - XSS in csvimport on develop 2021-10-14 16:25:16 +02:00
acognet
83125d9ae1 N°4362 - XSS in ajax.render.php?operation=wizard_helper on develop 2021-10-14 15:46:46 +02:00
odain
20f4419062 ci: add phpunit annotation to exclude/include test 2021-10-14 14:26:07 +02:00
acognet
0f4ca4237d N°4362 - XSS in ajax.render.php?operation=wizard_helper on develop 2021-10-14 10:14:01 +02:00
acognet
bc2c12a8c3 N°3928 - Polishing: Impact analysis 2021-10-14 09:31:21 +02:00
Pierre Goiffon
8154e718a1 N°4356 modifications after code review
Thanks @Molkobain !
2021-10-13 17:23:29 +02:00
Eric Espie
9ec6c2098b N°3928 - Fix iTop logo 2021-10-13 17:21:44 +02:00
Eric Espie
4305e40ae5 Fix warning 2021-10-13 17:15:58 +02:00
Pierre Goiffon
0f149ed852 N°4381 remove old deprecations.md file
Content wasn't up to date
Check the wiki instead (https://www.itophub.io/wiki/page?id=3_0_0%3Ainstall%3A270_to_300_migration_notes)
2021-10-13 16:50:27 +02:00
Pierre Goiffon
d5f9ca9c4b N°4381 CONTRIBUTING : move badge image 2021-10-13 16:48:11 +02:00
Pierre Goiffon
198c63dd79 N°4381 Replace documentation/itop-tickets.htm by a wiki link
Page wasn't maintained anymore
A link was displayed at the end of the setup
2021-10-13 16:40:06 +02:00
acognet
96ae91494b N°3928 - Polishing: Impact analysis 2021-10-13 14:25:55 +02:00
acognet
ceaa98f4ef N°4349 - Drop-down mandatory template field documented still required in modification 2021-10-13 14:25:38 +02:00
acognet
af4b9aaa52 N°4370 - Field content overlapping on rest of the UI (Backoffice) - 2 2021-10-13 14:25:23 +02:00
acognet
d2662b608b N°4349 - Drop-down mandatory template field documented still required in modification 2021-10-13 14:12:23 +02:00
Molkobain
591d189a33 N°3935 - Increase size a bit 2021-10-13 13:36:08 +02:00
Molkobain
36bea54bac N°3935 - Improve transition form UI with different style for cancel button and wider inputs 2021-10-13 13:11:11 +02:00
Pierre Goiffon
b5369a0c03 N°4356 Fix portal attachment download
Was opening the attachment directly in the browser (HTTP header Content-Disposition set to 'inline' instead of 'download')
2021-10-13 12:10:22 +02:00
Molkobain
1c11cef2f8 N°3939 - Keep current tab when editing an object (regression from 1e99ad436) 2021-10-12 21:51:51 +02:00
Molkobain
d8bd5528d3 Merge remote-tracking branch 'origin/support/3.0.0-beta5' into develop 2021-10-12 20:11:36 +02:00
Molkobain
9ed8cf7970 Setup: Ease usage of the UI when zoomed up to 150% (licenses fieldset being too height) 2021-10-12 18:44:47 +02:00
Molkobain
be24d409ed Config: Move security.hide_administrators parameter with other security.xxx parameters 2021-10-12 18:01:56 +02:00
Molkobain
64d91b194f PHPDoc 2021-10-12 18:01:45 +02:00
Eric
2bc61caab1 N°4207 N°4298 Fix data/.maintenance flag not removed by setup anymore
Was already fixed in the develop branch
(cherry picked from commit d0986c048a)
(cherry picked from commit 9126635cf2)
2021-10-12 12:23:49 +02:00
Pierre Goiffon
8f0a5fcaf9 N°4231 Security hardening 2021-10-12 11:11:11 +02:00
Eric Espie
b6df73bdcc N°2527 - Fix dependencies 2021-10-12 09:04:52 +02:00
Eric Espie
836a35d0dd N°4352 - Fix unlock message 2021-10-12 08:55:59 +02:00
acognet
c7a7bfcd68 N°3928 - Polishing: Impact analysis 2021-10-12 08:17:50 +02:00
Molkobain
e7e09b5023 N°4372 - Fix AttributeText limited dimensions in fullscreen when height/width is defined in the DM 2021-10-11 18:08:52 +02:00
Molkobain
3f24b80043 Code cleanup 2021-10-11 18:00:33 +02:00
Pierre Goiffon
fe3512cb5f N°4335 Fix export with PHP < 7.0+ 2021-10-11 17:05:30 +02:00
acognet
2a32c5691b N°4370 - Field content overlapping on rest of the UI (Backoffice) - 2 2021-10-11 16:17:19 +02:00
acognet
dce244f5aa N°4370 - Field content overlapping on rest of the UI (Backoffice) - 2 2021-10-11 15:28:37 +02:00
acognet
63bd1643ce N°4370 - Field content overlapping on rest of the UI (Backoffice) - 2 2021-10-11 09:11:38 +02:00
acognet
3c84a74ea4 N°4357 - Autocomplete issue with accent in a list 2021-10-11 09:09:59 +02:00
acognet
d9870c2513 N°4361 - XSS in csvimport on develop 2021-10-11 09:09:13 +02:00
acognet
7f0493c91d N°3928 - Polishing: Impact analysis 2021-10-07 18:11:04 +02:00
acognet
26e32b1759 Remove console.log 2021-10-07 14:04:22 +02:00
acognet
1b1a6321d7 N°4349 - Drop-down mandatory template field documented still required in modification 2021-10-07 14:04:22 +02:00
acognet
0eba00259a N°3928 - Polishing: Impact analysis 2021-10-07 11:45:53 +02:00
denis.flaven@combodo.com
a7a9e5f0eb N°4354 - Fixed the test which was using a (now fixed) edge case! 2021-10-06 18:45:41 +02:00
denis.flaven@combodo.com
bf4835eec0 N°4354 - Hide Administrator profile to non-admins 2021-10-06 15:34:23 +02:00
acognet
9fbc631b07 N°4349 - Drop-down mandatory template field documented still required in modification 2021-10-05 14:18:28 +02:00
acognet
c6cb7c41cd N°4349 - Drop-down mandatory template field documented still required in modification 2021-10-05 11:47:45 +02:00
acognet
0cb1583688 N°1731 - Allow Transitions without unnecessary confirmation - add force_transition_confirmation param 2021-10-05 11:36:08 +02:00
acognet
370b42d1fd N°3835 - Make global pass on all inputs (objects, dashlets, ...) to ensure XSS and double encoding have been dealt with 2021-10-04 17:28:05 +02:00
Eric Espie
0da8c761c7 N°2527 - Manage hierarchical keys in database maintenance tools 2021-10-04 16:26:16 +02:00
Eric Espie
8c39374abb N°2527 - Manage hierarchical keys in database maintenance tools 2021-10-04 16:23:35 +02:00
acognet
eb239843aa N°4347 - Fix JS errors in custom dashboards for list dahslets 2021-10-04 15:57:17 +02:00
acognet
e38ca54691 N°3835 - Make global pass on all inputs (objects, dashlets, ...) to ensure XSS and double encoding have been dealt with 2021-10-04 15:57:17 +02:00
Eric Espie
f9fc85e763 N°4326 - Fix error in dashboard when no tooltip exist on Pill
(cherry picked from commit 6caf78fdcd)
2021-10-04 11:27:14 +02:00
Eric Espie
94d99a4109 N°2527 - Manage hierarchical keys in database maintenance tools 2021-10-04 11:25:20 +02:00
Eric Espie
f39e801719 N°2527 - Manage hierarchical keys in database maintenance tools 2021-10-04 11:24:30 +02:00
acognet
645f20742c N°3934 - Polishing: User Preferences 2021-10-04 11:00:23 +02:00
acognet
d86065b4a6 N°3934 - Polishing: User Preferences 2021-10-04 10:01:10 +02:00
Molkobain
8af54efd44 N°4068 - Object details: Avoid image attributes to overlap other attributes when they are very large
- Keep its width contained in the column
- Maintain aspect ratio of the container div to hint the user on which size the image should be
- Keep image real size as long as it fits in the container
2021-10-02 10:25:19 +02:00
Molkobain
c96ee4fafc Fix typo 2021-10-01 18:30:03 +02:00
Molkobain
ced4d1c5f1 Fix dictionary entry verbal form 2021-10-01 18:28:24 +02:00
acognet
6d3e8df3e4 N°3934 - Polishing: User Preferences 2021-10-01 18:22:17 +02:00
acognet
963fae243c N°3835 - Make global pass on all inputs (objects, dashlets, ...) to ensure XSS and double encoding have been dealt with 2021-10-01 18:22:17 +02:00
Molkobain
5a09365221 N°3925 - External key: Use more vertical space when possible (30% of the window tops) and fit within the window if not enough space (below or above the input) 2021-10-01 17:38:55 +02:00
Eric Espie
49c5f75c6c N°3520 - Fix static datatables rows 2021-10-01 15:18:29 +02:00
Molkobain
bd67bc8838 N°3882 - Handle use of transparent colors in dynamic header dashlet 2021-10-01 11:48:05 +02:00
Molkobain
c9aa693872 AttributeSet: Avoid items' label to wrap on display in the backoffice (regression from 42be0c20) 2021-10-01 09:37:51 +02:00
acognet
776c03ef6a fix loading of ckeditor 2021-10-01 09:15:34 +02:00
Molkobain
ae6f8fba5c N°3520 - Add missing data-role on UIBlocks 2021-09-30 22:07:39 +02:00
Molkobain
a139dc7e6e N°3520 - HTML metadata: Add data-role to backoffice logos 2021-09-30 21:31:27 +02:00
Molkobain
7d46626d9c N°3520 - HTML metadata: Add object state in object details if present 2021-09-30 21:30:56 +02:00
Molkobain
9ea25188ba N°3925 - Fix state flags not taken into account correctly by a child class (regression from f2ff5a4e) 2021-09-30 19:41:56 +02:00
Molkobain
fadafa8267 N°3925 - Fix stimulus not applied after submission of multiple logs in an object (read-only) 2021-09-30 19:13:33 +02:00
Molkobain
e0d6bc18be N°3925 - Improve display of long external keys in autocomplete / dropdowns
- Show ellipsis if label is overflowing
- Show tooltip on hover (useful for overflowing labels)
2021-09-30 19:13:33 +02:00
Molkobain
2ae01c19e1 Advanced search: Fix checkbox / label alignment on multi choices criteria 2021-09-30 17:49:33 +02:00
Stephen Abello
a5e2831e31 N°3931 Allow HTML in DataTables' Panel title 2021-09-30 15:53:40 +02:00
acognet
e86454ff74 N°3912 - Polishing: Export 2021-09-30 15:06:21 +02:00
acognet
62be3f9f58 fix loading of ckeditor 2021-09-30 15:06:21 +02:00
acognet
cddbe27182 N°4315 - Polish bulk modify screens 2021-09-30 15:06:21 +02:00
Stephen Abello
1f56e39577 N°3931 Make object deletion errors more visible 2021-09-30 15:01:30 +02:00
Stephen Abello
a35c80de57 Align FormTable row metadata forwarding with Datatables/StaticTables ones 2021-09-30 15:01:29 +02:00
Eric Espie
4b8ef4f919 N°3572 - Fix Data Integrity tab results display
- fix synchrodatasource SQL definitions
- fix Hierarchical keys warnings due to bad parameters
2021-09-30 14:53:00 +02:00
Pierre Goiffon
c3d23981fb 💡 Document limitation in \LogAPI::GetConfig 2021-09-30 14:45:06 +02:00
Pierre Goiffon
9c6d8253f4 Fix \Combodo\iTop\Test\UnitTest\Core\CMDBSourceTest::testIsOpenedDbConnectionUsingTls 2021-09-30 10:49:11 +02:00
acognet
4d6a8a76aa N°3904 - Polishing: Backup 2021-09-30 10:20:11 +02:00
Pierre Goiffon
8fa6ae6703 Merge remote-tracking branch 'origin/support/2.7' into develop
# Conflicts:
#	core/cmdbsource.class.inc.php
2021-09-30 09:51:13 +02:00
Pierre Goiffon
fdc987f367 Merge remote-tracking branch 'origin/support/2.7.5' into support/2.7 2021-09-29 17:51:17 +02:00
Eric Espie
be9bb10606 N°4339 - Fix page title for object creation 2021-09-29 17:03:53 +02:00
Eric Espie
11d3d5af49 N°3908 - Fix button location (moved to the right of the screen) 2021-09-29 15:56:52 +02:00
Eric Espie
b630492d7a N°4337 - Fix "Missing TWIG template" error 2021-09-29 15:16:13 +02:00
Eric Espie
1a1439946b N°4338 - Fix indirect links removal 2021-09-29 14:32:01 +02:00
Molkobain
1db32c6dee N°4315 - Cleanup in SCSS 2021-09-29 14:21:24 +02:00
Eric Espie
dade45308c N°4332 - Fix table name 2021-09-29 11:30:07 +02:00
acognet
b1597f7d90 recompile styles 2021-09-29 11:24:09 +02:00
acognet
e2904fb0ee N°4230 - Printable version issues 2021-09-29 11:21:00 +02:00
acognet
8dbbc9a124 N°4315 - Polish bulk modify screens 2021-09-29 11:21:00 +02:00
bruno-ds
4297b854e1 N°4034 - Add the get_module_setting function to TwigBase.
This is temporary, as in the 3.1, this file will be deprecated in favor of `sources/application/TwigBase/Twig/Extension.php`.
More info in the N°4034.
2021-09-29 10:58:23 +02:00
Eric Espie
c53c1d5b9c N°4332 - Fix table name 2021-09-29 10:33:46 +02:00
Molkobain
a3db7f0e83 Merge remote-tracking branch 'origin/support/3.0.0-beta5' into develop 2021-09-29 10:18:53 +02:00
Stephen Abello
157c031236 N°4296 Correctly unescape dashboard title tooltip when switching dashboard 2021-09-29 10:15:57 +02:00
denis.flaven@combodo.com
78b1ee04e8 N°4336 - Improve tooltip pertinence, by hiding useless entries 2021-09-28 18:17:16 +02:00
Molkobain
30da7d2ea4 Add deprecated annotations on duplicated TwigExtension files to ease choose for developers 2021-09-28 17:38:59 +02:00
denis.flaven@combodo.com
d467cb5c79 N°4078 - Use the icon AND tooltip when the hyperlink is put as 'shortcut' 2021-09-28 17:25:35 +02:00
Eric Espie
142699c3b1 N°4332 - Fix table prefix 2021-09-28 17:14:05 +02:00
Eric Espie
9dcb789cfd N°3908 - Polishing: Application Upgrade - move the buttons at the bottom 2021-09-28 17:04:08 +02:00
Stephen Abello
aac504ec0b N°3917 Fix object details icon cover method when using class highlight icon as object icon 2021-09-28 16:25:47 +02:00
denis.flaven@combodo.com
a7a7ce77fb N°4096 - Automatic email sending retry in case of error. 2021-09-28 15:42:28 +02:00
Eric Espie
6caf78fdcd N°4326 - Fix error in dashboard when no tooltip exist on Pill 2021-09-28 15:07:27 +02:00
Stephen Abello
5680d9579c N°3917 Refactor algorithm to get object details semantic image icon in object's GetIcon method in order to propagate this feature anywhere where GetIcon is called 2021-09-28 15:01:06 +02:00
Molkobain
ec47645ef7 Merge branch 'support/3.0.0-beta5' into develop 2021-09-28 12:58:08 +02:00
Molkobain
4c6a7ca30b N°3791 - Fix crash when displaying object with a null state value 2021-09-28 12:51:21 +02:00
Molkobain
a70acf29ae Simplify double if condition 2021-09-28 12:35:02 +02:00
Eric Espie
57b08b5b24 N°4328 - Fix XML version 2021-09-28 10:10:10 +02:00
Molkobain
90906912cc N°3556 - Fix CaptureWebPage not retrieve parts from UIBlocks 2021-09-28 10:09:43 +02:00
Eric Espie
3064d868b7 N°4328 - Fix Overview tab displayed before object creation 2021-09-28 10:01:03 +02:00
Eric Espie
548d08b1ec N°4332 - Merge multi-LDAP module into iTop 2021-09-28 09:10:26 +02:00
denis.flaven@combodo.com
f226916bb8 N°4078 - Use the icon when the hyperlink is put as 'shortcut' 2021-09-27 19:06:46 +02:00
Eric Espie
47fcddc9a6 N°4326 - Fix external keys in dynamic header dashlet 2021-09-27 17:35:52 +02:00
Molkobain
86b03b9e92 Set back @covers annotation 2021-09-27 17:34:48 +02:00
acognet
9811d6f8ea N°3912 - Polishing: Export 2021-09-27 15:08:04 +02:00
Eric Espie
f67f3eaf74 N°4326 - Fix unknown attribute when no state attcode is given 2021-09-27 14:43:12 +02:00
odain
0b4d4764bd ci testing: use proper annotation to include/exlude test linked to composer.json 2021-09-27 11:57:25 +02:00
acognet
580deb655d Remove unused tablesorter 2021-09-27 09:25:20 +02:00
acognet
5e2bfdf660 N°3912 - Polishing: Export 2021-09-27 09:23:52 +02:00
Molkobain
0d51dc61f9 N°4001 - Fix double title & extra space on object creation failure page 2021-09-26 22:37:41 +02:00
Molkobain
9949b1b11a N°4318 - Improve large field limits visualization with scrollbar's track color 2021-09-26 22:27:18 +02:00
Molkobain
8be141f692 N°3791 - Replace all hard-coded style colors in the DM with corresponding semantic / palette colors 2021-09-26 17:45:18 +02:00
Molkobain
a11bc9ad33 N°3791 - Enable use of SCSS variables in the DM classes / (meta)enum attributes style 2021-09-26 16:53:42 +02:00
Molkobain
3214ae91c7 N°3791 - Panel: Use style defined in the DM for classes
Note that for now, semantic colors cannot be used directly in a <main_color> or <complementary_color> tag. Only valid CSS color (hexa, hsla, ...)
2021-09-26 15:15:34 +02:00
Molkobain
21545da062 Rename Panel / Alert / Button color constants for something more accurate
Done now before their as used too widely. We are most likely to allow dev. to use custom colors soon, so we want to avoid confusing / renaming then. (iTop extensions have been verified, none had to be migrated)
2021-09-26 01:26:42 +02:00
Molkobain
7476b6d059 Button group: Fix button groups always being on a new line instead of staying in the flow 2021-09-26 01:22:53 +02:00
Molkobain
b15c8e30bc N°3791 - Panel: Use style defined in the DM for classes
Note that for now, semantic colors cannot be used directly in a <main_color> or <complementary_color> tag. Only valid CSS color (hexa, hsla, ...)
2021-09-26 01:17:28 +02:00
Molkobain
39d71c9c43 N°3882 - Pill: Fix default color scheme when in a panel 2021-09-26 00:51:04 +02:00
Molkobain
75d913a003 Compiler: Factorize DM classes style and add them to the DM CSS rules 2021-09-25 23:51:52 +02:00
Molkobain
2b38c98183 Compiler: Update unit tests for DM classes / (meta)enum attributes style 2021-09-25 23:27:29 +02:00
Molkobain
ca7f6362bf ormStyle: Fix icon URL including the app. root in the MetaModel to ease usage with load balancers 2021-09-25 17:00:50 +02:00
Molkobain
4d8ac5fee5 PHPDoc 2021-09-25 17:00:50 +02:00
acognet
938de4c71c N°3787 - Use data loader for auto refresh 2021-09-24 17:28:52 +02:00
Pierre Goiffon
3ff117596d 💡 N°4325 add phpdoc 2021-09-24 17:16:59 +02:00
Molkobain
194459e0de Breadcrumbs: Harmonize spacing with other top bar elements 2021-09-24 17:04:55 +02:00
Molkobain
95179b0c18 Dashboard: Fix multi-select field padding on selected values 2021-09-24 17:02:53 +02:00
Molkobain
d76c9cee6f N°3900 - Breadcrumbs: Better fix than 7ae4fe06e 2021-09-24 17:02:53 +02:00
odain
6e45b74665 Composer: Fix required versions => rename cover annotation 2021-09-24 15:01:08 +02:00
acognet
3d8259a083 N°3923 - Polishing: External key 2021-09-24 15:00:32 +02:00
Molkobain
6d8a36e061 N°3882 - Fix null status color when class has no style defined 2021-09-24 14:54:29 +02:00
acognet
814038f5fd recompile styles 2021-09-24 12:12:14 +02:00
acognet
f237b4dd30 N°3705 - Migrate module to new UIBlock system : Kanban board - fix z-index of selectize dropdown list 2021-09-24 12:05:09 +02:00
Pierre Goiffon
4cf4c0e4c3 ♻️ N°4325 refactor CMDBSource mysqli attributes to a separate wrapper class (#237)
In 2.7.5 with N°3513 we added a second mysqli attribute in CMDBSource, so that we can test transactions (see TransactionsTest).

But this wasn't documented, and was really causing confusion !

This refactor wraps both attributes in a dedicated object so that the logic is clearer.
2021-09-24 11:45:39 +02:00
Stephen Abello
86538cf88e Add metadata to legacy search elements 2021-09-24 10:53:02 +02:00
acognet
722cae240e align style of spinner 2021-09-24 10:09:02 +02:00
acognet
f0d3149a1c N°3787 - Use data loader for auto refresh 2021-09-24 10:09:02 +02:00
Stephen Abello
92e315e2c7 Re-dump autoloader since 7c7386a broke it -- with platform check enabled 2021-09-24 10:04:37 +02:00
Stephen Abello
6150881154 Re-dump autoloader since 7c7386a broke it 2021-09-24 09:31:34 +02:00
Molkobain
cf223b583e N°3882 - Protection against ormStyle being null for an object 2021-09-24 09:04:24 +02:00
Molkobain
eb5e5591d7 N°4326 - Improve robustness of DesignerComboField::SetAllowedValues() 2021-09-23 22:25:57 +02:00
Molkobain
dcf4053c30 Setup: Improve components' licenses display 2021-09-23 21:46:36 +02:00
Molkobain
fedc3d4d76 N°3556 - Fix JS dict. entries not available in SetupPage anymore 2021-09-23 21:46:36 +02:00
Molkobain
e93c0123aa PHPDoc 2021-09-23 18:12:52 +02:00
Molkobain
0004586779 N°4327 - Fix JS "ReferenceError" in Application Upgrade 2021-09-23 17:40:48 +02:00
Molkobain
7ae4fe06ed N°3900 - Breadcrumbs: Fix all items being hidden even when they should not (when browser's window is zoomed in/out) 2021-09-23 16:41:12 +02:00
Pierre Goiffon
ec1dcc8df6 💡 N°3513 PHPDoc 2021-09-23 14:42:16 +02:00
Pierre Goiffon
47ed863da9 N°4215 N°3513 Fix DB errors fetch from the wrong object n°2 2021-09-23 14:32:43 +02:00
Molkobain
7404599721 N°3882 - Fix unit tests 2021-09-23 14:16:22 +02:00
Pierre Goiffon
88290f9e91 N°4215 N°3513 Fix DB errors fetch from the wrong object 2021-09-23 13:55:23 +02:00
Molkobain
eb8aed19c2 Code cleanup 2021-09-23 13:10:23 +02:00
Molkobain
3a05e9159d PHPDoc 2021-09-23 12:29:34 +02:00
Pierre Goiffon
cfdbc8ae62 N°4215 When checking for TLS cnx, don't set anymore CMDBSource mysql attributes ! 2021-09-23 11:59:44 +02:00
Molkobain
99026cec1f N°3882 - Compiler: Prepare unit test for DM CSS rules (needs to be completed with the team) 2021-09-23 11:44:12 +02:00
Molkobain
029d2ad526 N°3882 - Compiler: Factorize AttributeEnum/AttributeMetaEnum style compilation 2021-09-23 11:44:12 +02:00
Molkobain
1cb100b010 N°3882 - Header dynamic: Pills now shows the real color from the DM 2021-09-23 11:44:12 +02:00
Molkobain
197864ff83 N°3882 - Object details: Status indicator (dot) now shows the real state color 2021-09-23 11:44:11 +02:00
Molkobain
1e73ee8ccd N°3882 - Refactor display of field badges (meta enums / enums) in lists to match original mockups 2021-09-23 11:44:11 +02:00
Molkobain
e2b73995e1 N°3882 - Move DataModel classes fields' style to theme instead of (duplicated) inline CSS 2021-09-23 11:44:11 +02:00
Molkobain
24cedbdebd PHPDoc 2021-09-23 11:44:11 +02:00
Molkobain
0dc95f93a9 Code conventions 2021-09-23 11:44:10 +02:00
Molkobain
b6bd7fe400 Portal: Remove deprecated message for ItopExtensionsExtraRoutes as there is no alternative yet.
YAML routes can only be declared by the core, not modules.
2021-09-23 11:44:10 +02:00
acognet
03a19ab3f4 N°2573 - Remove MetaModel::GetNextKey 2021-09-23 11:36:10 +02:00
Stephen Abello
50849ae4ea N°4315 Harmonize bulk modify screen with other bulk actions 2021-09-23 11:34:54 +02:00
Stephen Abello
70d7f576f3 N°4001 Remove empty lines from tag set tooltips 2021-09-23 10:31:06 +02:00
acognet
bf491b7298 recompile styles 2021-09-23 09:30:30 +02:00
acognet
40ec7e35fd N°4245 - Using customfield in notifications triggered by TriggerOnObjectUpdate via ApplyStimulus 2021-09-23 09:20:33 +02:00
acognet
ffe5541361 N°2259 - iTop Compilation of branding images ignore real format of source image 2021-09-23 09:19:55 +02:00
acognet
73c55748d7 N°3904 - Polishing: Backup 2021-09-23 09:19:54 +02:00
acognet
0754dda1d9 N°3905 - Polishing: CSV Import 2021-09-23 09:19:54 +02:00
acognet
057bea196e Fix setTitleBlock 2021-09-23 09:19:54 +02:00
acognet
e97a266c44 N°3946 - LogAPI : log config parameters aren't used when logging in the setup wizard context 2021-09-23 09:19:54 +02:00
Eric Espie
b4278a6987 Supportability: Add UserId in EventIssue if 'userinfo' field is empty 2021-09-23 08:25:32 +02:00
Pierre Goiffon
aaa8f6d311 N°4215 Fix call to a function on null error when setting TLS connection in the setup
Regression introduced by b1ca1f2630 / N°3513
2021-09-22 15:59:39 +02:00
Stephen Abello
50f860a0e8 N°3974 When editing an object, align fields synchro icons 2021-09-22 15:05:17 +02:00
Stephen Abello
198c9ed479 N°4296 When switching dashboard, update dashboard title tooltip with new value 2021-09-22 14:03:57 +02:00
Stephen Abello
6e076ae1fa N°3911 Fix HTML content in external key tooltip not showing 2021-09-22 13:49:48 +02:00
Stephen Abello
9d44f0982c N°3911 Fix spacing between attribute label and attribute code 2021-09-22 13:49:44 +02:00
Molkobain
fd933ce49a N°4245 - Temporary partial rollback 2021-09-22 13:34:13 +02:00
odain
ae0c43a099 N°4227 - enhance cli restore feedback when backup file not accessible 2021-09-22 11:42:27 +02:00
Stephen Abello
7c7386afc7 N°3851 Update Emogrifier to a version supporting iTop PHP versions range 2021-09-21 16:45:12 +02:00
bruno-ds
c306c6e30d N°4261 - code review with @PirGoif 2021-09-21 16:38:10 +02:00
Molkobain
d9ccac3aea Composer: Fix required versions of PHP in order to keep our package constraints up-to-date 2021-09-21 16:12:22 +02:00
Eric Espie
d8316734e2 N°4305 - n-n links to same class - Be more robust on original search given to ormLinkSet 2021-09-21 15:46:20 +02:00
Molkobain
7ac5c1bbbb Composer: Fix target PHP version in platform to the min. supported version.
Having this set to the minimum supported version ensure that when packages versions are retrieved/updated, only versions compatible with this PHP version are selected.
2021-09-21 15:22:56 +02:00
Molkobain
37585614ba Branding: Cleanup of old references since refactoring of logos compilation 2021-09-21 15:12:05 +02:00
Molkobain
03b728b394 PHPDoc 2021-09-21 14:38:43 +02:00
Pierre Goiffon
ae2072f4d5 N°3002 Get developer_mode.enabled config param first normally, and if not set from disk 2021-09-21 13:56:15 +02:00
Molkobain
2f6ed8f8af Code conventions 2021-09-21 13:37:35 +02:00
Molkobain
1f5dabf8f6 Code conventions 2021-09-21 13:36:11 +02:00
Stephen Abello
eb5cdb053e Fix unsanitized table id 2021-09-21 12:10:53 +02:00
Pierre Goiffon
25ee577eba 💡 phpdoc 2021-09-21 12:07:37 +02:00
Pierre Goiffon
f0aaf21a79 💚 N°3002 Fix php-mock-objects notices
The error handler now checks if logger is enabled before doing anything
2021-09-21 12:01:42 +02:00
acognet
a906086751 recompile styles 2021-09-21 11:18:40 +02:00
acognet
ab17eaad27 N°4260 - Fix display of log attributes in list 2021-09-21 10:57:47 +02:00
Molkobain
469c1553bf Fix typo in icon filename 2021-09-21 10:45:04 +02:00
Pierre Goiffon
4f72f8be0c N°4158 developer_mode.enabled config param is now always read from disk
If no config file on disk then will return default value
Was failing in the compilation process as during a moment we have in MetaModel a Config instance only containing data from params, and without previous params that were on disk :/
2021-09-21 10:37:17 +02:00
Pierre Goiffon
5f2323f10b N°4092 Symlinks flag : now always update the flag
Before this commit we were only creating/removing the flag is the functionnality was available : but this was causing confusions !
2021-09-21 10:36:07 +02:00
Eric Espie
98013a68a4 N°4305 - n-n links to same class - Fix fatal error when original set is already provided with the target class 2021-09-21 10:23:30 +02:00
Stephen Abello
f55193604c N°3929 Fix carets on dashboard editor's select fields 2021-09-21 10:00:24 +02:00
Stephen Abello
586b8c5c71 N°3929 Fix apply/undo button on specific dashboard editor fields 2021-09-21 09:58:34 +02:00
Molkobain
a771d35197 N°3685 - Fix missing C3 lib in a dashboard menu node 2021-09-21 09:51:25 +02:00
Molkobain
96e4ef68df Code conventions 2021-09-21 09:38:01 +02:00
Molkobain
df40b53b6b Code format 2021-09-21 09:24:26 +02:00
acognet
6d4f919519 Refactor -> create utils::AddParamToUrl - renaming of function + encode parameters 2021-09-20 17:29:50 +02:00
Molkobain
8af116275c Change use of "sizeof()" by "count()" to avoid confusion 2021-09-20 17:02:06 +02:00
Eric Espie
e930d34963 N°4305 - n-n links to same class - Fix aliases in request 2021-09-20 16:09:32 +02:00
Molkobain
4de79afe56 Fix non updated image for contributing guide 2021-09-20 13:19:05 +02:00
bruno-ds
daf24d8cb3 N°4261 - implement feedbacks from the team
plus:
 - the entrypoint is now `LogException()` instead of `FromException()` which sounded more like a factory and less like an active method.
 - merge conflicting commit with @molkobain (CC fix)
 - remove the writing of the exception object in the error.log context (adding it was an error, it's way too verbose!!).
   - Technical note: The context is still used to propagate the exception across several call stack, so it now uses a less generic naming in order to avoid conflicts (see `ExceptionLog::CONTEXT_EXCEPTION`). another solution would have been to add a new parameter to `ExceptionLog::Log()`, but I didn't want to add constraint over the hypothetical evolution of the base class method.
2021-09-20 12:27:39 +02:00
bruno-ds
6e0d570d41 N°4261 - Portal exception logging: Add exception's file and line to the context.
plus:
 - the exception object is no more automatically added to the error.log context (it's way too verbose)
 - code cleanup (use constant instead of repeated strings)
 - ExceptionLog main method is now named `LogException` instead of `FromException`
2021-09-20 12:27:39 +02:00
Molkobain
ce4379920d Update contributing guide with new stickers 👀 2021-09-20 12:17:13 +02:00
acognet
291bbdf3da recompile styles 2021-09-18 23:13:43 +02:00
acognet
61f6c1fe33 N°2259 - iTop Compilation of branding images ignore real format of source image 2021-09-17 16:36:40 +02:00
acognet
a1d6a705ca N°4260 - Fix display of log attributes in list 2021-09-17 16:29:33 +02:00
acognet
b861d45b08 Refactor -> create utils::AddParamToUrl 2021-09-17 16:29:06 +02:00
Molkobain
fc7d2551cd N°4302 - Fix hard-coded image att. code in UserRights::GetUserPictureAbsUrl() 2021-09-17 12:04:13 +02:00
Stephen Abello
b15267d8db N°4239 Update bulk transition/modify mono/multi values indicator style 2021-09-17 11:35:01 +02:00
Stephen Abello
94ce62e424 Remove unintentional function overload committed in e3687b3 2021-09-16 15:16:19 +02:00
Molkobain
6271a33fdb Code review: Fix code conventions 2021-09-16 14:53:40 +02:00
Molkobain
4b6db53e84 Update current version 2021-09-16 13:38:41 +02:00
Eric Espie
540b9f8164 N°3908 - Polishing: Application Upgrade - display the installation progress bar 2021-09-16 11:24:22 +02:00
Eric Espie
5839bab042 N°3908 - Polishing: Application Upgrade - clickable checkbox label, remove history menu, filter history with most recent first, remove unnecessary columns in history 2021-09-16 11:14:50 +02:00
Pierre Goiffon
adc7666dd0 💚 Change setup.css test
Was checking comment presence, but we removed the comments (N°3865)
2021-09-16 10:21:21 +02:00
Stephen Abello
e3687b3cbb N°3685 Use minified versions of jQuery UI timepicker library 2021-09-16 10:09:33 +02:00
Stephen Abello
e81c02b25a N°3685 Fix combodo webfont preloading file name 2021-09-16 10:09:33 +02:00
Pierre Goiffon
28a8a4457e 📦 Update setup.css 2021-09-16 09:38:52 +02:00
Molkobain
eee0f453da N°3685 - Use minified versions of dataTables libs. 2021-09-16 09:20:54 +02:00
Molkobain
164a5501c0 Add missing condition for compiled JS dictionaries 2021-09-15 22:58:09 +02:00
Molkobain
ab3c1ad4af Add TWIG comment 2021-09-15 20:22:30 +02:00
Molkobain
83a3530880 Activity panel: Improve accessibility 2021-09-15 20:16:09 +02:00
Molkobain
0ad23e272b Update precompiled themes 2021-09-15 16:16:20 +02:00
Stephen Abello
b28ef803a3 N°3685 Display text while font is loading 2021-09-15 16:16:20 +02:00
Stephen Abello
b2155c042e N°3685 Fix twig variable name 2021-09-15 16:16:20 +02:00
Stephen Abello
b1b1d25186 N°3685 Preload necessary fonts to speed up display 2021-09-15 16:16:20 +02:00
Stephen Abello
61ee4d6807 N°3685 Replace Raleway truetype font files with woff ones 2021-09-15 16:16:20 +02:00
Molkobain
443292e1f6 PHPDoc 2021-09-15 16:16:20 +02:00
Molkobain
c025a7aa3b N°3685 - Add unit test for WebResourcesHelper 2021-09-15 16:16:20 +02:00
Stephen Abello
86ebb93149 N°3685 Compile SCSS files as a compressed CSS file and fix SCSS copyright comment so that they don't end up in compiled CSS 2021-09-15 16:16:20 +02:00
Molkobain
120670240c PHPDoc 2021-09-15 16:16:20 +02:00
Molkobain
5bd8a25440 N°3685 - Use WebResourcesHelper for D3/C3.js usages 2021-09-15 16:16:20 +02:00
Molkobain
754f755141 N°3685 - Use WebResourcesHelper for D3/C3.js usages 2021-09-15 16:16:20 +02:00
Molkobain
74b7223d44 N°3685 - Introduce WebResourcesHelper and use it for SimpleGraph usages 2021-09-15 16:16:20 +02:00
Stephen Abello
1fb2ff355d N°3685 Optimize CSS size: .ibo-button is extended at multiple places, reducing its use in loops when possible greatly improves compiled selectors 2021-09-15 16:16:20 +02:00
Molkobain
61f3d3aeda N°3685 - Front-end performances: Use only necessary parts of Bulma SCSS 2021-09-15 16:16:20 +02:00
Molkobain
99860e9e20 N°3685 - Front-end performances: Split compatibility files for easier maintenance / inclusion 2021-09-15 16:16:20 +02:00
Molkobain
eb164b47e2 N°3685 - Front-end performances: Update comments 2021-09-15 16:16:20 +02:00
Molkobain
dbd197d9bc N°3685 - Front-end performances: Include advanced search resources only when necessary 2021-09-15 16:16:20 +02:00
Molkobain
e638c65685 N°3685 - Front-end performances: Remove clipboard lib. as it is not used in the backoffice yet 2021-09-15 16:16:20 +02:00
Molkobain
42b779d301 N°3685 - Front-end performances: Include dataTables lib. only when necessary 2021-09-15 16:16:20 +02:00
Molkobain
da3bab9647 N°3685 - Front-end performances: Include jQuery.popup_menu lib. only when necessary 2021-09-15 16:16:20 +02:00
Molkobain
94d53575ae N°3685 - Front-end performances: Include dataTables lib. only when necessary 2021-09-15 16:16:20 +02:00
Molkobain
c26cfad062 Fix JS widget name in comment (decrease false positives in grep) 2021-09-15 16:16:20 +02:00
Molkobain
9cd9087cc7 N°3685 - Front-end performances: Move deprecated JS files to optional compatibility scripts 2021-09-15 16:16:20 +02:00
Molkobain
df7991adeb N°3685 - Front-end performances: Remove JS lib. already included in parent class 2021-09-15 16:16:20 +02:00
Molkobain
2dcfe0e281 N°3685 - Front-end performances: Include ScrollMagic lib. only when necessary 2021-09-15 16:16:20 +02:00
Molkobain
bac584a6b4 N°3685 - Front-end performances: Include graph libs. (Raphael, simple_graph, ...) only when necessary 2021-09-15 16:16:20 +02:00
Molkobain
e4d7bf7dbb N°3685 - Front-end performances: Identify used libs. 2021-09-15 16:16:20 +02:00
Molkobain
2d907f31dd N°3685 - Front-end performances: Use minified versions of libs. 2021-09-15 16:16:20 +02:00
Molkobain
e2001f4585 N°3685 - Front-end performances: Move deprecated JS files to optional compatibility scripts 2021-09-15 16:16:20 +02:00
Molkobain
9810f666fd N°3685 - Front-end performances: Use minified versions of libs. 2021-09-15 16:16:20 +02:00
Molkobain
de5f47d43e N°3685 - UIBlock resources: Add CKEditor resources to RichText 2021-09-15 16:16:20 +02:00
Molkobain
d2662e27e1 N°3685 - Front-end performances: Include BBQ lib. only when necessary 2021-09-15 16:16:20 +02:00
Molkobain
9ac0100d3a N°3685 - Front-end performances: Remove JS lib. already included in parent class 2021-09-15 16:16:20 +02:00
Molkobain
1ea5983464 N°3685 - Front-end performances: Move deprecated JS files to optional compatibility scripts 2021-09-15 16:16:20 +02:00
Molkobain
15081ba82c N°3685 - Front-end performances: Include graph lib. (D3/C3.js) only when necessary 2021-09-15 16:16:20 +02:00
Molkobain
df189bd1f2 N°3685 - Front-end performances: Include advanced search resources only when necessary 2021-09-15 16:16:20 +02:00
Molkobain
06f469faf2 N°3685 - Front-end performances: Add conf. param. to include deprecated JS/CSS files back if necessary 2021-09-15 16:16:20 +02:00
Molkobain
b27aa70a1e N°4247 - Button group: Make sure buttons of a same group always stay on the same line 2021-09-15 15:40:29 +02:00
Molkobain
0e35b8e4fa N°4247 - Activity panel: Make sure that cancel / send buttons always stay on the same line 2021-09-15 15:39:25 +02:00
Molkobain
c0fc62bcb8 N°4247 - Activity panel: All entries are now expanded / collapsed by the corresponding icons 2021-09-15 14:48:17 +02:00
bruno-ds
d1721b0834 N°4261 -Fix CI
Try to repair an odd error in the CI:
> Fatal error: Uncaught Exception: Serialization of 'ReflectionClass' is not allowed

avoid instantiation in the provider, delay them to the actual test
2021-09-15 14:39:00 +02:00
bruno-ds
66e4f369f7 N°4261 -Fix CI
Try to repair an odd error in the CI:
> Fatal error: Uncaught Exception: Serialization of 'ReflectionClass' is not allowed

Maybe it's triggered by the mocks being a property of the test class, so I inlined them.
+ misc. minor modification in order to try to figure out what is causing this behavior.
2021-09-15 13:34:04 +02:00
Pierre Goiffon
c5e1dbce88 💡 PHPDoc for \cmdbAbstractObject::UpdateObjectFromArg 2021-09-14 17:54:28 +02:00
bruno-ds
5d23a250ae N°4261 - New log handler dedicated to Exceptions & use of it in the portal's Exception listener
Such Exceptions are triggered with a Warning level and default the minimum default level in order to write in DB is above, so the behavior is not modified:
 - logs are written in errors.log (with a warning elvel instead of an error)
 - logs are not written in DB unless `log_level_min.write_in_db` is changed
2021-09-14 17:40:11 +02:00
Molkobain
b46357a1bd N°4254 - Fix autocomplete results being hidden below the modal after first opening 2021-09-14 17:31:59 +02:00
Eric Espie
4433cdb21b N°4047 - Fix undefined offset in core\dbobject.class.php - rewrite duplicate check 2021-09-14 16:13:43 +02:00
Eric Espie
45dc79f5af N°4211 - Remove DBObject::Reload calls added in 3.0.0 - Fix Highlight code (computed only for lifecycle and stopwatch) 2021-09-14 15:01:42 +02:00
Eric Espie
2ab0fab051 N°4211 - Remove DBObject::Reload calls added in 3.0.0 - Fix User cache when user not in DB 2021-09-14 15:01:42 +02:00
acognet
be81d1f6c0 N°3901 - Polishing: Menu - count 2021-09-14 12:21:10 +02:00
acognet
ddedce1589 Fix shortcut 2021-09-14 12:01:06 +02:00
Eric Espie
b557f16cfa N°4211 - Remove DBObject::Reload calls added in 3.0.0 - Try Person for User's Contact 2021-09-14 11:06:36 +02:00
Pierre Goiffon
30bf2015cb GitHook install : update create symlink message to add target path 2021-09-14 09:42:23 +02:00
acognet
14b6e903cb N°4245 - Using customfield in notifications triggered by TriggerOnObjectUpdate via ApplyStimulus 2021-09-14 09:41:40 +02:00
acognet
4f6e040346 N°3907 - Polishing: Run query - update of precompiled css 2021-09-14 09:15:22 +02:00
acognet
3e12799d1d N°3907 - Polishing: Run query 2021-09-14 09:10:54 +02:00
acognet
7d0550879f N°3910 - Polishing: data synchro 2021-09-14 09:09:36 +02:00
acognet
6a765fad50 N°3685 - Performance checks on the front end - Avoid reload 2021-09-13 09:19:08 +02:00
Stephen Abello
cbb70c94e5 Update precompiled stylesheets 2021-09-10 10:29:11 +02:00
Stephen Abello
b120488085 N°3922 Restyle one way password inputs, reset buttons and displayed hints 2021-09-10 10:28:38 +02:00
Pierre Goiffon
191891ac35 💬 Pre-commit hook : change message to avoid confusions
"push" is a git verb, so changed it to "add" instead
2021-09-10 08:38:53 +02:00
Molkobain
f171380396 Modals: Fix close "x" not being aligned 2021-09-09 18:01:03 +02:00
Molkobain
f9e54e1dde JSDoc 2021-09-09 18:01:03 +02:00
Eric Espie
15e99a898e N°3985 - Performance checks on the back end - Enhance KPIs 2021-09-09 17:21:57 +02:00
odain
27c397cc1a N°4225/4227: recommit lost restore.php + refactor duplicated code for cli restore/backup in common-cli.execution.php 2021-09-09 16:57:42 +02:00
acognet
616229140e N°3901 - Polishing: Menu 2021-09-09 14:27:36 +02:00
acognet
04e016c919 N°3919 - Polishing: IP Attribute 2021-09-09 14:27:36 +02:00
Eric Espie
a4e43d3f17 N°4225 - Remove Read-only mode for backup 2021-09-09 14:25:19 +02:00
Eric Espie
ed6969be2c N°4227 - Manual iTop restore - maintenance mode 2021-09-09 13:56:07 +02:00
Stephen Abello
8105c4d6cd N°3913 Fix last step double scrollbar on smaller screen 2021-09-09 11:02:18 +02:00
Stephen Abello
3b7073ad4e Remove commented lines 2021-09-09 10:01:52 +02:00
Stephen Abello
dbb84fa4e6 N°4239 Use blocks for bulk modify/transition/delete, harmonize and polish display 2021-09-09 09:52:09 +02:00
Pierre Goiffon
91c7ed9f4d pre-commit hook to disallow commit with SCSS file but without CSS file 2021-09-09 09:28:45 +02:00
Molkobain
e4c818cacb N°4288 - Portal: Update TWIG extensions to match those available in the backoffice 2021-09-08 21:47:05 +02:00
Molkobain
5b6b07af48 N°2007 - Portal: Don't show tooltip if empty on BrowseBrick items 2021-09-08 20:12:03 +02:00
Molkobain
a90a483756 Prepare 3.0.0-beta4
- Update translations
- Update version number
2021-09-08 16:31:11 +02:00
Molkobain
1331bc2139 Add PHPDoc 2021-09-08 15:38:42 +02:00
Molkobain
08946066fb Session management: Add PHPDoc 2021-09-08 14:54:20 +02:00
Molkobain
0de4e62fcd Session management: Revert modification in third-party lib 2021-09-08 14:49:29 +02:00
Molkobain
8edd155351 N°4254 - Fix jQuery dialogs not being stacked correctly 2021-09-08 13:31:58 +02:00
Molkobain
3980ba81e7 Fix typo 2021-09-08 12:33:19 +02:00
acognet
0193868581 N°3901 - Polishing: Menu 2021-09-08 11:48:45 +02:00
Stephen Abello
d2b3de9734 Update precompiled stylesheets 2021-09-08 11:16:58 +02:00
Stephen Abello
d1c39c5e10 N°3929 Fix dashboard properties buttons and change semantics colors/icons 2021-09-08 11:16:06 +02:00
Stephen Abello
e29ae488a1 N°3929 Align dashboard switch button with specifications 2021-09-08 11:16:06 +02:00
Molkobain
ad3e3195a8 Compiler: Add log message in case a profile (user rights) relies on a missing group 2021-09-08 10:58:00 +02:00
Eric Espie
738411005b Fix CI 2021-09-08 10:20:16 +02:00
Pierre Goiffon
40b095e407 📦 Update compiled CSS 2021-09-08 08:04:46 +02:00
Pierre Goiffon
3b7cb9a554 💄 Setup : fix (v2) missing space on backup checkbox
Replaces &nbsp; added in 7890cbd7 with CSS
As the other setup checkboxes seems to be OK (space might already be added, or we might have a line feed in the code between checkbox and label), we are only modifying the backup checkbox
2021-09-07 17:57:25 +02:00
Eric Espie
f474b3de06 Fix CI 2021-09-07 16:58:36 +02:00
Pierre Goiffon
7890cbd701 💄 Setup : fix missing space on backup checkbox 2021-09-07 16:56:47 +02:00
Eric Espie
eef3e9b7ae Merge branch 'develop' into SessionManagement 2021-09-07 16:33:10 +02:00
odain
3c081461b0 fix ci: use env-production instead 2021-09-07 15:22:46 +02:00
Eric Espie
a916df64c9 Merge branch 'develop' into feature/cli-backup-restore 2021-09-07 14:48:06 +02:00
Eric Espie
1d0b96e10f Merge branch 'develop' into feature/cli-backup-restore 2021-09-07 14:45:35 +02:00
Stephen Abello
28070f8682 Update precompiled stylesheets 2021-09-07 14:41:39 +02:00
Stephen Abello
3e428000bd N°3914 Fix "Configure this list" buttons being narrowed when reconstructing modal 2021-09-07 14:40:43 +02:00
Stephen Abello
165b11f948 N°3914 Avoid table header sorting icons from overlapping with header label 2021-09-07 14:40:36 +02:00
acognet
c6495e7212 N°3907 - Polishing: Run query - update of precompiled css 2021-09-07 14:06:28 +02:00
acognet
0fb0b9deab N°3907 - Polishing: Run query 2021-09-07 10:59:14 +02:00
Molkobain
ecb1acf5af Update precompiled stylesheets 2021-09-07 10:54:34 +02:00
Eric Espie
b239e822ef N°4227 / N°4225 - Check cron context in WaitCronTermination 2021-09-07 10:54:27 +02:00
Eric Espie
615aa594f0 N°4227 / N°4225 - Fix cron backup 2021-09-07 10:47:26 +02:00
acognet
2e346a7e80 N°4184 - Alert UI block is collapsible only if there is a title 2021-09-07 10:45:37 +02:00
acognet
f5b557b0bc N°4191 - Fix not selectable caller in NormalChange when only 1 organization 2021-09-07 10:45:37 +02:00
Molkobain
2703075d39 SCSS: Rename variables to match conventions 2021-09-07 10:42:55 +02:00
Molkobain
f6fbd5a7a5 N°3900 - Breadcrumbs: Improve behavior when items are too many for the screen width
When the screen isn't large enough we now put the oldest entries in a dropdown menu like on a browser to access the previous pages.
2021-09-07 10:22:38 +02:00
Molkobain
d1a05f41e5 Button: Fix position to relative to allow absolute positioning of child elements 2021-09-07 10:22:38 +02:00
Stephen Abello
6b67ad93b9 Update precompiled stylesheets 2021-09-07 09:35:53 +02:00
Stephen Abello
884d3c9477 N°3920 On a fullscreen text field and clicking on an image, make popup display on top of current text field 2021-09-07 09:35:53 +02:00
Stephen Abello
26426123b8 N°3920 Move fullscreen button for text field next to field label 2021-09-07 09:35:53 +02:00
Pierre Goiffon
6725a9f1ef N°3807 Fix HTML licenses not displayed correctly 2021-09-07 08:58:00 +02:00
Eric Espie
8e0ae67803 N°4227 / N°4225 - Enhance SetupUtils interface 2021-09-06 17:53:46 +02:00
acognet
979a43edc9 N°3551 - Migrate module to new UIBlock system : Customer Survey - Fix problems of id in checkbox after action like "configure this list" 2021-09-06 15:57:34 +02:00
Eric Espie
2aaac00015 N°3985 - Performance checks on the back end - Fix KPI logs 2021-09-06 14:16:42 +02:00
Stephen Abello
c46cd1c514 Add hover and active style to add caselog entry button 2021-09-03 11:27:37 +02:00
Stephen Abello
74d2a6e46c Activity form can now have extra inputs 2021-09-02 17:27:48 +02:00
Stephen Abello
1d57b4330b Correctly trigger iTop API when adding a caselog entry through quick edit 2021-09-02 17:27:48 +02:00
acognet
034516d0ef Fix on ready script 2021-09-02 15:29:53 +02:00
acognet
72d7758259 N°3905 - Polishing: CSV Import - typo + fix loading js for Panel 2021-09-02 15:26:07 +02:00
acognet
3e9a19b0ea Fix empty page size 2021-09-02 10:11:45 +02:00
Molkobain
6118ee6876 Update precompiled themes 2021-09-01 15:10:15 +02:00
Molkobain
fea3c719af Top bar: Force page title to stay on 1 line 2021-09-01 14:56:21 +02:00
Molkobain
78eda6a2fc N°3800 - Fix text color in code blocks for the activity entries (also update comment to explain both cases) 2021-09-01 14:29:07 +02:00
Molkobain
65db576654 PHPDoc 2021-09-01 09:55:28 +02:00
Pierre Goiffon
69bca189fd N°3800 Update compiled CSS 2021-08-31 16:53:21 +02:00
Pierre Goiffon
5b78820b32 N°3800 Fix color for highlighted code blocks
We want content in a simple code tag to be black
But the color set by Highligh.js must be kept
2021-08-31 16:44:59 +02:00
acognet
79954d3cee N°4259 - Migrate object-copier to itop 3.0 style 2021-08-31 12:07:32 +02:00
Molkobain
8a5c144e3b Fix typo 2021-08-31 09:30:15 +02:00
Stephen Abello
af28a2e01d Update precompiled stylesheets 2021-08-31 09:28:44 +02:00
Stephen Abello
55513b2f4b Move horizontal scroll from tabcontainer to tabs element 2021-08-31 09:26:00 +02:00
Molkobain
e4bf15feb3 Tab container: Hide ellipsis at first to only show if necessary (better UX) 2021-08-30 18:00:03 +02:00
Molkobain
0080caf55f N°2788 - Revert hand-made adjustments for some HTML as it is now handled by .ibo-is-html-content 2021-08-30 17:32:30 +02:00
Molkobain
aed8135d56 N°2788 - Improve how small/large fields value wrap without overlapping the content next to them 2021-08-30 17:32:29 +02:00
Pierre Goiffon
d0ba84068d N°3002 Better log deprecated call location
Now logs file location when called by a function
2021-08-30 16:43:30 +02:00
Pierre Goiffon
d6d1a5cc23 N°3002 Fix undefined index notice in \DeprecatedCallsLog::DeprecatedNoticesErrorHandler 2021-08-30 15:58:55 +02:00
Molkobain
6700de097a N°3712 - Activity panel: Fix origin icon for log entries 2021-08-27 17:28:01 +02:00
Molkobain
cf556de76e Add method to get number of entries of an ormCaseLog 2021-08-27 17:28:01 +02:00
Stephen Abello
72cddf30fb Update demo objects with fresher data 2021-08-27 10:55:36 +02:00
Stephen Abello
5ec6a1cc0c Fix sso buttons alignment with login inputs 2021-08-27 10:55:36 +02:00
Eric
fe0db8f357 N°3985 - Performance checks on the back end - Fix Session helper 2021-08-27 09:08:14 +02:00
Eric
1ab2b9c5d4 N°3985 - Performance checks on the back end - better KPI logs 2021-08-26 17:14:46 +02:00
Eric
67cd5e321e N°3985 - Performance checks on the back end - Fix Session helper 2021-08-26 16:14:14 +02:00
Eric
81d9ea389d N°3985 - Performance checks on the back end - Fix Session helper 2021-08-26 15:33:07 +02:00
Eric
3ee9757a85 🔊 Log when no Twig template is found in controller 2021-08-26 12:06:21 +02:00
Eric
97e0150974 N°3224 - migration audit tool - allow php functions in XPath 2021-08-26 11:54:45 +02:00
acognet
7f37c5912a N°3914 - Polishing: Lists - fix display of datatable and rename attribute for init data 2021-08-26 11:37:17 +02:00
Stephen Abello
2f5a1c99a5 Add variables to class icon size CSS classes 2021-08-26 11:22:31 +02:00
Eric
5ce9b6ca99 Merge branch 'develop' into SessionManagement 2021-08-26 10:28:43 +02:00
Eric
bd9286f903 N°3985 - Performance checks on the back end - Use Session helper 2021-08-26 10:27:26 +02:00
Molkobain
4ae7090a51 N°4062 - Advanced search: Fix visual glitch when submitting the search while the results are sticking 2021-08-25 20:55:58 +02:00
Stephen Abello
335074701f Update precompiled stylesheets 2021-08-25 16:57:26 +02:00
Stephen Abello
76f70d45dd N°4182 Large own caselog entries were not scrolling in activity panel 2021-08-25 16:34:29 +02:00
Stephen Abello
6f147acd76 Update precompiled stylesheets 2021-08-25 16:20:12 +02:00
Stephen Abello
a84d2ce6bb N°3928 Avoid double carret on multiselect 2021-08-25 16:18:56 +02:00
Stephen Abello
ea9c1ab0b3 Add helpers to set size to class icons 2021-08-25 16:18:56 +02:00
Molkobain
e1dc269171 SCSS: Rename variable to something more semantic lik in other blocks 2021-08-25 15:46:08 +02:00
Molkobain
16dc7de8e2 Rename method for consistency across the widget 2021-08-25 15:13:03 +02:00
Stephen Abello
88e210d84d N°3928 Use a more precise selector for tooltips singleton 2021-08-25 14:55:26 +02:00
Stephen Abello
4f6bd5444b N°3928 Create tooltip singleton for impact analysis matching elements (icon/text) 2021-08-25 14:34:40 +02:00
Stephen Abello
0f204f94eb Add helper to create tooltip singleton 2021-08-25 14:34:40 +02:00
Vincent Dumas
f5ae76360e Simple typo in declaration of an entry
No associated bug
2021-08-25 14:18:14 +02:00
vdumas
8d59024d8e N°463 use CDATA on oql tags 2021-08-25 14:13:14 +02:00
Molkobain
32e0031242 N°4254 - Fix items list not visible for external key in modals 2021-08-25 11:25:28 +02:00
Stephen Abello
3fdebdc217 Update precompiled stylesheets 2021-08-25 11:07:14 +02:00
Stephen Abello
7083807319 N°3928 Migrate impact analysis page to 3.0 style 2021-08-25 11:06:26 +02:00
Stephen Abello
0f01dbc3e5 Allow to add an icon to lists display block 2021-08-25 11:06:26 +02:00
Stephen Abello
8289b028cf N°3928 Limit impact analysis size 2021-08-25 11:06:25 +02:00
Stephen Abello
f72a6ee963 Hints that disabled tabs are not clickable 2021-08-25 11:06:25 +02:00
Stephen Abello
08359cdd05 N°3928 Replace legacy loading gif 2021-08-25 11:06:25 +02:00
Stephen Abello
de17439f55 N°3928 Remove function messing up tabs height while giving no real benefit 2021-08-25 11:06:25 +02:00
Stephen Abello
6e555e29d1 N°3928 Fix impact analysis not showing when displaying list first 2021-08-25 11:06:25 +02:00
Stephen Abello
9dae34461b Use tab widget prefix for our slightly modified tabs widgets 2021-08-25 11:06:25 +02:00
Stephen Abello
06b1e581fe N°3928 Use right tab widget in impact analysis and make sure widget is initialized before using it 2021-08-25 11:06:24 +02:00
acognet
d4b515c7b7 Fix id in checkbox 2021-08-25 10:31:33 +02:00
Molkobain
20759eca23 Fix "Configure this list" due to regression in 280afb35 2021-08-25 09:30:53 +02:00
Molkobain
4e420cbcd6 N°4062 - Advanced search: Fix sticky header glitches with pagination 2021-08-24 17:55:41 +02:00
vdumas
0e60c67910 N°463 Add 3 predefined OQL queries 2021-08-24 10:29:33 +02:00
Molkobain
808c1fa571 N°3712 - Activity panel: Fix origin indicator being displayed on all type of entries 2021-08-24 10:17:56 +02:00
Molkobain
dbf8475883 N°4256 - Fix CMDBChange origin to 'csv-interactive' on the CSV Import page 2021-08-24 10:01:44 +02:00
Eric
2c2155a8e0 N°3985 - Performance checks on the back end 2021-08-23 13:57:03 +02:00
Stephen Abello
ffbd94d671 Cleanup 2021-08-20 16:53:38 +02:00
Molkobain
3abcdc9c58 Rename CSS prefixes of autocomplete to match conventions 2021-08-20 16:50:16 +02:00
Molkobain
242f499101 Remove require as the class is handled by the autoloader 2021-08-20 16:50:16 +02:00
Molkobain
6b0106ff73 PHPDoc 2021-08-20 16:50:16 +02:00
acognet
bf991ffb8a N°3685 - Performance checks on the front end - Minimize size of generated javascript 2021-08-20 16:03:22 +02:00
acognet
280afb35a9 Datatable : on init load data for the first page 2021-08-20 15:54:34 +02:00
acognet
e095749c90 Fix typo 2021-08-20 15:54:34 +02:00
Stephen Abello
ced0e7cc8f N°4093 When clicking on a tab before tab widget is loaded, prevent AjaxTabs from redirecting our page to their target 2021-08-20 11:18:13 +02:00
Molkobain
6df98c3d41 N°4248 - Change demo samples icons for services / service families 2021-08-20 09:41:19 +02:00
Stephen Abello
21e16fd2e8 Make extension source clearer in setup and about box 2021-08-19 18:01:40 +02:00
Molkobain
bc2e25be99 N°3918 - Change missing object tooltip text to "Object not found" 2021-08-19 15:02:04 +02:00
Molkobain
0c5ebc3a84 N°1616 - Fix large HTML table overflowing in HTML fields or logs 2021-08-19 15:02:04 +02:00
Stephen Abello
43412b78e3 N°1632 Remove unused autoloader in UnauthenticatedWebPage 2021-08-19 14:08:21 +02:00
Eric
9126635cf2 Allow setup ends correctly when problem occurs 2021-08-19 13:50:16 +02:00
Eric
d0986c048a Allow setup again when problem occurs 2021-08-19 12:14:14 +02:00
Eric
fe0c52bedd themes 2021-08-19 11:48:26 +02:00
Eric
8926c6783a 🐛 scss reference was in bulma not in iTop scss 2021-08-19 11:48:25 +02:00
Stephen Abello
95b6dd0cc3 N°1632 Add a common webpage to be used for unauthenticated/token based actions, guarantees harmony between extensions style and a common API 2021-08-19 11:41:01 +02:00
Eric
121e39b738 fix themes 2021-08-19 11:26:31 +02:00
Eric
48dee9c136 🐛 remove undefined scss reference 2021-08-19 10:55:58 +02:00
Eric
befde44215 🐛 fix non-existing variable 2021-08-19 10:41:36 +02:00
acognet
a827eed59d Restore unwanted changes 2021-08-19 10:41:18 +02:00
Molkobain
1613c1bbdc Merge remote-tracking branch 'origin/support/2.7' into develop
# Conflicts:
#	application/itopwebpage.class.inc.php
#	core/config.class.inc.php
#	setup/setuputils.class.inc.php
2021-08-18 18:55:56 +02:00
Molkobain
909af7f59c JSDoc 2021-08-18 18:53:42 +02:00
vdumas
495b39a7ab N°4246 - Add missing class parameter 2021-08-18 17:05:16 +02:00
vdumas
f9ff66941d N°4079 - FR Dictionnary typo 2021-08-18 17:03:14 +02:00
acognet
29871bc6da Fix precompiled css 2021-08-18 16:49:52 +02:00
Molkobain
1c983e8093 Merge remote-tracking branch 'origin/support/2.6' into support/2.7
# Conflicts:
#	core/config.class.inc.php
#	datamodels/2.x/itop-portal-base/portal/src/controllers/objectcontroller.class.inc.php
#	pages/ajax.render.php
2021-08-18 16:12:22 +02:00
Molkobain
92a9a8c65f N°4129 - Security hardening 2021-08-18 15:57:18 +02:00
Federico Lazcano
a3e1b95c8e Update install.txt
Change old URL for new, linking to iTop Hub.
2021-08-18 14:35:35 +02:00
acognet
bf2d98a1bf N°580 - Jean Dupont - Jean Dupont, auto-complete avec homonyme 2021-08-18 10:41:38 +02:00
acognet
abe103eade N°580 - Jean Dupont - Jean Dupont, auto-complete avec homonyme 2021-08-18 09:32:26 +02:00
acognet
034052cf4b avoid 404 error when loading image in autocomplete 2021-08-18 09:32:26 +02:00
Molkobain
4458f26379 N°3750 - Behat: Add metadata about logs label 2021-08-17 17:49:22 +02:00
Molkobain
007e1ded0d N°3786 - Fix unload XHR call being always sent, even when no draft entries 2021-08-17 16:11:21 +02:00
Molkobain
5651512f68 N°4244 - Add protection against unfortunate massive delete of inline images / attachments when a null temp ID is passed 2021-08-17 15:58:52 +02:00
Molkobain
8c043f137c N°3750 - Behat: Add missing metadata to DesignerFormField 2021-08-17 10:01:22 +02:00
acognet
b3cce54ee9 Fix precompiled css 2021-08-17 10:00:19 +02:00
acognet
e4e4e3b0bf Fix precompiled css 2021-08-17 09:18:58 +02:00
acognet
1cb3b4bd96 Remove lines in double 2021-08-16 21:56:39 +02:00
acognet
97ee6570d2 N°3572 - Migrate backoffice pages to new UIBlock system : Toolkit 2021-08-16 15:17:05 +02:00
acognet
8c8f711fe8 N°3551 - Migrate module to new UIBlock system : Customer Survey 2021-08-16 15:16:08 +02:00
acognet
f140efd95c N°4007 - When a search is on auto submit, auto submit it also on first display - new fix in order to avoid reload in case of OQLMenuNode - rollback some deleted lines 2021-08-16 12:53:27 +02:00
acognet
6b19758654 Add deprecated 2021-08-16 11:24:58 +02:00
acognet
2899c82ef2 Fix Typo 2021-08-16 09:55:40 +02:00
acognet
12c2929f1d Context menu remains in place while scrolling 2021-08-16 09:54:51 +02:00
acognet
9d28e43804 N°4232 - Order By error on query with two classes 2021-08-16 09:53:19 +02:00
Molkobain
27217815d1 N°2510 - Fix expand/collapse buttons of log entries in a list 2021-08-16 09:37:36 +02:00
Molkobain
8e3cc471df N°1836 - Cancel of an object creation form now redirects to the search page of the same class (instead of just showing "operation cancelled") 2021-08-14 23:33:21 +02:00
Molkobain
58e35ea33b N°1047 - Replace hard coded 'iTop' occurrences with ITOP_APPLICATION_SHORT 2021-08-14 22:43:29 +02:00
Stephen Abello
0b81601699 N°3913 Allow iTop Hub iframe to fully display after setup 2021-08-13 17:46:24 +02:00
Stephen Abello
4d3ba6edd0 N°3913 Make setup's collapsable sections' arrow clickable 2021-08-13 17:08:26 +02:00
Stephen Abello
9de014c9cb Add favicon to setup pages 2021-08-13 15:54:43 +02:00
Stephen Abello
75dbaada72 Update favicon style 2021-08-13 15:52:34 +02:00
Stephen Abello
0d4dd0c67b Harmonize iTop's logo and fluent icons 2021-08-13 15:28:17 +02:00
Stephen Abello
fabdef37d2 N°3913 UI improvements for setup, also remove A LOT of <table> 😬 2021-08-13 12:23:52 +02:00
Molkobain
e666631f63 N°3918 - Restore style on broken wiki links (also add a tooltip to explain what it means) 2021-08-13 11:56:40 +02:00
odain
280feca863 Revert "N°4225 - Protect manual backups from cron (and vice versa) - minimal work ie protect manual backup from cron only"
This reverts commit e3dc1b77cc.
2021-08-13 11:16:48 +02:00
DudekArtur
7690e43b39 Update pl.dictionary.itop.core.php 2021-08-13 10:11:16 +02:00
Molkobain
0c66882990 N°3918 - Fix regression on mentions display introduced by 7af10e51 2021-08-12 21:04:50 +02:00
Molkobain
7613ac7a9b Graphviz: Remove generated SVG image after usage as it won't be cached 2021-08-12 19:56:02 +02:00
Molkobain
7af10e5197 N°3918 - Fix wiki syntax "[[CLASS:ID]]" not working in logs 2021-08-12 17:28:50 +02:00
odain
095c975ec6 N°4227 / N°4225 - require cleanup + fix manual restore 2021-08-12 16:25:50 +02:00
odain
9e1e5a8a47 N°4227 - Manual iTop restore - protect any restore from cron or db updates and release readonly mode afterward only if restore set it itself 2021-08-12 16:25:50 +02:00
odain
2c026fa891 N°4225 - Protect manual backups from cron (and vice versa) - protect any backup from cron/db updates and release readonly mode only when backup set it itself 2021-08-12 16:25:50 +02:00
odain
00d65aeb45 N°4227 - Manual iTop restore - create manual CLI restore 2021-08-12 16:25:50 +02:00
odain
5702f603ac N°4227 - Manual iTop restore - move restore mutex management inside in DBRestore->RestoreFromCompressedBackup primitive 2021-08-12 16:25:50 +02:00
odain
e3dc1b77cc N°4225 - Protect manual backups from cron (and vice versa) - minimal work ie protect manual backup from cron only 2021-08-12 16:25:50 +02:00
Stephen Abello
c304f70ff4 Harmonize external key's autocomplete items display with dropdown ones 2021-08-12 14:40:36 +02:00
Stephen Abello
53fd41e748 N°4127 Fix XSS vulnerability in autocomplete lists 2021-08-12 14:21:05 +02:00
Molkobain
7577fbb8bf N°4236 - Fix user with no admin right can't connect in iTop when log_usage set to true 2021-08-12 11:13:59 +02:00
Molkobain
0fc912b357 Rename MetaModel::IsObjectExistsInDb() to MetaModel::IsObjectInDB() 2021-08-12 09:37:24 +02:00
Molkobain
c475e66176 Add documentation 2021-08-12 09:35:14 +02:00
Pierre Goiffon
cd1ba097cb N°3867 Fix error "LEVEL_WARNING of type Identifier is forbidden" error when saving valid config in configuration editor 2021-08-11 18:07:38 +02:00
Molkobain
fdca4d4cc3 N°3786 - Fix object locked hint (on activity panel) not displayed until message removed 2021-08-11 17:41:31 +02:00
Pierre Goiffon
4379b4d908 N°3800 Fix HTML content display for table borders v2 2021-08-11 17:31:08 +02:00
Pierre Goiffon
5b42f67a99 N°3867 Code review: remove condition that is quite too strict (danger !!)
Thanks @odain !
2021-08-11 17:22:21 +02:00
Pierre Goiffon
0b9ccc8e67 N°3800 Fix HTML content display for table borders and code color 2021-08-11 17:08:00 +02:00
Pierre Goiffon
2d98ca2318 N°3867 Fix "Invalid configuration: Stmt_Expression is forbidden in line 10" error when saving valid config in configuration editor
Now this is tested in \ConfigValidator\iTopConfigAstValidatorTest
2021-08-11 16:38:56 +02:00
odain
92add2bbfe add annotation to datasynchro test 2021-08-11 10:17:35 +02:00
Pierre Goiffon
f15bdb75ca N°4173 Fix memory_limit error on target object hyperlink generation 2021-08-10 19:08:00 +02:00
Pierre Goiffon
a66830de17 N°4173 Fix memory_limit error when saving an object pointing to a big AttributeBlob
Check of pointed object was loading the whole object instead of just doing a count
2021-08-10 19:08:00 +02:00
Pierre Goiffon
714294e1b4 N°4173 Fix memory_limit exhausted when having ExtKey widget pointing on class with AttributeBlob
Was failing when opening an object form, and when the list contained target objects with total file size above memory_limit
2021-08-10 18:46:10 +02:00
Molkobain
e3d2c1d761 Advanced search: Restore "more criteria" inputs color 2021-08-10 16:27:08 +02:00
Molkobain
59d95cc14b Field: Change how field's value wrap to fix unwanted "new line" between some elements (lists, ...) 2021-08-10 16:27:08 +02:00
Pierre Goiffon
ddc5bbd1bb N°3867 Fix write config now removes PHP vars
Now the PhpParser tree has a different structure, beginning with a PhpParser\Node\Stmt\Expression
2021-08-10 15:47:01 +02:00
Pierre Goiffon
9bbee0d603 ⬆️ N°3867 Upgrade php-parser from 3.1.5 to latest version 4.12.0
The 3.1.5 version wasn't maintained anymore and was compatible with PHP 7.2 maximum
2021-08-10 15:45:02 +02:00
acognet
be1ef5b452 N°3634 - Feedback alpha 3.0 : finish list - display printable object 2021-08-10 12:10:54 +02:00
Pierre Goiffon
cbdc48b7e1 iTopConfigParserTest now works on Windows 2021-08-10 11:48:13 +02:00
denis.flaven@combodo.com
bb5679959e Fixed unit tests for password_renewed_date, broken by the correction of
n°4095.
2021-08-10 10:40:54 +02:00
Molkobain
cdbb4470fc N°4039 - Add margin below an object details
- Easier read of the fields at the bottom of it
- Better display of a dropdown at the bottom of it
2021-08-09 17:20:56 +02:00
Molkobain
252d752bf5 Navigation menu: Improve french translations for the current user tooltip 2021-08-09 17:20:56 +02:00
denis.flaven@combodo.com
99d0c05c1c N°4095 - Provisions for future implementation of users password
expiration.
2021-08-09 17:13:08 +02:00
Molkobain
5926e9d110 Navigation menu: Add current user's login to the tooltip 2021-08-09 16:28:53 +02:00
Molkobain
c8dd8c3806 Code cleanup: Remove forgotten commented line 2021-08-09 13:54:02 +02:00
Molkobain
70b07721e6 N°2875 - Fix typo in config example 2021-08-09 10:46:42 +02:00
Molkobain
bd050dfe69 N°2875 - Add possibility to configure the marker scope by either a class or an OQL 2021-08-09 10:38:27 +02:00
Molkobain
9eb477ce83 N°2875 - Fix visual glitches on long results
- Medallion could be horizontally compressed
- Title wrapped instead of overflowing, making reading across entries difficult
2021-08-09 10:38:27 +02:00
Pierre Goiffon
a742b6c610 🔊 N°3002 DeprecatedCallsLog error handler : add trigger_error message 2021-08-09 09:06:17 +02:00
Pierre Goiffon
fcf769666e N°3913 setup : in "done" step, add back styling on HTML content 2021-08-06 17:59:42 +02:00
Pierre Goiffon
72e628c5d5 💡 Reference in PHPDoc for \LogAPI::GetMinLogLevel 2021-08-06 17:39:34 +02:00
Pierre Goiffon
bf28602ae6 💡 Improve PHPDoc for \LogAPI::GetMinLogLevel 2021-08-06 17:37:56 +02:00
Pierre Goiffon
b8a0d899f4 Fix \coreExtensions\UserLocalTest::testValidatePassword failing because of DEPRECATED notices 2021-08-06 17:13:24 +02:00
Pierre Goiffon
d335736cfc 🔊 N°3002 Add trigger_error to catch deprecated notices inside DeprecatedCallsLog
They are logged as WARNING level in \DeprecatedCallsLog::ENUM_CHANNEL_PHP_LIBMETHOD channel

Such deprecated notices are generated inside Symfony for example using @trigger_error(..., E_DEPRECATED).
Having such a log will help us migrate to the next lib version !
2021-08-06 17:13:24 +02:00
Molkobain
80f7d07378 N°3592 - Fix alignment of custom fields in the backoffice 2021-08-06 17:04:26 +02:00
Molkobain
0be6a8aef4 N°3592 - Remove part of 146a95bae as it was unnecessary 2021-08-06 17:04:26 +02:00
Stephen Abello
0fe857071d Fix login css glitches with iTop 3.0 2021-08-06 15:41:43 +02:00
acognet
05981c8af8 N°4156 - GUI broken when a external key contains "\" 2021-08-06 11:56:25 +02:00
Molkobain
0abea749fa N°3786 - Fix lock removal when leaving an object details page in read-only with lock on the activity panel 2021-08-06 11:12:56 +02:00
Molkobain
78af6fdc84 N°3944 - Add comment to explain the 2 similar IFs 2021-08-06 11:11:57 +02:00
acognet
1e97b5a8c0 Revert N°3423 - Allow AttributeImage / AttributeDocument content to be cached by the browser + N°4029 - Caching images in chrome does not work 2021-08-06 09:51:59 +02:00
acognet
0214243b63 N°3914 - Polishing: Lists - remove pagination when it is unnecessary 2021-08-06 09:19:31 +02:00
Pierre Goiffon
d30871ac59 Revert "N°3002 Add trigger_error to catch deprecated notices inside DeprecatedCallsLog"
This reverts commit d247ea915d.
Will solve CI build errors... I will work in my own branch to tweak this !
2021-08-05 17:35:17 +02:00
Pierre Goiffon
d247ea915d N°3002 Add trigger_error to catch deprecated notices inside DeprecatedCallsLog
Such notices are generated inside Symfony for example using @trigger_error(..., E_DEPRECATED).
Having such a log will help us migrate to the next version !
2021-08-05 17:18:19 +02:00
acognet
0e0aed1ba4 N°3423 - Allow AttributeImage / AttributeDocument content to be cached by the browser + N°4029 - Caching images in chrome does not work 2021-08-05 16:34:24 +02:00
acognet
bc770ef3d5 N°4007 - When a search is on auto submit, auto submit it also on first display - new fix in order to avoid reload in case of OQLMenuNode -add param in searchFormHandler 2021-08-05 16:20:56 +02:00
Pierre Goiffon
56a4fb0b42 Allow to run all tests from within the IDE
Just :
* configure the config file (test\phpunit.xml.dist)
* add runner parameters : --fail-on-risky --exclude-group beforeSetup
* specify iTop root as custom working directory
2021-08-05 15:21:41 +02:00
acognet
3139628dd8 N°4007 - When a search is on auto submit, auto submit it also on first display - new fix in order to avoid reload in case of OQLMenuNode 2021-08-05 15:08:48 +02:00
acognet
7d9b19cd9e N°4119 - Loose application context in advanced search ajax call 2021-08-05 12:15:47 +02:00
Stephen Abello
b3cb95d2f1 Removed inline background color 2021-08-05 11:56:17 +02:00
Stephen Abello
a6765cdc3a Update precompiled stylesheets 2021-08-05 10:38:40 +02:00
Stephen Abello
97d52fb539 N°3685 Revert most of e4f58b5b changes, replace @extend .ibo-button calls with classes in markup for most cases, except jquery-ui buttons 2021-08-05 10:20:30 +02:00
Pierre Goiffon
ad936d7a2f 🔇 N°3731 Remove DeprecatedCallLog in \MetaModel::BulkUpdate
Method is still called in \ObsolescenceDateUpdater !
2021-08-04 17:37:10 +02:00
Pierre Goiffon
090eb9a560 🔇 N°3731 Remove DeprecatedCallLog in \MetaModel::GetFilterCodeOrigin
Method is still called !
2021-08-04 17:34:13 +02:00
Stephen Abello
e4f58b5b98 N°3685 Greatly optimize SCSS rules to reduce compiled CSS file size (4.7Mo -> 620ko) 2021-08-04 16:38:40 +02:00
acognet
c99a22c9f7 N°4025 - Universal search : cannot select class anymore 2021-08-04 14:41:25 +02:00
Pierre Goiffon
29cf20beaf N°3909 Fix notification configuration help layout 2021-08-04 12:00:48 +02:00
denis.flaven@combodo.com
e325d535ae N°4096 - Add automatic email reprocessing in case of error 2021-08-04 11:24:59 +02:00
Pierre Goiffon
11cfdb2a17 N°3807 Fix container added for all Html components
This was causing issues for example in the setup, as any raw content is sent using \WebPage::add, which create an HTML component.
I reverted the layout update, and created a new factory method to be used when needed : \Combodo\iTop\Application\UI\Base\Component\Html\HtmlFactory::MakeHtmlContent
2021-08-04 11:19:35 +02:00
Pierre Goiffon
66720b9731 N°3807 Update theme CSS 2021-08-04 11:19:35 +02:00
acognet
234f46cafa N°1731 - Allow Transitions without unnecessary confirmation 2021-08-04 10:51:04 +02:00
acognet
27c3ce0389 N°3907 - Polishing: Run query - Add dictionary entry 2021-08-04 10:44:26 +02:00
Pierre Goiffon
9d0e2fa64a N°3807 Bring back styling to raw HTML content
Bulma minireset (https://github.com/jgthms/bulma/blob/master/sass/base/minireset.sass) was applied everywhere in iTop. This was causing HTML content without any Bulma or iTop 3.0.* CSS classes to render with no styles anymore, not even the default browser's ones. Especially rendering for content styled in CK Editor was problematic...

This commit creates a new `ibo-is-html-content` CSS class (in css/backoffice/utils/helpers/_misc.scss) that just extends the `content` Bulma class (indirection to reduce framework coupling).
This new iTop CSS class is added in :
* AttributeText and its children when format is HTML
* HTML components
* activity entries in HTML format

The class can also be used elsewhere when needed, for example in modules having custom pages that aren't using yet the iTop 3.0.* UI components or CSS classes.
2021-08-04 10:37:54 +02:00
acognet
e211633fed N°4039 - List contain stays in place when scrolling on a screen 2021-08-04 10:37:02 +02:00
denis.flaven@combodo.com
29967aa41a N°3944 - LogAPI : fix default log level in config when logging using a channel 2021-08-04 10:07:58 +02:00
Pierre Goiffon
3ebb1cfc66 💡 phpDoc 2021-08-03 17:15:38 +02:00
Molkobain
6c2221b8b6 Datatables: Remove extra white space in template 2021-08-03 16:16:21 +02:00
Molkobain
c0b3aed12c N°3712 - Code cleanup thanks to @piR 2021-08-03 16:15:09 +02:00
Stephen Abello
53efc9f75e Update precompiled stylesheets 2021-08-03 15:55:06 +02:00
Stephen Abello
0d566f2e47 Fix panel collapsible toggler display 2021-08-03 15:49:27 +02:00
Stephen Abello
b294e3c734 N°3928 Correctly align impact analysis's filter refresh button 2021-08-03 15:49:27 +02:00
Stephen Abello
6704f9eccf N°3928 Allow user to collapse impact analysis' filter 2021-08-03 15:49:27 +02:00
Molkobain
90cb6e1d49 N°4124 - Extract computations into variables for easier comprehension 2021-08-03 11:37:01 +02:00
Molkobain
c0aa4f2d69 Initialize array properly 2021-08-03 11:11:02 +02:00
Molkobain
01984c24c0 Fix wrong usage of spaceless filter 2021-08-02 20:15:16 +02:00
Molkobain
1da1e0b1bd N°3712 - Activity panel: Improve history entries to have a different icon depending the origin (interactive, webservices, csv, ...) 2021-08-02 19:42:32 +02:00
Molkobain
39bcd3e4cd 🌐 N°3712 - Add dict. entries for CMDBChange->origin values 2021-08-02 19:42:32 +02:00
Molkobain
156cce6098 N°3712 - Extract CMDBChange origin values in a dedicated class 2021-08-02 19:42:32 +02:00
acognet
3130e95f4f N°3907 - Polishing: Run query 2021-08-02 18:56:07 +02:00
Molkobain
e28f704f3e N°4076 - Revert regression in global search from 344cce9fd
Current query was not visible when reaching the results page
2021-08-02 15:20:05 +02:00
Stephen Abello
5c6c59941a N°3901 Correctly hide menu search placeholder 2021-08-02 15:18:06 +02:00
Stephen Abello
bc9d47933e Update precompiled stylesheets 2021-08-02 11:43:28 +02:00
Stephen Abello
07a10e4146 N°3930 Fix dashlet blocker position 2021-08-02 11:42:57 +02:00
Stephen Abello
e8a21870ad Update precompiled stylesheets 2021-08-02 11:28:37 +02:00
Stephen Abello
2e132d5c53 N°3930 Restore dashlet blocker on dashboard editor 2021-08-02 11:28:37 +02:00
Eric
3359609349 Allow mode selection for queries 2021-07-31 15:23:19 +02:00
Molkobain
2966759466 Code cleanup 2021-07-30 17:09:51 +02:00
Molkobain
25395405e5 N°3905 - Remove remaining spaces 2021-07-30 17:09:50 +02:00
Stephen Abello
b589e2d001 Update precompiled stylesheets 2021-07-30 16:48:48 +02:00
Stephen Abello
27f3619cf5 Fix undefined variable used in scss 2021-07-30 16:48:23 +02:00
Stephen Abello
616fc436d0 CSS improvements 2021-07-30 16:40:33 +02:00
acognet
4f2f765207 N°3912 - Polishing: Export - fix page webservices/export.php - revert delete of utils.js 2021-07-30 15:16:51 +02:00
Pierre Goiffon
9931fa1a6b 🎨 N°4092 rename method
Thanks @Molkobain !
2021-07-30 12:09:30 +02:00
Pierre Goiffon
a13f2750ea 🎨 Replace call_user_func call to \cmdbAbstractObject::GetShortcutActions for better IDE recognition
And also :
* removed an obsolete use statement
* fix method phpdoc
2021-07-30 11:41:41 +02:00
Stephen Abello
243d105f59 Fix return value from new method added in 49fd482 2021-07-30 10:54:16 +02:00
Stephen Abello
7783ba570e PHPDoc 2021-07-30 10:37:52 +02:00
acognet
5a9fa2ac32 N°3912 - Polishing: Export - fix page webservices/export.php 2021-07-29 17:59:51 +02:00
Pierre Goiffon
619e3de5a8 N°4092 Setup : add symlinks option in install
Was only available during update
2021-07-29 17:34:24 +02:00
Pierre Goiffon
83064d68c7 N°4092 Setup : symlink option now always displayed if functionality enabled
Previously we were also testing for flag presence.
In consequence the confirmation dialog when unchecking the option is also removed (we can enable back the option using the setup)
2021-07-29 17:24:20 +02:00
Stephen Abello
f3c11e72cf N°3552 Add method to retrieve User object from Person object 2021-07-29 16:37:03 +02:00
Stephen Abello
c9e887a264 N°3552 Allow AddLogEntry to set entry's user_id from another user using a new parameter 2021-07-29 16:37:02 +02:00
Stephen Abello
49fd482389 N°3552 Correctly display case log entry with no iTop user linked (such as mail to ticket entries) 2021-07-29 16:37:02 +02:00
acognet
96de4e1796 N°4117 - Text field display, too many empty lines 2021-07-29 11:52:39 +02:00
acognet
44f413583c N°4124 - Unable to scroll down on some object 2021-07-29 11:38:20 +02:00
acognet
91104002ea N°4037 - Missing close button on list export on portal - rollback commit for N°3746 2021-07-28 16:02:35 +02:00
acognet
f98ba1594c N°3705 - Migrate module to new UIBlock system : Kanban board - css and dictionnary in ajax page 2021-07-28 16:02:35 +02:00
Molkobain
431dc5532b Change comment / test for clarification 2021-07-28 15:59:43 +02:00
Molkobain
df473ae313 PHPDoc 2021-07-28 15:31:22 +02:00
Molkobain
40ce74cffa N°4203 - Activity panel: Add button to load all entries at once 2021-07-28 14:58:15 +02:00
Molkobain
7598c18ad6 N°4203 - Activity panel: Hide "load more entries" button when only "logs" filter is active 2021-07-28 14:55:17 +02:00
Molkobain
d38b655f5f Activity panel: Limit visual glitches on entries on first display by hiding them all before displaying only the relevant.
Otherwise, entries from the other logs / activity tabs are visible for a second before filtering on the entry of the current tab only.
2021-07-28 14:55:17 +02:00
Eric
f4345ef312 N°4199 - Add <code> to EnumSet values to fix XML conversion 2021-07-28 14:40:19 +02:00
Eric
13b548e95d N°4199 - Add <code> to EnumSet values to fix XML conversion 2021-07-28 14:39:52 +02:00
Eric
3a988ab499 N°4175 - Adding a lifecycle to an existing class fails on setup (using xml version < 3.0) 2021-07-28 13:30:39 +02:00
Eric
14a5f87d62 N°4036 - User edition controls : a user cannot remove contact 2021-07-28 13:09:18 +02:00
Eric
8dae459b12 N°4036 - User edition controls : the profiles selection should allow the User modification (when editing your own User) 2021-07-28 11:45:02 +02:00
odain
2fe4265223 N°4125 - Make translations loading more robust toward APCu cache corruption or invalid dictionnary - adaptations to get current correction accepted 2021-07-28 11:14:49 +02:00
Eric
8dc10424e8 🎨 cleanup code 2021-07-28 09:59:10 +02:00
Eric
54a6573948 N°4036 - User edition controls : the profiles selection should allow the User modification (when editing your own User) 2021-07-28 09:13:47 +02:00
Eric
1d5e0b6fe9 Temporary ignored test for CI 2021-07-27 18:01:39 +02:00
Eric
acb8a377dd N°4036 - User edition controls : a user cannot change his own status (fix) 2021-07-27 17:40:00 +02:00
odain
d86f489c89 fix provided themes to avoid scss setup compilation 2021-07-27 17:22:24 +02:00
Eric
2c154b601d N°4036 - User edition controls : allowed orgs must contain user org 2021-07-27 15:57:03 +02:00
Eric
7dad079688 N°4036 - User edition controls : a user cannot remove contact 2021-07-27 15:57:03 +02:00
Eric
ace2eb6dab N°4036 - User edition controls : a user cannot change his own status 2021-07-27 15:57:03 +02:00
Eric
25f3c1cbc4 N°4036 - User edition controls : a user cannot add to himself a profile denying the backoffice 2021-07-27 15:57:03 +02:00
Eric
8f7e7c136d Fix links when object edition fails 2021-07-27 15:57:03 +02:00
Eric
71a7e060e4 N°4036 - User edition controls : a user cannot delete himself 2021-07-27 15:57:03 +02:00
Pierre Goiffon
c450f1d02f 💡 aModifierProperties documentation 2021-07-27 15:54:47 +02:00
acognet
4431762c10 N°3592 - Migrate module to new UIBlock system : Customized request forms - precompiled css v2 2021-07-27 15:33:47 +02:00
acognet
97170892e6 N°3905 - Polishing: CSV Import - remove spaces 2021-07-27 15:08:38 +02:00
acognet
5137d634e3 N°3592 - Migrate module to new UIBlock system : Customized request forms - precompiled css 2021-07-27 15:03:04 +02:00
acognet
146a95baec N°3592 - Migrate module to new UIBlock system : Customized request forms - remove space in edit screen 2021-07-27 14:38:44 +02:00
Pierre Goiffon
2b71ea108a Setup memory_limit check : clearer message
Now the current value is displayed as entered in the PHP conf
And the recommended value is displayed in a friendly format (32M instead of raw bytes value)
2021-07-27 11:37:05 +02:00
Molkobain
a7ac9126a2 PHPDoc 2021-07-26 18:07:12 +02:00
Eric
ee544b646d N°4076 - PHPDoc 2021-07-26 17:48:36 +02:00
Eric
344cce9fdd N°4076 - Allow block parameters to change the behaviour of blocks on the page 2021-07-26 17:20:45 +02:00
Stephen Abello
bfcfcdd4cc N°3930 Fix dashlet group by preview not displaying 2021-07-26 14:26:44 +02:00
Molkobain
4410bf7e1f N°4144 - Portal: Fix caselog fullscreen icon too small to be clickable 2021-07-26 12:07:49 +02:00
Eric
d1fda1dbc6 composer classmap changed 2021-07-23 16:47:15 +02:00
Stephen Abello
5c702be641 Update precompiled themes 2021-07-23 11:29:33 +02:00
Stephen Abello
8a9ad78e9c N°3930 Bring back error icons on dashlet property 2021-07-23 11:29:33 +02:00
Molkobain
778be8abce N°4195 - Avoid dictionary entries to be added to the setup page as it breaks the fresh install
In fresh install there is no env-xxx yet, so when the setup tries to load the english dictionary from there it crashes.
In setup pages, all string are hard coded, no dictionary entries are available (yet)
2021-07-23 09:00:19 +02:00
Molkobain
0760adcef6 Object details: Fix status code being set to the color instead of the code 2021-07-22 18:12:11 +02:00
Pierre Goiffon
29ca291860 N°4192 Fix error on Contract classes object details
Was crashing on all classes without state attribute, or with state attribute nullable
2021-07-22 11:07:07 +02:00
Stephen Abello
93d0e4ae7c Update jQuery datepicker z-index 2021-07-22 10:43:22 +02:00
Molkobain
61bc07b598 Add PHPDoc to explain behavior change (as in the migration notes) 2021-07-21 17:46:39 +02:00
Pierre Goiffon
00ee36f938 Merge remote-tracking branch 'origin/support/2.7' into develop
# Conflicts:
#	README.md
2021-07-21 12:22:20 +02:00
Pierre Goiffon
1aa5185c93 Merge remote-tracking branch 'origin/support/2.6' into support/2.7
# Conflicts:
#	README.md
2021-07-21 12:19:52 +02:00
Pierre Goiffon
834ac00d37 📝 README : update latest releases
Was made in #143 but on develop only, but we are still maintaining older branches !
2021-07-21 12:15:22 +02:00
Molkobain
957cb87b8d N°3786 - Fix lock removal when leaving an object details page in edition
The main problem was WebPage::$a_scripts are now printed after the DOM when the mechanism actually prints some JS to redirect to another page immediately.
As there are a LOT of calls to WebPage::add_script(), we kept it to ensure the compatibility; and we add a new WebPage::add_early_script() for JS snippets that explicitly need to be execute before the DOM interpretation.
2021-07-20 20:13:44 +02:00
Eric
d0813f6607 N°4169 - Fix forms properties for designer 2021-07-20 17:49:30 +02:00
Stephen Abello
cf4673d284 Update precompiled stylesheets 2021-07-20 10:21:06 +02:00
Stephen Abello
e3422f5fd9 CSS improvements 2021-07-20 10:20:31 +02:00
Stephen Abello
d7a0878a39 Fix broken variables import in 3.0 themes 2021-07-20 10:04:12 +02:00
Molkobain
076f0e00a7 N°4178 - Stay on the same page when logging again from the "Login again" prompt 2021-07-18 22:58:33 +02:00
Molkobain
eb04ecb5b4 Fix new URL parameter being append after the '#' in CombodoGlobalToolbox.AddParameterToUrl 2021-07-18 22:37:01 +02:00
Molkobain
3323d5532b JSDoc 2021-07-18 22:04:39 +02:00
Molkobain
d68d8204f2 N°4176 - Portal: Deprecate "AddParameterToUrl" function 2021-07-18 22:02:47 +02:00
Molkobain
4a50b95069 N°3924 - Fix misleading orphan activity entries when creating an object 2021-07-17 00:11:16 +02:00
Molkobain
fd9e4f413c N°3924 - Fix missing activity panel on object details when cancelling transition form 2021-07-16 22:53:28 +02:00
Molkobain
dca3fc996c N°3924 - Fix double encoding of the object name in transition page title 2021-07-16 22:39:15 +02:00
Molkobain
c58c1bbf1d N°3924 - Fix notification link in activity panel not opening notifications tab 2021-07-16 22:29:54 +02:00
Molkobain
524919b946 N°4171 - Remove lock message from the log entry form when object is in edition 2021-07-16 20:13:49 +02:00
Molkobain
e15953524a N°3786 - Add pause at the end of the page unload async request to follow the guideline used in N°2763 2021-07-16 20:08:25 +02:00
Molkobain
68f3c53faa N°4171 - Concurrent lock: Fix expiration modal being duplicated sometimes 2021-07-16 16:44:35 +02:00
Molkobain
82e3ddaacd N°4142 - Improve backoffice rendering by showing system avatar no matter what 2021-07-15 21:34:58 +02:00
Molkobain
dfbbee2a1c N°4142 - Add config. param. to hide user avatars in the GUIs -mostly in logs- (backoffice, end-users portal, ...) 2021-07-15 21:23:20 +02:00
Molkobain
4843545171 N°4142 - Fix UserRights::GetUserPictureAbsUrl() returning user's placeholder picture for users with an unknown login 2021-07-15 17:33:38 +02:00
Molkobain
4e58b8616a N°3203 - PHPDoc and small variable refactor 2021-07-15 17:31:30 +02:00
Molkobain
1a79dcd773 N°3203 - Portal: Fix image attribute of an object not authorized if object out of scope 2021-07-15 11:41:07 +02:00
Molkobain
a4104d4315 N°3539 - Remove viewport meta tag as we won't be able to make the backoffice responsive in 3.0 2021-07-15 09:09:47 +02:00
Molkobain
4e1db7d7e2 Merge remote-tracking branch 'origin/support/2.7' into develop 2021-07-13 11:44:42 +02:00
Molkobain
8e6379a112 Merge branch 'support/2.7.5' into support/2.7 2021-07-13 11:42:30 +02:00
Molkobain
da217a1cb3 N°4161 - Fix ManageBrick crash when no item listed 2021-07-12 18:10:22 +02:00
Pierre Goiffon
a683634a05 N°4126 Fix HTML escaped in \SetupUtils::CheckDbServer messages
As content is sent to JS returned to the AJAX request, we need to escape JS string delimiter (single quote)
We had previously a \utils::HtmlEntities call, but this isn't necessary as all content is generated internally, without calling any dict or extensibility interface.
2021-07-12 14:41:26 +02:00
Molkobain
2f1b5d2736 Fix typo in method parameter 2021-07-12 12:47:43 +02:00
Molkobain
c9bf784fce Revert space introduced by 418312bca 2021-07-12 11:37:17 +02:00
Molkobain
4ef10ae7c9 PHPDoc 2021-07-12 10:58:38 +02:00
Molkobain
5174250ff1 N°3836 - Dashlet: Refactor part of the code to match conventions 2021-07-12 10:51:45 +02:00
Pierre Goiffon
7b6ac202c6 N°4518 Add config parameter to set platform as dev env (#220)
developer_mode.enabled, default value null
If true or false then will be used by \utils::IsDevelopmentEnvironment as return value, in all other cases will follow previous behavior
2021-07-12 09:27:36 +02:00
Molkobain
d960183403 Merge remote-tracking branch 'origin/support/3.0.0-beta2' into develop 2021-07-09 16:28:00 +02:00
Eric
ece3e0490d N°3573 - Allow retrieving operation
(cherry picked from commit e6a38a8055)
2021-07-09 15:24:20 +02:00
Eric
1562cb1f38 🎨 Allow tab stickiness for twig based extensions
(cherry picked from commit 1a7755365c)
2021-07-09 15:23:35 +02:00
Molkobain
11a22abfd5 SCSS: Fix horizontal scrollbars being ticker than vertical ones on webkit browsers 2021-07-09 12:52:32 +02:00
Stephen Abello
5254c9a633 N°3930 Fix dashlets select property with a set size 2021-07-08 10:32:41 +02:00
Stephen Abello
f7a35072f5 N°4075 Fix autocompletes in modals 2021-07-07 16:59:50 +02:00
Molkobain
b5f5780f35 Merge remote-tracking branch 'origin/support/3.0.0-beta2' into develop
# Conflicts:
#	datamodels/2.x/itop-structure/precompiled-themes/fullmoon/main.css
#	datamodels/2.x/itop-structure/precompiled-themes/test-red/main.css
2021-07-07 15:08:38 +02:00
Molkobain
f9064084f9 N°4130 - Activity panel: Remove edits and transitions from default filters on logs 2021-07-07 14:11:03 +02:00
Molkobain
67afbd1d8d N°4146 - Fix crash on object deletion 2021-07-07 13:18:10 +02:00
Molkobain
d6b9172e26 N°4131 - Fix multiple "User disconnected" dialogs in the backoffice
(cherry picked from commit d8f36a8aa9)
2021-07-07 09:32:01 +02:00
Molkobain
8e1e71c740 N°4109 - Fix JS message "Gateway timeout" / "Unauthorized" / "" being displayed on object details page
(cherry picked from commit e279799bf8)
2021-07-07 09:31:53 +02:00
Molkobain
ebbf6e56be N°4127 - Security: Fix XSS vulnerability in object attribute's tooltip 2021-07-07 09:28:41 +02:00
Pierre Goiffon
bd67b71f3d Merge remote-tracking branch 'origin/support/2.7' into develop 2021-07-06 11:36:34 +02:00
Pierre Goiffon
69ad10785b 🔧 .editorConfig : disable PHP variables alignement
Still enabled for key/value pairs though ! Example in \UtilsTest::ConvertToBytesProvider
2021-07-05 12:34:20 +02:00
Pierre Goiffon
9aead898e2 Fix Wiki URL to use iTop Hub instead of wiki.openitop
Thanks @Molkobain and @Hipska !
2021-07-05 12:29:07 +02:00
Pierre Goiffon
a48ebfefba N°4126 Change max_allowed_packet error message
Thanks @Molkobain !
2021-07-05 09:54:47 +02:00
Pierre Goiffon
e2a6e6b846 💚 Fix compiled CSS 2021-07-05 09:53:11 +02:00
Molkobain
7ca689e190 Setup: Fix sizes being displayed as bits instead of bytes 2021-07-04 22:49:54 +02:00
Molkobain
d8f36a8aa9 N°4131 - Fix multiple "User disconnected" dialogs in the backoffice 2021-07-04 21:54:56 +02:00
Molkobain
e279799bf8 N°4109 - Fix JS message "Gateway timeout" / "Unauthorized" / "" being displayed on object details page 2021-07-04 16:46:49 +02:00
Eric
a117906ff6 🎨 Add constant for cmdbsource log channel 2021-07-02 17:01:46 +02:00
Pierre Goiffon
c76d4f12fd Fix constant remove in iTopHub:DBBackupSentence ZN dict key
Thanks Hipska for your feedback in the original commit 67e92120 !
2021-07-02 16:30:31 +02:00
Molkobain
b16529e337 Update version.xml to 3.0.0-beta2 2021-07-02 12:28:58 +02:00
Molkobain
67e9212008 Massively update dictionaries 2021-07-02 12:26:51 +02:00
acognet
35b70bfc00 N°3929 - Polishing: Dashboards 2021-07-02 11:29:10 +02:00
acognet
418312bca5 N°3930 - Polishing: Dashlets 2021-07-02 11:22:57 +02:00
Pierre Goiffon
4748717e50 N°4126 Improve max_allowed_packet checks messages 2021-07-02 10:10:35 +02:00
Pierre Goiffon
d90b1a3d82 🐛 N°4020 Fix syntax error for PHP < 7.1
`syntax error, unexpected 'const' (T_CONST), expecting variable (T_VARIABLE) in /var/www/itop274/setup/compiler.class.inc.php on line 61`
Was added in 1059befa
2021-07-02 09:26:03 +02:00
odain
ed719e13c7 N°4125 - Add a warning log when corrupted data returned by APCu 2021-07-02 08:53:58 +02:00
odain
2d705c6697 add autoload 2021-07-01 17:38:59 +02:00
odain
c98ad106c4 N°4125 - Make translations loading more robust toward APCu cache corruption or invalid dictionnary 2021-07-01 17:34:23 +02:00
acognet
76a237aad4 N°3930 - Polishing: Dashlets 2021-07-01 17:28:35 +02:00
Pierre Goiffon
3694108f42 N°3870 updateLicenses : fix generating wrong product names on Windows
Was including paths fragments.

Example :
<product scope="datamodels">C:\Dev\wamp64\www\itop-dev\.make\license/../..//datamodels/2.x/authent-cas/vendor/apereo/phpcas</product>

Instead of :
<product scope="datamodels">apereo/phpcas</product>
2021-07-01 17:20:55 +02:00
Eric
1a7755365c 🎨 Allow tab stickiness for twig based extensions 2021-07-01 16:08:03 +02:00
Pierre Goiffon
8cf75f826f 🔨 updateLicenses : add logs and replace rm -f by unlink() 2021-07-01 15:30:33 +02:00
Molkobain
a1da086a64 Revert "Fix and simplify dynamic dictionaries load in ajax pages"
This reverts commit e46743af
2021-07-01 13:38:16 +02:00
Molkobain
5d1d6d07a6 Fix regression introduced in 9048d09bf 2021-07-01 10:55:50 +02:00
Eric
e6a38a8055 N°3573 - Allow retrieving operation 2021-07-01 10:40:04 +02:00
Molkobain
3b3f1806ce Fix resources URL not being printed correctly
If there was any parameters in the URL it would not work as the `&` would have been printed as `&amp;`, see similar issue in the previous commit
2021-07-01 09:55:01 +02:00
Molkobain
e46743af2a Fix and simplify dynamic dictionaries load in ajax pages 2021-07-01 09:55:00 +02:00
Molkobain
9048d09bf6 Fix JS dictionaries not being load in \WebPage 2021-07-01 09:55:00 +02:00
Molkobain
3cd03729b9 Setup: Fix "Reload" button style when config file is read-only 2021-07-01 09:55:00 +02:00
Eric
ff760dacbe N°3573 - Allow disabling buttons 2021-06-30 17:05:03 +02:00
Thomas Casteleyn
94f662c71a Show real next backup date (#196)
* Get the next backup date from what is scheduled in the background task.
* Show different message if cron is not running.
2021-06-30 14:59:36 +02:00
Eric
c7d87ad5b0 🎨 Display human readable sizes in bytes as int instead of float 2021-06-30 11:18:08 +02:00
Pierre Goiffon
ad9726b64c 🔧 .editorConfig : restore old ij_visual_guides value
Was overwritten by mistake in 19505649
2021-06-30 10:24:19 +02:00
Pierre Goiffon
e32e275f40 🎨 Align dataprovider elements 2021-06-29 16:45:34 +02:00
Pierre Goiffon
195056492e 🔧 .editorConfig : enable var alignement 2021-06-29 16:45:18 +02:00
Pierre Goiffon
aa9ab1ace5 Merge remote-tracking branch 'origin/support/2.7' into develop
# Conflicts:
#	css/css-variables.scss
#	datamodels/2.x/authent-cas/module.authent-cas.php
#	datamodels/2.x/authent-external/module.authent-external.php
#	datamodels/2.x/authent-ldap/module.authent-ldap.php
#	datamodels/2.x/authent-local/module.authent-local.php
#	datamodels/2.x/combodo-db-tools/module.combodo-db-tools.php
#	datamodels/2.x/itop-attachments/module.itop-attachments.php
#	datamodels/2.x/itop-backup/module.itop-backup.php
#	datamodels/2.x/itop-bridge-virtualization-storage/module.itop-bridge-virtualization-storage.php
#	datamodels/2.x/itop-change-mgmt-itil/module.itop-change-mgmt-itil.php
#	datamodels/2.x/itop-change-mgmt/module.itop-change-mgmt.php
#	datamodels/2.x/itop-config-mgmt/module.itop-config-mgmt.php
#	datamodels/2.x/itop-config/module.itop-config.php
#	datamodels/2.x/itop-core-update/module.itop-core-update.php
#	datamodels/2.x/itop-datacenter-mgmt/module.itop-datacenter-mgmt.php
#	datamodels/2.x/itop-endusers-devices/module.itop-endusers-devices.php
#	datamodels/2.x/itop-files-information/module.itop-files-information.php
#	datamodels/2.x/itop-full-itil/module.itop-full-itil.php
#	datamodels/2.x/itop-hub-connector/module.itop-hub-connector.php
#	datamodels/2.x/itop-incident-mgmt-itil/module.itop-incident-mgmt-itil.php
#	datamodels/2.x/itop-knownerror-mgmt/module.itop-knownerror-mgmt.php
#	datamodels/2.x/itop-portal-base/module.itop-portal-base.php
#	datamodels/2.x/itop-portal/module.itop-portal.php
#	datamodels/2.x/itop-problem-mgmt/module.itop-problem-mgmt.php
#	datamodels/2.x/itop-profiles-itil/module.itop-profiles-itil.php
#	datamodels/2.x/itop-request-mgmt-itil/module.itop-request-mgmt-itil.php
#	datamodels/2.x/itop-request-mgmt/module.itop-request-mgmt.php
#	datamodels/2.x/itop-service-mgmt-provider/module.itop-service-mgmt-provider.php
#	datamodels/2.x/itop-service-mgmt/module.itop-service-mgmt.php
#	datamodels/2.x/itop-sla-computation/module.itop-sla-computation.php
#	datamodels/2.x/itop-storage-mgmt/module.itop-storage-mgmt.php
#	datamodels/2.x/itop-tickets/module.itop-tickets.php
#	datamodels/2.x/itop-virtualization-mgmt/module.itop-virtualization-mgmt.php
#	datamodels/2.x/itop-welcome-itil/module.itop-welcome-itil.php
#	datamodels/2.x/version.xml
2021-06-29 16:12:49 +02:00
acognet
bfe22b4ec0 3836 - Dashlet: Finish visual rework 2021-06-29 16:08:02 +02:00
Molkobain
f84bc9fbbc N°4063 - Fix dashboard attribute's actions menu's dropdown being hidden behind dashlets 2021-06-29 14:37:53 +02:00
Pierre Goiffon
0dc03de7b2 Log channels : switch 3.0.0 channels to constant also
Those channels constants were introduced in support/2.7 with 8259a79c
2021-06-29 11:59:34 +02:00
Pierre Goiffon
af338de17f 🔨 Changelog generation script 2021-06-29 11:05:59 +02:00
Molkobain
0cffd567c2 N°4110 - Fix JS error message when no provider for the newsroom 2021-06-29 10:04:40 +02:00
acognet
9d006c279b N°3905 - Polishing: CSV Import - manage friendlyname 2021-06-29 10:01:19 +02:00
Molkobain
f410bff309 Object details: Fix columns overlapping (regression from 11f6c88ac) 2021-06-28 23:04:07 +02:00
Molkobain
0e9ff71c0a SCSS: Fix rules from 108bc2fa
- Don't nest selectors when there is no need to
- Use SCSS variables instead of CSS3 variables in SCSS files, otherwise we can't use SCSS functions. CSS3 variables should be kept for the front-end manipulations
2021-06-28 22:07:34 +02:00
Molkobain
a599a5c5b7 Add PHPDoc 2021-06-28 17:35:54 +02:00
Molkobain
84dae0fb37 Object details: Fix icon / color lost since 27e68404 2021-06-28 17:35:54 +02:00
Pierre Goiffon
65e3ef32ed N°3575 Change curl extension check error message
Thanks @Hipska !
2021-06-28 17:04:48 +02:00
Eric
0396914068 N°3513 - Write object creation history within the same DB transaction for better consistency 2021-06-28 16:59:05 +02:00
Eric
0e55a30e5a Fix DB transaction tests 2021-06-28 16:54:44 +02:00
Eric
c0fbf0c735 Fix DBObject::EvaluateExpression() tests 2021-06-28 16:21:46 +02:00
Molkobain
e59d472cec N°4108 - Portal: Fix linkedset items not correctly saved on add/remove (follow-up of N°3914) 2021-06-28 16:10:01 +02:00
acognet
27e6840442 N°4068 - Polishing: Object Creation 2021-06-28 15:35:37 +02:00
Pierre Goiffon
a6aa183e26 🔖 Prepare 2.7.5 2021-06-28 15:03:17 +02:00
Pierre Goiffon
b5074c4cee N°3806 Fix saying memory_limit isn't enough in CLI scripts and setup
This was caused by the strict comparison in \utils::IsMemoryLimitOk for the special "-1" value of memory_limit, which was added in c2f5cafa.
Fix was to change \utils::ConvertToBytes : it was returning original value when input was numeric (so if input is '-1' output was '-1')  now it always returns an int (input '-1' output -1)
2021-06-28 14:53:39 +02:00
Molkobain
fbb54c6d6d Add PHPDoc 2021-06-28 14:13:53 +02:00
acognet
95066fbc49 N°4085 - Polishing : bulk modify - remove console.warn 2021-06-28 14:02:18 +02:00
Molkobain
e2958bd43f Add missing quotes in JS selector 2021-06-28 14:01:38 +02:00
Eric
382135fde8 N°4106 - Deprecate usage of DBObject::GetName() 2021-06-28 14:00:44 +02:00
Eric
4d80235d89 🎨 add phpDoc 2021-06-28 13:58:12 +02:00
acognet
8b9589744b N°4020 - timeout on updating the hierarchical key during setup - php 5.6 compatibility 2021-06-28 13:56:49 +02:00
Molkobain
250d95c3eb N°4106 - Remove overloads of DBObject::GetName() 2021-06-28 13:19:41 +02:00
Molkobain
0997189969 N°4106 - Deprecate usage of DBObject::GetName() 2021-06-28 12:06:25 +02:00
Molkobain
410948fb4e Rename method to better match its usage 2021-06-28 10:36:43 +02:00
Molkobain
9f75fae33f Navigation menu: Restore user menu entries API 2021-06-28 10:36:42 +02:00
Pierre Goiffon
b1aebc6c7a DBObject : fix lines altered wrongly in merge commit 2021-06-28 09:12:18 +02:00
Pierre Goiffon
85526b1983 N°3575 Add curl as optional PHP ext 2021-06-28 09:04:50 +02:00
Pierre Goiffon
2a1e0b7429 Merge remote-tracking branch 'origin/support/2.7' into develop
# Conflicts:
#	core/dbobject.class.php
#	core/log.class.inc.php
#	setup/compiler.class.inc.php
2021-06-28 08:58:34 +02:00
jbostoen
3a73bd3b24 Version 2021-06-18 12:10:49
* support decimals in aggregate functions in dashlets
2021-06-25 17:43:37 +02:00
Eric
d7ba0aac82 N°4099 - remove unused DBObject::GetLoadedAttributes() method 2021-06-25 17:17:36 +02:00
Pierre Goiffon
8259a79cd2 🎨 Factorize LogAPI channels value in LogChannels class 2021-06-25 17:13:35 +02:00
Eric
de71d490c1 N°4099 - Fix object lists being very slow for classes with a overloaded GetName() function 2021-06-25 17:13:14 +02:00
acognet
60b015919d N°3912 - Polishing: Export - error message + ccs for pdf 2021-06-25 10:25:24 +02:00
acognet
2ca11aa2b7 N°3903 - Polishing: Query phrasebook 2021-06-25 10:15:40 +02:00
acognet
275daf3b0d N°4085 - Polishing : bulk modify 2021-06-25 10:11:57 +02:00
Eric
671d112452 Add Echoing for all pages KPI 2021-06-24 15:12:13 +02:00
acognet
a23ea9a01f N°3678 - Portal : a modification of field cannot hide another one 2021-06-24 14:11:41 +02:00
Eric
949b213f9d N°3513 - revert crud sequence 2021-06-24 13:32:43 +02:00
acognet
a940adc4ba N°3678 - Portal : a modification of field cannot hide another one 2021-06-24 10:35:01 +02:00
Pierre Goiffon
5d994edd62 N°4012 Fix debug trace syntax
Thanks @Molkobain !
2021-06-23 17:26:34 +02:00
Eric
2a9ce75db0 fix precompiled css 2021-06-23 12:22:11 +02:00
Pierre Goiffon
f8fcfc4d7d N°4083 - Polishing: Modal 2021-06-23 10:42:45 +02:00
Pierre Goiffon
663a9ab224 Fix code injection heredoc 2021-06-23 10:01:29 +02:00
acognet
f604821bdf N°4083 - Polishing: Modal 2021-06-23 09:38:22 +02:00
acognet
ac83c0334c N°3906 - Polishing: Users and profiles -> change size of datatable 2021-06-22 18:09:42 +02:00
acognet
457165b2fc N°4085 - Polishing : bulk modify 2021-06-22 17:34:14 +02:00
Eric
b1ca1f2630 N°3513 - ObjectFormManager : remove transaction
* Add automatic tests
* Fix object consistency
2021-06-22 16:09:41 +02:00
acognet
bce1bd8192 N°3912 - Polishing: Export 2021-06-22 12:24:32 +02:00
odain
4d123e1450 fix ci 2021-06-22 10:00:18 +02:00
acognet
58e315d7f6 N°4020 - timeout on updating the hierarchical key during setup - fix git ignore 2021-06-21 17:16:08 +02:00
acognet
1281d475e4 N°3912 - Polishing: Export : fix date entry + size of datatable 2021-06-21 16:50:19 +02:00
acognet
32ac999ff5 N°3912 - Polishing: Export - display of tabular fields 2021-06-21 16:47:02 +02:00
acognet
1059befa39 N°4020 - timeout on updating the hierarchical key during setup 2021-06-21 16:39:58 +02:00
Pierre Goiffon
5db8bd06ba Merge remote-tracking branch 'origin/support/2.7' into develop
# Conflicts:
#	core/cmdbsource.class.inc.php
#	core/coreexception.class.inc.php
#	core/log.class.inc.php
2021-06-21 16:24:27 +02:00
Eric
0f5130611d Fix log API tests 2021-06-21 16:07:36 +02:00
Eric
a1271da74a N°3513 - ObjectFormManager : remove transaction 2021-06-21 15:03:17 +02:00
Denis
0d40235791 🗃️ N°3968 Fix mutex being silently released after connection timeout (#209)
Mutex are using their own DB connection
Because the `wait_timeout` isn't specified when opening the connection, it could be closed before we released the lock : if so the lock is silently released !
We are now setting this variable directly when opening the connection to avoid such case (setting 86400s, so 1 day : this should be enough !)
2021-06-21 12:33:15 +02:00
acognet
d1e594e225 Fix precompiled themes 2021-06-21 11:59:08 +02:00
acognet
bcc2d7140e N°3905 - Polishing: CSV Import 2021-06-21 09:41:36 +02:00
acognet
ee5847ec82 N°3912 - Polishing: Export - export of impact analysis 2021-06-21 09:22:07 +02:00
Eric
108bc2fa1d N°3573 - Migrate backoffice pages to new UIBlock system : System Information 2021-06-18 17:16:22 +02:00
acognet
efb7f84ec4 Fix precompiled themes 2021-06-18 17:12:31 +02:00
acognet
224031e0d6 N°3905 - Polishing: CSV Import 2021-06-18 17:00:39 +02:00
Stephen Abello
e905838733 Revert layout changes from 11f6c88 as they break dashlet table 2021-06-18 13:54:54 +02:00
Pierre Goiffon
dd63f2b817 N°4012 Debug trace for objects lists in portal : ManageBrick and BrowseBrick
'portal' channel, debug level
2021-06-18 10:58:04 +02:00
Pierre Goiffon
8f84c3b84b 🎨 LogAPI code formatting 2021-06-18 10:58:04 +02:00
Stephen Abello
bc4f384948 N°4082 Add missing German translation (many thanks to ITOMIG!) 2021-06-18 10:02:09 +02:00
Pierre Goiffon
00c58bb245 💡 updateLicenses.php : copy phpdoc from develop branch 2021-06-17 17:11:30 +02:00
acognet
11f6c88ac7 N°3905 - Polishing: CSV Import 2021-06-17 11:16:31 +02:00
acognet
77cf879f4f N°3912 - Polishing: Export 2021-06-17 10:43:06 +02:00
acognet
13f6f6ebe6 N°3551 - Migrate module to new UIBlock system : Customer Survey 2021-06-17 09:42:28 +02:00
odain
c413ac989e fix ci: add anotations to be able to exclude tests 2021-06-16 18:25:10 +02:00
Stephen Abello
7a770b32ee N°4082 Update German translations (many thanks to ITOMIG!) 2021-06-16 14:44:51 +02:00
vdumas
9d8adae5c7 N°4079 fix FR dictionary typo 2021-06-15 18:10:54 +02:00
Stephen Abello
b0531597f0 Update precompiled themes 2021-06-15 15:22:28 +02:00
Stephen Abello
0bdf43b085 Fix "Enter iTop" button 2021-06-15 15:21:51 +02:00
Stephen Abello
27da8470b7 Harmonize setup look with backoffice one and force navigation buttons to remain at the same position at every setup step 🙉🙉🙉 2021-06-15 15:03:50 +02:00
Stephen Abello
c0be48ceee Remove deprecated import 2021-06-15 14:00:51 +02:00
Stephen Abello
6c561029e9 N°4074 Show date picker above object and display today's date / selected date 2021-06-15 10:38:29 +02:00
Pierre Goiffon
c417a454d6 New symlink flag set by the compiler, new compile with symlinks checkbox in the setup (#190)
The flag consists of the new `data/.compilation-symlinks` file, which is included in the code base (but not available in the Combodo packages).

It will be used and generated if and only if : 
* we are on a dev env (`\utils::IsDevelopmentEnvironment`)
* the `symlink` PHP function exists

The flag is generated low level in the compiler (\MFCompiler::DoCompile)

In the setup, if the flag is present and all conditions are met then a new option will be displayed in the "Miscellaneous Parameters" wizard step. When unchecking/checking the flag will be updated accordingly by an ajax query.

All other compiler consumers (Designer / Hub connectors, Core Update, scripts using `RunTimeEnvironment` class) will : 
* if they provide a value for the symlink option, it will be used
* otherwise the flag will be used instead, if conditions are met
2021-06-14 16:44:34 +02:00
Pierre Goiffon
d8e2a1cc7c Merge branch 'support/2.7' into develop
# Conflicts:
#	README.md
#	composer.json
#	composer.lock
#	core/cmdbsource.class.inc.php
#	core/dbobject.class.php
#	datamodels/2.x/combodo-db-tools/db_analyzer.class.inc.php
#	datamodels/2.x/combodo-db-tools/dbtools.php
#	datamodels/2.x/combodo-db-tools/dictionaries/zh_cn.dict.combodo-db-tools.php
#	datamodels/2.x/itop-attachments/dictionaries/zh_cn.dict.itop-attachments.php
#	datamodels/2.x/itop-core-update/dictionaries/zh_cn.dict.itop-core-update.php
#	dictionaries/zh_cn.dictionary.itop.core.php
#	dictionaries/zh_cn.dictionary.itop.ui.php
#	lib/composer/InstalledVersions.php
#	lib/composer/autoload_classmap.php
#	lib/composer/autoload_static.php
#	lib/composer/installed.php
#	lib/composer/platform_check.php
#	pages/ajax.render.php
#	pages/csvimport.php
#	setup/ajax.dataloader.php
#	setup/index.php
#	setup/setuputils.class.inc.php
#	test/application/UtilsTest.php
2021-06-14 16:19:56 +02:00
Stephen Abello
51e24a4e35 Replace htmlentitites() call with escapehtml() 2021-06-14 12:15:09 +02:00
Stephen Abello
a82f172ca4 Fix wrong id being used for datatables twig variable name 2021-06-14 12:01:29 +02:00
Stephen Abello
8ef43452f8 Fix multiple typo in datatables twig variables 2021-06-14 12:01:29 +02:00
Molkobain
18a4867b4d Accessibility: Add missing aria-label / tooltip attributes on the advanced search 2021-06-13 09:43:22 +02:00
Molkobain
ff05a1d35e Accessibility: Add missing alt attribute on decorative images
- Dashlet badge
- Dashlet header static
2021-06-12 22:52:48 +02:00
Molkobain
5a4c9393a4 Add missing viewport meta from webpage template
(Backoffice won't be responsive in iTop 3.0)
2021-06-12 19:26:25 +02:00
Molkobain
4b03b42494 Remove inline CSS from NavigationMenu 2021-06-12 19:13:41 +02:00
Molkobain
215dcfb465 Dictionaries: Group files by block for an easier navigation through them 2021-06-12 18:47:32 +02:00
Molkobain
b965138d57 Accessibility: Add missing aria-label to some UIBlock
- Button
- Global search
- Quick create
- Navigation menu
- Tab container
2021-06-12 18:35:55 +02:00
Molkobain
485262ec0a Accessibility: Add missing alt attribute on decorative images
- Quick create
- Global search
- Breadcrumbs
2021-06-12 18:35:54 +02:00
Stephen Abello
dd8a51ea1b N°3910 Correctly escape object tags (such as "synchronized") tooltip content 2021-06-11 13:54:43 +02:00
acognet
d85729803d N°3907 - Polishing: Run query 2021-06-11 11:42:11 +02:00
acognet
3132d665e0 forgot an addSubBlock 2021-06-11 11:42:11 +02:00
Stephen Abello
be03f3c6de N°4048 Fix default sorting on lists when using custom list settings without sort order 2021-06-11 10:48:06 +02:00
Eric
3a876d5c75 Log complete error on Memory Limit or max execution time 2021-06-11 09:36:01 +02:00
Pierre Goiffon
147916062b 🎨 Fix local variable names
Was copy/paste and wasn't consistent with the functionnality :/
2021-06-10 16:28:17 +02:00
Stephen Abello
bcfdf76b71 N°4051 Make sure js dependencies are met before resuming ajax calls js code 2021-06-10 15:12:16 +02:00
Stephen Abello
679542eaaa N°4051 Add robustness 2021-06-10 15:12:16 +02:00
Stephen Abello
4d5ff22b60 Fix variable declaration in datatables 2021-06-10 15:12:16 +02:00
Eric
d54c5b5f55 🐛 fix parameters for OptimizeColumnLoad() 2021-06-09 14:43:38 +02:00
Pierre Goiffon
0de6f98add 🔊 When ordering objects search list, log problems due to low max_input_vars php.ini option (#211)
iTop is sending large volume of data to the server, and those data can be truncated due to this php.ini option.
Now we are checking for common issues : if the data is truncated a log is done (IssueLog, warning level, no channel) and the corresponding column is set as not selected.
User will still see an inconsistent result, but we won't have PHP notices generated anymore, and a log can tell what caused the issue.
2021-06-08 18:43:43 +02:00
acognet
5bf6035bcf N°3592 - Migrate module to new UIBlock system : Customized request forms - fix input select 2021-06-08 18:40:49 +02:00
Pierre Goiffon
a076792e77 ⬆️ N°3973 Update update pear/archive_tar 2021-06-08 18:16:12 +02:00
dependabot[bot]
73132f981e Bump pear/archive_tar from 1.4.10 to 1.4.12 (#219) 2021-06-08 16:06:48 +00:00
Stephen Abello
80e4a46a20 Fix Selectize being re-instantiated (and destroying extkey selectize plugin instance) when creating an inline object containi tagsets 2021-06-08 16:09:37 +02:00
Molkobain
95d9b845b6 SCSS: Enlarge pills max width 2021-06-04 17:16:05 +02:00
Eric
609d9c7a60 ♻️ rework of Select UIBlock with labels 2021-06-04 11:52:24 +02:00
Stephen Abello
3d338aff33 Fix block loader style for datatables 2021-06-04 11:44:28 +02:00
Stephen Abello
8a46900df9 Fix collapsible section widget being called before dependency was loaded 2021-06-04 11:17:57 +02:00
Molkobain
8efbfd13d0 Update precompiled themes 2021-06-04 11:10:46 +02:00
Molkobain
19264a7d64 Fix iTopWebPage::DisableBreadCrumb() not working since 3.0 rework 2021-06-04 11:01:51 +02:00
Molkobain
742e3a2a20 SCSS: Replace font global redefinition with more accurate overloads (only size, only weight, ...) to simplify styles inheritance 2021-06-04 11:01:50 +02:00
Molkobain
117bf3046d Attribute file: Fix delete button not on the same line as the filename 2021-06-04 11:01:50 +02:00
Molkobain
b072e1bb3d SCSS: Add font size variables / helpers 2021-06-04 11:01:50 +02:00
Molkobain
d405fc0675 SCSS: Fix base font 2021-06-04 11:01:50 +02:00
Molkobain
77527987ee SCSS: Add font weight variables / helpers 2021-06-04 11:01:49 +02:00
Stephen Abello
2e6b773ba4 Fix non existing variable usage 2021-06-04 10:57:06 +02:00
Stephen Abello
dd6a9fe16a Restyle block loader 2021-06-04 10:52:24 +02:00
Stephen Abello
d9ccc620c9 Remove trailing quote 2021-06-04 10:50:51 +02:00
Stephen Abello
b245275c7d N°3914 Fix configure this list button alignment and add background color to selected fields 2021-06-04 10:28:12 +02:00
Stephen Abello
bf22c8b67a N°3914 Fix highlighted rows highlighting following rows too 2021-06-04 10:28:11 +02:00
Stephen Abello
1b58d9b801 N°3914 Fix add criteria buttons style 2021-06-04 10:28:11 +02:00
acognet
2d2a6857de N°3797 - [MariaDB] crash while converting utf8mb4 + add index 2021-06-04 09:10:28 +02:00
Pierre Goiffon
373641e01d 🎨 Code formatting 2021-06-03 17:31:34 +02:00
Eric
d11eceac62 N°4052 - OQL parser limit for huge request - fix CI 2021-06-03 17:07:17 +02:00
Eric
3965806fa0 N°4052 - OQL parser limit for huge request - add better feedback 2021-06-03 16:49:21 +02:00
Molkobain
74eabafe31 N°4022 - Fix scroll not working on search menu nodes 2021-06-03 16:19:06 +02:00
Pierre Goiffon
2625d2da80 💡 PHPDoc 2021-06-03 15:29:13 +02:00
Molkobain
1b9eb2a6ad N°4022 - Rework search page to improve UX and usable height 2021-06-03 09:54:21 +02:00
Molkobain
94c37b2e14 Update CONTRIBUTING.md with thanks stickers (#213)
* Update CONTRIBUTING.md with thanks stickers

* Update CONTRIBUTING.md

Co-authored-by: Pierre Goiffon <pierre.goiffon@combodo.com>

Co-authored-by: Pierre Goiffon <pierre.goiffon@combodo.com>
2021-06-03 09:53:01 +02:00
Pierre Goiffon
71d2d61c4e 💡 Fix phpdoc for \MenuBlock::GetEnumAllowedActions 2021-06-03 09:04:26 +02:00
Stephen Abello
020dc8b819 N°4049 Remove dashlet list free will 👾 2021-06-02 16:59:14 +02:00
Stephen Abello
c11ad30134 N°4048 Correctly set default sorting on lists 2021-06-02 15:22:03 +02:00
Eric
02d32a556d N°4052 - OQL parser limit for huge request 2021-06-02 15:15:00 +02:00
Eric
71fcc6f026 N°4031 - OQL Error when AttributeObjectKey is used in JOIN condition 2021-06-02 14:45:03 +02:00
Molkobain
dd614f5931 Fix regression introduced by c6b8526d: FormTable not working in edition 2021-06-02 10:22:24 +02:00
Stephen Abello
499d429a0e N°3927 Fix Attachments delete button 2021-06-02 10:01:37 +02:00
Purple Grape
7168860a0b 🌐 Improved chinese for 2.7 (#218) 2021-06-02 08:06:16 +02:00
Pierre Goiffon
a395c1760a N°4047 skip test generating a PHP notice
Will be fixed later
2021-06-01 16:51:44 +02:00
Stephen Abello
4033773849 N°3932 Fix button style for hierarchical key selector 2021-06-01 15:43:42 +02:00
Stephen Abello
9fd6ba414d N°3914 Fix search from external key widget 2021-06-01 10:20:57 +02:00
Molkobain
2aee978790 Update precompiled themes 2021-06-01 09:11:30 +02:00
Molkobain
39efe1237e Fix regression in AJAX calls introduced by c6b8526d 2021-06-01 09:04:20 +02:00
acognet
684c88e0b8 N°4038 - Pop up erreur portail utilisateur 2021-05-31 23:43:58 +02:00
Molkobain
e7c7ca76ac Switch page class to non deprecated 2021-05-31 17:41:06 +02:00
Molkobain
a6e5969201 N°4021 - Fix header jumping out of sticky positioning when getting near some tabs
Reason: DataTables' dynamic height cannot work we a static "duration" (height) based on the initial panel's height
2021-05-31 13:15:10 +02:00
Molkobain
1e99ad436f N°4021 - Add support for tab container for the sticky header 2021-05-31 09:32:37 +02:00
Molkobain
8580eb6d2b PHPDoc 2021-05-28 22:45:37 +02:00
Molkobain
c6b8526dc0 UIBlock: Add external JS/CSS files (optional) inheritance
This way we ensure that a block always have the external resources from its ancestors as this will be necessary most of the time. From now on, the JS widget of the blocks will inherit from a common ancestor to factorize some mechanisms that are duplicates at many levels.
This can be disabled in a particular block by overloading the INCLUDE_ANCESTORS_DEFAULT_XXX_FILES constants in which case, only the external files of the block itself will be included.
2021-05-28 22:45:37 +02:00
Molkobain
03c7d63588 JsonPage: Add option to output only the data, typically when feeding a third party lib that doesn't understand our structuration 2021-05-28 22:45:37 +02:00
Molkobain
32e714f4a6 Panel: Fix scrollable tabs with sticky header 2021-05-28 22:45:36 +02:00
Molkobain
b8ef4885e5 N°4021 - Change approach for sticky header, use the ScrollMagic lib as in the scrolling tabs to use the same abstraction level everywhere 2021-05-28 22:45:36 +02:00
Molkobain
e669cfcea1 SCSS: Add 2 helpers classes to make elements transparent or opaque 2021-05-28 22:45:36 +02:00
Molkobain
82f0cd5f3d SCSS: Improve container space occupation 2021-05-28 22:45:36 +02:00
Molkobain
b6661fde86 SCSS: Improve panel space occupation by removing unnecessary margins 2021-05-28 22:45:36 +02:00
Eric
e46480032e PHP doc 2021-05-28 18:04:11 +02:00
Thomas Casteleyn
aed1e7dfdc 🌐 Update Dutch dictionaries for 3.0 (#199)
* Update UI components

* Global cleanup

* Update UI layouts

* Update UI pages

* Update core dictionaries

* Minor change

* Fix newline

* Conform with English text

* Applied changes suggested by @jbostoen

* Changed to capital as in original English value
2021-05-28 17:17:08 +02:00
Stephen Abello
b32fd7e018 N°3914 Fix tagset taking too much space in lists 2021-05-28 11:15:50 +02:00
Stephen Abello
3ae8575c1d N°3914 Fix portal tables getting backoffice markup for enum attributes 2021-05-28 11:00:40 +02:00
Stephen Abello
cc4b307bc9 N°3914 Fix class friendlyname in lists using class aliases 2021-05-28 10:48:57 +02:00
Stephen Abello
6d004f83dd N°3914 Correctly remove entries from linksets' datatable 2021-05-28 10:21:41 +02:00
Eric
5691ca0327 Fix CI 2021-05-28 08:48:47 +02:00
Stephen Abello
8f68ca3f67 N°3914 Display label on "Add criterion" button when there's no criterion. Add tooltips to "Add criterion" and "Refresh" button 2021-05-27 17:12:14 +02:00
Eric
84741c19f0 N°4002 - code hardening (merge from support/2.6) 2021-05-27 16:36:00 +02:00
Eric
96126d235f N°2214 Add PHP check in CLI scripts (fix some checks and title) 2021-05-27 16:31:15 +02:00
Stephen Abello
4de40e289f N°3914 Add row highlight colors to Datatables block when an object has a triggered tto/ttr 2021-05-27 16:14:29 +02:00
Eric
86f649affc N°4002 - code hardening 2021-05-27 16:13:27 +02:00
Eric
4f5c987d8b N°4002 - code hardening 2021-05-27 15:57:04 +02:00
Stephen Abello
9ccd26a541 N°3914 Harmonize linkset display 2021-05-27 12:15:58 +02:00
Eric
e7b5953feb documentation 2021-05-27 11:52:38 +02:00
Eric
e441e5e78a documentation 2021-05-27 11:49:32 +02:00
Stephen Abello
6d57945bd1 N°3914 Hide lists pagination when there's only 1 page 2021-05-27 11:20:48 +02:00
Stephen Abello
0cb0f52b12 N°3914 Fix lists header and data being misaligned when resizing them 2021-05-27 09:59:31 +02:00
Eric
6be9a87c15 N°3952 - code hardening (merged from support/2.6) 2021-05-27 09:55:16 +02:00
Eric
43daa2ef08 N°3952 - code hardening 2021-05-27 09:29:50 +02:00
Molkobain
8f9a69fa60 SCSS: Fix field badge display being in 2 lines 2021-05-26 22:00:55 +02:00
Molkobain
1d94e12da8 Update precompiled themes 2021-05-26 16:57:31 +02:00
Molkobain
0a04fe5917 SCSS: Add fallback fonts to minimize visual glitch while Raleway is not loaded 2021-05-26 16:55:10 +02:00
Molkobain
b03389068e SCSS: Fix large field not taking whole width 2021-05-26 16:55:10 +02:00
Stephen Abello
c9171ef30e N°3923 Cleanup css files 2021-05-26 15:55:57 +02:00
Stephen Abello
3853d38d69 N°3923 Fix up, down, enter key usage in ext key widget 2021-05-26 15:43:32 +02:00
Pierre Goiffon
caa2a05bf4 🔧 restore .editorconfig
Was moved to /test by mistake
And also editorconfig syntax was removed :(
Those mistakes were done in 7f15eed9
Thanks Molkobain, good catch !
2021-05-26 15:19:40 +02:00
Pierre Goiffon
fc39d8aca9 💡 PHPDoc type hinting 2021-05-26 14:24:29 +02:00
Stephen Abello
022887258f N°3923 Hide caret in autocomplete ext key input 2021-05-26 14:11:13 +02:00
Eric
cf12578289 N°3452 - DB tools : better formatting 2021-05-26 12:14:14 +02:00
Stephen Abello
3105a7ef77 N°3923 Vertical align ext key action buttons 2021-05-26 11:20:43 +02:00
Molkobain
f5ee19370c Update precompiled themes 2021-05-26 10:43:49 +02:00
Molkobain
923134d67d Code cleanup
- "v-resizable" class is not used anymore in the UI
- Logoff menu is now handled in a dedicated block
- Caselog headers are now handled in a dedicated block
2021-05-26 10:37:03 +02:00
Molkobain
3c2c2d7a51 Code cleanup: Remove unused methods from early implementation 2021-05-26 10:37:02 +02:00
Molkobain
3ee4a14c56 N°4021 - Introduce sticky header for panels and object details (tab container to be done) 2021-05-26 10:37:02 +02:00
Molkobain
dd284a6c1d SCSS: Fix base content layout not behaving the same way as the one with side content 2021-05-26 10:37:02 +02:00
Molkobain
c240a8991d SCSS: Fix import ordering of the custom root folders 2021-05-26 10:37:02 +02:00
Molkobain
0948c46dc7 SCSS: Add more variables for jQuery UI 2021-05-26 10:37:02 +02:00
Molkobain
d9755fe59d Code format 2021-05-26 10:37:02 +02:00
Stephen Abello
7f82e9262b N°3923 Fix date picker widget not initialized in ajax forms 2021-05-26 10:21:30 +02:00
Pierre Goiffon
44952d1ea0 Fix \UtilsTest::testIsMemoryLimit 2021-05-25 17:04:32 +02:00
Pierre Goiffon
7f15eed9a8 🔧 Update .editorconfig
* Preserve XML line breaks
* Add markdown
* Add editorconfig
2021-05-25 15:50:23 +02:00
Stephen Abello
14930fbab2 N°3914 Fix configure this list "sort fields" feature 2021-05-25 15:38:52 +02:00
Stephen Abello
2cbca93d77 N°3914 Fix modal backdrop on lists' "configure this list" modal 2021-05-25 14:54:54 +02:00
BGdu38
c2f5cafaf3 Avoid setting memory_limit to lower value than the one already configured (#215)
Some scripts are setting the memory_limit PHP option : setup, csvimport and XLSX export. This was done to avoid crashing when dealing with such large amount of data.
But sometimes we were setting the value without any prior check, so we could actually lower the memory_limit value :/

Now this memory_limit change is done using \utils::SetMinMemoryLimit, which will call ini_set if and only if the current value is lower than the one to be set.

Setup calls (setup/ajax.dataloader.php and webservices/backoffice.dataloader.php) were left as is as they weren't subject to this bug, and also they are more complex (logging done on each case).
2021-05-25 12:03:19 +02:00
Pierre Goiffon
81822efa0f 💡 PHPDoc for \DBObject::ApplyStimulus 2021-05-25 10:52:12 +02:00
Molkobain
104cf9479c List: Remove vertical scrolling for all lists except dashlets 2021-05-21 17:06:12 +02:00
Molkobain
a36632def6 Fix modal title displaying behind closing "X" on long titles 2021-05-21 17:06:12 +02:00
Molkobain
6a1b1d7740 Code format 2021-05-21 17:06:11 +02:00
Molkobain
f544d53c36 List: Fix height / scroll for linkedsets add items modal 2021-05-21 17:06:10 +02:00
Pierre Goiffon
3188204d05 📝 CONTRIBUTING : add "allow edits from maintainers" PR option 2021-05-21 11:28:48 +02:00
Molkobain
a7294d48a6 Update precompiled themes 2021-05-20 19:08:46 +02:00
Molkobain
42be0c20cb Field: Rework on the SCSS file
- Fix button being too large on AttributeImage
- Reorganize the classes a bit
2021-05-20 18:18:29 +02:00
Molkobain
1c6ffab0e3 Remove index variable from foreach as it was misleading ($sClass does not contain classes but a numeric index) 2021-05-20 18:18:29 +02:00
Molkobain
095d61b6f9 N°3171 - Rollback on the AttributeExternalKey::GetPrerequisites() as it was introducing more regressions than fixes (acf0548c) 2021-05-20 18:18:29 +02:00
Pierre Goiffon
923a025f1c 🌐 N°4017 Report pt_br translations for TTO/TTR made in combodo-dispatch-incident
Those dict keys were wrongly duplicated in this module, but they are core iTop !
Original commit 75f00d993c
Thanks to @rokam !
2021-05-20 15:51:21 +02:00
Pierre Goiffon
a4b6f4e37c 👥 Add @rokam to contributors list
Thanks to him for his PT-BR translations !
2021-05-20 15:44:24 +02:00
Stephen Abello
78b2824c13 N°3914 Harmonize advanced search's external key search buttons style and positions on modals and fix add button id 2021-05-20 15:38:31 +02:00
Pierre Goiffon
f0c73451a2 🌐 N°4017 Report pt_br translations for TTO/TTR made in combodo-dispatch-userrequest
Those dict keys were wrongly duplicated in this module, but they are core iTop !
Original commit 9725897623
Thanks to @rokam !
2021-05-20 15:30:00 +02:00
Stephen Abello
62f5eb5ae9 N°3914 Harmonize external key / linksets buttons style and positions on modals 2021-05-20 15:06:39 +02:00
Stephen Abello
7d9416cc81 Fix indirect links block height 2021-05-20 15:02:51 +02:00
Molkobain
a82a2df6aa N°1964 - Add informative message on dashboard when its container (eg. an object) is currently in edition 2021-05-20 10:32:28 +02:00
Molkobain
f1e4120364 Fix text decoration icon size being too big 2021-05-20 10:32:28 +02:00
Pierre Goiffon
3471d9d693 Protect \iApplicationUIExtension::EnumAllowedActions uses (#214)
Some impl just return null while we expect to have an array... This is causing PHP notices in lots of iTop instances with modules implementing this method incorrectly !

This modification get rid of the notice and : 
* add a log (warning level) indicating the impl classes
* if dev env, then throw an exception after browsing all impl (so you get a complete invalid impl list)

Note : since iTop 2.7.0 you should use \AbstractApplicationUIExtension instead of implementing the whole interface !
2021-05-19 14:58:55 +02:00
Molkobain
6d7bcb8a7c N°3956 - Fix AJAX error when creating an object which has a linkedset with a friendlyname composed of its own external keys' friendlynames 🤪 2021-05-18 17:58:37 +02:00
acognet
db6e813cba N°3945 - Password database is visible in the setup process 2021-05-18 17:34:57 +02:00
Pierre Goiffon
d74e3e6b42 💡 ItopTestCase : some PHPDoc 2021-05-18 17:16:04 +02:00
acognet
e9648ad75e N°3766 - Migrate module to new UIBlock system : Gantt view - fix error message when the class doesn't exist 2021-05-18 13:46:07 +02:00
Molkobain
e53da47647 UIBlock: Add MakeRaw to the HTML factory 2021-05-18 10:46:27 +02:00
Molkobain
1128490d47 N°2982 - Branding: Theme imports with no xsi:type are ignored 2021-05-17 17:51:08 +02:00
Molkobain
186ef1689e CI: Fix folder creation on Windows environments 2021-05-17 17:44:01 +02:00
Molkobain
0487cb8701 N°3914 - Fix single row selection in the portal's datatables 2021-05-17 13:49:17 +02:00
Molkobain
27b930c31c N°3914 - Fix rows selection in the portal's datatables 2021-05-17 13:47:41 +02:00
Molkobain
a8ef1c7899 N°3796 - Make designer compatible with iTop 3.0 2021-05-17 08:55:21 +02:00
Molkobain
644f0bc94c N°1964 - Fix missing parenthesis in previous commit 2021-05-14 11:31:35 +02:00
Eric
f3b0f79a59 N°3796 - Make designer compatible with iTop 3.0 2021-05-12 15:42:57 +02:00
Molkobain
eaae79a5f0 N°1964 - Fix focus moving to another tab on modification when one tab is readonly 2021-05-12 10:34:00 +02:00
Pierre Goiffon
bc10baed3e :bulb PHPDoc 2021-05-12 09:06:48 +02:00
acognet
b740cb2afd N°2540 - prevent the mysql password to appear on misconfigured servers 2021-05-12 08:17:35 +02:00
Molkobain
c0ec7e02f8 N°3939 - Keep focus on current tab on object modification 2021-05-11 16:34:54 +02:00
Stephen Abello
5977c5dd9e N°4007 - When a search is on auto submit, auto submit it also on first display 2021-05-11 14:16:40 +02:00
Molkobain
1c2dcc7b9a Merge remote-tracking branch 'origin/support/2.7' into develop 2021-05-11 12:22:47 +02:00
Molkobain
6ad3c40c42 Merge branch 'support/2.7.4' into support/2.7 2021-05-11 12:14:36 +02:00
Molkobain
f49c8ce188 Merge branch 'support/2.7.3' into support/2.7.4 2021-05-11 12:13:29 +02:00
Molkobain
acf828b72e N°3995 - Portal: Fix loader not displaying in BrowseBrick for tree/mosaic modes with huge amount of data 2021-05-11 12:10:31 +02:00
Molkobain
cb61d85572 N°3990 - Forgot to update descending migration method so it applies _delta flag where its needed 2021-05-11 09:28:04 +02:00
Molkobain
626316e8d1 N°3990 - Compiler: Set "_delta" flag on moved node if no ancestors has one 2021-05-10 19:05:08 +02:00
Molkobain
ab30bae46a Tests: Rename test and move samples to dedicated directory 2021-05-10 19:05:07 +02:00
Molkobain
bd2c0d1121 Tests: Simplify XML sample 2021-05-10 19:05:07 +02:00
Molkobain
64764228a9 DownloadPage: Fix ->add() method replacing all existing content instead of appending 2021-05-10 10:32:50 +02:00
Molkobain
463593d6cf PHPDoc 2021-05-10 10:28:51 +02:00
Molkobain
85aac7bf52 N°3949 - Fix XSS vulnerability on file attribute 2021-05-10 10:23:56 +02:00
Molkobain
dc36b4648d Add spaces to avoid errors on concatenation when used with spaceless filter 2021-05-06 12:34:46 +02:00
Molkobain
25145a68af Fix disabled property on textarea input 2021-05-06 12:33:46 +02:00
Molkobain
dab522caca SCSS: WIP attempt to apply some of the UIBlocks style to bare HTML markup 2021-05-05 18:38:12 +02:00
Molkobain
88634bcd92 SCSS: Refactor .is-code by moving it to helper file and renaming it 2021-05-05 18:29:33 +02:00
Molkobain
6ab6930986 SCSS: Refactor code typography
- New variables to defines base / code font families
- New helpers for code typography in all sizes
2021-05-05 18:25:37 +02:00
Molkobain
1f3b467083 SCSS Doc 2021-05-05 18:23:16 +02:00
Molkobain
34647cc402 Fix MetaModel::EnumPlugins unit tests 2021-05-05 14:58:50 +02:00
Molkobain
2a9e16bd2c Fix PluginManager not returning plugin classes as keys of the array (broke iQueryModifier) 2021-05-05 14:27:19 +02:00
Molkobain
ed1fdfa830 Update precompiled stylesheets 2021-05-05 11:59:30 +02:00
Molkobain
1124a584cd Fix iPopupMenuExtension::MENU_OBJLIST_TOOLKIT being called in an object's details 2021-05-05 11:16:34 +02:00
Molkobain
d2c014f718 Remove deprecated / autoloaded files calls 2021-05-04 18:26:37 +02:00
Molkobain
e488ec8c38 N°3914 - Fix "toolkit" actions not being displayed in the menu 2021-05-04 18:26:37 +02:00
Molkobain
18b2e54581 N°3914 - Popover menu: Refactor PopoverMenuFactory::MakeMenuForActions() to benefit from the new PopoverMenuItemFactory methods 2021-05-04 18:26:37 +02:00
Molkobain
3c89313795 N°3914 - Popover menu: Add method to add several items in a section at once 2021-05-04 18:26:37 +02:00
Molkobain
11278d7ba5 N°3914 - Popover menu: Add 2 methods to the items factory
- Create a separator
- Create an item from the array data as prepared by \DisplayBlock
2021-05-04 18:26:37 +02:00
acognet
a6eeb3a50a N°3907 - Polishing: Run query - css -add precompiled themes 2021-05-04 12:58:39 +02:00
acognet
1f1028bbc0 Migrate CCS style of checkbox to new UIBlock system 2021-05-04 12:42:09 +02:00
acognet
08f973f8c0 N°3907 - Polishing: Run query - css 2021-05-04 12:42:09 +02:00
odain
ad22113881 add annotation to be able to exclude test 2021-05-04 12:28:07 +02:00
acognet
e5498e3292 Fix link on key in datatable 2021-05-04 11:58:05 +02:00
acognet
16c9599739 N°3819 - Input: Migrate request templates input to new UIBlock system 2021-05-04 11:55:20 +02:00
acognet
a7040a911d Value from search popup is now correctly selected 2021-05-04 11:19:33 +02:00
Pierre Goiffon
8227796c87 💄 N°3913 Setup : fix license content overflow in "license agreement" step
Added `white-space: pre-wrap;` in setup.scss as all pre tags inside the setup container are subject to this problem because this container has a specific width set.
2021-05-04 09:38:00 +02:00
Pierre Goiffon
bac92716f3 📄 Update Font Awesome license
Was duplicated...
And also not the correct license !
Source for new license text : https://github.com/FortAwesome/Font-Awesome/blob/master/LICENSE.txt

(modification already committed to develop : f8f9c2d7)
2021-05-04 08:58:34 +02:00
odain
993dbed7e7 document IsDevelopmentEnvironment defensive behaviour 2021-05-04 08:55:46 +02:00
odain
390dc1c945 document IsDevelopmentEnvironment defensive behaviour 2021-05-04 08:55:20 +02:00
Pierre Goiffon
09b12bd06e 🎨 Add check to prevent setup crash when creating config
In a4782942 a !empty() test was added but this was useless
The problem that was causing the issue was an undefined index when doing $aAvailableModules[$sModuleId]
2021-05-03 16:56:33 +02:00
acognet
3a06f2eaa9 N°3988 - Investigate small list taking a very long time to load 2021-05-03 12:54:50 +02:00
acognet
a8e1db8b3c Fix render 2021-04-30 22:45:30 +02:00
acognet
2cc4448a15 extract methods for apply context on oql 2021-04-30 22:44:03 +02:00
Molkobain
d0d254ad59 Update test-red theme 2021-04-29 18:35:38 +02:00
Molkobain
8f62b63309 N°2788 - Improve HTML fields/caselogs content overlapping for corner cases 2021-04-29 18:17:58 +02:00
acognet
227c90b47f N°3988 - Investigate small list taking a very long time to load 2021-04-29 15:00:05 +02:00
acognet
6fc3033100 Migrate attribute RedundancySetting in new look 2021-04-29 12:15:24 +02:00
Molkobain
cfab20519e N°2922 - Revert 93a1f027 and add support for LabelField in the ConsoleFormRenderer (was already done in PortalFormRenderer) 2021-04-29 12:02:13 +02:00
Molkobain
cbc5bb70d0 Performance: Change theme signature check to be done only when necessary at runtime in a production environment 2021-04-28 19:35:03 +02:00
Molkobain
d5d3a7af47 Performance: Fix NavigationMenu being instantiated several times in the page 2021-04-28 19:35:03 +02:00
Molkobain
03fcc94b1f iTopWebPage: Move TopBar methods near other layouts' methods 2021-04-28 19:35:03 +02:00
Ben
4a28aa316f N°3217 Change module version to 3.0
In dependencies
2021-04-28 16:51:33 +02:00
Eric
88a615528f Add missing reference 2021-04-27 11:58:36 +02:00
acognet
b3e1b7124a N°3980 - Manage dictionary entries for JS script in AjaxPage 2021-04-27 10:45:04 +02:00
acognet
48d0fc6ddb N°3907 - Polishing: Run query 2021-04-27 10:18:32 +02:00
acognet
8bf9987174 N°3592 - Migrate module to new UIBlock system : Customized request forms : allow null for value in function AddMetadata 2021-04-27 10:16:43 +02:00
acognet
0f4c325aab Fix id of datatable 2021-04-26 09:03:11 +02:00
acognet
93a1f027cb N°2922 - Dependent fields in Request template - Error management 2021-04-26 09:03:11 +02:00
Molkobain
3e0971597b Medallion icon: Fix message log "Twig : missing file '' : Unable to find template "base/components/medallion-icon/layout.js.twig"" 2021-04-23 22:41:44 +02:00
Molkobain
fce3934977 Improve PHPDoc 2021-04-23 22:34:33 +02:00
Molkobain
d8feda89a5 N°2875 - Add return example in the PHPDoc 2021-04-23 17:03:29 +02:00
Molkobain
7aecdd0dc7 N°2875 - Extract method to find mentioned objects into utils so it can used by extensions, not only the trigger 2021-04-23 17:01:17 +02:00
odain
a478294211 cannot write itop conf error durring setup wizard: add preventive check when empty dependencies 2021-04-22 14:57:06 +02:00
Stephen Abello
9de1f1800d Add icons on PopoverMenu items and allow to add them through PopupMenu API 2021-04-21 14:45:32 +02:00
Stephen Abello
94c8dbac18 Update precompiled stylesheets 2021-04-21 11:15:46 +02:00
BenGrenoble
efc745f574 N°3217 Added OR dependency to ensure if the portal is loaded it's done before faq (according to Molkobain) 2021-04-21 10:50:36 +02:00
Stephen Abello
3e45dcdbb1 Update jQueryUi style 2021-04-21 10:37:47 +02:00
bruno-ds
07257cc2d2 N°3671 - fix a code comment too evasive
thanks @Hipska
2021-04-21 09:25:10 +02:00
BenGrenoble
ae6e08d430 N°3217 add if_exists on FAQ itop_portal and removed knownerror-mgmt portal dependancies 2021-04-21 09:06:25 +02:00
BenGrenoble
473a49ab6b N°3217 Change itop-knownerror-light by itop-knownerror-mgmt. 2021-04-20 17:27:30 +02:00
BenGrenoble
0c58d67f41 N°3217 Autoindent datamodel and removed dependencies on itop-config-mgmt to fix ci error. 2021-04-20 17:08:46 +02:00
Molkobain
d2c4a6e2e9 UIContentBlock: Add PrependSubBlock() to add a block in first position 2021-04-20 16:32:57 +02:00
Molkobain
d1ccd5c8eb MenuBlock: Put ID prefix in a class constant to be able to reuse it 2021-04-20 16:32:56 +02:00
Molkobain
370a07f596 Use real indexes instead of numerics for the object header blocks (easier to manipulate them) 2021-04-20 16:32:56 +02:00
BenGrenoble
9ae056e663 N°3217 Renamed KnownErrorMgmtInstaller in FAQLightInstaller
Add itop-config-mgmt dependancies for Support.combodo.com compatibility
2021-04-20 15:46:47 +02:00
odain
ce596877a4 fix ci 2021-04-16 14:28:09 +02:00
odain
3d9540e895 Merge branch 'feature/2982-finalize' into develop 2021-04-16 14:04:17 +02:00
odain
27d8869665 N°3593 - rename xsi-type to utilities 2021-04-16 14:01:06 +02:00
odain
3b3fa7b1f8 N°2982 - rename imports_utility and imports_variable in precompilation signature 2021-04-16 11:56:16 +02:00
odain
135b5e8adb N°2982 - PR reviews 2021-04-16 11:46:14 +02:00
odain
52dbf23245 protect IsDevelopmentEnvironment function from warning 2021-04-16 11:33:14 +02:00
Purple Grape
6b899d3f77 🌐 improved chinese for 3.0 (#207) 2021-04-16 11:00:16 +02:00
Pierre Goiffon
87ba67225a 💡 Add since phpdoc tags for \DeadLockLog::Log 2021-04-16 08:36:21 +02:00
Pierre Goiffon
2ad3b3c27e 🎨 Fix \DeadLockLog::Log parameter name + PHPDoc
Thanks @Hipska !
2021-04-15 15:03:13 +02:00
Molkobain
46dc7709ab Merge remote-tracking branch 'origin/support/2.7' into develop
# Conflicts:
#	datamodels/2.x/itop-portal-base/portal/src/Controller/ObjectController.php
2021-04-15 12:02:23 +02:00
Molkobain
92a640e41a Merge branch 'support/2.7.4' into support/2.7 2021-04-15 10:37:17 +02:00
Molkobain
842df7646b Merge branch 'support/2.7.3' into support/2.7.4 2021-04-15 10:35:56 +02:00
Molkobain
01b38d2ed6 N°3869 - Portal: Fix the Notice "Undefined index: max_display_limit" 2021-04-15 10:34:46 +02:00
Molkobain
ddb5ffc11a N°3959 - Truncate vertical tabs label when too long, label can be read entirely through a tooltip 2021-04-15 09:30:22 +02:00
Molkobain
2a62e28c66 Code format 2021-04-15 09:30:21 +02:00
Molkobain
973133ce0b N°3959 - Fix vertical tabs inner alignment 2021-04-15 09:30:21 +02:00
BenGrenoble
be0a728f42 N°3913 fix additional ITIL tickets icon missing 2021-04-15 09:05:54 +02:00
Pierre Goiffon
1bb7d9947c N°2522 SetupPage log methods : fix phpdoc, remove deprecated methods calls 2021-04-14 12:18:06 +02:00
odain
65d94bd914 revert d951d0def 2021-04-13 23:48:32 +02:00
odain
d951d0def0 N°3593 - correct GetDefaultThemeInformation returned structure 2021-04-13 23:45:31 +02:00
odain
beadd9cd03 N°3593 - GetVariablesFromFile and precompilation signature fixes + tests 2021-04-13 23:42:53 +02:00
Pierre Goiffon
fac97324a3 🔇 N°3731 Remove some more depreciation notice for methods still used in iTop core 2021-04-13 18:28:39 +02:00
Pierre Goiffon
f33919c312 🔇 N°3731 Remove some more depreciation notice for methods still used in iTop core 2021-04-13 18:22:24 +02:00
Pierre Goiffon
74d8eda713 🔇 N°3731 Remove some more depreciation notice (...) for methods still used in iTop core 2021-04-13 18:13:30 +02:00
Pierre Goiffon
6790fdb9e8 🔇 N°3731 Remove some more depreciation notice for methods still used in iTop core 2021-04-13 18:07:43 +02:00
Pierre Goiffon
d545123ca7 🔇 N°3731 Remove some depreciation notice for methods still used in iTop core 2021-04-13 17:56:21 +02:00
Pierre Goiffon
59678ef8c6 🔊 N°3731 Log calls to deprecated files / PHP methods
POC for the log API was added in #193
2021-04-13 17:56:21 +02:00
Pierre Goiffon
a6d20ab648 N°3731 \DeprecatedCallsLog : always catch errors so that we won't crash the caller 2021-04-13 17:56:20 +02:00
Pierre Goiffon
e5559a1899 N°3731 Add DeprecatedCallsLog to autoloader 2021-04-13 17:42:04 +02:00
Pierre Goiffon
f8757c6d5d 🔇 Remove depreciation log in \WebPage::outputCollapsibleSectionInit as this call must be kept for compatibility
The log will be added but elsewhere, in methods only called by consumers and not by the API itself (like \WebPage::StartCollapsibleSection ?)
2021-04-13 15:45:55 +02:00
Pierre Goiffon
7f4ef12c04 🐛 Fix \DeprecatedCallsLog::NotifyDeprecatedPhpMethod log message
This was bringed by #193
The stack trace wasn't used correctly :/ This is now fixed !

Sample message for deprecated PHP method call :
`2021-04-13 15:31:47 | Warning | Call to WebPage:outputCollapsibleSectionInit in  C:\...\itop-dev\sources\application\WebPage\AjaxPage.php#L170 (AjaxPage::output) | deprecated-php-method`

Log message for deprecated PHP file remains the same :
`2021-04-13 10:31:12 | Warning | C:\...\itop-dev\sources\application\WebPage\WebPage.php L32 including/requiring C:\...\itop-dev\core\coreexception.class.inc.php : Classes were moved to /application/exceptions | deprecated-file`
2021-04-13 15:38:38 +02:00
Pierre Goiffon
2a90557782 💚 Move DeprecatedCallsLog activation from bootstrap to \MetaModel::LoadConfig, same as existing LogAPI impl
As this is called from \MetaModel::Startup, our log will be available everywhere !
\DeprecatedCallsLog::Enable call in bootstrap was causing some tests to fail
Modification from what was done in #193
2021-04-13 14:58:48 +02:00
Pierre Goiffon
7b3595357a 💚 Removing invalid provider for \Combodo\iTop\Test\UnitTest\Core\LogAPITest::LogApiProvider
Config can never be an array
Was working since now, but LogAPI was modified in f6d9d0f0 and it now correctly pick the config, so this provider was failing
2021-04-13 14:37:54 +02:00
Pierre Goiffon
f6d9d0f08b N°3731 Log deprecated calls (#193)
* New DeprecatedCallsLog logger enabled directly in bootstrap so that we can use it in the most situations
* Default Log level is now DEBUG for dev env, ERROR for others
* Logs the caller and the deprecated method called, like :
`2021-04-06 10:52:25 | Warning | AjaxPage::output L2857 calling WebPage:outputCollapsibleSectionInit | deprecated-method`
* Sample file consumer
* Sample php consumer
2021-04-13 13:55:25 +02:00
Molkobain
f3cf154969 N°3899 - Navigation menu: Filter hot key text now corresponds to the one defined in the user preferences 2021-04-13 11:46:35 +02:00
Molkobain
923a4048d3 Keyboard shortcuts: Add method to retrieve info about a particular shortcut 2021-04-13 11:46:34 +02:00
Molkobain
0816d27456 N°3899 - Navigation menu: Fix hotkey position across browsers 2021-04-13 11:46:34 +02:00
odain
d07199db7c N°2982 - add theme_precompilation_enabled to be able to deactivate precompilation from conf + update provided precompiled files when IsDevelopmentEnvironment 2021-04-13 00:49:08 +02:00
odain
903afff687 N°2982 - fix delta xml variables not used in themes 2021-04-12 22:14:00 +02:00
Molkobain
c0f5906dce Fix crash when accessing a backoffice page in maintenance mode (regression from e2f30182) 2021-04-12 12:08:33 +02:00
Molkobain
fa3140cc13 N°3916 - Attribute date: Fix picker's icon position 2021-04-12 12:08:33 +02:00
Molkobain
22aaba3c65 Update precompiled themes 2021-04-12 10:25:38 +02:00
Molkobain
5878b18b02 N°3921 - Attribute file: Simplify size format in the backoffice (similar to the portal) 2021-04-12 10:25:38 +02:00
Molkobain
530ec111ef N°3921 - Attribute file: Simplify open and download links text in the backoffice (similar to the portal) 2021-04-12 10:25:37 +02:00
Molkobain
430049d7c4 N°3921 - Attribute file: Fix "delete" button not displaying 2021-04-12 10:25:37 +02:00
Molkobain
e45fd92022 SCSS: Move depression/elevation variables to proper files 2021-04-12 10:25:37 +02:00
Molkobain
605165fc5a SCSS: Add font sizes CSS variables 2021-04-12 10:25:36 +02:00
Molkobain
644944c6fd SCSS: Add border radius placeholders 2021-04-12 10:25:36 +02:00
Molkobain
8313d61521 SCSS documentation 2021-04-12 10:25:36 +02:00
Molkobain
81d30ca9f4 N°3916 - Date(time) picker: Fix selects and buttons display. 2021-04-12 10:25:36 +02:00
Molkobain
6078ccc144 N°3916 - Attribute date(time): Remove browser autocompletion on focus in the input 2021-04-12 10:24:35 +02:00
Molkobain
7b9d89e485 Activity entry: Remove old markup from AttributeHTML change 2021-04-12 10:24:35 +02:00
Molkobain
48bc8b2341 Activity entry: Fix change description being displayed twice when only 1 attribute changed 2021-04-12 10:24:35 +02:00
Molkobain
8f03ac4aa3 Activity entry: Fix french dict. entry when more than 4 attributes changed 2021-04-12 10:24:34 +02:00
Molkobain
97f5f0b50d Activity entry: Fix "more" toggler being at the bottom of the entry with text attributes 2021-04-12 10:24:34 +02:00
Molkobain
05594ccdd6 N°3915 - Fix very long strings (typically URLs) overflowing from their containers in text attributes and activity panel entries. 2021-04-12 10:24:34 +02:00
Molkobain
e2f301827a N°3936 - Add protection to avoid crashes in certain conditions since d6695d3a 2021-04-12 09:06:56 +02:00
odain
067cbe2afa fix ci: DataSynchroTest adapted for Admin profile renaming 2021-04-09 12:03:20 +02:00
Eric
a99f4c0666 💚 Fix precompiled themes 2021-04-09 10:42:51 +02:00
Eric
d594f28ed9 N°3573 - Migrate backoffice pages to new UIBlock system : System Information 2021-04-09 09:55:58 +02:00
Molkobain
deed948f54 N°3936 - Remove 🌕 emoji from the theme label, it's was a bit too much 😁 2021-04-09 09:05:52 +02:00
Molkobain
25e88b889d N°3936 - Fix designation of the default theme 2021-04-09 09:05:52 +02:00
Molkobain
d6695d3ad8 N°3936 - Add config parameter to disable theme selection in the user preferences ("user_preferences.allow_backoffice_theme_override") 2021-04-09 09:05:52 +02:00
acognet
0bc9aed3fe Remove development logs 2021-04-08 22:23:01 +02:00
acognet
98ec4bba53 N°2738 - Remove unused dict keys - fix Lost translations author 2021-04-08 22:23:00 +02:00
Molkobain
e527324468 N°3936 - Update dictionaries 2021-04-08 18:26:18 +02:00
Molkobain
8ccada40d1 N°3936 - Add user preference to choose backoffice theme 2021-04-08 18:26:18 +02:00
BenGrenoble
80d974f2b4 N°3217 rollback itop-knownerror-light to itop-knownerror-mgmt 2021-04-08 16:27:49 +02:00
acognet
521c493fd1 N°3868 - "Error: Invalid filter parameter" on mass update - fix datatable after configure this list 2021-04-08 10:06:55 +02:00
Pierre Goiffon
b68ee1136e 📦 💚 Update compiled CSS for test-red
Modification was done in 3262ad70
Didn't add this one in previous commit 0f43b0a6 but was necessary too :/
2021-04-07 18:39:41 +02:00
Pierre Goiffon
0f43b0a6de 📦 💚 Update compiled CSS
Modification was done in 3262ad70
2021-04-07 18:16:27 +02:00
Pierre Goiffon
58d1a1d311 🚚 collapsibleSection JQuery widget renamed to collapsible_section
to match other widget naming convention
2021-04-07 17:14:44 +02:00
Molkobain
5b3ab2965f Activity panel: Mark polish translation as potentially dirty 2021-04-07 16:57:35 +02:00
Stephen Abello
f97f55bcca N°3896 - CKeditor icon for enhance WikiText URLs syntax 2021-04-07 16:20:01 +02:00
acognet
3262ad7029 N°3868 - "Error: Invalid filter parameter" on mass update 2021-04-07 12:22:02 +02:00
acognet
a5bb6a0c55 N°3886 - Mass delete : toggle all checkbox not working anymore 2021-04-07 12:01:20 +02:00
acognet
f0d6b41cee N°2738 - Remove unused dict keys - undo for some entries 2021-04-07 11:55:54 +02:00
Pierre Goiffon
5c01d222c9 DictionariesConsistencyTest : remove debug var_dump
Many thanks @Hipska !
2021-04-07 11:27:33 +02:00
Pierre Goiffon
7e65541d3c DictionariesConsistencyTest : simplify & comment sample dict files 2021-04-07 11:09:51 +02:00
Molkobain
83b8fbb6b5 Remove unused DisplayDetails() function 2021-04-07 10:47:37 +02:00
Molkobain
5b9e5f8de9 Activity panel: Reword english translation for better clarity 2021-04-07 10:02:39 +02:00
Stephen Abello
ddceeafc52 Display ajax tab placeholder when loading regular displayed ajax tab 2021-04-07 09:56:35 +02:00
Stephen Abello
56087d9686 Fix tab container when there is only ajax tabs 2021-04-07 09:46:13 +02:00
Stephen Abello
5aef6f209b Remove debug line 2021-04-07 09:46:13 +02:00
Pierre Goiffon
1b6d69037e DictionariesConsistencyTest : fix inspections warnings 2021-04-07 09:26:34 +02:00
Pierre Goiffon
3941f323c0 Dict syntax samples : make them smaller to ease comparisons 2021-04-07 09:12:51 +02:00
Molkobain
b19f9d4875 N°2875 - Mentions: Continue work on implementation
- Add context attribute to details zlist
- Update french dictionary
2021-04-06 22:28:19 +02:00
Molkobain
057bb1a296 Remove some of the unrelevant tooltips from DM dictionaries 2021-04-06 22:28:19 +02:00
Molkobain
192cb2df73 N°3894 - Activity panel: Add conf. param. to prefilter only on current log or all 2021-04-06 19:45:12 +02:00
Pierre Goiffon
47c797daba 🔨 Fix extensions doc generation script
There were some path problems, this wasn't consistent with the procedure (run from the .doc dir) and with the other script
2021-04-06 18:25:26 +02:00
Pierre Goiffon
33dcb35344 📝 .doc/README : fix generation procedure 2021-04-06 18:25:26 +02:00
Molkobain
68ab84716b N°2224 - Update standard portal compiled stylesheet 2021-04-06 18:14:53 +02:00
Pierre Goiffon
b60fb4fb99 N°3892 Setup : fix license text display
iTop license was the only one to contain HTML, so every other one needed to be contained in a "<pre>" tag :/ And... That wasn't true :(
Now iTop license is back in text (like in the license.txt file in this repo), and the `<pre>` tag is added in WizStepLicense::Display
2021-04-06 15:09:30 +02:00
Molkobain
8fb5a9acd0 N°3887 - Set max. height for autocomplete results list 2021-04-06 14:50:31 +02:00
Molkobain
4c289edac7 N°3887 - Harmonize number of autocomplete displayed results throughout the app 2021-04-06 14:50:31 +02:00
Molkobain
f6be3736fd N°3887 - Add config. param. "max_autocomplete_results" 2021-04-06 14:50:31 +02:00
Pierre Goiffon
f8f9c2d7bb 📄 Update Font Awesome license
Was duplicated...
And also not the correct license !
Source for new license text : https://github.com/FortAwesome/Font-Awesome/blob/master/LICENSE.txt
2021-04-06 14:39:21 +02:00
Molkobain
94fdc79be5 Update precompiled stylesheet for "test-red" theme 2021-04-06 08:53:43 +02:00
Molkobain
5fa2caac29 Mentions: Show initials when no picture for contact 2021-04-06 00:02:13 +02:00
Molkobain
8b25679df8 Extract function to get a person's initials to a dedicated ToAcronym function in \utils 2021-04-05 21:05:46 +02:00
Molkobain
a67bff3959 Reorder some methods by theme 2021-04-05 20:44:39 +02:00
Molkobain
24eec4aa21 PHPDoc 2021-04-05 17:44:37 +02:00
Molkobain
978e64d66c Button: Improve fix from 54b718e7 2021-04-05 14:58:18 +02:00
Molkobain
3dad90dbcf Update precompiled theme 2021-04-04 23:14:42 +02:00
Molkobain
17c4a18c94 Fix date picker icon floating around instead of being within the input 2021-04-04 23:12:07 +02:00
Molkobain
c8f709a4e6 Fix z-index for external key dropdown arrow 2021-04-04 23:12:07 +02:00
Molkobain
90cc08b920 Refactor IsElementVisibleToTheUser() JS helper within CombodoGlobalToolbox 2021-04-04 23:12:07 +02:00
Molkobain
54b718e7cd Button: Force content (icon + text) to be on 1 line 2021-04-04 23:12:06 +02:00
Molkobain
0bc2f2c818 Fix autocomplete / set attributes' dropdown being cut by its container 2021-04-04 23:12:06 +02:00
odain
c0b1581f0c fix ci: datasynchro test 2021-04-02 23:00:14 +02:00
odain-cbd
bf793fd989 fix temporarly ci: comment broken datasynchro tests 2021-04-02 20:23:05 +02:00
odain
711fe5607b ci: increase DataSynchro test coverage 2021-04-02 17:54:25 +02:00
odain
4fa259af14 ci: increase DataSynchro test coverage 2021-04-02 17:23:03 +02:00
odain
49fe8d0a0f N°2982 - small enhancement to fetch images in themes 2021-04-02 10:44:43 +02:00
Pierre Goiffon
e492d713c4 ThemeHandlerTest : add Windows compat 2021-04-02 10:39:09 +02:00
odain
77962d73eb N°2982 - fix provided precompiled styles 2021-04-02 08:53:52 +02:00
Pierre Goiffon
e53cab0d1d 🎨 fix param order for \CMDBSource::IsSameFieldTypes call + code formatting 2021-04-02 08:22:36 +02:00
odain
5816b22639 N°2982 - fix testthat validates provided precompiled stylesheets 2021-04-02 07:30:45 +02:00
Molkobain
5f8eb26bff Object details: Fix tabs left padding when class has no medallion icon 2021-04-01 23:37:45 +02:00
Molkobain
8b894bf96b Dashboard: Improve fix from previous commit as sListId can be null (which crashes the sanitize filter) 2021-04-01 23:22:27 +02:00
Molkobain
96021274cc Dashboard: Fix JS error on custom dashboard when trying to create a variable with dash in its name 2021-04-01 22:15:16 +02:00
odain
5f3fda95fc ci enhance DatasynchroTest 2021-04-01 18:32:02 +02:00
odain
3afa783ba8 PR #188 make sure data synchro does not change enum db type (default value) 2021-04-01 18:29:45 +02:00
denis.flaven@combodo.com
a997e528ec Internal regression, enum fields not created in data synchro tables 2021-04-01 18:13:24 +02:00
odain
9177982592 PR #188 add testcase to cover data synchro regression 2021-04-01 18:11:24 +02:00
odain
d32bfa3ef4 N°2982 - Speed up SCSS themes compilation during setup - preventive check before looping 2021-04-01 14:59:41 +02:00
Denis
78d82528fc Fix DBSchema update fails when an ENUM column contains values which are not / no longer part of the field definition (#188) 2021-04-01 12:13:52 +02:00
odain
216489ab2d fix ci temporarly 2021-04-01 10:25:21 +02:00
odain
d3d2820b4e 580 - DatasynchroTest fixed both in http and cli modes 2021-04-01 00:04:40 +02:00
odain
f75c660a45 2982 - restore precompiled styles in datamodel 2021-03-31 23:49:50 +02:00
odain
cb91d6f3c4 N°2982 - Speed up SCSS themes compilation during setup - fix infite loop when n signature inside precompiled file 2021-03-31 23:37:29 +02:00
Pierre Goiffon
6744147bf9 PHP syntax check for dictionnaries : change wrong file ext to avoid having errors in the IDE
I was hoping a @noinspection annotation could be the answer but I didn't find any corresponding inspection key to disable :/
2021-03-31 17:40:21 +02:00
Molkobain
fcb84423ea N°3634 - Lists: Fix list margin with its container panel when rendered as a dashlet 2021-03-31 17:32:57 +02:00
Pierre Goiffon
fa92c12b5a PHP syntax check for dictionnaries : execute beforeSetup 2021-03-31 17:27:08 +02:00
Eric
d3a857d9d3 N°580 - Fix CI temporarily 2021-03-31 17:00:38 +02:00
Pierre Goiffon
c843e13c58 New tests to check syntax of all dict files
We had some issues last week with invalid PHP syntax in dict files. The CI detects some of these, but having a larger check with a clearer message that is run immediately at commit will ease fixing such issues !
2021-03-31 16:49:50 +02:00
Eric
131ecd5e3b N°3251 - Restore 2.7 behaviour of ExecITopScript (hide passwords from commandline arguments) and allow tests to provide credentials 2021-03-31 16:36:40 +02:00
Molkobain
7a95ea407b N°2982 - Revert temporarily precompiled stylesheets from datamodel as it puts the setup in an infinite loop 2021-03-31 12:14:41 +02:00
acognet
efeedcad30 N°3868 - "Error: Invalid filter parameter" on mass update 2021-03-31 11:32:35 +02:00
Molkobain
5be3496c8f N°2982 - Restore precompiled stylesheets files 2021-03-31 10:22:54 +02:00
Molkobain
d465bf10fd N°2591 - Restore lost deprecation comment 2021-03-31 10:22:54 +02:00
acognet
2265d1641e N°3868 - "Error: Invalid filter parameter" on mass update 2021-03-31 09:20:53 +02:00
acognet
6f9b5b7c64 N°2737 - Migrate table to DataTables plugin in display objects 2021-03-31 09:20:53 +02:00
acognet
7d92ff65a2 N°3650 - fix image display when creating an object 2021-03-31 09:20:52 +02:00
acognet
1260a09c05 N°3582 - Migrate backoffice pages to new UIBlock system : Import CSV fix vertical tabs 2021-03-31 09:20:51 +02:00
Molkobain
95f328d2af N°3634 - Lists: Fix shortcut not being added "live" to navigation menu on creation 2021-03-30 18:19:51 +02:00
Molkobain
0c87bd9aad TwigHelper: Add constant for backoffice's templates base folder
Note: We might add more in the future for other GUIs
2021-03-30 18:19:51 +02:00
Molkobain
99f09127ea Shortcuts: Fix dialog's buttons style 2021-03-30 18:19:51 +02:00
vdumas
87987e1c2f N°463 - Load localized Query Phrases at Setup (German version) 2021-03-30 16:24:56 +02:00
Molkobain
9d98a494cb Update setup XML licenses file following 5940578e 2021-03-30 16:10:16 +02:00
Molkobain
4d74371e8e Advanced search: Add comment on its SCSS partial 2021-03-30 15:59:32 +02:00
Molkobain
20e41f21d9 N°3634 - Advanced search: Fix opened criterion display 2021-03-30 15:56:47 +02:00
Molkobain
5940578e3a Update setup licenses for NPM libs 2021-03-30 15:56:47 +02:00
Eric
94b52f8d9f N°580 - Check parent class config 2021-03-30 14:40:42 +02:00
Pierre Goiffon
8674ebb137 📝 updateLicenses.php : add solution for JQ on Windows, and also a known bug 2021-03-30 11:43:08 +02:00
odain
71e64cd1dc N°2713 - Allow read access to synchro errors for users with non-admin profile - fix when object not allowed 2021-03-30 10:34:44 +02:00
Pierre Goiffon
d0ea5e9e1c N°2330 Change MySQL min version
Reasons :
* the min version was announced on a public wiki page (https://www.itophub.io/wiki/page?id=2_7_0%3Ainstall%3Ainstalling_itop#software_requirements)
* MySQL 5.6 end of life was reached in feb. 2021 (https://endoflife.software/applications/databases/mysql)
2021-03-30 10:28:59 +02:00
Molkobain
d9ed2e6de9 Dashboard: Push file missing from last commit 2021-03-30 09:55:10 +02:00
Purple Grape
8a4372762e 🌐 ZH translations for iTop 3.0 (#198)
Many thanks @purplegrape !
2021-03-30 09:42:31 +02:00
Molkobain
82e67f27f7 Dashboard: Rename class to better match conventions 2021-03-30 09:36:20 +02:00
Molkobain
8124bea16f Lists: Fix JS error when dataTables widget is destroyed 2021-03-30 09:36:20 +02:00
odain
62165a2a0d N°2713 - Allow read access to synchro errors for users with non-admin profile - take into account allowed read action 2021-03-29 18:40:06 +02:00
Molkobain
31f6558710 N°3634 - Lists: Improve rendering to better match mockups and feedbacks from alpha version 2021-03-29 18:13:30 +02:00
Pierre Goiffon
afd9ddf46d ⬇️ Restore php-parser to its original version as tests are failing :/ 2021-03-29 16:51:10 +02:00
Pierre Goiffon
d62825c99b Improve test error message 2021-03-29 16:49:55 +02:00
Pierre Goiffon
a7e7e62245 ⬆️ Upgrade lib : nikic/php-parser
We were on v3 that is no longer maintained and compatibility is annonced for PHP 7.2.
v4 is active and supports PHP up to 8.0
No problem to update as this is only used in the config editor (\Combodo\iTop\Config\Validator\iTopConfigAstValidator)
2021-03-29 16:35:30 +02:00
Molkobain
c11fd4f0ab NPM libs: Update embedded package to avoid their dependencies to be retrieved as they are already their 2021-03-29 11:11:52 +02:00
Molkobain
a29dac2c60 NPM libs: Restore web.config file 2021-03-29 11:11:50 +02:00
Pierre Goiffon
8846a42bf4 👥 README : add DudekArtur
Submitted polish translations : #194, #195
Many thanks to him !
2021-03-29 10:30:54 +02:00
Pierre Goiffon
72805e5da9 🎨 Formatting for licenses file 2021-03-29 09:07:42 +02:00
Pierre Goiffon
8bbcf542b6 📄 Update licenses for Datatables
Added using NPM in 6f659a34
2021-03-29 09:07:03 +02:00
Pierre Goiffon
f01109bd18 💡 Fix command for additional NPM licenses 2021-03-29 08:56:11 +02:00
Molkobain
6f659a3431 Improve dataTables integration within the app:
- Manage lib through NPM
- Move portal / Bootstrap files back to the itop-portal-base module (not managed through NPM yet)
- Fix SCSS classes for the backoffice as it was based on the bootstrap CSS classes which are not there anymore

Note: jQuery is included as a dependency, will check with the team if we can force it not to be retrieved
2021-03-26 17:46:13 +01:00
Molkobain
2e8c0346d3 Fix NPM package.json not present in the repository 2021-03-26 17:44:23 +01:00
Molkobain
fbd46609ff Button: Revert "Improve display when text doesn't fit in the button's width" 2021-03-26 16:29:11 +01:00
vdumas
70620b96bc Revert "N°463 - Load localized Query Phrases at Setup (2)"
This reverts commit 6b5cbfb6
2021-03-26 16:05:56 +01:00
vdumas
daebfdd54b N°463 - Load localized Query Phrases at Setup (3) 2021-03-26 15:43:47 +01:00
vdumas
6b5cbfb64e N°463 - Load localized Query Phrases at Setup (2) 2021-03-26 15:43:47 +01:00
Pierre Goiffon
8fa9147dc1 📄 Add licenses for NPM packages
Our tooling isn't ready yet and will be updated with N°3862
I added a dedicated JSON file to ease comparisons in next releases
2021-03-26 12:18:50 +01:00
Pierre Goiffon
30542f6b27 ✏️ README fix typo 2021-03-26 11:34:54 +01:00
Pierre Goiffon
c2c0b6a1b0 👥 README : update contributor's list
- larhip was duplicated
- added Super-Visions
- added links to companies websites
- minor formatting changes
2021-03-26 11:09:33 +01:00
Stephen Abello
c2ffe58070 N°3857 Add French translation and replace 'iTop' by application constant 2021-03-26 10:46:51 +01:00
Molkobain
daa039cb85 Update polish translations to use app. name instead of "iTop" 2021-03-26 10:40:45 +01:00
Molkobain
6028a3e419 Update PHPDoc 2021-03-26 10:34:26 +01:00
Pierre Goiffon
082592fc22 ✏️ CONTRIBUTING : fix typo on branch model 2021-03-26 10:25:52 +01:00
Pierre Goiffon
5baa157d42 ✏️ CONTRIBUTING : fix typo 2021-03-26 10:24:15 +01:00
Pierre Goiffon
adafcabbb8 💚 Add missing dictionary language in DictionariesConsistencyTest
PL was added with 8f8e86a4 (#194)
2021-03-26 10:07:21 +01:00
Molkobain
9312fdb573 User picture: Fix wrong image displayed on other users without a contact 2021-03-26 10:03:13 +01:00
Molkobain
ba33cf98e3 User preferences: Open APIa bit so developer can retrieve a pref. from any user, not only the current one. 2021-03-26 10:03:13 +01:00
Eric
649bd2a170 Fix loading classes with apc extension 2021-03-26 10:02:01 +01:00
DudekArtur
8f8e86a4eb 🌐 Polish translations for 3.0.0 (#194)
Many thanks @DudekArtur !
2021-03-26 09:55:41 +01:00
Molkobain
532672b5d1 Fix ProblemManagement menu's icon 2021-03-26 08:54:47 +01:00
Molkobain
34c61f812a Button: Improve display when text doesn't fit in the button's width 2021-03-26 08:54:46 +01:00
Molkobain
b782f2f9b2 Move utils::GetUserPictureAbsUrl() with other user methods 2021-03-26 08:54:46 +01:00
Molkobain
58d2b1d3f4 Rename utils::GetContactPictureAbsUrl() to utils::GetUserPictureAbsUrl() 2021-03-26 08:54:46 +01:00
odain
7d1f5c91a7 N°463 - fix broken setup 2021-03-26 08:06:25 +01:00
vdumas
f53abf9a45 N°463 - Load localized Query Phrases at Setup 2021-03-25 18:41:00 +01:00
odain
407a651e44 N°2713 - Allow read accès to synchro errors for users with non-admin profile - removing comment 2021-03-25 18:05:59 +01:00
acognet
992541ed99 N°3582 - Migrate backoffice pages to new UIBlock system : Import CSV fix advanced mode 2021-03-25 17:59:45 +01:00
Eric
3a9228d8d3 N°3569 - Fix DB Tools queries display 2021-03-25 16:36:43 +01:00
Molkobain
aa9632a41b User picture: Use placeholder image from preferences when no contact attached to the user 2021-03-25 15:59:45 +01:00
Molkobain
ba994c91fc User picture: Update contact's image attribute with preferences' placeholder so it can be used elsewhere 2021-03-25 15:59:45 +01:00
Molkobain
5d3a829f65 Update PHPDoc 2021-03-25 15:59:44 +01:00
azana38
d4d1b8f513 N°3852 - Translate new keys in FR 2021-03-25 15:56:42 +01:00
Eric
67141eaeac N°3856 - Fix DisplayBlock error 2021-03-25 14:39:48 +01:00
Molkobain
43671629f0 Button group: Fix spacing with other siblings 2021-03-25 14:10:26 +01:00
acognet
66f7406148 N°3582 - Migrate backoffice pages to new UIBlock system : Import CSV fix config popup 2021-03-25 12:08:16 +01:00
acognet
dc0006bd76 N°3801 - Some queries not loaded in KPI with new datatable mode 2021-03-25 12:08:15 +01:00
acognet
0ab2f03064 Fix display header when there is an alert message 2021-03-25 12:08:15 +01:00
odain
89205a66ad N°2713 - Allow read accès to synchro errors for users with non-admin profile 2021-03-25 11:28:07 +01:00
azana38
50af948c9f N°3852 - Translate new keys in FR 2021-03-25 10:35:04 +01:00
Molkobain
5da5f5ac42 Activity panel: Try to improve "transitions" filter french dict. entry so it all fits nicely in the toolbar
Note: As there is a tooltip, the label can be relatively short. Any doubts from the user will be dismissed when they see the tooltip
2021-03-25 09:35:29 +01:00
Molkobain
0e062f51e9 Tests: Update render all blocks page 2021-03-25 00:04:38 +01:00
Molkobain
e0a655e102 Button factory: Fix name param. being mandatory on some methods 2021-03-24 23:59:47 +01:00
Molkobain
a5a771b242 Button group: Fix buttons' corners when 3+ elements 2021-03-24 23:56:56 +01:00
Molkobain
11f330cff6 Update dictionaries 2021-03-24 23:39:12 +01:00
Molkobain
e0b744183a Activity panel: Try other dict. entries that fit on the line 2021-03-24 20:09:15 +01:00
Molkobain
f6db3d5700 Activity panel: Fix transitions button not being disable during entries submission 2021-03-24 20:04:38 +01:00
Molkobain
94601efed2 Update dictionnaries 2021-03-24 19:48:39 +01:00
Molkobain
573a6d82fe N°3649 - Activity panel: Add transitions to the save button using the button group 2021-03-24 19:43:35 +01:00
Molkobain
318d8ce3c9 Add ButtonGroup block 2021-03-24 19:43:35 +01:00
Pierre Goiffon
85d3cc92c4 🌐 Align all dictionnaries with keys in EN dict
Was done in 0fd3cb01 but some new keys were added after :
* db-tools 69994471
* UI:WelcomeMenu:Text in dictionaries/en.dictionary.itop.ui.php with 8204dbb6
2021-03-24 18:52:18 +01:00
Pierre Goiffon
7aa0694eac 🌐 Remove propositions added in 4124e44a as keys were translated in b6b6d11a and 58018687 2021-03-24 18:37:02 +01:00
Pierre Goiffon
20af4921f8 💡 📝 updateLicenses.php : more documentation 2021-03-24 18:04:45 +01:00
Stephen Abello
8204dbb6ae N°3857 Replace old welcome popup 2021-03-24 17:18:55 +01:00
Pierre Goiffon
e759124bd8 🔖 Prepare 3.0.0-beta 2021-03-24 17:05:17 +01:00
azana38
41fc8de9c5 Fix grammatical mistake 2021-03-24 16:57:09 +01:00
Molkobain
b54a63a5f7 Update contributors list 2021-03-24 16:33:28 +01:00
Molkobain
a27eb8c63b Popover menu: Add SetTogglerFromId() and SetTogglerFromBlock() methods as shortcuts 2021-03-24 16:33:28 +01:00
Eric
572fce041b Fix core-update blank page 2021-03-24 16:30:08 +01:00
Stephen Abello
456f7f7c7d Rename test-red variables 2021-03-24 11:29:43 +01:00
Stephen Abello
5d6194e679 Revert new method in itopdesignformat 2021-03-24 11:29:43 +01:00
Stephen Abello
1d0da38d40 N°3593 Fix file import variable usage in theme compilation 2021-03-24 11:29:43 +01:00
acognet
b63f720e5d Add factory for MultiColumn and Column 2021-03-24 11:18:55 +01:00
Molkobain
64d5f52eae Activity panel: Remove markup committed by mistake 2021-03-24 11:07:05 +01:00
Molkobain
c1af4de1d4 Add icons8, unDraw and Freepik to embedded libs. licenses 2021-03-24 10:58:08 +01:00
Pierre Goiffon
7f72088736 💚 Fix syntax error in dict 2021-03-24 10:19:08 +01:00
azana38
38956503e1 N°3852 - Translate new keys in FR 2021-03-24 10:03:17 +01:00
azana38
47ff93cb5d N°3852 - Translate new keys in FR 2021-03-24 10:02:25 +01:00
Pierre Goiffon
212e34feac 💡 📝 Documentation of the update licenses script 2021-03-24 09:52:03 +01:00
azana38
f5ff1ce80b N°3852 - Translate new keys in FR 2021-03-24 09:39:15 +01:00
azana38
db4eefb759 N°3852 - Translate new keys in FR 2021-03-24 08:57:13 +01:00
azana38
58018687dd N°3852 - Translate new keys in FR 2021-03-24 08:53:31 +01:00
azana38
ec1fb06106 N°3852 - Translate new keys in FR 2021-03-24 08:44:38 +01:00
azana38
b6b6d11abc N°3852 - Translate new keys in FR 2021-03-24 08:40:03 +01:00
acognet
094a86cbbf N°3582 - Migrate backoffice pages to new UIBlock system : Improved display 2021-03-24 07:57:24 +01:00
Pierre Goiffon
fdf01b770a 🚚 Move dict files to dictionaries subdirectory
Affected modules in datamodels/2.x :
    - itop-bridge-cmdb-ticket
    - itop-portal
    - itop-structure
2021-03-23 19:12:13 +01:00
odain
262a815457 N°3805 - Collectors not working on itop 3.0 - activate data synchro test in ci + cover current bug with a specific one 2021-03-23 19:07:38 +01:00
Eric
699944711b N°3569 - Migrate backoffice pages to new UIBlock system : DB Tools 2021-03-23 18:30:40 +01:00
Eric
c7425558e7 Fix core-update blank page 2021-03-23 18:28:19 +01:00
Pierre Goiffon
4124e44a8d 🌐 Prepare 3.0.0-beta : FR translations for some of the new keys
2 keys were left untranslated but added in comment a proposition :
* UI:Layout:ActivityPanel:ComposeButton:Tooltip in dictionaries/ui/layouts/fr.dictionary.itop.activity-panel.php
* UI:Preferences:ActivityPanel:EntryFormOpened+ in dictionaries/ui/pages/fr.dictionary.itop.preferences.php
As I'm not sure yet of what will be adopted for "log" for example
2021-03-23 18:16:28 +01:00
Pierre Goiffon
41e8ce1c74 🌐 Update error.php message for beta and beyond
Note that this message only appears on certain conditions (see \ErrorPage::error)
2021-03-23 18:16:28 +01:00
Pierre Goiffon
238036ef48 🌐 No translation for shortcuts ! 2021-03-23 18:16:28 +01:00
Pierre Goiffon
da0ca3d440 🌐 Fix auto dict updates
Keys were added for enum values in EN and all corresponding files, although they were already declared !
See N°3850
2021-03-23 18:16:28 +01:00
Pierre Goiffon
0fd3cb01cf 🌐 Prepare 3.0.0-beta : align all dictionnaries with keys in EN dict 2021-03-23 18:16:27 +01:00
Molkobain
ab7cf49de0 N°3810 - Avoid syntax highlighting that shouldn't take place 2021-03-23 16:48:44 +01:00
Molkobain
cf5dffcd80 Merge remote-tracking branch 'origin/support/2.7' into develop
# Conflicts:
#	application/itopwebpage.class.inc.php
2021-03-23 16:48:14 +01:00
Molkobain
9af4846372 N°3810 - Avoid syntax highlighting that shouldn't take place 2021-03-23 16:39:22 +01:00
acognet
2834c2f86c N°3582 - Migrate backoffice pages to new UIBlock system : Import CSV fix buttons style 2021-03-23 16:18:53 +01:00
Molkobain
7bf1ef355f Panel factory: Remove SetClassColor() method as it has been move directly in the panel in a previous commit 2021-03-23 15:06:35 +01:00
odain
34c12b61cc N°2982 - Speed up SCSS themes compilation during setup - add method visibility 2021-03-23 14:41:32 +01:00
Eric
fc0bac6726 N°2982 - Speed up SCSS themes compilation during setup (removed dev bypass) 2021-03-23 14:38:08 +01:00
Eric
4534944b08 N°3536 - revert function and use GetSubBlocks() instead 2021-03-23 14:26:17 +01:00
Molkobain
1d6ad94694 N°3649 - Activity panel: Add menu to compose button to select the target log when on a readonly tab (activity, read only case log) 2021-03-23 12:09:37 +01:00
Molkobain
367197357c Popover menu: Add HTML data attributes in templates 2021-03-23 12:09:37 +01:00
Molkobain
ae416f2769 Popover menu: Add HasSection() and HasItems() methods 2021-03-23 12:09:37 +01:00
Molkobain
a19df34b79 UIBlock: Add hasDataAttributes() method 2021-03-23 12:09:37 +01:00
odain
7127c70ed6 N°2982 - Speed up SCSS themes compilation during setup - fix included files with same name and folder 2021-03-23 11:33:00 +01:00
acognet
80cc850112 N°3582 - Migrate backoffice pages to new UIBlock system : Import CSV 2021-03-23 11:23:55 +01:00
acognet
dfbb362330 N°3746 - Migrate modal to new UIBlock system - update fields when change class selection 2021-03-23 11:08:11 +01:00
acognet
ab5e5a7f4a Remove danger zone 2021-03-23 11:03:49 +01:00
Molkobain
a123f764e6 Fix crash introduced in 574d089c due to missing classes in autoloader 2021-03-22 18:57:35 +01:00
Molkobain
65ed5b3fce Popover menu: Refactor to remove the necessity of coupling JS and PHP code to instantiate it correctly 2021-03-22 18:53:15 +01:00
Molkobain
e8656e8504 Popover menu: Fix JS widget instantiation, now done automatically but the UIBlock system 2021-03-22 18:49:41 +01:00
Molkobain
86c614d56d Add HTML meta data to TWIG templates 2021-03-22 18:49:41 +01:00
Molkobain
093194f326 N°2844 - Object details: Improve transitions menu's tooltip depending on the presence of favorites or not 2021-03-22 18:49:41 +01:00
Molkobain
d3eaf6030d SCSS: Remove jQuery UI helper classes from vendor overloading to prevent them from messing with our reset 2021-03-22 18:49:34 +01:00
Eric
574d089c20 N°3536 - Dashboard: Add title, toggler and menu to AttributeDashboard 2021-03-22 16:46:45 +01:00
Pierre Goiffon
3a141def49 📝 js/README update recommendation text for leading semicolon
Thanks @Hipska !
2021-03-22 12:17:12 +01:00
Molkobain
8dac0a56c9 Hot fix: Temp. removal of this line as it crashed the menus closing on body click 2021-03-19 19:57:47 +01:00
Molkobain
8fade400b7 N°2844 - Object details: Add visual hint on the transition buttons' menu 2021-03-19 19:50:51 +01:00
Molkobain
8334b68285 Popover menu: Introduce option to add a visual hint on the menu toggler
This adds a visual hint (caret down) on the toggler to help the user understand that clicking on the toggler won't do something right away, but will open a menu instead
2021-03-19 19:50:50 +01:00
Molkobain
482bf2e523 N°2844 - Object details: Add separator between regular and transition buttons 2021-03-19 19:50:50 +01:00
Molkobain
10bdb57391 Introduce vertical separator for toolbar blocks 2021-03-19 19:50:50 +01:00
Molkobain
8717d6d75e N°2844 - Object details: Move transition buttons in front of all others 2021-03-19 19:50:49 +01:00
Molkobain
c2339dcb5c N°2844 - Object details: Extract transitions from the "other actions" menu to a dedicated "transitions" menu 2021-03-19 19:50:49 +01:00
Pierre Goiffon
de7ac4ba31 N°3833 Fix DashletBadge in Ajax causing JS error
* switch dashlet_badge widget init from js_template to js_on_ready_template
* add phpdoc on UIBlock::DEFAULT_JS_FILES_REL_PATH
* remove old code in \AjaxPage::output (after the return statement) that is already handled with the new Twig rendering
2021-03-19 11:49:39 +01:00
Molkobain
f1d05ae9b5 Fix missing use statement 2021-03-19 11:38:24 +01:00
Molkobain
2f73256c94 Improve PHPDoc on cmdbAbstractObject::GetShortcutActions() to flag it as an API to overload the 'shortcut_actions' config. param. 2021-03-19 11:19:02 +01:00
Stephen Abello
a353b1fdc1 N°3530 Fix "No new message" dict entry call 2021-03-19 10:35:28 +01:00
Eric
7d3992eeaf N°2677 - Datamodel: Consider hierarchy for classes style 2021-03-19 10:23:29 +01:00
Molkobain
7b8e551662 N°3581 - Dashlet badge: Add HTML tooltip to ease readability on truncated text 2021-03-19 09:42:23 +01:00
Molkobain
075470dabb Add title to config. management dashboard 2021-03-19 09:25:13 +01:00
Molkobain
f567f581c3 N°3581 - Dashlet plain text: Fix line returns while keeping XSS protection 2021-03-18 20:22:55 +01:00
Molkobain
b3e3a27555 Add title to welcome dashboard 2021-03-18 20:06:45 +01:00
Molkobain
28dcfcffd0 N°3581 - Dashlet header static: Fix separators length 2021-03-18 18:21:21 +01:00
acognet
c214d09e84 N°2841 - Error when trying to delete a user with a no admin 2021-03-18 18:20:34 +01:00
Pierre Goiffon
46680d3854 🎨 ITopCounter : use KeyValueStore::class where possible instead of class name hardcoded in a string 2021-03-18 17:50:39 +01:00
Molkobain
9a0ea60cd7 N°3581 - Dashlet: Fix max. width for DashletBadge 2021-03-18 17:10:59 +01:00
Molkobain
3d14aedcd8 N°3581 - Dashlet: Fix double-encoding on DashletPlainText 2021-03-18 16:50:33 +01:00
Molkobain
a28c9c896d N°3581 - Dashlet: Remove coupling with DashletText in DashletHeaderStatic 2021-03-18 16:50:33 +01:00
Molkobain
912f6bb376 N°3581 - Dashlet: Add dedicated block for DashletText 2021-03-18 16:50:33 +01:00
Stephen Abello
e23b60c203 Set maximum height/width on global search results class icons 2021-03-18 16:14:15 +01:00
Molkobain
547038aae8 N°3581 - Dashlet: Rename DashletHeaderStatic template to match conventions 2021-03-18 15:59:23 +01:00
Molkobain
8137bc0ca9 N°3581 - Dashlet: Rework header static look to match tabs separator 2021-03-18 15:59:22 +01:00
Pierre Goiffon
7a67218ad1 📦 Update setup.css 2021-03-18 15:45:46 +01:00
Stephen Abello
8471bdeffe N°3542 Separate JS buttons from URL buttons 2021-03-18 15:39:19 +01:00
acognet
82a5ab5aef N°3823 - Error on "Header with statistics dashlet" with autorefresh and filter on organization 2021-03-18 14:50:18 +01:00
Pierre Goiffon
3959ed505b 🎨 dashlet-badge.js : restore leading semicolon
See added info in js/README.md on reason why this semicolon has to be there
2021-03-18 12:12:08 +01:00
Molkobain
5320f3f5fd N°3581 - Panel: Fix titles font 2021-03-18 11:55:01 +01:00
Molkobain
72b2feb697 N°3581 - Dashlet: Add max-width and tooltip on pills 2021-03-18 11:55:01 +01:00
Molkobain
ac91bc8898 N°3581 - Dashlet: Fix pill not being completely clickable 2021-03-18 11:55:00 +01:00
Molkobain
ca2c66733c N°3581 - Dashlet: Rename Badge block to Pill as it can contain just a simple text and to avoid confusion with the DashletBadge 2021-03-18 11:55:00 +01:00
Molkobain
8ce2e43780 PHPDoc 2021-03-18 11:55:00 +01:00
Eric
118d6ff837 N°3648 - Fix Bulk modify 2021-03-18 11:41:57 +01:00
Eric
5869591167 N°2847 - Transform old itop datatable to jquery DataTable (fix dictionaries) 2021-03-18 10:51:55 +01:00
Eric
de5efe19b2 N°3536 - Dashboard: Finish integration of in the TopBar (rollback old css) 2021-03-18 10:42:45 +01:00
Stephen Abello
33d8bf07b1 Destroy previous tooltip when force initializing a new one 2021-03-18 10:41:59 +01:00
Eric
818690dba8 N°3825 - Export.php and export-v2.php errors on Excel 2021-03-18 10:27:21 +01:00
Eric
e35076f682 N°3536 - Button order in object details 2021-03-18 09:28:12 +01:00
Pierre Goiffon
de8761ea61 💡 Fix PHPDoc errors made in cd170be4
* fix typo in used-by (thanks @Molkobain !)
* add class before method name as needed for our phpdoc generator (see .doc/README.md)
2021-03-17 19:09:42 +01:00
Pierre Goiffon
0ad65691d3 🚧 AjaxPage::output add TODO 3.0.0 as there is lot of code we have disabled in 410a637598 2021-03-17 18:22:44 +01:00
Pierre Goiffon
cd170be44e 💡 Add UIBlock::Get*FilesRelPaths PHPDoc to indicate consumer 2021-03-17 18:22:44 +01:00
Stephen Abello
ecc9733623 N°3530 Correctly place the popup and limit its height 2021-03-17 17:35:16 +01:00
Stephen Abello
bab2febb24 N°3530 Replace hardcoded newsroom message indicator and add tooltip when menu is collapsed 2021-03-17 17:35:16 +01:00
Pierre Goiffon
610ff6494a Fix typo 2021-03-17 17:06:44 +01:00
Molkobain
be4012ea5d Fix missing images for jQuery treeview lib 2021-03-17 16:44:41 +01:00
Molkobain
7fec31e775 PHPDoc 2021-03-17 16:05:33 +01:00
BenGrenoble
52a939578c N°3814 add DashboardMenuNode delta if_exists in datamodel.itop-config-mgmt.xml 2021-03-17 15:51:55 +01:00
odain
8fce088e6f Merge branch 'support/2.7' into develop 2021-03-17 15:26:19 +01:00
Molkobain
5452286d8d Fix utils::GetClassesForInterface() not working on Windows env. (courtesy from @Steffunky) 2021-03-17 13:13:57 +01:00
Pierre Goiffon
50fc7f753e N°3566 Migrate Hub Connector land.php
* add html allowing to create send request
* change popup positionning (setup container was resized in 3.0.0 from 600px to 800px, with different padding/borders in children boxes)
2021-03-17 11:02:11 +01:00
Pierre Goiffon
8c2d54e6d3 🎨 code format : Hub connector land.php 2021-03-17 11:02:11 +01:00
Stephen Abello
a8ede8b857 N°3524 Add keyboard shortcuts to global actions 2021-03-17 11:00:16 +01:00
Stephen Abello
8dd8f98b61 Migrate method to get classes implementing specified interface to utils 2021-03-17 10:57:26 +01:00
Stephen Abello
fac6d1741e Allow inputs to be disabled and readonly 2021-03-17 10:57:26 +01:00
Stephen Abello
6b6db02567 Fix UIblock class extending interface collection 2021-03-17 10:57:26 +01:00
Molkobain
2a1b58e2c1 Deprecated old history APIs 2021-03-17 10:30:46 +01:00
Molkobain
19d61300bb Object details: Fix object class displayed as code instead of label 2021-03-17 10:10:22 +01:00
Molkobain
599c838fd9 Fix code highlighting instantiation for async (XHR) markup 2021-03-17 10:07:24 +01:00
Molkobain
b97e2839c5 N°3531 - Activity panel: Restore possibility to load extra history entries asynchroniously 2021-03-17 10:07:24 +01:00
Molkobain
190ac1a65a Fix tooltips instantiation for async (XHR) markup 2021-03-17 10:07:23 +01:00
Molkobain
6bc2d241fd Activity panel: Rename controller's method 2021-03-17 10:07:23 +01:00
acognet
a15903b5ef N°3823 - Error on "Header with statistics dashlet" with autorefresh and filter on organization 2021-03-17 09:57:03 +01:00
bruno-ds
91fc2d2e2b N°3671 - reformat tests 2021-03-17 08:46:41 +01:00
Pierre Goiffon
2432ff77a3 💡 More details in PHPDoc for \utils::RealPath 2021-03-17 08:34:25 +01:00
Eric
0da945ee29 N°3536 - Dashboard: Finish integration of in the TopBar 2021-03-16 18:28:18 +01:00
Molkobain
d2f6ac5015 Activity panel: Refactor to use the new JsonPage and a dedicated controller for more readability 👌 2021-03-16 16:40:34 +01:00
Molkobain
0d7302d530 JsonPage: Overload constructor to avoid passing a title 2021-03-16 16:40:34 +01:00
acognet
f02c8e94d7 Add comment on code 2021-03-16 14:17:42 +01:00
acognet
1aeee8b671 functions MakeForSelect and MakeForSelectWithLabel placed in SelectUIBlockFactory 2021-03-16 14:17:42 +01:00
Molkobain
4bcf03c6a1 Activity panel: Fix only showing the first of multiple edition in a linked set 2021-03-16 11:02:29 +01:00
Eric
7c8349f4f5 N°3804 - auto refresh on group by dashlet (and dashlet badge) lost user preferences on showing obsolete data 2021-03-16 10:25:18 +01:00
odain
d229e08f02 prepare iTop release 2.7.4 2021-03-16 09:00:06 +01:00
odain
168d3c5b75 fix ci after merge from branch 'feature/3588-precompil-fix' 2021-03-16 08:46:48 +01:00
Molkobain
0d020bb706 Fix dashboard editor SCSS classes 2021-03-15 20:08:22 +01:00
Molkobain
5e5277f38e N°3534 - Dashboard: Add missing HTML meta data 2021-03-15 20:08:22 +01:00
vdumas
11fb507df3 N°3822 - Datamodel: caselogs reordering for UserRequest and Incident 2021-03-15 19:15:05 +01:00
odain
b5adb2e82b N°3671: fix and make test more lisible 2021-03-15 19:01:09 +01:00
vdumas
d68e208325 N°3821 - UserRequest:OnInsert in full ITIL calls the parent's method 2021-03-15 17:56:18 +01:00
odain
3afc4e8185 Merge branch 'feature/3588-precompil-fix' into develop 2021-03-15 17:44:10 +01:00
vdumas
85935eb5fd N°3274 - Add "Service family" menu in Service Management for Providers 2021-03-15 17:16:52 +01:00
odain
fcbb691c0a fix tests 2021-03-15 16:25:57 +01:00
BenGrenoble
20c6b72a0c N°3440 Fix Known Error Banner. 2021-03-15 16:21:19 +01:00
odain
9abd8eb223 fix merge 2.7.4 2021-03-15 16:06:50 +01:00
odain
eacdfa4088 Merge branch 'support/2.7' into develop 2021-03-15 16:06:20 +01:00
Molkobain
a15cc8718e N°3626 - Remove Attachment class from the "quick create" autocomplete 2021-03-15 15:56:36 +01:00
Molkobain
21321c0599 Fix regression introduced in 370c08cd 2021-03-15 15:48:37 +01:00
odain
386c90c601 N°3668 - URL direct error: renamed trust_proxies<-behind_reverse_proxy 2021-03-15 14:56:16 +01:00
Pierre Goiffon
fccc57458c N°3522 Fix IssueLog on Twig error in a Ajax context 2021-03-15 14:53:24 +01:00
Pierre Goiffon
8b47536835 N°3522 Handle twig errors nicely for AJAX calls
Whereas when called directly we are throwing an exception, in a Ajax context we are printing the error message and logging
2021-03-15 14:42:28 +01:00
odain
5d0c61178b N°3671 : persist absolute URL when setup context (force trustproxy enabled) 2021-03-15 14:34:56 +01:00
odain
3bcae734e5 N°3671 : persist absolute URL when setup context (force trustproxy enabled) 2021-03-15 12:27:05 +01:00
Molkobain
8dd96ea636 Copyright year bump 2021-03-15 09:29:45 +01:00
Molkobain
04d7980789 N°3657 - Replace calls to deprecate jQuery methods (".keyup(callback)" to ".on('keyup', callback)") 2021-03-15 09:29:26 +01:00
Molkobain
370c08cd68 N°3657 - Replace calls to deprecate jQuery methods (".click(callback)" to ".on('click', callback)") 2021-03-15 09:29:09 +01:00
Molkobain
e143fa5e33 N°3657 - Replace calls to deprecate jQuery methods (".submit(callback)" to ".on('submit', callback)") 2021-03-15 09:28:44 +01:00
Molkobain
614ba55819 N°3657 - Replace calls to deprecate jQuery methods (".blur(callback)" to ".on('blur', callback)") 2021-03-15 09:28:22 +01:00
Molkobain
f1613c62a4 N°3657 - Replace calls to deprecate jQuery methods (".bind" and ".unbind") 2021-03-15 09:28:06 +01:00
Molkobain
ca7a9bdbe2 N°2847 - Fix (raw) text field size & style 2021-03-13 18:16:27 +01:00
Molkobain
1caa9a3e15 Code format on inputs 2021-03-13 18:01:53 +01:00
Molkobain
c3140c2db3 Copyright year bump 2021-03-12 18:48:46 +01:00
Molkobain
ebada5e866 N°2844 - Document file: Fix object details not displaying correctly 2021-03-12 18:32:56 +01:00
Molkobain
0902f2c32b Update TODO 2021-03-12 18:04:11 +01:00
Molkobain
dfa85df39c Set attribute: Fix items display 2021-03-12 16:31:06 +01:00
Molkobain
d175bca3cc Set attribute: Fix field always displayed in error in edition
Note: As mentioned in the commit introducing this, this attribute type does not fit well in the error reporting mechanism
2021-03-12 14:21:19 +01:00
Molkobain
1aa61fe29b N°3748 - Deprecation: old tooltip libs in the backoffice and the portal 2021-03-12 11:15:04 +01:00
Molkobain
c1eee655dd Activity panel: Improve debug messages 2021-03-12 10:35:06 +01:00
Molkobain
6b8acc4b2f Sample data: Add Lotfi and Nicolas, welcome aboard! 👋 2021-03-12 10:24:34 +01:00
Molkobain
4ab6ace9fd Sample data: Format code 2021-03-12 10:20:32 +01:00
Molkobain
ed04836a8d Sample data: Change Stephen's avatar and name 2021-03-12 10:06:06 +01:00
Molkobain
3e92e6675d Sample data: Fix persons' email 2021-03-12 09:57:04 +01:00
Molkobain
2710f945d8 PHPDoc 2021-03-12 09:48:35 +01:00
Molkobain
bdc8fe9db3 Session messages: Introduce severity constants 2021-03-12 09:46:34 +01:00
Molkobain
33d72890fa Fix warning session message colors 2021-03-12 09:35:54 +01:00
Molkobain
59b5092e3b Login: Fix forms' inputs width (reset pwd & change pwd) 2021-03-12 09:21:55 +01:00
Molkobain
9daaf4a9f7 Code cleanup 2021-03-12 09:02:29 +01:00
Molkobain
40d002d9e8 N°3649 - Activity panel: Add notifications 2021-03-12 09:02:29 +01:00
Molkobain
3380b8896a Fix UserRights::GetUserInitials() for login starting with a lower case letter 2021-03-12 09:02:29 +01:00
Molkobain
c1564fdcc6 Activity panel: Log debug message if an entry could not be created from a CMDBChangeOp 2021-03-12 09:02:29 +01:00
Molkobain
d7bab12542 Activity panel: Improve OQL to not process case log entries twice 2021-03-12 09:02:29 +01:00
Pierre Goiffon
21a6be1bda 🔊 N°3811 UI.php : update error log
We had 2 catch blocks that were doing almost the same thing... But the last IssueLog call !

Now we have only one catch block, and the last IssueLog call is for Debug instead of Error : ErrorPage::error is already doing IssueLog::Error, so those extra info are now logged only for debugging purpose (in the 'console' channel)
2021-03-11 15:21:32 +01:00
Pierre Goiffon
e49b0db58d N°3522 Handle twig errors nicely
Revert what was done in c5021721 : I then added a panel to be rendered instead of throwing an Exception. This was done because the exception was displayed in a blank page... But this was caused simply by a missing `use Exception` !!

So now we're back at throwing an exception, so that the standard mechanism for throwing the error page is triggered.

Handling Twig recursion is mandatory, and done in the beginning of the \Combodo\iTop\Application\TwigBase\Twig\TwigHelper::RenderTemplate catch block to avoid adding on each stack level a useless exception.
2021-03-11 15:20:41 +01:00
acognet
4932a2cfbd N°2284 - Manage button Clear and add placeholder 2021-03-11 10:41:41 +01:00
acognet
e376f13263 N°3787 - Use data loader for auto refresh 2021-03-11 10:40:04 +01:00
acognet
fe5d5f3869 N°3648 - FIx size of DataTable 2021-03-11 10:32:52 +01:00
acognet
710e6e49a8 Dict entries 2021-03-11 10:29:14 +01:00
acognet
ba1cc00d03 N°3787 - Use data loader for auto refresh 2021-03-11 10:07:48 +01:00
Pierre Goiffon
bd7837b14c N°3566 Hub connector migrate to UiBlock : launch page
Reset some iTop core styles to get back the previous rendering
Also use iTop classes for title and buttons
2021-03-10 18:15:14 +01:00
Pierre Goiffon
3ef307fada 🎨 HubConnectorPage : code formatting 2021-03-10 17:17:28 +01:00
Pierre Goiffon
979e73e376 N°3566 Hub connector migrate to UiBlock : deployed extensions page
Add Hub icon to the button 🤩
2021-03-10 17:02:27 +01:00
Pierre Goiffon
fe70db9af6 💡 PHPDoc : replace link by see
Thanks @Molkobain !
I wrote to much JavaDoc where it is the opposite :/
PhpDoc ref :
https://docs.phpdoc.org/3.0/guide/references/phpdoc/index.html
2021-03-10 15:59:33 +01:00
odain
842e8f9e01 php doc 2021-03-10 15:32:44 +01:00
Pierre Goiffon
3501d39877 💡 N°3522 PHPDoc 2021-03-10 14:41:03 +01:00
Stephen Abello
233efa43c7 N°3560 Fix Impact analysis export popup menu 2021-03-10 11:24:03 +01:00
Stephen Abello
725e635016 N°3560 Fix Impact analysis focus indicator 2021-03-10 11:23:59 +01:00
Pierre Goiffon
a948c3c54e N°3566 Hub connector migrate to UiBlock : deployed extensions page
Hub button is back between fieldsets. it is also now primary and has a specific css class applied
2021-03-10 11:15:42 +01:00
Pierre Goiffon
a763ecbfc5 N°3566 Hub connector migrate to UiBlock : deployed extensions page
Change layout when no Hub extension present
Use warning alert for the no extension message, split the corersponding dict key
2021-03-10 11:07:37 +01:00
Pierre Goiffon
fab1c0bcf8 N°3566 Hub connector migrate to UiBlock : deployed extensions page
Notable changes :
* extensions lists were originally UL/LI but I replaced them with Alert neutral, collapsed by default
* the "Get extensions from iTop Hub..." button was located between both fieldset. I moved it on top of the page, just below page title
2021-03-09 17:53:59 +01:00
odain
377120aead fix merge 2021-03-09 15:48:34 +01:00
odain
577ae34b50 Merge branch 'support/2.7' into develop 2021-03-09 15:40:30 +01:00
Pierre Goiffon
fa7d316dbf N°3803 Fix error when opening dashboard page with non admin user 2021-03-09 12:32:18 +01:00
odain
52cd4f7c5e N°3788 - timeout/excessive duration during MTP - fix PostDbCreation 2021-03-09 11:44:25 +01:00
Pierre Goiffon
570b012000 N°3750 fix body data-ready-scripts attribute not visible
Was using .data() instead of .attr :(
Was already changed in 8efc688f for other attributes, but I forgot this one :/
2021-03-09 11:16:21 +01:00
Pierre Goiffon
9f06e82171 🎨 N°3566 Hub connector : code format 2021-03-09 09:56:06 +01:00
odain
995619af9b N°3788 - timeout/excessive duration during MTP - increase timeout from 5 to 30s 2021-03-09 08:27:33 +01:00
odain
c842162fe2 N°3788 - timeout/excessive duration during MTP 2021-03-09 08:13:57 +01:00
acognet
0f3df3a436 N°3746 - Fix CSV export 2021-03-08 17:00:41 +01:00
Pierre Goiffon
c5021721c6 N°3522 Display error alert for twig rendering errors 2021-03-08 16:41:58 +01:00
Pierre Goiffon
1a3e8c59c7 💡 Update PHPDoc for enums in \Combodo\iTop\Renderer\BlockRenderer::RenderJsInline 2021-03-08 16:41:58 +01:00
Pierre Goiffon
210051c12d 💡 Update deprecated comment in SetupPage
Just removed the unnecessary "since"
See https://docs.phpdoc.org/latest/guide/references/phpdoc/tags/deprecated.html#deprecated
2021-03-08 16:41:58 +01:00
Pierre Goiffon
998c3208f6 RenderAllUiBlocks : new alert collapsible but not closable 2021-03-08 16:41:57 +01:00
Stephen Abello
9c8b2328db N°3578 Display all attributes without pagination in datamodel viewer table 2021-03-08 16:15:18 +01:00
Stephen Abello
b300b76783 Add display options to static datatables 2021-03-08 16:15:17 +01:00
Stephen Abello
ef871fba7f N°3515 Update some classes icon to match 3.0 UI 2021-03-08 16:15:17 +01:00
Eric
1f90ccdb1f PHPDoc 2021-03-08 15:00:40 +01:00
odain
83f99642e0 N°3793 - Cleanup of orphan CMDBChange can hang the setup 2021-03-08 11:38:20 +01:00
acognet
5f217d75bb N°3746 - Migrate modal to new UIBlock system 2021-03-05 17:43:45 +01:00
bruno-ds
ae6a264d6d N°3671 - fix typo in HTTP header name 2021-03-05 16:57:03 +01:00
Stephen Abello
a4d8fb0b4c Fix method name 2021-03-05 16:33:59 +01:00
Stephen Abello
fe0f57c00d Correct type hint and update PhpDoc 2021-03-05 16:33:59 +01:00
acognet
57bd868580 N°3746 - Migrate modal to new UIBlock system 2021-03-05 14:57:51 +01:00
acognet
e1b50c1dcd N°2844 - Fix Title display 2021-03-05 14:57:51 +01:00
Molkobain
256c01dff4 Panel: Fix panel icon being wrongly displayed as medallion when within a panel with in fact a medallion icon 2021-03-05 12:53:03 +01:00
Molkobain
085855cdc5 Revert fix for tooltips in AjaxPage as pages with "application/json" content type actually return the HTML templates... 🤦‍♂️(eg. breaks the autocomplete results)
- Fix only for ext. key modal
2021-03-05 12:40:19 +01:00
Molkobain
bbbc5e966b Fix tooltips not activated in AjaxPage 2021-03-05 12:33:24 +01:00
Molkobain
18d4685007 Code format 2021-03-05 12:29:57 +01:00
Stephen Abello
7f1b1ca662 N°3515 Update some classes icon to match 3.0 UI 2021-03-05 11:59:50 +01:00
Molkobain
b54918bb5e N°3649 - Fix object form display in modals 2021-03-05 11:57:40 +01:00
Molkobain
56b27897cf AjaxPage: Fix tabs handling UIBlocks incorrectly (put at the end of the flow, not in the tab container)
Note: Big part of the code was duplicated and still is... This should be but in a trait maybe to avoid this kind of error in the future?
2021-03-05 11:51:20 +01:00
Molkobain
1beae731bf Advanced search: Fix class selection dropdown displayed in raw HTML 2021-03-05 10:58:00 +01:00
Molkobain
30b691243b Panel: Fix type declaration for title and subtitle 2021-03-05 10:57:15 +01:00
Molkobain
4cb9cc7d68 Panel: Refactor title as a block container (like subtitle) 2021-03-05 10:53:24 +01:00
Molkobain
fc98bc781b Panel: Add SetSubtitleBlock() 2021-03-05 10:16:16 +01:00
Molkobain
a1b6f09115 Panel: Code formatting 2021-03-05 10:15:39 +01:00
Molkobain
642bb8b131 Object details: Fix "Call to a member function GetMainColor() on null" 2021-03-05 09:50:44 +01:00
Molkobain
1eae57a401 Code cleanup 2021-03-05 09:50:43 +01:00
acognet
5a18bfbd6f N°2844 - Fix Title display 2021-03-05 09:38:29 +01:00
Pierre Goiffon
bedc997c3f 📦 Update setup.css 2021-03-05 09:36:26 +01:00
Stephen Abello
fd991c951e Missing class import in portal's attachments 2021-03-05 09:27:11 +01:00
bruno-ds
a06bf6ea7c coding convention (thanks @molkobain) 2021-03-05 09:20:04 +01:00
acognet
45beda3f26 N°2284 - Add tooltips on buttons in select and autocomplete box 2021-03-05 09:17:50 +01:00
acognet
7b4b9fb68c N°2284 - Add tooltips on buttons in select and autocomplete box 2021-03-05 09:17:08 +01:00
Molkobain
71db321570 N°3792 - Deprecate "buttons_position" config. param. 2021-03-04 19:27:25 +01:00
Molkobain
29bf4561e5 Change default color for classes (global pass will be done during beta) 2021-03-04 18:55:02 +01:00
Molkobain
377eb36509 Update PHPDoc and add todo for R&D review 2021-03-04 18:29:06 +01:00
Molkobain
2afbae9c89 Update autoloaders 2021-03-04 18:16:45 +01:00
Molkobain
1e64e0c741 Panel: Remove PanelEnhanced as the Panel now has all the necessary options 2021-03-04 18:16:45 +01:00
Molkobain
3bc130c802 Fix object details' panel highlight color 2021-03-04 18:00:28 +01:00
Molkobain
99295634a6 Migrate abstract class creation page 2021-03-04 18:00:27 +01:00
Molkobain
1d7bc7c8f7 N°2844 - Refactor Panel to include a configurable header
- TitleForObjectDetails no longer exists, use the ObjectDetails's properties instead
2021-03-04 18:00:26 +01:00
Molkobain
4e22906180 Move vertical tab container SCSS into blocks integration partial 2021-03-04 17:59:34 +01:00
Molkobain
9bdccb0fb3 N°2847 - Add method to add several blocks at once to a content area (tUIContentAreas) 2021-03-04 17:59:34 +01:00
Molkobain
cf956099ac N°2844 - Add iUIContentBlock::HasSubBlocks() helper 2021-03-04 17:59:34 +01:00
Molkobain
101a100c1f N°2844 - Toolbar: Remove margins from SCSS partial as they will be part of the block integration (post beta) 2021-03-04 17:59:34 +01:00
Molkobain
824fc19323 Code format 2021-03-04 17:59:33 +01:00
Molkobain
6c20f74b90 Code cleanup 2021-03-04 17:59:33 +01:00
Eric
b4ce1b7ae6 N°3790 - Class selection not working on UniversalSearch and Tags Configuration pages 2021-03-04 17:21:50 +01:00
Eric
e397cee40d N°3785 - Use DownloadPage to download documents 2021-03-04 17:15:25 +01:00
Eric
e3b7914759 N°3785 - Use DownloadPage to download documents 2021-03-04 17:00:17 +01:00
Pierre Goiffon
8efc688ff8 N°3750 data-input-type Ajax refresh : use .attr() only
This attributes value must be get using `.attr()` only, and never .data()
This is what we adopted in the rest of the application.

The `.data()` method must only be used when dealing with large data structure. When having only strings like here, it is OK to store them in the DOM
2021-03-04 16:57:39 +01:00
Eric
622b486d1f N°3785 - Use DownloadPage to download documents 2021-03-04 16:37:33 +01:00
Stephen Abello
226c301d92 N°3722 Hide field description tooltip if it has the same content as field label 2021-03-04 16:32:46 +01:00
Stephen Abello
61a7822db3 N°3560 Only zoom into impact analysis when it has mouse focus 2021-03-04 16:13:14 +01:00
Stephen Abello
9b15750b02 N°3560 Fix Impact analysis altering tabs height 2021-03-04 16:13:14 +01:00
Stephen Abello
64754f982c N°3560 Fix Impact analysis size flickering when refreshing 2021-03-04 16:13:13 +01:00
Pierre Goiffon
675dcda86d N°3750 Fix data-input-type modification not visible in the DOM 2021-03-04 15:52:48 +01:00
Pierre Goiffon
5748ea3a74 N°3750 Fix data-input-type refreshed to "" for autocomplete
The $sInputType var init was commited in 6a5c4788 but removed by accident in b2050a88
2021-03-04 15:44:40 +01:00
Eric
5ccd229092 N°3648 - Fix "Configure this list..." 2021-03-04 15:37:13 +01:00
Stephen Abello
88e502ad7a N°3706 Unescape fieldset labels 2021-03-04 14:46:02 +01:00
acognet
72f6305320 N°3648 - FIx click on link in datatable and display of buttons in search form 2021-03-04 11:47:49 +01:00
Stephen Abello
45981c1941 N°3571 Handle errors in Audit Category and Audit Rule in audit page 2021-03-04 11:42:12 +01:00
Stephen Abello
4d660cc3c8 N°3578 Migrate Datamodel viewer to new style 2021-03-04 10:55:23 +01:00
Stephen Abello
f231fa47a0 Add max height to panelenhanced icon 2021-03-04 10:55:23 +01:00
Stephen Abello
40ceccda46 Add jquery treeview style to vendors directory 2021-03-04 10:55:23 +01:00
Stephen Abello
866d6e829b Allow to add Html to side panel block 2021-03-04 10:55:23 +01:00
Stephen Abello
6d7d6e9531 Hide icon in Panel enhanced if no icon is provided 2021-03-04 10:55:22 +01:00
Stephen Abello
ad0fdfe921 Allow Select options to be disabled 2021-03-04 10:55:22 +01:00
bruno-ds
bb8d4a92cb fix an indentation problem (thanks @Hipska) 2021-03-04 09:56:05 +01:00
bruno-ds
1429792690 N°3668 - fix an improper redirection to the homepage when iTop is behind a reverse proxy 2021-03-04 09:39:48 +01:00
bruno-ds
1f26b59d90 N°3671 - add an API endpoint (it will be used by N°3668 and N°3760) + some code cleanup asked by @molkobain 2021-03-04 09:32:13 +01:00
Pierre Goiffon
c2c69d9f43 💡 N°3750 PHPDoc 2021-03-04 09:32:02 +01:00
Molkobain
133e5003cd Reorder some config. params. 2021-03-03 16:26:08 +01:00
Molkobain
f97eb794ba Rename config. param. "display_menus_count" to "navigation_menu.show_menus_count" 2021-03-03 16:24:49 +01:00
Molkobain
7a8a3cbce8 N°3649 - Activity panel: Show confirmation dialog when leaving page with draft entries 2021-03-03 15:59:12 +01:00
acognet
2fb8f21b58 Fix Css problems 2021-03-03 12:01:37 +01:00
bruno-ds
7b093a6bba N°3671 - app_root_url: handle reverse proxies during the setup and preserve existing configuration during an upgrade. 2021-03-03 11:55:18 +01:00
acognet
c631f28e53 N°3528 - Finish silo selection migration - fix css of button 2021-03-03 10:59:24 +01:00
Stephen Abello
66909ce19a Fix typo in last partial import 2021-03-03 10:40:07 +01:00
Stephen Abello
eca3782bda Fix typo in SCSS partial name 2021-03-03 10:27:38 +01:00
Stephen Abello
a5c2e20a02 N°3570 Migrate Synchro replica page 2021-03-03 10:22:52 +01:00
Stephen Abello
05fff3b8aa Fix external key hyperlinks in datatables when outside of /pages directory 2021-03-03 10:22:52 +01:00
Stephen Abello
175aebaa14 N°3570 Migrate Synchro data source page 2021-03-03 10:22:52 +01:00
Molkobain
cf4e023695 Fix SCSS partial name 2021-03-03 10:12:34 +01:00
acognet
1d58e7d6f8 N°3634 - Remove orange arrow 2021-03-02 18:36:51 +01:00
Molkobain
282842fa2c Object details: Fix image being squashed 2021-03-02 18:30:02 +01:00
Molkobain
748a22c728 Fix SCSS compile error due to wrong import 2021-03-02 18:30:02 +01:00
acognet
bd47ca34df N°3634 - Add count for results 2021-03-02 17:22:11 +01:00
acognet
e27b6b2dde N°3785 - Fix corrupted attribute file on download 2021-03-02 16:39:51 +01:00
acognet
9a7074bcba N°2284 - Fix manual clear of autocomplete field. 2021-03-02 16:39:50 +01:00
Stephen Abello
bedd6b5fcc N°3571 Forgot to commit icons (again 🤦) 2021-03-02 16:28:24 +01:00
Stephen Abello
0638f79c2b Remove changes commited with abcf73f that were only meant to test obsolete/archived behavior 2021-03-02 16:00:18 +01:00
Stephen Abello
abcf73f233 N°2844 N°3570 Bring back Synchronized, Obsolete and Archived tags next to object name 2021-03-02 15:56:31 +01:00
Molkobain
52113233b8 N°2844 - Restore table style on final page of an object deletion 2021-03-02 14:50:35 +01:00
bruno-ds
9cbaced1f3 Merge remote-tracking branch 'origin/support/2.7' into develop
# Conflicts:
#	core/config.class.inc.php
#	datamodels/2.x/itop-core-update/view/SelectUpdateFile.html.twig
#	datamodels/2.x/itop-core-update/view/SelectUpdateFile.ready.js.twig
#	setup/setuputils.class.inc.php
#	test/setup/SetupUtilsTest.php
2021-03-02 14:34:19 +01:00
Pierre Goiffon
77d4613bd8 N°3750 Allow to detect when ready scripts are done processing
In iTop 3.0.0 there are sometimes lots of scripts launched after domReady, so we needed something to know when those scripts are done !
2021-03-02 12:18:45 +01:00
Pierre Goiffon
225c176f71 N°3750 data-input-type : change XHR detection method
I added WebPage::IsAjaxPage, but this wasn't a good idea as XHR isn't really related to the Page impl used !
Instead we're now using the new method \utils::IsXmlHttpRequest which is a copy of \Symfony\Component\HttpFoundation\Request::isXmlHttpRequest
Many thanks @Molkobain !
2021-03-02 12:13:27 +01:00
Stephen Abello
a850d3b67c N°3571 Fix audit errors title 2021-03-02 12:09:29 +01:00
Stephen Abello
74a434ab04 N°3571 Migrate audit page to new style 2021-03-02 12:04:56 +01:00
Stephen Abello
f8e0a28134 N°3650 Datatable within panels take all available space 2021-03-02 12:04:45 +01:00
Stephen Abello
d7d156303f Fix static datatables width not using available space 2021-03-02 12:04:32 +01:00
Stephen Abello
c30b1dd379 Add padding to title block 2021-03-02 12:02:09 +01:00
Stephen Abello
2daa1d93e9 Add style to block csv 2021-03-02 12:02:09 +01:00
Stephen Abello
556388f2f4 Delete unused scss file 2021-03-02 12:02:09 +01:00
Stephen Abello
752508b724 Make panels collapsible 2021-03-02 12:02:09 +01:00
Molkobain
cf72c2ef8f N°3649 - Activity panel: Add conf. param. 'activity_panel.entry_form_opened_by_default' as a default value for the user pref. 2021-03-02 11:33:52 +01:00
Molkobain
3b40728701 N°3649 - Activity panel: Add user pref. to define whether the entry form should be opened by default 2021-03-02 09:32:06 +01:00
Molkobain
e3015a284b N°3629 - Activity panel: Add possibility to close the panel 2021-03-02 09:32:06 +01:00
Molkobain
1cdedec33d Portal: Fix typo in log messages 2021-03-02 09:32:06 +01:00
odain
d4607ee815 N°3065 - Failed enum comparison when values contains parenthesis : add a warning 2021-03-02 07:33:36 +01:00
acognet
291e1d0c30 N°3634 - Feedback alpha 3.0 : finish list - Fix css 2021-03-01 18:19:23 +01:00
acognet
c2dc2c6100 N°2284 - display results on first click on down arrow for autocomplete 2021-03-01 18:19:23 +01:00
acognet
65dbaf427c N°2284 - Fix select when there is only one option 2021-03-01 18:19:23 +01:00
acognet
0e146bf341 N°3634 - Feedback alpha 3.0 : finish list - add menu 2021-03-01 18:19:23 +01:00
acognet
fbb4455250 N°3634 - Feedback alpha 3.0 : finish list - order of buttons 2021-03-01 18:19:23 +01:00
acognet
b2050a8895 N°3648 - Feedback alpha 3.0 : finish relation edition - tabulation 2021-03-01 18:19:23 +01:00
acognet
d601e9608c N°3746 - Migrate modal to new UIBlock system 2021-03-01 18:19:22 +01:00
odain
5c0e92d51a N°3065 - Failed enum comparison when values contains parenthesis 2021-03-01 17:06:49 +01:00
Pierre Goiffon
c679318d16 N°3750 data-input-type : refresh attribute on AJAX refresh 2021-03-01 16:48:12 +01:00
bruno-ds
cd4b3fdaab N°3764 - fix CI 2021-03-01 16:27:40 +01:00
bruno-ds
0030d5c2b8 N°3764 - add transactions_gc_threshold in order to tune CSRF token GC load 2021-03-01 15:30:40 +01:00
bruno-ds
95a0efedcf N°3728 - security hardening 2021-03-01 15:28:34 +01:00
Pierre Goiffon
7a8a78d348 🙈 Add README files to exclude for build 2021-03-01 11:44:37 +01:00
acognet
cebbc215d7 N°3746 - Migrate modal to new UIBlock system 2021-03-01 09:07:09 +01:00
Pierre Goiffon
1060c0ca94 N°3750 Set input type for linkedset 2021-03-01 08:58:36 +01:00
Eric
fb321fa034 Fix ContextTag usage, and add some explanations on the declaration of ContextTag 2021-02-26 16:47:02 +01:00
Eric
925e45782c Fix indexation script and protection for concurrency with cron 2021-02-26 14:05:26 +01:00
Pierre Goiffon
6a5c47887a N°3750 New data-input-typeattribute to fields container
This will allow easiest DOM manipulation in BeHat tests !
2021-02-26 12:16:29 +01:00
bruno-ds
13a1d32f56 N°3453 - portal export header fields are now localized 2021-02-26 11:47:34 +01:00
Pierre Goiffon
267f3ec7ca 🎨 \UIExtKeyWidget 2021-02-26 11:13:54 +01:00
Pierre Goiffon
9907e4af58 Fix TODO 3.0 2021-02-26 11:01:41 +01:00
Stephen Abello
a505902ed5 Add string subtitle to panels 2021-02-26 10:27:49 +01:00
Stephen Abello
25c840e036 Rename subtitle block variable in PanelEnhanced 2021-02-26 10:27:49 +01:00
Pierre Goiffon
35155e4b7a 💡 N°3065 comments modifications 2021-02-26 10:06:29 +01:00
Eric
da4cf8b661 N°3739 - Change dashboard menu entries (Fix dashboard edition) 2021-02-26 09:33:56 +01:00
Eric
77710f1613 Revert "#1946 Fix Twig templates logging too much"
This reverts commit 2763b991
2021-02-25 17:57:39 +01:00
Stephen Abello
a7fde78105 Fix unmigrated Attachment constant in portal 2021-02-25 17:45:46 +01:00
Eric
39f30a059b N°3739 - Change dashboard menu entries 2021-02-25 16:29:25 +01:00
vdumas
a6f4b30004 N°3735 - New method AddValue on DBObject for Designer users 2021-02-25 16:09:21 +01:00
Eric
2763b99142 #1946 Fix Twig templates logging too much 2021-02-25 14:44:16 +01:00
Stephen Abello
4ce3631e4b Rename some vendors variables to keep consistency 2021-02-25 10:09:06 +01:00
Stephen Abello
7ed906f1c3 Fix medallion image class name 2021-02-25 10:09:05 +01:00
Stephen Abello
1a43d5afd7 Move blocklist and medallion icon integration in a dedicated file 2021-02-25 10:09:05 +01:00
Molkobain
db0c796218 Activity panel: Fix click on "compose" button doing nothing when on a "read-only" case log tab
Note: The behavior is not implemented yet, but it's the following the same path as when the user is on the "activity" tab
2021-02-25 09:52:18 +01:00
Molkobain
1c7f72d1f8 Activity panel: Fix typos (thanks @jbostoen) 2021-02-25 09:52:18 +01:00
Molkobain
5770000e65 Caselog entry form: Fix event name 2021-02-25 09:52:18 +01:00
Molkobain
ad7b78b871 Activity panel: Set focus in input when clicking on "Compose" button 2021-02-25 09:52:17 +01:00
Pierre Goiffon
4d78f4b535 N°3750 Fix syntax for array key
Thanks @Molkobain !
2021-02-24 20:09:32 +01:00
Pierre Goiffon
30cddeae2d N°3750 Fix no data-input-id attribute for status attribute 2021-02-24 18:42:59 +01:00
bruno-ds
db13c105ad N°3473 - PHPdoc
as requested by @piRGoif
2021-02-24 17:38:54 +01:00
Pierre Goiffon
c8911f1fa9 N°3750 Add data-input-id to field container
This will allow easiest DOM manipulation in BeHat tests
2021-02-24 17:19:55 +01:00
Molkobain
8295920c3c Preferences: Update translations 2021-02-24 17:01:12 +01:00
bruno-ds
2276539f24 N°3430 - code cleanup 2021-02-24 16:50:14 +01:00
bruno-ds
9b7cd20d47 N°3473 - security hardening 2021-02-24 16:50:13 +01:00
Molkobain
a284087460 Impact analysis: Use new tooltip API to allow interactions with their hyperlinks 2021-02-24 16:23:35 +01:00
Molkobain
c5a6f441aa CombodoTooltip: Improve API
- Add "data-tooltip-interaction-enabled" to allow user to interact with the tooltip content (select, click). Possible values "true"|"false"
- Add "data-tooltip-append-to" to choose to which element the tooltip should be append. Possible values "body"|"parent"|<JQUERY_SELECTOR>
2021-02-24 16:17:12 +01:00
Molkobain
9dc0a052bf Activity panel: Fix hard-coded localized sentence 2021-02-24 14:55:19 +01:00
Stephen Abello
61b5a3924e N°2844 Migrate Impact Analysis to new design 2021-02-24 14:46:17 +01:00
Stephen Abello
99cb5ffb37 Add sliders to jqueryui style 2021-02-24 14:46:17 +01:00
Stephen Abello
e0ae2706de Migrate jQuery multiselect style to 3.0 design 2021-02-24 14:46:17 +01:00
Stephen Abello
8dfdc4761e N°2844 Fix Impact Analysis pdf export 2021-02-24 14:46:16 +01:00
Molkobain
9723a346b6 Activity panel: Change "case log" to "log" in dictionary (fits best the general cases, not just the helpdesk world) 2021-02-24 14:26:44 +01:00
Molkobain
1667a0a6df Fix spacing / sizing for "obsolescence" icon on external keys 2021-02-24 13:28:39 +01:00
Molkobain
cdfdfc75ab Preferences: Regroup preferences relative to the UI into a single panel 2021-02-24 13:10:34 +01:00
bruno-ds
e1d644c33b Merge remote-tracking branch 'origin/support/2.7' into support/2.7 2021-02-24 12:06:40 +01:00
bruno-ds
c601082a5e 3548 - disable core update if a file integrity problem is detected 2021-02-24 12:05:11 +01:00
Molkobain
a33b1303d2 CombodoTooltip: Enable interaction with tootlip's content (selection, click, ...) 2021-02-24 11:23:56 +01:00
Molkobain
5836be7131 Fix unit test 2021-02-24 09:49:16 +01:00
Molkobain
6f40bb4c35 Change check level to "warning" in order to keep consistency with the others 2021-02-24 09:29:42 +01:00
Molkobain
56a1a82ec8 Fix typo 2021-02-24 09:00:33 +01:00
Molkobain
22ffb4ecee PanelFactory: Fix neutral panel default to color to proper constant 2021-02-23 19:39:23 +01:00
Molkobain
ad93d6dd41 N°3629 - Activity panel: Add "activity_panel.show_author_name_below_entries" config. param. to show the author friendlyname under the last entry 2021-02-23 15:24:20 +01:00
Molkobain
affb869116 Reformat parameter 2021-02-23 13:28:34 +01:00
Molkobain
fa39846cc8 N°3629 - Activity panel: Add "activity_panel.datetimes_reformat_limit" config. param. to define the limit after which all dates / times should be displayed in absolute format 2021-02-23 13:25:19 +01:00
Molkobain
3d4e63416f N°2847 - Title: Fix empty space on the left of the subtitle when no status 2021-02-23 13:11:56 +01:00
Molkobain
9586bd7dea N°3629 - Activity panel: Fix state attribute changes on a class without transition is now displayed as a "state change" instead of an "edit" 2021-02-23 13:05:52 +01:00
Molkobain
0f3eb53554 Update deprecation comment 2021-02-23 13:05:52 +01:00
Stephen Abello
c757b5051e Simplify medallion icon calls in cmdbabstract and fix an issue with notifications 2021-02-23 11:31:09 +01:00
Stephen Abello
fbe173444e Fix object details width when using vertical tabs 2021-02-23 11:26:46 +01:00
Stephen Abello
770d96cdec Fix medallion icon block scss variables 2021-02-23 11:23:21 +01:00
Stephen Abello
b0a1371122 Fix class icon being too big in displaybarerelations 2021-02-23 10:48:58 +01:00
Stephen Abello
defa1e40e1 Add medallion icon block 2021-02-23 10:48:58 +01:00
bruno-ds
c3cb4fbe75 Fix merge wrongfully performed
(thanks @molkobain & @piRGoif & @odain-cbd)
2021-02-23 10:24:49 +01:00
Molkobain
88f45a69b1 N°3649 - Activity panel: Show warning message when lock expired (/ was removed by an admin.) 2021-02-23 09:39:57 +01:00
Molkobain
1a44406d70 N°3649 - Activity panel: Fix compose button being under entries 2021-02-23 09:39:56 +01:00
Molkobain
837d1824b1 Code cleanup: Remove useless code 2021-02-23 09:39:56 +01:00
Molkobain
2bf23f0618 N°3629 - Activity panel: Fix case logs not saved during object creation 2021-02-23 09:39:56 +01:00
bruno-ds
26bbdc1a57 Merge remote-tracking branch 'origin/support/2.7' into develop
# Conflicts:
#	application/cmdbabstract.class.inc.php
#	application/utils.inc.php
#	dictionaries/en.dictionary.itop.core.php
#	dictionaries/fr.dictionary.itop.core.php
#	setup/setuputils.class.inc.php
2021-02-23 08:58:29 +01:00
Molkobain
933bddebe3 Image attribute: Migrate deprecated jQuery methods in JS widget 2021-02-22 16:25:55 +01:00
Molkobain
9c0966ff42 Image attribute: Add upload button 2021-02-22 16:23:45 +01:00
Molkobain
0b60079c07 Fix typo 2021-02-22 15:08:21 +01:00
Molkobain
083f50a5d4 Fix typo 2021-02-22 13:53:41 +01:00
Stephen Abello
c8ede0e8da Fix forced CombodoTooltip::InitAllNonInstantiatedTooltips instantiation when tooltip has already been instantiated 2021-02-22 13:42:28 +01:00
Stephen Abello
2b69ca2f04 Change da77439 events to use DataTables builtin events instead of custom ones 2021-02-22 13:37:35 +01:00
Molkobain
9bbec47976 Move tooltips JS helpers to dedicated class "CombodoGlobalToolbox => CombodoTooltip" 2021-02-22 13:02:52 +01:00
Molkobain
5bde218076 Code cleanup: Remove obsolete IE JS polyfills 2021-02-22 12:56:20 +01:00
Stephen Abello
a4a88cd63a Fix placeholder wrong nodes 2021-02-22 10:27:00 +01:00
Stephen Abello
da77439e1e Fix tooltips in datatables and add events to datatables init and draw actions 2021-02-22 09:51:12 +01:00
bruno-ds
241bd1cdeb N°3430 - code cleanup
- during the code review @dflaven preferred the reference rather than the return alternative
 - typo
2021-02-22 09:43:42 +01:00
Stephen Abello
f61ec3179a Placeholders now keep their aspect ratio even when displaying in large screen 2021-02-20 10:53:03 +01:00
Molkobain
147e240035 Code cleanup: Remove migrated SCSS rules 2021-02-19 22:17:58 +01:00
Molkobain
cc747ebef7 Move style properties to SCSS variables 2021-02-19 22:15:14 +01:00
Molkobain
5e86183d40 Fix email/phone attribute decoration's spacing (whole thing still needs rework though) 2021-02-19 22:12:02 +01:00
Molkobain
f04a5dbfef N°2844 - Fix image attribute display and editing 2021-02-19 22:01:51 +01:00
Molkobain
1c0177f711 Add possibility to force tooltip re-instantiation on CombodoGlobalToolbox.InitAllNonInstantiatedTooltips() 2021-02-19 20:53:05 +01:00
Molkobain
a1893a115f Tabs: Fix scrollable tab's skeleton on very wide screens 2021-02-19 19:23:29 +01:00
Molkobain
4a227c7ed2 Tabs: Fix scrollable tab's separator width on very large screen 2021-02-19 19:14:09 +01:00
Molkobain
5e21ec03cd Rename constants according to @steffunky 's advice (better DX) 2021-02-19 18:35:20 +01:00
Stephen Abello
ea502e9c81 Allow to set a customized placeholder for ajax tabs in scrollable mode 2021-02-19 17:38:47 +01:00
Molkobain
e5d8c885bc N°2844 - Object details: Refine object's name, class and status size and placement 2021-02-19 16:21:35 +01:00
Stephen Abello
7327025aac N°3670 Move dictionary entry back to module 2021-02-19 14:42:15 +01:00
Stephen Abello
952280ecc6 N°3670 Fix drag and drop glitching in Chrome 2021-02-19 13:57:14 +01:00
Molkobain
4d8930832e N°3649 - Activity panel: Add concurrent lock mechanism 2021-02-19 12:34:42 +01:00
Molkobain
c59301ebc6 Attachments: Fix SSL certificate warning on edition 2021-02-19 12:34:42 +01:00
Molkobain
cb338e1ce5 Case log form entry: Protection against general form not found when in bridge mode 2021-02-19 12:34:42 +01:00
Molkobain
146089e021 Button: Add default name attribute for cancel button 2021-02-19 12:34:42 +01:00
Molkobain
6634f3981e Concurrent lock: Fix modal's button to match new convention 2021-02-19 12:34:41 +01:00
Molkobain
38c6f8c76f Concurrent lock: Fix ownership handler in the backoffice
- Lost lock message will only be displayed once instead of being stacked every 60s 🤪
- Action buttons (except "Cancel") are disabled when the lock expires (regression from 3.0.0)
- Modal window is now larger
2021-02-19 12:34:41 +01:00
Stephen Abello
00008528a6 N°3560 Remove useless code 2021-02-19 12:31:39 +01:00
Stephen Abello
cc4727ad95 N°3560 Avoid reloading remote tabs when clicking multiple times on its tab 2021-02-19 11:54:25 +01:00
Stephen Abello
e650297ded N°3560 Add placeholder and a button to load remote tabs in scroll mode 2021-02-19 11:45:06 +01:00
Molkobain
71c5f47cd8 PHPDoc 2021-02-19 09:37:53 +01:00
odain
74246a8278 N°3065 - Failed enum comparison when values contains parenthesis - enhance db model parsing used during setup comparison with expected one to generate SQL migration queries 2021-02-18 18:24:09 +01:00
bruno-ds
c450c9426c Merge remote-tracking branch 'origin/support/2.7' into support/2.7 2021-02-18 16:29:44 +01:00
odain
46f9fe743c fix ci: adapt test to make sure config date_and_time is set properly before 2021-02-18 16:27:38 +01:00
Stephen Abello
be38bca83d Fix bad HTML markup when having OnDisplayRelations in objects 2021-02-18 16:17:35 +01:00
odain
c31df5fff3 fix ci: adapt test to make sure config date_and_time is set properly before 2021-02-18 16:07:37 +01:00
Stephen Abello
8a13cdbcff Fix badly escaped line return 2021-02-18 15:41:12 +01:00
acognet
27ee6fec70 N°3634 - Feedback alpha 3.0 : finish list 2021-02-18 15:39:38 +01:00
acognet
4e0c21a2ac N°3634 - Feedback alpha 3.0 : finish list 2021-02-18 14:49:28 +01:00
Pierre Goiffon
6e0af1a3b7 💡 Add variable typing 2021-02-18 13:21:06 +01:00
bruno-ds
e9e18513be N°3430 - fix preference page's warning and add missing token generation
- fix the warning (ajax call interrupted) if preference form ajax call is way faster than the one of the 2 other by adding a new timeout_duration option before the redirect.
2021-02-18 12:18:38 +01:00
Molkobain
1e18a5ce07 Revert line that wasn't supposed to be commited yet 🙈 2021-02-18 09:34:01 +01:00
Molkobain
10d5ca50fc Add "error" colors to the semantic palette 2021-02-18 09:10:59 +01:00
Molkobain
4770123be5 N°3549 - Activity panel: Fix crash when cancelling object modification 2021-02-17 18:10:14 +01:00
Stephen Abello
a6daa577e8 N°3560 Fix object's tabs not opening tab specified in url's hash 2021-02-17 17:34:27 +01:00
Stephen Abello
b7c7b05243 Fix dashlet sanitization 2021-02-17 17:34:27 +01:00
Molkobain
acf721befa Fix object's tabs IDs in the URL (regression introduced by 1fc54edf) 2021-02-17 17:24:22 +01:00
Molkobain
f297cdb8b2 N°3549 - Activity panel: Fix inline images in caselogs 2021-02-17 12:47:24 +01:00
Molkobain
b39b09c33c Code cleanup 2021-02-17 12:42:55 +01:00
Stephen Abello
bdec220d7e N°3723 Restyle attachment drag and drop and add a better user experience 2021-02-17 11:04:38 +01:00
Stephen Abello
666d0d418f Rename MAX_SIZE_FOR_PREVIEW const to DEFAULT_MAX_SIZE_FOR_PREVIEW 2021-02-17 10:54:17 +01:00
Molkobain
9d2fc883b8 Fix test name 2021-02-17 10:31:59 +01:00
Stephen Abello
ea04a6e1c9 Add semicolon to button js 2021-02-17 10:24:44 +01:00
odain
913ea0cef2 N°3412 - Command Injection vulnerability in the Setup Wizard - renaming 2021-02-17 10:22:21 +01:00
odain
82ba7f25b0 N°3412 - Command Injection vulnerability in the Setup Wizard - do not use escapeshellcmd before execution in Windows envt 2021-02-17 10:18:28 +01:00
odain
bb877a244b N°3412 - Command Injection vulnerability in the Setup Wizard - do not use escapeshellcmd before execution in Windows envt 2021-02-17 10:09:39 +01:00
Stephen Abello
5e56a08768 Fix not showing filename next to upload buttons 2021-02-17 09:54:42 +01:00
odain
a12959d60e N°3412 - Command Injection vulnerability in the Setup Wizard - handle empty path 2021-02-17 07:50:18 +01:00
bruno-ds
83434b5506 N°3430 - add translations 2021-02-16 17:42:11 +01:00
bruno-ds
dcd4abe72b N°3430 - security hardening 2021-02-16 17:33:49 +01:00
odain
571520815a N°3412 - Command Injection vulnerability in the Setup Wizard - include test to CI 2021-02-16 17:25:45 +01:00
odain
e9cff0920b N°3412 - Command Injection vulnerability in the Setup Wizard - fix test and code 2021-02-16 17:12:41 +01:00
odain
905ee19519 N°3412 - Command Injection vulnerability in the Setup Wizard 2021-02-16 15:57:12 +01:00
acognet
6879cd762c N°2598 - When refreshing a list, loosing page and order - improvement of code 2021-02-16 15:05:06 +01:00
Stephen Abello
8f0e665c68 Refactor "sanitize_identifier" and "sanitize_variable_name"custom TWIG functions to "sanitize(FOO)" 2021-02-16 10:32:03 +01:00
bruno-ds
0b95220d1b N°3466 - Add (missing) translations 2021-02-16 09:46:04 +01:00
Stephen Abello
aa326a1276 Revert wrongfully deleted file in 003d9107 2021-02-16 09:23:48 +01:00
Stephen Abello
e0127d330a N°3670 Remove tiff file from attachment previewable filetypes 2021-02-16 09:22:26 +01:00
acognet
32469b3421 Refactor "sanitize_identifier" and "sanitize_variable_name"custom TWIG functions to "sanitize(FOO)" 2021-02-16 09:16:19 +01:00
acognet
4cafd41944 Refactor "sanitize_identifier" and "sanitize_variable_name"custom TWIG functions to "sanitize(FOO)" 2021-02-16 09:09:02 +01:00
acognet
4f7760ed86 N°3540 - Migrate printable version of an object 2021-02-15 18:17:32 +01:00
bruno-ds
e1b2a767f5 N°3142 - fix typos 2021-02-15 17:49:25 +01:00
acognet
c039d0f81d 2284 - Replace JQuery Autocompleter plugin by JQuery UI Autocomplete widget - Cleanup tableHover 2021-02-15 17:43:36 +01:00
odain
4870893fc2 N°2982 - Speed up SCSS themes compilation during setup : fix precompiled css theme generated 2021-02-15 17:26:17 +01:00
odain
e2940150c3 N°2982 - Speed up SCSS themes compilation during setup : create a php file dedicated to CompileCSSService/FindStylesheetObject 2021-02-15 17:26:17 +01:00
bruno-ds
3058b2eb00 N°3142 - Add (missing) translations 2021-02-15 17:08:47 +01:00
acognet
dbe747ea23 N°2598 - When refreshing a list, loosing page and order - change of dashboard refresh mecanism 2021-02-15 16:55:03 +01:00
acognet
4c23f1f32b N°3648 - Feedback alpha 3.0 : finish relation edition 2021-02-15 16:55:03 +01:00
acognet
c1c8fad97e N°3648 - Feedback alpha 3.0 : finish relation edition 2021-02-15 16:55:03 +01:00
Stephen Abello
bcdb6bdac8 N°3670 Display filetype icons in portal attachment display 2021-02-15 16:52:21 +01:00
Stephen Abello
36991a3d5b N°3670 Add more filetype to be displayed as preview icon 2021-02-15 16:52:21 +01:00
Stephen Abello
003d9107a4 N°3670 Remove attachment legacy filetype icons 2021-02-15 16:52:21 +01:00
Stephen Abello
e8f26bdf18 N°3670 Add a parameter to chose max file size to be displayed as a preview icon 2021-02-15 16:52:21 +01:00
Stephen Abello
a53485d08f N°3670 Replace attachment "delete" button with an icon button 2021-02-15 16:52:21 +01:00
Stephen Abello
7e46054f8b Add a destructive icon link factory for Button block 2021-02-15 16:52:20 +01:00
Stephen Abello
789ee8e2d1 N°3670 Revert tooltip preview behavior back to 2.7 one 2021-02-15 16:52:20 +01:00
Molkobain
eea8ceda63 Refactor "sanitize_identifier" and "sanitize_variable_name"custom TWIG functions to "sanitize(FOO)"
Note: FOO is one of \utils::ENUM_SANITIZATION_FILTER_XXX
2021-02-15 16:28:34 +01:00
Molkobain
44587663bb Add "get_module_setting" as a custom TWIG function 2021-02-15 16:21:39 +01:00
odain
c36d650d61 N°2982 - Speed up SCSS themes compilation during setup : fix broken style 3.0 after setup 2021-02-15 15:20:31 +01:00
Molkobain
f716e42672 Rename 'variable_name' TWIG filter to 'sanitize_variable_name' to keep consistency with other filters (eg. 'sanitize_identifier') 2021-02-15 13:50:57 +01:00
Molkobain
3b288ce5d6 Typo 2021-02-15 13:50:56 +01:00
Molkobain
e485853b08 N°3549 - Activity panel: Fix drag / drop of images during object edition 2021-02-15 13:50:56 +01:00
Molkobain
38bc2d9d58 🔧 Change max line length in .editorConfig 2021-02-15 13:49:39 +01:00
Eric
244de6915d N°3700 - Restyle SessionMessage 2021-02-12 17:40:31 +01:00
vdumas
874f2f63a8 Merge remote-tracking branch 'origin/develop' into develop 2021-02-12 11:25:59 +01:00
odain
71a65606a1 Revert "N°2982 - Speed up SCSS themes compilation during setup : take cascaded included imports in theme precompilation + class/method documentation cleanup"
This reverts commit c8dd19c22f.
2021-02-12 11:24:14 +01:00
vdumas
a8c834b1e9 N°3495 WorkOrder: on closure set end_date only if empty 2021-02-12 11:05:39 +01:00
odain
c8dd19c22f N°2982 - Speed up SCSS themes compilation during setup : take cascaded included imports in theme precompilation + class/method documentation cleanup 2021-02-12 09:46:30 +01:00
Eric
9ad204244a N°3565 - Migrate backoffice pages to new UIBlock system : Setup (fix some fonts) 2021-02-11 18:02:34 +01:00
Eric
c8e8778d7b N°3468 - Fix extension.xml preventing extensions installation
(cherry picked from commit 92c8af1b19)
2021-02-11 17:48:29 +01:00
nv35
a5052ef42b 🔊 Print data source id in synchro_exec output (#183)
As it is possible to execute multiple data source sync in one command run, print the corresponding data source name before its output.
2021-02-11 16:47:10 +01:00
Eric
68f7880d42 Force theme compilation in development environment 2021-02-11 14:31:52 +01:00
Eric
f4241142c5 Fix crash when a module is removed and some classes remains in the creation history 2021-02-11 14:31:52 +01:00
Pierre Goiffon
1cc48c8d8e 💄 iTop 3.0.0 badge dashlet : make whole badge clickable (#191)
Would be better to have only one handler on the dashboard side but we want to respect code responsibility !
So until we have a system for components to print "static" code (that will be printed only once whatever number of component instances we have in the page), we are doing it the "old" way : calling a JQuery widget in the component JS Twig.
2021-02-11 12:09:06 +01:00
Molkobain
ebb80a9b05 N°3649 - Activity panel: Fix case log entries truncated to first character in edit mode 2021-02-10 21:30:02 +01:00
Molkobain
8d8f6f7ed5 Typo 2021-02-10 21:17:49 +01:00
Molkobain
e6c0333915 N°3545 - Activity panel: Change caselogs order so it's defined by the details zlist 2021-02-10 18:20:04 +01:00
Stephen Abello
3be360dfb9 N°3670 Add new file upload button 2021-02-10 17:19:40 +01:00
Stephen Abello
d08adc43c1 N°3670 Fix useless slashes in tooltip 2021-02-10 17:19:39 +01:00
Stephen Abello
3361c9de29 PHPDoc 2021-02-10 17:19:39 +01:00
Eric
0eff37844b Add UIBlocks to twig (Fix deprecation warning) 2021-02-10 16:21:11 +01:00
vdumas
5f3d5a593c N°2639 - Enrich dictionary for notify flag on Contact 2021-02-10 16:17:57 +01:00
Stephen Abello
e74ee179af N°3670 Replace/add new Attachment type icons 2021-02-10 15:52:56 +01:00
Stephen Abello
d8006b160c N°3670 Migrate Attachment list to new UI 2021-02-10 15:52:56 +01:00
bruno-ds
f328e58c02 N°3721 - toolkit's "update iTop" with the "Create symbolic links" option checked now empty the compiled directory as expected 2021-02-10 15:35:38 +01:00
bruno-ds
656fa3208a N°3721 - revert the feature (will only be available on the 3.0) 2021-02-10 15:33:01 +01:00
bruno-ds
f647ce61c2 N°3721 - toolkit's "update iTop" with the "Create symbolic links" option checked now empty the compiled directory as expected 2021-02-10 14:34:21 +01:00
Eric
19270a9dde N°3563 - Migrate backoffice pages to new UIBlock system : Preferences (partial fix for favorite organizations and shortcuts) 2021-02-10 14:31:19 +01:00
Eric
91fd69e0bd N°3563 - Migrate backoffice pages to new UIBlock system : Preferences (fix newsroom icon) 2021-02-10 10:53:01 +01:00
Eric
3b220b6050 N°3676 - Fix Subnet creation (missing default values) 2021-02-10 09:21:33 +01:00
Eric
4ceccb3c41 Add setup.css for initial setup 2021-02-10 09:01:03 +01:00
Eric
47fdc47d33 enhance Application Updater 2021-02-09 18:18:11 +01:00
Eric
ed4cf4ff05 Fix File Select widget 2021-02-09 18:18:11 +01:00
Eric
d332787deb Provide font CSS classes 2021-02-09 18:18:11 +01:00
Eric
55a6f85252 Fix toolbar spacer 2021-02-09 18:18:11 +01:00
vdumas
aacf3700f4 Merge remote-tracking branch 'origin/develop' into develop 2021-02-09 17:48:04 +01:00
Eric
9ed2127530 Add File Select widget 2021-02-09 17:24:27 +01:00
vdumas
eac9d7adfb N°3495 - Simplify WorkOrder Data model 2021-02-09 16:51:42 +01:00
Eric
3c60e4f765 Add Toolbar factory, Use new factory entry for cancel buttons, better check of twig errors, fix fatal error page 2021-02-09 14:43:46 +01:00
Molkobain
e11252a2d6 PHPDoc 2021-02-08 22:41:45 +01:00
Molkobain
99564d75b7 N°3560 - Fix AJAX tabs not having correct spacing 2021-02-08 22:40:21 +01:00
Molkobain
26e54b8796 Typo 2021-02-08 19:17:07 +01:00
Eric
eaa507bc70 N°3245 - Move filter of trigger on object update after object update (fix attribute change detection) 2021-02-08 16:21:35 +01:00
Eric
91752b4068 N°3565 - Migrate backoffice pages to new UIBlock system : Setup (fix bad escaping) 2021-02-08 14:20:12 +01:00
Molkobain
82b7854d46 N°3649 - Activity panel: Refactor the way we access the CKEditor instance 2021-02-08 12:24:05 +01:00
Molkobain
08ea82cf05 N°3649 - Activity panel: Fix entries not being filtered on initialization 2021-02-08 12:24:05 +01:00
Molkobain
6e99701c47 N°3649 - Case log entry form: Change buttons text and style
- Change "Save" button to "Send"
- Change "Cancel" button to the new convention
2021-02-08 12:24:05 +01:00
Molkobain
aa0fb2b8f7 N°3649 - Activity panel: Move case log entry form above toolbar's actions 2021-02-08 12:24:05 +01:00
Molkobain
6710ffa334 N°3649 - Activity panel: Improve colors separation for case logs 2021-02-08 12:24:04 +01:00
Molkobain
0664a42f99 N°3649 - Activity panel: Fix toolbar wrapping with large labels 2021-02-08 12:24:04 +01:00
Molkobain
73f6c697b9 N°3649 - Activity panel: Fix wrong elapsed time displayed under entries after a new entry has been added 2021-02-08 12:24:04 +01:00
Molkobain
15c5a22d11 N°3649 - Activity panel: Add tooltip on compose button 2021-02-08 12:24:04 +01:00
Molkobain
40c112d47a N°3649 - Activity panel: Show confirmation dialog on multiple case logs entries submission 2021-02-08 12:24:04 +01:00
Molkobain
4a2cbc9be3 N°2847 - Navigation menu: Change default expanded/collapsed behavior
- Keep previous value (iTop 2.7 and older) if present
- Otherwise, collapsed by default
- Also renamed the user pref. to match new conventions
2021-02-08 12:24:04 +01:00
Molkobain
a91b6dbca3 Fix URL with special chars being output wrong (completes c98881671) 2021-02-08 12:24:03 +01:00
Molkobain
5c85af10c5 N°3649 - Activity panel: Reorganized methods for more readability 2021-02-08 12:24:03 +01:00
Molkobain
8026965915 N°3649 - Activity panel: Work on multiple caselogs edition at once 2021-02-08 12:24:03 +01:00
Molkobain
5f00362805 Add CombodoJSConsole JS helper to output messages in the different console channels without having to check it exists before.
Note: This could be used later as an entry point to manipulate the log and do something with it (format, persist, ...)
2021-02-08 12:24:03 +01:00
Molkobain
648a3cc430 N°3649 - Activity panel: Improve UX on "indeterminated" filters' checkboxes 2021-02-08 12:24:03 +01:00
Molkobain
977d1d0246 N°3649 - Activity panel: Continue improvement following the alpha feedbacks
- Add possibility to choose which caselogs are displayed in any tab
- Change case log entry form submit button label from "Add entry" to "Save"
2021-02-08 12:24:02 +01:00
Molkobain
222fab27d1 N°3649 - Activity panel: Continue improvement following the alpha feedbacks
- Update messages counters globally (not per caselog)
- Hide messages counter when no caselog
2021-02-08 12:24:02 +01:00
Molkobain
a48d850721 N°3649 - Activity panel: Code cleanup 2021-02-08 12:24:02 +01:00
Molkobain
599c4ebad8 N°3649 - Activity panel: Continue improvement following the alpha feedbacks
- Change caselog entry form, now 1 per caselog
- Remove entry form from activity tab
- Change entries filters, now present on all tabs but states are specific to each tab
2021-02-08 12:24:02 +01:00
Molkobain
4f9d133670 Activity panel: Rename some variables/methods for a better meaning 2021-02-08 12:24:01 +01:00
Molkobain
9a4f956153 N°3649 - Activity panel: Code cleanup
- Move entry form toggler SCSS to proper file
- Rename entry form toggler
2021-02-08 12:24:01 +01:00
Molkobain
927fd980f6 N°2844 - Make activity panel and object details scroll independently (generic page layout) 2021-02-08 12:24:01 +01:00
Molkobain
446512793b N°2847 - Simplify SCSS rules according to guidelines 2021-02-08 12:24:01 +01:00
Molkobain
7f55fd4bf6 N°3649 - Activity panel: Continue improvement following the alpha feedbacks
- Fix compose button visible when no editable caselog
- Fix "states" filter visible on object with no state attribute
- All tabs now have all the actions / filters
- Initial active tab is now the first one (caselog or activity)
2021-02-08 12:24:01 +01:00
Eric
0c7925cdfb N°3565 - Migrate backoffice pages to new UIBlock system : Setup (fix bad escaping) 2021-02-08 11:58:52 +01:00
Eric
96faad7539 N°3565 - Migrate backoffice pages to new UIBlock system : Setup (fix some fonts) 2021-02-08 11:30:25 +01:00
Eric
69189ab41a Merge branch 'support/2.7' into develop 2021-02-08 10:42:19 +01:00
Eric
6b76e5a853 N°3618 - Count on union with different conditions fails (php doc) 2021-02-08 09:39:24 +01:00
Eric
dbb6e43751 N°3618 - Count on union with different conditions fails (Fix unit tests) 2021-02-05 11:28:40 +01:00
Eric
f07f0ba1c7 N°3618 - Count on union with different conditions fails (Fix multi-column attributes sql generation) 2021-02-05 10:15:14 +01:00
bruno-ds
2ddeebdc78 Readonly alert now has an id
in order to be interacted with (browser side).
2021-02-05 09:59:52 +01:00
Pierre Goiffon
d312bf74b9 N°3537 run_query : fix fatal error class not found when running query with parameters
Factory weren't renamed in this file :/
Regression brought by 5fe8ca17
2021-02-04 16:08:59 +01:00
Pierre Goiffon
f83f606d92 💄 N°3227 Change Query.is_template look
From list to radio_horizontal
2021-02-04 15:57:00 +01:00
odain
857ae5fd95 N°2982: code cleanup following review 2021-02-04 15:44:14 +01:00
odain
265b5dd969 ci/testing work: categorize tests via phpunit @group tags 2021-02-04 15:28:36 +01:00
odain
d7c7ef8332 ci/testing work: categorize tests via phpunit @group tags 2021-02-04 15:07:44 +01:00
odain
54f8ef924f N°2982: theme precompilation fix work even when coming from /extensions or /datamodels/X.x 2021-02-04 14:20:35 +01:00
Pierre Goiffon
2e2b7f96f2 N°2334 Fix unable to display finalClass on remote class in view/edit lnk relations
Don't filter finalClass anymore when viewing object in \MetaModel::GetZListAttDefsFilteredForIndirectRemoteClass
Also added some type hinting
2021-02-04 11:57:02 +01:00
Pierre Goiffon
a5894c1a4c Rename \Combodo\iTop\Test\UnitTest\ItopTestCase::InvokeInvisible* to InvokeNonPublic* 2021-02-04 09:41:56 +01:00
Eric
e06996a2e4 N°3660 - Fix JOIN without condition on child joined table is ignored (check done in optimizer) 2021-02-03 15:58:54 +01:00
acognet
34d9eb2d96 Fix js files loading 2021-02-03 11:59:50 +01:00
acognet
f5d89de177 N°2737 - Migrate table to DataTables plugin to be iso with the end-users portal - fix popup direct link 2021-02-03 11:55:27 +01:00
acognet
53c4c14522 Fix js files loading 2021-02-03 11:07:07 +01:00
acognet
ff44fcdfe0 N°331 - L'ordre de tri des tickets change au rechargement auto - add ability to give to Menu how to refresh the panel 2021-02-03 11:07:07 +01:00
Eric
2f0e7c6d29 N°3586 - Fix login window not correctly displayed 2021-02-03 09:15:56 +01:00
Eric
7115a6ae7d N°3660 - Fix JOIN without condition on child joined table is ignored (remove unnecessary check) 2021-02-03 09:07:59 +01:00
vdumas
2eae1e81d1 Enrich dictionary for notify flag on Contact 2021-02-02 18:59:52 +01:00
Pierre Goiffon
ecd282faf1 N°3253 setup redirection : update to be more accessible
Was only doing a redirection using JS
Now we also have a message with a link, plus a meta refresh.

JS redirection was kept as this is quicker than meta refresh (message isn't visible, whereas it is when having meta refresh only)
2021-02-02 18:16:46 +01:00
Pierre Goiffon
765560d1f5 ItopTestCase : helpers to call invisble methods 2021-02-02 17:57:40 +01:00
Eric
bc024d9ed0 N°3660 - Fix JOIN without condition on child joined table is ignored 2021-02-02 17:30:03 +01:00
Stephen Abello
f1d047becf Add a Factory for 'Cancel' buttons, make 'Cancel' buttons alternative, make buttons uppercase 2021-02-02 16:17:03 +01:00
Stephen Abello
50af5d9af1 Add semi bold font to typography 2021-02-02 16:14:33 +01:00
Stephen Abello
494789c02e N°3669 Replace Monorale with Raleway (+ lining figures) 2021-02-02 15:30:33 +01:00
Stephen Abello
63929566d9 Remove debug line from setup 2021-02-02 15:30:33 +01:00
odain
ed3df37176 Merge branch 'feature/3606-twigbase-controller-basichtml' into develop 2021-02-02 11:27:06 +01:00
odain
c736615de1 N°3606: clean symfony useless import 2021-02-02 11:24:06 +01:00
odain
5121ed7c39 N°3606: move whitelist feature from itop core to cbd-mon extension 2021-02-02 10:49:55 +01:00
Eric
4f4ea5c6fa N°3565 - Migrate backoffice pages to new UIBlock system : Setup (move variable) 2021-02-02 08:50:48 +01:00
odain
29a1539379 N°3464: remove useless require in ItopDataTestCase and fix CIs 2021-02-01 18:29:39 +01:00
Eric
2a15fbae4d N°3567 - Migrate backoffice pages to new UIBlock system : App. upgrade (removed spinner) 2021-02-01 18:02:36 +01:00
Eric
7b5b1c58d3 N°3567 - Migrate backoffice pages to new UIBlock system : App. upgrade (fix backup status) 2021-02-01 17:58:14 +01:00
Eric
82bf2dab2c N°3567 - Migrate backoffice pages to new UIBlock system : App. upgrade (fix status) 2021-02-01 17:42:57 +01:00
Eric
694899980c N°3567 - Migrate backoffice pages to new UIBlock system : App. upgrade (fix last button) 2021-02-01 17:19:02 +01:00
Eric
749ab51651 N°3567 - Migrate backoffice pages to new UIBlock system : App. upgrade (fix last button) 2021-02-01 16:44:06 +01:00
Eric
fa973c5467 N°3567 - Migrate backoffice pages to new UIBlock system : App. upgrade (setup page look) 2021-02-01 16:29:31 +01:00
Eric
2f68be14f8 N°3565 - Migrate backoffice pages to new UIBlock system : Setup 2021-02-01 16:28:10 +01:00
jbostoen
37a4a3eb47 🌐 Fix typo in Dutch translations (#189)
Co-authored-by: jbostoen <->
2021-02-01 16:21:10 +01:00
annProg
664dd12241 use strlen() replace empty() 2021-02-01 12:11:31 +01:00
annProg
03190b95cf fix search error when search string '0' 2021-02-01 12:11:31 +01:00
Molkobain
da632c3f0f N°2847 - Improve panel integration regarding the mockups (not done yet) 2021-02-01 12:08:39 +01:00
Molkobain
43290c0ff5 Advanced search: Update unitary tests for PR #170 2021-02-01 12:08:39 +01:00
Pierre Goiffon
590b094ad5 N°3253 setup php check : only use Composer platform_check 2021-02-01 09:38:08 +01:00
Pierre Goiffon
b3e3fe2dc2 🎨 setup index : remove warnings at file end 2021-02-01 08:47:56 +01:00
Pierre Goiffon
d863881591 setup index : remove empty line at the beginning of file 2021-02-01 08:46:45 +01:00
Pierre Goiffon
3e5d0f53d2 N°3253 setup : now displays iTop error instead of Composer platform_check 2021-02-01 08:44:20 +01:00
Pierre Goiffon
29df7fda7e N°3253 setup : change require to trigger Composer's platform_check 2021-02-01 08:35:31 +01:00
Stephen Abello
9ebf0ce1e5 N°3535 Migrate dashboard editor modal to new design 2021-01-29 17:04:00 +01:00
odain
2bb1583995 N°3606: renaming 2021-01-29 10:39:41 +01:00
odain
b98ffc4b8b N°3606: add IP inside iTop error message 2021-01-29 10:01:46 +01:00
odain
818b3632ac N°3606: renaming 2021-01-29 09:24:17 +01:00
Molkobain
7d1a2668a1 N°2847 - Fix object details properties's margins 2021-01-27 21:23:03 +01:00
odain
7677bd7cfe N°3606: authorized_network configured as a list of ip address or networks (no more regexp, IpUtils::checkIp syntax) 2021-01-27 14:36:33 +01:00
acognet
c98881671b Fix name of files : in order to manage the use of "&" character in url 2021-01-27 11:14:54 +01:00
acognet
ef1b7ca82c Remove useless log 2021-01-27 11:14:54 +01:00
acognet
d39d634aba 2284 - Replace JQuery Autocompleter plugin by JQuery UI Autocomplete widget - fix autocomplete on short lists, tab and autoselect item when there is only one option 2021-01-27 11:14:53 +01:00
acognet
c65a760de7 Fix css file-input 2021-01-27 11:14:53 +01:00
Molkobain
8fba402016 N°3208 - Quick create: Fix error when choosing a class from another page than UI.php 2021-01-26 20:15:46 +01:00
Molkobain
0922baee7b Core update: Fix form CSS classes 2021-01-26 20:05:26 +01:00
Molkobain
2a68f13ade Core update: Fix container classes 2021-01-26 16:45:26 +01:00
Eric
2ba01bb408 N°3245 - Move filter of trigger on object update after object update 2021-01-26 16:40:04 +01:00
Molkobain
8c19bc66e4 Core update: Fix not fully fixed (!) regression crashing the confirmation step 2021-01-26 16:24:00 +01:00
Pierre Goiffon
87ee0b8893 📝 N°2329 add PHP bug reference 2021-01-26 16:14:28 +01:00
Eric
92c8af1b19 N°3468 - Fix extension.xml preventing extensions installation 2021-01-26 16:08:30 +01:00
Pierre Goiffon
b85b4d0067 N°3663 Group exception classes in /application/exceptions
Original files kept for compatibility issues :
- core/coreexception.class.inc.php

There are remaining exceptions in /core/oql, but those files are generated
2021-01-26 15:50:26 +01:00
Stephen Abello
5762ac38a7 Add a test (only handle bcrypt and legacy sha256 as we have to maintain PHP 7.1 compatibility) 2021-01-26 09:20:39 +01:00
Stephen Abello
dc804a90d4 Add a setter for config param, use a constant to hold the default hash algo value 2021-01-26 09:20:39 +01:00
Sam B
968720f774 Update core/ormpassword.class.inc.php
Co-authored-by: Thomas Casteleyn <thomas.casteleyn@me.com>
2021-01-26 09:20:39 +01:00
Sam B
7b5244b52d fix docu
Co-authored-by: Thomas Casteleyn <thomas.casteleyn@me.com>
2021-01-26 09:20:39 +01:00
SamB
30d4835fbb ormPassword: allow use of different password hash algo 2021-01-26 09:20:39 +01:00
bruno-ds
dd921e49b6 rollback unit test since the root cause was elsewhere 2021-01-25 10:44:14 +01:00
Molkobain
33a8372409 Core update: Fix regression crashing the confirmation step 2021-01-25 09:26:41 +01:00
Pierre Goiffon
5125a86f8b Merge remote-tracking branch 'origin/support/2.7' into develop 2021-01-25 09:21:36 +01:00
Pierre Goiffon
54e9bd5c8e Merge branch 'support/2.6' into support/2.7
# Conflicts:
#	.editorconfig
2021-01-25 09:13:43 +01:00
Pierre Goiffon
066a6d8b36 🔧 Use same .editorconfig in all supported branches 2021-01-25 09:12:38 +01:00
Eric
b241f03e76 N°3294 - Introduce counters in OQL menu entries (support shortcuts) 2021-01-22 17:43:33 +01:00
Eric
306452679e N°3294 - Introduce counters in OQL menu entries (add comment) 2021-01-22 17:24:26 +01:00
Molkobain
880b88a4ef Code formatting 2021-01-22 17:20:08 +01:00
Molkobain
16dc6b36ba Rename class to match used lib. 2021-01-22 17:20:08 +01:00
Molkobain
7e67661d5f N°3649 - Activity panel: Improve ActivityPanel::IsCaseLogsSubmitAutonomous() robustness 2021-01-22 17:20:08 +01:00
Eric
397cd9b946 N°3294 - Introduce counters in OQL menu entries (fix typo) 2021-01-22 17:19:10 +01:00
Eric
3d29a1e894 Add UIBlocks to twig (Add... methods can be called by specifying their name in the parameters) 2021-01-22 17:16:56 +01:00
Eric
2d93879e7a Add UIBlocks to twig (Add... methods can be called by specifying their name in the parameters) 2021-01-22 17:11:48 +01:00
Pierre Goiffon
4217fa8736 🔧 editor config : fix scss+twig indent
As decided during today's dev team meeting !
We had tab set in .editorConfig in those files, but most of the codebase had 2 spaces for scss and 4 spaces for twig => we decided to change .editorConfig rules to match existing code base

Also adds last PHPStorm version new options
2021-01-22 16:37:57 +01:00
Eric
ff69f9af89 N°3294 - Introduce counters in OQL menu entries (fix when org_id is empty) 2021-01-22 15:42:57 +01:00
Pierre Goiffon
1b2087e52e N°3568 Backup various improvements
- fix path not displayed if not existing
- fix HTML code in warnings & errors
2021-01-22 12:19:52 +01:00
Molkobain
3b31a36473 Navigation menu: Better fix for the previous regression 2021-01-22 12:12:34 +01:00
Molkobain
43fdcab528 Navigation menu: Fix regression introduced in previous commit 2021-01-22 12:08:52 +01:00
acognet
49c2d0c10e N°3528 - Finish silo selection migration 2021-01-22 12:02:44 +01:00
Eric
9db246eb42 N°3438 - Setup: Ignore vendor folder during setup extensions scan 2021-01-22 11:48:25 +01:00
acognet
f1cad5993b N°3528 - Finish silo selection migration 2021-01-22 11:47:17 +01:00
acognet
76fc4e3ee2 Remove development logs 2021-01-22 11:47:17 +01:00
Pierre Goiffon
86dbd8d7a6 N°3568 Update backup page for UiBlocks 2021-01-22 11:46:29 +01:00
Molkobain
36457da4f2 Navigation menu: Remove unnecessary condition 2021-01-22 11:39:49 +01:00
Molkobain
e646dc8a69 Code formatting 2021-01-22 11:39:49 +01:00
Molkobain
1bb6d62c17 PHPDoc and code conventions 2021-01-22 11:39:49 +01:00
Molkobain
2ed785fb06 Restore comment for future refactoring 2021-01-22 11:39:48 +01:00
Eric
01006e55c0 N°3294 - Introduce counters in OQL menu entries (fix when silo changes) 2021-01-22 11:19:14 +01:00
Stephen Abello
46b4990252 N°3632 Move tab's layout preference to preferences page 2021-01-22 10:30:12 +01:00
Eric
b3f1b0e610 N°2677 - Datamodel: Add style definition for class, enum (better tests) 2021-01-22 10:14:25 +01:00
Eric
14d8646734 N°2677 - Datamodel: Add style definition for class, enum (fix wrong conversions) 2021-01-22 09:56:28 +01:00
acognet
5dcddf2317 N°3294 - Introduce counters in OQL menu entries 2021-01-21 17:24:44 +01:00
Stephen Abello
b8aeef1d71 N°3538 * New design for modals
* Fix date picker style
* Move jQueryUI style to vendors/ stylesheet folder
2021-01-21 16:41:06 +01:00
Molkobain
fa0ea7ed77 N°3207 - Global search: Add possibility to open history items in a new tab 2021-01-21 15:52:36 +01:00
acognet
63c1a1d2d3 Fix multi reload of UI.php and js files 2021-01-21 15:35:48 +01:00
Eric
154156f4a1 N°3423 - Allow AttributeImage / AttributeDocument content to be cached by the browser (portal) 2021-01-21 15:24:26 +01:00
acognet
8f1d9fba57 N°3528 - Finish silo selection migration 2021-01-21 15:20:10 +01:00
Molkobain
26d25706f2 UIBlock: Use GetAdditionalCSSClassesAsString() instead of GetAdditionalCSSClasses()|join(' ') in TWIGs 2021-01-21 14:38:05 +01:00
Molkobain
574bd53c37 UIBlock: Fix typo introduced during refactor of the previous commit 2021-01-21 13:00:49 +01:00
Molkobain
1514cd83ab UIBlock: Change $aAdditionalCSSClasses methods to match app. conventions (parameters should be arrays, not space separated string)
Note: This had to be fixed on all calls to this, hence the number of modifications.
2021-01-21 12:59:30 +01:00
Molkobain
7c8019319a UIBlock: Update PHPDoc, fix typo in $aJsTemplatesRelPath property/methods name and fix $aAdditionalCSSClasses initialization 2021-01-21 12:40:42 +01:00
Pierre Goiffon
882fd761a6 🐛 Fix wrong display in dashboards and search pages
Was introduced by f723862d
2021-01-21 11:25:32 +01:00
Eric
3df48f69c6 fix typo 2021-01-21 10:50:24 +01:00
Pierre Goiffon
f723862def Pull up additionalCSSClasses from Button & UiContentBlock to UiBlock
This will allow to use this everywhere !

Before this commit we had :
UiContentBlock
  aCSSClasses
  GetCssClasses
  SetCssClasses // reset + add, existing callers
  AddCSSClasses
Button
  $aAdditionalCSSClasses
  GetAdditionalCSSClass
  AddCSSClasses

Now we have :
UiBlock
  aAdditionalCSSClasses
  AddCSSClasses
  SetCSSClasses
  GetAdditionalCSSClass

Note that there were also some methods in PopoverMenuItem :
PopoverMenuItem
  SetCssClasses
  AddCssClass
  GetCssClasses
As they are indirection to methods in the $oPopupMenuItem attribute, I added to them the "MenuItem" prefix :
  SetMenuItemCssClasses
  AddMenuItemCssClass
  GetMenuItemCssClasses
Didn't find any use to change.
2021-01-21 10:49:31 +01:00
Eric
26f800d488 N°3423 - Allow AttributeImage / AttributeDocument content to be cached by the browser (console) 2021-01-21 10:44:23 +01:00
Eric
1fb15a421a Move class in its own file 2021-01-21 09:56:03 +01:00
Molkobain
4816d1e943 N°2847 - Add style for scrollbars throughout the whole application, not only the nav. menu 2021-01-20 19:01:32 +01:00
Molkobain
e440667d69 N°3649 - Activity panel: Set first case log as the active instead of the activity one 2021-01-20 19:01:31 +01:00
Molkobain
cebc51e045 N°3649 - Activity panel: Remove entry form from the activity tab, only case log tabs will have one 2021-01-20 19:01:31 +01:00
Molkobain
16ca856996 N°3532 - Activity panel: Add support for readonly / hidden flags on caselogs 2021-01-20 19:01:31 +01:00
Molkobain
cb955ee84f Remove unnecessary overloaded constants 2021-01-20 19:01:31 +01:00
Molkobain
de45557635 Update autoloaders 2021-01-20 19:01:30 +01:00
Molkobain
6ac1cc4831 N°3567 - PHPDoc and coding conventions fixes 2021-01-20 19:01:30 +01:00
Eric
959cecf891 N°3567 - Migrate backoffice pages to new UIBlock system : App. upgrade (Fix default values and typos) 2021-01-20 15:01:27 +01:00
Molkobain
d54e156ec2 N°3207 - Global search: Keep input open and focus at the end of the query when running a search 2021-01-20 11:04:17 +01:00
Eric
54c5c8c016 Merge remote-tracking branch 'origin/develop' into feature/MVCTwigTags3.0 2021-01-20 10:43:12 +01:00
Eric
9b67f7beba N°3567 - Migrate backoffice pages to new UIBlock system : App. upgrade (use ibo-is-hidden class to hide blocks) 2021-01-20 10:41:04 +01:00
Molkobain
b4caa97e69 Replace utils::HtmlEntities() with utils::EscapeHtml() in the global search and quick create blocks 2021-01-20 09:57:23 +01:00
Molkobain
de7cd679ba PHPDoc 2021-01-20 09:35:48 +01:00
Eric
392cdf6058 N°3567 - Migrate backoffice pages to new UIBlock system : App. upgrade (display twig errors) 2021-01-19 18:09:58 +01:00
Molkobain
8ddbadacec N°3207 - Global search: Fix current search not displayed in the history results 2021-01-19 17:44:07 +01:00
Eric
6dd1807fca N°3567 - Migrate backoffice pages to new UIBlock system : App. upgrade (remove UIHtml from twig) 2021-01-19 17:24:09 +01:00
Eric
01c4dff035 Add UIBlocks to twig (Changed classes name) 2021-01-19 17:23:09 +01:00
Molkobain
cb6a8fccb9 N°3207 - Global search: Fix "Tab" navigation no longer passing over history items 2021-01-19 17:10:52 +01:00
Eric
c15a60170d remove build scripts from autoload 2021-01-19 16:53:00 +01:00
Eric
82f4f47cf3 N°2737 - ExtraParams check in DisplayBlock 2021-01-19 16:51:10 +01:00
Molkobain
aa2651ca71 N°3208 - Quick create: Fix several items:
- Tab navigation no longer passing over history items
- Autocomplete results selection can now be done via up/down arrows
2021-01-19 16:00:30 +01:00
Molkobain
cb28ca7941 N°2836 - Change bubbles colors to something more neutral 2021-01-18 17:10:40 +01:00
Molkobain
527154f0be N°1957 - Navigation menu: Update hint sentence 2021-01-18 15:41:08 +01:00
Molkobain
f4b9b0b313 N°3628 - Navigation menu: Add visual hint on toggler when silo applied 2021-01-18 15:41:08 +01:00
Molkobain
daba1d3bba N°3628 - Navigation menu: Menu drawer can now be closed by clicking again on the active menu group 2021-01-18 15:41:08 +01:00
Molkobain
d57e368b03 N°3628 - Navigation menu: App. logo URL redirects to the home page by default, but is still customizable through 'app_icon_url' 2021-01-18 15:41:07 +01:00
Molkobain
9f962eb40f Add Config::IsCustomValue($sPropCode) method to know if a parameter has been changed or not 2021-01-18 15:41:07 +01:00
Eric
79d0b9543a Add UIBlocks to twig 2021-01-18 15:27:20 +01:00
Pierre Goiffon
7d9f73f650 N°3537 run_query : add missing tooltip on evaluate button
This extra text contains the shortcut info, so we must print this !
2021-01-18 14:55:17 +01:00
Eric
ace0657b7d Add UIBlocks to twig (Use file cache) 2021-01-18 13:59:29 +01:00
Eric
4afb374f6a N°3567 - Migrate backoffice pages to new UIBlock system : App. upgrade 2021-01-18 13:59:29 +01:00
Eric
648cfd9af4 Add UIBlocks to twig (Generalize IsHidden parameter) 2021-01-18 13:59:29 +01:00
Eric
5fe8ca178e Add UIBlocks to twig (CollapsibleSection, FieldBadge, Panel) 2021-01-18 13:59:28 +01:00
Eric
63eb0f1530 Add UIBlocks to twig (Spinner) 2021-01-18 13:59:28 +01:00
Eric
21740123f4 Add UIBlocks to twig (generic parser and node)
# Conflicts:
#	pages/run_query.php
#	test/VisualTest/Backoffice/RenderAllUiBlocks.php
2021-01-18 12:09:07 +01:00
Eric
2aae6cd744 Add UIBlocks to twig (Use sub-blocks for alerts and fields) 2021-01-18 12:03:33 +01:00
Eric
d8316a090a Add UIBlocks to twig (DataTable, Form, Input) 2021-01-18 12:03:32 +01:00
Eric
e51fd028fa Add UIBlocks to twig (changed UIContentBlock params) 2021-01-18 12:03:32 +01:00
Eric
bffb7b5eab Add UIBlocks to twig (new blocks) 2021-01-18 12:03:32 +01:00
Eric
77808ecd41 Add UIBlocks to twig (WIP) 2021-01-18 12:03:31 +01:00
Stephen Abello
2b798baffc N°3560 Add title to scrollable tabs content 2021-01-18 11:56:04 +01:00
odain
07347663d6 N°3606: php doc + handle empty token/whiteliste param usecase 2021-01-18 09:37:19 +01:00
odain
9ab1a0d437 N°3606: provide a token access instead of login + network white list restriction 2021-01-18 09:37:19 +01:00
Molkobain
04b4749510 N°1957 - Navigation menu: Show (dismissable) hint for the menu filter 2021-01-18 09:28:17 +01:00
Molkobain
ad6646afaf N°1957 - Navigation menu: Fix several bugs with menus filter
- Placeholder font style
- Results do not scroll under the filter input anymore
2021-01-18 09:28:16 +01:00
Molkobain
7e3d414e9e Navigation menu: Fix menu counters being over the filter input 2021-01-18 09:28:16 +01:00
Molkobain
c117f8a5ab Navigation menu: Fix placeholder hint placement 2021-01-18 09:28:16 +01:00
Molkobain
b8d6918f71 N°1957 - Fix clear icon that was not longer shown 2021-01-18 09:28:15 +01:00
Pierre Goiffon
2f10f24317 Rename \Combodo\iTop\Application\UI\Base\Component\Html\HtmlFactory::MakeP to MakeParagraph 2021-01-15 13:50:47 +01:00
Pierre Goiffon
ec8a1af2a5 N°3537 fix run_query asking value when using :current_contact
:current_contact is a magic arg and value is set by iTop ORM, so we shouldn't ask the user to provide it !

It was working as expected with :current_user

This is a 3.0.0 regression
2021-01-15 12:05:53 +01:00
Stephen Abello
cd39d6a817 Use widget properties instead of hardcoded css classes in tab-container widget 2021-01-15 11:44:59 +01:00
Stephen Abello
ad08376f6e Move ScrollMagic under npm dependency 2021-01-15 11:18:34 +01:00
bruno-ds
71d3713950 N°3651 - add a (commented out) test to prove the bug
just uncomment to use the test.
2021-01-15 11:14:36 +01:00
Stephen Abello
137b4e55c4 N°3560 Allow to scroll vertically through tabs content. User can activate this feature in preference page 2021-01-15 11:03:08 +01:00
odain
b51d7409c1 N°3606: renaming 2021-01-15 11:02:37 +01:00
Pierre Goiffon
442e9598f8 N°3537 run_query : fix query suggestion button
Was throwing plain old HTML
Now use standard button component, and a new HtmlFactory to avoid calling \WebPage::GetP

Also change "use this query" behavior : now also submits the form directly

And : added a TODO 3.0.0 for the "query examples" buttons (will be done later)
2021-01-15 09:30:39 +01:00
Pierre Goiffon
a41229b223 N°3537 run_query : fix cannot set query arguments values 2021-01-14 17:37:38 +01:00
Pierre Goiffon
f1b972dde8 AbstractInput : add missing abstract keyword 2021-01-14 17:04:47 +01:00
Pierre Goiffon
9a5e86caea N°3617 User pref keys : add prefix and normalize naming
4 keys existing :
* notification help message => UI-Collapsible__notifications__home
* run_query "more info" section => UI-Collapsible__run_query__more-info
* RenderAllUiBlocks test page alert and section examples => UI-Collapsible__RenderAllUiBlocks__alert and UI-Collapsible__RenderAllUiBlocks__section
2021-01-14 10:08:15 +01:00
Molkobain
8df2f96dfe N°3627 - Fix "global search" results page URL not containing the query 2021-01-13 21:20:41 +01:00
Molkobain
0f72a35f48 N°3625 - Remove n:n classes from the "quick create" autocomplete 2021-01-13 21:00:20 +01:00
Molkobain
a4d52aa255 Add new MetaModel::IsLinkClass($sClass) to avoid iterating over MetaModel::GetLinkClasses() 2021-01-13 21:00:19 +01:00
Pierre Goiffon
09e531f11c N°3623 new \utils::EscapeHtml method 2021-01-13 16:10:43 +01:00
Pierre Goiffon
958566da61 Merge remote-tracking branch 'origin/support/2.7' into develop
# Conflicts:
#	application/webpage.class.inc.php
2021-01-13 15:25:24 +01:00
Molkobain
ace6215d20 N°3622 - Change "quick create" placeholder image to something with less orange 2021-01-13 11:29:22 +01:00
bruno-ds
97792ab0b1 N°3618 - add a (skipped by default) test to prove the bug
just uncomment the two 1st lines in order to use the test.
2021-01-13 11:12:34 +01:00
Molkobain
574b6609ba N°3622 - Change "quick create" and "global search" placeholders images to something less ambiguous 2021-01-13 11:11:52 +01:00
Molkobain
0a4db9bd50 N°3621 - Add config. parameter to disable "global search" history 2021-01-13 10:53:11 +01:00
Molkobain
9fccb6dd3f N°2847 - Global search: Fix wrong history results parameter (was using the one from "quick create") 2021-01-13 10:47:03 +01:00
Molkobain
9221899525 N°3620 - Add confg. parameter to disable "quick create" history 2021-01-13 10:40:51 +01:00
Pierre Goiffon
6a33fbc7b3 N°3617 run_query "more information" section : collapsible state is saved back again
The original key name was "runQuery" (f9511aba) but this was too vague and didn't follow naming conventions. SO I decided to renamed it "run_query__more-info", as anyway existing keys won't be used (see 790a675d)
2021-01-13 09:34:24 +01:00
Pierre Goiffon
790a675d90 N°3617 collapsible components state saving : use user pref instead of localStorage
No migration from existing localStorage keys (introduced in 2.5.0 with N°1030) as the console UI has dramatically change in 3.0.0 : will be useful to show all the collapsible sections content once again !

Note that an iTop instance identifier was used in the localStorage key, it is no longer needed as we're getting the user pref directly from the current instance.

Thanks @Molkobain for the help !
2021-01-13 09:33:44 +01:00
Pierre Goiffon
09da54ee56 N°3617 collapsible components state saving : use JQuery widget options instead of a method
This is the way JQuery widget are intended to work !
Thanks @Molkobain for the review !
2021-01-13 09:29:58 +01:00
Eric
028a3ccec8 N°2677 - Add style definition for classes (too much style) 2021-01-13 08:58:27 +01:00
Eric
503817e572 N°2737 - Migrate WebPage::table() to UIBlocks 2021-01-12 16:17:33 +01:00
Molkobain
e0fe657f27 N°2677 - Fix regression introduced in previous commit (itop-request-mgmt-itil DM not completely migrated) 2021-01-12 15:49:00 +01:00
acognet
3a83d2ad89 N°2737 - Migrate table to DataTables plugin to be iso with the end-users portal - fix actions doesn't work after class change 2021-01-12 11:00:46 +01:00
acognet
ccb6bb943c N°2737 - Migrate table to DataTables plugin to be iso with the end-users portal - fix actions doesn't work after class change 2021-01-12 10:34:24 +01:00
Eric
f0307afe2b N°2677 - Add style definition for classes (change code tag) 2021-01-12 10:20:59 +01:00
Eric
05b75cf98a N°2311 - deprecate 'cas_include_path' configuration parameter 2021-01-11 14:34:55 +01:00
Eric
24a6d6b6fd N°2677 - Add style definition for classes (change code tag) 2021-01-11 12:18:33 +01:00
acognet
cdaf431d24 N°2508 - Include Obsolescence icon within list and autocomplete - cleanup code never used 2021-01-08 10:57:30 +01:00
acognet
cf1f49ebc9 N°3604 - Auto refresh no more working on menu 3.0 2021-01-08 09:50:43 +01:00
acognet
06ecfb5814 N°2508 - Include Obsolescence icon within list and autocomplete - case of search filters 2021-01-08 09:48:35 +01:00
acognet
354fc1949b N°2737 - Migrate table to DataTables plugin to be iso with the end-users portal - fix test on $bShowObsoleteData for display message 2021-01-08 09:43:57 +01:00
Eric
fc2b220197 N°2311 - deprecate 'cas_include_path' configuration parameter 2021-01-07 15:58:12 +01:00
odain
acea2110ac N°3606 - Add a basic html page type to TwigBase Controller 2021-01-07 10:35:39 +01:00
acognet
176111794e N°2737 - Migrate table to DataTables plugin to be iso with the end-users portal - fix enable/disable add button 2021-01-07 09:58:36 +01:00
Eric
3e051e38c3 N°2677 - Add style definition for classes (fix XML migration) 2021-01-06 16:10:12 +01:00
Eric
d4aeb4b157 N°2677 - Add style definition for classes 2021-01-06 14:06:46 +01:00
Eric
fca123e127 Fix setup when maintenance mode is active 2021-01-06 14:06:46 +01:00
Molkobain
dc2f8fe9bb N°3594 - Fix label when an attribute is an external field on a remote external key 2021-01-06 13:59:49 +01:00
acognet
f10d3893f4 N°2737 - Migrate table to DataTables plugin to be iso with the end-users portal - fix change in "configure this list" 2021-01-06 11:30:08 +01:00
Stephen Abello
05cf1bc83a N°2847 Add JQueryUI modal CSS to modal SCSS file 2021-01-06 11:19:43 +01:00
acognet
3791306be7 3540 - Migrate printable version of an object - management of the activities of an object 2021-01-06 09:40:30 +01:00
Stephen Abello
1353917994 💚 Fix CI by removing precompile stylesheet 2021-01-05 17:51:34 +01:00
Stephen Abello
5ef75772f0 N°3516 Add Fullmoon 🌕 to theme mechanism, update test-red theme for 3.0 2021-01-05 17:16:30 +01:00
Eric
82e98ced85 N°2677 - Add style definition for enums (MetaModel::GetEnumStyle() API) 2021-01-05 13:45:23 +01:00
Eric
2dea5447b4 N°2677 - Add style definition for enums (Default values) 2021-01-05 11:07:18 +01:00
Molkobain
9aa379981e N°2847 - Remove unused SCSS files 2021-01-04 14:08:44 +01:00
Molkobain
050c00c791 N°2847 - Add SCSS shame file for hacks (https://sass-guidelin.es/#shame-file) 2021-01-04 10:20:52 +01:00
Eric
551689d445 N°2677 - Add style definition for enums (Fix CI) 2021-01-04 09:05:36 +01:00
Eric
dd4d40ce81 N°2677 - Add style definition for enums (Fix list display) 2020-12-31 17:02:44 +01:00
Eric
d77f374918 N°2677 - Add style definition for enums (refactor & fix CI) 2020-12-31 16:34:59 +01:00
Eric
640b6a7288 N°2677 - Add style definition for enums (fix CI) 2020-12-31 13:22:01 +01:00
Eric
5128833a62 N°2677 - Add style definition for enums (fix CI) 2020-12-31 12:02:43 +01:00
Eric
f1ad55c86c N°2677 - Add style definition for enums 2020-12-31 11:25:00 +01:00
Eric
e20f6d7564 N°3540 - Migrate printable version of an object (dashboard) 2020-12-29 18:31:59 +01:00
Eric
ec26a8d343 N°2737 - ExtraParams check in DisplayBlock 2020-12-29 18:31:09 +01:00
Eric
542be44740 N°2737 - ExtraParams check in DisplayBlock 2020-12-29 11:57:14 +01:00
denis.flaven@combodo.com
cdbb783ebc N°3584 - declare the TagSetFieldData class for information in the meta XML 2020-12-29 11:56:33 +01:00
Eric
e602a93829 N°2737 - ExtraParams check in DisplayBlock 2020-12-29 11:41:01 +01:00
Eric
b7bcd4fe7b N°2737 - Fix export dialog 2020-12-28 16:03:46 +01:00
Eric
f01bec4003 Fix Setup (remove double ajax calls) 2020-12-28 11:23:21 +01:00
Pierre Goiffon
9be3ff3cca N°3564 Use CollapsibleSectionState for help 2020-12-24 11:48:30 +01:00
Pierre Goiffon
2c0d001721 N°3564 Alert and CollapsibleSectionState can now be saved 2020-12-24 11:48:30 +01:00
Pierre Goiffon
d3efd3ea0e 🎨 N°3563 user preferences page : some formatting 2020-12-24 10:04:50 +01:00
Pierre Goiffon
e18df16387 N°3583 update max items per list from 10 to 20 2020-12-24 09:59:19 +01:00
Molkobain
4ddfbf6559 N°3477 - Rename methods of the new iPageUIBlockExtension API 2020-12-23 16:25:36 +01:00
Molkobain
1d02ada8dc Update other dictionaries to mark modified entry (other languages are already ok) 2020-12-23 15:48:02 +01:00
Molkobain
608c868b53 N°3561 - Fix all header messages (readonly, log kpi, app. messages, archive mode, ...) 2020-12-23 14:53:06 +01:00
Molkobain
65639517ff N°2847 - Alert: Fix layout when either title or body is empty 2020-12-23 14:38:34 +01:00
Molkobain
1f64e4eda4 Change dictionary for a simpler message 2020-12-23 10:54:53 +01:00
Molkobain
7a446941e0 N°3123 - Fix list dashlet not displaying object type anymore 2020-12-23 10:53:46 +01:00
Molkobain
0a87ccaa77 PHPDoc fixes 2020-12-23 09:53:01 +01:00
Molkobain
06a829ce35 N°2847 - Alert: Rework $bIsOpenedByDefault property integration 2020-12-22 18:22:59 +01:00
Molkobain
fc3f096823 N°2847 - Alert: Add properties to set if closable or collapsible 2020-12-22 18:22:59 +01:00
Molkobain
874bf38316 N°2844 - Fix object panel layout during a transition 2020-12-22 18:22:58 +01:00
Molkobain
27eb3a8509 N°3518 - Start refactor of object details to match block / template design 2020-12-22 18:22:58 +01:00
Molkobain
c14476ec73 N°3518 - Refactor some parts of the WebPage for a better overloading in derivated classes 2020-12-22 18:22:58 +01:00
Molkobain
c3b8abee47 N°2847 - Fix icon not displaying for global search and quick create boxes 2020-12-22 18:22:58 +01:00
Molkobain
ece8803259 N°2127 - Add possibility to exit fullscreen with "Esc" key 2020-12-22 18:22:58 +01:00
Pierre Goiffon
4541aa4446 N°3537 run_query : use H2 for content titles 2020-12-22 18:20:36 +01:00
Pierre Goiffon
679b25f3fb 🗑️ Deprecate WebPage collapsible section methods 2020-12-22 18:09:19 +01:00
Pierre Goiffon
337aebfed9 N°3537 run_query : use panel for OQL error 2020-12-22 17:47:10 +01:00
Pierre Goiffon
5e22c442ce N°3537 new CollapsibleSection component for run_query 2020-12-22 17:18:13 +01:00
Pierre Goiffon
4ebe3d2b2f Fix null returned by Field::IsHidden 2020-12-21 15:23:46 +01:00
jbostoen
4123c6213d 🌐 NL : distinguish between approval (goedkeuring) <=> acceptance (acceptatie) (#182)
Co-authored-by: jbostoen <->
2020-12-21 14:08:29 +01:00
odain
4089e853f8 N°3562 - Cleanup removed images - fix ci 2020-12-21 10:57:29 +01:00
odain
c1fc502916 N°3562 - Cleanup removed images in light-grey.scss 2020-12-21 10:27:23 +01:00
odain
a1030e3f81 clean light-grey.scss from non existing images 2020-12-21 10:08:36 +01:00
Eric
ffc0bd0a9c N°3540 - Migrate printable version of an object (fix js error) 2020-12-18 18:02:43 +01:00
Pierre Goiffon
8dddf90838 ♻️ new var_export filter for bolean values 2020-12-18 17:51:43 +01:00
Eric
2608c071d0 N°3540 - Migrate printable version of an object (change some css classes) 2020-12-18 16:06:51 +01:00
acognet
1f4d1d1959 N°3540 - Migrate printable version of an object 2020-12-18 11:46:05 +01:00
acognet
3876fb9d62 N°3540 - Migrate printable version of an object 2020-12-18 11:41:31 +01:00
Pierre Goiffon
c8dbf88c03 ♻️ new FieldFactory
Idea is to remove the aParams parameter from the Field object
And also allow to pass subblocks for the input value instead of only raw HTML
2020-12-18 11:32:13 +01:00
Molkobain
f8b8dd0bc6 Alert: Rename event callback to match conventions 2020-12-17 16:01:21 +01:00
Molkobain
efe61c7b14 N°2844 - Activity panel: Fix user medallion not displayed when filtering entries 2020-12-17 15:33:57 +01:00
Molkobain
d664c26fb7 N°2127 - Fix fullscreen closing on content click 2020-12-17 13:37:04 +01:00
Molkobain
47cebb8671 N°2127 - Fix visual glitch when several large fields in the form 2020-12-17 13:09:11 +01:00
Molkobain
f525e161a8 N°2127 - Fix field content overlapping on rest of the UI (Backoffice) 2020-12-17 12:12:04 +01:00
Molkobain
a00c573866 Add JS helpers to CombodoBackofficeToolbox to put/remove an element from fullscreen mode 2020-12-17 12:12:04 +01:00
Molkobain
745ffc7cd2 N°3379 - Improve hint display (not definitive) 2020-12-17 12:12:03 +01:00
Pierre Goiffon
dbece17235 Alert : use same data-role value for all collapsible actions 2020-12-17 09:08:45 +01:00
vdumas
ceb48c2ead Enrich dictionary for notify flag on Contact 2020-12-16 18:43:28 +01:00
Pierre Goiffon
9580a20f3f Alert component : title is now clickable to expand/collapse 2020-12-16 18:03:52 +01:00
Pierre Goiffon
85e9073228 N°3537 run_query : use Field instead of InputWithLabel 2020-12-16 17:45:13 +01:00
Pierre Goiffon
2b0691daa6 N°3537 run_query : exception message as an alert Component 2020-12-16 17:45:12 +01:00
Eric
c1e25b121e N°2737 - ExtraParams check in DisplayBlock 2020-12-16 17:44:08 +01:00
Eric
31f3bf9368 N°2847 - move console specific methods from BlockRenderer to ConsoleBlockRenderer 2020-12-16 17:44:08 +01:00
Thomas Casteleyn
42354ba794 Improve secure connection detection (#161)
The previous code broke the setup page when the iTop server is behind a proxy that handles SSL termination.
Now the detection also checks the `HTTP_X_FORWARDED_PROTO` and `HTTP_X_FORWARDED_PROTOCOL` HTTP headers. 
For any other page than the setup, the check is unchanged.

Many thanks @Hipska !
2020-12-16 15:37:48 +01:00
Eric
1b115624a2 N°2737 - RenderBlockTemplate enhancement, uilinkswidget UIBlock refactor 2020-12-16 11:05:30 +01:00
Eric
d2bc651fc6 N°3123 - ExtraParams check 2020-12-16 09:05:05 +01:00
Pierre Goiffon
a20fd2278f N°3537 Code review
Thanks @Molkobain !
2020-12-16 08:06:53 +01:00
Pierre Goiffon
cb4fb15b0a Alert : remove return type 2020-12-16 07:56:13 +01:00
Pierre Goiffon
102123441d Alert component : fix regression introduced in 3d27e592 2020-12-15 17:22:38 +01:00
Pierre Goiffon
4bb59548d0 N°3537 run_query : replace main form by components 2020-12-15 17:09:39 +01:00
Pierre Goiffon
3d27e59269 Alert component : allow to be closed by default 2020-12-15 17:08:54 +01:00
Pierre Goiffon
ebe30a88a1 N°3129 remove useless final keywords 2020-12-15 16:27:00 +01:00
Pierre Goiffon
a5d26b93e9 ThemeHandlerTest : rename source files
They are used solely in the test. And the test does the SCSS compilation and compares the results to expected files. So changing anything in the test source SCSS and we need to change the expected results too ! This isn"t necessary...

But there were some confusions as the css/light-grey.scss file is modified very often, and one of the test source file has the same name !
Adding the prefix DO_NOT_CHANGE should avoid such errors in the future O:)
2020-12-15 16:24:31 +01:00
Eric
afca91089a N°3123 - ExtraParams check 2020-12-15 14:57:06 +01:00
Eric
893787d7f9 Fix typo 2020-12-15 14:46:03 +01:00
Eric
a9bab22720 N°3123 - ExtraParams check (only in dev) 2020-12-15 14:46:02 +01:00
Molkobain
13018c9df7 Fix CI due to 64fca330 2020-12-15 13:23:27 +01:00
Eric
c451293370 N°3123 - ExtraParams check 2020-12-15 12:14:10 +01:00
Molkobain
64fca3306f N°3547 - Fix fullscreen button on HTML field not displaying correctly 2020-12-15 11:39:06 +01:00
Pierre Goiffon
3cce93be95 UIExtKeyWidget : Fix parameters that must be optionals 2020-12-15 10:24:59 +01:00
odain
916f9b367e Merge branch 'feature/restapi-pass-jsondata-asfile2' into develop 2020-12-14 23:22:52 +01:00
odain
c6816318a9 N°3455: test when no json_data is passed 2020-12-14 23:19:54 +01:00
Eric
9df80b9f79 N°3123 - Fix table counts on search results 2020-12-14 18:31:32 +01:00
odain
59e9cdbfe6 N°3455: review with Romain (new code documented) 2020-12-14 18:23:31 +01:00
odain
7f0e8abc09 N°3455: clean code + test after review 2020-12-14 18:22:15 +01:00
Eric
c106caf924 N°3123 - Fix dashlets GroupBy and Object List 2020-12-14 16:37:23 +01:00
Pierre Goiffon
c06e176d57 Templates : remove auto closing tags
We are not using XHTML anymore but HTML 5
2020-12-14 16:29:57 +01:00
Pierre Goiffon
62bb0b9b78 Improve RenderAllUiBlocks 2020-12-14 15:42:56 +01:00
Eric
70beeb726a N°3123 - Fix "view_link" parameter for shortcuts preferences 2020-12-14 09:54:01 +01:00
acognet
c173f0b5d6 N°3123 : Fix create shortcuts and set preferences 2020-12-14 09:23:12 +01:00
acognet
43a2b5cda6 N°3123 : Fix create shortcuts and set preferences 2020-12-11 19:23:35 +01:00
Pierre Goiffon
17cecde604 Fix errors in setup/modelfactory.class.inc.php 2020-12-11 10:49:41 +01:00
Pierre Goiffon
728c09d97d N°3129 Fix compatibility with PHP 8 for \MFElement::ReplaceWith
New method added in PHP 8 : \DOMChildNode::replaceWith with a different signature (both visibility and parameters)
2020-12-11 10:13:10 +01:00
acognet
eb89c52bae N°3123 : Fix create shortcuts 2020-12-11 10:08:57 +01:00
Pierre Goiffon
e3895f284b N°3512 fix setup crashing if env-production doesn't exist 2020-12-11 09:26:19 +01:00
Pierre Goiffon
50342b6dfe Update compiled CSS 2020-12-10 18:28:03 +01:00
Pierre Goiffon
8265b9b034 N°3416 fix PHPDoc 2020-12-10 18:10:45 +01:00
Pierre Goiffon
96e7f57a34 Merge remote-tracking branch 'origin/support/2.7' into develop
# Conflicts:
#	application/ajaxwebpage.class.inc.php
#	application/csvpage.class.inc.php
#	application/itopwebpage.class.inc.php
#	application/webpage.class.inc.php
#	application/xmlpage.class.inc.php
#	core/config.class.inc.php
#	css/css-variables.scss
#	datamodels/2.x/version.xml
#	pages/ajax.document.php
#	pages/ajax.render.php
#	pages/ajax.searchform.php
#	sources/application/TwigBase/Controller/Controller.php
2020-12-10 18:08:11 +01:00
Molkobain
abf6d5422e Merge remote-tracking branch 'origin/feature/faf-cke-mentions' into develop 2020-12-10 17:50:07 +01:00
Eric
2bef89137e N°3123 - DataTables rework (WIP) 2020-12-10 17:13:15 +01:00
Stephen Abello
a0ac1c70a9 N°2847 * Update CKeditor to 4.15.1
* Add iTop default languages to ckeditor
* Change CKeditor skin from flat to Moono-Lisa
2020-12-10 12:12:13 +01:00
Stephen Abello
1ccabe645b N°2847 * Update CKeditor to 4.15.1
* Add iTop default languages to ckeditor
* Change CKeditor skin from flat to Moono-Lisa
2020-12-10 11:18:09 +01:00
Pierre Goiffon
b03c5232b0 N°3253 Fix setup error message
Thanks @Hipska and @Molkobain !
2020-12-10 10:31:58 +01:00
Molkobain
97c77b612e N°2875 - Add config. param. 'mentions.allowed_classes' to choose which classes (eg. Person / FunctionalCI) can be mentioned through which char. (eg. @ / #) 2020-12-10 10:27:34 +01:00
Molkobain
e96400c43b N°2875 - Improve global implementation and integration with the trigger system 2020-12-09 23:19:39 +01:00
Molkobain
c22f019ea1 N°2847 - Add data-[role|object-class|object-id] attributes to the HTML sanitizer white list for anchors 2020-12-09 22:23:37 +01:00
Molkobain
bc3c46b566 N°2847 - Rework ckeditor SCSS to proper files and variables 2020-12-09 22:08:46 +01:00
Molkobain
a8431c5810 N°2875 - Update branch to current develop branch state 2020-12-09 20:06:40 +01:00
Molkobain
68332896ad Merge branch 'develop' into feature/faf-cke-mentions
# Conflicts:
#	application/cmdbabstract.class.inc.php
#	css/css-variables.scss
#	css/light-grey.scss
#	datamodels/2.x/installation.xml
2020-12-09 19:58:26 +01:00
Stephen Abello
dbda9512e5 N°2560 Prevent double submit on forms 2020-12-09 15:48:06 +01:00
Pierre Goiffon
c4756e8cec Upgrade version n° 2020-12-08 18:47:24 +01:00
Eric
b8a42843e0 N°3123 - DisplayBock BlockCvs 2020-12-08 16:29:16 +01:00
acognet
10c3f9f633 N°3123 : Improved JavaScript management in web pages and ajax pages - fix for datatable 2020-12-08 11:04:46 +01:00
Eric
05e802b74a N°3123 - Fix create new object link 2020-12-08 10:13:05 +01:00
acognet
0c8d78d753 N°3123 : refactoring ajax call for datatables 2020-12-08 09:38:24 +01:00
acognet
5ccb12453a N°3123 : Improved JavaScript management in web pages and ajax pages 2020-12-08 08:59:25 +01:00
odain
37351d6b3e N°3464: fix ci 2020-12-07 16:23:17 +01:00
odain
57a085eec1 N°3464: move fix in itop-fence + fix/enhance rest api test 2020-12-07 15:56:35 +01:00
Eric
0808a76226 N°3123 - Fix empty popup menus 2020-12-07 14:29:01 +01:00
odain
0019595923 N°3464: fix ci 2020-12-07 00:44:39 +01:00
odain
4d61c14f80 N°3464 add test in phpunit.xml.dit to validate the fix 2020-12-07 00:12:31 +01:00
odain
cf1b613923 N°3464 REST comment field not working anymore 2020-12-06 23:54:27 +01:00
Molkobain
815b2e1670 N°2847 - Restore components/layouts SCSS files to keep matching SCSS conventions 2020-12-04 23:03:17 +01:00
Pierre Goiffon
c46b046254 N°3253 Fix setup always displaying an error
Woops this was a debug I forgot to change
2020-12-04 18:30:28 +01:00
Pierre Goiffon
70efa37109 N°3253 Fix setup crashing on incompatible PHP versions (#178)
We now have a new setup landing page. The old one is renamed setup/wizard.php

This contains revert for "🐛 Fix setup homepage error with PHP < 7.1.0" (91c6916d86) => it was one of the modifications that caused the setup to crash before this !
2020-12-04 18:28:39 +01:00
Stephen Abello
13d2699011 N°2629 Allow user to choose default expanded/collapsed toolbar for richtext editors 2020-12-04 10:53:22 +01:00
Pierre Goiffon
1304e2eb2d N°3416 Updates after code review v2 :) 2020-12-04 08:51:07 +01:00
Pierre Goiffon
3cf16627c1 Merge remote-tracking branch 'origin/support/2.6' into support/2.7
# Conflicts:
#	pages/ajax.render.php
2020-12-03 18:18:36 +01:00
Pierre Goiffon
4aaa237bf9 🔖 Prepare 2.7.3 version 2020-12-03 18:15:58 +01:00
Pierre Goiffon
cece15d10c N°3416 Updates after code review
Many thanks @bruno-ds !
* add comments to explain intentions
* fix indentations
2020-12-03 17:45:44 +01:00
Stephen Abello
cc6e9492fd N°2847 Fix blocks import paths in notifications following directories refactor 2020-12-03 15:26:40 +01:00
Stephen Abello
7f97df02ce N°2847 Add TODO to datamodel viewer 2020-12-03 15:04:57 +01:00
Stephen Abello
f28fc15a8d N°2847 Replace Notifications page header by an Alert block 2020-12-03 15:04:56 +01:00
Thomas Casteleyn
59f9cd3694 🎨 Fix the filter icon on Data model page (#168)
Fix the filter icon on Data model page
2020-12-03 13:28:59 +01:00
Pierre Goiffon
aa15e009cb 🔖 Prepare 2.7.2-2 version 2020-12-03 10:05:37 +01:00
Pierre Goiffon
b9ca2ac13d N°3416 Fix DocumentFile preview not working anymore
Was caused by X-Frame-Options http header added with N°3317

(cherry picked from commit 35d77ff642)

# Conflicts:
#	pages/ajax.render.php
2020-12-03 08:20:51 +01:00
Pierre Goiffon
80e1e0e61a N°3426 Fix no navigation menu on User object creation
Caused by a typo in js/forms-json-utils.js
Thanks @Molkobain !
2020-12-02 18:02:00 +01:00
Pierre Goiffon
ecebe4ecd5 N°3416 XFrame and cache headers optimizations
* Remove XFrame header set in \WebPage::no_cache : not this method responsability, was confusing :/
* Remove no_cache() calls when already set in page constructor (ajax_page mainly)
* Also calls everywhere the \WebPage::no_cache method instead of setting headers manually
2020-12-02 17:19:05 +01:00
Pierre Goiffon
8bfcb14d0c N°3416 XFrame-Options header is now set using a config parameter, defaults to SAMEORIGIN
Also adds an indirection (\WebPage::add_xframe_options) to set header
2020-12-02 17:17:11 +01:00
Molkobain
1cf1473d6b N°3469 - Fix variable declaration (let => var) 🤭 2020-12-02 17:01:00 +01:00
Molkobain
aa43425df3 N°3469 - Portal: Fix modal created without an ID 2020-12-02 16:59:39 +01:00
Pierre Goiffon
35d77ff642 N°3416 Fix DocumentFile preview not working anymore
Was caused by X-Frame-Options http header added with N°3317
2020-12-02 15:44:58 +01:00
Eric
2575fd6f4d N°3123 - Refactor default constants 2020-12-02 13:22:43 +01:00
Eric
15aa9e508c N°3123 - Refactor Directories 2020-12-02 13:18:01 +01:00
Stephen Abello
d1b12ee04b N°2251 Replace qtip calls by tippyjs calls 2020-12-02 10:06:24 +01:00
Pierre Goiffon
1252d760ab RenderAllUiBlocks improvements
* add call to ButtonFactory::MakeIconLink
* add some CSS customizations to h1, h2, HR
* add H2 with id to link to specific regions
* add @link PHPDoc in related components
* fix typo in alerts (title was using "alert" instead of "panel")
2020-12-02 10:03:40 +01:00
Stephen Abello
81b96b2430 N°2251 Migrate bulk modify field additional content tooltip from qtip to tippyjs 2020-12-02 09:42:20 +01:00
Stephen Abello
5dd6477cfc N°2847 Add field additional content (eg. for bulk modify) 2020-12-02 09:42:20 +01:00
Eric
5f30729127 N°3123 - Add variables for templates (html, js and css) 2020-12-01 19:09:49 +01:00
Eric
abb192eb0f N°3123 - Changed the variables in application UIBlocks 2020-12-01 19:08:49 +01:00
Pierre Goiffon
c701b518b8 Buttons component : add tooltip
Note that we will do later on a pass on accessibility, so we might add as well a title attribute, or a aria-* attribute
2020-12-01 18:34:57 +01:00
Pierre Goiffon
14ac58b999 N°3227 use Button components instead of hardcoded HTML 2020-12-01 18:19:40 +01:00
Pierre Goiffon
ae094f9bc6 N°3227 Fix typo in var names
Thanks @Molkobain (who commented in c117a23e0d)
2020-12-01 17:31:04 +01:00
Pierre Goiffon
e9d800794e ButtonFactory : new icon button method 2020-12-01 16:49:56 +01:00
BenGrenoble
7de427dc38 N°3440 Error loading module "itop-bridge-cmdb-ticket": /class[lnkFunctionalCIToProviderContract] at line 114: could not be added (already exists) with itop-service-mgmt-provider 2020-12-01 16:19:25 +01:00
Pierre Goiffon
c117a23e0d N°3227 For AttributeOQL add a new icon to pick a query from queries phrasebook
Add a new Query.is_template field (default value 'no') to filter queries usable as template.

Also lots of modifications in ExtKeyWidget, both JS and PHP objects :
* pass filter on dialog content generation (was using only targetClass, so search criteria weren't set - but search results were ok as they are made from another ajax query)
* fix loading still displayed after dialog close
* can now get the defined attribute value (was always returning the selected object id)
2020-12-01 09:40:55 +01:00
Pierre Goiffon
77b72a6eb1 📝 Add since on AttributeEnumSet 2020-11-30 18:48:33 +01:00
Pierre Goiffon
9f48de7774 🎨 extkeywidget change copyright format 2020-11-30 18:48:32 +01:00
acognet
539fa43503 N°3461 - Setup Broken with Chrome v87 2020-11-30 18:27:25 +01:00
Eric
5378361faa N°3123 - Add the possibility to create UIBlocks in extensions 2020-11-30 18:01:01 +01:00
Eric
d2d5a90637 N°3123 - Fix popup menus for lists 2020-11-30 16:47:27 +01:00
Eric
631a73e07d N°3123 - Fix breadcrumb for DisplayBlock(type: List) 2020-11-30 15:36:54 +01:00
Pierre Goiffon
c944cd29b1 📝 Fix \utils::Sanitize_Internal phpdoc
Thanks @Molkobain !
2020-11-30 15:01:09 +01:00
Pierre Goiffon
5d5a3183c0 📝 more PHPDoc for \utils::Sanitize_Internal
added more details about const that were introduced in e911290b3d
2020-11-30 14:27:52 +01:00
acognet
eb537f45f4 N°3421 - Attributes of class Person are not accessible from :current_contact in portal anymore. Only attributes of class Contact are. 2020-11-30 09:24:35 +01:00
Pierre Goiffon
cdb97baa80 🐛 DataTableFactory : fix ajax.render URL generation
Was created without approot
2020-11-30 08:03:52 +01:00
denis.flaven@combodo.com
398b5f446c Protect against empty 'precompiled theme' entry in the XML 2020-11-27 17:57:09 +01:00
Eric
4099a8ef5a N°3123 - Moved Popup Menu Items JS parts to UIBlocks 2020-11-27 17:25:50 +01:00
Eric
fd5958b764 N°3123 - Code cleanup (removed unnecessary files) 2020-11-27 17:24:56 +01:00
acognet
a2a4cd4e7a N°3426 - Wrong tab is displayed when a creation or modification form is invalidated 2020-11-27 15:20:20 +01:00
Pierre Goiffon
35215cf62f 🌐 Fix typo in comma (2 "m" !!) 2020-11-26 18:34:07 +01:00
Eric
8dda0f02f2 N°3123 - Create specific block for DisplayBlock(type: ChartAjaxPie and ChartAjaxBars) 2020-11-26 18:17:06 +01:00
Eric
efbd249e7f N°3123 - Create specific block for DisplayBlock(type: Chart) 2020-11-26 17:41:25 +01:00
Eric
cf4e8c65d2 N°3123 - Create specific block for DisplayBlock(type: List) 2020-11-26 16:50:58 +01:00
Eric
9a595e3178 N°3123 - Create specific block for DisplayBlock(type: List) 2020-11-26 16:49:43 +01:00
Vincent Dumas
14f8a5aa36 #3434 typo in FR dictionnary entry 2020-11-26 16:30:17 +01:00
Eric
a759380999 Migrates banner, header, footer in blocks for iTopWebPage 2020-11-26 15:33:49 +01:00
Stephen Abello
05ed58d741 N°2847 Reduce alerts minimized padding and add a min height to handle when there's no title and the alert is minimized 2020-11-26 14:47:29 +01:00
Stephen Abello
6b2eeeccf5 N°2847 Remove a debug line 2020-11-26 11:37:47 +01:00
Stephen Abello
340b9134c0 N°2847 Allow user to minimize/close alerts 2020-11-26 11:13:28 +01:00
odain
ba01ac715f N°3455 - Passing json_data as file to REST API 2020-11-25 18:32:54 +01:00
Eric
8f151b84c9 N°2847 - Code refactor 2020-11-25 15:27:47 +01:00
Eric
c5942a3ddd N°2847 - Code refactor 2020-11-25 15:24:27 +01:00
odain
0001e8ffc4 💚 use new ci validation 2020-10-09 10:13:51 +02:00
Eric
78f51d40f6 DBObject GetValues() 2020-07-17 15:41:52 +02:00
Eric
8bfc54e6b4 Event Service 2020-07-15 14:42:33 +02:00
Molkobain
08449b7af5 Regression: Fix iTop Hub connector not being installed (caused by dd5ac38dd4) 2019-12-17 09:49:14 +01:00
Molkobain
a4ccd835bc 💄 FAF: Mentions in caselogs 2019-12-17 09:03:32 +01:00
Molkobain
97aa758123 FAF: Mention people in caselogs 2019-12-17 09:03:32 +01:00
7643 changed files with 577078 additions and 243991 deletions

View File

@@ -77,24 +77,20 @@ Then, **for a method** of an eligible class:
:notebook: as spaces are used to mark code, the templates (`.doc/phpdoc-templates/combodo-wiki/*`) have very few indentation, thus they are awful to read (sorry).
## Installation
```
cd .doc
composer require phpdocumentor/phpdocumentor:~2 --dev
```
## Generation
`./bin/build-doc-object-manipulation` and `./bin/build-doc-extensions` contains examples of doc. generation, beware: they have to be called from the .doc directory:
```shell
cd /path/to/itop/.doc
./bin/build-doc-object-manipulation
```
the resulting documentation is written into `data/phpdocumentor/output`
1. Switch to this directory : `cd /path/to/itop/.doc`
2. `composer install`
3. `./bin/build-doc-object-manipulation`
3. `./bin/build-doc-extensions`
4. Get the generated files from `/path/to/itop/data/phpdocumentor/output`
## Dokuwiki requirements
* the template uses the [wrap plugin](https://www.dokuwiki.org/plugin:wrap).

View File

@@ -1,6 +1,6 @@
#!/bin/sh -x
rm -rf /tmp/phpdoc-twig-cache/ && rm -rf data/phpdocumentor/output/extensions/ && rm -rf data/phpdocumentor/temp/extensions/ && .doc/vendor/bin/phpdoc -c .doc/phpdoc-extensions.dist.xml -vvv
rm -rf /tmp/phpdoc-twig-cache/ && rm -rf data/phpdocumentor/output/extensions/ && rm -rf data/phpdocumentor/temp/extensions/ && ./vendor/bin/phpdoc -c ./phpdoc-extensions.dist.xml -vvv
# now wee need to lowercase every generated file because dokuwiki can't handle uppercase
cd data/phpdocumentor/output/extensions/ && for i in $( ls | grep [A-Z] ); do mv -i $i `echo $i | tr 'A-Z' 'a-z'`; done
cd ../data/phpdocumentor/output/extensions/ && for i in $(ls | grep [A-Z]); do mv -i $i $(echo $i | tr 'A-Z' 'a-z'); done

Binary file not shown.

After

Width:  |  Height:  |  Size: 983 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

View File

@@ -0,0 +1,73 @@
# iTop version history
```mermaid
%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'showBranches': true,'mainBranchName': 'develop','rotateCommitLabel': true}} }%%
gitGraph
commit id: "2016-07-06" tag: "2.3.0" type: HIGHLIGHT
branch support/2.3 order: 900
commit id: "2016-07-08" tag: "2.3.1"
commit id: "2016-12-22" tag: "2.3.3"
commit id: "2017-04-14" tag: "2.3.4"
checkout develop
commit id: "2017-07-12" tag: "2.4.0-beta" type: REVERSE
commit id: "2017-11-16" tag: "2.4.0" type: HIGHLIGHT
branch support/2.4 order: 890
commit id: "2018-02-14" tag: "2.4.1"
checkout develop
commit id: "2018-04-25" tag: "2.5.0-beta" type: REVERSE
checkout support/2.4
commit id: "2018-06-14" tag: "2.4.2"
checkout develop
commit id: "2018-06-27" tag: "2.5.0" type: HIGHLIGHT
branch support/2.5 order: 880
checkout develop
commit id: "2019-01-09" tag: "2.6.0" type: HIGHLIGHT
branch support/2.6 order: 870
commit id: "2019-03-28" tag: "2.6.1"
checkout develop
commit id: "2019-12-18" tag: "2.7.0-beta" type: REVERSE
checkout support/2.5
commit id: "2020-01-22" tag: "2.5.4"
checkout support/2.6
commit id: "2020-01-23" tag: "2.6.3"
checkout develop
commit id: "2020-01-29" tag: "2.7.0-beta2" type: REVERSE
commit id: "2020-04-01" tag: "2.7.0-1" type: HIGHLIGHT
checkout support/2.6
commit id: "2020-04-22" tag: "2.6.4"
checkout develop
branch support/2.7 order: 860
commit id: "2020-06-26" tag: "2.7.1"
checkout support/2.7
commit id: "2020-12-09" tag: "2.7.3"
commit id: "2021-03-31" tag: "2.7.4"
checkout develop
commit id: "2021-04-06" tag: "3.0.0-beta" type: REVERSE
checkout support/2.7
commit id: "2021-07-05" tag: "2.7.5"
checkout develop
commit id: "2021-07-05." tag: "3.0.0-beta2" type: REVERSE
checkout support/2.7
commit id: "2021-12-17" tag: "2.7.6"
checkout develop
commit id: "2022-01-04" tag: "3.0.0" type: HIGHLIGHT
branch support/3.0 order: 850
commit id: "2022-04-08" tag: "3.0.1"
checkout support/2.7
commit id: "2022-07-11" tag: "2.7.7"
checkout support/3.0
commit id: "2022-09-12" tag: "3.0.2-1"
checkout develop
checkout support/2.7
commit id: "2022-12-28" tag: "2.7.8"
checkout support/3.0
commit id: "2023-04-12" tag: "3.0.3"
checkout develop
commit id: "2023-06-19" tag: "3.1.0-beta" type: REVERSE
commit id: "2023-07-26" tag: "3.1.0-1" type: HIGHLIGHT
branch support/3.1 order: 840
checkout support/3.1
commit id: "2023-08-09" tag: "3.1.0-2"
```
To learn more, check the [iTop community versions history on the official wiki](https://www.itophub.io/wiki/page?id=latest:release:start).

View File

@@ -6,19 +6,20 @@ end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = false
max_line_length = 140
max_line_length = 300
tab_width = 4
ij_continuation_indent_size = 8
ij_formatter_off_tag = @formatter:off
ij_formatter_on_tag = @formatter:on
ij_formatter_tags_enabled = false
ij_formatter_tags_enabled = true
ij_smart_tabs = false
ij_visual_guides = 80,120
ij_visual_guides = 300
ij_wrap_on_typing = true
[*.css]
indent_style = tab
ij_smart_tabs = true
ij_visual_guides = none
ij_css_align_closing_brace_with_properties = false
ij_css_blank_lines_around_nested_selector = 1
ij_css_blank_lines_between_blocks = 1
@@ -38,7 +39,9 @@ ij_css_use_double_quotes = true
ij_css_value_alignment = do_not_align
[*.scss]
indent_style = tab
indent_size = 2
tab_width = 2
ij_visual_guides = none
ij_scss_align_closing_brace_with_properties = false
ij_scss_blank_lines_around_nested_selector = 1
ij_scss_blank_lines_between_blocks = 1
@@ -58,8 +61,8 @@ ij_scss_use_double_quotes = true
ij_scss_value_alignment = 0
[*.twig]
indent_style = tab
ij_smart_tabs = true
ij_visual_guides = none
ij_wrap_on_typing = false
ij_twig_keep_indents_on_empty_lines = false
ij_twig_spaces_inside_comments_delimiters = true
@@ -67,6 +70,7 @@ ij_twig_spaces_inside_delimiters = true
ij_twig_spaces_inside_variable_delimiters = true
[.editorconfig]
ij_visual_guides = none
ij_editorconfig_align_group_field_declarations = false
ij_editorconfig_space_after_colon = false
ij_editorconfig_space_after_comma = true
@@ -78,13 +82,15 @@ ij_editorconfig_spaces_around_assignment_operators = true
indent_size = 2
tab_width = 2
ij_smart_tabs = true
ij_visual_guides = none
ij_wrap_on_typing = false
ij_xml_align_attributes = true
ij_xml_align_text = false
ij_xml_attribute_wrap = normal
ij_xml_block_comment_at_first_column = true
ij_xml_keep_blank_lines = 2
ij_xml_keep_indents_on_empty_lines = false
ij_xml_keep_line_breaks = false
ij_xml_keep_line_breaks = true
ij_xml_keep_line_breaks_in_text = true
ij_xml_keep_whitespaces = false
ij_xml_keep_whitespaces_around_cdata = preserve
@@ -93,21 +99,24 @@ ij_xml_line_comment_at_first_column = true
ij_xml_space_after_tag_name = false
ij_xml_space_around_equals_in_attribute = false
ij_xml_space_inside_empty_tag = false
ij_xml_text_wrap = normal
ij_xml_text_wrap = off
[{*.bash,*.sh,*.zsh}]
indent_size = 2
tab_width = 2
ij_visual_guides = none
ij_shell_binary_ops_start_line = false
ij_shell_keep_column_alignment_padding = false
ij_shell_minify_program = false
ij_shell_redirect_followed_by_space = false
ij_shell_switch_cases_indented = false
ij_shell_use_unix_line_separator = true
[{*.cjs,*.js}]
indent_style = tab
ij_continuation_indent_size = 4
ij_smart_tabs = true
ij_visual_guides = none
ij_javascript_align_imports = false
ij_javascript_align_multiline_array_initializer_expression = false
ij_javascript_align_multiline_binary_operation = false
@@ -277,11 +286,12 @@ ij_continuation_indent_size = 4
ij_smart_tabs = true
ij_wrap_on_typing = false
ij_php_align_assignments = false
ij_php_align_class_constants = false
ij_php_align_class_constants = true
ij_php_align_group_field_declarations = false
ij_php_align_inline_comments = false
ij_php_align_key_value_pairs = false
ij_php_align_multiline_array_initializer_expression = false
ij_php_align_key_value_pairs = true
ij_php_align_match_arm_bodies = false
ij_php_align_multiline_array_initializer_expression = true
ij_php_align_multiline_binary_operation = false
ij_php_align_multiline_chained_methods = false
ij_php_align_multiline_extends_list = false
@@ -289,6 +299,7 @@ ij_php_align_multiline_for = true
ij_php_align_multiline_parameters = false
ij_php_align_multiline_parameters_in_calls = false
ij_php_align_multiline_ternary_operation = false
ij_php_align_named_arguments = false
ij_php_align_phpdoc_comments = false
ij_php_align_phpdoc_param_names = false
ij_php_anonymous_brace_style = end_of_line
@@ -297,6 +308,7 @@ ij_php_array_initializer_new_line_after_left_brace = true
ij_php_array_initializer_right_brace_on_new_line = true
ij_php_array_initializer_wrap = on_every_item
ij_php_assignment_wrap = off
ij_php_attributes_wrap = off
ij_php_author_weight = 8
ij_php_binary_operation_sign_on_next_line = false
ij_php_binary_operation_wrap = off
@@ -385,6 +397,7 @@ ij_php_new_line_after_php_opening_tag = false
ij_php_null_type_position = in_the_end
ij_php_package_weight = 28
ij_php_param_weight = 5
ij_php_parameters_attributes_wrap = off
ij_php_parentheses_expression_new_line_after_left_paren = false
ij_php_parentheses_expression_right_paren_on_new_line = false
ij_php_phpdoc_blank_line_before_tags = true
@@ -406,6 +419,8 @@ ij_php_see_weight = 3
ij_php_since_weight = 28
ij_php_sort_phpdoc_elements = true
ij_php_space_after_colon = true
ij_php_space_after_colon_in_enum_backed_type = true
ij_php_space_after_colon_in_named_argument = true
ij_php_space_after_colon_in_return_type = true
ij_php_space_after_comma = true
ij_php_space_after_for_semicolon = true
@@ -419,6 +434,8 @@ ij_php_space_before_catch_parentheses = true
ij_php_space_before_class_left_brace = true
ij_php_space_before_closure_left_parenthesis = true
ij_php_space_before_colon = true
ij_php_space_before_colon_in_enum_backed_type = false
ij_php_space_before_colon_in_named_argument = false
ij_php_space_before_colon_in_return_type = false
ij_php_space_before_comma = false
ij_php_space_before_do_left_brace = true
@@ -453,6 +470,7 @@ ij_php_spaces_around_equality_operators = true
ij_php_spaces_around_logical_operators = true
ij_php_spaces_around_multiplicative_operators = true
ij_php_spaces_around_null_coalesce_operator = true
ij_php_spaces_around_pipe_in_union_type = false
ij_php_spaces_around_relational_operators = true
ij_php_spaces_around_shift_operators = true
ij_php_spaces_around_unary_operator = false
@@ -486,6 +504,7 @@ ij_php_while_on_new_line = false
[{*.har,*.jsb2,*.jsb3,*.json,.babelrc,.eslintrc,.stylelintrc,bowerrc,composer.lock,jest.config}]
indent_size = 2
ij_visual_guides = none
ij_json_keep_blank_lines_in_code = 0
ij_json_keep_indents_on_empty_lines = false
ij_json_keep_line_breaks = true
@@ -500,6 +519,7 @@ ij_json_wrap_long_lines = false
[{*.htm,*.html,*.sht,*.shtm,*.shtml}]
indent_style = tab
ij_smart_tabs = true
ij_visual_guides = none
ij_html_add_new_line_before_tags = body,div,p,form,h1,h2,h3
ij_html_align_attributes = true
ij_html_align_text = false
@@ -525,12 +545,31 @@ ij_html_space_after_tag_name = false
ij_html_space_around_equality_in_attribute = false
ij_html_space_inside_empty_tag = false
ij_html_text_wrap = normal
ij_html_uniform_ident = false
[{*.markdown,*.md}]
ij_visual_guides = none
ij_markdown_force_one_space_after_blockquote_symbol = true
ij_markdown_force_one_space_after_header_symbol = true
ij_markdown_force_one_space_after_list_bullet = true
ij_markdown_force_one_space_between_words = true
ij_markdown_keep_indents_on_empty_lines = false
ij_markdown_max_lines_around_block_elements = 1
ij_markdown_max_lines_around_header = 1
ij_markdown_max_lines_between_paragraphs = 1
ij_markdown_min_lines_around_block_elements = 1
ij_markdown_min_lines_around_header = 1
ij_markdown_min_lines_between_paragraphs = 1
[{*.yaml,*.yml}]
indent_size = 2
ij_visual_guides = none
ij_yaml_align_values_properties = do_not_align
ij_yaml_autoinsert_sequence_marker = true
ij_yaml_block_mapping_on_new_line = false
ij_yaml_indent_sequence_value = true
ij_yaml_keep_indents_on_empty_lines = false
ij_yaml_keep_line_breaks = true
ij_yaml_space_before_colon = true
ij_yaml_sequence_on_new_line = false
ij_yaml_space_before_colon = false
ij_yaml_spaces_within_braces = true
ij_yaml_spaces_within_brackets = true

48
.gitattributes vendored Normal file
View File

@@ -0,0 +1,48 @@
# Set the default behavior, in case people don't have core.autocrlf set.
* text=auto
# Explicitly declare text files you want to always be normalized and converted
# to native line endings on checkout.
*.bash text eol=lf
*.bat text eol=lf
*.cmd text eol=lf
*.css text eol=lf
*.scss text eol=lf
*.dist text eol=lf
.editorconfig text eol=lf
.env* text eol=lf
.gitignore text eol=lf
.htaccess text eol=lf
*.htm text eol=lf
*.html text eol=lf
*.ini text eol=lf
*.js text eol=lf
*.json text eol=lf
*.lock text eol=lf
*.md text eol=lf
*.php text eol=lf
*.php_cs text eol=lf
*.php8 text eol=lf
*.plex text eol=lf
*.sh text eol=lf
*.svg text eol=lf
*.ts text eol=lf
*.twig text eol=lf
*.txt text eol=lf
*.xml text eol=lf
*.xsd text eol=lf
*.yaml text eol=lf
*.yml text eol=lf
# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpeg binary
*.jpg binary
*.gif binary
*.ico binary
*.pdf binary
*.swf binary
*.zip binary
*.ttf binary
*.woff binary
*.woff2 binary

15
.gitignore vendored
View File

@@ -19,7 +19,7 @@
# composer reserver directory, from sources, populate/update using "composer install"
vendor/*
test/vendor/*
tests/*/vendor/*
# all conf but listing prevention
/conf/**
@@ -32,6 +32,8 @@ test/vendor/*
!/data/.htaccess
!/data/index.php
!/data/web.config
!/data/exclude.txt
!/data/.compilation-symlinks
# iTop extensions
/extensions/**
@@ -43,9 +45,13 @@ test/vendor/*
!/log/index.php
!/log/web.config
# PHPUnit cache file
/tests/php-unit-tests/.phpunit.result.cache
# Jetbrains
/.idea/**
!/.idea/IntelliLang.xml
# doc. generation
/.doc/vendor
@@ -141,4 +147,9 @@ local.properties
.scala_dependencies
.worksheet
/css/setup.css
# Mac
.DS_Store
# Windows
Thumbs.db

15
.idea/IntelliLang.xml generated Normal file
View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="LanguageInjectionConfiguration">
<injection language="InjectablePHP" injector-id="xml">
<display-name>iTop - Class method code</display-name>
<place><![CDATA[xmlTag().withLocalName(string().equalTo("code"))]]></place>
<xpath-condition>name(..) = 'method' and count(/itop_design) = 1</xpath-condition>
</injection>
<injection language="InjectablePHP" injector-id="xml">
<display-name>iTop - Snippet code</display-name>
<place><![CDATA[xmlTag().withLocalName(string().equalTo("snippet"))]]></place>
<xpath-condition>name(..) = 'snippets' and count(/itop_design) = 1</xpath-condition>
</injection>
</component>
</project>

View File

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

View File

@@ -1,6 +1,6 @@
<?php
/**
* Copyright (C) 2010-2020 Combodo SARL
* Copyright (C) 2010-2023 Combodo SARL
*
* This file is part of iTop.
*
@@ -19,16 +19,23 @@
*
*/
$iTopFolder = __DIR__ . "/../../" ;
/**
* Alias for `composer show -loD`
* You can also use `composer outdated -D`
*
* @link https://getcomposer.org/doc/03-cli.md#show
*/
require_once ("$iTopFolder/approot.inc.php");
$iTopFolder = __DIR__."/../../";
require_once("$iTopFolder/approot.inc.php");
$sApproot = APPROOT;
$aTrace = array();
$aParamsConfig = array(
'composer-path' => array(
'default' => 'composer.phar',
)
'default' => 'composer',
),
);
$aParamsConfigNotFound = array_flip(array_keys($aParamsConfig));
$aGivenArgs = $argv;

View File

@@ -1,6 +1,6 @@
<?php
/**
* Copyright (C) 2010-2020 Combodo SARL
* Copyright (C) 2010-2023 Combodo SARL
*
* This file is part of iTop.
*
@@ -36,22 +36,38 @@ clearstatcache();
$oiTopComposer = new iTopComposer();
$aDeniedButStillPresent = $oiTopComposer->ListDeniedButStillPresent();
echo "\n";
foreach ($aDeniedButStillPresent as $sDir)
{
if (! preg_match('#[tT]ests?/?$#', $sDir))
if (false === iTopComposer::IsTestDir($sDir))
{
echo "\nfound INVALID denied test dir: '$sDir'\n";
echo "ERROR found INVALID denied test dir: '$sDir'\n";
throw new \Exception("$sDir must end with /Test/ or /test/");
}
try
{
SetupUtils::rrmdir($sDir);
echo "Remove denied test dir: '$sDir'\n";
}
catch (\Exception $e)
{
echo "\nFAILED to remove denied test dir: '$sDir'\n";
if (false === file_exists($sDir)) {
echo "INFO $sDir is in denied list, but not existing on disk => skipping !\n";
continue;
}
try {
SetupUtils::rrmdir($sDir);
echo "OK Remove denied test dir: '$sDir'\n";
}
catch (\Exception $e) {
echo "\nFAILED to remove denied test dir: '$sDir'\n";
}
}
$aAllowedAndDeniedDirs = array_merge(
$oiTopComposer->ListAllowedTestDir(),
$oiTopComposer->ListDeniedTestDir()
);
$aExistingDirs = $oiTopComposer->ListAllTestDir();
$aMissing = array_diff($aExistingDirs, $aAllowedAndDeniedDirs);
if (false === empty($aMissing)) {
echo "Some new tests dirs exists !\n"
.' They must be declared either in the allowed or denied list in '.iTopComposer::class." (see N°2651).\n"
.' List of dirs:'."\n".var_export($aMissing, true);
}

13
.make/git-hooks/README.md Normal file
View File

@@ -0,0 +1,13 @@
# Git hooks for iTop
## ❓ Goal
Those [git hooks](https://git-scm.com/docs/githooks) aims to ease developing on [iTop](https://github.com/Combodo/iTop).
## ☑ Available hooks
* pre-commit : rejects commit if you have at least one SCSS file staged, and no CSS file
## ⚙ Install
Just run install.php !

View File

@@ -0,0 +1,26 @@
<?php
$aHooks = [
'pre-commit.php',
];
$sAppRoot = dirname(__DIR__, 2);
foreach ($aHooks as $sSourceHookFileName) {
echo "Processing for `{$sSourceHookFileName}`...\n";
$sSourceHookPath = __DIR__.DIRECTORY_SEPARATOR.$sSourceHookFileName;
$aPathParts = pathinfo($sSourceHookFileName);
$sTargetHookPath = $sAppRoot.DIRECTORY_SEPARATOR.'.git'.DIRECTORY_SEPARATOR.'hooks'.DIRECTORY_SEPARATOR.$aPathParts['filename'];
if (file_exists($sTargetHookPath) || is_link($sTargetHookPath)) {
echo "Existing $sTargetHookPath ! Removing...";
unlink($sTargetHookPath);
echo "OK !\n";
}
echo "Creating symlink for hook in $sTargetHookPath...";
symlink($sSourceHookPath, $sTargetHookPath);
echo "OK !\n";
}

View File

@@ -0,0 +1,49 @@
#!/usr/bin/php
<?php
/**
* Reject any commit containing .scss files, but no .css file !
*/
echo "Checking files staged...\n";
$sFilesToCommit = shell_exec('git diff --cached --name-only --diff-filter=ACMRT');
$aFilesToCommit = explode("\n", $sFilesToCommit);
$aScssFiles = GetFilesWithExtension('scss', $aFilesToCommit);
if (count($aScssFiles) === 0) {
echo "No scss file : OK to go !\n";
exit(0);
}
$aCssFiles = GetFilesWithExtension('css', $aFilesToCommit);
if (count($aCssFiles) === 0) {
echo "There are SCSS files staged but no CSS file : REJECTING commit.\n";
echo "You must add the compiled SCSS files by running the setup !\n";
exit(1);
}
echo "We have SCSS but also CSS => OK to commit !\n";
exit(0);
function GetFilesWithExtension($sExtension, $aFiles) {
return array_filter(
$aFiles,
function($item) use ($sExtension) {
return (endsWith($item, '.'.$sExtension));
}
);
}
function endsWith( $haystack, $needle ) {
$length = strlen( $needle );
if( !$length ) {
return true;
}
return substr( $haystack, -$length ) === $needle;
}
function exitWithMessage($sMessage, $iCode) {
echo $sMessage;
exit($iCode);
}

View File

@@ -1,20 +1,42 @@
<?php
/**
* script used to sort license file (usefull for autogeneration)
* Example: php
* script used to sort license file (useful for autogeneration)
*
* Requirements :
* * bash (on Windows, use Git Bash)
* * composer (if you use the phar version, mind to create a `Composer` alias !)
* * JQ command
* to install on Windows :
* `curl -L -o /usr/bin/jq.exe https://github.com/stedolan/jq/releases/latest/download/jq-win64.exe`
* this is a Windows port : https://stedolan.github.io/jq/
*
* Licenses sources :
* * `composer licenses --format json` (see https://getcomposer.org/doc/03-cli.md#licenses)
* * keep every existing nodes with `/licenses/license[11]/product/@scope` not in ['lib', 'datamodels']
* ⚠ If licenses were added manually, they might be removed by this tool ! Be very careful to check for the result before pushing !
*
* To launch, check requirements and run `php updateLicenses.php`
* The target license file path is in `$xmlFilePath`
*/
$iTopFolder = __DIR__ . "/../../" ;
$xmlFilePath = $iTopFolder . "setup/licenses/community-licenses.xml";
$iTopFolder = __DIR__."/../../";
$xmlFilePath = $iTopFolder."setup/licenses/community-licenses.xml";
function get_scope($product_node)
{
$jqExec = shell_exec("jq -V"); // a param is mandatory otherwise the script will freeze
if ((null === $jqExec) || (false === $jqExec)) {
echo "/!\ JQ is required but cannot be launched :( \n";
echo "Check this script PHPDoc block for instructions\n";
die(-1);
}
function get_scope($product_node) {
$scope = $product_node->getAttribute("scope");
if ($scope === "")
{ //put iTop first
if ($scope === "") { //put iTop first
return "aaaaaaaaa";
}
return $scope;
}
@@ -51,39 +73,83 @@ function get_license_nodes($file_path)
$xp = new DOMXPath($dom);
$licenseList = $xp->query('/licenses/license');
$licenses = iterator_to_array($licenseList);
$licenses = iterator_to_array($licenseList);
usort($licenses, 'sort_by_product');
return $licenses;
}
/** @noinspection SuspiciousAssignmentsInspection */
function fix_product_name(DOMNode &$oProductNode)
{
$sProductNameOrig = $oProductNode->nodeValue;
// sample : `C:\Dev\wamp64\www\itop-27\.make\license/../..//lib/symfony/polyfill-ctype`
$sProductNameFixed = remove_dir_from_string($sProductNameOrig, 'lib/');
// sample : `C:\Dev\wamp64\www\itop-27\.make\license/../..//datamodels/2.x/authent-cas/vendor/apereo/phpcas`
$sProductNameFixed = remove_dir_from_string($sProductNameFixed, 'vendor/');
$oProductNode->nodeValue = $sProductNameFixed;
}
function remove_dir_from_string($sString, $sNeedle)
{
if (strpos($sString, $sNeedle) === false) {
return $sString;
}
$sStringTmp = strstr($sString, $sNeedle);
$sStringFixed = str_replace($sNeedle, '', $sStringTmp);
// DEBUG trace O:)
// echo "$sNeedle = $sString => $sStringFixed\n";
return $sStringFixed;
}
$old_licenses = get_license_nodes($xmlFilePath);
//generate file with updated licenses
$generated_license_file_path = __DIR__."/provfile.xml";
exec("bash " . __DIR__ . "/gen-community-license.sh $iTopFolder > ". $generated_license_file_path);
echo "- Generating licences...";
exec("bash ".__DIR__."/gen-community-license.sh $iTopFolder > ".$generated_license_file_path);
echo "OK!\n";
echo "- Get licenses nodes...";
$new_licenses = get_license_nodes($generated_license_file_path);
exec("rm -f ". $generated_license_file_path);
unlink($generated_license_file_path);
foreach ($old_licenses as $b) {
$aProductNode = get_product_node($b);
if (get_scope($aProductNode) !== "lib" && get_scope($aProductNode) !== "datamodels" )
{
if (get_scope($aProductNode) !== "lib" && get_scope($aProductNode) !== "datamodels") {
$new_licenses[] = $b;
}
}
usort($new_licenses, 'sort_by_product');
echo "OK!\n";
echo "- Overwritting Combodo license file...";
$new_dom = new DOMDocument("1.0");
$new_dom->formatOutput = true;
$root = $new_dom->createElement("licenses");
$new_dom->appendChild($root);
foreach ($new_licenses as $b) {
$node = $new_dom->importNode($b,true);
$root->appendChild($new_dom->importNode($b,true));
$node = $new_dom->importNode($b, true);
// N°3870 fix when running script in Windows
// fix should be in gen-community-license.sh but it is easier to do it here !
if (strncasecmp(PHP_OS, 'WIN', 3) === 0) {
$oProductNodeOrig = get_product_node($node);
fix_product_name($oProductNodeOrig);
}
$root->appendChild($node);
}
$new_dom->save($xmlFilePath);
$new_dom->save($xmlFilePath);
echo "OK!\n";

View File

@@ -0,0 +1,77 @@
<?php
/**
* Usage :
* `php changelog.php 2.7.4`
*
* As argument is passed the git ref (tag name or sha1) we want to use as reference
*
* Outputs :
*
* 1. List of bugs as CSV :
* bug ref;link
* Example :
* <code>
* Bug_ref;Bug_URL;sha1
* 1234;https://support.combodo.com/pages/UI.php?operation=details&class=Bug&id=1234;949b213f9|b1ca1f263|a1271da74
* </code>
*
* 2. List of commits sha1/message without bug ref
* Example :
* <code>
* sha1;subject
* a6aa183e2;:bookmark: Prepare 2.7.5
* </code>
*/
if (count($argv) === 1) {
echo '⚠ You must pass the base tag/sha1 as parameter';
exit(1);
}
$sBaseReference = $argv[1];
//--- Get log
$sGitLogCommand = 'git log --decorate --pretty="%h;%s" --date-order --no-merges '.$sBaseReference.'..HEAD';
$sGitLogRaw = shell_exec($sGitLogCommand);
//--- Analyze log
$aGitLogLines = preg_split('/\n/', trim($sGitLogRaw));;
$aLogLinesWithBugRef = [];
$aLogLineNoBug = [];
foreach ($aGitLogLines as $sLogLine) {
$sBugRef = preg_match('/[nN]°(\d{3,4})/', $sLogLine, $aLineBugRef);
if (($sBugRef === false) || empty($aLineBugRef)) {
$aLogLineNoBug[] = $sLogLine;
continue;
}
$iBugId = $aLineBugRef[1];
$sSha = substr($sLogLine, 0, 9);
if (array_key_exists($iBugId, $aLogLinesWithBugRef)) {
$aBugShaRefs = $aLogLinesWithBugRef[$iBugId];
$aBugShaRefs[] = $sSha;
$aLogLinesWithBugRef[$iBugId] = $aBugShaRefs;
} else {
$aLogLinesWithBugRef[$iBugId] = [$sSha];
}
}
$aBugsList = array_keys($aLogLinesWithBugRef);
sort($aBugsList, SORT_NUMERIC);
//-- Output results
echo "# Bugs included\n";
echo "Bug_ref;Bug_URL;sha1\n";
foreach ($aBugsList as $sBugRef) {
$sShaRefs = implode('|', $aLogLinesWithBugRef[$sBugRef]);
echo "{$sBugRef};https://support.combodo.com/pages/UI.php?operation=details&class=Bug&id={$sBugRef};$sShaRefs\n";
}
echo "\n";
echo "# Logs line without bug referenced\n";
echo "sha1;subject\n";
foreach ($aLogLineNoBug as $sLogLine) {
echo "$sLogLine\n";
}

View File

@@ -25,8 +25,8 @@ require_once (__DIR__.DIRECTORY_SEPARATOR.'update.classes.inc.php');
/** @var \FileVersionUpdater[] $aFilesUpdaters */
$aFilesUpdaters = array(
new iTopVersionFileUpdater(),
new CssVariablesFileUpdater(),
new DatamodelsModulesFiles(),
new ConstantFileUpdater('ITOP_CORE_VERSION', 'approot.inc.php'),
);
if (count($argv) === 1)

View File

@@ -6,11 +6,19 @@
* Will update version in the following files :
*
* datamodels/2.x/.../datamodel.*.xml
* application/*.xml
* core/*.xml
*
* Usage :
* `php .make\release\update-xml.php "1.7"`
* `php .make\release\update-xml.php`
*
* @since 2.7.0
* If no parameter provided then the current XML version will be used as target version
*
* @since 2.7.0 simple version change using regexp (not doing conversion)
* @since 3.1.0 N°5405 now does a real conversion
* @since 3.1.0 N°5633 allow to use without parameter
* @since 3.1.0 N°5633 add /application and /core XML files
******************************************************************************/
@@ -22,10 +30,12 @@ require_once (__DIR__.DIRECTORY_SEPARATOR.'update.classes.inc.php');
if (count($argv) === 1)
{
echo '/!\ You must pass the new version as parameter';
exit(1);
echo '/!\ No version passed: assuming target XML version is current XML version ('.ITOP_DESIGN_LATEST_VERSION.")\n";
$sVersionLabel = ITOP_DESIGN_LATEST_VERSION;
} else {
$sVersionLabel = $argv[1];
}
$sVersionLabel = $argv[1];
if (empty($sVersionLabel))
{
echo 'Version passed as parameter is empty !';

View File

@@ -69,6 +69,40 @@ abstract class AbstractSingleFileVersionUpdater extends FileVersionUpdater
}
}
/**
* @since 2.7.7 3.0.1 3.1.0 N°4714
*/
class ConstantFileUpdater extends AbstractSingleFileVersionUpdater {
/** @var string */
private $sConstantName;
/**
* @param $sConstantName constant to search, for example `ITOP_CORE_VERSION`
* @param $sFileToUpdate file containing constant definition
*/
public function __construct($sConstantName, $sFileToUpdate)
{
$this->sConstantName = $sConstantName;
parent::__construct($sFileToUpdate);
}
/**
* @inheritDoc
*/
public function UpdateFileContent($sVersionLabel, $sFileContent, $sFileFullPath)
{
$sConstantSearchPattern = <<<REGEXP
/define\('{$this->sConstantName}', ?'[^']+'\);/
REGEXP;
return preg_replace(
$sConstantSearchPattern,
"define('{$this->sConstantName}', '{$sVersionLabel}');",
$sFileContent
);
}
}
class iTopVersionFileUpdater extends AbstractSingleFileVersionUpdater
{
public function __construct()
@@ -89,38 +123,33 @@ class iTopVersionFileUpdater extends AbstractSingleFileVersionUpdater
}
}
class CssVariablesFileUpdater extends AbstractSingleFileVersionUpdater
{
public function __construct()
{
parent::__construct('css/css-variables.scss');
}
/**
* @inheritDoc
*/
public function UpdateFileContent($sVersionLabel, $sFileContent, $sFileFullPath)
{
return preg_replace(
'/(\$version: "v)[^"]*(";)/',
'${1}'.$sVersionLabel.'${2}',
$sFileContent
);
}
}
abstract class AbstractGlobFileVersionUpdater extends FileVersionUpdater
{
protected $sGlobPattern;
/** @var array|string glob patterns to seek for files to modify */
protected $globPattern;
public function __construct($sGlobPattern)
public function __construct($globPattern)
{
$this->sGlobPattern = $sGlobPattern;
$this->globPattern = $globPattern;
}
public function GetFiles()
{
return glob($this->sGlobPattern);
$aGlobPatterns = (is_array($this->globPattern))
? $this->globPattern
: [$this->globPattern];
$aFiles = [];
foreach ($aGlobPatterns as $sGlobPattern) {
$result = glob($sGlobPattern);
if (false === $result) {
continue;
}
/** @noinspection SlowArrayOperationsInLoopInspection */
$aFiles = array_merge($aFiles, $result);
}
return $aFiles;
}
}
@@ -152,7 +181,11 @@ class DatamodelsXmlFiles extends AbstractGlobFileVersionUpdater
{
public function __construct()
{
parent::__construct(APPROOT.'datamodels/2.x/*/datamodel.*.xml');
parent::__construct([
APPROOT.'datamodels/2.x/*/datamodel.*.xml',
APPROOT.'application/*.xml',
APPROOT.'core/*.xml',
]);
}
/**
@@ -160,10 +193,40 @@ class DatamodelsXmlFiles extends AbstractGlobFileVersionUpdater
*/
public function UpdateFileContent($sVersionLabel, $sFileContent, $sFileFullPath)
{
return preg_replace(
'/(<itop_design .* version=")[^"]+(">)/',
'${1}'.$sVersionLabel.'${2}',
$sFileContent
);
require_once APPROOT.'setup/itopdesignformat.class.inc.php';
$oFileXml = new DOMDocument();
/** @noinspection PhpComposerExtensionStubsInspection */
libxml_clear_errors();
$oFileXml->formatOutput = true;
$oFileXml->preserveWhiteSpace = false;
$oFileXml->loadXML($sFileContent);
$oFileItopFormat = new iTopDesignFormat($oFileXml);
$sDesignVersionToSet = static::GetDesignVersionToSet($oFileItopFormat->GetVersion());
if (false === is_null($sDesignVersionToSet)) {
// N°5779 if same as target version, we will try to convert from version below
$oFileItopFormat->GetITopDesignNode()->setAttribute('version', $sDesignVersionToSet);
}
$bConversionResult = $oFileItopFormat->Convert($sVersionLabel);
if (false === $bConversionResult) {
throw new Exception("Error when converting $sFileFullPath");
}
return $oFileItopFormat->GetXmlAsString();
}
/**
* @return ?string version to use : if file version is same as current version then return previous version, else return null
* @since 3.1.0 N°5779
*/
protected static function GetDesignVersionToSet($sFileDesignVersion):?string {
if ($sFileDesignVersion !== ITOP_DESIGN_LATEST_VERSION) {
return null;
}
return iTopDesignFormat::GetPreviousDesignVersion(ITOP_DESIGN_LATEST_VERSION);
}
}

View File

@@ -27,11 +27,14 @@ If you have an idea you're sure would benefit to all of iTop users, you may
[create a corresponding ticket](https://sourceforge.net/p/itop/tickets/new/) to submit it, but be warned that there are lots of good
reasons to refuse such changes.
### 📄 License
iTop is distributed under the AGPL-3.0 license (see the [license.txt] file),
your code must comply with this license.
### 📄 License and copyright
iTop is distributed under the AGPL-3.0 license (see the [license.txt] file).
If you want to use another license, you may [create an extension][wiki new ext].
The iTop repository is divided in three parts: iTop (mainly PHP/JS/XML sources and dictionaries), images, and third-party libraries.
Combodo has the copyright on most of the source files in the iTop part of the repository: please do not modify the existing file copyrights.
Anyhow, you are encouraged to signal your contribution by the mean of `@author` annotations.
If you want to use another license or keep the code ownership (copyright), you may [create an extension][wiki new ext].
[license.txt]: https://github.com/Combodo/iTop/blob/develop/license.txt
[wiki new ext]: https://www.itophub.io/wiki/page?id=latest%3Acustomization%3Astart#by_writing_your_own_extension
@@ -42,7 +45,7 @@ If you want to use another license, you may [create an extension][wiki new ext].
When we first start with Git, we were using the [GitFlow](https://nvie.com/posts/a-successful-git-branching-model/) branch model. As
there was some confusions about branches to use for current developed release and previous maintained release, and also because we were
using just a very few of the GitFlow commands, we decided to add just a little modification to this branch model : since april 2020
we don't have anymore a `master` branch.
we don't have a `master` branch anymore.
Here are the branches we use and their meaning :
@@ -52,26 +55,26 @@ Here are the branches we use and their meaning :
For example, if no version is currently prepared for shipping we could have:
- `develop` containing future 3.0.0 version
- `develop` containing future 3.1.0 version
- `support/3.0`: 3.0.x maintenance version
- `support/2.7`: 2.7.x maintenance version
- `support/2.6`: 2.6.x maintenance version
- `support/2.5`: 2.5.x maintenance version
In this example, when 3.0.0-beta is shipped that will become:
In this example, when 3.1.0-beta is shipped that will become:
- `develop`: future 3.1.0 version
- `release/3.0.0`: 3.0.0-beta
- `develop`: future 3.2.0 version
- `release/3.1.0`: 3.1.0-beta
- `support/3.0`: 3.0.x maintenance version
- `support/2.7`: 2.7.x maintenance version
- `support/2.6`: 2.6.x maintenance version
- `support/2.5`: 2.5.x maintenance version
And when 3.0.0 final will be out:
And when 3.1.0 final will be out:
- `develop`: future 3.1.0 version
- `support/2.8`: 2.8.x maintenance version (will host developments for 3.0.1)
- `develop`: future 3.2.0 version
- `support/3.1`: 3.1.x maintenance version (will host developments for 3.1.1)
- `support/3.0`: 3.0.x maintenance version
- `support/2.7`: 2.7.x maintenance version
- `support/2.6`: 2.6.x maintenance version
- `support/2.5`: 2.5.x maintenance version
Also note that we have a "micro-version" concept : each of those versions have a very small amount of modifications. They are made from
`support/*` branches as well. For example 2.6.2-1 and 2.6.2-2 were made from the `support/2.6.2` branch.
@@ -111,9 +114,9 @@ Our tests are located in the `test/` directory, containing a PHPUnit config file
* Use the present tense ("Add feature" not "Added feature")
* Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
* Limit the first line to 72 characters or less
* Please start the commit message with an applicable emoji code (following the [Gitmoji guide](https://gitmoji.carloscuesta.me/)).
Beware to use the code (for example `:bug:`) and not the character (🐛) as Unicode support in git clients is very poor for now...
Emoji examples :
* Please start the commit message with an applicable emoji code (following the [Gitmoji guide](https://gitmoji.dev/)).
Beware to use the code (for example `:bug:`) and not the character (🐛) as Unicode support in git clients is very poor for now...
Emoji examples :
* 🌐 `:globe_with_meridians:` for translations
* 🎨 `:art:` when improving the format/structure of the code
* ⚡️ `:zap:` when improving performance
@@ -125,15 +128,37 @@ Our tests are located in the `test/` directory, containing a PHPUnit config file
* ⬆️ `:arrow_up:` when upgrading dependencies
* ⬇️ `:arrow_down:` when downgrading dependencies
* ♻️ `:recycle:` code refactoring
* 💄 `:lipstick:` Updating the UI and style files.
* 💄 `:lipstick:` Updating the UI and style files.
## 👥 Pull request
When your code is working, please:
* stash as much as possible your commits,
* rebase your branch on our repo last commit,
* create a pull request.
* Squash as much as possible your commits,
* Rebase your branch on our repo last commit,
* Create a pull request. _Detailed procedure to work on fork and create PR is available [in GitHub help pages](https://help.github.com/articles/creating-a-pull-request-from-a-fork/)_.
* 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 !
Detailed procedure to work on fork and create PR is available [in GitHub help pages](https://help.github.com/articles/creating-a-pull-request-from-a-fork/).
## 🙏 We are thankful
We are thankful for all your contributions to the iTop universe! As a thank you gift, we will send stickers to every iTop (& extensions) contributors!
We have one sticker per contribution type. You might get multiple stickers with one contribution though :)
* Bug hunter: Fix a bug
* Translator: Add/update translations
* White hat: Find and/or fix a vulnerability
* Contributor: Contribute by finding a bug, making an extension or any other way
* Partner: For Combodo's official partners
* Graduated: Follow a Combodo's iTop training
* Ambassador: Outstanding community contributors
* Beta tester: Test and give feedback on beta releases
* Extension developer: Develop and publish an extension
Here is the design of each stickers for year 2022:
![iTop stickers 2022](.doc/contributing-guide/2022.contributing-stickers-side-by-side.png)

8
Jenkinsfile vendored
View File

@@ -1,6 +1,14 @@
def infra
node(){
properties([
buildDiscarder(
logRotator(
daysToKeepStr: "28",
numToKeepStr: "500")
)
])
checkout scm
infra = load '/var/lib/jenkins/workspace/itop-test-infra_master/src/Infra.groovy'

111
README.md
View File

@@ -1,13 +1,11 @@
<p align="center"><a href="https://www.combodo.com/itop-193" target="_blank">
<img src="https://www.combodo.com/logos/logo-itop.svg">
<img src="https://www.combodo.com/logos/logo-itop-baseline.svg" width=350>
</a></p>
# iTop - ITSM & CMDB
iTop stands for *IT Operations Portal*.
It is a complete open source, ITIL, web based service management tool including a fully customizable CMDB, a helpdesk system and a document management tool.
iTop also offers mass import tools and web services to integrate with your IT
iTop stands for IT Operations Portal. It is a complete open source and web-based IT service management platform, including a fully customizable CMDB, a helpdesk system, and a document management tool. It is ITIL compliant and easily customizable and extensible thanks to a high number of add-ons and web services to integrate with your IT.
iTop also offers mass import tools to help you become even more efficient.
## Features
- Fully configurable [Configuration Management (CMDB)][10]
@@ -39,17 +37,19 @@ iTop also offers mass import tools and web services to integrate with your IT
- [iTop Forums][1]: community support
- [iTop Tickets][2]: for feature requests and bug reports
- [Releases download][3]
- [Software requirements][4]
- [iTop requirements][4]
- [Documentation][5] covering both iTop and its official extensions
- [iTop Hub][6] : discover and install extensions !
- [iTop versions history][7]
[1]: https://sourceforge.net/p/itop/discussion/
[2]: https://sourceforge.net/p/itop/tickets/
[3]: https://sourceforge.net/projects/itop/files/itop/
[4]: https://www.itophub.io/wiki/page?id=latest:install:upgrading_itop
[4]: https://www.itophub.io/wiki/page?id=latest:install:requirements
[5]: https://www.itophub.io/wiki
[6]: https://store.itophub.io/en_US/
[7]: .doc/itop-version-history.md
[10]: https://www.itophub.io/wiki/page?id=latest%3Adatamodel%3Astart#configuration_management_cmdb
[11]: https://www.itophub.io/wiki/page?id=latest%3Adatamodel%3Astart#ticketing
@@ -65,58 +65,69 @@ iTop also offers mass import tools and web services to integrate with your IT
## About Us
iTop development is sponsored, led and supported by [Combodo][0].
iTop development is sponsored, led, and supported by [Combodo][0].
[0]: https://www.combodo.com
## Contributors
We would like to give a special thank you to the people from the community who contributed to this project, including:
We would like to give a special thank you 🤗 to the people from the community who contributed to this project, including:
### Names
- Alves, David
- Beck, Pedro
- Bilger, Jean-François
- Bostoen, Jeffrey (a.k.a @jbostoen)
- Cardoso, Anderson
- Cassaro, Bruno
- Casteleyn, Thomas (a.k.a @Hipska)
- Castro, Randall Badilla
- Colantoni, Maria Laura
- Couronné, Guy
- Dvořák, Lukáš
- Goethals, Stefan
- Gumble, David
- Hippler, Lars
- Khamit, Shamil
- Kincel, Martin
- Konečný, Kamil
- Kunin, Vladimir
- Lassiter, Dennis
- Lazcano, Federico
- Lucas, Jonathan
- Malik, Remie
- Mindêllo de Andrade, Lucas (a.k.a @rokam)
- Rosenke, Stephan
- Seki, Shoji
- Shilov, Vladimir
- Tulio, Marco
- Turrubiates, Miguel
- Alves, David
- Beck, Pedro
- Beer, Christian (a.k.a [@ChristianBeer](https://www.github.com/ChristianBeer))
- Bilger, Jean-François
- Bostoen, Jeffrey (a.k.a [@jbostoen](https://www.github.com/jbostoen))
- Cardoso, Anderson
- Cassaro, Bruno
- Casteleyn, Thomas (a.k.a [@Hipska](https://www.github.com/Hipska))
- Castro, Randall Badilla
- Colantoni, Maria Laura
- Couronné, Guy
- Dvořák, Lukáš
- Goethals, Stefan
- Gumble, David
- Kaltefleiter, Lars (a.k.a [@larhip](https://www.github.com/larhip))
- Khamit, Shamil
- Kincel, Martin
- Konečný, Kamil
- Kunin, Vladimir
- Lassiter, Dennis
- Lazcano, Federico
- Lucas, Jonathan
- Malik, Remie
- Mindêllo de Andrade, Lucas (a.k.a [@rokam](https://www.github.com/rokam))
- Mozart de Oliveira, Eduardo (a.k.a [@eduardomozart](https://github.com/eduardomozart))
- Raenker, Martin
- Roháč, Richard (a.k.a [@RohacRichard](https://github.com/RohacRichard))
- Rosenke, Stephan
- Rudner, Björn (a.k.a [@rudnerbjoern](https://github.com/rudnerbjoern))
- Seki, Shoji
- Shilov, Vladimir
- Stukalov, Ilya (a.k.a [@ilya](https://www.github.com/ilya)-stukalov)
- Tulio, Marco
- Turrubiates, Miguel
### Aliases
- chifu1234
- cprobst
- Karkoff1212
- larhip
- Laura
- Purple Grape
- Schlobinux
- theBigOne
- ulmerspatz
- chifu1234
- cprobst
- DudekArtur
- Karkoff1212
- Laura
- nv35
- Purple Grape
- Schlobinux
- theBigOne
- ulmerspatz
### Companies
- Hardis
- ITOMIG
- Pimkie
- [Hardis](https://www.hardis-group.com/)
- [ITOMIG](https://www.itomig.de/)
- [Pimkie](https://www.pimkie.com/)
- [Super-Visions](https://www.super-visions.com/)

View File

@@ -18,8 +18,7 @@ to [itop-security@combodo.com](mailto:itop-security@combodo.com).
## 📆 Disclosure Policy
## 🔍 Combodo acknowledgment and investigation
Report sent to us will be acknowledged within the week.
Then, a Combodo developer will be assigned to the reported issue and will:
@@ -34,3 +33,12 @@ Then, a Combodo developer will be assigned to the reported issue and will:
Security issues always take precedence over bug fixes and feature work.
The assignee will keep you informed of the resolution progress, and may ask you for additional information or guidance.
## 📆 Disclosure Policy
Once the fix is done and acknowledged by every stakeholder, it will be included in the next iTop version.
Mind we have at least 2 active branches (LTS and STS, see [iTop Community Releases [iTop Documentation]](https://www.itophub.io/wiki/page?id=latest:release:start))
The release communications will include the information of the vulnerability fix.
Corresponding GitHub advisories and CVE will be published 3 months after the iTop version release date so that iTop instances can be updated.

View File

@@ -1,5 +1,5 @@
<?php
// Copyright (C) 2010-2012 Combodo SARL
// Copyright (C) 2010-2023 Combodo SARL
//
// This file is part of iTop.
//
@@ -19,7 +19,7 @@
/**
* UserRightsMatrix (User management Module)
*
* @copyright Copyright (C) 2010-2012 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
@@ -121,7 +121,6 @@ class UserRightsMatrix extends UserRightsAddOnAPI
public function CreateAdministrator($sAdminUser, $sAdminPwd, $sLanguage = 'EN US')
{
// Maybe we should check that no other user with userid == 0 exists
CMDBObject::SetTrackInfo('Initialization');
$oUser = new UserLocal();
$oUser->Set('login', $sAdminUser);
$oUser->Set('password', $sAdminPwd);

View File

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

View File

@@ -1,20 +1,7 @@
<?php
/**
* Copyright (C) 2013-2020 Combodo SARL
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
define('ADMIN_PROFILE_NAME', 'Administrator');
@@ -23,7 +10,7 @@ define('PORTAL_PROFILE_NAME', 'Portal user');
class UserRightsBaseClassGUI extends cmdbAbstractObject
{
// Whenever something changes, reload the privileges
protected function AfterInsert()
{
UserRights::FlushPrivileges();
@@ -47,14 +34,15 @@ class URP_Profiles extends UserRightsBaseClassGUI
{
$aParams = array
(
"category" => "addon/userrights,grant_by_profile",
"key_type" => "autoincrement",
"name_attcode" => "name",
"state_attcode" => "",
"reconc_keys" => array(),
"db_table" => "priv_urp_profiles",
"db_key_field" => "id",
"db_finalclass_field" => "",
"category" => "addon/userrights,grant_by_profile,filter",
"key_type" => "autoincrement",
"name_attcode" => "name",
"complementary_name_attcode" => array('description'),
"state_attcode" => "",
"reconc_keys" => array(),
"db_table" => "priv_urp_profiles",
"db_key_field" => "id",
"db_finalclass_field" => "",
);
MetaModel::Init_Params($aParams);
//MetaModel::Init_InheritAttributes();
@@ -72,7 +60,7 @@ class URP_Profiles extends UserRightsBaseClassGUI
}
protected static $m_aCacheProfiles = null;
public static function DoCreateProfile($sName, $sDescription)
{
if (is_null(self::$m_aCacheProfiles))
@@ -84,7 +72,7 @@ class URP_Profiles extends UserRightsBaseClassGUI
{
self::$m_aCacheProfiles[$oProfile->Get('name')] = $oProfile->GetKey();
}
}
}
$sCacheKey = $sName;
if (isset(self::$m_aCacheProfiles[$sCacheKey]))
@@ -95,10 +83,10 @@ class URP_Profiles extends UserRightsBaseClassGUI
$oNewObj->Set('name', $sName);
$oNewObj->Set('description', $sDescription);
$iId = $oNewObj->DBInsertNoReload();
self::$m_aCacheProfiles[$sCacheKey] = $iId;
self::$m_aCacheProfiles[$sCacheKey] = $iId;
return $iId;
}
function GetGrantAsHtml($oUserRights, $sClass, $sAction)
{
$bGrant = $oUserRights->GetProfileActionGrant($this->GetKey(), $sClass, $sAction);
@@ -115,7 +103,7 @@ class URP_Profiles extends UserRightsBaseClassGUI
return '<span style="background-color: #ffdddd;">'.Dict::S('UI:UserManagement:ActionAllowed:No').'</span>';
}
}
function DoShowGrantSumary($oPage)
{
if ($this->GetRawName() == "Administrator")
@@ -127,7 +115,7 @@ class URP_Profiles extends UserRightsBaseClassGUI
// Note: for sure, we assume that the instance is derived from UserRightsProfile
$oUserRights = UserRights::GetModuleInstance();
$aDisplayData = array();
foreach (MetaModel::GetClasses('bizmodel,grant_by_profile') as $sClass)
{
@@ -136,12 +124,12 @@ class URP_Profiles extends UserRightsBaseClassGUI
{
$bGrant = $oUserRights->GetClassStimulusGrant($this->GetKey(), $sClass, $sStimulusCode);
if ($bGrant === true)
{
$aStimuli[] = '<span title="'.$sStimulusCode.': '.htmlentities($oStimulus->GetDescription(), ENT_QUOTES, 'UTF-8').'">'.htmlentities($oStimulus->GetLabel(), ENT_QUOTES, 'UTF-8').'</span>';
{
$aStimuli[] = '<span title="'.$sStimulusCode.': '.utils::EscapeHtml($oStimulus->GetDescription()).'">'.utils::EscapeHtml($oStimulus->GetLabel()).'</span>';
}
}
$sStimuli = implode(', ', $aStimuli);
$aDisplayData[] = array(
'class' => MetaModel::GetName($sClass),
'read' => $this->GetGrantAsHtml($oUserRights, $sClass, 'r'),
@@ -153,7 +141,7 @@ class URP_Profiles extends UserRightsBaseClassGUI
'stimuli' => $sStimuli,
);
}
$aDisplayConfig = array();
$aDisplayConfig['class'] = array('label' => Dict::S('UI:UserManagement:Class'), 'description' => Dict::S('UI:UserManagement:Class+'));
$aDisplayConfig['read'] = array('label' => Dict::S('UI:UserManagement:Action:Read'), 'description' => Dict::S('UI:UserManagement:Action:Read+'));
@@ -211,7 +199,7 @@ class URP_Profiles extends UserRightsBaseClassGUI
* @param $aReasons array To store the reasons why the attribute is read-only (info about the synchro replicas)
* @param $sTargetState string The target state in which to evalutate the flags, if empty the current state will be used
* @return integer Flags: the binary combination of the flags applicable to this attribute
*/
*/
public function GetAttributeFlags($sAttCode, &$aReasons = array(), $sTargetState = '')
{
$iFlags = parent::GetAttributeFlags($sAttCode, $aReasons, $sTargetState);
@@ -232,24 +220,37 @@ class URP_UserProfile extends UserRightsBaseClassGUI
{
$aParams = array
(
"category" => "addon/userrights,grant_by_profile",
"key_type" => "autoincrement",
"name_attcode" => "userid",
"state_attcode" => "",
"reconc_keys" => array(),
"db_table" => "priv_urp_userprofile",
"db_key_field" => "id",
"category" => "addon/userrights,grant_by_profile,filter",
"key_type" => "autoincrement",
"name_attcode" => array("userlogin", "profile"),
"state_attcode" => "",
"reconc_keys" => array(),
"db_table" => "priv_urp_userprofile",
"db_key_field" => "id",
"db_finalclass_field" => "",
"is_link" => true, /** @since 3.1.0 N°6482 */
'uniqueness_rules' => array(
'no_duplicate' => array(
'attributes' => array(
0 => 'userid',
1 => 'profileid',
),
'filter' => '',
'disabled' => false,
'is_blocking' => true,
),
),
);
MetaModel::Init_Params($aParams);
//MetaModel::Init_InheritAttributes();
MetaModel::Init_AddAttribute(new AttributeExternalKey("userid", array("targetclass"=>"User", "jointype"=> "", "allowed_values"=>null, "sql"=>"userid", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("userlogin", array("allowed_values"=>null, "extkey_attcode"=> 'userid', "target_attcode"=>"login")));
MetaModel::Init_AddAttribute(new AttributeExternalKey("userid", array("targetclass" => "User", "jointype" => "", "allowed_values" => null, "sql" => "userid", "is_null_allowed" => false, "on_target_delete" => DEL_AUTO, "depends_on" => array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("userlogin", array("allowed_values" => null, "extkey_attcode" => 'userid', "target_attcode" => "login")));
MetaModel::Init_AddAttribute(new AttributeExternalKey("profileid", array("targetclass"=>"URP_Profiles", "jointype"=> "", "allowed_values"=>null, "sql"=>"profileid", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("profile", array("allowed_values"=>null, "extkey_attcode"=> 'profileid', "target_attcode"=>"name")));
MetaModel::Init_AddAttribute(new AttributeExternalKey("profileid",
array("targetclass" => "URP_Profiles", "jointype" => "", "allowed_values" => null, "sql" => "profileid", "is_null_allowed" => false, "on_target_delete" => DEL_AUTO, "depends_on" => array(), "allow_target_creation" => false)));
MetaModel::Init_AddAttribute(new AttributeExternalField("profile", array("allowed_values" => null, "extkey_attcode" => 'profileid', "target_attcode" => "name")));
MetaModel::Init_AddAttribute(new AttributeString("reason", array("allowed_values"=>null, "sql"=>"description", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeString("reason", array("allowed_values" => null, "sql" => "description", "default_value" => null, "is_null_allowed" => true, "depends_on" => array())));
// Display lists
MetaModel::Init_SetZListItems('details', array('userid', 'profileid', 'reason')); // Attributes to be displayed for the complete details
@@ -259,24 +260,56 @@ class URP_UserProfile extends UserRightsBaseClassGUI
MetaModel::Init_SetZListItems('advanced_search', array('userid', 'profileid')); // Criteria of the advanced search form
}
public function GetName()
{
return Dict::Format('UI:UserManagement:LinkBetween_User_And_Profile', $this->Get('userlogin'), $this->Get('profile'));
}
public function CheckToDelete(&$oDeletionPlan)
{
if (MetaModel::GetConfig()->Get('demo_mode'))
{
if (MetaModel::GetConfig()->Get('demo_mode')) {
// Users deletion is NOT allowed in demo mode
$oDeletionPlan->AddToDelete($this, null);
$oDeletionPlan->SetDeletionIssues($this, array('deletion not allowed in demo mode.'), true);
$oDeletionPlan->ComputeResults();
return false;
}
try {
$this->CheckIfProfileIsAllowed(UR_ACTION_DELETE);
}
catch (SecurityException $e) {
// Users deletion is NOT allowed
$oDeletionPlan->AddToDelete($this, null);
$oDeletionPlan->SetDeletionIssues($this, [$e->getMessage()], true);
$oDeletionPlan->ComputeResults();
return false;
}
return parent::CheckToDelete($oDeletionPlan);
}
public function DoCheckToDelete(&$oDeletionPlan)
{
if (MetaModel::GetConfig()->Get('demo_mode')) {
// Users deletion is NOT allowed in demo mode
$oDeletionPlan->AddToDelete($this, null);
$oDeletionPlan->SetDeletionIssues($this, array('deletion not allowed in demo mode.'), true);
$oDeletionPlan->ComputeResults();
return false;
}
try {
$this->CheckIfProfileIsAllowed(UR_ACTION_DELETE);
}
catch (SecurityException $e) {
// Users deletion is NOT allowed
$oDeletionPlan->AddToDelete($this, null);
$oDeletionPlan->SetDeletionIssues($this, [$e->getMessage()], true);
$oDeletionPlan->ComputeResults();
return false;
}
return parent::DoCheckToDelete($oDeletionPlan);
}
protected function OnInsert()
{
$this->CheckIfProfileIsAllowed(UR_ACTION_CREATE);
@@ -289,7 +322,6 @@ class URP_UserProfile extends UserRightsBaseClassGUI
protected function OnDelete()
{
$this->CheckIfProfileIsAllowed(UR_ACTION_DELETE);
}
/**
@@ -339,7 +371,7 @@ class URP_UserOrg extends UserRightsBaseClassGUI
(
"category" => "addon/userrights,grant_by_profile",
"key_type" => "autoincrement",
"name_attcode" => "userid",
"name_attcode" => array("userlogin", "allowed_org_name"),
"state_attcode" => "",
"reconc_keys" => array(),
"db_table" => "priv_urp_userorg",
@@ -364,12 +396,6 @@ class URP_UserOrg extends UserRightsBaseClassGUI
MetaModel::Init_SetZListItems('advanced_search', array('userid', 'allowed_org_id')); // Criteria of the advanced search form
}
public function GetName()
{
return Dict::Format('UI:UserManagement:LinkBetween_User_And_Org', $this->Get('userlogin'), $this->Get('allowed_org_name'));
}
protected function OnInsert()
{
$this->CheckIfOrgIsAllowed();
@@ -392,7 +418,7 @@ class URP_UserOrg extends UserRightsBaseClassGUI
{
if (!UserRights::IsLoggedIn() || UserRights::IsAdministrator()) { return; }
$oUser = UserRights::GetUserObject();
$oUser = UserRights::GetUserObject();
$oAddon = UserRights::GetModuleInstance();
$aOrgs = $oAddon->GetUserOrgs($oUser, '');
if (count($aOrgs) > 0)
@@ -423,20 +449,18 @@ class UserRightsProfile extends UserRightsAddOnAPI
// Installation: create the very first user
public function CreateAdministrator($sAdminUser, $sAdminPwd, $sLanguage = 'EN US')
{
CMDBObject::SetTrackInfo('Initialization');
CMDBObject::SetCurrentChangeFromParams('Initialization create administrator');
$iContactId = 0;
// Support drastic data model changes: no organization class (or not writable)!
if (MetaModel::IsValidClass('Organization') && !MetaModel::IsAbstract('Organization'))
{
if (MetaModel::IsValidClass('Organization') && !MetaModel::IsAbstract('Organization')) {
$oOrg = MetaModel::NewObject('Organization');
$oOrg->Set('name', 'My Company/Department');
$oOrg->Set('code', 'SOMECODE');
$iOrgId = $oOrg->DBInsertNoReload();
// Support drastic data model changes: no Person class (or not writable)!
if (MetaModel::IsValidClass('Person') && !MetaModel::IsAbstract('Person'))
{
if (MetaModel::IsValidClass('Person') && !MetaModel::IsAbstract('Person')) {
$oContact = MetaModel::NewObject('Person');
$oContact->Set('name', 'My last name');
$oContact->Set('first_name', 'My first name');
@@ -516,7 +540,7 @@ class UserRightsProfile extends UserRightsAddOnAPI
$oSearch->AllowAllData();
$oCondition = new BinaryExpression(new FieldExpression('userid'), '=', new VariableExpression('userid'));
$oSearch->AddConditionExpression($oCondition);
$oUserOrgSet = new DBObjectSet($oSearch, array(), array('userid' => $iUser));
while ($oUserOrg = $oUserOrgSet->Fetch())
{
@@ -598,30 +622,115 @@ class UserRightsProfile extends UserRightsAddOnAPI
{
$this->LoadCache();
$aObjectPermissions = $this->GetUserActionGrant($oUser, $sClass, UR_ACTION_READ);
if ($aObjectPermissions['permission'] == UR_ALLOWED_NO)
// Let us pass an administrator for bypassing the grant matrix check in order to test this method without the need to set up a complex profile
// In the nominal case Administrators never end up here (since they completely bypass GetSelectFilter)
if (!static::IsAdministrator($oUser) && (MetaModel::HasCategory($sClass, 'silo') || MetaModel::HasCategory($sClass, 'bizmodel')))
{
return false;
// N°4354 - Categories 'silo' and 'bizmodel' do check the grant matrix. Whereas 'filter' always allows to read (but the result can be filtered)
$aObjectPermissions = $this->GetUserActionGrant($oUser, $sClass, UR_ACTION_READ);
if ($aObjectPermissions['permission'] == UR_ALLOWED_NO)
{
return false;
}
}
// Determine how to position the objects of this class
//
$oFilter = true;
$aConditions = array();
// Determine if this class is part of a silo and build the filter for it
$sAttCode = self::GetOwnerOrganizationAttCode($sClass);
if (is_null($sAttCode))
if (!is_null($sAttCode))
{
// No filtering for this object
return true;
$aUserOrgs = $this->GetUserOrgs($oUser, $sClass);
if (count($aUserOrgs) > 0)
{
$oFilter = $this->MakeSelectFilter($sClass, $aUserOrgs, $aSettings, $sAttCode);
}
// else: No org means 'any org'
}
// Position the user
//
$aUserOrgs = $this->GetUserOrgs($oUser, $sClass);
if (count($aUserOrgs) == 0)
// else: No silo for this class
// Specific conditions to hide, for non-administrators, the Administrator Users, the Administrator Profile and related links
// Note: when logged as an administrator, GetSelectFilter is completely bypassed.
if ($this->AdministratorsAreHidden())
{
// No org means 'any org'
return true;
if ($sClass == 'URP_Profiles')
{
$oExpression = new FieldExpression('id', $sClass);
$oScalarExpr = new ScalarExpression(1);
$aConditions[] = new BinaryExpression($oExpression, '!=', $oScalarExpr);
}
else if (($sClass == 'URP_UserProfile') || ($sClass == 'User') || (is_subclass_of($sClass, 'User')))
{
$aAdministrators = $this->GetAdministrators();
if (count($aAdministrators) > 0)
{
$sAttCode = ($sClass == 'URP_UserProfile') ? 'userid' : 'id';
$oExpression = new FieldExpression($sAttCode, $sClass);
$oListExpr = ListExpression::FromScalars($aAdministrators);
$aConditions[] = new BinaryExpression($oExpression, 'NOT IN', $oListExpr);
}
}
}
return $this->MakeSelectFilter($sClass, $aUserOrgs, $aSettings, $sAttCode);
// Handling of the added conditions
if (count($aConditions) > 0)
{
if($oFilter === true)
{
// No 'silo' filter, let's build a clean one
$oFilter = new DBObjectSearch($sClass);
}
// Add the conditions to the filter
foreach($aConditions as $oCondition)
{
$oFilter->AddConditionExpression($oCondition);
}
}
return $oFilter;
}
/**
* Retrieve (and memoize) the list of administrator accounts.
* Note that there should always be at least one administrator account
* @return number[]
*/
private function GetAdministrators()
{
static $aAdministrators = null;
if ($aAdministrators === null)
{
// Find all administrators
$aAdministrators = array();
$oAdministratorsFilter = new DBObjectSearch('User');
$oLnkFilter = new DBObjectSearch('URP_UserProfile');
$oExpression = new FieldExpression('profileid', 'URP_UserProfile');
$oScalarExpr = new ScalarExpression(1);
$oCondition = new BinaryExpression($oExpression, '=', $oScalarExpr);
$oLnkFilter->AddConditionExpression($oCondition);
$oAdministratorsFilter->AddCondition_ReferencedBy($oLnkFilter, 'userid');
$oAdministratorsFilter->AllowAllData(true); // Mandatory to prevent infinite recursion !!
$oSet = new DBObjectSet($oAdministratorsFilter);
$oSet->OptimizeColumnLoad(array('User' => array('login')));
while($oUser = $oSet->Fetch())
{
$aAdministrators[] = $oUser->GetKey();
}
}
return $aAdministrators;
}
/**
* Whether or not to hide the 'Administrator' profile and the administrator accounts
* @return boolean
*/
private function AdministratorsAreHidden()
{
return ((bool)MetaModel::GetConfig()->Get('security.hide_administrators'));
}
@@ -641,8 +750,10 @@ class UserRightsProfile extends UserRightsAddOnAPI
// load and cache permissions for the current user on the given class
//
$iUser = $oUser->GetKey();
$aTest = @$this->m_aObjectActionGrants[$iUser][$sClass][$iActionCode];
if (is_array($aTest)) return $aTest;
if (isset($this->m_aObjectActionGrants[$iUser][$sClass][$iActionCode])){
$aTest = $this->m_aObjectActionGrants[$iUser][$sClass][$iActionCode];
if (is_array($aTest)) return $aTest;
}
$sAction = self::$m_aActionCodes[$iActionCode];
@@ -808,8 +919,8 @@ class UserRightsProfile extends UserRightsAddOnAPI
/**
* Find out which attribute is corresponding the the dimension 'owner org'
* returns null if no such attribute has been found (no filtering should occur)
*/
* returns null if no such attribute has been found (no filtering should occur)
*/
public static function GetOwnerOrganizationAttCode($sClass)
{
$sAttCode = null;

View File

@@ -1,6 +1,6 @@
<?php
/**
* Copyright (C) 2013-2020 Combodo SARL
* Copyright (C) 2013-2023 Combodo SARL
*
* This file is part of iTop.
*
@@ -69,14 +69,15 @@ class URP_Profiles extends UserRightsBaseClassGUI
{
$aParams = array
(
"category" => "addon/userrights",
"key_type" => "autoincrement",
"name_attcode" => "name",
"state_attcode" => "",
"reconc_keys" => array(),
"db_table" => "priv_urp_profiles",
"db_key_field" => "id",
"db_finalclass_field" => "",
"category" => "addon/userrights",
"key_type" => "autoincrement",
"name_attcode" => "name",
"complementary_name_attcode" => array('description'),
"state_attcode" => "",
"reconc_keys" => array(),
"db_table" => "priv_urp_profiles",
"db_key_field" => "id",
"db_finalclass_field" => "",
);
MetaModel::Init_Params($aParams);
//MetaModel::Init_InheritAttributes();
@@ -278,8 +279,8 @@ class URP_Profiles extends UserRightsBaseClassGUI
{
$oGrant = $oUserRights->GetClassStimulusGrant($this->GetKey(), $sClass, $sStimulusCode);
if (is_object($oGrant) && ($oGrant->Get('permission') == 'yes'))
{
$aStimuli[] = '<span title="'.$sStimulusCode.': '.htmlentities($oStimulus->GetDescription(), ENT_QUOTES, 'UTF-8').'">'.htmlentities($oStimulus->GetLabel(), ENT_QUOTES, 'UTF-8').'</span>';
{
$aStimuli[] = '<span title="'.$sStimulusCode.': '.utils::EscapeHtml($oStimulus->GetDescription()).'">'.utils::EscapeHtml($oStimulus->GetLabel()).'</span>';
}
}
$sStimuli = implode(', ', $aStimuli);
@@ -325,24 +326,26 @@ class URP_UserProfile extends UserRightsBaseClassGUI
{
$aParams = array
(
"category" => "addon/userrights",
"key_type" => "autoincrement",
"name_attcode" => "userid",
"state_attcode" => "",
"reconc_keys" => array(),
"db_table" => "priv_urp_userprofile",
"db_key_field" => "id",
"category" => "addon/userrights",
"key_type" => "autoincrement",
"name_attcode" => array("userlogin", "profile"),
"state_attcode" => "",
"reconc_keys" => array(),
"db_table" => "priv_urp_userprofile",
"db_key_field" => "id",
"db_finalclass_field" => "",
"is_link" => true, /** @since 3.1.0 N°6482 */
);
MetaModel::Init_Params($aParams);
//MetaModel::Init_InheritAttributes();
MetaModel::Init_AddAttribute(new AttributeExternalKey("userid", array("targetclass"=>"User", "jointype"=> "", "allowed_values"=>null, "sql"=>"userid", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("userlogin", array("allowed_values"=>null, "extkey_attcode"=> 'userid', "target_attcode"=>"login")));
MetaModel::Init_AddAttribute(new AttributeExternalKey("userid", array("targetclass" => "User", "jointype" => "", "allowed_values" => null, "sql" => "userid", "is_null_allowed" => false, "on_target_delete" => DEL_AUTO, "depends_on" => array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("userlogin", array("allowed_values" => null, "extkey_attcode" => 'userid', "target_attcode" => "login")));
MetaModel::Init_AddAttribute(new AttributeExternalKey("profileid", array("targetclass"=>"URP_Profiles", "jointype"=> "", "allowed_values"=>null, "sql"=>"profileid", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("profile", array("allowed_values"=>null, "extkey_attcode"=> 'profileid', "target_attcode"=>"name")));
MetaModel::Init_AddAttribute(new AttributeExternalKey("profileid",
array("targetclass" => "URP_Profiles", "jointype" => "", "allowed_values" => null, "sql" => "profileid", "is_null_allowed" => false, "on_target_delete" => DEL_AUTO, "depends_on" => array(), "allow_target_creation" => false)));
MetaModel::Init_AddAttribute(new AttributeExternalField("profile", array("allowed_values" => null, "extkey_attcode" => 'profileid', "target_attcode" => "name")));
MetaModel::Init_AddAttribute(new AttributeString("reason", array("allowed_values"=>null, "sql"=>"description", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeString("reason", array("allowed_values" => null, "sql" => "description", "default_value" => null, "is_null_allowed" => true, "depends_on" => array())));
// Display lists
MetaModel::Init_SetZListItems('details', array('userid', 'profileid', 'reason')); // Attributes to be displayed for the complete details
@@ -351,11 +354,6 @@ class URP_UserProfile extends UserRightsBaseClassGUI
MetaModel::Init_SetZListItems('standard_search', array('userid', 'profileid')); // Criteria of the std search form
MetaModel::Init_SetZListItems('advanced_search', array('userid', 'profileid')); // Criteria of the advanced search form
}
public function GetName()
{
return Dict::Format('UI:UserManagement:LinkBetween_User_And_Profile', $this->Get('userlogin'), $this->Get('profile'));
}
}
class URP_UserOrg extends UserRightsBaseClassGUI
@@ -366,7 +364,7 @@ class URP_UserOrg extends UserRightsBaseClassGUI
(
"category" => "addon/userrights",
"key_type" => "autoincrement",
"name_attcode" => "userid",
"name_attcode" => array("userlogin", "allowed_org_name"),
"state_attcode" => "",
"reconc_keys" => array(),
"db_table" => "priv_urp_userorg",
@@ -390,11 +388,6 @@ class URP_UserOrg extends UserRightsBaseClassGUI
MetaModel::Init_SetZListItems('standard_search', array('userid', 'allowed_org_id')); // Criteria of the std search form
MetaModel::Init_SetZListItems('advanced_search', array('userid', 'allowed_org_id')); // Criteria of the advanced search form
}
public function GetName()
{
return Dict::Format('UI:UserManagement:LinkBetween_User_And_Org', $this->Get('userlogin'), $this->Get('allowed_org_name'));
}
}
@@ -518,24 +511,18 @@ class UserRightsProfile extends UserRightsAddOnAPI
public function CreateAdministrator($sAdminUser, $sAdminPwd, $sLanguage = 'EN US')
{
// Create a change to record the history of the User object
/** @var \CMDBChange $oChange */
$oChange = MetaModel::NewObject("CMDBChange");
$oChange->Set("date", time());
$oChange->Set("userinfo", "Initialization");
CMDBObject::SetCurrentChangeFromParams('Initialization : create first user admin profile');
$iContactId = 0;
// Support drastic data model changes: no organization class (or not writable)!
if (MetaModel::IsValidClass('Organization') && !MetaModel::IsAbstract('Organization'))
{
if (MetaModel::IsValidClass('Organization') && !MetaModel::IsAbstract('Organization')) {
$oOrg = MetaModel::NewObject('Organization');
$oOrg->Set('name', 'My Company/Department');
$oOrg->Set('code', 'SOMECODE');
$oOrg::SetCurrentChange($oChange);
$iOrgId = $oOrg->DBInsertNoReload();
// Support drastic data model changes: no Person class (or not writable)!
if (MetaModel::IsValidClass('Person') && !MetaModel::IsAbstract('Person'))
{
if (MetaModel::IsValidClass('Person') && !MetaModel::IsAbstract('Person')) {
$oContact = MetaModel::NewObject('Person');
$oContact->Set('name', 'My last name');
$oContact->Set('first_name', 'My first name');
@@ -544,7 +531,6 @@ class UserRightsProfile extends UserRightsAddOnAPI
$oContact->Set('org_id', $iOrgId);
}
$oContact->Set('email', 'my.email@foo.org');
$oContact::SetCurrentChange($oChange);
$iContactId = $oContact->DBInsertNoReload();
}
}
@@ -553,24 +539,22 @@ class UserRightsProfile extends UserRightsAddOnAPI
$oUser = new UserLocal();
$oUser->Set('login', $sAdminUser);
$oUser->Set('password', $sAdminPwd);
if (MetaModel::IsValidAttCode('UserLocal', 'contactid') && ($iContactId != 0))
{
if (MetaModel::IsValidAttCode('UserLocal', 'contactid') && ($iContactId != 0)) {
$oUser->Set('contactid', $iContactId);
}
$oUser->Set('language', $sLanguage); // Language was chosen during the installation
// Add this user to the very specific 'admin' profile
$oAdminProfile = MetaModel::GetObjectFromOQL("SELECT URP_Profiles WHERE name = :name", array('name' => ADMIN_PROFILE_NAME), true /*all data*/);
if (is_object($oAdminProfile))
{
if (is_object($oAdminProfile)) {
$oUserProfile = new URP_UserProfile();
$oUserProfile->Set('profileid', $oAdminProfile->GetKey());
$oUserProfile->Set('reason', 'By definition, the administrator must have the administrator profile');
$oSet = DBObjectSet::FromObject($oUserProfile);
$oUser->Set('profile_list', $oSet);
}
$oUser::SetCurrentChange($oChange);
$iUserId = $oUser->DBInsertNoReload();
$oUser->DBInsertNoReload();
return true;
}

View File

@@ -1,6 +1,6 @@
<?php
/**
* Copyright (C) 2013-2020 Combodo SARL
* Copyright (C) 2013-2023 Combodo SARL
*
* This file is part of iTop.
*
@@ -50,14 +50,15 @@ class URP_Profiles extends UserRightsBaseClass
{
$aParams = array
(
"category" => "addon/userrights",
"key_type" => "autoincrement",
"name_attcode" => "name",
"state_attcode" => "",
"reconc_keys" => array(),
"db_table" => "priv_urp_profiles",
"db_key_field" => "id",
"db_finalclass_field" => "",
"category" => "addon/userrights",
"key_type" => "autoincrement",
"name_attcode" => "name",
"complementary_name_attcode" => array('description'),
"state_attcode" => "",
"reconc_keys" => array(),
"db_table" => "priv_urp_profiles",
"db_key_field" => "id",
"db_finalclass_field" => "",
);
MetaModel::Init_Params($aParams);
//MetaModel::Init_InheritAttributes();
@@ -110,8 +111,8 @@ class URP_Profiles extends UserRightsBaseClass
{
$oGrant = $oUserRights->GetClassStimulusGrant($this->GetKey(), $sClass, $sStimulusCode);
if (is_object($oGrant) && ($oGrant->Get('permission') == 'yes'))
{
$aStimuli[] = '<span title="'.$sStimulusCode.': '.htmlentities($oStimulus->GetDescription(), ENT_QUOTES, 'UTF-8').'">'.htmlentities($oStimulus->GetLabel(), ENT_QUOTES, 'UTF-8').'</span>';
{
$aStimuli[] = '<span title="'.$sStimulusCode.': '.utils::EscapeHtml($oStimulus->GetDescription()).'">'.utils::EscapeHtml($oStimulus->GetLabel()).'</span>';
}
}
$sStimuli = implode(', ', $aStimuli);
@@ -268,24 +269,26 @@ class URP_UserProfile extends UserRightsBaseClass
{
$aParams = array
(
"category" => "addon/userrights",
"key_type" => "autoincrement",
"name_attcode" => "userid",
"state_attcode" => "",
"reconc_keys" => array(),
"db_table" => "priv_urp_userprofile",
"db_key_field" => "id",
"category" => "addon/userrights",
"key_type" => "autoincrement",
"name_attcode" => array("userlogin", "profile"),
"state_attcode" => "",
"reconc_keys" => array(),
"db_table" => "priv_urp_userprofile",
"db_key_field" => "id",
"db_finalclass_field" => "",
"is_link" => true, /** @since 3.1.0 N°6482 */
);
MetaModel::Init_Params($aParams);
//MetaModel::Init_InheritAttributes();
MetaModel::Init_AddAttribute(new AttributeExternalKey("userid", array("targetclass"=>"User", "jointype"=> "", "allowed_values"=>null, "sql"=>"userid", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("userlogin", array("allowed_values"=>null, "extkey_attcode"=> 'userid', "target_attcode"=>"login")));
MetaModel::Init_AddAttribute(new AttributeExternalKey("userid", array("targetclass" => "User", "jointype" => "", "allowed_values" => null, "sql" => "userid", "is_null_allowed" => false, "on_target_delete" => DEL_AUTO, "depends_on" => array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("userlogin", array("allowed_values" => null, "extkey_attcode" => 'userid', "target_attcode" => "login")));
MetaModel::Init_AddAttribute(new AttributeExternalKey("profileid", array("targetclass"=>"URP_Profiles", "jointype"=> "", "allowed_values"=>null, "sql"=>"profileid", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("profile", array("allowed_values"=>null, "extkey_attcode"=> 'profileid', "target_attcode"=>"name")));
MetaModel::Init_AddAttribute(new AttributeExternalKey("profileid",
array("targetclass" => "URP_Profiles", "jointype" => "", "allowed_values" => null, "sql" => "profileid", "is_null_allowed" => false, "on_target_delete" => DEL_AUTO, "depends_on" => array(), "allow_target_creation" => false)));
MetaModel::Init_AddAttribute(new AttributeExternalField("profile", array("allowed_values" => null, "extkey_attcode" => 'profileid', "target_attcode" => "name")));
MetaModel::Init_AddAttribute(new AttributeString("reason", array("allowed_values"=>null, "sql"=>"description", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeString("reason", array("allowed_values" => null, "sql" => "description", "default_value" => null, "is_null_allowed" => true, "depends_on" => array())));
// Display lists
MetaModel::Init_SetZListItems('details', array('userid', 'profileid', 'reason')); // Attributes to be displayed for the complete details
@@ -294,11 +297,6 @@ class URP_UserProfile extends UserRightsBaseClass
MetaModel::Init_SetZListItems('standard_search', array('userid', 'profileid')); // Criteria of the std search form
MetaModel::Init_SetZListItems('advanced_search', array('userid', 'profileid')); // Criteria of the advanced search form
}
public function GetName()
{
return Dict::Format('UI:UserManagement:LinkBetween_User_And_Profile', $this->Get('userlogin'), $this->Get('profile'));
}
}
@@ -573,14 +571,11 @@ class UserRightsProjection extends UserRightsAddOnAPI
public function CreateAdministrator($sAdminUser, $sAdminPwd, $sLanguage = 'EN US')
{
// Create a change to record the history of the User object
$oChange = MetaModel::NewObject("CMDBChange");
$oChange->Set("date", time());
$oChange->Set("userinfo", "Initialization");
CMDBObject::SetCurrentChangeFromParams('Initialization : create first user admin');
$oOrg = new Organization();
$oOrg->Set('name', 'My Company/Department');
$oOrg->Set('code', 'SOMECODE');
$oOrg::SetCurrentChange($oChange);
$iOrgId = $oOrg->DBInsertNoReload();
$oContact = new Person();
@@ -589,7 +584,6 @@ class UserRightsProjection extends UserRightsAddOnAPI
//$oContact->Set('status', 'available');
$oContact->Set('org_id', $iOrgId);
$oContact->Set('email', 'my.email@foo.org');
$oContact::SetCurrentChange($oChange);
$iContactId = $oContact->DBInsertNoReload();
$oUser = new UserLocal();
@@ -597,7 +591,6 @@ class UserRightsProjection extends UserRightsAddOnAPI
$oUser->Set('password', $sAdminPwd);
$oUser->Set('contactid', $iContactId);
$oUser->Set('language', $sLanguage); // Language was chosen during the installation
$oUser::SetCurrentChange($oChange);
$iUserId = $oUser->DBInsertNoReload();
// Add this user to the very specific 'admin' profile
@@ -605,7 +598,6 @@ class UserRightsProjection extends UserRightsAddOnAPI
$oUserProfile->Set('userid', $iUserId);
$oUserProfile->Set('profileid', ADMIN_PROFILE_ID);
$oUserProfile->Set('reason', 'By definition, the administrator must have the administrator profile');
$oUserProfile::SetCurrentChange($oChange);
$oUserProfile->DBInsertNoReload();
return true;
}

View File

@@ -0,0 +1,60 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
/**
* Class DBSearchHelper
*
* @since 3.0.0
*/
class DBSearchHelper
{
/**
* Add context filter to DBUnionSearch
*
* @param \DBSearch|null $oSearch
*
* @throws \Exception
* @since 3.0.0
*/
public static function AddContextFilter(?DBSearch $oSearch): void
{
$oAppContext = new ApplicationContext();
$sClass = $oSearch->GetClass();
foreach ($oAppContext->GetNames() as $key) {
// Find the value of the object corresponding to each 'context' parameter
$aCallSpec = [$sClass, 'MapContextParam'];
$sAttCode = '';
if (is_callable($aCallSpec)) {
$sAttCode = call_user_func($aCallSpec, $key); // Returns null when there is no mapping for this parameter
}
if (MetaModel::IsValidAttCode($sClass, $sAttCode)) {
// Add Hierarchical condition if hierarchical key
$oAttDef = MetaModel::GetAttributeDef($sClass, $sAttCode);
if (isset($oAttDef) && ($oAttDef->IsExternalKey())) {
$iDefaultValue = intval($oAppContext->GetCurrentValue($key));
if ($iDefaultValue != 0) {
try {
/** @var AttributeExternalKey $oAttDef */
$sTargetClass = $oAttDef->GetTargetClass();
$sHierarchicalKeyCode = MetaModel::IsHierarchicalClass($sTargetClass);
if ($sHierarchicalKeyCode !== false) {
$oFilter = new DBObjectSearch($sTargetClass);
$oFilter->AddCondition('id', $iDefaultValue);
$oHKFilter = new DBObjectSearch($sTargetClass);
$oHKFilter->AddCondition_PointingTo($oFilter, $sHierarchicalKeyCode, TREE_OPERATOR_BELOW);
$oSearch->AddCondition_PointingTo($oHKFilter, $sAttCode);
}
}
catch (Exception $e) {
// If filtering fails just ignore it
}
}
}
}
}
}
}

View File

@@ -1,16 +1,24 @@
<?php
/**
* @deprecated will be removed in 3.1.0 - moved to sources/application/WebPage/AjaxPage.php
* @deprecated 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-2020 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
*/
// cannot notify depreciation for now as this is still load in autoloader
//DeprecatedCallsLog::NotifyDeprecatedFile('moved to sources/Application/WebPage/AjaxPage.php, now loadable using autoloader');
/**
* Class ajax_page
* @deprecated will be removed in 3.1.0 - moved to AjaxPage
*
* @deprecated 3.0.0 will be removed in 3.1.0 - moved to AjaxPage
*/
class ajax_page extends AjaxPage
{
function __construct($s_title)
{
DeprecatedCallsLog::NotifyDeprecatedPhpMethod('ajax_page is deprecated. Please use AjaxPage instead');
parent::__construct($s_title);
}
}

View File

@@ -1,39 +1,19 @@
<?php
// Copyright (C) 2010-2012 Combodo SARL
//
// This file is part of iTop.
//
// iTop is free software; you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// iTop is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
/**
* Includes all the classes to have the application up and running
*
* @copyright Copyright (C) 2010-2012 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
require_once(APPROOT.'/application/applicationcontext.class.inc.php');
require_once(APPROOT.'/application/cmdbabstract.class.inc.php');
require_once(APPROOT.'/application/displayblock.class.inc.php');
require_once(APPROOT.'/application/audit.category.class.inc.php');
require_once(APPROOT.'/application/audit.domain.class.inc.php');
require_once(APPROOT.'/application/audit.rule.class.inc.php');
require_once(APPROOT.'/application/query.class.inc.php');
require_once(APPROOT.'/setup/moduleinstallation.class.inc.php');
//require_once(APPROOT.'/application/menunode.class.inc.php');
require_once(APPROOT.'/application/utils.inc.php');
class ApplicationException extends CoreException
{
}

View File

@@ -1,5 +1,5 @@
<?php
// Copyright (C) 2010-2018 Combodo SARL
// Copyright (C) 2010-2023 Combodo SARL
//
// This file is part of iTop.
//
@@ -20,13 +20,14 @@
/**
* Class ApplicationContext
*
* @copyright Copyright (C) 2010-2018 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
use Combodo\iTop\Application\UI\Component\Input\InputFactory;
use Combodo\iTop\Application\UI\Layout\UIContentBlock;
use Combodo\iTop\Application\UI\UIBlock;
use Combodo\iTop\Application\Helper\Session;
use Combodo\iTop\Application\UI\Base\Component\Input\InputUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Layout\UIContentBlock;
use Combodo\iTop\Application\UI\Base\UIBlock;
require_once(APPROOT."/application/utils.inc.php");
@@ -223,10 +224,24 @@ class ApplicationContext
{
$sContext = "";
foreach ($this->aValues as $sName => $sValue) {
$sContext .= "<input type=\"hidden\" name=\"c[$sName]\" value=\"".htmlentities($sValue, ENT_QUOTES, 'UTF-8')."\" />\n";
$sContext .= "<input type=\"hidden\" name=\"c[$sName]\" value=\"".utils::EscapeHtml($sValue)."\" />\n";
}
return $sContext;
}
/**
* Returns the context an array of input blocks
*
* @return array The context as a sequence of <input type="hidden" /> tags
* @since 3.0.0
*/
public function GetForUIForm()
{
$aContextInputBlocks = [];
foreach ($this->aValues as $sName => $sValue) {
$aContextInputBlocks[] = InputUIBlockFactory::MakeForHidden("c[$sName]", $sValue);
}
return $aContextInputBlocks;
}
/**
* Returns the context as sequence of input tags to be inserted inside a <form> tag
@@ -236,7 +251,7 @@ class ApplicationContext
{
$oContext = new UIContentBlock();
foreach ($this->aValues as $sName => $sValue) {
$oContext->AddSubBlock(InputFactory::MakeForHidden('c[$sName]', utils::HtmlEntities($sValue)));
$oContext->AddSubBlock(InputUIBlockFactory::MakeForHidden('c[$sName]', utils::HtmlEntities($sValue)));
}
return $oContext;
}
@@ -321,7 +336,7 @@ class ApplicationContext
$sPrevious = self::GetUrlMakerClass();
self::$m_sUrlMakerClass = $sClass;
$_SESSION['UrlMakerClass'] = $sClass;
Session::Set('UrlMakerClass', $sClass);
return $sPrevious;
}
@@ -334,9 +349,9 @@ class ApplicationContext
{
if (is_null(self::$m_sUrlMakerClass))
{
if (isset($_SESSION['UrlMakerClass']))
if (Session::IsSet('UrlMakerClass'))
{
self::$m_sUrlMakerClass = $_SESSION['UrlMakerClass'];
self::$m_sUrlMakerClass = Session::Get('UrlMakerClass');
}
else
{
@@ -361,26 +376,19 @@ class ApplicationContext
{
$oAppContext = new ApplicationContext();
if (is_null($sUrlMakerClass))
{
$sUrlMakerClass = self::GetUrlMakerClass();
}
if (is_null($sUrlMakerClass)) {
$sUrlMakerClass = self::GetUrlMakerClass();
}
$sUrl = call_user_func(array($sUrlMakerClass, 'MakeObjectUrl'), $sObjClass, $sObjKey);
if (strlen($sUrl) > 0)
{
if ($bWithNavigationContext)
{
return $sUrl."&".$oAppContext->GetForLink();
}
else
{
return $sUrl;
}
}
else
{
return '';
}
if (utils::StrLen($sUrl) > 0) {
if ($bWithNavigationContext) {
return $sUrl."&".$oAppContext->GetForLink();
} else {
return $sUrl;
}
} else {
return '';
}
}
/**
@@ -389,9 +397,9 @@ class ApplicationContext
*/
protected static function LoadPluginProperties()
{
if (isset($_SESSION['PluginProperties']))
if (Session::IsSet('PluginProperties'))
{
self::$m_aPluginProperties = $_SESSION['PluginProperties'];
self::$m_aPluginProperties = Session::Get('PluginProperties');
}
else
{
@@ -411,7 +419,7 @@ class ApplicationContext
if (is_null(self::$m_aPluginProperties)) self::LoadPluginProperties();
self::$m_aPluginProperties[$sPluginClass][$sProperty] = $value;
$_SESSION['PluginProperties'][$sPluginClass][$sProperty] = $value;
Session::Set(['PluginProperties', $sPluginClass, $sProperty], $value);
}
/**

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
<?php
// Copyright (C) 2010-2012 Combodo SARL
// Copyright (C) 2010-2023 Combodo SARL
//
// This file is part of iTop.
//
@@ -20,9 +20,9 @@
/**
* This class manages the audit "categories". Each category defines a set of objects
* to check and is linked to a set of rules that determine the valid or invalid objects
* inside the set
* inside the set
*
* @copyright Copyright (C) 2010-2012 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
@@ -34,27 +34,63 @@ class AuditCategory extends cmdbAbstractObject
{
$aParams = array
(
"category" => "application, grant_by_profile",
"key_type" => "autoincrement",
"name_attcode" => "name",
"state_attcode" => "",
"reconc_keys" => array('name'),
"db_table" => "priv_auditcategory",
"db_key_field" => "id",
"category" => "application,grant_by_profile",
"key_type" => "autoincrement",
"name_attcode" => "name",
"state_attcode" => "",
"reconc_keys" => array('name'),
"db_table" => "priv_auditcategory",
"db_key_field" => "id",
"db_finalclass_field" => "",
'style' => new ormStyle(null, null, null, null, null, '../images/icons/icons8-audit-folder.svg'),
);
MetaModel::Init_Params($aParams);
MetaModel::Init_AddAttribute(new AttributeString("name", array("description"=>"Short name for this category", "allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeString("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeOQL("definition_set", array("allowed_values"=>null, "sql"=>"definition_set", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeLinkedSet("rules_list", array("linked_class"=>"AuditRule", "ext_key_to_me"=>"category_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array(), "edit_mode" => LINKSET_EDITMODE_INPLACE, "tracking_level" => LINKSET_TRACKING_ALL)));
MetaModel::Init_AddAttribute(new AttributeInteger("ok_error_tolerance", array("allowed_values"=>null, "sql"=>"ok_error_tolerance", "default_value"=>5, "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeInteger("warning_error_tolerance", array("allowed_values" => null, "sql" => "warning_error_tolerance", "default_value" => 25, "is_null_allowed" => true, "depends_on" => array())));
MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("domains_list",
array("linked_class" => "lnkAuditCategoryToAuditDomain", "ext_key_to_me" => "category_id", "ext_key_to_remote" => "domain_id", "allowed_values" => null, "count_min" => 0, "count_max" => 0, "depends_on" => array(), "display_style" => 'property')));
// Display lists
MetaModel::Init_SetZListItems('details', array('name', 'description', 'definition_set', 'rules_list')); // Attributes to be displayed for the complete details
MetaModel::Init_SetZListItems('details', array('name', 'description', 'definition_set', 'ok_error_tolerance', 'warning_error_tolerance', 'rules_list', 'domains_list')); // Attributes to be displayed for the complete details
MetaModel::Init_SetZListItems('list', array('description', )); // Attributes to be displayed for a list
// Search criteria
MetaModel::Init_SetZListItems('standard_search', array('description', 'definition_set')); // Criteria of the std search form
MetaModel::Init_SetZListItems('default_search', array('name', 'description')); // Criteria of the default search form
}
/**
* @param int $iTotal
* @param int $iErrors
*
* @return string A semantic color name (eg. red, green, orange, success, failure, ... {@see css/backoffice/utils/variables/colors/_semantic-palette.scss}) to use for this category depending on its error count and tolerance
* @throws \CoreException
*
* @since 3.1.0
*/
public function GetReportColor($iTotal, $iErrors)
{
$sResult = 'red';
if ( ($iTotal == 0) || ($iErrors / $iTotal) <= ($this->Get('ok_error_tolerance') / 100) ) {
$sResult = 'green';
} else if (($iErrors / $iTotal) <= ($this->Get('warning_error_tolerance') / 100)) {
$sResult = 'orange';
}
return $sResult;
}
public static function GetShortcutActions($sFinalClass)
{
$aShortcutActions = parent::GetShortcutActions($sFinalClass);
if (!in_array('UI:Menu:RunAudit', $aShortcutActions)) {
$aShortcutActions[] = 'UI:Menu:RunAudit';
}
return $aShortcutActions;
}
}
?>

View File

@@ -0,0 +1,123 @@
<?php
// Copyright (C) 2010-2023 Combodo SARL
//
// This file is part of iTop.
//
// iTop is free software; you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// iTop is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
/**
* This class manages the audit "categories". Each category defines a set of objects
* to check and is linked to a set of rules that determine the valid or invalid objects
* inside the set
*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
/**
* @since 3.1.0
*/
class AuditDomain extends cmdbAbstractObject
{
public static function Init()
{
$aParams = array
(
"category" => "application,grant_by_profile",
"key_type" => "autoincrement",
"name_attcode" => "name",
"complementary_name_attcode" => array('description'),
"state_attcode" => "",
"reconc_keys" => array('name'),
"db_table" => "priv_auditdomain",
"db_key_field" => "id",
"db_finalclass_field" => "",
'style' => new ormStyle(null, null, null, null, null, '../images/icons/icons8-audit-album.svg'),
);
MetaModel::Init_Params($aParams);
MetaModel::Init_AddAttribute(new AttributeString("name", array("description" => "Short name for this category", "allowed_values" => null, "sql" => "name", "default_value" => "", "is_null_allowed" => false, "depends_on" => array())));
MetaModel::Init_AddAttribute(new AttributeString("description", array("allowed_values" => null, "sql" => "description", "default_value" => "", "is_null_allowed" => true, "depends_on" => array())));
MetaModel::Init_AddAttribute(new AttributeImage("icon", array("is_null_allowed" => true, "depends_on" => array(), "display_max_width" => 96, "display_max_height" => 96, "storage_max_width" => 256, "storage_max_height" => 256, "default_image" => null, "always_load_in_tables" => false)));
MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("categories_list",
array("linked_class" => "lnkAuditCategoryToAuditDomain", "ext_key_to_me" => "domain_id", "ext_key_to_remote" => "category_id", "allowed_values" => null, "count_min" => 0, "count_max" => 0, "depends_on" => array())));
// Display lists
MetaModel::Init_SetZListItems('details', array('name', 'description', 'icon', 'categories_list')); // Attributes to be displayed for the complete details
MetaModel::Init_SetZListItems('list', array('description',)); // Attributes to be displayed for a list
// Search criteria
MetaModel::Init_SetZListItems('standard_search', array('description')); // Criteria of the std search form
MetaModel::Init_SetZListItems('default_search', array('name', 'description')); // Criteria of the default search form
}
public static function GetShortcutActions($sFinalClass)
{
$aShortcutActions = parent::GetShortcutActions($sFinalClass);
if (!in_array('UI:Menu:RunAudit', $aShortcutActions)) {
$aShortcutActions[] = 'UI:Menu:RunAudit';
}
return $aShortcutActions;
}
}
/**
* @since 3.1.0
*/
class lnkAuditCategoryToAuditDomain extends cmdbAbstractObject
{
/**
* @throws \CoreException
* @throws \Exception
*/
public static function Init()
{
$aParams = array
(
"category" => "application, grant_by_profile",
"key_type" => "autoincrement",
"name_attcode" => "",
"state_attcode" => "",
"reconc_keys" => array('category_id', 'domain_id'),
"db_table" => "priv_link_audit_category_domain",
"db_key_field" => "id",
"db_finalclass_field" => "",
"is_link" => true,
'uniqueness_rules' => array(
'no_duplicate' => array(
'attributes' => array(
0 => 'category_id',
1 => 'domain_id',
),
'filter' => '',
'disabled' => false,
'is_blocking' => true,
),
),
);
MetaModel::Init_Params($aParams);
MetaModel::Init_AddAttribute(new AttributeExternalKey("category_id", array("targetclass" => "AuditCategory", "jointype" => '', "allowed_values" => null, "sql" => "category_id", "is_null_allowed" => false, "on_target_delete" => DEL_AUTO, "depends_on" => array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("category_name", array("allowed_values" => null, "extkey_attcode" => 'category_id', "target_attcode" => "name")));
MetaModel::Init_AddAttribute(new AttributeExternalKey("domain_id", array("targetclass" => "AuditDomain", "jointype" => '', "allowed_values" => null, "sql" => "domain_id", "is_null_allowed" => false, "on_target_delete" => DEL_AUTO, "depends_on" => array())));
MetaModel::Init_AddAttribute(new AttributeExternalField("domain_name", array("allowed_values" => null, "extkey_attcode" => 'domain_id', "target_attcode" => "name")));
// Display lists
MetaModel::Init_SetZListItems('details', array('category_id', 'domain_id'));
MetaModel::Init_SetZListItems('list', array('category_id', 'domain_id'));
// Search criteria
MetaModel::Init_SetZListItems('standard_search', array('category_id', 'domain_id'));
}
}

View File

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

View File

@@ -1,7 +1,8 @@
<?php
/**
* @deprecated will be removed in 3.1.0 - moved to sources/application/WebPage/CaptureWebPage.php
* @deprecated 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-2020 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
*/
DeprecatedCallsLog::NotifyDeprecatedFile('moved to sources/Application/WebPage/CaptureWebPage.php, now loadable using autoloader');

View File

@@ -1,7 +1,8 @@
<?php
/**
* @deprecated will be removed in 3.1.0 - moved to sources/application/WebPage/CLIPage.php
* @deprecated 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-2020 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
*/
DeprecatedCallsLog::NotifyDeprecatedFile('moved to sources/Application/WebPage/CLIPage.php, now loadable using autoloader');

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,38 @@
<?php
/**
* Copyright (C) 2013-2023 Combodo SARL
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
*/
/**
* Class CompileCSSService : used to ease testing ThemeHander class via mocks
*
* @author Olivier DAIN <olivier.dain@combodo.com>
* @since 3.0.0 N°2982
*/
class CompileCSSService
{
/**
* CompileCSSService constructor.
*/
public function __construct()
{
}
public function CompileCSSFromSASS($sSassContent, $aImportPaths = [], $aVariables = []){
return utils::CompileCSSFromSASS($sSassContent, $aImportPaths, $aVariables);
}
}

View File

@@ -1,7 +1,8 @@
<?php
/**
* @deprecated will be removed in 3.1.0 - moved to sources/application/WebPage/CSVPage.php
* @deprecated 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-2020 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
*/
DeprecatedCallsLog::NotifyDeprecatedFile('moved to sources/Application/WebPage/CSVPage.php, now loadable using autoloader');

View File

@@ -1,26 +1,14 @@
<?php
/**
* Copyright (C) 2013-2019 Combodo SARL
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
use Combodo\iTop\Application\UI\Component\Button\ButtonFactory;
use Combodo\iTop\Application\UI\Component\Toolbar\Toolbar;
use Combodo\iTop\Application\UI\Component\DataTable\DataTableSettings;
use Combodo\iTop\Application\UI\Base\Component\Button\ButtonUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Component\DataTable\DataTableSettings;
use Combodo\iTop\Application\UI\Base\Component\PopoverMenu\PopoverMenu;
use Combodo\iTop\Application\UI\Base\Component\Toolbar\ToolbarUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Layout\Dashboard\DashboardLayout as DashboardLayoutUIBlock;
require_once(APPROOT.'application/dashboardlayout.class.inc.php');
require_once(APPROOT.'application/dashlet.class.inc.php');
@@ -443,22 +431,19 @@ abstract class Dashboard
public function RenderProperties($oPage, $aExtraParams = array())
{
// menu to pick a layout and edit other properties of the dashboard
$oPage->add('<div class="ui-widget-content ui-corner-all"><div class="ui-widget-header ui-corner-all" style="text-align:center; padding: 2px;">'.Dict::S('UI:DashboardEdit:Properties').'</div>');
$oPage->add('<div class="ui-widget-content ui-corner-all ibo-dashboard-editor--properties"><div class="ui-widget-header ui-corner-all ibo-dashboard-editor--properties-title">'.Dict::S('UI:DashboardEdit:Properties').'</div>');
$sUrl = utils::GetAbsoluteUrlAppRoot();
$oPage->add('<div style="text-align:center">'.Dict::S('UI:DashboardEdit:Layout').'</div>');
$oPage->add('<div id="select_layout" style="text-align:center">');
foreach( get_declared_classes() as $sLayoutClass)
{
if (is_subclass_of($sLayoutClass, 'DashboardLayout'))
{
$oPage->add('<div class="ibo-dashboard-editor--properties-subtitle" data-role="ibo-dashboard-editor--properties-subtitle">'.Dict::S('UI:DashboardEdit:Layout').'</div>');
$oPage->add('<div id="select_layout" class="ibo-dashboard-editor--layout-list" data-role="ibo-dashboard-editor--layout-list">');
foreach (get_declared_classes() as $sLayoutClass) {
if (is_subclass_of($sLayoutClass, 'DashboardLayout')) {
$oReflection = new ReflectionClass($sLayoutClass);
if (!$oReflection->isAbstract())
{
if (!$oReflection->isAbstract()) {
$aCallSpec = array($sLayoutClass, 'GetInfo');
$aInfo = call_user_func($aCallSpec);
$sChecked = ($this->sLayoutClass == $sLayoutClass) ? 'checked' : '';
$oPage->add('<input type="radio" name="layout_class" '.$sChecked.' value="'.$sLayoutClass.'" id="layout_'.$sLayoutClass.'"><label for="layout_'.$sLayoutClass.'"><img src="'.$sUrl.$aInfo['icon'].'" /></label>'); // title="" on either the img or the label does nothing !
$oPage->add('<input type="radio" name="layout_class" '.$sChecked.' value="'.$sLayoutClass.'" id="layout_'.$sLayoutClass.'"><label for="layout_'.$sLayoutClass.'"><img src="'.$sUrl.$aInfo['icon'].'" class="ibo-dashboard--properties--icon" data-role="ibo-dashboard--properties--icon"/></label>'); // title="" on either the img or the label does nothing !
}
}
}
@@ -489,7 +474,8 @@ abstract class Dashboard
$oPage->add_ready_script(
<<<EOF
// Note: the title gets deleted by the validation mechanism
$("#attr_auto_reload_sec").tooltip({items: 'input', content: '$sRateTitle'});
$("#attr_auto_reload_sec").attr('data-tooltip-content', '$sRateTitle');
CombodoTooltip.InitTooltipFromMarkup($("#attr_auto_reload_sec"));
$("#attr_auto_reload_sec").prop('disabled', !$('#attr_auto_reload').is(':checked'));
$('#attr_auto_reload').change( function(ev) {
@@ -506,7 +492,7 @@ abstract class Dashboard
},
});
$('#event_bus').bind('dashlet-selected', function(event, data){
$('#event_bus').on('dashlet-selected', function(event, data){
var sDashletId = data.dashlet_id;
var sPropId = 'dashlet_properties_'+sDashletId;
$('.dashlet_properties').each(function() {
@@ -531,6 +517,8 @@ EOF
* @param bool $bEditMode
* @param array $aExtraParams
* @param bool $bCanEdit
*
* @return \Combodo\iTop\Application\UI\Base\Layout\Dashboard\DashboardLayout
*/
public function Render($oPage, $bEditMode = false, $aExtraParams = array(), $bCanEdit = true)
{
@@ -538,21 +526,6 @@ EOF
$aExtraParams['dashboard_div_id'] = utils::Sanitize($this->GetId(), '', 'element_identifier');
}
$sTitleForHTML = utils::HtmlEntities(Dict::S($this->sTitle));
$sHtml = "<div class=\"ibo-top-bar--toolbar-dashboard-title\">{$sTitleForHTML}</div>";
if ($oPage instanceof iTopWebPage) {
$oTopBar = $oPage->GetTopBarLayout();
$oToolbar = new Toolbar();
$oTopBar->SetToolbar($oToolbar);
$oToolbar->AddHtml($sHtml);
} else {
$oPage->add_script(<<<JS
$(".ibo-top-bar--toolbar-dashboard-title").html("$sTitleForHTML");
JS
);
}
/** @var \DashboardLayoutMultiCol $oLayout */
$oLayout = new $this->sLayoutClass();
@@ -563,11 +536,36 @@ JS
}
}
$oLayout->Render($oPage, $this->aCells, $bEditMode, $aExtraParams);
$oDashboard = $oLayout->Render($oPage, $this->aCells, $bEditMode, $aExtraParams);
$oPage->AddUiBlock($oDashboard);
$bFromDasboardPage = isset($aExtraParams['from_dashboard_page']) ? isset($aExtraParams['from_dashboard_page']) : false;
if ($bFromDasboardPage) {
$sTitleForHTML = utils::HtmlEntities(Dict::S($this->sTitle));
$sHtml = "<div class=\"ibo-top-bar--toolbar-dashboard-title\" title=\"{$sTitleForHTML}\">{$sTitleForHTML}</div>";
if ($oPage instanceof iTopWebPage) {
$oTopBar = $oPage->GetTopBarLayout();
$oToolbar = ToolbarUIBlockFactory::MakeStandard();
$oTopBar->SetToolbar($oToolbar);
$oToolbar->AddHtml($sHtml);
} else {
$oPage->add_script(<<<JS
$(".ibo-top-bar--toolbar-dashboard-title").html("$sTitleForHTML").attr("title", $('<div>').html("$sTitleForHTML").text());
JS
);
}
} else {
$oDashboard->SetTitle(Dict::S($this->sTitle));
}
if (!$bEditMode) {
$oPage->add_linked_script('../js/dashlet.js');
$oPage->add_linked_script('../js/dashboard.js');
}
return $oDashboard;
}
/**
@@ -579,19 +577,18 @@ JS
public function RenderDashletsSelection(WebPage $oPage)
{
// Toolbox/palette to drag and drop dashlets
$oPage->add('<div class="ui-widget-content ui-corner-all"><div class="ui-widget-header ui-corner-all" style="text-align:center; padding: 2px;">'.Dict::S('UI:DashboardEdit:Dashlets').'</div>');
$oPage->add('<div class="ui-widget-content ui-corner-all ibo-dashboard--available-dashlets"><div class="ui-widget-header ui-corner-all ibo-dashboard--available-dashlet--title">'.Dict::S('UI:DashboardEdit:Dashlets').'</div>');
$sUrl = utils::GetAbsoluteUrlAppRoot();
$oPage->add('<div id="select_dashlet" style="text-align:center; max-height:120px; overflow-y:auto;">');
$oPage->add('<div id="select_dashlet" class="ibo-dashboard--available-dashlets--list" data-role="ibo-dashboard--available-dashlets--list">');
$aAvailableDashlets = $this->GetAvailableDashlets();
foreach($aAvailableDashlets as $sDashletClass => $aInfo)
{
$oPage->add('<span dashlet_class="'.$sDashletClass.'" class="dashlet_icon ui-widget-content ui-corner-all" id="dashlet_'.$sDashletClass.'" title="'.$aInfo['label'].'" style="width:34px; height:34px; display:inline-block; margin:2px;"><img src="'.$sUrl.$aInfo['icon'].'" /></span>');
foreach ($aAvailableDashlets as $sDashletClass => $aInfo) {
$oPage->add('<span dashlet_class="'.$sDashletClass.'" class="ibo-dashboard-editor--available-dashlet-icon dashlet_icon ui-widget-content ui-corner-all" data-role="ibo-dashboard-editor--available-dashlet-icon" id="dashlet_'.$sDashletClass.'" data-tooltip-content="'.$aInfo['label'].'" title="'.$aInfo['label'].'"><img src="'.$sUrl.$aInfo['icon'].'" /></span>');
}
$oPage->add('</div>');
$oPage->add('</div>');
$oPage->add_ready_script("$('.dashlet_icon').draggable({helper: 'clone', appendTo: 'body', zIndex: 10000, revert:'invalid'});");
$oPage->add_ready_script("$('.dashlet_icon').draggable({cursor: 'move', helper: 'clone', appendTo: 'body', zIndex: 10000, revert:'invalid'});");
}
/**
@@ -601,12 +598,12 @@ JS
public function RenderDashletsProperties(WebPage $oPage, $aExtraParams = array())
{
// Toolbox/palette to edit the properties of each dashlet
$oPage->add('<div class="ui-widget-content ui-corner-all"><div class="ui-widget-header ui-corner-all" style="text-align:center; padding: 2px;">'.Dict::S('UI:DashboardEdit:DashletProperties').'</div>');
$oPage->add('<div class="ui-widget-content ui-corner-all ibo-dashlet--properties"><div class="ui-widget-header ui-corner-all ibo-dashlet--properties--title">'.Dict::S('UI:DashboardEdit:DashletProperties').'</div>');
/** @var \DashboardLayoutMultiCol $oLayout */
$oLayout = new $this->sLayoutClass();
$oPage->add('<div id="dashlet_properties" style="text-align:center">');
$oPage->add('<div id="dashlet_properties">');
foreach($this->aCells as $iCellIdx => $aCell)
{
/** @var \Dashlet $oDashlet */
@@ -639,16 +636,13 @@ JS
foreach( get_declared_classes() as $sDashletClass)
{
// DashletUnknown is not among the selection as it is just a fallback for dashlets that can't instanciated.
if ( is_subclass_of($sDashletClass, 'Dashlet') && !in_array($sDashletClass, array('DashletUnknown', 'DashletProxy')) )
{
// DashletUnknown is not among the selection as it is just a fallback for dashlets that can't instantiated.
if (is_subclass_of($sDashletClass, 'Dashlet') && !in_array($sDashletClass, array('DashletUnknown', 'DashletProxy'))) {
$oReflection = new ReflectionClass($sDashletClass);
if (!$oReflection->isAbstract())
{
if (!$oReflection->isAbstract()) {
$aCallSpec = array($sDashletClass, 'IsVisible');
$bVisible = call_user_func($aCallSpec);
if ($bVisible)
{
if ($bVisible) {
$aCallSpec = array($sDashletClass, 'GetInfo');
$aInfo = call_user_func($aCallSpec);
$aDashlets[$sDashletClass] = $aInfo;
@@ -795,6 +789,7 @@ class RuntimeDashboard extends Dashboard
/**
* @inheritDoc
* @return bool $bIsNew
* @throws \Exception
*/
public function Save()
@@ -804,6 +799,7 @@ class RuntimeDashboard extends Dashboard
$oUDSearch->AddCondition('user_id', UserRights::GetUserId(), '=');
$oUDSearch->AddCondition('menu_code', $this->sId, '=');
$oUDSet = new DBObjectSet($oUDSearch);
$bIsNew = false;
if ($oUDSet->Count() > 0)
{
// Assuming there is at most one couple {user, menu}!
@@ -817,10 +813,12 @@ class RuntimeDashboard extends Dashboard
$oUserDashboard->Set('user_id', UserRights::GetUserId());
$oUserDashboard->Set('menu_code', $this->sId);
$oUserDashboard->Set('contents', $sXml);
$bIsNew = true;
}
utils::PushArchiveMode(false);
$oUserDashboard->DBWrite();
utils::PopArchiveMode();
return $bIsNew;
}
/**
@@ -866,28 +864,29 @@ class RuntimeDashboard extends Dashboard
{
$bCustomized = false;
if (!appUserPreferences::GetPref('display_original_dashboard_'.$sDashBoardId, false))
{
$sDashboardFileSanitized = utils::RealPath($sDashboardFile, APPROOT);
if (false === $sDashboardFileSanitized) {
throw new SecurityException('Invalid dashboard file !');
}
if (!appUserPreferences::GetPref('display_original_dashboard_'.$sDashBoardId, false)) {
// Search for an eventual user defined dashboard
$oUDSearch = new DBObjectSearch('UserDashboard');
$oUDSearch->AddCondition('user_id', UserRights::GetUserId(), '=');
$oUDSearch->AddCondition('menu_code', $sDashBoardId, '=');
$oUDSet = new DBObjectSet($oUDSearch);
if ($oUDSet->Count() > 0)
{
if ($oUDSet->Count() > 0) {
// Assuming there is at most one couple {user, menu}!
$oUserDashboard = $oUDSet->Fetch();
$sDashboardDefinition = $oUserDashboard->Get('contents');
$bCustomized = true;
}
else
{
$sDashboardDefinition = @file_get_contents($sDashboardFile);
} else {
$sDashboardDefinition = @file_get_contents($sDashboardFileSanitized);
}
}
else
{
$sDashboardDefinition = @file_get_contents($sDashboardFile);
$sDashboardDefinition = @file_get_contents($sDashboardFileSanitized);
}
if ($sDashboardDefinition !== false)
@@ -895,12 +894,59 @@ class RuntimeDashboard extends Dashboard
$oDashboard = new RuntimeDashboard($sDashBoardId);
$oDashboard->FromXml($sDashboardDefinition);
$oDashboard->SetCustomFlag($bCustomized);
$oDashboard->SetDefinitionFile($sDashboardFile);
}
else
{
$oDashboard->SetDefinitionFile($sDashboardFileSanitized);
} else {
$oDashboard = null;
}
return $oDashboard;
}
/**
* @param string $sDashboardFile file name relative to the current module folder
* @param string $sDashBoardId code of the dashboard either menu_id or <class>__<attcode>
*
* @return null|RuntimeDashboard
* @throws \CoreException
* @throws \CoreUnexpectedValue
* @throws \MissingQueryArgument
* @throws \MySQLException
* @throws \MySQLHasGoneAwayException
* @throws \Exception
*/
public static function GetDashboardToEdit($sDashboardFile, $sDashBoardId)
{
$bCustomized = false;
$sDashboardFileSanitized = utils::RealPath($sDashboardFile, APPROOT);
if (false === $sDashboardFileSanitized) {
throw new SecurityException('Invalid dashboard file !');
}
// Search for an eventual user defined dashboard
$oUDSearch = new DBObjectSearch('UserDashboard');
$oUDSearch->AddCondition('user_id', UserRights::GetUserId(), '=');
$oUDSearch->AddCondition('menu_code', $sDashBoardId, '=');
$oUDSet = new DBObjectSet($oUDSearch);
if ($oUDSet->Count() > 0) {
// Assuming there is at most one couple {user, menu}!
$oUserDashboard = $oUDSet->Fetch();
$sDashboardDefinition = $oUserDashboard->Get('contents');
$bCustomized = true;
} else {
$sDashboardDefinition = @file_get_contents($sDashboardFileSanitized);
}
if ($sDashboardDefinition !== false) {
$oDashboard = new RuntimeDashboard($sDashBoardId);
$oDashboard->FromXml($sDashboardDefinition);
$oDashboard->SetCustomFlag($bCustomized);
$oDashboard->SetDefinitionFile($sDashboardFileSanitized);
} else {
$oDashboard = null;
}
return $oDashboard;
}
@@ -910,43 +956,33 @@ class RuntimeDashboard extends Dashboard
*/
public function Render($oPage, $bEditMode = false, $aExtraParams = array(), $bCanEdit = true)
{
if (!isset($aExtraParams['query_params']) && isset($aExtraParams['this->class']))
{
if (!isset($aExtraParams['query_params']) && isset($aExtraParams['this->class'])) {
$oObj = MetaModel::GetObject($aExtraParams['this->class'], $aExtraParams['this->id']);
$aRenderParams = array('query_params' => $oObj->ToArgsForQuery());
}
else
{
} else {
$aRenderParams = $aExtraParams;
}
parent::Render($oPage, $bEditMode, $aRenderParams);
$oDashboard = parent::Render($oPage, $bEditMode, $aRenderParams);
if (isset($aExtraParams['query_params']['this->object()']))
{
if (isset($aExtraParams['query_params']['this->object()'])) {
/** @var \DBObject $oObj */
$oObj = $aExtraParams['query_params']['this->object()'];
$aAjaxParams = array('this->class' => get_class($oObj), 'this->id' => $oObj->GetKey());
}
else
{
if (isset($aExtraParams['from_dashboard_page'])) {
$aAjaxParams['from_dashboard_page'] = $aExtraParams['from_dashboard_page'];
}
} else {
$aAjaxParams = $aExtraParams;
}
if (!$bEditMode && !$oPage->IsPrintableVersion())
{
if (!$bEditMode && !$oPage->IsPrintableVersion()) {
$sId = $this->GetId();
$sDivId = utils::Sanitize($sId, '', 'element_identifier');
if ($this->GetAutoReload())
{
$sFile = addslashes($this->GetDefinitionFile());
$sExtraParams = json_encode($aAjaxParams);
if ($this->GetAutoReload()) {
$iReloadInterval = 1000 * $this->GetAutoReloadInterval();
$sReloadURL = $this->GetReloadURL();
$oAppContext = new ApplicationContext();
$sContext=$oAppContext->GetForPostParams();
//$sContext is named "c" because it use the existing code for context parameters c[org_id] and c[menu]
$oPage->add_script(
<<<EOF
<<<JS
if (typeof(AutoReloadDashboardId$sDivId) !== 'undefined')
{
clearInterval(AutoReloadDashboardId$sDivId);
@@ -960,23 +996,16 @@ class RuntimeDashboard extends Dashboard
// Do not reload when a dialog box is active
if (!($('.ui-dialog:visible').length > 0) && $('.ibo-dashboard#$sDivId').is(':visible'))
{
$('.ibo-dashboard#$sDivId').block();
$.post(GetAbsoluteUrlAppRoot()+'pages/ajax.render.php',
{ operation: 'reload_dashboard', dashboard_id: '$sId', file: '$sFile', extra_params: $sExtraParams, c: $sContext, reload_url: '$sReloadURL'},
function(data){
$('.ibo-dashboard#$sDivId').html(data);
$('.ibo-dashboard#$sDivId').unblock();
}
);
updateDashboard$sDivId();
}
}
EOF
JS
);
}
else
{
$oPage->add_script(
<<<EOF
<<<EOF
if (typeof(AutoReloadDashboardId$sDivId) !== 'undefined')
{
clearInterval(AutoReloadDashboardId$sDivId);
@@ -986,67 +1015,76 @@ EOF
);
}
if ($bCanEdit)
{
$this->RenderSelector($oPage, $aAjaxParams);
$this->RenderEditionTools($oPage, $aAjaxParams);
if ($bCanEdit) {
$this->RenderSelector($oPage, $oDashboard, $aAjaxParams);
$this->RenderEditionTools($oPage, $oDashboard, $aAjaxParams);
}
}
}
/**
* @param WebPage $oPage
* @param \Combodo\iTop\Application\UI\Base\Layout\Dashboard\DashboardLayout $oDashboard
* @param bool $bFromDashboardPage
* @param array $aAjaxParams
*
* @throws \CoreException
* @throws \CoreUnexpectedValue
* @throws \MySQLException
*/
protected function RenderSelector(WebPage $oPage, $aAjaxParams = array())
protected function RenderSelector(WebPage $oPage, DashboardLayoutUIBlock $oDashboard, $aAjaxParams = array())
{
if (!$this->HasCustomDashboard()) {
return;
}
$sId = $this->GetId();
$sDivId = utils::Sanitize($sId, '', 'element_identifier');
$sExtraParams = json_encode($aAjaxParams);
$sSelectorHtml = '<div class="ibo-top-bar--toolbar-dashboard-selector">';
if ($this->HasCustomDashboard()) {
$bStandardSelected = appUserPreferences::GetPref('display_original_dashboard_'.$sId, false);
$sStandard = Dict::S('UI:Toggle:StandardDashboard');
$sSelectorHtml .= '<div class="selector-label">'.$sStandard.'</div>';
$sSelectorHtml .= '<label class="switch"><input type="checkbox" onchange="ToggleDashboardSelector'.$sDivId.'();" '.($bStandardSelected ? '' : 'checked').'><span class="slider round"></span></label></input></label>';
$sCustom = Dict::S('UI:Toggle:CustomDashboard');
$sSelectorHtml .= '<div class="selector-label">'.$sCustom.'</div>';
}
$sSwitchToStandard = Dict::S('UI:Toggle:SwitchToStandardDashboard');
$sSwitchToCustom = Dict::S('UI:Toggle:SwitchToCustomDashboard');
$bStandardSelected = appUserPreferences::GetPref('display_original_dashboard_'.$sId, false);
$sSelectorHtml = '<div id="ibo-dashboard-selector'.$sDivId.'" class="ibo-dashboard--selector" data-tooltip-content="'.($bStandardSelected ? $sSwitchToCustom : $sSwitchToStandard).'">';
$sSelectorHtml .= '<label class="ibo-dashboard--switch"><input type="checkbox" onchange="ToggleDashboardSelector'.$sDivId.'();" '.($bStandardSelected ? '' : 'checked').'><span class="ibo-dashboard--slider"></span></label></input></label>';
$sSelectorHtml .= '</div>';
$sFile = addslashes($this->GetDefinitionFile());
$sReloadURL = $this->GetReloadURL();
if ($oPage instanceof iTopWebPage) {
$oToolbar = $oPage->GetTopBarLayout()->GetToolbar();
$bFromDashboardPage = isset($aAjaxParams['from_dashboard_page']) ? isset($aAjaxParams['from_dashboard_page']) : false;
if ($bFromDashboardPage) {
if ($oPage instanceof iTopWebPage) {
$oToolbar = $oPage->GetTopBarLayout()->GetToolbar();
$oToolbar->AddHtml($sSelectorHtml);
}
} else {
$oToolbar = $oDashboard->GetToolbar();
$oToolbar->AddHtml($sSelectorHtml);
}
$oPage->add_script(
<<<EOF
$oPage->add_script(
<<<JS
function ToggleDashboardSelector$sDivId()
{
$('.ibo-dashboard#$sDivId').block();
var dashboard = $('.ibo-dashboard#$sDivId')
dashboard.block();
$.post(GetAbsoluteUrlAppRoot()+'pages/ajax.render.php',
{ operation: 'toggle_dashboard', dashboard_id: '$sId', file: '$sFile', extra_params: $sExtraParams, reload_url: '$sReloadURL' },
function(data) {
$('.ibo-dashboard#$sDivId').html(data);
$('.ibo-dashboard#$sDivId').unblock();
dashboard.html(data);
dashboard.unblock();
if ($('#ibo-dashboard-selector$sDivId input').prop("checked")) {
$('#ibo-dashboard-selector$sDivId').attr('data-tooltip-content', '$sSwitchToStandard');
} else {
$('#ibo-dashboard-selector$sDivId').attr('data-tooltip-content', '$sSwitchToCustom');
}
CombodoTooltip.InitAllNonInstantiatedTooltips($('#ibo-dashboard-selector$sDivId').parent(), true);
}
);
}
EOF
);
} else {
$sSelectorHtml = addslashes($sSelectorHtml);
$oPage->add_script(<<<JS
$(".ibo-top-bar--toolbar-dashboard-selector").replaceWith("$sSelectorHtml");
JS
);
}
);
}
/**
@@ -1076,12 +1114,8 @@ JS
*
* @throws \Exception
*/
protected function RenderEditionTools(WebPage $oPage, $aExtraParams)
protected function RenderEditionTools(WebPage $oPage, DashboardLayoutUIBlock $oDashboard, $aExtraParams)
{
if (!($oPage instanceof iTopWebPage)) {
return;
}
$oPage->add_linked_script(utils::GetAbsoluteUrlAppRoot().'js/jquery.iframe-transport.js');
$oPage->add_linked_script(utils::GetAbsoluteUrlAppRoot().'js/jquery.fileupload.js');
$sId = utils::Sanitize($this->GetId(), '', 'element_identifier');
@@ -1089,52 +1123,46 @@ JS
$sMenuTogglerId = "ibo-dashboard-menu-toggler-{$sId}";
$sPopoverMenuId = "ibo-dashboard-menu-popover-{$sId}";
$sName = 'UI:Dashboard:Actions';
$oToolbar = $oPage->GetTopBarLayout()->GetToolbar();
$oActionButton = ButtonFactory::MakeLinkNeutral('', '', 'fas fa-ellipsis-v', $sName, '', $sMenuTogglerId);
$oActionButton->AddCSSClasses("ibo-top-bar--toolbar-dashboard-menu-toggler");
$bFromDashboardPage = isset($aExtraParams['from_dashboard_page']) ? isset($aExtraParams['from_dashboard_page']) : false;
if ($bFromDashboardPage) {
if (!($oPage instanceof iTopWebPage)) {
// TODO 3.0 change the menu
return;
}
$oToolbar = $oPage->GetTopBarLayout()->GetToolbar();
} else {
$oToolbar = $oDashboard->GetToolbar();
}
$oActionButton = ButtonUIBlockFactory::MakeIconAction('fas fa-ellipsis-v', Dict::S($sName), $sName, '', false, $sMenuTogglerId)
->AddCSSClass('ibo-top-bar--toolbar-dashboard-menu-toggler')
->AddCSSClass('ibo-action-button');
$oToolbar->AddSubBlock($oActionButton);
$aActions = array();
$sFile = addslashes($this->sDefinitionFile);
$sJSExtraParams = json_encode($aExtraParams);
$bCanEdit = true;
if ($this->HasCustomDashboard()) {
$bCanEdit = !appUserPreferences::GetPref('display_original_dashboard_'.$this->GetId(), false);
}
if ($bCanEdit) {
$oEdit = new JSPopupMenuItem('UI:Dashboard:Edit', Dict::S('UI:Dashboard:Edit'), "return EditDashboard('{$this->sId}', '$sFile', $sJSExtraParams)");
$oEdit = new JSPopupMenuItem('UI:Dashboard:Edit', Dict::S('UI:Dashboard:EditCustom'), "return EditDashboard('{$this->sId}', '$sFile', $sJSExtraParams)");
$aActions[$oEdit->GetUID()] = $oEdit->GetMenuItem();
$oRevert = new JSPopupMenuItem('UI:Dashboard:RevertConfirm', Dict::S('UI:Dashboard:DeleteCustom'),
"if (confirm('".addslashes(Dict::S('UI:Dashboard:RevertConfirm'))."')) return RevertDashboard('{$this->sId}', $sJSExtraParams); else return false");
$aActions[$oRevert->GetUID()] = $oRevert->GetMenuItem();
} else {
$oEdit = new JSPopupMenuItem('UI:Dashboard:Edit', Dict::S('UI:Dashboard:CreateCustom'), "return EditDashboard('{$this->sId}', '$sFile', $sJSExtraParams)");
$aActions[$oEdit->GetUID()] = $oEdit->GetMenuItem();
}
if ($this->bCustomized) {
$oRevert = new JSPopupMenuItem('UI:Dashboard:RevertConfirm', Dict::S('UI:Dashboard:Revert'),
"if (confirm('".addslashes(Dict::S('UI:Dashboard:RevertConfirm'))."')) return RevertDashboard('{$this->sId}', $sJSExtraParams); else return false");
$aActions[$oRevert->GetUID()] = $oRevert->GetMenuItem();
}
utils::GetPopupMenuItems($oPage, iPopupMenuExtension::MENU_DASHBOARD_ACTIONS, $this, $aActions);
$oToolbar->AddSubBlock($oPage->GetPopoverMenu($sPopoverMenuId, $aActions));
$oActionButton->AddCSSClasses('ibo-action-button')
->SetJsCode(<<<JS
$("#{$sPopoverMenuId}").popover_menu({toggler: "#{$sMenuTogglerId}"});
$('#{$sMenuTogglerId}').on('click', function(oEvent) {
var oEventTarget = $('#{$sMenuTogglerId}');
var aEventTargetPos = oEventTarget.position();
var popover = $("#{$sPopoverMenuId}");
popover.css({
// 'top': (aEventTargetPos.top + parseInt(oEventTarget.css('marginTop'), 10) + oEventTarget.height()) + 'px',
// 'left': (aEventTargetPos.left + parseInt(oEventTarget.css('marginLeft'), 10) + oEventTarget.width() - popover.width()) + 'px',
'top': (aEventTargetPos.top + oEventTarget.outerHeight(true)) + 'px',
'left': (aEventTargetPos.left + oEventTarget.outerWidth(true) - popover.width()) + 'px',
'z-index': 10060
});
popover.popover_menu("togglePopup");
});
JS
);
$oActionsMenu = $oPage->GetPopoverMenu($sPopoverMenuId, $aActions)
->SetTogglerJSSelector("#$sMenuTogglerId")
->SetContainer(PopoverMenu::ENUM_CONTAINER_BODY);
$oToolbar->AddSubBlock($oActionButton)
->AddSubBlock($oActionsMenu);
$sReloadURL = $this->GetReloadURL();
$oPage->add_script(
@@ -1172,7 +1200,7 @@ EOF
$oPage->add_ready_script(
<<<EOF
$('#select_layout input').click( function() {
$('#select_layout input').on('click', function() {
var sLayoutClass = $(this).val();
$('.itop-dashboard').runtimedashboard('option', {layout_class: sLayoutClass});
} );
@@ -1211,30 +1239,27 @@ EOF
*/
public function RenderEditor($oPage, $aExtraParams = array())
{
if (isset($aExtraParams['this->class']))
{
if (isset($aExtraParams['this->class'])) {
$oObj = MetaModel::GetObject($aExtraParams['this->class'], $aExtraParams['this->id']);
$aRenderParams = array('query_params' => $oObj->ToArgsForQuery());
}
else
{
} else {
$aRenderParams = $aExtraParams;
}
$aRenderParams['dashboard_div_id'] = $aExtraParams['dashboard_div_id'];
$sJSExtraParams = json_encode($aExtraParams);
$oPage->add('<div id="dashboard_editor">');
$oPage->add('<div id="dashboard_editor" class="ibo-dashboard-editor" data-role="ibo-dashboard-editor">');
$oPage->add('<div class="ui-layout-center">');
$this->SetCustomFlag(true);
$this->Render($oPage, true, $aRenderParams);
$oPage->add('</div>');
$oPage->add('<div class="ui-layout-east">');
$oPage->add('<div class="ui-layout-east ibo-dashboard-editor--pane" data-role="ibo-dashboard-editor--pane">');
$this->RenderProperties($oPage, $aExtraParams);
$this->RenderDashletsSelection($oPage);
$this->RenderDashletsProperties($oPage, $aExtraParams);
$oPage->add('</div>');
$oPage->add('<div id="event_bus"/>'); // For exchanging messages between the panes, same as in the designer
$oPage->add('</div>');
$sDialogTitle = Dict::S('UI:DashboardEdit:Title');
$sOkButtonLabel = Dict::S('UI:Button:Save');
$sCancelButtonLabel = Dict::S('UI:Button:Cancel');
@@ -1262,7 +1287,24 @@ $('#dashboard_editor').dialog({
modal: true,
title: '$sDialogTitle',
buttons: [
{ text: "$sOkButtonLabel", click: function() {
{ text: "$sCancelButtonLabel",
class: "ibo-is-alternative",
click: function() {
var oDashboard = $('.itop-dashboard').data('itopRuntimedashboard');
if (oDashboard.is_modified())
{
if (!confirm('$sCancelConfirmationMessage'))
{
return;
}
}
window.bLeavingOnUserAction = true;
$(this).dialog( "close" );
$(this).remove();
} },
{ text: "$sOkButtonLabel",
class: "ibo-is-primary",
click: function() {
var oDashboard = $('.itop-dashboard').data('itopRuntimedashboard');
if (oDashboard.is_dirty())
{
@@ -1278,19 +1320,6 @@ $('#dashboard_editor').dialog({
window.bLeavingOnUserAction = true;
oDashboard.save($(this));
} },
{ text: "$sCancelButtonLabel", click: function() {
var oDashboard = $('.itop-dashboard').data('itopRuntimedashboard');
if (oDashboard.is_modified())
{
if (!confirm('$sCancelConfirmationMessage'))
{
return;
}
}
window.bLeavingOnUserAction = true;
$(this).dialog( "close" );
$(this).remove();
} },
],
close: function() { $(this).remove(); }
});
@@ -1308,20 +1337,16 @@ $('#dashboard_editor .ui-layout-center').runtimedashboard({
new_dashlet_parameters: {operation: 'new_dashlet'}
});
dashboard_prop_size = GetUserPreference('dashboard_prop_size', 350);
$('#dashboard_editor').layout({
east: {
minSize: 200,
size: dashboard_prop_size,
togglerLength_open: 0,
togglerLength_closed: 0,
onresize_end: function(name, elt, state, options, layout)
{
if (state.isSliding == false)
{
SetUserPreference('dashboard_prop_size', state.size, true);
}
},
var dashboard_prop_size = GetUserPreference('dashboard_prop_size', 400);
$('#dashboard_editor > .itop-dashboard').width($('#dashboard_editor').width() - dashboard_prop_size);
// We check when we finish click on the pane with the resize slider
// if the pane size changed (% 5px), if it's the case we save the value in userpref
$('#dashboard_editor > .itop-dashboard').on('mouseup',function (){
var iWidthDiff = $(this).width() - ($('#dashboard_editor').width() - dashboard_prop_size);
if( Math.abs(iWidthDiff) > 5){
dashboard_prop_size = iWidthDiff;
SetUserPreference('dashboard_prop_size', $('#dashboard_editor').width() - $(this).width(), true);
}
});
@@ -1483,32 +1508,37 @@ JS
$sCancelButtonLabel = Dict::S('UI:Button:Cancel');
$oPage->add_ready_script(
<<<JS
<<<JS
$('#dashlet_creation_dlg').dialog({
width: 600,
modal: true,
title: '$sDialogTitle',
buttons: [
{ text: "$sOkButtonLabel", click: function() {
var oForm = $(this).find('form');
var sFormId = oForm.attr('id');
var oParams = null;
var aErrors = ValidateForm(sFormId, false);
if (aErrors.length == 0)
{
oParams = ReadFormParams(sFormId);
}
oParams.operation = 'add_dashlet';
var me = $(this);
$.post(GetAbsoluteUrlAppRoot()+'pages/ajax.render.php', oParams, function(data) {
me.dialog( "close" );
me.remove();
$('body').append(data);
});
} },
{ text: "$sCancelButtonLabel", click: function() {
{ text: "$sCancelButtonLabel",
click: function() {
$(this).dialog( "close" ); $(this).remove();
} },
} ,
'class': 'ibo-button ibo-is-alternative ibo-is-neutral action cancel'
},
{ text: "$sOkButtonLabel",
click: function() {
var oForm = $(this).find('form');
var sFormId = oForm.attr('id');
var oParams = null;
var aErrors = ValidateForm(sFormId, false);
if (aErrors.length == 0)
{
oParams = ReadFormParams(sFormId);
}
oParams.operation = 'add_dashlet';
var me = $(this);
$.post(GetAbsoluteUrlAppRoot()+'pages/ajax.render.php', oParams, function(data) {
me.dialog( "close" );
me.remove();
$('body').append(data);
});
},
'class': 'ibo-button ibo-is-regular ibo-is-primary action' }
],
close: function() { $(this).remove(); }
});
@@ -1524,6 +1554,29 @@ JS
return $this->sDefinitionFile;
}
/**
* @param string $sDashboardFileRelative can also be an absolute path (compatibility with old URL)
*
* @return string full path to the Dashboard file
* @throws \SecurityException if path isn't under approot
* @uses utils::RealPath()
* @since 2.7.8 3.0.3 3.1.0 N°4449 remove FPD
*/
public static function GetDashboardFileFromRelativePath($sDashboardFileRelative)
{
if (utils::RealPath($sDashboardFileRelative, APPROOT)) {
// compatibility with old URL containing absolute path !
return $sDashboardFileRelative;
}
$sDashboardFile = APPROOT.$sDashboardFileRelative;
if (false === utils::RealPath($sDashboardFile, APPROOT)) {
throw new SecurityException('Invalid dashboard file !');
}
return $sDashboardFile;
}
/**
* @param string $sDefinitionFile
*/

View File

@@ -1,5 +1,5 @@
<?php
// Copyright (C) 2010-2012 Combodo SARL
// Copyright (C) 2010-2023 Combodo SARL
//
// This file is part of iTop.
//
@@ -15,15 +15,15 @@
//
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
use Combodo\iTop\Application\UI\Component\Html\Html;
use Combodo\iTop\Application\UI\Layout\Dashboard\DashboardColumn;
use Combodo\iTop\Application\UI\Layout\Dashboard\DashboardLayout as UIDashboardLayout;
use Combodo\iTop\Application\UI\Layout\Dashboard\DashboardRow;
use Combodo\iTop\Application\UI\Base\Component\Html\Html;
use Combodo\iTop\Application\UI\Base\Layout\Dashboard\DashboardColumn;
use Combodo\iTop\Application\UI\Base\Layout\Dashboard\DashboardLayout as DashboardLayoutUIBlock;
use Combodo\iTop\Application\UI\Base\Layout\Dashboard\DashboardRow;
/**
* Dashboard presentation
*
* @copyright Copyright (C) 2010-2012 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
abstract class DashboardLayout
@@ -116,12 +116,15 @@ abstract class DashboardLayoutMultiCol extends DashboardLayout
// Trim the list of cells to remove the invisible/empty ones at the end of the array
$aCells = $this->TrimCellsArray($aCells);
$oDashboardLayout = new UIDashboardLayout();
$oPage->AddUiBlock($oDashboardLayout);
$oDashboardLayout = new DashboardLayoutUIBlock();
//$oPage->AddUiBlock($oDashboardLayout);
$iCellIdx = 0;
$iNbRows = ceil(count($aCells) / $this->iNbCols);
//Js given by each dashlet to reload
$sJSReload = "";
for ($iRows = 0; $iRows < $iNbRows; $iRows++) {
$oDashboardRow = new DashboardRow();
$oDashboardLayout->AddDashboardRow($oDashboardRow);
@@ -148,8 +151,11 @@ abstract class DashboardLayoutMultiCol extends DashboardLayout
}
$iCellIdx++;
}
$sJSReload .= $oDashboardRow->GetJSRefreshCallback()." ";
}
$oPage->add_script("function updateDashboard".$aExtraParams['dashboard_div_id']."(){".$sJSReload."}");
if ($bEditMode) // Add one row for extensibility
{
$oDashboardRow = new DashboardRow();
@@ -161,7 +167,8 @@ abstract class DashboardLayoutMultiCol extends DashboardLayout
$oDashboardColumn->AddUIBlock(new Html('&nbsp;'));
}
}
return;
return $oDashboardLayout;
}
/**

View File

@@ -1,5 +1,5 @@
<?php
// Copyright (C) 2012-2018 Combodo SARL
// Copyright (C) 2012-2023 Combodo SARL
//
// This file is part of iTop.
//
@@ -16,19 +16,20 @@
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
use Combodo\iTop\Application\UI\Component\Dashlet\DashletContainer;
use Combodo\iTop\Application\UI\Component\Dashlet\DashletFactory;
use Combodo\iTop\Application\UI\Component\Html\Html;
use Combodo\iTop\Application\UI\Component\Panel\PanelFactory;
use Combodo\iTop\Application\UI\iUIBlock;
use Combodo\iTop\Application\UI\UIBlock;
use Combodo\iTop\Application\Helper\WebResourcesHelper;
use Combodo\iTop\Application\UI\Base\Component\Dashlet\DashletContainer;
use Combodo\iTop\Application\UI\Base\Component\Dashlet\DashletFactory;
use Combodo\iTop\Application\UI\Base\Component\Html\Html;
use Combodo\iTop\Application\UI\Base\Component\Panel\PanelUIBlockFactory;
use Combodo\iTop\Application\UI\Base\iUIBlock;
use Combodo\iTop\Application\UI\Base\UIBlock;
require_once(APPROOT.'application/forms.class.inc.php');
/**
* Base class for all 'dashlets' (i.e. widgets to be inserted into a dashboard)
*
* @copyright Copyright (C) 2010-2017 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
abstract class Dashlet
@@ -202,6 +203,24 @@ abstract class Dashlet
$this->OnUpdate();
}
/**
* @return array Rel. path to the app. root of the JS files required by the dashlet
* @since 3.0.0
*/
public function GetJSFilesRelPaths(): array
{
return [];
}
/**
* @return array Rel. path to the app. root of the CSS files required by the dashlet
* @since 3.0.0
*/
public function GetCSSFilesRelPaths(): array
{
return [];
}
/**
* @param \WebPage $oPage
* @param bool $bEditMode
@@ -212,22 +231,21 @@ abstract class Dashlet
{
$sId = $this->GetID();
$sCSSClasses = implode(' ', $this->aCSSClasses);
if ($bEnclosingDiv) {
if ($bEditMode) {
$oDashletContainer = new DashletContainer("dashlet_{$sId}");
} else {
$oDashletContainer = new DashletContainer();
}
$oDashletContainer->AddCSSClasses($sCSSClasses);
$oDashletContainer->AddCSSClasses($this->aCSSClasses);
} else {
$oDashletContainer = new DashletContainer();
foreach ($this->aCSSClasses as $sCSSClass) {
$oPage->add_ready_script("$('#dashlet_".$sId."').addClass('$sCSSClass');");
}
$oDashletContainer->AddCSSClasses($this->aCSSClasses);
}
$oDashletContainer->AddMultipleJsFilesRelPaths($this->GetJSFilesRelPaths());
$oDashletContainer->AddMultipleCssFilesRelPaths($this->GetCSSFilesRelPaths());
try {
if (get_class($this->oModelReflection) == 'ModelReflectionRuntime') {
$oBlock = $this->Render($oPage, $bEditMode, $aExtraParams);
@@ -239,14 +257,14 @@ abstract class Dashlet
// Maybe the class is part of a non-installed module, fail silently
// Except in Edit mode
if ($bEditMode) {
$oDashletContainer->AddCSSClasses("dashlet-content");
$oDashletContainer->AddCSSClass("dashlet-content");
$oDashletContainer->AddHtml('<h2>'.$e->GetUserFriendlyDescription().'</h2>');
}
} catch (OqlException $e) {
$oDashletContainer->AddCSSClasses("dashlet-content");
$oDashletContainer->AddHtml('<p>'.$e->GetUserFriendlyDescription().'</p>');
$oDashletContainer->AddCSSClass("dashlet-content");
$oDashletContainer->AddHtml('<p>'.utils::HtmlEntities($e->GetUserFriendlyDescription()).'</p>');
} catch (Exception $e) {
$oDashletContainer->AddCSSClasses("dashlet-content");
$oDashletContainer->AddCSSClass("dashlet-content");
$oDashletContainer->AddHtml('<p>'.$e->getMessage().'</p>');
}
@@ -442,17 +460,21 @@ EOF
$sAttType = $aTargetAttCodes[$sTargetAttCode];
$sExtFieldAttCode = $sTargetAttCode;
}
if (is_a($sAttType, 'AttributeLinkedSet', true))
{
continue;
}
if (is_a($sAttType, 'AttributeFriendlyName', true))
{
continue;
}
if (is_a($sAttType, 'AttributeOneWayPassword', true))
{
continue;
$aForbidenAttType = [
'AttributeLinkedSet',
'AttributeFriendlyName',
'iAttributeNoGroupBy', //we cannot only use iAttributeNoGroupBy since this method is also used by the designer who do not have access to the classes' PHP reflection API. So the known classes has to be listed altogether
'AttributeOneWayPassword',
'AttributeEncryptedString',
'AttributePassword',
];
foreach ($aForbidenAttType as $sForbidenAttType) {
if (is_a($sAttType, $sForbidenAttType, true))
{
continue 2;
}
}
$sLabel = $this->oModelReflection->GetLabel($sClass, $sAttCode);
@@ -602,10 +624,9 @@ class DashletUnknown extends Dashlet
$sIconUrl = utils::HtmlEntities(utils::GetAbsoluteUrlAppRoot().$aInfos['icon']);
$sExplainText = ($bEditMode) ? Dict::Format('UI:DashletUnknown:RenderText:Edit', $this->GetDashletType()) : Dict::S('UI:DashletUnknown:RenderText:View');
$oDashletContainer = new DashletContainer(null, 'dashlet-content');
$oDashletContainer = new DashletContainer(null, ['dashlet-content']);
$oDashletContainer->AddHtml('<div class="dashlet-ukn-image"><img src="'.$sIconUrl.'" /></div>');
$oDashletContainer->AddHtml('<div class="dashlet-ukn-text">'.$sExplainText.'</div>');
$oDashletContainer->AddHtml('<div class="dashlet-ukn-image"><img src="'.$sIconUrl.'" /></div><div class="dashlet-ukn-text">'.$sExplainText.'</div>');
return $oDashletContainer;
}
@@ -622,10 +643,9 @@ class DashletUnknown extends Dashlet
$sIconUrl = utils::HtmlEntities(utils::GetAbsoluteUrlAppRoot().$aInfos['icon']);
$sExplainText = Dict::Format('UI:DashletUnknown:RenderNoDataText:Edit', $this->GetDashletType());
$oDashletContainer = new DashletContainer(null, 'dashlet-content');
$oDashletContainer = new DashletContainer(null, ['dashlet-content']);
$oDashletContainer->AddHtml('<div class="dashlet-ukn-image"><img src="'.$sIconUrl.'" /></div>');
$oDashletContainer->AddHtml('<div class="dashlet-ukn-text">'.$sExplainText.'</div>');
$oDashletContainer->AddHtml('<div class="dashlet-ukn-image"><img src="'.$sIconUrl.'" /></div><div class="dashlet-ukn-text">'.$sExplainText.'</div>');
return $oDashletContainer;
}
@@ -647,7 +667,7 @@ class DashletUnknown extends Dashlet
*/
public function GetPropertiesFields(DesignerForm $oForm)
{
$oField = new DesignerLongTextField('xml', Dict::S('UI:DashletUnknown:Prop-XMLConfiguration'), $this->sOriginalDashletXML);
$oField = new DesignerXMLField('xml', Dict::S('UI:DashletUnknown:Prop-XMLConfiguration'), $this->sOriginalDashletXML);
$oForm->AddField($oField);
}
@@ -746,7 +766,7 @@ class DashletProxy extends DashletUnknown
public function Render($oPage, $bEditMode = false, $aExtraParams = array())
{
// This should never be called.
$oDashletContainer = new DashletContainer(null, 'dashlet-content');
$oDashletContainer = new DashletContainer(null, ['dashlet-content']);
$oDashletContainer->AddHtml('<div>This dashlet is not supposed to be rendered as it is just a proxy for third-party widgets.</div>');
return $oDashletContainer;
}
@@ -763,7 +783,7 @@ class DashletProxy extends DashletUnknown
$sIconUrl = utils::HtmlEntities(utils::GetAbsoluteUrlAppRoot().$aInfos['icon']);
$sExplainText = Dict::Format('UI:DashletProxy:RenderNoDataText:Edit', $this->GetDashletType());
$oDashletContainer = new DashletContainer(null, 'dashlet-content');
$oDashletContainer = new DashletContainer(null, ['dashlet-content']);
$sHtml = '';
$sHtml .= '<div class="dashlet-pxy-image"><img src="'.$sIconUrl.'" /></div>';
@@ -848,12 +868,13 @@ class DashletPlainText extends Dashlet
*/
public function Render($oPage, $bEditMode = false, $aExtraParams = array())
{
$sText = utils::HtmlEntities($this->aProperties['text']);
$sText = $this->aProperties['text'];
$sText = utils::EscapeHtml(Dict::S($sText));
$sText = str_replace(array("\r\n", "\n", "\r"), "<br/>", $sText);
$sId = 'plaintext_'.($bEditMode ? 'edit_' : '').$this->sId;
return DashletFactory::MakeForDashletText($sId, $sText);
return DashletFactory::MakeForDashletPlainText($sText, $sId);
}
/**
@@ -873,7 +894,7 @@ class DashletPlainText extends Dashlet
{
return array(
'label' => Dict::S('UI:DashletPlainText:Label'),
'icon' => 'images/dashlet-text.png',
'icon' => 'images/dashlets/icons8-text-box-48.png',
'description' => Dict::S('UI:DashletPlainText:Description'),
);
}
@@ -903,17 +924,24 @@ class DashletObjectList extends Dashlet
{
$sTitle = $this->aProperties['title'];
$sShowMenu = $this->aProperties['menu'] ? '1' : '0';
$oPanel = PanelFactory::MakeNeutral(Dict::S($sTitle));
$oFilter = $this->GetDBSearch($aExtraParams);
$sClass = $oFilter->GetClass();
//$oPanel = PanelUIBlockFactory::MakeForClass($sClass, Dict::S($sTitle))
// ->AddCSSClass('ibo-datatable-panel');
$oBlock = new DisplayBlock($oFilter, 'list');
$aParams = array(
'menu' => $sShowMenu,
'table_id' => self::APPUSERPREFERENCES_PREFIX.$this->sId,
'surround_with_panel' => true,
'max_height' => '500px',
"panel_title" => Dict::S($sTitle),
"panel_class" => $sClass,
);
$sBlockId = 'block_'.$this->sId.($bEditMode ? '_edit' : ''); // make a unique id (edition occurring in the same DOM)
$oBlock->DisplayIntoContentBlock($oPanel, $oPage, $sBlockId, array_merge($aExtraParams, $aParams));
//$oBlock->DisplayIntoContentBlock($oPanel, $oPage, $sBlockId, array_merge($aExtraParams, $aParams));
$oPanel = $oBlock->GetDisplay($oPage, $sBlockId, array_merge($aExtraParams, $aParams));
return $oPanel;
}
@@ -923,24 +951,36 @@ class DashletObjectList extends Dashlet
*/
public function RenderNoData($oPage, $bEditMode = false, $aExtraParams = array())
{
$oDashletContainer = new DashletContainer($this->sId, ['dashlet-content']);
$sTitle = $this->aProperties['title'];
$sQuery = $this->aProperties['query'];
$bShowMenu = $this->aProperties['menu'];
$oPage->add('<div class="dashlet-content">');
$sHtmlTitle = utils::HtmlEntities($this->oModelReflection->DictString($sTitle)); // done in the itop block
$sHtmlTitle = utils::HtmlEntities($this->oModelReflection->DictString($sTitle));
if ($sHtmlTitle != '') {
$oPage->add('<h1>'.$sHtmlTitle.'</h1>');
$sHtmlTitle = '<h1>'.$sHtmlTitle.'</h1>';
}
$oQuery = $this->oModelReflection->GetQuery($sQuery);
$sClass = $oQuery->GetClass();
$oPage->add('<div id="block_fake_'.$this->sId.'" class="display_block">');
$oPage->p(Dict::S('UI:NoObjectToDisplay'));
$sId = $this->sId;
$sMessage = Dict::S('UI:NoObjectToDisplay');
$sMenu = '';
if ($bShowMenu) {
$oPage->p('<a>'.Dict::Format('UI:ClickToCreateNew', $this->oModelReflection->GetName($sClass)).'</a>');
$sMenu = '<p><a>'.Dict::Format('UI:ClickToCreateNew', $this->oModelReflection->GetName($sClass)).'</a></p>';
}
$oPage->add('</div>');
$oPage->add('</div>');
$sHtml = <<<HTML
<div class="dashlet-content">
<h1>$sHtmlTitle</h1>
<div id="block_fake_$sId" class="display_block">
<p>$sMessage</p>
$sMenu
</div>
</div>
HTML;
$oDashletContainer->AddHtml($sHtml);
return $oDashletContainer;
}
public function GetDBSearch($aExtraParams = array())
@@ -968,6 +1008,8 @@ class DashletObjectList extends Dashlet
$oField = new DesignerLongTextField('query', Dict::S('UI:DashletObjectList:Prop-Query'), $this->aProperties['query']);
$oField->SetMandatory();
$oField->AddCSSClass("ibo-query-oql");
$oField->AddCSSClass("ibo-is-code");
$oForm->AddField($oField);
$oField = new DesignerBooleanField('menu', Dict::S('UI:DashletObjectList:Prop-Menu'), $this->aProperties['menu']);
@@ -981,7 +1023,7 @@ class DashletObjectList extends Dashlet
{
return array(
'label' => Dict::S('UI:DashletObjectList:Label'),
'icon' => 'images/dashlet-list.png',
'icon' => 'images/dashlets/icons8-list-48.png',
'description' => Dict::S('UI:DashletObjectList:Description'),
);
}
@@ -1004,6 +1046,8 @@ class DashletObjectList extends Dashlet
$oField = new DesignerHiddenField('query', Dict::S('UI:DashletObjectList:Prop-Query'), $sOQL);
$oField->SetMandatory();
$oField->AddCSSClass("ibo-query-oql");
$oField->AddCSSClass("ibo-is-code");
$oForm->AddField($oField);
$oField = new DesignerBooleanField('menu', Dict::S('UI:DashletObjectList:Prop-Menu'), $this->aProperties['menu']);
@@ -1240,15 +1284,21 @@ abstract class DashletGroupBy extends Dashlet
break;
}
$oPanel = PanelFactory::MakeNeutral(Dict::S($sTitle));
//$oPanel = \Combodo\iTop\Application\UI\Base\Layout\UIContentBlockUIBlockFactory::MakeStandard();
//PanelUIBlockFactory::MakeForClass($sClass, Dict::S($sTitle));
$sBlockId = 'block_'.$this->sId.($bEditMode ? '_edit' : ''); // make a unique id (edition occurring in the same DOM)
$oBlock = new DisplayBlock($oFilter, $sType);
$oBlock->DisplayIntoContentBlock($oPanel, $oPage, $sBlockId, array_merge($aExtraParams, $aParams));
//$oBlock->DisplayIntoContentBlock($oPanel, $oPage, $sBlockId, array_merge($aExtraParams, $aParams));
$aExtraParams["surround_with_panel"] = true;
$aExtraParams["panel_title"] = Dict::S($sTitle);
$aExtraParams["panel_class"] = $sClass;
$oPanel = $oBlock->GetDisplay($oPage, $sBlockId, array_merge($aExtraParams, $aParams));
if ($bEditMode) {
$oPanel->AddHtml('<div class="dashlet-blocker"></div>');
$oPanel->AddHtml('<div class="ibo-dashlet-blocker dashlet-blocker"></div>');
}
return $oPanel;
}
@@ -1332,7 +1382,7 @@ abstract class DashletGroupBy extends Dashlet
*/
public function RenderNoData($oPage, $bEditMode = false, $aExtraParams = array())
{
$oDashletContainer = new DashletContainer(null, 'dashlet-content');
$oDashletContainer = new DashletContainer(null, ['dashlet-content']);
$oDashletContainer->AddHtml('error!');
return $oDashletContainer;
}
@@ -1347,10 +1397,11 @@ abstract class DashletGroupBy extends Dashlet
$oField = new DesignerLongTextField('query', Dict::S('UI:DashletGroupBy:Prop-Query'), $this->aProperties['query']);
$oField->SetMandatory();
$oField->AddCSSClass("ibo-query-oql");
$oField->AddCSSClass("ibo-is-code");
$oForm->AddField($oField);
try
{
try {
// Group by field: build the list of possible values (attribute codes + ...)
$aGroupBy = $this->GetGroupByOptions($this->aProperties['query']);
@@ -1581,7 +1632,7 @@ abstract class DashletGroupBy extends Dashlet
// Note: no need to translate, should never be visible to the end-user!
return array(
'label' => 'Objects grouped by...',
'icon' => 'images/dashlet-object-grouped.png',
'icon' => 'images/dashlets/icons8-transaction-list-48.png',
'description' => 'Grouped objects dashlet (abstract)',
);
}
@@ -1604,16 +1655,15 @@ abstract class DashletGroupBy extends Dashlet
$oField = new DesignerHiddenField('query', Dict::S('UI:DashletGroupBy:Prop-Query'), $sOQL);
$oField->SetMandatory();
$oField->AddCSSClass("ibo-query-oql");
$oField->AddCSSClass("ibo-is-code");
$oForm->AddField($oField);
if (!is_null($sOQL))
{
if (!is_null($sOQL)) {
$oField = new DesignerComboField('group_by', Dict::S('UI:DashletGroupBy:Prop-GroupBy'), null);
$aGroupBy = $this->GetGroupByOptions($sOQL);
$oField->SetAllowedValues($aGroupBy);
}
else
{
} else {
// Creating a form for reading parameters!
$oField = new DesignerTextField('group_by', Dict::S('UI:DashletGroupBy:Prop-GroupBy'), null);
}
@@ -1645,17 +1695,39 @@ class DashletGroupByPie extends DashletGroupBy
{
return array(
'label' => Dict::S('UI:DashletGroupByPie:Label'),
'icon' => 'images/dashlet-pie-chart.png',
'icon' => 'images/dashlets/icons8-pie-chart-48.png',
'description' => Dict::S('UI:DashletGroupByPie:Description'),
);
}
/**
* @inheritDoc
*/
public function GetJSFilesRelPaths(): array
{
return array_merge(
parent::GetJSFilesRelPaths(),
WebResourcesHelper::GetJSFilesRelPathsForC3JS()
);
}
/**
* @inheritDoc
*/
public function GetCSSFilesRelPaths(): array
{
return array_merge(
parent::GetCSSFilesRelPaths(),
WebResourcesHelper::GetCSSFilesRelPathsForC3JS()
);
}
/**
* @inheritdoc
*/
public function RenderNoData($oPage, $bEditMode = false, $aExtraParams = array())
{
$oDashletContainer = new DashletContainer(null, 'dashlet-content');
$oDashletContainer = new DashletContainer(null, ['dashlet-content']);
$sTitle = $this->aProperties['title'];
@@ -1720,7 +1792,7 @@ class DashletGroupByBars extends DashletGroupBy
{
return array(
'label' => Dict::S('UI:DashletGroupByBars:Label'),
'icon' => 'images/dashlet-bar-chart.png',
'icon' => 'images/dashlets/icons8-bar-chart-48.png',
'description' => Dict::S('UI:DashletGroupByBars:Description'),
);
}
@@ -1730,7 +1802,7 @@ class DashletGroupByBars extends DashletGroupBy
*/
public function RenderNoData($oPage, $bEditMode = false, $aExtraParams = array())
{
$oDashletContainer = new DashletContainer(null, 'dashlet-content');
$oDashletContainer = new DashletContainer(null, ['dashlet-content']);
$sTitle = $this->aProperties['title'];
@@ -1821,7 +1893,7 @@ class DashletGroupByTable extends DashletGroupBy
return array(
'label' => Dict::S('UI:DashletGroupByTable:Label'),
'description' => Dict::S('UI:DashletGroupByTable:Description'),
'icon' => 'images/dashlet-groupby-table.png',
'icon' => 'images/dashlets/icons8-transaction-list-48.png',
);
}
@@ -1890,7 +1962,7 @@ class DashletHeaderStatic extends Dashlet
*/
public function Render($oPage, $bEditMode = false, $aExtraParams = array())
{
$sTitle = utils::HtmlEntities($this->aProperties['title']);
$sTitle = $this->aProperties['title'];
$sIcon = $this->aProperties['icon'];
$oIconSelect = $this->oModelReflection->GetIconSelectionField('icon');
@@ -1950,7 +2022,7 @@ class DashletHeaderStatic extends Dashlet
{
return array(
'label' => Dict::S('UI:DashletHeaderStatic:Label'),
'icon' => 'images/dashlet-header.png',
'icon' => 'images/dashlets/icons8-header-48.png',
'description' => Dict::S('UI:DashletHeaderStatic:Description'),
);
}
@@ -2020,7 +2092,7 @@ class DashletHeaderDynamic extends Dashlet
$sGroupBy = $this->aProperties['group_by'];
$oIconSelect = $this->oModelReflection->GetIconSelectionField('icon');
$sIconPath = utils::HtmlEntities($oIconSelect->MakeFileUrl($sIcon));
$sIconPath = $oIconSelect->MakeFileUrl($sIcon);
$aValues = $this->GetValues();
if (count($aValues) > 0) {
@@ -2042,8 +2114,6 @@ class DashletHeaderDynamic extends Dashlet
);
}
$oPanel = PanelFactory::MakeEnhancedNeutral(Dict::S(str_replace('_', ':', $sTitle)), $sIconPath);
if (isset($aExtraParams['query_params'])) {
$aQueryParams = $aExtraParams['query_params'];
} elseif (isset($aExtraParams['this->class'])) {
@@ -2053,11 +2123,17 @@ class DashletHeaderDynamic extends Dashlet
$aQueryParams = array();
}
$oFilter = DBObjectSearch::FromOQL($sQuery, $aQueryParams);
$oFilter->SetShowObsoleteData(utils::ShowObsoleteData());
$sClass = $oFilter->GetClass();
$oPanel = PanelUIBlockFactory::MakeNeutral(Dict::S(str_replace('_', ':', $sTitle)))
->SetIcon($sIconPath)
->SetColorFromClass($sClass);
$oBlock = new DisplayBlock($oFilter, 'summary');
$sBlockId = 'block_'.$this->sId.($bEditMode ? '_edit' : ''); // make a unique id (edition occuring in the same DOM)
$oBlock->DisplayIntoContentBlock($oPanel, $oPage, $sBlockId, array_merge($aExtraParams, $aParams));
$oSubTitle = $oPanel->GetSubTitle();
$oSubTitle = $oPanel->GetSubTitleBlock();
$oSet = new DBObjectSet($oFilter);
$iCount = $oSet->Count();
$oAppContext = new ApplicationContext();
@@ -2078,13 +2154,25 @@ class DashletHeaderDynamic extends Dashlet
$sQuery = $this->aProperties['query'];
$sGroupBy = $this->aProperties['group_by'];
$oQuery = $this->oModelReflection->GetQuery($sQuery);
$sClass = $oQuery->GetClass();
$aValueLabels = [];
$aValues = [];
try {
$oQuery = $this->oModelReflection->GetQuery($sQuery);
$sClass = $oQuery->GetClass();
$aValues = $this->GetValues();
foreach ($aValues as $sValue) {
$aValueLabels[] = $this->oModelReflection->GetValueLabel($sClass, $sGroupBy, $sValue);
}
}
catch (UnknownClassOqlException $e) {
$aValueLabels[] = $e->GetUserFriendlyDescription();
$aValues[] = 1;
}
$oIconSelect = $this->oModelReflection->GetIconSelectionField('icon');
$sIconPath = utils::HtmlEntities($oIconSelect->MakeFileUrl($sIcon));
$oDashletContainer = new DashletContainer(null, 'dashlet-content');
$oDashletContainer = new DashletContainer(null, ['dashlet-content']);
$sHtml = '';
$sHtml .= '<img src="'.$sIconPath.'">';
@@ -2092,20 +2180,18 @@ class DashletHeaderDynamic extends Dashlet
$sBlockId = 'block_fake_'.$this->sId.($bEditMode ? '_edit' : ''); // make a unique id (edition occuring in the same DOM)
$iTotal = 0;
$aValues = $this->GetValues();
$sHtml .= '<div class="display_block" id="'.$sBlockId.'">';
$sHtml .= '<div class="summary-details">';
$sHtml .= '<table><tbody>';
$sHtml .= '<tr>';
foreach ($aValues as $sValue) {
$sValueLabel = $this->oModelReflection->GetValueLabel($sClass, $sGroupBy, $sValue);
foreach ($aValueLabels as $sValueLabel) {
$sHtml .= ' <th>'.$sValueLabel.'</th>';
}
$sHtml .= '</tr>';
$sHtml .= '<tr>';
foreach ($aValues as $sValue) {
$iCount = (int)rand(2, 100);
$iCount = rand(2, 100);
$iTotal += $iCount;
$sHtml .= ' <td>'.$iCount.'</td>';
}
@@ -2120,7 +2206,6 @@ class DashletHeaderDynamic extends Dashlet
$sHtml .= '<a class="summary">'.utils::HtmlEntities($sSubtitle).'</a>';
$sHtml .= '</div>';
$sHtml .= '</div>';
$oDashletContainer->AddHtml($sHtml);
@@ -2144,6 +2229,8 @@ class DashletHeaderDynamic extends Dashlet
$oField = new DesignerLongTextField('query', Dict::S('UI:DashletHeaderDynamic:Prop-Query'), $this->aProperties['query']);
$oField->SetMandatory();
$oField->AddCSSClass("ibo-query-oql");
$oField->AddCSSClass("ibo-is-code");
$oForm->AddField($oField);
try
@@ -2254,7 +2341,7 @@ class DashletHeaderDynamic extends Dashlet
{
return array(
'label' => Dict::S('UI:DashletHeaderDynamic:Label'),
'icon' => 'images/dashlet-header-stats.png',
'icon' => 'images/dashlets/icons8-header-altered-48.png',
'description' => Dict::S('UI:DashletHeaderDynamic:Description'),
);
}
@@ -2281,12 +2368,13 @@ class DashletBadge extends Dashlet
*/
public function Render($oPage, $bEditMode = false, $aExtraParams = array())
{
$oDashletContainer = new DashletContainer($this->sId, 'dashlet-content');
$oDashletContainer = new DashletContainer($this->sId, ['dashlet-content']);
$sClass = $this->aProperties['class'];
$oFilter = new DBObjectSearch($sClass);
$oBlock = new DisplayBlock($oFilter, 'actions');
$aExtraParams['context_filter'] = 1;
$aExtraParams['withJSRefreshCallBack'] = true;
$sBlockId = 'block_'.$this->sId.($bEditMode ? '_edit' : ''); // make a unique id (edition occurring in the same DOM)
$oBlock->DisplayIntoContentBlock($oDashletContainer, $oPage, $sBlockId, $aExtraParams);
@@ -2298,21 +2386,22 @@ class DashletBadge extends Dashlet
*/
public function RenderNoData($oPage, $bEditMode = false, $aExtraParams = array())
{
$oDashletContainer = new DashletContainer($this->sId, 'dashlet-content');
$oDashletContainer = new DashletContainer($this->sId, ['dashlet-content']);
$sClass = $this->aProperties['class'];
$sIconUrl = $this->oModelReflection->GetClassIcon($sClass, false);
$sIconUrl = utils::HtmlEntities($this->oModelReflection->GetClassIcon($sClass, false));
$sClassLabel = $this->oModelReflection->GetName($sClass);
$sId = $this->sId;
$sClassCreate = Dict::Format('UI:ClickToCreateNew', $sClassLabel);
$sHtml = '';
$sHtml .= '<div id="block_fake_'.$this->sId.'" class="display_block">';
$sHtml .= '<p>';
$sHtml .= ' <a class="actions"><img src="'.utils::HtmlEntities($sIconUrl).'" style="vertical-align:middle;float;left;margin-right:10px;border:0;">'.$sClassLabel.': 947</a>';
$sHtml .= '</p>';
$sHtml .= '<p>';
$sHtml .= ' <a>'.Dict::Format('UI:ClickToCreateNew', $sClassLabel).'</a>';
$sHtml .= '</p>';
$sHtml .= '</div>';
$sHtml = <<<HTML
<div id="block_fake_$sId" class="display_block">
<div class="ibo-dashlet-badge--body" data-role="ibo-dashlet-badge--body" title="$sClassLabel">
<div class="ibo-dashlet-badge--icon-container"><img class="ibo-dashlet-badge--icon" src="$sIconUrl"></div>
<div class="ibo-dashlet-badge--actions"><a class="ibo-dashlet-badge--action-list" href="#" data-role="ibo-dashlet-badge--action-list"><span class="ibo-dashlet-badge--action-list-count">4</span><span class="ibo-dashlet-badge--action-list-label">$sClassLabel</span></a><a class="ibo-dashlet-badge--action-create" href="#"><span class="ibo-dashlet-badge--action-create-icon fas fa-plus"></span><span class="ibo-dashlet-badge--action-create-label"> $sClassCreate </span></a></div>
</div>
</div>
HTML;
$oDashletContainer->AddHtml($sHtml);
@@ -2366,7 +2455,7 @@ class DashletBadge extends Dashlet
{
return array(
'label' => Dict::S('UI:DashletBadge:Label'),
'icon' => 'images/dashlet-badge.png',
'icon' => 'images/dashlets/icons8-badge-48.png',
'description' => Dict::S('UI:DashletBadge:Description'),
);
}

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.0">
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.1">
<classes>
<class id="AbstractResource" _delta="define">
<parent>cmdbAbstractObject</parent>
@@ -55,16 +55,16 @@
<menus>
<menu id="WelcomeMenu" xsi:type="MenuGroup" _delta="define">
<rank>10</rank>
<style>
<decoration_classes>fas fa-home</decoration_classes>
</style>
<style>
<decoration_classes>fas fa-home</decoration_classes>
</style>
</menu>
<menu id="WelcomeMenuPage" xsi:type="DashboardMenuNode" _delta="define">
<rank>10</rank>
<parent>WelcomeMenu</parent>
<definition>
<layout>DashboardLayoutOneCol</layout>
<title/>
<title>Menu:WelcomeMenuPage</title>
<cells>
<cell id="0">
<rank>0</rank>
@@ -151,9 +151,9 @@
</menu>
<menu id="ConfigurationTools" xsi:type="MenuGroup" _delta="define_if_not_exists">
<rank>90</rank>
<style>
<decoration_classes>fas fa-cog</decoration_classes>
</style>
<style>
<decoration_classes>fas fa-cog</decoration_classes>
</style>
</menu>
<menu id="DataSources" xsi:type="OQLMenuNode" _delta="define">
<rank>20</rank>
@@ -172,19 +172,372 @@
</menu>
<menu id="AdminTools" xsi:type="MenuGroup" _delta="define">
<rank>80</rank>
<style>
<decoration_classes>fas fa-tools</decoration_classes>
</style>
<style>
<decoration_classes>fas fa-tools</decoration_classes>
</style>
</menu>
<menu id="SystemTools" xsi:type="MenuGroup" _delta="define">
<rank>100</rank>
<enable_class>ResourceSystemMenu</enable_class>
<enable_action>UR_ACTION_MODIFY</enable_action>
<style>
<decoration_classes>fas fa-terminal</decoration_classes>
</style>
<style>
<decoration_classes>fas fa-terminal</decoration_classes>
</style>
</menu>
</menus>
<events>
<event id="EVENT_DB_BEFORE_WRITE" _delta="define">
<description>An object is about to be written into the database. The object can be modified.</description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
<replaces>DBObject::OnInsert</replaces>
<event_data>
<event_datum id="object">
<description>The object inserted</description>
<type>DBObject</type>
</event_datum>
<event_datum id="is_new">
<description>Creation flag</description>
<type>boolean</type>
</event_datum>
<event_datum id="debug_info">
<description>Debug string</description>
<type>string</type>
</event_datum>
</event_data>
</event>
<event id="EVENT_DB_CHECK_TO_WRITE" _delta="define">
<description>Check an object before it is written into the database (no change possible). Call DBObject::AddCheckIssue() to signal an issue</description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
<replaces>cmdbAbstractObject::DoCheckToWrite</replaces>
<event_data>
<event_datum id="object">
<description>The object to check</description>
<type>DBObject</type>
</event_datum>
<event_datum id="is_new">
<description>Creation flag</description>
<type>boolean</type>
</event_datum>
<event_datum id="debug_info">
<description>Debug string</description>
<type>string</type>
</event_datum>
</event_data>
</event>
<event id="EVENT_DB_AFTER_WRITE" _delta="define">
<description>An object has been written into the database. The modifications can be propagated to other objects.</description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
<replaces>DBObject::AfterInsert</replaces>
<event_data>
<event_datum id="object">
<description>The object inserted</description>
<type>DBObject</type>
</event_datum>
<event_datum id="is_new">
<description>Creation flag</description>
<type>boolean</type>
</event_datum>
<event_datum id="changes">
<description>For updates, the list of changes done during this operation</description>
<type>array</type>
</event_datum>
<event_datum id="debug_info">
<description>Debug string</description>
<type>string</type>
</event_datum>
</event_data>
</event>
<event id="EVENT_DB_CHECK_TO_DELETE" _delta="define">
<description>Check an object before it is deleted from the database. Call DBObject::AddDeleteIssue() to signal an issue</description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
<replaces>cmdbAbstractObject::DoCheckToDelete</replaces>
<event_data>
<event_datum id="object">
<description>The object to check</description>
<type>DBObject</type>
</event_datum>
<event_datum id="debug_info">
<description>Debug string</description>
<type>string</type>
</event_datum>
</event_data>
</event>
<event id="EVENT_DB_AFTER_DELETE" _delta="define">
<description>An object has been deleted into the database</description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
<replaces>DBObject::AfterDelete</replaces>
<event_data>
<event_datum id="object">
<description>The object deleted</description>
<type>DBObject</type>
</event_datum>
<event_datum id="debug_info">
<description>Debug string</description>
<type>string</type>
</event_datum>
</event_data>
</event>
<event id="EVENT_DB_BEFORE_APPLY_STIMULUS" _delta="define">
<description>A stimulus is about to be applied to an object</description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
<event_data>
<event_datum id="object">
<description>The object where the stimulus is targeted</description>
<type>DBObject</type>
</event_datum>
<event_datum id="stimulus">
<description>Current stimulus applied</description>
<type>string</type>
</event_datum>
<event_datum id="previous_state">
<description>Object previous state</description>
<type>string</type>
</event_datum>
<event_datum id="new_state">
<description>Object new state</description>
<type>string</type>
</event_datum>
<event_datum id="save_object">
<description>The object must be saved in the database</description>
<type>boolean</type>
</event_datum>
<event_datum id="debug_info">
<description>Debug string</description>
<type>string</type>
</event_datum>
</event_data>
</event>
<event id="EVENT_DB_AFTER_APPLY_STIMULUS" _delta="define">
<description>A stimulus has been applied to an object</description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
<event_data>
<event_datum id="object">
<description>The object where the stimulus is targeted</description>
<type>DBObject</type>
</event_datum>
<event_datum id="stimulus">
<description>Current stimulus applied</description>
<type>string</type>
</event_datum>
<event_datum id="previous_state">
<description>Object previous state</description>
<type>string</type>
</event_datum>
<event_datum id="new_state">
<description>Object new state</description>
<type>string</type>
</event_datum>
<event_datum id="save_object">
<description>The object is asked to be saved in the database</description>
<type>boolean</type>
</event_datum>
<event_datum id="debug_info">
<description>Debug string</description>
<type>string</type>
</event_datum>
</event_data>
</event>
<event id="EVENT_DB_APPLY_STIMULUS_FAILED" _delta="define">
<description>A stimulus has failed</description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
<event_data>
<event_datum id="action">
<description>The action that failed to apply the stimulus</description>
<type>string</type>
</event_datum>
<event_datum id="object">
<description>The object where the stimulus is targeted</description>
<type>DBObject</type>
</event_datum>
<event_datum id="stimulus">
<description>Current stimulus applied</description>
<type>string</type>
</event_datum>
<event_datum id="previous_state">
<description>Object previous state</description>
<type>string</type>
</event_datum>
<event_datum id="new_state">
<description>Object new state</description>
<type>string</type>
</event_datum>
<event_datum id="save_object">
<description>The object must be saved in the database</description>
<type>boolean</type>
</event_datum>
<event_datum id="debug_info">
<description>Debug string</description>
<type>string</type>
</event_datum>
</event_data>
</event>
<event id="EVENT_DB_LINKS_CHANGED" _delta="define">
<description>At least one link class was changed</description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
<event_data>
<event_datum id="object">
<description>The object where the link is or was pointing to</description>
<type>DBObject</type>
</event_datum>
<event_datum id="debug_info">
<description>Debug string</description>
<type>string</type>
</event_datum>
</event_data>
</event>
<event id="EVENT_DB_OBJECT_RELOAD" _delta="define">
<description>An object has been re-loaded from the database</description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
<event_data>
<event_datum id="object">
<description>The object re-loaded</description>
<type>DBObject</type>
</event_datum>
<event_datum id="debug_info">
<description>Debug string</description>
<type>string</type>
</event_datum>
</event_data>
</event>
<event id="EVENT_DB_COMPUTE_VALUES" _delta="define">
<description>An object needs to be recomputed after changes</description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
<replaces>DBObject::ComputeValues</replaces>
<event_data>
<event_datum id="object">
<description>The object inserted</description>
<type>DBObject</type>
</event_datum>
<event_datum id="debug_info">
<description>Debug string</description>
<type>string</type>
</event_datum>
</event_data>
</event>
<event id="EVENT_DB_ARCHIVE" _delta="define">
<description>An object has been archived</description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
<event_data>
<event_datum id="object">
<description>The object archived</description>
<type>DBObject</type>
</event_datum>
<event_datum id="debug_info">
<description>Debug string</description>
<type>string</type>
</event_datum>
</event_data>
</event>
<event id="EVENT_DB_UNARCHIVE" _delta="define">
<description>An object has been unarchived</description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
<event_data>
<event_datum id="object">
<description>The object unarchived</description>
<type>DBObject</type>
</event_datum>
<event_datum id="debug_info">
<description>Debug string</description>
<type>string</type>
</event_datum>
</event_data>
</event>
<event id="EVENT_DB_SET_ATTRIBUTES_FLAGS" _delta="define">
<description>Set object attributes flags. Call cmdbAbstractObject::AddAttributeFlags() for all the attributes to be set for this target state.</description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
<event_data>
<event_datum id="object">
<description>The current object</description>
<type>DBObject</type>
</event_datum>
<event_datum id="target_state">
<description>The target state in which to evaluate the flags</description>
<type>array</type>
</event_datum>
<event_datum id="debug_info">
<description>Debug string</description>
<type>string</type>
</event_datum>
</event_data>
</event>
<event id="EVENT_DB_SET_INITIAL_ATTRIBUTES_FLAGS" _delta="define">
<description>Set object initial attributes flags. Call cmdbAbstractObject::AddInitialAttributeFlags() for all the initial attributes to be set initially.</description>
<sources>
<source id="cmdbAbstractObject">cmdbAbstractObject</source>
</sources>
<event_data>
<event_datum id="object">
<description>The current object</description>
<type>DBObject</type>
</event_datum>
<event_datum id="debug_info">
<description>Debug string</description>
<type>string</type>
</event_datum>
</event_data>
</event>
<event id="EVENT_DOWNLOAD_DOCUMENT" _delta="define">
<description>A document has been downloaded from the GUI</description>
<sources>
<source id="Document">Document</source>
</sources>
<event_data>
<event_datum id="object">
<description>The object containing the document</description>
<type>DBObject</type>
</event_datum>
<event_datum id="document">
<description>The document downloaded</description>
<type>ormDocument</type>
</event_datum>
<event_datum id="debug_info">
<description>Debug string</description>
<type>string</type>
</event_datum>
</event_data>
</event>
<event id="EVENT_LOGIN" _delta="define">
<description>Inform the listeners about the connection states</description>
<event_data>
<event_datum id="code">
<description>The login step result code (LoginWebPage::EXIT_CODE_...) </description>
<type>integer</type>
</event_datum>
<event_datum id="state">
<description>Current login state (LoginWebPage::LOGIN_STATE_CONNECTED...)</description>
<type>string</type>
</event_datum>
</event_data>
</event>
</events>
<meta>
<classes>
<class id="cmdbAbstractObject" _delta="define">
@@ -237,6 +590,87 @@
</argument>
</arguments>
</method>
<method id="AddValue">
<arguments>
<argument id="1">
<type>attcode</type>
<mandatory>true</mandatory>
<type_restrictions>
<operation>allow</operation>
<types>
<type id="AttributeInteger"/>
<type id="AttributeDecimal"/>
<type id="AttributePercentage"/>
<type id="AttributeDuration"/>
</types>
</type_restrictions>
</argument>
<argument id="2">
<type>string</type>
<mandatory>false</mandatory>
</argument>
</arguments>
</method>
<method id="SetComputedDate">
<arguments>
<argument id="1">
<type>attcode</type>
<mandatory>true</mandatory>
<type_restrictions>
<operation>allow</operation>
<types>
<type id="AttributeDate"/>
<type id="AttributeDateTime"/>
</types>
</type_restrictions>
</argument>
<argument id="2">
<type>string</type>
<mandatory>false</mandatory>
</argument>
<argument id="3">
<type>attcode</type>
<mandatory>false</mandatory>
<type_restrictions>
<operation>allow</operation>
<types>
<type id="AttributeDate"/>
<type id="AttributeDateTime"/>
</types>
</type_restrictions>
</argument>
</arguments>
</method>
<method id="SetComputedDateIfNull">
<arguments>
<argument id="1">
<type>attcode</type>
<mandatory>true</mandatory>
<type_restrictions>
<operation>allow</operation>
<types>
<type id="AttributeDate"/>
<type id="AttributeDateTime"/>
</types>
</type_restrictions>
</argument>
<argument id="2">
<type>string</type>
<mandatory>false</mandatory>
</argument>
<argument id="3">
<type>attcode</type>
<mandatory>false</mandatory>
<type_restrictions>
<operation>allow</operation>
<types>
<type id="AttributeDate"/>
<type id="AttributeDateTime"/>
</types>
</type_restrictions>
</argument>
</arguments>
</method>
<method id="SetCurrentDate">
<arguments>
<argument id="1">
@@ -253,6 +687,22 @@
</argument>
</arguments>
</method>
<method id="SetCurrentDateIfNull">
<arguments>
<argument id="1">
<type>attcode</type>
<mandatory>true</mandatory>
<type_restrictions>
<operation>allow</operation>
<types>
<type id="AttributeDate"/>
<type id="AttributeDateTime"/>
<type id="AttributeString"/>
</types>
</type_restrictions>
</argument>
</arguments>
</method>
<method id="SetCurrentUser">
<arguments>
<argument id="1">
@@ -372,30 +822,6 @@
</argument>
</arguments>
</method>
<method id="PrefillCreationForm">
<arguments>
<argument id="1">
<type>reference</type>
<mandatory>true</mandatory>
</argument>
</arguments>
</method>
<method id="PrefillTransitionForm">
<arguments>
<argument id="1">
<type>reference</type>
<mandatory>true</mandatory>
</argument>
</arguments>
</method>
<method id="PrefillSearchForm">
<arguments>
<argument id="1">
<type>reference</type>
<mandatory>true</mandatory>
</argument>
</arguments>
</method>
</methods>
</class>
</classes>

View File

@@ -1,9 +1,9 @@
<?php
use Combodo\iTop\Renderer\BlockRenderer;
use Combodo\iTop\Renderer\Console\ConsoleBlockRenderer;
/**
* Copyright (C) 2013-2020 Combodo SARL
* Copyright (C) 2013-2023 Combodo SARL
*
* This file is part of iTop.
*
@@ -18,6 +18,8 @@ use Combodo\iTop\Renderer\BlockRenderer;
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
*
* @deprecated 3.0.0 use Combodo\iTop\Application\UI\Base\Component\DataTable\Datatable
*/
class DataTable
@@ -46,6 +48,7 @@ class DataTable
*/
public function __construct($iListId, $oSet, $aClassAliases, $sTableId = null)
{
DeprecatedCallsLog::NotifyDeprecatedPhpMethod('use Combodo\iTop\Application\UI\Base\Component\DataTable\Datatable');
$this->iListId = utils::GetSafeId($iListId); // Make a "safe" ID for jQuery
$this->sDatatableContainerId = 'datatable_'.utils::GetSafeId($iListId);
$this->oSet = $oSet;
@@ -113,8 +116,7 @@ class DataTable
// See if this column is a must to load
$sClass = $this->aClassAliases[$sAlias];
$oAttDef = MetaModel::GetAttributeDef($sClass, $sAttCode);
if ($oAttDef->alwaysLoadInTables())
{
if ($oAttDef->AlwaysLoadInTables()) {
$aColumnsToLoad[$sAlias][] = $sAttCode;
}
}
@@ -350,26 +352,26 @@ EOF;
* @param $aExtraParams
*
* @return string
* @throws \ApplicationException
* @throws \ArchivedObjectException
* @throws \CoreException
* @throws \CoreUnexpectedValue
* @throws \DictExceptionMissingString
* @throws \MissingQueryArgument
* @throws \MySQLException
* @throws \MySQLHasGoneAwayException
* @throws \OQLException
* @throws \ReflectionException
* @throws \Twig\Error\LoaderError
* @throws \Twig\Error\RuntimeError
* @throws \Twig\Error\SyntaxError
*/
protected function GetActionsMenu(WebPage $oPage, $aExtraParams)
{
$oMenuBlock = new MenuBlock($this->oSet->GetFilter(), 'list');
$oBlock = $oMenuBlock->GetRenderContent($oPage, $aExtraParams, $this->iListId);
foreach ($oBlock->GetCssFilesUrlRecursively(true) as $sFileAbsUrl) {
$oPage->add_linked_stylesheet($sFileAbsUrl);
}
// JS files
foreach ($oBlock->GetJsFilesUrlRecursively(true) as $sFileAbsUrl) {
$oPage->add_linked_script($sFileAbsUrl);
}
$oPage->RenderInlineScriptsAndCSSRecursively($oBlock);
return BlockRenderer::RenderBlockTemplates($oBlock);
return ConsoleBlockRenderer::RenderBlockTemplateInPage($oPage, $oBlock);
}
/**
@@ -384,7 +386,7 @@ EOF;
if (!$oPage->IsPrintableVersion())
{
$sMenuTitle = Dict::S('UI:ConfigureThisList');
$sHtml = '<div class="itop_popup toolkit_menu" id="tk_'.$this->iListId.'"><ul><li><i class="fas fa-tools"></i><i class="fas fa-caret-down"></i><ul>';
$sHtml = '<div class="itop_popup toolkit_menu" id="tk_'.$this->iListId.'"><ul><li aria-label="'.Dict::S('UI:Menu:Toolkit').'"><i class="fas fa-tools"></i><i class="fas fa-caret-down"></i><ul>';
$oMenuItem1 = new JSPopupMenuItem('iTop::ConfigureList', $sMenuTitle, "$('#datatable_dlg_".$this->iListId."').dialog('open');");
$aActions = array(

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,8 @@
<?php
/**
* @deprecated will be removed in 3.1.0 - moved to sources/application/WebPage/ErrorPage.php
* @deprecated 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-2020 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
*/
DeprecatedCallsLog::NotifyDeprecatedFile('moved to sources/Application/WebPage/ErrorPage.php, now loadable using autoloader');

View File

@@ -0,0 +1,9 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
class ApplicationException extends CoreException
{
}

View File

@@ -0,0 +1,14 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
/**
* Thrown when querying on an object that exists in the database but is archived
*
* @since 2.5.1 N°1108
*/
class ArchivedObjectException extends CoreException
{
}

View File

@@ -0,0 +1,9 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
class BulkChangeException extends CoreException
{
}

View File

@@ -0,0 +1,9 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
class CSVParserException extends CoreException
{
}

View File

@@ -0,0 +1,9 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
class ConfigException extends CoreException
{
}

View File

@@ -0,0 +1,77 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
/**
* Class CoreCannotSaveObjectException
*
* Specialized exception to raise if {@link DBObject::CheckToWrite()} fails, which allow easy data retrieval
*
* @see \DBObject::DBInsertNoReload()
* @see \DBObject::DBUpdate()
*
* @since 2.6.0 N°659 uniqueness constraint
*/
class CoreCannotSaveObjectException extends CoreException
{
/** @var string[] */
private $aIssues;
/** @var int */
private $iObjectId;
/** @var string */
private $sObjectClass;
/**
* CoreCannotSaveObjectException constructor.
*
* @param array $aContextData containing at least those keys : issues, id, class
*/
public function __construct($aContextData, $oPrevious = null)
{
$this->aIssues = $aContextData['issues'];
$this->iObjectId = $aContextData['id'];
$this->sObjectClass = $aContextData['class'];
$sIssues = implode(', ', $this->aIssues);
parent::__construct($sIssues, $aContextData, '', $oPrevious);
}
/**
* @return string
*/
public function getHtmlMessage()
{
$sTitle = Dict::S('UI:Error:SaveFailed');
$sContent = "<span><strong>".utils::HtmlEntities($sTitle)."</strong></span>";
if (count($this->aIssues) == 1) {
$sIssue = reset($this->aIssues);
$sContent .= "&nbsp;<span>".utils::HtmlEntities($sIssue)."</span>";
} else {
$sContent .= '<ul>';
foreach ($this->aIssues as $sError) {
$sContent .= "<li>".utils::HtmlEntities($sError)."</li>";
}
$sContent .= '</ul>';
}
return $sContent;
}
public function getIssues()
{
return $this->aIssues;
}
public function getObjectId()
{
return $this->iObjectId;
}
public function getObjectClass()
{
return $this->sObjectClass;
}
}

View File

@@ -0,0 +1,112 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
class CoreException extends Exception
{
protected $m_sIssue;
protected $m_sImpact;
protected $m_aContextData;
/**
* CoreException constructor.
*
* @param string $sIssue error message
* @param array|null $aContextData key/value array, value MUST implements _toString
* @param string $sImpact
* @param Exception|null $oPrevious
*/
public function __construct($sIssue, $aContextData = null, $sImpact = '', $oPrevious = null)
{
$this->m_sIssue = $sIssue;
$this->m_sImpact = $sImpact;
if (is_array($aContextData)) {
$this->m_aContextData = $aContextData;
} else {
$this->m_aContextData = [];
}
$sMessage = $sIssue;
if (!empty($sImpact)) {
$sMessage .= "($sImpact)";
}
if (count($this->m_aContextData) > 0) {
$sMessage .= ": ";
$aContextItems = array();
foreach ($this->m_aContextData as $sKey => $value) {
if (is_array($value)) {
$aPairs = array();
foreach ($value as $key => $val) {
if (is_array($val)) {
$aPairs[] = $key.'=>('.implode(', ', $val).')';
} else {
$aPairs[] = $key.'=>'.$val;
}
}
$sValue = '{'.implode('; ', $aPairs).'}';
} else {
$sValue = $value;
}
$aContextItems[] = "$sKey = $sValue";
}
$sMessage .= implode(', ', $aContextItems);
}
parent::__construct($sMessage, 0, $oPrevious);
}
/**
* @return string code and message for log purposes
*/
public function getInfoLog()
{
return 'error_code='.$this->getCode().', message="'.$this->getMessage().'"';
}
public function getHtmlDesc($sHighlightHtmlBegin = '<b>', $sHighlightHtmlEnd = '</b>')
{
return $this->getMessage();
}
/**
* getTraceAsString() cannot be overrided and it is limited as only current exception stack is returned.
* we need stack of all previous exceptions
*
* @uses __tostring() already does the work.
* @since 2.7.2/ 3.0.0
*/
public function getFullStackTraceAsString()
{
return "".$this;
}
public function getTraceAsHtml()
{
$aBackTrace = $this->getTrace();
return MyHelpers::get_callstack_html(0, $this->getTrace());
// return "<pre>\n".$this->getTraceAsString()."</pre>\n";
}
public function addInfo($sKey, $value)
{
$this->m_aContextData[$sKey] = $value;
}
public function getIssue()
{
return $this->m_sIssue;
}
public function getImpact()
{
return $this->m_sImpact;
}
public function getContextData()
{
return $this->m_aContextData;
}
}

View File

@@ -0,0 +1,13 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
/**
* @since 2.7.0 N°2555
*/
class CorePortalInvalidActionRuleException extends CoreException
{
}

View File

@@ -0,0 +1,17 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
/**
* @since 3.0.0 N°3522
*/
class CoreTemplateException extends CoreException
{
public function __construct(Exception $oTwigException, string $sTemplatePath)
{
$sMessage = "Twig Exception when rendering '$sTemplatePath' : ".$oTwigException->getMessage();
parent::__construct($sMessage, null, '', $oTwigException);
}
}

View File

@@ -0,0 +1,9 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
class CoreUnexpectedValue extends CoreException
{
}

View File

@@ -0,0 +1,9 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
class CoreWarning extends CoreException
{
}

View File

@@ -0,0 +1,9 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
class DeleteException extends CoreException
{
}

View File

@@ -0,0 +1,14 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
/**
* A parameter stored in the {@link Config} is invalid
*
* @since 2.7.0
*/
class InvalidConfigParamException extends CoreException
{
}

View File

@@ -0,0 +1,14 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
/**
* Thrown when the password is not valid
*
* @since 2.7.0
*/
class InvalidPasswordAttributeOneWayPassword extends CoreException
{
}

View File

@@ -0,0 +1,13 @@
<?php
/**
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
namespace Combodo\iTop\Application\TwigBase\Controller;
use Exception;
class PageNotFoundException extends Exception
{
}

View File

@@ -0,0 +1,9 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
class SecurityException extends CoreException
{
}

View File

@@ -0,0 +1,9 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
class SynchroExceptionNotStarted extends CoreException
{
}

View File

@@ -0,0 +1,9 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
class UserRightException extends CoreException
{
}

View File

@@ -0,0 +1,9 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
class DictException extends CoreException
{
}

View File

@@ -0,0 +1,16 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
class DictExceptionMissingString extends DictException
{
public function __construct($sLanguageCode, $sStringCode)
{
$aContext = array();
$aContext['language_code'] = $sLanguageCode;
$aContext['string_code'] = $sStringCode;
parent::__construct('Missing localized string', $aContext);
}
}

View File

@@ -0,0 +1,15 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
class DictExceptionUnknownLanguage extends DictException
{
public function __construct($sLanguageCode)
{
$aContext = array();
$aContext['language_code'] = $sLanguageCode;
parent::__construct('Unknown localization language', $aContext);
}
}

View File

@@ -0,0 +1,10 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
class iTopXmlException extends CoreException
{
}

View File

@@ -0,0 +1,39 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
class MySQLException extends CoreException
{
/**
* MySQLException constructor.
*
* @param string $sIssue
* @param array $aContext
* @param \Exception $oException
* @param \mysqli $oMysqli to use when working with a custom mysqli instance
*/
public function __construct($sIssue, $aContext, $oException = null, $oMysqli = null)
{
if ($oException != null) {
$aContext['mysql_errno'] = $oException->getCode();
$this->code = $oException->getCode();
$aContext['mysql_error'] = $oException->getMessage();
} else if ($oMysqli != null) {
$aContext['mysql_errno'] = $oMysqli->errno;
$this->code = $oMysqli->errno;
$aContext['mysql_error'] = $oMysqli->error;
} else {
$aContext['mysql_errno'] = CMDBSource::GetErrNo();
$this->code = CMDBSource::GetErrNo();
$aContext['mysql_error'] = CMDBSource::GetError();
}
parent::__construct($sIssue, $aContext);
//if is connection error, don't log the default message with password in
if (mysqli_connect_errno()) {
error_log($this->message);
error_reporting(0);
}
}
}

View File

@@ -0,0 +1,32 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
/**
* Class MySQLHasGoneAwayException
*
* @see https://dev.mysql.com/doc/refman/5.7/en/gone-away.html
* @since 2.5.0 N°1195
*/
class MySQLHasGoneAwayException extends MySQLException
{
/**
* can not be a constant before PHP 5.6 (http://php.net/manual/fr/language.oop5.constants.php)
*
* @return int[]
*/
public static function getErrorCodes()
{
return array(
2006,
2013,
);
}
public function __construct($sIssue, $aContext)
{
parent::__construct($sIssue, $aContext, null);
}
}

View File

@@ -0,0 +1,13 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
/**
* @since 2.7.0 N°679
*/
class MySQLNoTransactionException extends MySQLException
{
}

View File

@@ -0,0 +1,15 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
/**
* Class MySQLQueryHasNoResultException
*
* @since 2.5.0
*/
class MySQLQueryHasNoResultException extends MySQLException
{
}

View File

@@ -0,0 +1,13 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
/**
* @since 2.7.8 3.0.3 3.1.0 N°5538
*/
class MySQLTransactionNotClosedException extends MySQLException
{
}

View File

@@ -0,0 +1,13 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
/**
* @since 2.7.0 N°2555
*/
class CoreOqlException extends CoreException
{
}

View File

@@ -0,0 +1,13 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
/**
* @since 2.7.0 N°2555
*/
class CoreOqlMultipleResultsForbiddenException extends CoreOqlException
{
}

View File

@@ -0,0 +1,15 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
/**
* Exception for {@link iProcess} implementations.<br>
* An error happened during the processing but we can go on with the next implementations.
*
* @since 2.5.0 N°1195
*/
class ProcessException extends CoreException
{
}

View File

@@ -0,0 +1,16 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
/**
* Class ProcessFatalException
* Exception for iProcess implementations.<br>
* A big error occurred, we have to stop the iProcess processing.
*
* @since 2.5.0 N°1195
*/
class ProcessFatalException extends CoreException
{
}

View File

@@ -0,0 +1,12 @@
<?php
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
/**
* @since 2.7.0 PR #89
*/
class ProcessInvalidConfigException extends ProcessException
{
}

View File

@@ -0,0 +1,114 @@
<?php
/**
* Copyright (C) 2013-2023 Combodo SARL
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
*/
/**
* Class FindStylesheetObject: dedicated class to store computations made in method ThemeHandler::FindStylesheetFile.
* @author Olivier DAIN <olivier.dain@combodo.com>
* @since 3.0.0 N°3588
*/
class FindStylesheetObject{
//file URIs
private $aStylesheetFileURIs;
//fill paths
private $aStylesheetImportPaths;
private $aAllStylesheetFilePaths;
private $sLastStyleSheetPath;
private $iLastModified;
/**
* FindStylesheetObject constructor.
*/
public function __construct()
{
$this->aStylesheetFileURIs = [];
$this->aStylesheetImportPaths = [];
$this->aAllStylesheetFilePaths = [];
$this->sLastStyleSheetPath = "";
$this->iLastModified = 0;
}
public function GetLastStylesheetFile(): string
{
return $this->sLastStyleSheetPath;
}
public function GetImportPaths(): array
{
return $this->aStylesheetImportPaths;
}
/**
* @return array : main stylesheets URIs
*/
public function GetStylesheetFileURIs(): array
{
return $this->aStylesheetFileURIs;
}
public function GetLastModified() : int
{
return $this->iLastModified;
}
/**
* @return array : main stylesheets paths + included files paths
*/
public function GetAllStylesheetPaths(): array
{
return $this->aAllStylesheetFilePaths;
}
/**
* @return string : last found stylesheet URI
*/
public function GetLastStyleSheetPath(): string
{
return $this->sLastStyleSheetPath;
}
public function AddStylesheet(string $sStylesheetFileURI, string $sStylesheetFilePath): void
{
$this->aStylesheetFileURIs[] = $sStylesheetFileURI;
$this->aAllStylesheetFilePaths[] = $sStylesheetFilePath;
$this->sLastStyleSheetPath = $sStylesheetFilePath;
}
public function AlreadyFetched(string $sStylesheetFilePath) : bool {
return in_array($sStylesheetFilePath, $this->aAllStylesheetFilePaths);
}
public function AddImport(string $sStylesheetFileURI, string $sStylesheetFilePath): void
{
$this->aStylesheetImportPaths[$sStylesheetFileURI] = $sStylesheetFilePath;
$this->aAllStylesheetFilePaths[] = $sStylesheetFilePath;
}
public function UpdateLastModified(string $sStylesheetFile): void
{
$this->iLastModified = max($this->iLastModified, @filemtime($sStylesheetFile));
}
public function ResetLastStyleSheet(): void
{
$this->sLastStyleSheetPath = "";
}
}

View File

@@ -1,5 +1,5 @@
<?php
// Copyright (C) 2010-2012 Combodo SARL
// Copyright (C) 2010-2023 Combodo SARL
//
// This file is part of iTop.
//
@@ -20,7 +20,7 @@
* Helper class to build interactive forms to be used either in stand-alone
* modal dialog or in "property-sheet" panes.
*
* @copyright Copyright (C) 2010-2012 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
class DesignerForm
@@ -60,7 +60,7 @@ class DesignerForm
$this->sHierarchySelector = '';
$this->StartFieldSet($this->sCurrentFieldSet);
$this->bDisplayed = true;
$this->aDefaultvalues = array();
$this->aDefaultValues = array();
}
public function AddField(DesignerFormField $oField)
@@ -102,23 +102,27 @@ class DesignerForm
$sReturn .= '<fieldset>';
$sReturn .= '<legend>'.$sLabel.'</legend>';
}
foreach($aFields as $oField)
{
/** @var \DesignerFormField $oField */
foreach($aFields as $oField) {
$aRow = $oField->Render($oP, $sFormId);
if ($oField->IsVisible())
{
$sValidation = '&nbsp;<span class="prop_apply">'.$this->GetValidationArea($oField->GetFieldId()).'</span>';
if ($oField->IsVisible()) {
$sValidation = '<span class="prop_apply ibo-prop--apply ibo-button ibo-is-alternative">'.$this->GetValidationArea($oField->GetFieldId()).'</span>';
$sField = $aRow['value'].$sValidation;
$aDetails[] = array('label' => $aRow['label'], 'value' => $sField);
}
else
{
$aDetails[] = array(
'label' => $aRow['label'],
'value' => $sField,
'attcode' => $oField->GetCode(),
'attlabel' => $aRow['label'],
'inputid' => $this->GetFieldId($oField->GetCode()),
'inputtype' => $oField->GetInputType(),
);
} else {
$sHiddenFields .= $aRow['value'];
}
}
$sReturn .= $oP->GetDetails($aDetails);
if ($sLabel != '')
{
if ($sLabel != '') {
$sReturn .= '</fieldset>';
}
}
@@ -207,51 +211,41 @@ class DesignerForm
$sActionUrl = addslashes($this->sSubmitTo);
$sJSSubmitParams = json_encode($this->aSubmitParams);
$sFormId = $this->GetFormId();
if ($this->oParentForm == null)
{
if ($this->oParentForm == null) {
$sReturn = '<form id="'.$sFormId.'" onsubmit="return false;">';
$sReturn .= '<table class="prop_table">';
$sReturn .= '<thead><tr><th class="prop_header">'.Dict::S('UI:Form:Property').'</th><th class="prop_header">'.Dict::S('UI:Form:Value').'</th><th colspan="2" class="prop_header">&nbsp;</th></tr></thead><tbody>';
$sReturn .= '<thead><tr><th class="ibo-prop-header">'.Dict::S('UI:Form:Property').'</th><th class="ibo-prop-header">'.Dict::S('UI:Form:Value').'</th><th colspan="2" class="ibo-prop-header">&nbsp;</th></tr></thead><tbody>';
}
$sHiddenFields = '';
foreach($this->aFieldSets as $sLabel => $aFields)
{
foreach ($this->aFieldSets as $sLabel => $aFields) {
$aDetails = array();
if ($sLabel != '')
{
if ($sLabel != '') {
$sReturn .= $this->StartRow().'<th colspan="4">'.$sLabel.'</th>'.$this->EndRow();
}
foreach($aFields as $oField)
{
foreach ($aFields as $oField) {
$aRow = $oField->Render($oP, $sFormId, 'property');
if ($oField->IsVisible())
{
if ($oField->IsVisible()) {
$sFieldId = $this->GetFieldId($oField->GetCode());
$sValidation = $this->GetValidationArea($sFieldId, '<span title="Apply" class="ui-icon ui-icon-circle-check"/>');
$sValidationFields = '</td><td class="prop_icon prop_apply">'.$sValidation.'</td><td class="prop_icon prop_cancel"><span title="Revert" class="ui-icon ui-icon-circle-close"/></td>'.$this->EndRow();
$sPath = $this->GetHierarchyPath().'/'.$oField->GetCode();
if (is_null($aRow['label']))
{
$sValidation = $this->GetValidationArea($sFieldId, '<div class="ibo-button ibo-is-alternative ibo-is-success" data-tooltip-content="'.Dict::Format('UI:DashboardEdit:Apply').'"><i class="fas fa-check"></i></div>');
$sValidationFields = '</td><td class="prop_icon prop_apply ibo-prop--apply" >'.$sValidation.'</td><td class="prop_icon prop_cancel ibo-prop--cancel"><span><div class="ibo-button ibo-is-alternative ibo-is-neutral" data-tooltip-content="'.Dict::Format('UI:DashboardEdit:Revert').'"><i class="fas fa-undo"></i></div></span></td>'
.$this->EndRow();
if (is_null($aRow['label'])) {
$sReturn .= $this->StartRow($sFieldId).'<td class="prop_value" colspan="2">'.$aRow['value'];
}
else
{
} else {
$sReturn .= $this->StartRow($sFieldId).'<td class="prop_label">'.$aRow['label'].'</td><td class="prop_value">'.$aRow['value'];
}
if (!($oField instanceof DesignerFormSelectorField) && !($oField instanceof DesignerMultipleSubFormField))
{
if (!($oField instanceof DesignerFormSelectorField) && !($oField instanceof DesignerMultipleSubFormField)) {
$sReturn .= $sValidationFields;
}
$sNotifyParentSelectorJS = is_null($sNotifyParentSelector) ? 'null' : "'".addslashes($sNotifyParentSelector)."'";
$sAutoApply = $oField->IsAutoApply() ? 'true' : 'false';
$sHandlerEquals = $oField->GetHandlerEquals();
$sHandlerGetValue = $oField->GetHandlerGetValue();
$sWidgetClass = $oField->GetWidgetClass();
$sJSExtraParams = '';
if (count($oField->GetWidgetExtraParams()) > 0)
@@ -266,6 +260,7 @@ class DesignerForm
$this->AddReadyScript(
<<<EOF
$('#row_$sFieldId').$sWidgetClass({parent_selector: $sNotifyParentSelectorJS, field_id: '$sFieldId', equals: $sHandlerEquals, get_field_value: $sHandlerGetValue, auto_apply: $sAutoApply, value: '', submit_to: '$sActionUrl', submit_parameters: $sJSSubmitParams $sJSExtraParams });
CombodoTooltip.InitTooltipFromMarkup($('#$sFormId [data-tooltip-content]'));
EOF
);
}
@@ -291,7 +286,6 @@ EOF
}
$this->AddReadyScript(
<<<EOF
$('.prop_table').tableHover();
var idx = 0;
$('.prop_table tbody tr').each(function() {
if ((idx % 2) == 0)
@@ -360,7 +354,7 @@ EOF
<<<EOF
$('#$sDialogId').dialog({
height: 'auto',
maxHeight: $(window).height() - 8,
maxHeight: $(window).height() * 0.9,
width: $iDialogWidth,
modal: true,
autoOpen: $sAutoOpen,
@@ -548,7 +542,7 @@ EOF
public function GetValidationArea($sId, $sContent = '')
{
return "<span style=\"display:inline-block;width:20px;\" id=\"v_{$sId}\"><span class=\"ui-icon ui-icon-alert\"></span>$sContent</span>";
return "<span id=\"v_{$sId}\">$sContent</span>";
}
public function GetAsyncActionClass()
{
@@ -716,11 +710,27 @@ class DesignerFormField
$this->bMandatory = false;
$this->bReadOnly = false;
$this->bAutoApply = false;
$this->aCSSClasses = array();
$this->aCSSClasses = [];
if (ContextTag::Check(ContextTag::TAG_CONSOLE)) {
$this->aCSSClasses[] = 'ibo-input';
}
$this->bDisplayed = true;
$this->aWidgetExtraParams = array();
}
/**
* Important, for now we use constants from the \cmdbAbstractObject class, introducing a coupling that should not exist.
* This has been traced under N°4241 and will be discussed during the next modernization batch.
*
* @return string|null Return the input type of the field
* @see \cmdbAbstractObject::ENUM_INPUT_TYPE_XXX
* @since 3.0.0
*/
public function GetInputType(): ?string
{
return cmdbAbstractObject::ENUM_INPUT_TYPE_SINGLE_INPUT;
}
/**
* @return string
*/
@@ -828,7 +838,8 @@ class DesignerFormField
{
$sId = $this->oForm->GetFieldId($this->sCode);
$sName = $this->oForm->GetFieldName($this->sCode);
return array('label' => $this->sLabel, 'value' => "<input type=\"text\" id=\"$sId\" name=\"$sName\" value=\"".htmlentities($this->defaultValue, ENT_QUOTES, 'UTF-8')."\">");
return array('label' => $this->sLabel, 'value' => "<input type=\"text\" id=\"$sId\" name=\"$sName\" value=\"".utils::EscapeHtml($this->defaultValue)."\">");
}
/**
@@ -1002,9 +1013,8 @@ class DesignerTextField extends DesignerFormField
$sId = $this->oForm->GetFieldId($this->sCode);
$sName = $this->oForm->GetFieldName($this->sCode);
if ($this->IsReadOnly())
{
$sHtmlValue = "<span>".htmlentities($this->defaultValue, ENT_QUOTES, 'UTF-8')."<input type=\"hidden\" id=\"$sId\" name=\"$sName\" value=\"".htmlentities($this->defaultValue, ENT_QUOTES, 'UTF-8')."\"/></span>";
if ($this->IsReadOnly()) {
$sHtmlValue = "<span>".utils::EscapeHtml($this->defaultValue)."<input type=\"hidden\" id=\"$sId\" name=\"$sName\" value=\"".utils::EscapeHtml($this->defaultValue)."\"/></span>";
}
else
{
@@ -1020,19 +1030,18 @@ class DesignerTextField extends DesignerFormField
$sMandatory = $this->bMandatory ? 'true' : 'false';
$oP->add_ready_script(
<<<EOF
$('#$sId').bind('change keyup validate', function() { ValidateWithPattern('$sId', $sMandatory, '$sPattern', $(this).closest('form').attr('id'), $sForbiddenValues); } );
$('#$sId').on('change keyup validate', function() { ValidateWithPattern('$sId', $sMandatory, '$sPattern', $(this).closest('form').attr('id'), $sForbiddenValues); } );
{
var myTimer = null;
$('#$sId').bind('keyup', function() { clearTimeout(myTimer); myTimer = setTimeout(function() { $('#$sId').trigger('change', {} ); }, 100); });
$('#$sId').on('keyup', function() { clearTimeout(myTimer); myTimer = setTimeout(function() { $('#$sId').trigger('change', {} ); }, 100); });
}
EOF
);
$sCSSClasses = '';
if (count($this->aCSSClasses) > 0)
{
if (count($this->aCSSClasses) > 0) {
$sCSSClasses = 'class="'.implode(' ', $this->aCSSClasses).'"';
}
$sHtmlValue = "<input type=\"text\" $sCSSClasses id=\"$sId\" name=\"$sName\" value=\"".htmlentities($this->defaultValue, ENT_QUOTES, 'UTF-8')."\">";
$sHtmlValue = "<input type=\"text\" $sCSSClasses id=\"$sId\" name=\"$sName\" value=\"".utils::EscapeHtml($this->defaultValue)."\">";
}
return array('label' => $this->sLabel, 'value' => $sHtmlValue);
}
@@ -1055,6 +1064,23 @@ EOF
class DesignerLongTextField extends DesignerTextField
{
public function __construct($sCode, $sLabel = '', $defaultValue = '')
{
parent::__construct($sCode, $sLabel, $defaultValue);
if (ContextTag::Check(ContextTag::TAG_CONSOLE)) {
$this->aCSSClasses[] = 'ibo-input-text';
}
}
/**
* @inheritDoc
*/
public function GetInputType(): string
{
return cmdbAbstractObject::ENUM_INPUT_TYPE_TEXTAREA;
}
public function Render(WebPage $oP, $sFormId, $sRenderMode='dialog')
{
$sId = $this->oForm->GetFieldId($this->sCode);
@@ -1074,25 +1100,51 @@ class DesignerLongTextField extends DesignerTextField
{
$sCSSClasses = 'class="'.implode(' ', $this->aCSSClasses).'"';
}
if (!$this->IsReadOnly())
{
if (!$this->IsReadOnly()) {
$oP->add_ready_script(
<<<EOF
$('#$sId').bind('change keyup validate', function() { ValidateWithPattern('$sId', $sMandatory, '$sPattern', $(this).closest('form').attr('id'), $sForbiddenValues); } );
<<<EOF
$('#$sId').on('change keyup validate', function() { ValidateWithPattern('$sId', $sMandatory, '$sPattern', $(this).closest('form').attr('id'), $sForbiddenValues); } );
{
var myTimer = null;
$('#$sId').bind('keyup', function() { clearTimeout(myTimer); myTimer = setTimeout(function() { $('#$sId').trigger('change', {} ); }, 100); });
$('#$sId').on('keyup', function() { clearTimeout(myTimer); myTimer = setTimeout(function() { $('#$sId').trigger('change', {} ); }, 100); });
}
EOF
);
$sValue = "<textarea $sCSSClasses id=\"$sId\" name=\"$sName\">".htmlentities($this->defaultValue, ENT_QUOTES, 'UTF-8')."</textarea>";
$sValue = "<textarea $sCSSClasses id=\"$sId\" name=\"$sName\">".$this->PrepareValueForRendering()."</textarea>";
}
else
{
$sValue = "<div $sCSSClasses id=\"$sId\">".htmlentities($this->defaultValue, ENT_QUOTES, 'UTF-8')."</div>";
else {
$sValue = "<div $sCSSClasses id=\"$sId\">".$this->PrepareValueForRendering()."</div>";
}
return array('label' => $this->sLabel, 'value' => $sValue);
}
/**
* @return string|null The value itself as expected for rendering. May it be encoded, escaped or else.
* @since 3.1.0 N°6405
*/
protected function PrepareValueForRendering(): ?string
{
return utils::EscapeHtml($this->defaultValue);
}
}
/**
* Class DesignerXMLField
*
* Field to display XML content
*
* @author Guillaume Lajarige <guillaume.lajarige@combodo.com>
* @since 3.1.0 N°6405
*/
class DesignerXMLField extends DesignerLongTextField
{
/**
* @inheritDoc
*/
protected function PrepareValueForRendering(): ?string
{
return utils::EscapeHtml($this->defaultValue, true);
}
}
class DesignerIntegerField extends DesignerFormField
@@ -1118,9 +1170,8 @@ class DesignerIntegerField extends DesignerFormField
$sId = $this->oForm->GetFieldId($this->sCode);
$sName = $this->oForm->GetFieldName($this->sCode);
if ($this->IsReadOnly())
{
$sHtmlValue = "<span>".htmlentities($this->defaultValue, ENT_QUOTES, 'UTF-8')."<input type=\"hidden\" id=\"$sId\" name=\"$sName\" value=\"".htmlentities($this->defaultValue, ENT_QUOTES, 'UTF-8')."\"/></span>";
if ($this->IsReadOnly()) {
$sHtmlValue = "<span>".utils::EscapeHtml($this->defaultValue)."<input type=\"hidden\" id=\"$sId\" name=\"$sName\" value=\"".utils::EscapeHtml($this->defaultValue)."\"/></span>";
}
else
{
@@ -1129,19 +1180,18 @@ class DesignerIntegerField extends DesignerFormField
$sMandatory = $this->bMandatory ? 'true' : 'false';
$oP->add_ready_script(
<<<EOF
$('#$sId').bind('change keyup validate', function() { ValidateInteger('$sId', $sMandatory, $(this).closest('form').attr('id'), $sMin, $sMax); } );
$('#$sId').on('change keyup validate', function() { ValidateInteger('$sId', $sMandatory, $(this).closest('form').attr('id'), $sMin, $sMax); } );
{
var myTimer = null;
$('#$sId').bind('keyup', function() { clearTimeout(myTimer); myTimer = setTimeout(function() { $('#$sId').trigger('change', {} ); }, 100); });
$('#$sId').on('keyup', function() { clearTimeout(myTimer); myTimer = setTimeout(function() { $('#$sId').trigger('change', {} ); }, 100); });
}
EOF
);
$sCSSClasses = '';
if (count($this->aCSSClasses) > 0)
{
if (count($this->aCSSClasses) > 0) {
$sCSSClasses = 'class="'.implode(' ', $this->aCSSClasses).'"';
}
$sHtmlValue = "<input type=\"text\" $sCSSClasses id=\"$sId\" name=\"$sName\" value=\"".htmlentities($this->defaultValue, ENT_QUOTES, 'UTF-8')."\">";
$sHtmlValue = "<input type=\"text\" $sCSSClasses id=\"$sId\" name=\"$sName\" value=\"".utils::EscapeHtml($this->defaultValue)."\">";
}
return array('label' => $this->sLabel, 'value' => $sHtmlValue);
}
@@ -1179,12 +1229,34 @@ class DesignerComboField extends DesignerFormField
$this->bOtherChoices = false;
$this->sNullLabel = Dict::S('UI:SelectOne');
if (ContextTag::Check(ContextTag::TAG_CONSOLE)) {
$this->aCSSClasses[] = 'ibo-input-select';
}
$this->bAutoApply = true;
$this->bSorted = true; // Sorted by default
}
public function SetAllowedValues($aAllowedValues)
/**
* @inheritDoc
*/
public function GetInputType(): ?string
{
if ($this->bMultipleSelection) {
return cmdbAbstractObject::ENUM_INPUT_TYPE_DROPDOWN_MULTIPLE_CHOICES;
}
else {
return cmdbAbstractObject::ENUM_INPUT_TYPE_DROPDOWN_RAW;
}
}
public function SetAllowedValues(?array $aAllowedValues)
{
// Make sure to have an actual array for values
if (is_null($aAllowedValues)) {
$aAllowedValues = [];
}
$this->aAllowedValues = $aAllowedValues;
}
@@ -1223,7 +1295,7 @@ class DesignerComboField extends DesignerFormField
$sChecked = $this->defaultValue ? 'checked' : '';
$sMandatory = $this->bMandatory ? 'true' : 'false';
$sReadOnly = $this->IsReadOnly() ? 'disabled="disabled"' : '';
if ($this->IsSorted())
if ($this->IsSorted() )
{
asort($this->aAllowedValues);
}
@@ -1240,63 +1312,56 @@ class DesignerComboField extends DesignerFormField
{
if ($this->bMultipleSelection)
{
if(in_array($sKey, $this->defaultValue))
{
if(in_array($sKey, $this->defaultValue)) {
$aSelected[] = $sDisplayValue;
$aHiddenValues[] = "<input type=\"hidden\" name=\"{$sName}[]\" value=\"".htmlentities($sKey, ENT_QUOTES, 'UTF-8')."\"/>";
$aHiddenValues[] = "<input type=\"hidden\" name=\"{$sName}[]\" value=\"".utils::EscapeHtml($sKey)."\"/>";
}
}
else
{
if ($sKey == $this->defaultValue)
{
} else {
if ($sKey == $this->defaultValue) {
$aSelected[] = $sDisplayValue;
$aHiddenValues[] = "<input type=\"hidden\" id=\"$sId\" name=\"$sName\" value=\"".htmlentities($sKey, ENT_QUOTES, 'UTF-8')."\"/>";
$aHiddenValues[] = "<input type=\"hidden\" id=\"$sId\" name=\"$sName\" value=\"".utils::EscapeHtml($sKey)."\"/>";
}
}
}
$sHtml = "<span $sCSSClasses>".htmlentities(implode(', ', $aSelected), ENT_QUOTES, 'UTF-8').implode($aHiddenValues)."</span>";
$sHtml = "<span $sCSSClasses>".utils::EscapeHtml(implode(', ', $aSelected)).implode($aHiddenValues)."</span>";
}
else
{
if ($this->bMultipleSelection)
{
$sHtml = "<select $sCSSClasses multiple size=\"8\"id=\"$sId\" name=\"$sName\">";
$sHtml = "<span><select $sCSSClasses multiple size=\"8\"id=\"$sId\" name=\"$sName\">";
}
else
{
$sHtml = "<select $sCSSClasses id=\"$sId\" name=\"$sName\">";
$sHtml = "<span class=\"ibo-input-select-wrapper\"><select $sCSSClasses id=\"$sId\" name=\"$sName\">";
if ($this->sNullLabel != '')
{
$sHtml .= "<option value=\"\">".$this->sNullLabel."</option>";
}
}
foreach($this->aAllowedValues as $sKey => $sDisplayValue)
{
if ($this->bMultipleSelection)
{
foreach ($this->aAllowedValues as $sKey => $sDisplayValue) {
if ($this->bMultipleSelection) {
$sSelected = in_array($sKey, $this->defaultValue) ? 'selected' : '';
}
else
{
} else {
$sSelected = ($sKey == $this->defaultValue) ? 'selected' : '';
}
// Quick and dirty: display the menu parents as a tree
$sHtmlValue = str_replace(' ', '&nbsp;', htmlentities($sDisplayValue, ENT_QUOTES, 'UTF-8'));
$sHtml .= "<option value=\"".htmlentities($sKey, ENT_QUOTES, 'UTF-8')."\" $sSelected>$sHtmlValue</option>";
$sHtmlValue = str_replace(' ', '&nbsp;', $sDisplayValue);
$sHtml .= "<option value=\"".utils::EscapeHtml($sKey)."\" $sSelected>$sHtmlValue</option>";
}
$sHtml .= "</select>";
$sHtml .= "</select></span>";
if ($this->bOtherChoices)
{
$sHtml .= '<br/><input type="checkbox" id="other_chk_'.$sId.'"><label for="other_chk_'.$sId.'">&nbsp;Other:</label>&nbsp;<input type="text" id="other_'.$sId.'" name="other_'.$sName.'" size="30"/>';
}
$oP->add_ready_script(
<<<EOF
$('#$sId').bind('change validate', function() { ValidateWithPattern('$sId', $sMandatory, '', $(this).closest('form').attr('id'), null, null); } );
$('#$sId').on('change validate', function() { ValidateWithPattern('$sId', $sMandatory, '', $(this).closest('form').attr('id'), null, null); } );
EOF
);
}
return array('label' => $this->sLabel, 'value' => $sHtml);
}
public function ReadParam(&$aValues)
@@ -1315,6 +1380,17 @@ class DesignerBooleanField extends DesignerFormField
{
parent::__construct($sCode, $sLabel, $defaultValue);
$this->bAutoApply = true;
if (ContextTag::Check(ContextTag::TAG_CONSOLE)) {
$this->aCSSClasses[] = 'ibo-input-checkbox';
}
}
/**
* @inheritDoc
*/
public function GetInputType(): ?string
{
return cmdbAbstractObject::ENUM_INPUT_TYPE_CHECKBOX;
}
public function Render(WebPage $oP, $sFormId, $sRenderMode='dialog')
@@ -1322,10 +1398,9 @@ class DesignerBooleanField extends DesignerFormField
$sId = $this->oForm->GetFieldId($this->sCode);
$sName = $this->oForm->GetFieldName($this->sCode);
$sChecked = $this->defaultValue ? 'checked' : '';
if ($this->IsReadOnly())
{
if ($this->IsReadOnly()) {
$sLabel = $this->defaultValue ? Dict::S('UI:UserManagement:ActionAllowed:Yes') : Dict::S('UI:UserManagement:ActionAllowed:No'); //TODO use our own yes/no translations
$sHtmlValue = "<span>".htmlentities($sLabel)."<input type=\"hidden\" id=\"$sId\" name=\"$sName\" value=\"".htmlentities($this->defaultValue, ENT_QUOTES, 'UTF-8')."\"/></span>";
$sHtmlValue = "<span>".utils::EscapeHtml($sLabel)."<input type=\"hidden\" id=\"$sId\" name=\"$sName\" value=\"".utils::EscapeHtml($this->defaultValue)."\"/></span>";
}
else
{
@@ -1375,6 +1450,14 @@ class DesignerHiddenField extends DesignerFormField
{
parent::__construct($sCode, $sLabel, $defaultValue);
}
/**
* @inheritDoc
*/
public function GetInputType(): ?string
{
return null;
}
public function IsVisible()
{
@@ -1385,8 +1468,8 @@ class DesignerHiddenField extends DesignerFormField
{
$sId = $this->oForm->GetFieldId($this->sCode);
$sName = $this->oForm->GetFieldName($this->sCode);
$sChecked = $this->defaultValue ? 'checked' : '';
return array('label' =>'', 'value' => "<input type=\"hidden\" id=\"$sId\" name=\"$sName\" value=\"".htmlentities($this->defaultValue, ENT_QUOTES, 'UTF-8')."\">");
return array('label' => '', 'value' => "<input type=\"hidden\" id=\"$sId\" name=\"$sName\" value=\"".utils::EscapeHtml($this->defaultValue)."\">");
}
}
@@ -1402,6 +1485,14 @@ class DesignerIconSelectionField extends DesignerFormField
$this->bAutoApply = true;
$this->sUploadUrl = null;
}
/**
* @inheritDoc
*/
public function GetInputType(): ?string
{
return cmdbAbstractObject::ENUM_INPUT_TYPE_DROPDOWN_DECORATED;
}
public function SetAllowedValues($aAllowedValues)
{
@@ -1418,29 +1509,34 @@ class DesignerIconSelectionField extends DesignerFormField
$sId = $this->oForm->GetFieldId($this->sCode);
$sName = $this->oForm->GetFieldName($this->sCode);
$idx = 0;
foreach($this->aAllowedValues as $index => $aValue)
{
if ($aValue['value'] == $this->defaultValue)
{
$idxFallback = 0;
foreach ($this->aAllowedValues as $index => $aValue) {
if ($aValue['value'] == $this->defaultValue) {
$idx = $index;
break;
}
//fallback if url of default value contains ../
//for contact, icon is http://localhost/env-production/itop-structure/../../images/icons/icons8-customer.svg => not found http://localhost/images/icons/icons8-customer.svg
if (basename($aValue['value']) == basename($this->defaultValue)) {
$idxFallback = $index;
}
}
if ($idx == 0) {
$idx = $idxFallback;
}
$sJSItems = json_encode($this->aAllowedValues);
$sPostUploadTo = ($this->sUploadUrl == null) ? 'null' : "'{$this->sUploadUrl}'";
if (!$this->IsReadOnly())
{
if (!$this->IsReadOnly()) {
$sDefaultValue = ($this->defaultValue !== '') ? $this->defaultValue : $this->aAllowedValues[$idx]['value'];
$sValue = "<input type=\"hidden\" id=\"$sId\" name=\"$sName\" value=\"{$sDefaultValue}\"/>";
$sCSSClasses = ContextTag::Check(ContextTag::TAG_CONSOLE) ? 'class="ibo-input-select-wrapper"' : '';
$sValue = "<span $sCSSClasses><input type=\"hidden\" id=\"$sId\" name=\"$sName\" value=\"{$sDefaultValue}\"/></span>";
$oP->add_ready_script(
<<<EOF
<<<EOF
$('#$sId').icon_select({current_idx: $idx, items: $sJSItems, post_upload_to: $sPostUploadTo});
EOF
);
}
else
{
$sValue = '<span style="display:inline-block;line-height:48px;height:48px;"><span><img style="vertical-align:middle" src="'.$this->aAllowedValues[$idx]['icon'].'" />&nbsp;'.htmlentities($this->aAllowedValues[$idx]['label'], ENT_QUOTES, 'UTF-8').'</span></span>';
} else {
$sValue = '<span style="display:inline-block;line-height:48px;height:48px;"><span><img style="vertical-align:middle" src="'.$this->aAllowedValues[$idx]['icon'].'" />&nbsp;'.utils::EscapeHtml($this->aAllowedValues[$idx]['label']).'</span></span>';
}
$sReadOnly = $this->IsReadOnly() ? 'disabled' : '';
return array('label' => $this->sLabel, 'value' => $sValue);
@@ -1454,18 +1550,21 @@ class RunTimeIconSelectionField extends DesignerIconSelectionField
public function __construct($sCode, $sLabel = '', $defaultValue = '')
{
parent::__construct($sCode, $sLabel, $defaultValue);
$aFolderList = [
APPROOT.'env-'.utils::GetCurrentEnvironment() => utils::GetAbsoluteUrlModulesRoot(),
APPROOT.'images/icons' => utils::GetAbsoluteUrlAppRoot().'images/icons',
];
if (count(self::$aAllIcons) == 0) {
foreach ($aFolderList as $sFolderPath => $sUrlPrefix) {
$aIcons = self::FindIconsOnDisk($sFolderPath);
ksort($aIcons);
if (count(self::$aAllIcons) == 0)
{
self::$aAllIcons = self::FindIconsOnDisk(APPROOT.'env-'.utils::GetCurrentEnvironment());
ksort(self::$aAllIcons);
foreach ($aIcons as $sFilePath) {
self::$aAllIcons[] = array('value' => $sFilePath, 'label' => basename($sFilePath), 'icon' => $sUrlPrefix.$sFilePath);
}
}
}
$aValues = array();
foreach(self::$aAllIcons as $sFilePath)
{
$aValues[] = array('value' => $sFilePath, 'label' => basename($sFilePath), 'icon' => utils::GetAbsoluteUrlModulesRoot().$sFilePath);
}
$this->SetAllowedValues($aValues);
$this->SetAllowedValues(self::$aAllIcons);
}
static protected function FindIconsOnDisk($sBaseDir, $sDir = '')
@@ -1496,26 +1595,29 @@ class RunTimeIconSelectionField extends DesignerIconSelectionField
SetupUtils::builddir(dirname($sCacheFile));
file_put_contents($sCacheFile, $sAvailableIcons, LOCK_EX);
}
return $aFiles;
}
static protected function _FindIconsOnDisk($sBaseDir, $sDir = '')
static protected function _FindIconsOnDisk($sBaseDir, $sDir = '', &$aFilesSpecs = [])
{
$aResult = array();
$aResult = [];
// Populate automatically the list of icon files
if ($hDir = @opendir($sBaseDir.'/'.$sDir))
{
while (($sFile = readdir($hDir)) !== false)
{
if ($hDir = @opendir($sBaseDir.'/'.$sDir)) {
while (($sFile = readdir($hDir)) !== false) {
$aMatches = array();
if (($sFile != '.') && ($sFile != '..') && ($sFile != 'lifecycle') && is_dir($sBaseDir.'/'.$sDir.'/'.$sFile))
{
if (($sFile != '.') && ($sFile != '..') && ($sFile != 'lifecycle') && is_dir($sBaseDir.'/'.$sDir.'/'.$sFile)) {
$sDirSubPath = ($sDir == '') ? $sFile : $sDir.'/'.$sFile;
$aResult = array_merge($aResult, self::_FindIconsOnDisk($sBaseDir, $sDirSubPath));
$aResult = array_merge($aResult, self::_FindIconsOnDisk($sBaseDir, $sDirSubPath, $aFilesSpecs));
}
if (preg_match("/\.(png|jpg|jpeg|gif)$/i", $sFile, $aMatches)) // png, jp(e)g and gif are considered valid
$sSize = filesize($sBaseDir.'/'.$sDir.'/'.$sFile);
if (isset($aFilesSpecs[$sFile]) && $aFilesSpecs[$sFile] == $sSize) {
continue;
}
if (preg_match("/\.(png|jpg|jpeg|gif|svg)$/i", $sFile, $aMatches)) // png, jp(e)g, gif and svg are considered valid
{
$aResult[$sFile.'_'.$sDir] = $sDir.'/'.$sFile;
$aFilesSpecs[$sFile] = $sSize;
}
}
closedir($hDir);
@@ -1561,6 +1663,14 @@ class DesignerSortableField extends DesignerFormField
parent::__construct($sCode, $sLabel, $defaultValue);
$this->aAllowedValues = array();
}
/**
* @inheritDoc
*/
public function GetInputType(): ?string
{
return null;
}
public function SetAllowedValues($aAllowedValues)
{
@@ -1573,14 +1683,14 @@ class DesignerSortableField extends DesignerFormField
$sId = $this->oForm->GetFieldId($this->sCode);
$sName = $this->oForm->GetFieldName($this->sCode);
$sReadOnly = $this->IsReadOnly() ? 'readonly="readonly"' : '';
$aResult = array('label' => $this->sLabel, 'value' => "<input type=\"hidden\" id=\"$sId\" name=\"$sName\" $sReadOnly value=\"".htmlentities($this->defaultValue, ENT_QUOTES, 'UTF-8')."\">");
$aResult = array('label' => $this->sLabel, 'value' => "<input type=\"hidden\" id=\"$sId\" name=\"$sName\" $sReadOnly value=\"".utils::EscapeHtml($this->defaultValue)."\">");
$sJSFields = json_encode(array_keys($this->aAllowedValues));
$oP->add_ready_script(
"$('#$sId').sortable_field({aAvailableFields: $sJSFields});"
);
return $aResult;
}
}
@@ -1597,6 +1707,17 @@ class DesignerFormSelectorField extends DesignerFormField
$this->defaultRealValue = $defaultValue;
$this->aSubForms = array();
$this->bSorted = true;
if (ContextTag::Check(ContextTag::TAG_CONSOLE)) {
$this->aCSSClasses[] = 'ibo-input-select';
}
}
/**
* @inheritDoc
*/
public function GetInputType(): ?string
{
return null;
}
public function IsSorted()
@@ -1639,64 +1760,54 @@ class DesignerFormSelectorField extends DesignerFormField
{
$sId = $this->oForm->GetFieldId($this->sCode);
$sName = $this->oForm->GetFieldName($this->sCode);
$sReadOnly = $this->IsReadOnly() ? 'disabled="disabled"' : '';
$sReadOnly = $this->IsReadOnly() ? 'disabled="disabled"' : '';
$this->aCSSClasses[] = 'formSelector';
$sCSSClasses = '';
if (count($this->aCSSClasses) > 0)
{
if (count($this->aCSSClasses) > 0) {
$sCSSClasses = 'class="'.implode(' ', $this->aCSSClasses).'"';
}
if ($this->IsSorted())
{
if ($this->IsSorted()) {
uasort($this->aSubForms, array(get_class($this), 'SortOnFormLabel'));
}
if ($this->IsReadOnly())
{
if ($this->IsReadOnly()) {
$sDisplayValue = '';
$sHiddenValue = '';
foreach($this->aSubForms as $iKey => $aFormData)
{
foreach ($this->aSubForms as $iKey => $aFormData) {
if ($iKey == $this->defaultValue) // Default value is actually the index
{
$sDisplayValue = htmlentities($aFormData['label'], ENT_QUOTES, 'UTF-8');
$sHiddenValue = "<input type=\"hidden\" id=\"$sId\" name=\"$sName\" value=\"".htmlentities($iKey, ENT_QUOTES, 'UTF-8')."\"/>";
$sDisplayValue = utils::EscapeHtml($aFormData['label']);
$sHiddenValue = "<input type=\"hidden\" id=\"$sId\" name=\"$sName\" value=\"".utils::EscapeHtml($iKey)."\"/>";
break;
}
}
$sHtml = "<span $sCSSClasses>".$sDisplayValue.$sHiddenValue."</span>";
}
else
{
$sHtml = "<select $sCSSClasses id=\"$sId\" name=\"$sName\" $sReadOnly>";
foreach($this->aSubForms as $iKey => $aFormData)
{
$sDisplayValue = htmlentities($aFormData['label'], ENT_QUOTES, 'UTF-8');
$sValue = htmlentities($aFormData['value'], ENT_QUOTES, 'UTF-8');
} else {
$sHtml = "<span class=\"ibo-input-select-wrapper\"><select $sCSSClasses id=\"$sId\" name=\"$sName\" $sReadOnly>";
foreach ($this->aSubForms as $iKey => $aFormData) {
$sDisplayValue = utils::EscapeHtml($aFormData['label']);
$sValue = utils::EscapeHtml($aFormData['value']);
$sSelected = ($iKey == $this->defaultValue) ? 'selected' : '';
$sHtml .= "<option data-value=\"$sValue\" value=\"$iKey\" $sSelected>".$sDisplayValue."</option>";
}
$sHtml .= "</select>";
$sHtml .= "</select></span>";
}
if ($sRenderMode == 'property')
{
$sHtml .= '</td><td class="prop_icon prop_apply"><span title="Apply" class="ui-icon ui-icon-circle-check"/></td><td class="prop_icon prop_cancel"><span title="Revert" class="ui-icon ui-icon-circle-close"/></td></tr>';
if ($sRenderMode == 'property') {
$sHtml .= '</td><td class="prop_icon prop_apply ibo-prop--apply"><span><button class="ibo-button ibo-is-alternative ibo-is-success" data-tooltip-content="'.Dict::Format('UI:DashboardEdit:Apply').'"><i class="fas fa-check"></i></button></span></td><td class="prop_icon prop_cancel ibo-prop--cancel"><span><button class="ibo-button ibo-is-alternative ibo-is-neutral" data-tooltip-content="'.Dict::Format('UI:DashboardEdit:Revert').'"><i class="fas fa-times"></i></button></span></td></tr>';
}
foreach($this->aSubForms as $sKey => $aFormData)
{
foreach ($this->aSubForms as $sKey => $aFormData) {
$sId = $this->oForm->GetFieldId($this->sCode);
$sStyle = (($sKey == $this->defaultValue) && $this->oForm->IsDisplayed()) ? '' : 'style="display:none"';
$oSubForm = $aFormData['form'];
$oSubForm->SetParentForm($this->oForm);
$oSubForm->CopySubmitParams($this->oForm);
$oSubForm->SetPrefix($this->oForm->GetPrefix().$sKey.'_');
if ($sRenderMode == 'property')
{
if ($sRenderMode == 'property') {
// Note: Managing the visibility of nested subforms had several implications
// 1) Attributes are displayed in a table and we have to group them in as many tbodys as necessary to hide/show the various options depending on the current selection
// 2) It is not possible to nest tbody tags. Therefore, it is not possible to manage the visibility the same way as it is done for the dialog mode (using nested divs).
@@ -1730,7 +1841,7 @@ class DesignerFormSelectorField extends DesignerFormField
{
$oP->add_ready_script(
<<<EOF
$('#$sId').bind('change reverted', function() { $('.subform_{$sId}').hide(); $('.{$sId}_'+this.value).show(); } );
$('#$sId').on('change reverted', function() { $('.subform_{$sId}').hide(); $('.{$sId}_'+this.value).show(); } );
EOF
);
}
@@ -1794,6 +1905,14 @@ class DesignerSubFormField extends DesignerFormField
parent::__construct('', $sLabel, '');
$this->oSubForm = $oSubForm;
}
/**
* @inheritDoc
*/
public function GetInputType(): ?string
{
return null;
}
public function Render(WebPage $oP, $sFormId, $sRenderMode='dialog')
{
@@ -1838,6 +1957,14 @@ class DesignerStaticTextField extends DesignerFormField
parent::__construct($sCode, $sLabel, $defaultValue);
}
/**
* @inheritDoc
*/
public function GetInputType(): ?string
{
return null;
}
public function Render(WebPage $oP, $sFormId, $sRenderMode='dialog')
{
return array('label' => $this->sLabel, 'value' => $this->defaultValue);

View File

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

View File

@@ -1,7 +1,9 @@
<?php
/**
* @deprecated will be removed in 3.1.0 - moved to sources/application/WebPage/iTopWebPage.php
* @deprecated 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-2020 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
*/
// cannot notify depreciation for now as this is still MASSIVELY used in iTop core !
DeprecatedCallsLog::NotifyDeprecatedFile('moved to sources/Application/WebPage/iTopWebPage.php, now loadable using autoloader');

View File

@@ -1,7 +1,8 @@
<?php
/**
* @deprecated will be removed in 3.1.0 - moved to sources/application/WebPage/iTopWizardWebPage.php
* @deprecated 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-2020 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
*/
DeprecatedCallsLog::NotifyDeprecatedFile('moved to sources/Application/WebPage/iTopWizardWebPage.php, now loadable using autoloader');

View File

@@ -1,8 +1,11 @@
<?php
use Combodo\iTop\Application\Helper\Session;
/**
* Class LoginBasic
*
* @copyright Copyright (C) 2010-2019 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
@@ -20,19 +23,19 @@ class LoginBasic extends AbstractLoginFSMExtension
protected function OnModeDetection(&$iErrorCode)
{
if (!isset($_SESSION['login_mode']))
if (!Session::IsSet('login_mode'))
{
if (isset($_SERVER['HTTP_AUTHORIZATION']) && !empty($_SERVER['HTTP_AUTHORIZATION']))
{
$_SESSION['login_mode'] = 'basic';
Session::Set('login_mode', 'basic');
}
elseif (isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION']) && !empty($_SERVER['REDIRECT_HTTP_AUTHORIZATION']))
{
$_SESSION['login_mode'] = 'basic';
Session::Set('login_mode', 'basic');
}
elseif (isset($_SERVER['PHP_AUTH_USER']))
{
$_SESSION['login_mode'] = 'basic';
Session::Set('login_mode', 'basic');
}
}
return LoginWebPage::LOGIN_FSM_CONTINUE;
@@ -40,10 +43,10 @@ class LoginBasic extends AbstractLoginFSMExtension
protected function OnReadCredentials(&$iErrorCode)
{
if (!isset($_SESSION['login_mode']) || $_SESSION['login_mode'] == 'basic')
if (!Session::IsSet('login_mode') || Session::Get('login_mode') == 'basic')
{
list($sAuthUser, $sAuthPwd) = $this->GetAuthUserAndPassword();
$_SESSION['login_temp_auth_user'] = $sAuthUser;
list($sAuthUser) = $this->GetAuthUserAndPassword();
Session::Set('login_temp_auth_user', $sAuthUser);
}
return LoginWebPage::LOGIN_FSM_CONTINUE;
}
@@ -51,32 +54,37 @@ class LoginBasic extends AbstractLoginFSMExtension
protected function OnCheckCredentials(&$iErrorCode)
{
if ($_SESSION['login_mode'] == 'basic')
if (Session::Get('login_mode') == 'basic')
{
list($sAuthUser, $sAuthPwd) = $this->GetAuthUserAndPassword();
if (!UserRights::CheckCredentials($sAuthUser, $sAuthPwd, $_SESSION['login_mode'], 'internal'))
if (!UserRights::CheckCredentials($sAuthUser, $sAuthPwd, Session::Get('login_mode'), 'internal'))
{
$iErrorCode = LoginWebPage::EXIT_CODE_WRONGCREDENTIALS;
return LoginWebPage::LOGIN_FSM_ERROR;
}
Session::Set('auth_user', $sAuthUser);
}
return LoginWebPage::LOGIN_FSM_CONTINUE;
}
protected function OnCredentialsOK(&$iErrorCode)
{
if ($_SESSION['login_mode'] == 'basic')
if (Session::Get('login_mode') == 'basic')
{
list($sAuthUser) = $this->GetAuthUserAndPassword();
LoginWebPage::OnLoginSuccess($sAuthUser, 'internal', $_SESSION['login_mode']);
LoginWebPage::OnLoginSuccess(Session::Get('auth_user'), 'internal', Session::Get('login_mode'));
}
return LoginWebPage::LOGIN_FSM_CONTINUE;
}
protected function OnError(&$iErrorCode)
{
if ($_SESSION['login_mode'] == 'basic')
if (Session::Get('login_mode') == 'basic')
{
$iOnExit = LoginWebPage::getIOnExit();
if ($iOnExit === LoginWebPage::EXIT_RETURN)
{
return LoginWebPage::LOGIN_FSM_RETURN; // Error, exit FSM
}
LoginWebPage::HTTP401Error();
}
return LoginWebPage::LOGIN_FSM_CONTINUE;
@@ -84,9 +92,9 @@ class LoginBasic extends AbstractLoginFSMExtension
protected function OnConnected(&$iErrorCode)
{
if ($_SESSION['login_mode'] == 'basic')
if (Session::Get('login_mode') == 'basic')
{
$_SESSION['can_logoff'] = true;
Session::Set('can_logoff', true);
return LoginWebPage::CheckLoggedUser($iErrorCode);
}
return LoginWebPage::LOGIN_FSM_CONTINUE;

View File

@@ -1,9 +1,11 @@
<?php
/**
* @copyright Copyright (C) 2010-2019 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
use Combodo\iTop\Application\Helper\Session;
/**
* Class LoginDefaultBefore
*/
@@ -23,7 +25,7 @@ class LoginDefaultBefore extends AbstractLoginFSMExtension
{
$iErrorCode = LoginWebPage::EXIT_CODE_OK;
unset($_SESSION['login_temp_auth_user']);
Session::Unset('login_temp_auth_user');
// Check if proposed login mode is present and allowed
$aAllowedLoginTypes = MetaModel::GetConfig()->GetAllowedLoginTypes();
@@ -32,11 +34,11 @@ class LoginDefaultBefore extends AbstractLoginFSMExtension
if ($index !== false)
{
// Force login mode
$_SESSION['login_mode'] = $sProposedLoginMode;
Session::Set('login_mode', $sProposedLoginMode);
}
else
{
unset($_SESSION['login_mode']);
Session::Unset('login_mode');
}
return LoginWebPage::LOGIN_FSM_CONTINUE;
}
@@ -77,7 +79,7 @@ class LoginDefaultAfter extends AbstractLoginFSMExtension implements iLogoutExte
{
self::ResetLoginSession();
$iOnExit = LoginWebPage::getIOnExit();
if ($iOnExit == LoginWebPage::EXIT_RETURN)
if ($iOnExit === LoginWebPage::EXIT_RETURN)
{
return LoginWebPage::LOGIN_FSM_RETURN; // Error, exit FSM
}
@@ -91,8 +93,14 @@ class LoginDefaultAfter extends AbstractLoginFSMExtension implements iLogoutExte
protected function OnCredentialsOk(&$iErrorCode)
{
if (!isset($_SESSION['login_mode']))
if (!Session::IsSet('login_mode'))
{
// N°6358 - if EXIT_RETURN was asked, send an error
if (LoginWebPage::getIOnExit() === LoginWebPage::EXIT_RETURN) {
$iErrorCode = LoginWebPage::EXIT_CODE_WRONGCREDENTIALS;
return LoginWebPage::LOGIN_FSM_ERROR;
}
// If no plugin validated the user, exit
self::ResetLoginSession();
exit();
@@ -110,7 +118,7 @@ class LoginDefaultAfter extends AbstractLoginFSMExtension implements iLogoutExte
protected function OnConnected(&$iErrorCode)
{
unset($_SESSION['login_temp_auth_user']);
Session::Unset('login_temp_auth_user');
return LoginWebPage::LOGIN_FSM_CONTINUE;
}
@@ -118,11 +126,11 @@ class LoginDefaultAfter extends AbstractLoginFSMExtension implements iLogoutExte
private static function ResetLoginSession()
{
LoginWebPage::ResetSession();
foreach (array_keys($_SESSION) as $sKey)
foreach (Session::ListVariables() as $sKey)
{
if (utils::StartsWith($sKey, 'login_'))
{
unset($_SESSION[$sKey]);
Session::Unset($sKey);
}
}
}

View File

@@ -1,9 +1,11 @@
<?php
use Combodo\iTop\Application\Helper\Session;
/**
* Class LoginExternal
*
* @copyright Copyright (C) 2010-2019 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
@@ -22,12 +24,12 @@ class LoginExternal extends AbstractLoginFSMExtension
protected function OnModeDetection(&$iErrorCode)
{
if (!isset($_SESSION['login_mode']))
if (!Session::IsSet('login_mode'))
{
$sAuthUser = $this->GetAuthUser();
if ($sAuthUser && (strlen($sAuthUser) > 0))
{
$_SESSION['login_mode'] = 'external';
Session::Set('login_mode', 'external');
}
}
return LoginWebPage::LOGIN_FSM_CONTINUE;
@@ -35,33 +37,33 @@ class LoginExternal extends AbstractLoginFSMExtension
protected function OnCheckCredentials(&$iErrorCode)
{
if ($_SESSION['login_mode'] == 'external')
if (Session::Get('login_mode') == 'external')
{
$sAuthUser = $this->GetAuthUser();
if (!UserRights::CheckCredentials($sAuthUser, '', $_SESSION['login_mode'], 'external'))
if (!UserRights::CheckCredentials($sAuthUser, '', Session::Get('login_mode'), 'external'))
{
$iErrorCode = LoginWebPage::EXIT_CODE_WRONGCREDENTIALS;
return LoginWebPage::LOGIN_FSM_ERROR;
}
Session::Set('auth_user', $sAuthUser);
}
return LoginWebPage::LOGIN_FSM_CONTINUE;
}
protected function OnCredentialsOK(&$iErrorCode)
{
if ($_SESSION['login_mode'] == 'external')
if (Session::Get('login_mode') == 'external')
{
$sAuthUser = $this->GetAuthUser();
LoginWebPage::OnLoginSuccess($sAuthUser, 'external', $_SESSION['login_mode']);
LoginWebPage::OnLoginSuccess(Session::Get('auth_user'), 'external', Session::Get('login_mode'));
}
return LoginWebPage::LOGIN_FSM_CONTINUE;
}
protected function OnConnected(&$iErrorCode)
{
if ($_SESSION['login_mode'] == 'external')
if (Session::Get('login_mode') == 'external')
{
$_SESSION['can_logoff'] = false;
Session::Set('can_logoff', false);
return LoginWebPage::CheckLoggedUser($iErrorCode);
}
return LoginWebPage::LOGIN_FSM_CONTINUE;
@@ -69,8 +71,13 @@ class LoginExternal extends AbstractLoginFSMExtension
protected function OnError(&$iErrorCode)
{
if ($_SESSION['login_mode'] == 'external')
if (Session::Get('login_mode') == 'external')
{
$iOnExit = LoginWebPage::getIOnExit();
if ($iOnExit === LoginWebPage::EXIT_RETURN)
{
return LoginWebPage::LOGIN_FSM_RETURN; // Error, exit FSM
}
LoginWebPage::HTTP401Error();
}
return LoginWebPage::LOGIN_FSM_CONTINUE;
@@ -86,4 +93,4 @@ class LoginExternal extends AbstractLoginFSMExtension
/** @var string $sAuthUser */
return $sAuthUser; // Retrieve the value
}
}
}

View File

@@ -1,10 +1,12 @@
<?php
/**
* @copyright Copyright (C) 2010-2019 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
use Combodo\iTop\Application\Helper\Session;
/**
* Class LoginForm
*
@@ -29,8 +31,7 @@ class LoginForm extends AbstractLoginFSMExtension implements iLoginUIExtension
*/
protected function OnReadCredentials(&$iErrorCode)
{
if (!isset($_SESSION['login_mode']) || ($_SESSION['login_mode'] == 'form'))
{
if (!Session::IsSet('login_mode') || Session::Get('login_mode') == 'form') {
$sAuthUser = utils::ReadPostedParam('auth_user', '', 'raw_data');
$sAuthPwd = utils::ReadPostedParam('auth_pwd', null, 'raw_data');
if ($this->bForceFormOnError || empty($sAuthUser) || empty($sAuthPwd))
@@ -43,6 +44,10 @@ class LoginForm extends AbstractLoginFSMExtension implements iLoginUIExtension
exit;
}
if (LoginWebPage::getIOnExit() === LoginWebPage::EXIT_RETURN) {
return LoginWebPage::LOGIN_FSM_CONTINUE;
}
// No credentials yet, display the form
$oPage = LoginWebPage::NewLoginWebPage();
$oPage->DisplayLoginForm($this->bForceFormOnError);
@@ -50,9 +55,8 @@ class LoginForm extends AbstractLoginFSMExtension implements iLoginUIExtension
$this->bForceFormOnError = false;
exit;
}
$_SESSION['login_temp_auth_user'] = $sAuthUser;
$_SESSION['login_mode'] = 'form';
Session::Set('login_temp_auth_user', $sAuthUser);
Session::Set('login_mode', 'form');
}
return LoginWebPage::LOGIN_FSM_CONTINUE;
}
@@ -62,15 +66,16 @@ class LoginForm extends AbstractLoginFSMExtension implements iLoginUIExtension
*/
protected function OnCheckCredentials(&$iErrorCode)
{
if ($_SESSION['login_mode'] == 'form')
if (Session::Get('login_mode') == 'form')
{
$sAuthUser = utils::ReadPostedParam('auth_user', '', 'raw_data');
$sAuthPwd = utils::ReadPostedParam('auth_pwd', null, 'raw_data');
if (!UserRights::CheckCredentials($sAuthUser, $sAuthPwd, $_SESSION['login_mode'], 'internal'))
if (!UserRights::CheckCredentials($sAuthUser, $sAuthPwd, Session::Get('login_mode'), 'internal'))
{
$iErrorCode = LoginWebPage::EXIT_CODE_WRONGCREDENTIALS;
return LoginWebPage::LOGIN_FSM_ERROR;
}
Session::Set('auth_user', $sAuthUser);
}
return LoginWebPage::LOGIN_FSM_CONTINUE;
}
@@ -80,19 +85,10 @@ class LoginForm extends AbstractLoginFSMExtension implements iLoginUIExtension
*/
protected function OnCredentialsOK(&$iErrorCode)
{
if ($_SESSION['login_mode'] == 'form')
if (Session::Get('login_mode') == 'form')
{
if (isset($_SESSION['auth_user']))
{
// If FSM reenter this state (example 2FA) then the auth_user is not resubmitted
$sAuthUser = $_SESSION['auth_user'];
}
else
{
$sAuthUser = utils::ReadPostedParam('auth_user', '', 'raw_data');
}
// Store 'auth_user' in session for further use
LoginWebPage::OnLoginSuccess($sAuthUser, 'internal', $_SESSION['login_mode']);
LoginWebPage::OnLoginSuccess(Session::Get('auth_user'), 'internal', Session::Get('login_mode'));
}
return LoginWebPage::LOGIN_FSM_CONTINUE;
}
@@ -102,7 +98,7 @@ class LoginForm extends AbstractLoginFSMExtension implements iLoginUIExtension
*/
protected function OnError(&$iErrorCode)
{
if ($_SESSION['login_mode'] == 'form')
if (Session::Get('login_mode') == 'form')
{
$this->bForceFormOnError = true;
}
@@ -114,9 +110,9 @@ class LoginForm extends AbstractLoginFSMExtension implements iLoginUIExtension
*/
protected function OnConnected(&$iErrorCode)
{
if ($_SESSION['login_mode'] == 'form')
if (Session::Get('login_mode') == 'form')
{
$_SESSION['can_logoff'] = true;
Session::Set('can_logoff', true);
return LoginWebPage::CheckLoggedUser($iErrorCode);
}
return LoginWebPage::LOGIN_FSM_CONTINUE;

View File

@@ -2,12 +2,16 @@
/**
*
* @copyright Copyright (C) 2010-2019 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
use Combodo\iTop\TwigExtension;
use Combodo\iTop\Application\Branding;
use Combodo\iTop\Application\TwigBase\Twig\Extension;
use Twig\Environment;
use Twig\Loader\ChainLoader;
use Twig\Loader\FilesystemLoader;
/**
* Twig context for modules extending the login screen
@@ -216,14 +220,14 @@ class LoginTwigRenderer
$sTwigLoaderPath = $oLoginContext->GetTwigLoaderPath();
if ($sTwigLoaderPath != null)
{
$oExtensionLoader = new Twig_Loader_Filesystem();
$oExtensionLoader = new FilesystemLoader();
$oExtensionLoader->setPaths($sTwigLoaderPath);
$aTwigLoaders[] = $oExtensionLoader;
}
$this->aPostedVars = array_merge($this->aPostedVars, $oLoginContext->GetPostedVars());
}
$oCoreLoader = new Twig_Loader_Filesystem(array(), APPROOT.'templates');
$oCoreLoader = new FilesystemLoader(array(), APPROOT.'templates');
$aCoreTemplatesPaths = array('pages/login', 'pages/login/password');
// Having this path declared after the plugins let the plugins replace the core templates
$oCoreLoader->setPaths($aCoreTemplatesPaths);
@@ -231,23 +235,16 @@ class LoginTwigRenderer
$oCoreLoader->setPaths($aCoreTemplatesPaths, 'ItopCore');
$aTwigLoaders[] = $oCoreLoader;
$oLoader = new Twig_Loader_Chain($aTwigLoaders);
$this->oTwig = new Twig_Environment($oLoader);
TwigExtension::RegisterTwigExtensions($this->oTwig);
$oLoader = new ChainLoader($aTwigLoaders);
$this->oTwig = new Environment($oLoader);
Extension::RegisterTwigExtensions($this->oTwig);
}
public function GetDefaultVars()
{
$sLogo = 'itop-logo-external.png';
$sBrandingLogo = 'login-logo.png';
$sVersionShort = Dict::Format('UI:iTopVersion:Short', ITOP_APPLICATION, ITOP_VERSION);
$sIconUrl = Utils::GetConfig()->Get('app_icon_url');
$sDisplayIcon = utils::GetAbsoluteUrlAppRoot().'images/'.$sLogo.'?t='.utils::GetCacheBusterTimestamp();
if (file_exists(MODULESROOT.'branding/'.$sBrandingLogo))
{
$sDisplayIcon = utils::GetAbsoluteUrlModulesRoot().'branding/'.$sBrandingLogo.'?t='.utils::GetCacheBusterTimestamp();
}
$sDisplayIcon = Branding::GetLoginLogoAbsoluteUrl();
$aVars = array(
'sAppRootUrl' => utils::GetAbsoluteUrlAppRoot(),
@@ -312,7 +309,7 @@ class LoginTwigRenderer
}
/**
* @return \Twig_Environment
* @return \Twig\Environment
*/
public function GetTwig()
{

View File

@@ -1,9 +1,11 @@
<?php
use Combodo\iTop\Application\Helper\Session;
/**
* Class LoginURL
*
* @copyright Copyright (C) 2010-2019 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
@@ -26,13 +28,13 @@ class LoginURL extends AbstractLoginFSMExtension
protected function OnModeDetection(&$iErrorCode)
{
if (!isset($_SESSION['login_mode']) && !$this->bErrorOccurred)
if (!Session::IsSet('login_mode') && !$this->bErrorOccurred)
{
$sAuthUser = utils::ReadParam('auth_user', '', false, 'raw_data');
$sAuthPwd = utils::ReadParam('auth_pwd', null, false, 'raw_data');
if (!empty($sAuthUser) && !empty($sAuthPwd))
{
$_SESSION['login_mode'] = 'url';
Session::Set('login_mode', 'url');
}
}
return LoginWebPage::LOGIN_FSM_CONTINUE;
@@ -40,41 +42,41 @@ class LoginURL extends AbstractLoginFSMExtension
protected function OnReadCredentials(&$iErrorCode)
{
if ($_SESSION['login_mode'] == 'url')
if (Session::Get('login_mode') == 'url')
{
$_SESSION['login_temp_auth_user'] = utils::ReadParam('auth_user', '', false, 'raw_data');
Session::Set('login_temp_auth_user', utils::ReadParam('auth_user', '', false, 'raw_data'));
}
return LoginWebPage::LOGIN_FSM_CONTINUE;
}
protected function OnCheckCredentials(&$iErrorCode)
{
if ($_SESSION['login_mode'] == 'url')
if (Session::Get('login_mode') == 'url')
{
$sAuthUser = utils::ReadParam('auth_user', '', false, 'raw_data');
$sAuthPwd = utils::ReadParam('auth_pwd', null, false, 'raw_data');
if (!UserRights::CheckCredentials($sAuthUser, $sAuthPwd, $_SESSION['login_mode'], 'internal'))
if (!UserRights::CheckCredentials($sAuthUser, $sAuthPwd, Session::Get('login_mode'), 'internal'))
{
$iErrorCode = LoginWebPage::EXIT_CODE_WRONGCREDENTIALS;
return LoginWebPage::LOGIN_FSM_ERROR;
}
Session::Set('auth_user', $sAuthUser);
}
return LoginWebPage::LOGIN_FSM_CONTINUE;
}
protected function OnCredentialsOK(&$iErrorCode)
{
if ($_SESSION['login_mode'] == 'url')
if (Session::Get('login_mode') == 'url')
{
$sAuthUser = utils::ReadParam('auth_user', '', false, 'raw_data');
LoginWebPage::OnLoginSuccess($sAuthUser, 'internal', $_SESSION['login_mode']);
LoginWebPage::OnLoginSuccess(Session::Get('auth_user'), 'internal', Session::Get('login_mode'));
}
return LoginWebPage::LOGIN_FSM_CONTINUE;
}
protected function OnError(&$iErrorCode)
{
if ($_SESSION['login_mode'] == 'url')
if (Session::Get('login_mode') == 'url')
{
$this->bErrorOccurred = true;
}
@@ -83,11 +85,11 @@ class LoginURL extends AbstractLoginFSMExtension
protected function OnConnected(&$iErrorCode)
{
if ($_SESSION['login_mode'] == 'url')
if (Session::Get('login_mode') == 'url')
{
$_SESSION['can_logoff'] = true;
Session::Set('can_logoff', true);
return LoginWebPage::CheckLoggedUser($iErrorCode);
}
return LoginWebPage::LOGIN_FSM_CONTINUE;
}
}
}

View File

@@ -1,5 +1,5 @@
<?php
// Copyright (C) 2010-2017 Combodo SARL
// Copyright (C) 2010-2023 Combodo SARL
//
// This file is part of iTop.
//
@@ -20,10 +20,15 @@
/**
* Class LoginWebPage
*
* @copyright Copyright (C) 2010-2017 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
use Combodo\iTop\Application\Branding;
use Combodo\iTop\Application\Helper\Session;
use Combodo\iTop\Service\Events\EventData;
use Combodo\iTop\Service\Events\EventService;
/**
* Web page used for displaying the login form
*/
@@ -84,10 +89,8 @@ class LoginWebPage extends NiceWebPage
parent::__construct($sTitle);
$this->SetStyleSheet();
$this->add_header('Cache-control: no-cache, no-store, must-revalidate');
$this->add_header('Pragma: no-cache');
$this->add_header('Expires: 0');
$this->add_header('X-Frame-Options: deny');
$this->no_cache();
$this->add_xframe_options();
}
public function SetStyleSheet()
@@ -111,7 +114,7 @@ class LoginWebPage extends NiceWebPage
*/
public static function SynchronizeProfiles(&$oUser, array $aProfiles, $sOrigin)
{
$oProfilesSet = $oUser->Get(profile_list);
$oProfilesSet = $oUser->Get('profile_list');
//delete old profiles
$aExistingProfiles = [];
while ($oProfile = $oProfilesSet->Fetch())
@@ -130,10 +133,6 @@ class LoginWebPage extends NiceWebPage
//add profiles not already linked with user
foreach ($aProfiles as $iProfileId)
{
$oLink = new URP_UserProfile();
$oLink->Set('profileid', $iProfileId);
$oLink->Set('reason', $sOrigin);
$oProfilesSet->AddItem(MetaModel::NewObject('URP_UserProfile', array('profileid' => $iProfileId, 'reason' => $sOrigin)));
}
$oUser->Set('profile_list', $oProfilesSet);
@@ -141,16 +140,9 @@ class LoginWebPage extends NiceWebPage
public function DisplayLoginHeader($bMainAppLogo = false)
{
$sLogo = 'itop-logo-external.png';
$sBrandingLogo = 'login-logo.png';
$sVersionShort = Dict::Format('UI:iTopVersion:Short', ITOP_APPLICATION, ITOP_VERSION);
$sIconUrl = Utils::GetConfig()->Get('app_icon_url');
$sDisplayIcon = utils::GetAbsoluteUrlAppRoot().'images/'.$sLogo.'?t='.utils::GetCacheBusterTimestamp();
if (file_exists(MODULESROOT.'branding/'.$sBrandingLogo))
{
$sDisplayIcon = utils::GetAbsoluteUrlModulesRoot().'branding/'.$sBrandingLogo.'?t='.utils::GetCacheBusterTimestamp();
}
$sDisplayIcon = Branding::GetLoginLogoAbsoluteUrl();
$this->add("<div id=\"login-logo\"><a href=\"".htmlentities($sIconUrl, ENT_QUOTES,
self::PAGES_CHARSET)."\"><img title=\"$sVersionShort\" src=\"$sDisplayIcon\"></a></div>\n");
}
@@ -247,7 +239,7 @@ class LoginWebPage extends NiceWebPage
}
// This token allows the user to change the password without knowing the previous one
$sToken = substr(md5(APPROOT.uniqid()), 0, 16);
$sToken = bin2hex(random_bytes(32));
$oUser->Set('reset_pwd_token', $sToken);
CMDBObject::SetTrackInfo('Reset password');
$oUser->AllowWrite(true);
@@ -394,11 +386,16 @@ class LoginWebPage extends NiceWebPage
public static function ResetSession()
{
// Unset all of the session variables.
unset($_SESSION['auth_user']);
unset($_SESSION['login_state']);
unset($_SESSION['can_logoff']);
unset($_SESSION['archive_mode']);
unset($_SESSION['impersonate_user']);
Session::Unset('auth_user');
Session::Unset('login_state');
Session::Unset('can_logoff');
Session::Unset('archive_mode');
Session::Unset('impersonate_user');
Session::Unset('PluginProperties');
Session::Unset('UrlMakerClass');
Session::Unset('itop_env');
Session::Unset('obj_messages');
Session::Unset('profile_list');
UserRights::_ResetSessionCache();
// If it's desired to kill the session, also delete the session cookie.
// Note: This will destroy the session, and not just the session data!
@@ -444,11 +441,11 @@ class LoginWebPage extends NiceWebPage
}
$bLoginDebug = MetaModel::GetConfig()->Get('login_debug');
if (!isset($_SESSION['login_state']) || ($_SESSION['login_state'] == self::LOGIN_STATE_ERROR))
if (Session::Get('login_state') == self::LOGIN_STATE_ERROR)
{
$_SESSION['login_state'] = self::LOGIN_STATE_START;
Session::Set('login_state', self::LOGIN_STATE_START);
}
$sLoginState = $_SESSION['login_state'];
$sLoginState = Session::Get('login_state');
$sSessionLog = '';
if ($bLoginDebug)
@@ -489,10 +486,13 @@ class LoginWebPage extends NiceWebPage
$iResponse = $oLoginFSMExtensionInstance->LoginAction($sLoginState, $iErrorCode);
if ($iResponse == self::LOGIN_FSM_RETURN)
{
EventService::FireEvent(new EventData(EVENT_LOGIN, null, ['code' => $iErrorCode, 'state' => $sLoginState]));
Session::WriteClose();
return $iErrorCode; // Asked to exit FSM, generally login OK
}
if ($iResponse == self::LOGIN_FSM_ERROR)
{
EventService::FireEvent(new EventData(EVENT_LOGIN, null, ['code' => $iErrorCode, 'state' => $sLoginState]));
$sLoginState = self::LOGIN_STATE_SET_ERROR; // Next state will be error
// An error was detected, skip the other plugins turn
break;
@@ -502,10 +502,11 @@ class LoginWebPage extends NiceWebPage
// Every plugin has nothing else to do in this state, go forward
$sLoginState = self::AdvanceLoginFSMState($sLoginState);
$_SESSION['login_state'] = $sLoginState;
Session::Set('login_state', $sLoginState);
}
catch (Exception $e)
{
EventService::FireEvent(new EventData(EVENT_LOGIN, null, ['state' => $_SESSION['login_state']]));
IssueLog::Error($e->getTraceAsString());
static::ResetSession();
die($e->getMessage());
@@ -528,7 +529,7 @@ class LoginWebPage extends NiceWebPage
if ($bFilterWithMode)
{
$sCurrentLoginMode = isset($_SESSION['login_mode']) ? $_SESSION['login_mode'] : '';
$sCurrentLoginMode = Session::Get('login_mode', '');
}
else
{
@@ -667,8 +668,8 @@ class LoginWebPage extends NiceWebPage
$oLog->DBInsertNoReload();
}
$_SESSION['auth_user'] = $sAuthUser;
$_SESSION['login_mode'] = $sLoginMode;
Session::Set('auth_user', $sAuthUser);
Session::Set('login_mode', $sLoginMode);
UserRights::_InitSessionCache();
}
@@ -683,10 +684,10 @@ class LoginWebPage extends NiceWebPage
*/
public static function CheckLoggedUser(&$iErrorCode)
{
if (isset($_SESSION['auth_user']))
if (Session::IsSet('auth_user'))
{
// Already authenticated
$bRet = UserRights::Login($_SESSION['auth_user']); // Login & set the user's language
$bRet = UserRights::Login(Session::Get('auth_user')); // Login & set the user's language
if ($bRet)
{
$iErrorCode = self::EXIT_CODE_OK;
@@ -714,17 +715,17 @@ class LoginWebPage extends NiceWebPage
public static function SetLoginModeAndReload($sNewLoginMode)
{
if (isset($_SESSION['login_mode']) && ($_SESSION['login_mode'] == $sNewLoginMode))
if (Session::Get('login_mode') == $sNewLoginMode)
{
return;
}
$_SESSION['login_mode'] = $sNewLoginMode;
Session::Set('login_mode', $sNewLoginMode);
self::HTTPReload();
}
public static function HTTPReload()
{
$sOriginURL = $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$sOriginURL = utils::GetCurrentAbsoluteUrl();
if (!utils::StartsWith($sOriginURL, utils::GetAbsoluteUrlAppRoot()))
{
// If the found URL does not start with the configured AppRoot URL
@@ -831,9 +832,9 @@ class LoginWebPage extends NiceWebPage
{
CMDBObject::SetTrackOrigin('custom-extension');
$sInfo = 'External User provisioning';
if (isset($_SESSION['login_mode']))
if (Session::IsSet('login_mode'))
{
$sInfo .= " ({$_SESSION['login_mode']})";
$sInfo .= " (".Session::Get('login_mode').")";
}
CMDBObject::SetTrackInfo($sInfo);
@@ -885,9 +886,9 @@ class LoginWebPage extends NiceWebPage
{
CMDBObject::SetTrackOrigin('custom-extension');
$sInfo = 'External User provisioning';
if (isset($_SESSION['login_mode']))
if (Session::IsSet('login_mode'))
{
$sInfo .= " ({$_SESSION['login_mode']})";
$sInfo .= " (".Session::Get('login_mode').")";
}
CMDBObject::SetTrackInfo($sInfo);
@@ -926,9 +927,9 @@ class LoginWebPage extends NiceWebPage
// Now synchronize the profiles
$sOrigin = 'External User provisioning';
if (isset($_SESSION['login_mode']))
if (Session::IsSet('login_mode'))
{
$sOrigin .= " ({$_SESSION['login_mode']})";
$sOrigin .= " (".Session::Get('login_mode').")";
}
$aExistingProfiles = self::SynchronizeProfiles($oUser, $aProfiles, $sOrigin);
if ($oUser->IsModified())
@@ -1013,7 +1014,6 @@ class LoginWebPage extends NiceWebPage
$sMessage = self::HandleOperations($operation); // May exit directly
$iRet = self::Login($iOnExit);
if ($iRet == self::EXIT_CODE_OK)
{
if ($bMustBeAdmin && !UserRights::IsAdministrator())
@@ -1093,19 +1093,23 @@ class LoginWebPage extends NiceWebPage
}
else if ($operation == 'change_pwd')
{
if (isset($_SESSION['auth_user']))
if (Session::IsSet('auth_user'))
{
$sAuthUser = $_SESSION['auth_user'];
$sAuthUser = Session::Get('auth_user');
$sIssue = Session::Get('pwd_issue');
Session::Unset('pwd_issue');
$bFailedLogin = ($sIssue != null); // Force the "failed login" flag to display the "issue" message
UserRights::Login($sAuthUser); // Set the user's language
$oPage = self::NewLoginWebPage();
$oPage->DisplayChangePwdForm();
$oPage->DisplayChangePwdForm($bFailedLogin, $sIssue);
$oPage->output();
exit;
}
}
else if ($operation == 'check_pwd_policy')
{
$sAuthUser = $_SESSION['auth_user'];
$sAuthUser = Session::Get('auth_user');
UserRights::Login($sAuthUser); // Set the user's language
$aPwdMap = array();
@@ -1123,9 +1127,9 @@ class LoginWebPage extends NiceWebPage
}
if ($operation == 'do_change_pwd')
{
if (isset($_SESSION['auth_user']))
if (Session::IsSet('auth_user'))
{
$sAuthUser = $_SESSION['auth_user'];
$sAuthUser = Session::Get('auth_user');
UserRights::Login($sAuthUser); // Set the user's language
$sOldPwd = utils::ReadPostedParam('old_pwd', '', 'raw_data');
$sNewPwd = utils::ReadPostedParam('new_pwd', '', 'raw_data');

View File

@@ -1,6 +1,6 @@
<?php
/**
* Copyright (C) 2013-2019 Combodo SARL
* Copyright (C) 2013-2023 Combodo SARL
*
* This file is part of iTop.
*
@@ -77,17 +77,28 @@ function _MaintenanceHtmlMessage($sMessage)
*/
function _MaintenanceJsonMessage($sTitle, $sMessage)
{
@include_once(APPROOT."/application/ajaxwebpage.class.inc.php");
if (class_exists('ajax_page'))
if (class_exists('JsonPage'))
{
$oP = new ajax_page($sTitle);
$oP = new JsonPage($sTitle);
$oP->add_header('Access-Control-Allow-Origin: *');
$oP->SetContentType('application/json');
$oP->add('{"code":100, "message":"'.$sMessage.'"}');
$aMessage = [
'code' => 100,
'message' =>$sMessage
];
$oP->AddData($aMessage);
$oP->Output();
}
else
{
_MaintenanceTextMessage($sMessage);
} else {
@include_once(APPROOT."/application/ajaxwebpage.class.inc.php");
if (class_exists('ajax_page')) {
$oP = new ajax_page($sTitle);
$oP->add_header('Access-Control-Allow-Origin: *');
$oP->SetContentType('application/json');
$oP->add('{"code":100, "message":"'.$sMessage.'"}');
$oP->Output();
} else {
_MaintenanceTextMessage($sMessage);
}
}
}

View File

@@ -1,23 +1,10 @@
<?php
/**
* Copyright (C) 2013-2019 Combodo SARL
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
/*
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
use Combodo\iTop\Application\UI\Component\Title\TitleFactory;
use Combodo\iTop\Application\Helper\WebResourcesHelper;
require_once(APPROOT.'/application/utils.inc.php');
require_once(APPROOT.'/application/template.class.inc.php');
@@ -71,6 +58,10 @@ class ApplicationMenu
* @var array
*/
static $aMenusIndex = array();
/**
* @var array
*/
static $aMenusById = [];
/**
* @var string
*/
@@ -179,6 +170,7 @@ class ApplicationMenu
$aBacktrace = debug_backtrace();
$sFile = isset($aBacktrace[2]["file"]) ? $aBacktrace[2]["file"] : $aBacktrace[1]["file"];
self::$aMenusIndex[$index] = array('node' => $oMenuNode, 'children' => array(), 'parent' => $sParentId, 'rank' => $fRank, 'source_file' => $sFile);
self::$aMenusById[$oMenuNode->GetMenuId()] = $index;
}
else
{
@@ -273,6 +265,14 @@ class ApplicationMenu
/** @var \MenuGroup $oMenuNode */
$oMenuNode = static::GetMenuNode($sMenuGroupIdx);
if (!($oMenuNode instanceof MenuGroup)) {
IssueLog::Error('Menu node was not displayed as a menu group as it is actually not a menu group', LogChannels::CONSOLE, [
'menu_node_class' => get_class($oMenuNode),
'menu_node_label' => $oMenuNode->GetLabel(),
]);
continue;
}
$aMenuGroups[] = [
'sId' => $oMenuNode->GetMenuID(),
'sIconCssClasses' => $oMenuNode->GetDecorationClasses(),
@@ -291,7 +291,17 @@ class ApplicationMenu
* @param string $sMenuGroupIdx
* @param array $aExtraParams
*
* @return array
* @return array{
* array{
* sId: string,
* sTitle: string,
* sLabel: string,
* bHasCount: boolean,
* sUrl: string,
* bOpenInNewWindow: boolean,
* aSubMenuNodes: array
* }
* } The aSubMenuNodes key contains the same structure recursively
* @throws \DictExceptionMissingString
* @throws \Exception
* @since 3.0.0
@@ -320,12 +330,13 @@ class ApplicationMenu
}
$aSubMenuNodes[] = [
'sId' => $oSubMenuNode->GetMenuId(),
'sTitle' => $oSubMenuNode->GetTitle(),
'bHasCount' => $oSubMenuNode->HasCount(),
'sUrl' => $oSubMenuNode->GetHyperlink($aExtraParams),
'sId' => $oSubMenuNode->GetMenuId(),
'sTitle' => $oSubMenuNode->GetTitle(),
'sLabel' => $oSubMenuNode->GetLabel(),
'bHasCount' => $oSubMenuNode->HasCount(),
'sUrl' => $oSubMenuNode->GetHyperlink($aExtraParams),
'bOpenInNewWindow' => $oSubMenuNode->IsHyperLinkInNewWindow(),
'aSubMenuNodes' => static::GetSubMenuNodes($sSubMenuItemIdx, $aExtraParams),
'aSubMenuNodes' => static::GetSubMenuNodes($sSubMenuItemIdx, $aExtraParams),
];
}
@@ -342,15 +353,17 @@ class ApplicationMenu
*/
public static function DisplayMenu($oPage, $aExtraParams)
{
DeprecatedCallsLog::NotifyDeprecatedPhpMethod('use static::GetMenuGroups() instead');
self::LoadAdditionalMenus();
// Sort the root menu based on the rank
usort(self::$aRootMenus, array('ApplicationMenu', 'CompareOnRank'));
$iAccordion = 0;
$iActiveAccordion = $iAccordion;
$iActiveMenu = self::GetMenuIndexById(self::GetActiveNodeId());
foreach(self::$aRootMenus as $aMenu)
{
if (!self::CanDisplayMenu($aMenu)) { continue; }
foreach (self::$aRootMenus as $aMenu) {
if (!self::CanDisplayMenu($aMenu)) {
continue;
}
$oMenuNode = self::GetMenuNode($aMenu['index']);
$oPage->AddToMenu('<h3 id="'.utils::GetSafeId('AccordionMenu_'.$oMenuNode->GetMenuID()).'" class="navigation-menu-group" data-menu-id="'.$oMenuNode->GetMenuId().'">'.$oMenuNode->GetTitle().'</h3>');
$oPage->AddToMenu('<div>');
@@ -418,13 +431,12 @@ EOF
*/
protected static function DisplaySubMenu($oPage, $aMenus, $aExtraParams, $iActiveMenu = -1)
{
DeprecatedCallsLog::NotifyDeprecatedPhpMethod('use static::GetSubMenuNodes() instead');
// Sort the menu based on the rank
$bActive = false;
usort($aMenus, array('ApplicationMenu', 'CompareOnRank'));
foreach($aMenus as $aMenu)
{
if (!self::CanDisplayMenu($aMenu))
{
foreach ($aMenus as $aMenu) {
if (!self::CanDisplayMenu($aMenu)) {
continue;
}
$index = $aMenu['index'];
@@ -518,17 +530,11 @@ EOF
*/
public static function GetMenuIndexById($sTitle)
{
$index = -1;
/** @var MenuNode[] $aMenu */
foreach(self::$aMenusIndex as $aMenu)
{
if ($aMenu['node']->GetMenuId() == $sTitle)
{
$index = $aMenu['node']->GetIndex();
break;
}
if (isset(self::$aMenusById[$sTitle])) {
return self::$aMenusById[$sTitle];
}
return $index;
return -1;
}
/**
@@ -666,8 +672,7 @@ abstract class MenuNode
$this->sMenuId = $sMenuId;
$this->iParentIndex = $iParentIndex;
$this->aReflectionProperties = array();
if (strlen($sEnableClass) > 0)
{
if (utils::IsNotNullOrEmptyString($sEnableClass)) {
$this->aReflectionProperties['enable_class'] = $sEnableClass;
$this->aReflectionProperties['enable_action'] = $iActionCode;
$this->aReflectionProperties['enable_permission'] = $iAllowedResults;
@@ -723,6 +728,23 @@ abstract class MenuNode
return false;
}
protected function GetEntriesCountFromOQL(string $sOQL)
{
// Count the entries up to 99
$oSearch = DBSearch::FromOQL($sOQL);
$oSearch->SetShowObsoleteData(utils::ShowObsoleteData());
DBSearchHelper::AddContextFilter($oSearch);
$oSet = new DBObjectSet($oSearch);
$iCount = $oSet->CountWithLimit(99);
if ($iCount > 99) {
$iCount = "99+";
}
return $iCount;
}
/**
* Get the number of entries of the page corresponding to this menu item.
*
@@ -735,7 +757,7 @@ abstract class MenuNode
}
/**
* @return string
* @return string The "+" dictionary entry for this menu if exists, otherwise the Title (if we have a parent title, will output parentTitle / currentTitle)
*/
public function GetLabel()
{
@@ -747,7 +769,6 @@ abstract class MenuNode
} else {
$sRet = $this->GetTitle();
}
//$sRet = $this->GetTitle();
}
return $sRet;
}
@@ -1090,6 +1111,7 @@ class OQLMenuNode extends MenuNode
*/
public function RenderContent(WebPage $oPage, $aExtraParams = array())
{
ContextTag::AddContext(ContextTag::TAG_OBJECT_SEARCH);
ApplicationMenu::CheckMenuIdEnabled($this->GetMenuId());
OQLMenuNode::RenderOQLSearch
(
@@ -1121,25 +1143,27 @@ class OQLMenuNode extends MenuNode
{
$sUsageId = utils::GetSafeId($sUsageId);
$oSearch = DBObjectSearch::FromOQL($sOql);
//$sIcon = MetaModel::GetClassIcon($oSearch->GetClass(), false);
$sClass= $oSearch->GetClass();
$sIcon = MetaModel::GetClassIcon($sClass, false);
if ($bSearchPane) {
$aParams = array_merge(array('open' => $bSearchOpen, 'table_id' => $sUsageId), $aExtraParams);
$aParams = array_merge(['open' => $bSearchOpen, 'table_id' => $sUsageId, 'submit_on_load' => false], $aExtraParams);
$oBlock = new DisplayBlock($oSearch, 'search', false /* Asynchronous */, $aParams);
$oBlock->Display($oPage, 0);
$oPage->add("<div class='sf_results_area ibo-add-margin-top-250' data-target='search_results'>");
}
//$oPage->add("<p class=\"page-header\">$sIcon ".utils::HtmlEntities(Dict::S($sTitle))."</p>");
$oPage->add("<div class='sf_results_area'>");
$oTitle = TitleFactory::MakeForPage($sTitle);
$oPage->AddUiBlock($oTitle);
else {
$oPage->add("<div class='sf_results_area' data-target='search_results'>");
}
$aExtraParams['panel_class'] =$sClass;
$aExtraParams['panel_title'] = $sTitle;
$aExtraParams['panel_icon'] = $sIcon;
$aParams = array_merge(array('table_id' => $sUsageId), $aExtraParams);
$oBlock = new DisplayBlock($oSearch, 'list', false /* Asynchronous */, $aParams);
$oBlock->Display($oPage, $sUsageId);
$oPage->add("</div>");
if ($bEnableBreadcrumb && ($oPage instanceof iTopWebPage)) {
// Breadcrumb
//$iCount = $oBlock->GetDisplayedCount();
@@ -1156,15 +1180,7 @@ class OQLMenuNode extends MenuNode
public function GetEntriesCount()
{
// Count the entries up to 99
$oSet = new DBObjectSet(DBSearch::FromOQL($this->sOQL));
$iCount = $oSet->CountWithLimit(99);
if ($iCount > 99) {
$iCount = "99+";
}
return $iCount;
return $this->GetEntriesCountFromOQL($this->sOQL);
}
}
@@ -1213,7 +1229,8 @@ class SearchMenuNode extends MenuNode
$oPage->SetBreadCrumbEntry("menu-".$this->sMenuId, $this->GetTitle(), '', '', 'fas fa-search', iTopWebPage::ENUM_BREADCRUMB_ENTRY_ICON_TYPE_CSS_CLASSES);
$oSearch = new DBObjectSearch($this->sClass);
$aParams = array_merge(array('table_id' => 'Menu_'.utils::GetSafeId($this->GetMenuId())), $aExtraParams);
$sUsageId = 'Menu_'.utils::GetSafeId($this->GetMenuId());
$aParams = array_merge(array('table_id' =>$sUsageId), $aExtraParams);
$oBlock = new DisplayBlock($oSearch, 'search', false /* Asynchronous */, $aParams);
$oBlock->Display($oPage, 0);
}
@@ -1419,38 +1436,32 @@ class DashboardMenuNode extends MenuNode
$oDashboard = $this->GetDashboard();
if ($oDashboard != null)
{
WebResourcesHelper::EnableC3JSToWebPage($oPage);
$sDivId = utils::Sanitize($this->sMenuId, '', 'element_identifier');
$oPage->add('<div class="ibo-dashboard" id="'.$sDivId.'">');
$oPage->add('<div id="'.$sDivId.'" class="ibo-dashboard" data-role="ibo-dashboard">');
$aExtraParams['dashboard_div_id'] = $sDivId;
$aExtraParams['from_dashboard_page'] = true;
$oDashboard->SetReloadURL($this->GetHyperlink($aExtraParams));
$oDashboard->Render($oPage, false, $aExtraParams);
$oPage->add('</div>');
$bEdit = utils::ReadParam('edit', false);
if ($bEdit)
{
if ($bEdit) {
$sId = addslashes($this->sMenuId);
$oPage->add_ready_script("EditDashboard('$sId');");
}
else
{
} else {
$oParentMenu = ApplicationMenu::GetMenuNode($this->iParentIndex);
$sParentTitle = $oParentMenu->GetTitle();
$sThisTitle = $this->GetTitle();
if ($sParentTitle != $sThisTitle)
{
if ($sParentTitle != $sThisTitle) {
$sDescription = $sParentTitle.' / '.$sThisTitle;
}
else
{
} else {
$sDescription = $sThisTitle;
}
if ($this->sMenuId == ApplicationMenu::GetDefaultMenuId())
{
if ($this->sMenuId == ApplicationMenu::GetDefaultMenuId()) {
$sIcon = 'fas fa-home';
}
else
{
} else {
$sIcon = 'fas fa-chart-pie';
}
$oPage->SetBreadCrumbEntry("ui-dashboard-".$this->sMenuId, $this->GetTitle(), $sDescription, '', $sIcon, iTopWebPage::ENUM_BREADCRUMB_ENTRY_ICON_TYPE_CSS_CLASSES);
@@ -1622,5 +1633,23 @@ class ShortcutMenuNode extends MenuNode
{
return $this->oShortcut->Get('name');
}
/**
* Indicates if the page corresponding to this menu node is countable
*
* @return bool true if corresponding page is countable
* @since 3.0.0
*/
public function HasCount()
{
return true;
}
public function GetEntriesCount()
{
return $this->GetEntriesCountFromOQL($this->oShortcut->Get('oql'));
}
}

View File

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

View File

@@ -1,7 +1,8 @@
<?php
/**
* @deprecated will be removed in 3.1.0 - moved to sources/application/WebPage/NiceWebPage.php
* @deprecated 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-2020 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
*/
DeprecatedCallsLog::NotifyDeprecatedFile('moved to sources/Application/WebPage/NiceWebPage.php, now loadable using autoloader');

View File

@@ -1,7 +1,8 @@
<?php
/**
* @deprecated will be removed in 3.1.0 - moved to sources/application/WebPage/PDFPage.php
* @deprecated 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-2020 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
*/
DeprecatedCallsLog::NotifyDeprecatedFile('moved to sources/Application/WebPage/PDFPage.php, now loadable using autoloader');

View File

@@ -1,33 +1,33 @@
<?php
// Copyright (C) 2010-2015 Combodo SARL
//
// This file is part of iTop.
//
// iTop is free software; you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// iTop is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
/**
* Persistent class Event and derived
* Application internal events
* There is also a file log
/*
* Copyright (C) 2010-2023 Combodo SARL
*
* @copyright Copyright (C) 2010-2015 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
*/
use Combodo\iTop\Application\UI\Base\Component\Alert\AlertUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Component\FieldSet\FieldSetUIBlockFactory;
use Combodo\iTop\Application\UI\Base\Component\Html\Html;
use Combodo\iTop\Application\UI\Base\Component\Input\TextArea;
abstract class Query extends cmdbAbstractObject
{
/**
* @throws \CoreException
* @since 3.0.0 N°3227 add is_template field for predefined queries
*/
public static function Init()
{
$aParams = array
@@ -42,19 +42,130 @@ abstract class Query extends cmdbAbstractObject
"db_finalclass_field" => "realclass",
);
MetaModel::Init_Params($aParams);
//MetaModel::Init_InheritAttributes();
MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>null, "is_null_allowed"=>false, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>null, "is_null_allowed"=>false, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeString("name", array(
"allowed_values" => null,
"sql" => "name",
"default_value" => null,
"is_null_allowed" => false,
"depends_on" => array(),
)));
MetaModel::Init_AddAttribute(new AttributeText("description", array(
"allowed_values" => null,
"sql" => "description",
"default_value" => null,
"is_null_allowed" => false,
"depends_on" => array(),
)));
MetaModel::Init_AddAttribute(new AttributeEnum("is_template", array(
'allowed_values' => new ValueSetEnum('yes,no'),
'sql' => 'is_template',
'default_value' => 'no',
'is_null_allowed' => false,
'depends_on' => [],
'display_style' => 'radio_horizontal',
)));
MetaModel::Init_AddAttribute(new AttributeInteger("export_count", array(
"allowed_values" => null,
"sql" => "export_count",
"default_value" => 0,
"is_null_allowed" => false,
"depends_on" => array(),
"tracking_level" => ATTRIBUTE_TRACKING_NONE,
)));
MetaModel::Init_AddAttribute(new AttributeDateTime("export_last_date", array(
"allowed_values" => null,
"sql" => "export_last_date",
"default_value" => null,
"is_null_allowed" => true,
"depends_on" => array(),
"tracking_level" => ATTRIBUTE_TRACKING_NONE,
)));
MetaModel::Init_AddAttribute(new AttributeExternalKey("export_last_user_id",
array(
"targetclass"=>'User',
"allowed_values"=>null,
"sql"=>'user_id',
"is_null_allowed"=>true,
"depends_on"=>array(),
"display_style"=>'select',
"always_load_in_tables"=>false,
"on_target_delete"=>DEL_SILENT,
"tracking_level" => ATTRIBUTE_TRACKING_NONE,
)));
MetaModel::Init_AddAttribute(new AttributeExternalField("export_last_user_contact",
array(
"allowed_values"=>null,
"extkey_attcode"=> "export_last_user_id",
"target_attcode"=>"contactid",
"tracking_level" => ATTRIBUTE_TRACKING_NONE,
)));
// Display lists
MetaModel::Init_SetZListItems('details', array('name', 'description')); // Attributes to be displayed for the complete details
MetaModel::Init_SetZListItems('details',
array('name', 'is_template', 'description')); // Attributes to be displayed for the complete details
MetaModel::Init_SetZListItems('list', array('description')); // Attributes to be displayed for a list
// Search criteria
MetaModel::Init_SetZListItems('standard_search', array('name', 'description')); // Criteria of the std search form
MetaModel::Init_SetZListItems('default_search', array('name', 'description')); // Criteria of the default search form
MetaModel::Init_SetZListItems('standard_search', array('name', 'description', 'is_template')); // Criteria of the std search form
MetaModel::Init_SetZListItems('default_search',
array('name', 'description', 'is_template')); // Criteria of the default search form
// MetaModel::Init_SetZListItems('advanced_search', array('name')); // Criteria of the advanced search form
}
/**
* @inheritdoc
*
* @since 3.1.0
*/
public function GetAttributeFlags($sAttCode, &$aReasons = array(), $sTargetState = '')
{
// read only attribute
if (in_array($sAttCode, ['export_count', 'export_last_date', 'export_last_user_id'])){
return OPT_ATT_READONLY;
}
return parent::GetAttributeFlags($sAttCode, $aReasons, $sTargetState);
}
/**
* Return export url.
*
* @param array|null $aValues optional values for the query
*
* @return string|null
* @since 3.1.0
*/
abstract public function GetExportUrl(array $aValues = null) : ?string;
/**
* Update last export information.
*
* @return void
* @throws \ArchivedObjectException
* @throws \CoreException
* @throws \CoreUnexpectedValue
* @throws \MySQLException
* @since 3.1.0
*/
public function UpdateLastExportInformation() : void
{
// last export information
$this->Set('export_last_date', date(AttributeDateTime::GetSQLFormat()));
$this->Set('export_last_user_id', UserRights::GetUserObject());
$this->AllowWrite(true);
$this->DBUpdate();
// increment usage counter
$this->DBIncrement('export_count');
}
}
class QueryOQL extends Query
@@ -67,58 +178,113 @@ class QueryOQL extends Query
"key_type" => "autoincrement",
"name_attcode" => "name",
"state_attcode" => "",
"reconc_keys" => array(),
"reconc_keys" => array('oql', 'is_template'),
"db_table" => "priv_query_oql",
"db_key_field" => "id",
"db_finalclass_field" => "",
);
MetaModel::Init_Params($aParams);
MetaModel::Init_InheritAttributes();
MetaModel::Init_AddAttribute(new AttributeOQL("oql", array("allowed_values"=>null, "sql"=>"oql", "default_value"=>null, "is_null_allowed"=>false, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeText("fields", array("allowed_values"=>null, "sql"=>"fields", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
MetaModel::Init_AddAttribute(new AttributeOQL("oql", array(
"allowed_values" => null,
"sql" => "oql",
"default_value" => null,
"is_null_allowed" => false,
"depends_on" => array(),
)));
MetaModel::Init_AddAttribute(new AttributeText("fields", array(
"allowed_values" => null,
"sql" => "fields",
"default_value" => null,
"is_null_allowed" => true,
"depends_on" => array(),
)));
// Rolled back to AttributeText until AttributeQueryAttCodeSet can manage fields order correctly
//MetaModel::Init_AddAttribute(new AttributeQueryAttCodeSet("fields", array("allowed_values"=>null,"max_items" => 1000, "query_field" => "oql", "sql"=>"fields", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array('oql'))));
// Display lists
MetaModel::Init_SetZListItems('details', array('name', 'description', 'oql', 'fields')); // Attributes to be displayed for the complete details
MetaModel::Init_SetZListItems('details',
array(
'col:col1' => array('fieldset:Query:baseinfo' => array('name', 'is_template', 'description', 'oql', 'fields')),
'col:col2' => array('fieldset:Query:exportInfo' => array('export_count', 'export_last_date', 'export_last_user_id', 'export_last_user_contact'))
)
); // Attributes to be displayed for the complete details
MetaModel::Init_SetZListItems('list', array('description')); // Attributes to be displayed for a list
// Search criteria
MetaModel::Init_SetZListItems('standard_search', array('name', 'description', 'fields', 'oql')); // Criteria of the std search form
MetaModel::Init_SetZListItems('standard_search',
array('name', 'description', 'is_template', 'fields', 'oql')); // Criteria of the std search form
}
/** @inheritdoc */
public function GetExportUrl(array $aValues = null) : ?string
{
try{
// retrieve attributes
$sFields = trim($this->Get('fields'));
$sOql = $this->Get('oql');
// construct base url depending on version
$bExportV1Recommended = ($sFields == '');
if ($bExportV1Recommended) {
$sUrl = utils::GetAbsoluteUrlAppRoot().'webservices/export.php?format=spreadsheet&login_mode=basic&query='.$this->GetKey();
}
else{
$sUrl = utils::GetAbsoluteUrlAppRoot().'webservices/export-v2.php?format=spreadsheet&login_mode=basic&date_format='.urlencode((string)AttributeDateTime::GetFormat()).'&query='.$this->GetKey();
}
// search object from OQL
$oSearch = DBObjectSearch::FromOQL($sOql);
// inject parameters
$aParameters = $oSearch->GetQueryParams();
foreach ($aParameters as $sParam => $val) {
$paramValue = ($aValues === null || $aValues[$sParam] === null) ? $sParam : $aValues[$sParam];
$sUrl .= '&arg_' . $sParam . '=' . $paramValue;
}
return $sUrl;
}
catch(Exception $e){
return null;
}
}
function DisplayBareProperties(WebPage $oPage, $bEditMode = false, $sPrefix = '', $aExtraParams = array())
{
$aFieldsMap = parent::DisplayBareProperties($oPage, $bEditMode, $sPrefix, $aExtraParams);
if (!$bEditMode)
{
$oPage->add_script("$('[name=\"attr_oql\"]').addClass('ibo-query-oql ibo-is-code'); $('[data-attribute-code=\"oql\"]').addClass('ibo-query-oql ibo-is-code');");
if (!$bEditMode) {
$sFields = trim($this->Get('fields'));
$bExportV1Recommended = ($sFields == '');
if ($bExportV1Recommended)
{
if ($bExportV1Recommended) {
$oFieldAttDef = MetaModel::GetAttributeDef('QueryOQL', 'fields');
$oPage->add('<div class="message message_error" style="padding-left: 30px;"><div style="padding: 10px;">'.Dict::Format('UI:Query:UrlV1', $oFieldAttDef->GetLabel()).'</div></div>');
$oAlert = AlertUIBlockFactory::MakeForFailure()
->SetIsClosable(false)
->SetIsCollapsible(false);
$oAlert->AddCSSClass('mb-5');
$oAlert->AddSubBlock(new Html(Dict::Format('UI:Query:UrlV1', '')));
$oPage->AddSubBlock($oAlert);
$sUrl = utils::GetAbsoluteUrlAppRoot().'webservices/export.php?format=spreadsheet&login_mode=basic&query='.$this->GetKey();
}
else
{
} else {
$sUrl = utils::GetAbsoluteUrlAppRoot().'webservices/export-v2.php?format=spreadsheet&login_mode=basic&date_format='.urlencode((string)AttributeDateTime::GetFormat()).'&query='.$this->GetKey();
}
$sOql = $this->Get('oql');
$sMessage = null;
try
{
try {
$oSearch = DBObjectSearch::FromOQL($sOql);
$aParameters = $oSearch->GetQueryParams();
foreach($aParameters as $sParam => $val)
{
foreach ($aParameters as $sParam => $val) {
$sUrl .= '&arg_'.$sParam.'=["'.$sParam.'"]';
}
$oPage->p(Dict::S('UI:Query:UrlForExcel').':<br/><textarea cols="80" rows="3" READONLY>'.$sUrl.'</textarea>');
// add text area inside field set
$oFieldSet = FieldSetUIBlockFactory::MakeStandard(Dict::S('UI:Query:UrlForExcel'));
$oTextArea = new TextArea("", $sUrl, null, 80, 3);
$oFieldSet->AddSubBlock($oTextArea);
$oPage->AddSubBlock($oFieldSet);
if (count($aParameters) == 0)
{
if (count($aParameters) == 0) {
$oBlock = new DisplayBlock($oSearch, 'list');
$aExtraParams = array(
//'menu' => $sShowMenu,
@@ -128,15 +294,19 @@ class QueryOQL extends Query
$oBlock->Display($oPage, $sBlockId, $aExtraParams);
}
}
catch (OQLException $e)
{
$sMessage = '<div class="message message_error" style="padding-left: 30px;"><div style="padding: 10px;">'.Dict::Format('UI:RunQuery:Error', $e->getHtmlDesc()).'</div></div>';
$oPage->p($sMessage);
catch
(OQLException $e) {
$oAlert = AlertUIBlockFactory::MakeForFailure(Dict::S('UI:RunQuery:Error'), $e->getHtmlDesc())
->SetIsClosable(false)
->SetIsCollapsible(false);
$oAlert->AddCSSClass('mb-5');
$oPage->AddSubBlock($oAlert);
}
}
return $aFieldsMap;
}
// Rolled back until 'fields' can be properly managed by AttributeQueryAttCodeSet
//
// public function ComputeValues()

View File

@@ -1,5 +1,5 @@
<?php
// Copyright (C) 2010-2016 Combodo SARL
// Copyright (C) 2010-2023 Combodo SARL
//
// This file is part of iTop.
//
@@ -15,14 +15,14 @@
//
// You should have received a copy of the GNU Affero General Public License
// along with iTop. If not, see <http://www.gnu.org/licenses/>
use Combodo\iTop\Application\UI\Component\DataTable\DataTableSettings;
use Combodo\iTop\Application\UI\Base\Component\DataTable\DataTableSettings;
/**
* Persistent class Shortcut and derived
* Shortcuts of any kind
*
* @copyright Copyright (C) 2010-2016 Combodo SARL
* @copyright Copyright (C) 2010-2023 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
@@ -101,7 +101,7 @@ function ShortcutRenameOK()
});
}
$('#shortcut_rename_dlg form').bind('submit', function() { return false; });
$('#shortcut_rename_dlg form').on('submit', function() { return false; });
$('#shortcut_rename_dlg').dialog({
width: 400,
@@ -286,10 +286,10 @@ class ShortcutOQL extends Shortcut
$sRateTitle = addslashes(Dict::Format('Class:ShortcutOQL/Attribute:auto_reload_sec/tip', MetaModel::GetConfig()->Get('min_reload_interval')));
$oPage->add_ready_script(
<<<EOF
<<<JS
// Note: the title gets deleted by the validation mechanism
$("#attr_auto_reload_sec").tooltip({items: 'input', content: '$sRateTitle'});
$("#attr_auto_reload_sec").attr('data-tooltip-content', '$sRateTitle');
CombodoTooltip.InitTooltipFromMarkup($("#attr_auto_reload_sec"));
$("#attr_auto_reload_sec").prop('disabled', !$('#attr_auto_reload').is(':checked'));
$('#attr_auto_reload').change( function(ev) {
@@ -315,23 +315,30 @@ function ShortcutCreationOK()
});
}
$('#shortcut_creation_dlg form').bind('submit', function() { ShortcutCreationOK(); return false; });
$('#shortcut_creation_dlg form').on('submit', function() { ShortcutCreationOK(); return false; });
$('#shortcut_creation_dlg').dialog({
width: 400,
modal: true,
title: '$sDialogTitle',
buttons: [
{ text: "$sOkButtonLabel", click: ShortcutCreationOK },
{ text: "$sCancelButtonLabel", click: function() {
$(this).dialog( "close" ); $(this).remove();
} },
{
text: "$sCancelButtonLabel",
class: "ibo-is-alternative",
click: function() {
$(this).dialog( "close" );
$(this).remove();
}
},
{
text: "$sOkButtonLabel",
class: "ibo-is-primary",
click: ShortcutCreationOK
},
],
close: function() { $(this).remove(); }
});
EOF
JS
);
}
}
?>

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