mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-12 23:14:18 +01:00
Merge remote-tracking branch 'origin/support/3.2' into develop
# Conflicts: # core/kpi.class.inc.php # datamodels/2.x/itop-profiles-itil/datamodel.itop-profiles-itil.xml
This commit is contained in:
@@ -5020,7 +5020,7 @@ class AttributeCaseLog extends AttributeLongText
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (strlen($proposedValue) > 0)
|
if (utils::StrLen($proposedValue) > 0)
|
||||||
{
|
{
|
||||||
//N°5135 - add impersonation information in caselog
|
//N°5135 - add impersonation information in caselog
|
||||||
if (UserRights::IsImpersonated()){
|
if (UserRights::IsImpersonated()){
|
||||||
|
|||||||
@@ -2120,6 +2120,8 @@ class StimulusChecker extends ActionChecker
|
|||||||
{
|
{
|
||||||
var $sState = null;
|
var $sState = null;
|
||||||
|
|
||||||
|
public mixed $iState = null;
|
||||||
|
|
||||||
public function __construct(DBSearch $oFilter, $sState, $iStimulusCode)
|
public function __construct(DBSearch $oFilter, $sState, $iStimulusCode)
|
||||||
{
|
{
|
||||||
parent::__construct($oFilter, $iStimulusCode);
|
parent::__construct($oFilter, $iStimulusCode);
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
|||||||
'Class:Change/Stimulus:ev_approve+' => '',
|
'Class:Change/Stimulus:ev_approve+' => '',
|
||||||
'Class:Change/Stimulus:ev_replan' => 'Replan',
|
'Class:Change/Stimulus:ev_replan' => 'Replan',
|
||||||
'Class:Change/Stimulus:ev_replan+' => '',
|
'Class:Change/Stimulus:ev_replan+' => '',
|
||||||
'Class:Change/Stimulus:ev_notapprove' => 'Reject',
|
'Class:Change/Stimulus:ev_notapprove' => 'Reject approval',
|
||||||
'Class:Change/Stimulus:ev_notapprove+' => '',
|
'Class:Change/Stimulus:ev_notapprove+' => '',
|
||||||
'Class:Change/Stimulus:ev_implement' => 'Implement',
|
'Class:Change/Stimulus:ev_implement' => 'Implement',
|
||||||
'Class:Change/Stimulus:ev_implement+' => '',
|
'Class:Change/Stimulus:ev_implement+' => '',
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ Dict::Add('EN GB', 'British English', 'British English', array(
|
|||||||
'Class:Change/Stimulus:ev_approve+' => '',
|
'Class:Change/Stimulus:ev_approve+' => '',
|
||||||
'Class:Change/Stimulus:ev_replan' => 'Replan',
|
'Class:Change/Stimulus:ev_replan' => 'Replan',
|
||||||
'Class:Change/Stimulus:ev_replan+' => '',
|
'Class:Change/Stimulus:ev_replan+' => '',
|
||||||
'Class:Change/Stimulus:ev_notapprove' => 'Reject',
|
'Class:Change/Stimulus:ev_notapprove' => 'Reject approval',
|
||||||
'Class:Change/Stimulus:ev_notapprove+' => '',
|
'Class:Change/Stimulus:ev_notapprove+' => '',
|
||||||
'Class:Change/Stimulus:ev_implement' => 'Implement',
|
'Class:Change/Stimulus:ev_implement' => 'Implement',
|
||||||
'Class:Change/Stimulus:ev_implement+' => '',
|
'Class:Change/Stimulus:ev_implement+' => '',
|
||||||
|
|||||||
@@ -139,7 +139,7 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', array(
|
|||||||
'Class:Change/Stimulus:ev_approve+' => '~~',
|
'Class:Change/Stimulus:ev_approve+' => '~~',
|
||||||
'Class:Change/Stimulus:ev_replan' => 'Replan~~',
|
'Class:Change/Stimulus:ev_replan' => 'Replan~~',
|
||||||
'Class:Change/Stimulus:ev_replan+' => '~~',
|
'Class:Change/Stimulus:ev_replan+' => '~~',
|
||||||
'Class:Change/Stimulus:ev_notapprove' => 'Reject~~',
|
'Class:Change/Stimulus:ev_notapprove' => 'Reject approval~~',
|
||||||
'Class:Change/Stimulus:ev_notapprove+' => '~~',
|
'Class:Change/Stimulus:ev_notapprove+' => '~~',
|
||||||
'Class:Change/Stimulus:ev_implement' => 'Implement~~',
|
'Class:Change/Stimulus:ev_implement' => 'Implement~~',
|
||||||
'Class:Change/Stimulus:ev_implement+' => '~~',
|
'Class:Change/Stimulus:ev_implement+' => '~~',
|
||||||
|
|||||||
@@ -323,8 +323,8 @@ Dict::Add('FR FR', 'French', 'Français', array(
|
|||||||
'Class:NetworkDevice/Attribute:networkdevicetype_id+' => '',
|
'Class:NetworkDevice/Attribute:networkdevicetype_id+' => '',
|
||||||
'Class:NetworkDevice/Attribute:networkdevicetype_name' => 'Nom Type',
|
'Class:NetworkDevice/Attribute:networkdevicetype_name' => 'Nom Type',
|
||||||
'Class:NetworkDevice/Attribute:networkdevicetype_name+' => '',
|
'Class:NetworkDevice/Attribute:networkdevicetype_name+' => '',
|
||||||
'Class:NetworkDevice/Attribute:connectablecis_list' => 'Matériel connectés',
|
'Class:NetworkDevice/Attribute:connectablecis_list' => 'Matériel connecté',
|
||||||
'Class:NetworkDevice/Attribute:connectablecis_list+' => 'Tous les matériels connectés à cet appareil réseau',
|
'Class:NetworkDevice/Attribute:connectablecis_list+' => 'Tous les équipements connectés à cet appareil réseau',
|
||||||
'Class:NetworkDevice/Attribute:iosversion_id' => 'Version IOS',
|
'Class:NetworkDevice/Attribute:iosversion_id' => 'Version IOS',
|
||||||
'Class:NetworkDevice/Attribute:iosversion_id+' => '',
|
'Class:NetworkDevice/Attribute:iosversion_id+' => '',
|
||||||
'Class:NetworkDevice/Attribute:iosversion_name' => 'Nom Version IOS',
|
'Class:NetworkDevice/Attribute:iosversion_name' => 'Nom Version IOS',
|
||||||
@@ -1597,7 +1597,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
|
|||||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:network_port+' => '',
|
'Class:lnkConnectableCIToNetworkDevice/Attribute:network_port+' => '',
|
||||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:device_port' => 'Port matériel',
|
'Class:lnkConnectableCIToNetworkDevice/Attribute:device_port' => 'Port matériel',
|
||||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:device_port+' => '',
|
'Class:lnkConnectableCIToNetworkDevice/Attribute:device_port+' => '',
|
||||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type' => 'Type de connection',
|
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type' => 'Type de connexion',
|
||||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type+' => '',
|
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type+' => '',
|
||||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type/Value:downlink' => 'lien descendant',
|
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type/Value:downlink' => 'lien descendant',
|
||||||
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type/Value:downlink+' => 'lien descendant',
|
'Class:lnkConnectableCIToNetworkDevice/Attribute:connection_type/Value:downlink+' => 'lien descendant',
|
||||||
|
|||||||
@@ -247,8 +247,10 @@
|
|||||||
<db_key_field>link_id</db_key_field>
|
<db_key_field>link_id</db_key_field>
|
||||||
<db_final_class_field/>
|
<db_final_class_field/>
|
||||||
<naming>
|
<naming>
|
||||||
<attributes id="error_name"/>
|
<attributes>
|
||||||
<attributes id="functionalci_name"/>
|
<attribute id="error_name"/>
|
||||||
|
<attribute id="functionalci_name"/>
|
||||||
|
</attributes>
|
||||||
</naming>
|
</naming>
|
||||||
<style>
|
<style>
|
||||||
<icon/>
|
<icon/>
|
||||||
|
|||||||
@@ -21,6 +21,8 @@
|
|||||||
namespace Combodo\iTop\Portal\Brick;
|
namespace Combodo\iTop\Portal\Brick;
|
||||||
|
|
||||||
use Combodo\iTop\DesignElement;
|
use Combodo\iTop\DesignElement;
|
||||||
|
use Combodo\iTop\Portal\Service\TemplatesProvider\TemplateDefinitionDto;
|
||||||
|
use Combodo\iTop\Portal\Service\TemplatesProvider\TemplatesRegister;
|
||||||
use DOMFormatException;
|
use DOMFormatException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -46,6 +48,17 @@ class CreateBrick extends PortalBrick
|
|||||||
/** @var array $aRules */
|
/** @var array $aRules */
|
||||||
protected $aRules;
|
protected $aRules;
|
||||||
|
|
||||||
|
const DEFAULT_PAGE_TEMPLATE_PATH = 'itop-portal-base/portal/templates/bricks/create/modal.html.twig';
|
||||||
|
|
||||||
|
/** @inheritdoc */
|
||||||
|
public static function RegisterTemplates(TemplatesRegister $oTemplatesRegister): void
|
||||||
|
{
|
||||||
|
parent::RegisterTemplates($oTemplatesRegister);
|
||||||
|
$oTemplatesRegister->RegisterTemplates(self::class,
|
||||||
|
TemplateDefinitionDto::Create('page', static::TEMPLATES_BASE_PATH . 'create/modal.html.twig')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -359,7 +359,8 @@ class ObjectFormManager extends FormManager
|
|||||||
foreach ($this->aFieldsAtts as $sAttCode => $iFieldFlags)
|
foreach ($this->aFieldsAtts as $sAttCode => $iFieldFlags)
|
||||||
{
|
{
|
||||||
// handle plugins fields
|
// handle plugins fields
|
||||||
if(array_key_exists($sAttCode, $this->aExtraData)
|
if($this->sMode !== 'apply_stimulus'
|
||||||
|
&& array_key_exists($sAttCode, $this->aExtraData)
|
||||||
&& array_key_exists('plugin', $this->aExtraData[$sAttCode])){
|
&& array_key_exists('plugin', $this->aExtraData[$sAttCode])){
|
||||||
$sPluginName = $this->aExtraData[$sAttCode]['plugin'];
|
$sPluginName = $this->aExtraData[$sAttCode]['plugin'];
|
||||||
switch($sPluginName){
|
switch($sPluginName){
|
||||||
@@ -713,7 +714,8 @@ class ObjectFormManager extends FormManager
|
|||||||
|
|
||||||
// fallback Checking if the instance has attachments
|
// fallback Checking if the instance has attachments
|
||||||
// (in case attachment is not explicitly declared in layout)
|
// (in case attachment is not explicitly declared in layout)
|
||||||
if (class_exists('Attachment') && class_exists('AttachmentPlugIn')
|
if ($this->sMode !== 'apply_stimulus'
|
||||||
|
&& class_exists('Attachment') && class_exists('AttachmentPlugIn')
|
||||||
&& !$this->IsPluginInitialized(AttachmentPlugIn::class)
|
&& !$this->IsPluginInitialized(AttachmentPlugIn::class)
|
||||||
&& AttachmentPlugIn::IsAttachmentAllowedForObject($this->oObject)){
|
&& AttachmentPlugIn::IsAttachmentAllowedForObject($this->oObject)){
|
||||||
$this->AddAttachmentField($this->oForm, 'attachments_plugin', $this->aExtraData);
|
$this->AddAttachmentField($this->oForm, 'attachments_plugin', $this->aExtraData);
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
{# itop-portal-base/portal/templates/bricks/create/layout.html.twig #}
|
||||||
|
{# Create brick base layout #}
|
||||||
|
{% extends 'itop-portal-base/portal/templates/modal/layout.html.twig' %}
|
||||||
|
|
||||||
|
{% block pModalTitle %}
|
||||||
|
{{ sPageTitle|dict_s }}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block pModalBody %}
|
||||||
|
<p>{{ 'Brick:Portal:Create:ChooseType'|dict_s }}</p>
|
||||||
|
<ul id="{{ sLeafClassesListId }}">
|
||||||
|
{% for aLeafClass in aLeafClasses %}
|
||||||
|
<li><a href="#" data-target-class="{{ aLeafClass.id }}">{{ aLeafClass.name }}</a></li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(document).ready(function(){
|
||||||
|
$('#{{ sLeafClassesListId }} a').off('click').on('click', function(oEvent){
|
||||||
|
oEvent.preventDefault();
|
||||||
|
|
||||||
|
// Preparing target class url
|
||||||
|
var sUrl = '{{ app['url_generator'].generate('p_object_create', {sObjectClass : '-sObjectClass-'})|raw }}';
|
||||||
|
sUrl = sUrl.replace(/-sObjectClass-/, $(this).attr('data-target-class') );
|
||||||
|
sUrl = CombodoGlobalToolbox.AddParameterToUrl(sUrl, 'ar_token', '{{ ar_token }}');
|
||||||
|
|
||||||
|
// Creating a new modal
|
||||||
|
CombodoModal.OpenModal({
|
||||||
|
base_modal: {
|
||||||
|
usage: 'replace',
|
||||||
|
selector: $(this).closest('.modal'),
|
||||||
|
},
|
||||||
|
content: {
|
||||||
|
endpoint: sUrl,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block pModalFooter %}
|
||||||
|
<button type="button" class="btn btn-default" data-dismiss="modal">{{ 'Portal:Button:Cancel'|dict_s }}</button>
|
||||||
|
{% endblock %}
|
||||||
@@ -199,7 +199,7 @@
|
|||||||
<profiles>
|
<profiles>
|
||||||
<profile id="117" _delta="define">
|
<profile id="117" _delta="define">
|
||||||
<name>SuperUser</name>
|
<name>SuperUser</name>
|
||||||
<description>This profil allows all actions which are not Administrator restricted.</description>
|
<description>This profile allows all actions which are not Administrator restricted.</description>
|
||||||
<groups>
|
<groups>
|
||||||
<group id="AdminTools">
|
<group id="AdminTools">
|
||||||
<actions>
|
<actions>
|
||||||
@@ -268,6 +268,11 @@
|
|||||||
<action id="stimulus:ev_plan">allow</action>
|
<action id="stimulus:ev_plan">allow</action>
|
||||||
<action id="stimulus:ev_reject">allow</action>
|
<action id="stimulus:ev_reject">allow</action>
|
||||||
<action id="stimulus:ev_reopen">allow</action>
|
<action id="stimulus:ev_reopen">allow</action>
|
||||||
|
<action id="stimulus:ev_validate">allow</action>
|
||||||
|
<action id="stimulus:ev_notapprove">allow</action>
|
||||||
|
<action id="stimulus:ev_replan">allow</action>
|
||||||
|
<action id="stimulus:ev_implement">allow</action>
|
||||||
|
<action id="stimulus:ev_monitor">allow</action>
|
||||||
</actions>
|
</actions>
|
||||||
</group>
|
</group>
|
||||||
<group id="Problem">
|
<group id="Problem">
|
||||||
|
|||||||
@@ -935,7 +935,7 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array(
|
|||||||
'Class:SynchroAttLinkSet' => 'Synchro Attribut (Linksæt)',
|
'Class:SynchroAttLinkSet' => 'Synchro Attribut (Linksæt)',
|
||||||
'Class:SynchroAttLinkSet/Attribute:row_separator' => 'Række separator',
|
'Class:SynchroAttLinkSet/Attribute:row_separator' => 'Række separator',
|
||||||
'Class:SynchroAttLinkSet/Attribute:attribute_separator' => 'Attribut separator',
|
'Class:SynchroAttLinkSet/Attribute:attribute_separator' => 'Attribut separator',
|
||||||
'Class:SynchroLog' => 'Synchr Log',
|
'Class:SynchroLog' => 'Synchro Log',
|
||||||
'Class:SynchroLog/Attribute:sync_source_id' => 'Synchro Data Kilde',
|
'Class:SynchroLog/Attribute:sync_source_id' => 'Synchro Data Kilde',
|
||||||
'Class:SynchroLog/Attribute:start_date' => 'Start Dato',
|
'Class:SynchroLog/Attribute:start_date' => 'Start Dato',
|
||||||
'Class:SynchroLog/Attribute:end_date' => 'Slut Dato',
|
'Class:SynchroLog/Attribute:end_date' => 'Slut Dato',
|
||||||
|
|||||||
@@ -1018,7 +1018,7 @@ The hyperlink is displayed in the tooltip appearing on the “Lock” symbol of
|
|||||||
'Class:SynchroAttLinkSet' => 'Synchro Attribute (Linkset)',
|
'Class:SynchroAttLinkSet' => 'Synchro Attribute (Linkset)',
|
||||||
'Class:SynchroAttLinkSet/Attribute:row_separator' => 'Rows separator',
|
'Class:SynchroAttLinkSet/Attribute:row_separator' => 'Rows separator',
|
||||||
'Class:SynchroAttLinkSet/Attribute:attribute_separator' => 'Attributes separator',
|
'Class:SynchroAttLinkSet/Attribute:attribute_separator' => 'Attributes separator',
|
||||||
'Class:SynchroLog' => 'Synchr Log',
|
'Class:SynchroLog' => 'Synchro Log',
|
||||||
'Class:SynchroLog/Attribute:sync_source_id' => 'Synchro Data Source',
|
'Class:SynchroLog/Attribute:sync_source_id' => 'Synchro Data Source',
|
||||||
'Class:SynchroLog/Attribute:start_date' => 'Start Date',
|
'Class:SynchroLog/Attribute:start_date' => 'Start Date',
|
||||||
'Class:SynchroLog/Attribute:end_date' => 'End Date',
|
'Class:SynchroLog/Attribute:end_date' => 'End Date',
|
||||||
|
|||||||
@@ -1001,7 +1001,7 @@ The hyperlink is displayed in the tooltip appearing on the “Lock” symbol of
|
|||||||
'Class:SynchroAttLinkSet' => 'Synchro Attribute (Linkset)',
|
'Class:SynchroAttLinkSet' => 'Synchro Attribute (Linkset)',
|
||||||
'Class:SynchroAttLinkSet/Attribute:row_separator' => 'Rows separator',
|
'Class:SynchroAttLinkSet/Attribute:row_separator' => 'Rows separator',
|
||||||
'Class:SynchroAttLinkSet/Attribute:attribute_separator' => 'Attributes separator',
|
'Class:SynchroAttLinkSet/Attribute:attribute_separator' => 'Attributes separator',
|
||||||
'Class:SynchroLog' => 'Synchr Log',
|
'Class:SynchroLog' => 'Synchro Log',
|
||||||
'Class:SynchroLog/Attribute:sync_source_id' => 'Synchro Data Source',
|
'Class:SynchroLog/Attribute:sync_source_id' => 'Synchro Data Source',
|
||||||
'Class:SynchroLog/Attribute:start_date' => 'Start Date',
|
'Class:SynchroLog/Attribute:start_date' => 'Start Date',
|
||||||
'Class:SynchroLog/Attribute:end_date' => 'End Date',
|
'Class:SynchroLog/Attribute:end_date' => 'End Date',
|
||||||
|
|||||||
@@ -935,7 +935,7 @@ Dict::Add('RU RU', 'Russian', 'Русский', array(
|
|||||||
'Class:SynchroAttLinkSet' => 'Synchro Attribute (Linkset)~~',
|
'Class:SynchroAttLinkSet' => 'Synchro Attribute (Linkset)~~',
|
||||||
'Class:SynchroAttLinkSet/Attribute:row_separator' => 'Разделитель строк',
|
'Class:SynchroAttLinkSet/Attribute:row_separator' => 'Разделитель строк',
|
||||||
'Class:SynchroAttLinkSet/Attribute:attribute_separator' => 'Разделитель атрибутов',
|
'Class:SynchroAttLinkSet/Attribute:attribute_separator' => 'Разделитель атрибутов',
|
||||||
'Class:SynchroLog' => 'Synchr Log~~',
|
'Class:SynchroLog' => 'Synchro Log~~',
|
||||||
'Class:SynchroLog/Attribute:sync_source_id' => 'Синх.исходные данные',
|
'Class:SynchroLog/Attribute:sync_source_id' => 'Синх.исходные данные',
|
||||||
'Class:SynchroLog/Attribute:start_date' => 'Стартовать в',
|
'Class:SynchroLog/Attribute:start_date' => 'Стартовать в',
|
||||||
'Class:SynchroLog/Attribute:end_date' => 'Закончить в',
|
'Class:SynchroLog/Attribute:end_date' => 'Закончить в',
|
||||||
|
|||||||
@@ -935,7 +935,7 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array(
|
|||||||
'Class:SynchroAttLinkSet' => 'Synchro niteliği (LinkSet)',
|
'Class:SynchroAttLinkSet' => 'Synchro niteliği (LinkSet)',
|
||||||
'Class:SynchroAttLinkSet/Attribute:row_separator' => 'Satır Ayırıcı',
|
'Class:SynchroAttLinkSet/Attribute:row_separator' => 'Satır Ayırıcı',
|
||||||
'Class:SynchroAttLinkSet/Attribute:attribute_separator' => 'Nitelik Ayırıcı',
|
'Class:SynchroAttLinkSet/Attribute:attribute_separator' => 'Nitelik Ayırıcı',
|
||||||
'Class:SynchroLog' => 'Synchr log',
|
'Class:SynchroLog' => 'Synchro Log',
|
||||||
'Class:SynchroLog/Attribute:sync_source_id' => 'Synchro Veri Kaynağı',
|
'Class:SynchroLog/Attribute:sync_source_id' => 'Synchro Veri Kaynağı',
|
||||||
'Class:SynchroLog/Attribute:start_date' => 'Başlangıç tarihi',
|
'Class:SynchroLog/Attribute:start_date' => 'Başlangıç tarihi',
|
||||||
'Class:SynchroLog/Attribute:end_date' => 'Bitiş Tarihi',
|
'Class:SynchroLog/Attribute:end_date' => 'Bitiş Tarihi',
|
||||||
|
|||||||
2
node_modules/ckeditor5-itop-build/build/ckeditor.js
generated
vendored
2
node_modules/ckeditor5-itop-build/build/ckeditor.js
generated
vendored
File diff suppressed because one or more lines are too long
2
node_modules/ckeditor5-itop-build/build/ckeditor.js.map
generated
vendored
2
node_modules/ckeditor5-itop-build/build/ckeditor.js.map
generated
vendored
File diff suppressed because one or more lines are too long
@@ -1,5 +1,4 @@
|
|||||||
import { Plugin, type Editor } from 'ckeditor5/src/core.js';
|
import { Plugin, type Editor } from 'ckeditor5/src/core.js';
|
||||||
import InsertCarriageReturnAfterBlock from "../insert-carriage-return-after-block/insert-carriage-return-after-block.plugin";
|
|
||||||
/**
|
/**
|
||||||
* DetectChanges Plugin.
|
* DetectChanges Plugin.
|
||||||
*
|
*
|
||||||
@@ -9,5 +8,4 @@ export default class DetectChanges extends Plugin {
|
|||||||
constructor(editor: Editor);
|
constructor(editor: Editor);
|
||||||
init(): void;
|
init(): void;
|
||||||
static get pluginName(): string;
|
static get pluginName(): string;
|
||||||
static get requires(): (typeof InsertCarriageReturnAfterBlock)[];
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,9 +55,11 @@ $oP->SetBreadCrumbEntry('ui-tool-universalsearch', Dict::S('Menu:UniversalSearch
|
|||||||
//$sSearchHeaderForceDropdown
|
//$sSearchHeaderForceDropdown
|
||||||
$sSearchHeaderForceDropdown = '<select id="select_class" name="baseClass" onChange="this.form.submit();">';
|
$sSearchHeaderForceDropdown = '<select id="select_class" name="baseClass" onChange="this.form.submit();">';
|
||||||
$aClassLabels = array();
|
$aClassLabels = array();
|
||||||
foreach(MetaModel::GetClasses('bizmodel') as $sCurrentClass)
|
foreach (MetaModel::GetClasses('bizmodel, grant_by_profile') as $sCurrentClass) {
|
||||||
{
|
if ((MetaModel::HasCategory($sCurrentClass, 'grant_by_profile') && UserRights::IsActionAllowed($sCurrentClass, UR_ACTION_BULK_MODIFY))
|
||||||
$aClassLabels[$sCurrentClass] = MetaModel::GetName($sCurrentClass);
|
|| (MetaModel::HasCategory($sCurrentClass, 'bizmodel') && UserRights::IsActionAllowed($sCurrentClass, UR_ACTION_BULK_READ))) {
|
||||||
|
$aClassLabels[$sCurrentClass] = MetaModel::GetName($sCurrentClass);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
asort($aClassLabels);
|
asort($aClassLabels);
|
||||||
foreach($aClassLabels as $sCurrentClass => $sLabel)
|
foreach($aClassLabels as $sCurrentClass => $sLabel)
|
||||||
|
|||||||
@@ -29,9 +29,8 @@ use Combodo\iTop\Application\WebPage\AjaxPage;
|
|||||||
use Combodo\iTop\Application\WebPage\ErrorPage;
|
use Combodo\iTop\Application\WebPage\ErrorPage;
|
||||||
use Combodo\iTop\Application\WebPage\iTopWebPage;
|
use Combodo\iTop\Application\WebPage\iTopWebPage;
|
||||||
use Combodo\iTop\Application\WebPage\WebPage;
|
use Combodo\iTop\Application\WebPage\WebPage;
|
||||||
use Combodo\iTop\Service\Import\CSVImportPageProcessor;
|
|
||||||
use Combodo\iTop\Core\CMDBChange\CMDBChangeOrigin;
|
|
||||||
use Combodo\iTop\Renderer\BlockRenderer;
|
use Combodo\iTop\Renderer\BlockRenderer;
|
||||||
|
use Combodo\iTop\Service\Import\CSVImportPageProcessor;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
require_once('../approot.inc.php');
|
require_once('../approot.inc.php');
|
||||||
@@ -83,21 +82,24 @@ try {
|
|||||||
*
|
*
|
||||||
* @return \Combodo\iTop\Application\UI\Base\Component\Input\Select\
|
* @return \Combodo\iTop\Application\UI\Base\Component\Input\Select\
|
||||||
*/
|
*/
|
||||||
function GetClassesSelectUIBlock(string $sName, $sDefaultValue, int $iActionCode): Select
|
function GetClassesSelectUIBlock(string $sName, $sDefaultValue, int $iActionCode, bool $bAdvanced = false): Select
|
||||||
{
|
{
|
||||||
$oSelectBlock = SelectUIBlockFactory::MakeForSelect($sName, 'select_'.$sName);
|
$oSelectBlock = SelectUIBlockFactory::MakeForSelect($sName, 'select_'.$sName);
|
||||||
$oOption = SelectOptionUIBlockFactory::MakeForSelectOption("", Dict::S('UI:CSVImport:ClassesSelectOne'), false);
|
$oOption = SelectOptionUIBlockFactory::MakeForSelectOption("", Dict::S('UI:CSVImport:ClassesSelectOne'), false);
|
||||||
$oSelectBlock->AddSubBlock($oOption);
|
$oSelectBlock->AddSubBlock($oOption);
|
||||||
$aValidClasses = array();
|
$aValidClasses = array();
|
||||||
$aClassCategories = array('bizmodel', 'addon/authentication', 'grant_by_profile');
|
$aClassCategories = array('bizmodel', 'addon/authentication');
|
||||||
|
if ($bAdvanced) {
|
||||||
|
$aClassCategories[] = 'grant_by_profile';
|
||||||
|
}
|
||||||
if (UserRights::IsAdministrator()) {
|
if (UserRights::IsAdministrator()) {
|
||||||
$aClassCategories = array('bizmodel', 'application', 'addon/authentication', 'grant_by_profile');
|
$aClassCategories[] = 'application';
|
||||||
}
|
}
|
||||||
foreach ($aClassCategories as $sClassCategory) {
|
foreach ($aClassCategories as $sClassCategory) {
|
||||||
foreach (MetaModel::GetClasses($sClassCategory) as $sClassName) {
|
foreach (MetaModel::GetClasses($sClassCategory) as $sClassName) {
|
||||||
if ((is_null($iActionCode) || UserRights::IsActionAllowed($sClassName, $iActionCode)) &&
|
if ((is_null($iActionCode) || UserRights::IsActionAllowed($sClassName, $iActionCode)) &&
|
||||||
(!MetaModel::IsAbstract($sClassName))) {
|
(!MetaModel::IsAbstract($sClassName))) {
|
||||||
$sDisplayName = MetaModel::GetName($sClassName);
|
$sDisplayName = ($bAdvanced) ? MetaModel::GetName($sClassName)." ($sClassName)" : MetaModel::GetName($sClassName);
|
||||||
$aValidClasses[$sDisplayName] = SelectOptionUIBlockFactory::MakeForSelectOption($sClassName, $sDisplayName, ($sClassName == $sDefaultValue));
|
$aValidClasses[$sDisplayName] = SelectOptionUIBlockFactory::MakeForSelectOption($sClassName, $sDisplayName, ($sClassName == $sDefaultValue));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -333,7 +335,7 @@ try {
|
|||||||
$oClassesSelect->AddSubBlock($oDefaultSelect);
|
$oClassesSelect->AddSubBlock($oDefaultSelect);
|
||||||
$aSynchroUpdate = utils::ReadParam('synchro_update', array());
|
$aSynchroUpdate = utils::ReadParam('synchro_update', array());
|
||||||
} else {
|
} else {
|
||||||
$oClassesSelect = GetClassesSelectUIBlock('class_name', $sClassName, UR_ACTION_BULK_MODIFY);
|
$oClassesSelect = GetClassesSelectUIBlock('class_name', $sClassName, UR_ACTION_BULK_MODIFY, (bool)$bAdvanced);
|
||||||
}
|
}
|
||||||
$oPanel = TitleUIBlockFactory::MakeForPage(Dict::S('UI:Title:CSVImportStep3'));
|
$oPanel = TitleUIBlockFactory::MakeForPage(Dict::S('UI:Title:CSVImportStep3'));
|
||||||
$oPage->AddSubBlock($oPanel);
|
$oPage->AddSubBlock($oPanel);
|
||||||
@@ -398,7 +400,7 @@ try {
|
|||||||
$oPage->add_ready_script(
|
$oPage->add_ready_script(
|
||||||
<<<EOF
|
<<<EOF
|
||||||
$('#select_class_name').on('change', function(ev) { DoMapping(); } );
|
$('#select_class_name').on('change', function(ev) { DoMapping(); } );
|
||||||
$('#advanced').on('click', function(ev) { DoMapping(); } );
|
$('#advanced').on('click', function(ev) { DoReload(); } );
|
||||||
EOF
|
EOF
|
||||||
);
|
);
|
||||||
if ($sClassName != '')
|
if ($sClassName != '')
|
||||||
@@ -416,6 +418,13 @@ EOF
|
|||||||
var aDefaultKeys = new Array();
|
var aDefaultKeys = new Array();
|
||||||
var aReadOnlyKeys = new Array();
|
var aReadOnlyKeys = new Array();
|
||||||
|
|
||||||
|
function DoReload()
|
||||||
|
{
|
||||||
|
$('input[name=step]').val(3);
|
||||||
|
$('#wizForm').removeAttr('onsubmit'); // No need to perform validation checks when going back
|
||||||
|
$('#wizForm').submit();
|
||||||
|
}
|
||||||
|
|
||||||
function CSVGoBack()
|
function CSVGoBack()
|
||||||
{
|
{
|
||||||
$('input[name=step]').val(2);
|
$('input[name=step]').val(2);
|
||||||
|
|||||||
Reference in New Issue
Block a user