diff --git a/application/cmdbabstract.class.inc.php b/application/cmdbabstract.class.inc.php index 1608d8877..fb5a4987a 100644 --- a/application/cmdbabstract.class.inc.php +++ b/application/cmdbabstract.class.inc.php @@ -632,7 +632,7 @@ HTML .'&attcode='.$oAttDef->GetCode() .$sHostContainerInEditionUrlParam, true, - 'Class:'.$sClass.'/Attribute:'.$sAttCode, + $oAttDef->GetLabel(), AjaxTab::ENUM_TAB_PLACEHOLDER_DASHBOARD ); // Add graphs dependencies diff --git a/application/utils.inc.php b/application/utils.inc.php index 1cf3c15bb..556d6ffde 100644 --- a/application/utils.inc.php +++ b/application/utils.inc.php @@ -2108,11 +2108,21 @@ class utils } /** - * Returns the relative (to MODULESROOT) path of the root directory of the module containing the file where the call to - * this function is made - * or an empty string if no such module is found (or not called within a module file) - * @param number $iCallDepth The depth of the module in the callstack. Zero when called directly from within the module - * @return string + * **Warning** : returned result can be invalid as we're using backtrace to find the module dir name + * + * @param int $iCallDepth The depth of the module in the callstack. Zero when called directly from within the module + * + * @return string the relative (to MODULESROOT) path of the root directory of the module containing the file where the call to + * this function is made + * or an empty string if no such module is found (or not called within a module file) + * + * @uses \debug_backtrace() + * + * @since 3.0.0 Before writing model.*.php file, compiler will now always delete it. + * If you have symlinks enabled, base dir will be original module dir, but since this behavior change this won't be true anymore for model.*.php + * In consequence the backtrace analysis won't be possible for this file + * See N°4854 + * @link https://www.itophub.io/wiki/page?id=3_0_0%3Arelease%3A3_0_whats_new#compiler_always_generate_new_model_php compiler behavior change documentation */ public static function GetCurrentModuleDir($iCallDepth) { @@ -2137,9 +2147,14 @@ class utils } /** + * **Warning** : as this method uses {@see GetCurrentModuleDir} it produces hazardous results. + * You should better uses directly {@see GetAbsoluteUrlModulesRoot} and add the module dir name yourself ! See N°4573 + * * @return string the base URL for all files in the current module from which this method is called * or an empty string if no such module is found (or not called within a module file) * @throws \Exception + * + * @uses GetCurrentModuleDir */ public static function GetCurrentModuleUrl() { diff --git a/core/dbobject.class.php b/core/dbobject.class.php index 67d02e390..21704fd4f 100644 --- a/core/dbobject.class.php +++ b/core/dbobject.class.php @@ -2934,6 +2934,54 @@ abstract class DBObject implements iDisplay utils::EnrichRaisedException($oTrigger, $e); } } + + // - TriggerOnObjectMention + // 1 - Check if any caselog updated + $aChanges = $this->m_aOrigValues; + $aUpdatedLogAttCodes = array(); + foreach($aChanges as $sAttCode => $value) + { + $oAttDef = MetaModel::GetAttributeDef($sClass, $sAttCode); + if($oAttDef instanceof AttributeCaseLog && $value->GetModifiedEntry() !== '') + { + $aUpdatedLogAttCodes[] = $sAttCode; + } + } + // 2 - Find mentioned objects + $aMentionedObjects = array(); + foreach ($aUpdatedLogAttCodes as $sAttCode) { + /** @var \ormCaseLog $oUpdatedCaseLog */ + $oUpdatedCaseLog = $this->Get($sAttCode); + $aMentionedObjects = array_merge_recursive($aMentionedObjects, utils::GetMentionedObjectsFromText($oUpdatedCaseLog->GetModifiedEntry())); + } + // 3 - Trigger for those objects + // TODO: This should be refactored and moved into the caselogs loop, otherwise, we won't be able to know which case log triggered the action. + foreach ($aMentionedObjects as $sMentionedClass => $aMentionedIds) { + foreach ($aMentionedIds as $sMentionedId) { + /** @var \DBObject $oMentionedObject */ + $oMentionedObject = MetaModel::GetObject($sMentionedClass, $sMentionedId); + $aTriggerArgs = $this->ToArgs('this') + array('mentioned->object()' => $oMentionedObject); + + $aParams = array('class_list' => MetaModel::EnumParentClasses($sClass, ENUM_PARENT_CLASSES_ALL)); + $oSet = new DBObjectSet(DBObjectSearch::FromOQL("SELECT TriggerOnObjectMention AS t WHERE t.target_class IN (:class_list)"), array(), $aParams); + while ($oTrigger = $oSet->Fetch()) + { + /** @var \TriggerOnObjectMention $oTrigger */ + try { + // Ensure to handle only mentioned object in the trigger's scope + if ($oTrigger->IsMentionedObjectInScope($oMentionedObject) === false) { + continue; + } + + $oTrigger->DoActivate($aTriggerArgs); + } + catch (Exception $e) { + utils::EnrichRaisedException($oTrigger, $e); + } + } + } + } + return $this->m_iKey; } diff --git a/core/ownershiplock.class.inc.php b/core/ownershiplock.class.inc.php index ad1f34d34..ddc8762e7 100644 --- a/core/ownershiplock.class.inc.php +++ b/core/ownershiplock.class.inc.php @@ -31,13 +31,13 @@ class iTopOwnershipToken extends DBObject { $aParams = array ( - 'category' => 'application', - 'key_type' => 'autoincrement', - 'name_attcode' => array('obj_class', 'obj_key'), - 'state_attcode' => '', - 'reconc_keys' => array(''), - 'db_table' => 'priv_ownership_token', - 'db_key_field' => 'id', + 'category' => '', + 'key_type' => 'autoincrement', + 'name_attcode' => array('obj_class', 'obj_key'), + 'state_attcode' => '', + 'reconc_keys' => array(''), + 'db_table' => 'priv_ownership_token', + 'db_key_field' => 'id', 'db_finalclass_field' => '', ); MetaModel::Init_Params($aParams); diff --git a/css/backoffice/components/input/_input-select.scss b/css/backoffice/components/input/_input-select.scss index 223f1cad3..b21158340 100644 --- a/css/backoffice/components/input/_input-select.scss +++ b/css/backoffice/components/input/_input-select.scss @@ -64,6 +64,8 @@ $ibo-input-select--autocomplete-item-image--border: 1px solid $ibo-color-grey-60 color: inherit; border-color: $ibo-color-white-100; padding-left: $ibo-input-select--padding-x; + + @extend %ibo-font-ral-nor-150; } > [data-value] { diff --git a/css/backoffice/pages/_all.scss b/css/backoffice/pages/_all.scss index c5f9aa004..11f5a7599 100644 --- a/css/backoffice/pages/_all.scss +++ b/css/backoffice/pages/_all.scss @@ -12,4 +12,5 @@ @import "datamodel-viewer"; @import "csv-import"; @import "global-search"; +@import "run-query"; @import "welcome-popup"; \ No newline at end of file diff --git a/css/backoffice/pages/_run-query.scss b/css/backoffice/pages/_run-query.scss new file mode 100644 index 000000000..efe4674dc --- /dev/null +++ b/css/backoffice/pages/_run-query.scss @@ -0,0 +1,10 @@ +/* + * @copyright Copyright (C) 2010-2021 Combodo SARL + * @license http://opensource.org/licenses/AGPL-3.0 + */ + +$ibo-run-query--highlight--background-color: $ibo-color-primary-300 !default; + +.ibo-run-query--highlight{ + background-color: $ibo-run-query--highlight--background-color; +} \ No newline at end of file diff --git a/datamodels/2.x/authent-cas/src/CASLoginExtension.php b/datamodels/2.x/authent-cas/src/CASLoginExtension.php index 71a8e1277..9d8d6e6c0 100644 --- a/datamodels/2.x/authent-cas/src/CASLoginExtension.php +++ b/datamodels/2.x/authent-cas/src/CASLoginExtension.php @@ -29,6 +29,8 @@ use utils; */ class CASLoginExtension extends AbstractLoginFSMExtension implements iLogoutExtension, iLoginUIExtension { + const LOGIN_MODE = 'cas'; + /** * Return the list of supported login modes for this plugin * @@ -36,7 +38,7 @@ class CASLoginExtension extends AbstractLoginFSMExtension implements iLogoutExte */ public function ListSupportedLoginModes() { - return array('cas'); + return array(static::LOGIN_MODE); } protected function OnStart(&$iErrorCode) @@ -47,12 +49,12 @@ class CASLoginExtension extends AbstractLoginFSMExtension implements iLogoutExte protected function OnReadCredentials(&$iErrorCode) { - if (Session::Get('login_mode') == 'cas') + if (empty(Session::Get('login_mode')) || Session::Get('login_mode') == static::LOGIN_MODE) { static::InitCASClient(); if (phpCAS::isAuthenticated()) { - Session::Set('login_mode', 'cas'); + Session::Set('login_mode', static::LOGIN_MODE); Session::Set('auth_user', phpCAS::getUser()); Session::Unset('login_will_redirect'); } @@ -68,7 +70,7 @@ class CASLoginExtension extends AbstractLoginFSMExtension implements iLogoutExte $iErrorCode = LoginWebPage::EXIT_CODE_MISSINGLOGIN; return LoginWebPage::LOGIN_FSM_ERROR; } - Session::Set('login_mode', 'cas'); + Session::Set('login_mode', static::LOGIN_MODE); phpCAS::forceAuthentication(); // Redirect to CAS and exit } } @@ -77,7 +79,7 @@ class CASLoginExtension extends AbstractLoginFSMExtension implements iLogoutExte protected function OnCheckCredentials(&$iErrorCode) { - if (Session::Get('login_mode') == 'cas') + if (Session::Get('login_mode') == static::LOGIN_MODE) { if (!Session::IsSet('auth_user')) { @@ -94,7 +96,7 @@ class CASLoginExtension extends AbstractLoginFSMExtension implements iLogoutExte protected function OnCredentialsOK(&$iErrorCode) { - if (Session::Get('login_mode') == 'cas') + if (Session::Get('login_mode') == static::LOGIN_MODE) { $sAuthUser = Session::Get('auth_user'); if (!LoginWebPage::CheckUser($sAuthUser)) @@ -109,7 +111,7 @@ class CASLoginExtension extends AbstractLoginFSMExtension implements iLogoutExte protected function OnError(&$iErrorCode) { - if (Session::Get('login_mode') == 'cas') + if (Session::Get('login_mode') == static::LOGIN_MODE) { Session::Unset('phpCAS'); if ($iErrorCode != LoginWebPage::EXIT_CODE_MISSINGLOGIN) @@ -124,7 +126,7 @@ class CASLoginExtension extends AbstractLoginFSMExtension implements iLogoutExte protected function OnConnected(&$iErrorCode) { - if (Session::Get('login_mode') == 'cas') + if (Session::Get('login_mode') == static::LOGIN_MODE) { Session::Set('can_logoff', true); return LoginWebPage::CheckLoggedUser($iErrorCode); @@ -205,7 +207,7 @@ class CASLoginExtension extends AbstractLoginFSMExtension implements iLogoutExte $oLoginContext->SetLoaderPath(APPROOT.'env-'.utils::GetCurrentEnvironment().'/authent-cas/view'); $aData = array( - 'sLoginMode' => 'cas', + 'sLoginMode' => static::LOGIN_MODE, 'sLabel' => Dict::S('CAS:Login:SignIn'), 'sTooltip' => Dict::S('CAS:Login:SignInTooltip'), ); diff --git a/datamodels/2.x/combodo-backoffice-darkmoon-theme/scss/scss-variables.scss b/datamodels/2.x/combodo-backoffice-darkmoon-theme/scss/scss-variables.scss index f2e504844..a8b2e550b 100644 --- a/datamodels/2.x/combodo-backoffice-darkmoon-theme/scss/scss-variables.scss +++ b/datamodels/2.x/combodo-backoffice-darkmoon-theme/scss/scss-variables.scss @@ -247,3 +247,5 @@ $ibo-vendors-c3--legend--fill: $ibo-color-white-200; $ibo-vendors-c3--legend--background-color: $ibo-color-white-100; $ibo-vendors-c3--legend-item--fill: $ibo-color-grey-100; $ibo-vendors-c3--axis--fill: $ibo-color-grey-200; + +$ibo-run-query--highlight--background-color: $ibo-color-primary-700; \ No newline at end of file diff --git a/datamodels/2.x/installation.xml b/datamodels/2.x/installation.xml index 5f1048422..330736741 100755 --- a/datamodels/2.x/installation.xml +++ b/datamodels/2.x/installation.xml @@ -21,7 +21,8 @@ combodo-db-tools itop-core-update itop-hub-connector - combodo-backoffice-darkmoon-theme + combodo-backoffice-darkmoon-theme + itop-themes-compat true diff --git a/datamodels/2.x/itop-themes-compat/README.md b/datamodels/2.x/itop-themes-compat/README.md new file mode 100644 index 000000000..3d0e44fb5 --- /dev/null +++ b/datamodels/2.x/itop-themes-compat/README.md @@ -0,0 +1,2 @@ +# Extension Light grey and Test red themes compatibility + diff --git a/datamodels/2.x/itop-themes-compat/assets/css/compat.scss b/datamodels/2.x/itop-themes-compat/assets/css/compat.scss new file mode 100644 index 000000000..e69de29bb diff --git a/datamodels/2.x/itop-themes-compat/assets/css/css-variables.scss b/datamodels/2.x/itop-themes-compat/assets/css/css-variables.scss new file mode 100644 index 000000000..e69de29bb diff --git a/datamodels/2.x/itop-themes-compat/cs.dict.itop-themes-compat.php b/datamodels/2.x/itop-themes-compat/cs.dict.itop-themes-compat.php new file mode 100644 index 000000000..acd662ebe --- /dev/null +++ b/datamodels/2.x/itop-themes-compat/cs.dict.itop-themes-compat.php @@ -0,0 +1,11 @@ + 'Light Grey (deprecated)~~', +)); diff --git a/datamodels/2.x/itop-themes-compat/da.dict.itop-themes-compat.php b/datamodels/2.x/itop-themes-compat/da.dict.itop-themes-compat.php new file mode 100644 index 000000000..6a30e8cb6 --- /dev/null +++ b/datamodels/2.x/itop-themes-compat/da.dict.itop-themes-compat.php @@ -0,0 +1,11 @@ + 'Light Grey (deprecated)~~', +)); diff --git a/datamodels/2.x/itop-themes-compat/datamodel.itop-themes-compat.xml b/datamodels/2.x/itop-themes-compat/datamodel.itop-themes-compat.xml new file mode 100644 index 000000000..492c47447 --- /dev/null +++ b/datamodels/2.x/itop-themes-compat/datamodel.itop-themes-compat.xml @@ -0,0 +1,33 @@ + + + + + + + + + itop-themes-compat/assets/css/css-variables.scss + + + itop-themes-compat/assets/css/compat.scss + itop-themes-compat/assets/css/compat.scss + ../css/backoffice/main.scss + + + + + #C53030 + #F7FAFC + "THIS IS A TEST INSTANCE" + + + itop-themes-compat/assets/css/css-variables.scss + + + itop-themes-compat/assets/css/compat.scss + itop-themes-compat/assets/css/compat.scss + + + + + diff --git a/datamodels/2.x/itop-themes-compat/de.dict.itop-themes-compat.php b/datamodels/2.x/itop-themes-compat/de.dict.itop-themes-compat.php new file mode 100644 index 000000000..94b8fbfed --- /dev/null +++ b/datamodels/2.x/itop-themes-compat/de.dict.itop-themes-compat.php @@ -0,0 +1,11 @@ + 'Light Grey (deprecated)~~', +)); diff --git a/datamodels/2.x/itop-themes-compat/en.dict.itop-themes-compat.php b/datamodels/2.x/itop-themes-compat/en.dict.itop-themes-compat.php new file mode 100644 index 000000000..49f12deeb --- /dev/null +++ b/datamodels/2.x/itop-themes-compat/en.dict.itop-themes-compat.php @@ -0,0 +1,11 @@ + 'Light Grey (deprecated)', +)); diff --git a/datamodels/2.x/itop-themes-compat/es_cr.dict.itop-themes-compat.php b/datamodels/2.x/itop-themes-compat/es_cr.dict.itop-themes-compat.php new file mode 100644 index 000000000..7b89eabc9 --- /dev/null +++ b/datamodels/2.x/itop-themes-compat/es_cr.dict.itop-themes-compat.php @@ -0,0 +1,11 @@ + 'Light Grey (deprecated)~~', +)); diff --git a/datamodels/2.x/itop-themes-compat/fr.dict.itop-themes-compat.php b/datamodels/2.x/itop-themes-compat/fr.dict.itop-themes-compat.php new file mode 100644 index 000000000..1ca71525c --- /dev/null +++ b/datamodels/2.x/itop-themes-compat/fr.dict.itop-themes-compat.php @@ -0,0 +1,11 @@ + 'Light Grey (obsolète)', +)); diff --git a/datamodels/2.x/itop-themes-compat/hu.dict.itop-themes-compat.php b/datamodels/2.x/itop-themes-compat/hu.dict.itop-themes-compat.php new file mode 100644 index 000000000..c59a9b0b2 --- /dev/null +++ b/datamodels/2.x/itop-themes-compat/hu.dict.itop-themes-compat.php @@ -0,0 +1,11 @@ + 'Light Grey (deprecated)~~', +)); diff --git a/datamodels/2.x/itop-themes-compat/it.dict.itop-themes-compat.php b/datamodels/2.x/itop-themes-compat/it.dict.itop-themes-compat.php new file mode 100644 index 000000000..890c74572 --- /dev/null +++ b/datamodels/2.x/itop-themes-compat/it.dict.itop-themes-compat.php @@ -0,0 +1,11 @@ + 'Light Grey (deprecated)~~', +)); diff --git a/datamodels/2.x/itop-themes-compat/ja.dict.itop-themes-compat.php b/datamodels/2.x/itop-themes-compat/ja.dict.itop-themes-compat.php new file mode 100644 index 000000000..eb29e6616 --- /dev/null +++ b/datamodels/2.x/itop-themes-compat/ja.dict.itop-themes-compat.php @@ -0,0 +1,11 @@ + 'Light Grey (deprecated)~~', +)); diff --git a/datamodels/2.x/itop-themes-compat/model.itop-themes-compat.php b/datamodels/2.x/itop-themes-compat/model.itop-themes-compat.php new file mode 100644 index 000000000..ccc1b539e --- /dev/null +++ b/datamodels/2.x/itop-themes-compat/model.itop-themes-compat.php @@ -0,0 +1,17 @@ + 'Light grey and Test red themes compatibility', + 'category' => 'business', + + // Setup + // + 'dependencies' => array( + 'itop-structure/3.0.1', + ), + 'mandatory' => false, + 'visible' => true, + + // Components + // + 'datamodel' => array( + 'model.itop-themes-compat.php', // Contains the PHP code generated by the "compilation" of datamodel.itop-themes-compat.xml + ), + 'webservice' => array( + + ), + 'data.struct' => array( + // add your 'structure' definition XML files here, + ), + 'data.sample' => array( + // add your sample data XML files here, + ), + + // Documentation + // + 'doc.manual_setup' => '', // hyperlink to manual setup documentation, if any + 'doc.more_information' => '', // hyperlink to more information, if any + + // Default settings + // + 'settings' => array( + // Module specific settings go here, if any + ), + ) +); + + +?> diff --git a/datamodels/2.x/itop-themes-compat/nl.dict.itop-themes-compat.php b/datamodels/2.x/itop-themes-compat/nl.dict.itop-themes-compat.php new file mode 100644 index 000000000..9c9027691 --- /dev/null +++ b/datamodels/2.x/itop-themes-compat/nl.dict.itop-themes-compat.php @@ -0,0 +1,11 @@ + 'Light Grey (deprecated)~~', +)); diff --git a/datamodels/2.x/itop-themes-compat/pt_br.dict.itop-themes-compat.php b/datamodels/2.x/itop-themes-compat/pt_br.dict.itop-themes-compat.php new file mode 100644 index 000000000..37ba9bb8e --- /dev/null +++ b/datamodels/2.x/itop-themes-compat/pt_br.dict.itop-themes-compat.php @@ -0,0 +1,11 @@ + 'Light Grey (deprecated)~~', +)); diff --git a/datamodels/2.x/itop-themes-compat/ru.dict.itop-themes-compat.php b/datamodels/2.x/itop-themes-compat/ru.dict.itop-themes-compat.php new file mode 100644 index 000000000..623b5b8e1 --- /dev/null +++ b/datamodels/2.x/itop-themes-compat/ru.dict.itop-themes-compat.php @@ -0,0 +1,11 @@ + 'Light Grey (deprecated)~~', +)); diff --git a/datamodels/2.x/itop-themes-compat/sk.dict.itop-themes-compat.php b/datamodels/2.x/itop-themes-compat/sk.dict.itop-themes-compat.php new file mode 100644 index 000000000..c6a188ce6 --- /dev/null +++ b/datamodels/2.x/itop-themes-compat/sk.dict.itop-themes-compat.php @@ -0,0 +1,11 @@ + 'Light Grey (deprecated)~~', +)); diff --git a/datamodels/2.x/itop-themes-compat/tr.dict.itop-themes-compat.php b/datamodels/2.x/itop-themes-compat/tr.dict.itop-themes-compat.php new file mode 100644 index 000000000..a0f70571b --- /dev/null +++ b/datamodels/2.x/itop-themes-compat/tr.dict.itop-themes-compat.php @@ -0,0 +1,11 @@ + 'Light Grey (deprecated)~~', +)); diff --git a/datamodels/2.x/itop-themes-compat/zh_cn.dict.itop-themes-compat.php b/datamodels/2.x/itop-themes-compat/zh_cn.dict.itop-themes-compat.php new file mode 100644 index 000000000..3bdecb074 --- /dev/null +++ b/datamodels/2.x/itop-themes-compat/zh_cn.dict.itop-themes-compat.php @@ -0,0 +1,11 @@ + 'Light Grey (deprecated)~~', +)); diff --git a/js/extkeywidget.js b/js/extkeywidget.js index 713a40e0c..6014debc5 100644 --- a/js/extkeywidget.js +++ b/js/extkeywidget.js @@ -25,8 +25,10 @@ Selectize.define('custom_itop', function(aOptions) { if (this.$control_input.val() === '' && !this.$activeItems.length) { iIndex = this.caretPos-1; if (iIndex >= 0 && iIndex < this.items.length) { + let sPreviousValue = this.options[this.items[iIndex]].search_label; this.clear(true); e.preventDefault(); + this.setTextboxValue(sPreviousValue.slice(0, -1)); return; } } diff --git a/js/pages/backoffice/toolbox.js b/js/pages/backoffice/toolbox.js index 8cd8d2a5f..2f4b3251d 100644 --- a/js/pages/backoffice/toolbox.js +++ b/js/pages/backoffice/toolbox.js @@ -17,10 +17,16 @@ */ // Helpers -function ShowAboutBox() +function ShowAboutBox(sTitle) { + var loadingDialog = $('
'); + loadingDialog.dialog( {title:sTitle,autoOpen: true, modal: true}); $.post(GetAbsoluteUrlAppRoot()+'pages/ajax.render.php', {operation: 'about_box'}, function(data){ + $('body').append(data); + }).always(function() { + loadingDialog.empty(); + loadingDialog.remove(); }); return false; } diff --git a/pages/ajax.render.php b/pages/ajax.render.php index 56c272584..62d6767d2 100644 --- a/pages/ajax.render.php +++ b/pages/ajax.render.php @@ -1060,7 +1060,8 @@ EOF $iCol = utils::ReadParam("iCol"); $sDashletIdOrig = utils::ReadParam("dashletid"); $sFinalDashletId = Dashboard::GetDashletUniqueId($bIsCustomized, $sDashboardDivId, $iRow, $iCol, $sDashletIdOrig); - $oPage = new DownloadPage(''); + $oPage = new AjaxPage(''); + $oPage->SetOutputDataOnly(true); $oPage->add($sFinalDashletId); break; diff --git a/pages/run_query.php b/pages/run_query.php index 5010ef1f0..e930ceeb6 100644 --- a/pages/run_query.php +++ b/pages/run_query.php @@ -66,7 +66,7 @@ function ShowExamples($oP, $sExpression) $sDisable = ''; if ($sOql == $sExpression) { // this one is currently being tested, highlight it - $sHighlight = "background-color:yellow;"; + $sHighlight = "ibo-run-query--highlight"; $sDisable = 'disabled'; // and remember we are testing a query of the list $bUsingExample = true; @@ -79,8 +79,8 @@ function ShowExamples($oP, $sExpression) $oFormButton->AddSubBlock(new Html($sContext)); //$aDisplayData[$sTopic][] = array( $aDisplayData[Dict::S('UI:RunQuery:QueryExamples')][] = array( - 'desc' => "
".utils::EscapeHtml($sDescription)."
", - 'oql' => "
".utils::EscapeHtml($sOql)."
", + 'desc' => "
".utils::EscapeHtml($sDescription)."
", + 'oql' => "
".utils::EscapeHtml($sOql)."
", 'go' => BlockRenderer::RenderBlockTemplates($oFormButton), ); } @@ -313,7 +313,7 @@ EOF $sBefore = substr($sExpression, 0, $e->GetColumn()); $sAfter = substr($sExpression, $e->GetColumn() + strlen($sWrongWord)); $sFixedExpression = $sBefore.$sSuggestedWord.$sAfter; - $sFixedExpressionHtml = $sBefore.''.$sSuggestedWord.''.$sAfter; + $sFixedExpressionHtml = $sBefore.''.$sSuggestedWord.''.$sAfter; $sSyntaxErrorText .= "

Suggesting: $sFixedExpressionHtml

"; $oSyntaxErrorPanel->AddSubBlock(new Html($sSyntaxErrorText)); diff --git a/setup/compiler.class.inc.php b/setup/compiler.class.inc.php index 572fd5fad..89b1e5088 100644 --- a/setup/compiler.class.inc.php +++ b/setup/compiler.class.inc.php @@ -3542,12 +3542,22 @@ EOF; /** * Write a file only if not exists - * Also add some informations in case of a write failleure - * @param $sFilename - * @param $sContent + * Also add some informations when write failure occurs + * + * @param string $sFilename + * @param string $sContent + * @param int $flags * * @return bool|int * @throws \Exception + * + * @uses \unlink() + * @uses \file_put_contents() + * + * @since 3.0.0 The file is removed before writing (commit c5d265f6) + * For now this causes model.*.php files to always be located in env-* dir, even if symlinks are enabled + * See N°4854 + * @link https://www.itophub.io/wiki/page?id=3_0_0%3Arelease%3A3_0_whats_new#compiler_always_generate_new_model_php compiler behavior change documentation */ protected function WriteFile($sFilename, $sContent, $flags = null) { diff --git a/setup/itopdesignformat.class.inc.php b/setup/itopdesignformat.class.inc.php index b4f3b372c..524a7af8d 100644 --- a/setup/itopdesignformat.class.inc.php +++ b/setup/itopdesignformat.class.inc.php @@ -17,8 +17,6 @@ * You should have received a copy of the GNU Affero General Public License */ -use Combodo\iTop\DesignDocument; - /** * Utility to upgrade the format of a given XML datamodel to the latest version @@ -117,8 +115,6 @@ class iTopDesignFormat */ protected $aLog; protected $bStatus; - protected $bKeepObsoleteNodes; - protected $sKeepVersion; /** * Creation from a loaded DOMDocument @@ -220,20 +216,6 @@ class iTopDesignFormat return self::GetItopNodePath($oNode->parentNode).'/'.$sNodeDesc; } - /** - * Compute a real xpath from iTop one - * - * @param \Combodo\iTop\DesignElement $oNode - * - * @return string - */ - public static function GetNodeXPath($oNode) - { - $sITopXPath = DesignDocument::GetItopNodePath($oNode); - - return preg_replace(["@\[@", "@]@"], ["[@id=\"", "\"]"], $sITopXPath); - } - /** * Test the conversion without altering the DOM * @@ -251,21 +233,19 @@ class iTopDesignFormat } /** - * Make adjustments to the DOM to migrate it to the specified version (default is latest) + * Make adjustements to the DOM to migrate it to the specified version (default is latest) * For now only the conversion from version 1.0 to 1.1 is supported. * * @param string $sTargetVersion The desired version (or the latest possible version if not specified) - * @param \ModelFactory|null $oFactory Full data model (not yet used, aimed at allowing conversion that could not be performed without knowing the + * @param object $oFactory Full data model (not yet used, aimed at allowing conversion that could not be performed without knowing the * whole data model) - * @param bool $bKeepObsoleteNodes * * @return bool True on success, False if errors have been encountered (still the DOM may be altered!) */ - public function Convert($sTargetVersion = ITOP_DESIGN_LATEST_VERSION, $oFactory = null, $bKeepObsoleteNodes = true) + public function Convert($sTargetVersion = ITOP_DESIGN_LATEST_VERSION, $oFactory = null) { $this->aLog = array(); $this->bStatus = true; - $this->bKeepObsoleteNodes = $bKeepObsoleteNodes; $oXPath = new DOMXPath($this->oDocument); // Retrieve the version number @@ -328,7 +308,6 @@ class iTopDesignFormat $sIntermediate = self::$aVersions[$sFrom]['next']; $sTransform = self::$aVersions[$sFrom]['go_to_next']; $this->LogInfo("Upgrading from $sFrom to $sIntermediate ($sTransform)"); - $this->sKeepVersion = $sFrom; } else { @@ -336,16 +315,12 @@ class iTopDesignFormat $sIntermediate = self::$aVersions[$sFrom]['previous']; $sTransform = self::$aVersions[$sFrom]['go_to_previous']; $this->LogInfo("Downgrading from $sFrom to $sIntermediate ($sTransform)"); - $this->sKeepVersion = null; } // Transform to the intermediate format $aCallSpec = array($this, $sTransform); try { call_user_func($aCallSpec, $oFactory); - if ($iFrom > $iTo && $this->bKeepObsoleteNodes) { - $this->RestorePreviousNodes($sIntermediate); - } // Recurse $this->DoConvert($sIntermediate, $sTo, $oFactory); @@ -698,8 +673,6 @@ class iTopDesignFormat */ protected function From16To15($oFactory) { - $oXPath = new DOMXPath($this->oDocument); - // Remove AttributeTagSet nodes // $sPath = "/itop_design/classes/class/fields/field[@xsi:type='AttributeTagSet']"; @@ -836,15 +809,7 @@ class iTopDesignFormat $oNode->appendChild($oCodeNode); } - // N°3516 Remove legacy backoffice theme - // Remove completely light-grey theme - $this->RemoveNodeFromXPath('/itop_design/branding/themes/theme[@id="light-grey"]'); - // Update test-red theme - $this->RemoveNodeFromXPath('/itop_design/branding/themes/theme[@id="test-red"]/imports/import[@id="css-variables"]'); - $this->RemoveNodeFromXPath('/itop_design/branding/themes/theme[@id="test-red"]/stylesheets/stylesheet[@id="jqueryui"]'); - $this->RemoveNodeFromXPath('/itop_design/branding/themes/theme[@id="test-red"]/stylesheets/stylesheet[@id="main"]'); - $oNodeList = $oXPath->query('/itop_design/branding/themes/theme[@id="test-red"]/variables/variable[@id="backoffice-environment-banner-background-color"]'); foreach ($oNodeList as $oNode) { $oNode->setAttribute('id', 'ibo-page-banner--background-color'); @@ -860,21 +825,6 @@ class iTopDesignFormat $oNode->setAttribute('id', 'ibo-page-banner--text-content'); } - $this->RemoveNodeFromXPath('/itop_design/branding/themes/theme[@id="test-red"]/stylesheets/stylesheet[@id="environment-banner"]'); - // Add new stylesheets - $oStyleSheetsNode = $oXPath->query('/itop_design/branding/themes/theme[@id="test-red"]/stylesheets')->item(0); - if ($oStyleSheetsNode) { - $oStyleSheetNode = $oStyleSheetsNode->ownerDocument->createElement("stylesheet"); - $oStyleSheetNode->setAttribute('id', 'environment-banner'); - $oStyleSheetNode->appendChild(new DOMText('../css/backoffice/themes/page-banner.scss')); - $oStyleSheetsNode->appendChild($oStyleSheetNode); - - $oStyleSheetNode = $oStyleSheetsNode->ownerDocument->createElement("stylesheet"); - $oStyleSheetNode->setAttribute('id', 'fullmoon'); - $oStyleSheetNode->appendChild(new DOMText('../css/backoffice/main.scss')); - $oStyleSheetsNode->appendChild($oStyleSheetNode); - } - // Add new attribute to theme import nodes $oNodeList = $oXPath->query('/itop_design/branding/themes/theme/imports/import'); foreach ($oNodeList as $oNode) { @@ -954,24 +904,27 @@ class iTopDesignFormat // N°3516 Bring back legacy themes // Update test-red theme - $oNodeList = $oXPath->query('/itop_design/branding/themes/theme[@id="test-red"]/variables/variable[@id="ibo-page-banner--background-color"]'); - foreach ($oNodeList as $oNode) { - $oNode->setAttribute('id', 'backoffice-environment-banner-background-color'); + if (!$oXPath->query('/itop_design/branding/themes/theme[@id="test-red"]/variables/variable[@id="backoffice-environment-banner-background-color"]')->item(0)) { + $oNodeList = $oXPath->query('/itop_design/branding/themes/theme[@id="test-red"]/variables/variable[@id="ibo-page-banner--background-color"]'); + foreach ($oNodeList as $oNode) { + $oNode->setAttribute('id', 'backoffice-environment-banner-background-color'); + } } - $oNodeList = $oXPath->query('/itop_design/branding/themes/theme[@id="test-red"]/variables/variable[@id="ibo-page-banner--text-color"]'); - foreach ($oNodeList as $oNode) { - $oNode->setAttribute('id', 'backoffice-environment-banner-text-color'); + if (!$oXPath->query('/itop_design/branding/themes/theme[@id="test-red"]/variables/variable[@id="backoffice-environment-banner-text-color"]')->item(0)) { + $oNodeList = $oXPath->query('/itop_design/branding/themes/theme[@id="test-red"]/variables/variable[@id="ibo-page-banner--text-color"]'); + foreach ($oNodeList as $oNode) { + $oNode->setAttribute('id', 'backoffice-environment-banner-text-color'); + } } - $oNodeList = $oXPath->query( '/itop_design/branding/themes/theme[@id="test-red"]/variables/variable[@id="ibo-page-banner--text-content"]'); - foreach ($oNodeList as $oNode) { - $oNode->setAttribute('id', 'backoffice-environment-banner-text-content'); + if (!$oXPath->query('/itop_design/branding/themes/theme[@id="test-red"]/variables/variable[@id="backoffice-environment-banner-text-content"]')->item(0)) { + $oNodeList = $oXPath->query('/itop_design/branding/themes/theme[@id="test-red"]/variables/variable[@id="ibo-page-banner--text-content"]'); + foreach ($oNodeList as $oNode) { + $oNode->setAttribute('id', 'backoffice-environment-banner-text-content'); + } } - $this->RemoveNodeFromXPath('/itop_design/branding/themes/theme[@id="test-red"]/stylesheets/stylesheet[@id="environment-banner"]'); - $this->RemoveNodeFromXPath('/itop_design/branding/themes/theme[@id="test-red"]/stylesheets/stylesheet[@id="fullmoon"]'); - // Add new attribute to theme import nodes $oNodeList = $oXPath->query('/itop_design/branding/themes/theme/imports/import'); @@ -1012,88 +965,12 @@ class iTopDesignFormat //nothing } - /** - * @param string $sNodeMetaVersion - * - * @return void - * @throws \Exception - */ - private function RestorePreviousNodes($sNodeMetaVersion) - { - $oXPath = new DOMXPath($this->oDocument); - $sVersion = str_replace('.', '_', $sNodeMetaVersion); - $oTrashedNodes = $oXPath->query("/itop_design/meta/previous_versions/previous_version_$sVersion/trashed_nodes/trashed_node"); - foreach ($oTrashedNodes as $oTrashedNode) { - if ($oTrashedNode->nodeType == XML_ELEMENT_NODE) { - $oXPathNode = $oXPath->query('parent_xpath', $oTrashedNode)->item(0); - $oNodeTreeNode = $oXPath->query('node_tree', $oTrashedNode)->item(0); - if (!is_null($oXPathNode) && !is_null($oNodeTreeNode)) { - $sXPath = $this->GetText($oXPathNode, ''); - $oParentNode = $oXPath->query($sXPath)->item(0); - if ($oParentNode) { - $oNode = $oNodeTreeNode->firstChild; - while ($oNode) { - $oNextNode = $oNode->nextSibling; - if ($oNode->nodeType == XML_ELEMENT_NODE) { - // Check for collision - $sId = $oNode->getAttribute('id'); - $sNodeXPath = ($sId != '') ? $oNode->nodeName.'[@id="'.$sId.'"]' : $oNode->nodeName; - $sNodeXPath = $sXPath.'/'.$sNodeXPath; - $oTarget = $oXPath->query($sNodeXPath)->item(0); - if ($oTarget) { - // Do not continue migration - throw new Exception("Trying to restore an existing node $sNodeXPath from version $sNodeMetaVersion"); - } - // Restore the modification flags - $oModifiedNodeList = $oXPath->query('descendant-or-self::*[@_disabled_delta or @_disabled_rename_from]', $oNode); - foreach ($oModifiedNodeList as $oModifiedNode) { - foreach (['_delta', '_rename_from'] as $sModificationFlag) { - $sCurrentFlag = $oNode->getAttribute('_disabled'.$sModificationFlag); - if (!empty($sCurrentFlag)) { - $oModifiedNode->setAttribute($sModificationFlag, $sCurrentFlag); - $oModifiedNode->removeAttribute('_disabled'.$sModificationFlag); - } - } - } - // Move the node back in place - $oParentNode->appendChild($oNode); - } - $oNode = $oNextNode; - } - } - } - } - } - // Clean up the mess - $this->RemoveNodeFromXPath("/itop_design/meta/previous_versions/previous_version_$sVersion", false); - $this->RemoveEmptyNodeFromXPath("/itop_design/meta/previous_versions"); - $this->RemoveEmptyNodeFromXPath("/itop_design/meta"); - } - - private function RemoveEmptyNodeFromXPath($sXPath, $bStoreThisNodeInMetaVersion = false) - { - $oXPath = new DOMXPath($this->oDocument); - $oNodeToRemove = $oXPath->query($sXPath)->item(0); - if (is_null($oNodeToRemove)) { - return; - } - $oNode = $oNodeToRemove->firstChild; - while ($oNode) { - if ($oNode->nodeType == XML_ELEMENT_NODE) { - return; - } - $oNode = $oNode->nextSibling; - } - $this->RemoveNodeFromXPath($sXPath, $bStoreThisNodeInMetaVersion); - } - /** * @param string $sPath - * @param bool $bStoreThisNodeInMetaVersion * * @return void */ - private function RemoveNodeFromXPath($sPath, $bStoreThisNodeInMetaVersion = true) + private function RemoveNodeFromXPath($sPath) { $oXPath = new DOMXPath($this->oDocument); @@ -1101,56 +978,9 @@ class iTopDesignFormat foreach ($oNodeList as $oNode) { $this->LogWarning('Node '.self::GetItopNodePath($oNode).' is irrelevant in this version, it will be removed.'); - if ($bStoreThisNodeInMetaVersion && $this->bKeepObsoleteNodes && $this->sKeepVersion) { - // Move the node to to keep it safe for backward migration - $oItopDesignNode = $this->GetOrCreateNode('/itop_design', 'itop_design', null); - $oMetaNode = $this->GetOrCreateNode('meta', 'meta', $oItopDesignNode); - $oPreviousVersionsNode = $this->GetOrCreateNode('previous_versions', 'previous_versions', $oMetaNode); - $sVersion = str_replace('.', '_', $this->sKeepVersion); - $oPreviousVersionNode = $this->GetOrCreateNode("previous_version_$sVersion", "previous_version_$sVersion", $oPreviousVersionsNode); - $oTrashedNodeList = $this->GetOrCreateNode('trashed_nodes', 'trashed_nodes', $oPreviousVersionNode); - - $iNextId = str_replace('.', '', uniqid('', true)); - $oTrashedNode = $this->GetOrCreateNode("trashed_node[@id='$iNextId']", 'trashed_node', $oTrashedNodeList); - $oTrashedNode->setAttribute('id', $iNextId); - $oTrashedNode->setAttribute('_delta', 'define'); - $oXPathNode = $this->GetOrCreateNode('parent_xpath', 'parent_xpath', $oTrashedNode); - $oParentNode = $oNode->parentNode; - if ($oParentNode instanceof DOMElement) { - $sParentXPath = static::GetNodeXPath($oParentNode); - $oXPathNode->appendChild(new DOMText($sParentXPath)); - } - $oNodeTreeNode = $this->GetOrCreateNode('node_tree', 'node_tree', $oTrashedNode); - - // Store the modification flags - $oModifiedNodeList = $oXPath->query('descendant-or-self::*[@_delta or @_rename_from]', $oNode); - foreach ($oModifiedNodeList as $oModifiedNode) { - foreach (['_delta', '_rename_from'] as $sModificationFlag) { - $sCurrentFlag = $oNode->getAttribute($sModificationFlag); - if (!empty($sCurrentFlag)) { - $oModifiedNode->setAttribute('_disabled'.$sModificationFlag, $sCurrentFlag); - $oModifiedNode->removeAttribute($sModificationFlag); - } - } - } - - $oNodeTreeNode->appendChild($oNode); - } else { $this->DeleteNode($oNode); } } - } - - private function GetOrCreateNode($sXPath, $sName, $oRootNode) - { - $oXPath = new DOMXPath($this->oDocument); - $oNode = $oXPath->query($sXPath, $oRootNode)->item(0); - if (is_null($oNode)) { - $oNode = $oRootNode->ownerDocument->createElement($sName); - $oRootNode->appendChild($oNode); - } - return $oNode; - } /** * Clean a collection node by removing the _delta="define" on it and moving it to the item nodes. @@ -1338,31 +1168,4 @@ class iTopDesignFormat return null; } - - /** - * Returns the TEXT of the current node (possibly from several child nodes) - * @param null $sDefault - * @return null|string - */ - protected function GetText($oNode, $sDefault = null) - { - $sText = null; - foreach($oNode->childNodes as $oChildNode) - { - if ($oChildNode instanceof \DOMText) - { - if (is_null($sText)) $sText = ''; - $sText .= $oChildNode->wholeText; - } - } - if (is_null($sText)) - { - return $sDefault; - } - else - { - return $sText; - } - } - } diff --git a/sources/Application/UI/Base/Component/PopoverMenu/PopoverMenuFactory.php b/sources/Application/UI/Base/Component/PopoverMenu/PopoverMenuFactory.php index 762e73933..6bb2b0ed9 100644 --- a/sources/Application/UI/Base/Component/PopoverMenu/PopoverMenuFactory.php +++ b/sources/Application/UI/Base/Component/PopoverMenu/PopoverMenuFactory.php @@ -220,7 +220,7 @@ class PopoverMenuFactory new JSPopupMenuItem( 'UI:AboutBox', Dict::S('UI:AboutBox'), - 'return ShowAboutBox();' + 'return ShowAboutBox("'.Dict::S('UI:AboutBox').'");' ) ); diff --git a/sources/Application/WebPage/AjaxPage.php b/sources/Application/WebPage/AjaxPage.php index 778a269b2..e046765d7 100644 --- a/sources/Application/WebPage/AjaxPage.php +++ b/sources/Application/WebPage/AjaxPage.php @@ -25,10 +25,17 @@ class AjaxPage extends WebPage implements iTabbedPage /** @var string */ private $sPromiseId; + /** + * @var bool if false will also output extra JS & CSS + * @since 3.0.1 3.1.0 N°4836 Introduce this new option to AjaxPage, as sometimes we only need to return a simple string + */ + protected $bOutputDataOnly = false; + /** * constructor for the web page * * @param string $s_title Not used + * @param bool $bOutputExtraResources if true will output also JS & CSS resources */ function __construct($s_title) { @@ -50,6 +57,21 @@ class AjaxPage extends WebPage implements iTabbedPage $oKpi->ComputeStats(get_class($this).' creation', 'AjaxPage'); } + /** + * @see static::$bOutputDataOnly + * @param bool $bFlag + * + * @return $this + * + * @since 3.0.1 3.1.0 N°4836 Method creation : sometimes we only want to output a simple string + */ + public function SetOutputDataOnly(bool $bFlag) + { + $this->bOutputDataOnly = $bFlag; + + return $this; + } + /** * @inheritDoc * @throws \Exception @@ -162,18 +184,19 @@ class AjaxPage extends WebPage implements iTabbedPage header($s_header); } - // Prepare internal parts (js files, css files, js snippets, css snippets, ...) - // - Generate necessary dict. files - if ($this->bAddJSDict) { - $this->output_dict_entries(); + if (false === $this->bOutputDataOnly) { + // Prepare internal parts (js files, css files, js snippets, css snippets, ...) + // - Generate necessary dict. files + if ($this->bAddJSDict) { + $this->output_dict_entries(); + } + + ConsoleBlockRenderer::AddCssJsToPage($this, $this->oContentLayout); + + $this->outputCollapsibleSectionInit(); } - ConsoleBlockRenderer::AddCssJsToPage($this, $this->oContentLayout); - // Render the blocks - - $this->outputCollapsibleSectionInit(); - $aData = []; $aData['oLayout'] = $this->oContentLayout; $aData['aDeferredBlocks'] = $this->GetDeferredBlocks($this->oContentLayout); diff --git a/sources/Controller/AjaxRenderController.php b/sources/Controller/AjaxRenderController.php index ef0b74bc1..e1a0b822c 100644 --- a/sources/Controller/AjaxRenderController.php +++ b/sources/Controller/AjaxRenderController.php @@ -873,7 +873,7 @@ EOF $oPage->add(''); $oPage->add(''); $oPage->add($sVersionString.'
'); - $oPage->add(Dict::S('UI:About:DataModel').': '.$sDataModelVersion.'
'); + //$oPage->add(Dict::S('UI:About:DataModel').': '.$sDataModelVersion.'
'); $oPage->add('MySQL: '.$sMySQLVersion.'
'); $oPage->add('PHP: '.$sPHPVersion.'
'); $oPage->add(''); diff --git a/test/setup/iTopDesignFormat/Convert-samples/1.6_to_1.7_2.expected.xml b/test/setup/iTopDesignFormat/Convert-samples/1.6_to_1.7_2.expected.xml index 217ab6703..b13de9037 100644 --- a/test/setup/iTopDesignFormat/Convert-samples/1.6_to_1.7_2.expected.xml +++ b/test/setup/iTopDesignFormat/Convert-samples/1.6_to_1.7_2.expected.xml @@ -14,24 +14,4 @@ service_id AND child.id= :this->org_id AND slt.request_type = :request_type AND slt.priority = :this->priority]]> - - - - - - /itop_design/constants - - - - - - /itop_design/constants - - - - - - - - diff --git a/test/setup/iTopDesignFormat/Convert-samples/1.7_to_1.6_2.expected.xml b/test/setup/iTopDesignFormat/Convert-samples/1.7_to_1.6_2.expected.xml index 673f9865b..f283afe4a 100644 --- a/test/setup/iTopDesignFormat/Convert-samples/1.7_to_1.6_2.expected.xml +++ b/test/setup/iTopDesignFormat/Convert-samples/1.7_to_1.6_2.expected.xml @@ -13,7 +13,5 @@ service_id AND child.id= :this->org_id AND slt.request_type = :request_type AND slt.priority = :this->priority]]> - - diff --git a/test/setup/iTopDesignFormat/Convert-samples/1.7_to_1.6_2.input.xml b/test/setup/iTopDesignFormat/Convert-samples/1.7_to_1.6_2.input.xml index 9437b2f80..b13de9037 100644 --- a/test/setup/iTopDesignFormat/Convert-samples/1.7_to_1.6_2.input.xml +++ b/test/setup/iTopDesignFormat/Convert-samples/1.7_to_1.6_2.input.xml @@ -14,24 +14,4 @@ service_id AND child.id= :this->org_id AND slt.request_type = :request_type AND slt.priority = :this->priority]]> - - - - - - /itop_design/constants - - - - - - /itop_design/constants - - - - - - - - diff --git a/test/setup/iTopDesignFormat/Convert-samples/1.7_to_3.0.expected.xml b/test/setup/iTopDesignFormat/Convert-samples/1.7_to_3.0.expected.xml index 2cfa47187..b11e6ed7d 100644 --- a/test/setup/iTopDesignFormat/Convert-samples/1.7_to_3.0.expected.xml +++ b/test/setup/iTopDesignFormat/Convert-samples/1.7_to_3.0.expected.xml @@ -8,12 +8,23 @@ #C53030 + ../css/css-variables.scss ../css/scss-variables.scss + ../css/ui-lightness/jqueryui.scss + ../css/main.scss ../css/custom.scss - ../css/backoffice/themes/page-banner.scss - ../css/backoffice/main.scss + + + + + + ../css/css-variables.scss + + + ../css/ui-lightness/jqueryui.scss + ../css/light-grey.scss @@ -108,45 +119,4 @@ - - - - - - /itop_design/branding/themes - - - - - ../css/css-variables.scss - - - ../css/ui-lightness/jqueryui.scss - ../css/light-grey.scss - - - - - - /itop_design/branding/themes/theme[@id="test-red"]/imports - - ../css/css-variables.scss - - - - /itop_design/branding/themes/theme[@id="test-red"]/stylesheets - - ../css/ui-lightness/jqueryui.scss - - - - /itop_design/branding/themes/theme[@id="test-red"]/stylesheets - - ../css/main.scss - - - - - - diff --git a/test/setup/iTopDesignFormat/Convert-samples/3.0_to_1.7.expected.xml b/test/setup/iTopDesignFormat/Convert-samples/3.0_to_1.7.expected.xml index 68499ba8c..06929f52a 100644 --- a/test/setup/iTopDesignFormat/Convert-samples/3.0_to_1.7.expected.xml +++ b/test/setup/iTopDesignFormat/Convert-samples/3.0_to_1.7.expected.xml @@ -9,22 +9,9 @@ ../css/scss-variables.scss - ../css/css-variables.scss ../css/custom.scss - ../css/ui-lightness/jqueryui.scss - ../css/main.scss - - - - - - ../css/css-variables.scss - - - ../css/ui-lightness/jqueryui.scss - ../css/light-grey.scss @@ -91,4 +78,45 @@ images/itop-logo.png + + + + + + /itop_design/branding/themes + + + + + ../css/css-variables.scss + + + ../css/ui-lightness/jqueryui.scss + ../css/light-grey.scss + + + + + + /itop_design/branding/themes/theme[@id="test-red"]/imports + + ../css/css-variables.scss + + + + /itop_design/branding/themes/theme[@id="test-red"]/stylesheets + + ../css/ui-lightness/jqueryui.scss + + + + /itop_design/branding/themes/theme[@id="test-red"]/stylesheets + + ../css/main.scss + + + + + + diff --git a/test/setup/iTopDesignFormat/Convert-samples/3.0_to_1.7_collision.expected.xml b/test/setup/iTopDesignFormat/Convert-samples/3.0_to_1.7_collision.expected.xml deleted file mode 100644 index 641be65ab..000000000 --- a/test/setup/iTopDesignFormat/Convert-samples/3.0_to_1.7_collision.expected.xml +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - #C53030 - #C53030 - - - ../css/scss-variables.scss - - - ../css/custom.scss - - - - - bla bla bla - - - - - - - - images/class-with-lifecycle.png - - - - - images/class-with-lifecycle.png - - - foo - - - - - images/class-with-lifecycle.png - - - - - images/class-with-lifecycle.png - - - - - - - - - - - true - - new - waiting_for_approval - - - - - ongoing - resolved - - - - - - - - 100 - WelcomeMenu - $$http://fr.wikipedia.org/ - true - - - 30 - - - - - images/itop-logo.png - - - - - - - /itop_design/branding/themes - - - - - ../css/css-variables.scss - - - ../css/ui-lightness/jqueryui.scss - ../css/light-grey.scss - - - - - - /itop_design/branding/themes/theme[@id="test-red"]/imports - - ../css/css-variables.scss - - - - /itop_design/branding/themes/theme[@id="test-red"]/stylesheets - - ../css/ui-lightness/jqueryui.scss - - - - /itop_design/branding/themes/theme[@id="test-red"]/stylesheets - - ../css/main.scss - - - - - - - diff --git a/test/setup/iTopDesignFormat/Convert-samples/3.0_to_1.7_collision.input.xml b/test/setup/iTopDesignFormat/Convert-samples/3.0_to_1.7_collision.input.xml deleted file mode 100644 index 1e185acab..000000000 --- a/test/setup/iTopDesignFormat/Convert-samples/3.0_to_1.7_collision.input.xml +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - #C53030 - #C53030 - - - ../css/scss-variables.scss - - - ../css/custom.scss - - - - - bla bla bla - - - - - - - - - - foo - - - - - - - - foo - - - - - - - - - foo - bar - - - - - - - - bar - - - - - - - - - - true - - - new - - - - waiting_for_approval - - - - #2B6CB0 - #FFFFFF - - - - - - - ongoing - - - - resolved - - - - #2B6CB0 - #FFFFFF - - - - - - - - - 100 - WelcomeMenu - $$http://fr.wikipedia.org/ - true - - - 30 - - - - - - images/itop-logo.png - images/itop-logo-square.png - - - - - - - /itop_design/branding/themes - - - - - ../css/css-variables.scss - - - ../css/ui-lightness/jqueryui.scss - ../css/light-grey.scss - - - - - - /itop_design/branding/themes/theme[@id="test-red"]/imports - - ../css/css-variables.scss - - - - /itop_design/branding/themes/theme[@id="test-red"]/stylesheets - - ../css/ui-lightness/jqueryui.scss - - - - /itop_design/branding/themes/theme[@id="test-red"]/stylesheets - - ../css/main.scss - - - - - - - diff --git a/test/setup/iTopDesignFormat/Convert-samples/3.0_to_1.7_no_previous.expected.xml b/test/setup/iTopDesignFormat/Convert-samples/3.0_to_1.7_no_previous.expected.xml deleted file mode 100644 index 9ced4254b..000000000 --- a/test/setup/iTopDesignFormat/Convert-samples/3.0_to_1.7_no_previous.expected.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - #C53030 - #C53030 - - - ../css/scss-variables.scss - - - ../css/custom.scss - - - - - - - - images/class-with-lifecycle.png - - - - - images/class-with-lifecycle.png - - - foo - - - - - images/class-with-lifecycle.png - - - - - images/class-with-lifecycle.png - - - - - - - - - - - true - - new - waiting_for_approval - - - - - ongoing - resolved - - - - - - - - 100 - WelcomeMenu - $$http://fr.wikipedia.org/ - true - - - 30 - - - - - images/itop-logo.png - - diff --git a/test/setup/iTopDesignFormat/Convert-samples/3.0_to_1.7_no_previous.input.xml b/test/setup/iTopDesignFormat/Convert-samples/3.0_to_1.7_no_previous.input.xml deleted file mode 100644 index 56bc62c19..000000000 --- a/test/setup/iTopDesignFormat/Convert-samples/3.0_to_1.7_no_previous.input.xml +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - #C53030 - #C53030 - - - ../css/scss-variables.scss - - - ../css/custom.scss - - - - - - - - - - foo - - - - - - - - foo - - - - - - - - - foo - bar - - - - - - - - bar - - - - - - - - - - true - - - new - - - - waiting_for_approval - - - - #2B6CB0 - #FFFFFF - - - - - - - ongoing - - - - resolved - - - - #2B6CB0 - #FFFFFF - - - - - - - - - 100 - WelcomeMenu - $$http://fr.wikipedia.org/ - true - - - 30 - - - - - - images/itop-logo.png - images/itop-logo-square.png - - diff --git a/test/setup/iTopDesignFormat/Convert-samples/Bug_4569.expected.xml b/test/setup/iTopDesignFormat/Convert-samples/Bug_4569.expected.xml new file mode 100644 index 000000000..a23ab66e0 --- /dev/null +++ b/test/setup/iTopDesignFormat/Convert-samples/Bug_4569.expected.xml @@ -0,0 +1,57 @@ + + + + + + + SELECT Person WHERE + (org_id=:this->org_id + AND + (:current_user->id NOT IN (SELECT User AS u + JOIN URP_UserProfile AS uup ON uup.userid=u.id + JOIN URP_Profiles AS up ON uup.profileid=up.id + WHERE up.name='Portal user' AND u.id = :current_user->id + ) + OR :current_user->id IN (SELECT User AS u + JOIN URP_UserProfile AS uup ON uup.userid=u.id + JOIN URP_Profiles AS up ON uup.profileid=up.id + WHERE up.name='Portal power user' AND u.id = :current_user->id + ) + ) + ) + OR (org_id=:this->org_id AND id=:current_contact_id) + + + + + + + Vincent5.png + image/png + 180 + 54 + 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 + + + + + + + + + + #8a765c + lighten($brand-primary,50%) + $frame-background-color + #996633 + darken($complement-color,15%) + darken($complement-color,15%) + darken($complement-color,15%) + lighten(#dac292,15%) + $complement-light + hue-rotate(42deg) + + + + + diff --git a/test/setup/iTopDesignFormat/Convert-samples/Bug_4569.input.xml b/test/setup/iTopDesignFormat/Convert-samples/Bug_4569.input.xml new file mode 100644 index 000000000..e968b8677 --- /dev/null +++ b/test/setup/iTopDesignFormat/Convert-samples/Bug_4569.input.xml @@ -0,0 +1,57 @@ + + + + + + + SELECT Person WHERE + (org_id=:this->org_id + AND + (:current_user->id NOT IN (SELECT User AS u + JOIN URP_UserProfile AS uup ON uup.userid=u.id + JOIN URP_Profiles AS up ON uup.profileid=up.id + WHERE up.name='Portal user' AND u.id = :current_user->id + ) + OR :current_user->id IN (SELECT User AS u + JOIN URP_UserProfile AS uup ON uup.userid=u.id + JOIN URP_Profiles AS up ON uup.profileid=up.id + WHERE up.name='Portal power user' AND u.id = :current_user->id + ) + ) + ) + OR (org_id=:this->org_id AND id=:current_contact_id) + + + + + + + Vincent5.png + image/png + 180 + 54 + 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 + + + + + + + + + + #8a765c + lighten($brand-primary,50%) + $frame-background-color + #996633 + darken($complement-color,15%) + darken($complement-color,15%) + darken($complement-color,15%) + lighten(#dac292,15%) + $complement-light + hue-rotate(42deg) + + + + + diff --git a/test/setup/iTopDesignFormat/iTopDesignFormatTest.php b/test/setup/iTopDesignFormat/iTopDesignFormatTest.php index 3de9988b2..d302dd2fd 100644 --- a/test/setup/iTopDesignFormat/iTopDesignFormatTest.php +++ b/test/setup/iTopDesignFormat/iTopDesignFormatTest.php @@ -64,13 +64,12 @@ class TestForITopDesignFormatClass extends ItopTestCase public function ConvertProvider() { return [ + 'Bug_4569' => ['1.7', 'Bug_4569'], '1.7 to 1.6' => ['1.6', '1.7_to_1.6'], '1.6 to 1.7 2' => ['1.7', '1.6_to_1.7_2'], '1.7 to 1.6 2' => ['1.6', '1.7_to_1.6_2'], '1.7 to 3.0' => ['3.0', '1.7_to_3.0'], '3.0 to 1.7' => ['1.7', '3.0_to_1.7'], - '3.0 to 1.7 no previous' => ['1.7', '3.0_to_1.7_no_previous'], - '3.0 to 1.7 collision' => ['1.7', '3.0_to_1.7_collision', 1, 'Trying to restore an existing node /itop_design/branding/themes/theme[@id="light-grey"] from version 1.7'], ]; } @@ -120,11 +119,9 @@ class TestForITopDesignFormatClass extends ItopTestCase public function ConvertBackAndForthProvider() { - return array( - '1.6 to 1.7' => array('1.7', '1.6_to_1.7_2'), - '1.6 to 3.0' => array('3.0', '1.6_to_1.7_2'), - '1.7 to 3.0' => array('3.0', '1.7'), - ); + return [ + '1.7 to 3.0' => ['3.0', '1.7'], + ]; } /** diff --git a/test/status/StatusTest.php b/test/status/StatusTest.php index 351a3e38d..9823d93f9 100644 --- a/test/status/StatusTest.php +++ b/test/status/StatusTest.php @@ -49,20 +49,14 @@ class StatusTest extends ItopTestCase $aResponseDecoded = json_decode($aOutput[0], true); //Check status - $this->assertArrayHasKey('status', $aResponseDecoded, 'JSON does not have a status\' field. '.$sAdditionalInfo); + $this->assertArrayHasKey('status', $aResponseDecoded, 'JSON does not have a \'status\' field. '.$sAdditionalInfo); $this->assertEquals('RUNNING', $aResponseDecoded['status'], 'Status is not \'RUNNING\'. '.$sAdditionalInfo); //Check code - $this->assertArrayHasKey('code', $aResponseDecoded, 'JSON does not have a code\' field. '.$sAdditionalInfo); + $this->assertArrayHasKey('code', $aResponseDecoded, 'JSON does not have a \'code\' field. '.$sAdditionalInfo); $this->assertEquals(0, $aResponseDecoded['code'], 'Code is not 0. '.$sAdditionalInfo); //Check message - $this->assertArrayHasKey('message', $aResponseDecoded, 'JSON does not have a message\' field. '.$sAdditionalInfo); + $this->assertArrayHasKey('message', $aResponseDecoded, 'JSON does not have a \'message\' field. '.$sAdditionalInfo); $this->assertEmpty($aResponseDecoded['message'], 'Message is not empty. '.$sAdditionalInfo); - //Check product - $this->assertArrayHasKey('product', $aResponseDecoded, 'JSON does not have a product\' field. '.$sAdditionalInfo); - $this->assertEquals(ITOP_APPLICATION, $aResponseDecoded['product'], 'Bad product (should be: '.ITOP_APPLICATION.') '.$sAdditionalInfo); - //Check version - $this->assertArrayHasKey('version', $aResponseDecoded, 'JSON does not have a version\' field. '.$sAdditionalInfo); - $this->assertEquals(ITOP_VERSION, $aResponseDecoded['version'], 'Bad version (should be: '.ITOP_VERSION.') '.$sAdditionalInfo); } } diff --git a/webservices/status.php b/webservices/status.php index 69432370b..636ab4ec6 100644 --- a/webservices/status.php +++ b/webservices/status.php @@ -9,12 +9,12 @@ use Combodo\iTop\Application\Status\Status; try { new Status(); - $aResult = ['status' => STATUS_RUNNING, 'code' => RestResult::OK, 'message' => '', 'product' => ITOP_APPLICATION, 'version' => ITOP_VERSION]; + $aResult = ['status' => STATUS_RUNNING, 'code' => RestResult::OK, 'message' => '']; } catch (Exception $e) { $iCode = (defined('\RestResult::INTERNAL_ERROR')) ? RestResult::INTERNAL_ERROR : 100; - $aResult = ['status' => STATUS_ERROR, 'code' => $iCode, 'message' => $e->getMessage(), 'product' => ITOP_APPLICATION, 'version' => ITOP_VERSION]; + $aResult = ['status' => STATUS_ERROR, 'code' => $iCode, 'message' => $e->getMessage()]; http_response_code(500); }