mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-11 04:38:43 +02:00
Compare commits
2 Commits
develop
...
feature/91
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7508dd4b4a | ||
|
|
b80b51a5ee |
@@ -193,6 +193,7 @@ return array(
|
|||||||
'Combodo\\iTop\\Application\\Helper\\CKEditorHelper' => $baseDir . '/sources/Application/Helper/CKEditorHelper.php',
|
'Combodo\\iTop\\Application\\Helper\\CKEditorHelper' => $baseDir . '/sources/Application/Helper/CKEditorHelper.php',
|
||||||
'Combodo\\iTop\\Application\\Helper\\ExportHelper' => $baseDir . '/sources/Application/Helper/ExportHelper.php',
|
'Combodo\\iTop\\Application\\Helper\\ExportHelper' => $baseDir . '/sources/Application/Helper/ExportHelper.php',
|
||||||
'Combodo\\iTop\\Application\\Helper\\FormHelper' => $baseDir . '/sources/Application/Helper/FormHelper.php',
|
'Combodo\\iTop\\Application\\Helper\\FormHelper' => $baseDir . '/sources/Application/Helper/FormHelper.php',
|
||||||
|
'Combodo\\iTop\\Application\\Helper\\ImportHelper' => $baseDir . '/sources/Application/Helper/ImportHelper.php',
|
||||||
'Combodo\\iTop\\Application\\Helper\\Session' => $baseDir . '/sources/Application/Helper/Session.php',
|
'Combodo\\iTop\\Application\\Helper\\Session' => $baseDir . '/sources/Application/Helper/Session.php',
|
||||||
'Combodo\\iTop\\Application\\Helper\\WebResourcesHelper' => $baseDir . '/sources/Application/Helper/WebResourcesHelper.php',
|
'Combodo\\iTop\\Application\\Helper\\WebResourcesHelper' => $baseDir . '/sources/Application/Helper/WebResourcesHelper.php',
|
||||||
'Combodo\\iTop\\Application\\Newsroom\\iTopNewsroomProvider' => $baseDir . '/sources/Application/Newsroom/iTopNewsroomProvider.php',
|
'Combodo\\iTop\\Application\\Newsroom\\iTopNewsroomProvider' => $baseDir . '/sources/Application/Newsroom/iTopNewsroomProvider.php',
|
||||||
|
|||||||
@@ -548,6 +548,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
|
|||||||
'Combodo\\iTop\\Application\\Helper\\CKEditorHelper' => __DIR__ . '/../..' . '/sources/Application/Helper/CKEditorHelper.php',
|
'Combodo\\iTop\\Application\\Helper\\CKEditorHelper' => __DIR__ . '/../..' . '/sources/Application/Helper/CKEditorHelper.php',
|
||||||
'Combodo\\iTop\\Application\\Helper\\ExportHelper' => __DIR__ . '/../..' . '/sources/Application/Helper/ExportHelper.php',
|
'Combodo\\iTop\\Application\\Helper\\ExportHelper' => __DIR__ . '/../..' . '/sources/Application/Helper/ExportHelper.php',
|
||||||
'Combodo\\iTop\\Application\\Helper\\FormHelper' => __DIR__ . '/../..' . '/sources/Application/Helper/FormHelper.php',
|
'Combodo\\iTop\\Application\\Helper\\FormHelper' => __DIR__ . '/../..' . '/sources/Application/Helper/FormHelper.php',
|
||||||
|
'Combodo\\iTop\\Application\\Helper\\ImportHelper' => __DIR__ . '/../..' . '/sources/Application/Helper/ImportHelper.php',
|
||||||
'Combodo\\iTop\\Application\\Helper\\Session' => __DIR__ . '/../..' . '/sources/Application/Helper/Session.php',
|
'Combodo\\iTop\\Application\\Helper\\Session' => __DIR__ . '/../..' . '/sources/Application/Helper/Session.php',
|
||||||
'Combodo\\iTop\\Application\\Helper\\WebResourcesHelper' => __DIR__ . '/../..' . '/sources/Application/Helper/WebResourcesHelper.php',
|
'Combodo\\iTop\\Application\\Helper\\WebResourcesHelper' => __DIR__ . '/../..' . '/sources/Application/Helper/WebResourcesHelper.php',
|
||||||
'Combodo\\iTop\\Application\\Newsroom\\iTopNewsroomProvider' => __DIR__ . '/../..' . '/sources/Application/Newsroom/iTopNewsroomProvider.php',
|
'Combodo\\iTop\\Application\\Newsroom\\iTopNewsroomProvider' => __DIR__ . '/../..' . '/sources/Application/Newsroom/iTopNewsroomProvider.php',
|
||||||
|
|||||||
@@ -5,9 +5,11 @@
|
|||||||
* @license http://opensource.org/licenses/AGPL-3.0
|
* @license http://opensource.org/licenses/AGPL-3.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use Combodo\iTop\Application\Helper\ImportHelper;
|
||||||
use Combodo\iTop\Application\UI\Base\Component\Alert\AlertUIBlockFactory;
|
use Combodo\iTop\Application\UI\Base\Component\Alert\AlertUIBlockFactory;
|
||||||
use Combodo\iTop\Application\UI\Base\Component\Button\ButtonUIBlockFactory;
|
use Combodo\iTop\Application\UI\Base\Component\Button\ButtonUIBlockFactory;
|
||||||
use Combodo\iTop\Application\UI\Base\Component\DataTable\DataTableUIBlockFactory;
|
use Combodo\iTop\Application\UI\Base\Component\DataTable\DataTableUIBlockFactory;
|
||||||
|
use Combodo\iTop\Application\UI\Base\Component\Input\Select\Select;
|
||||||
use Combodo\iTop\Application\UI\Base\Component\Input\Select\SelectOptionUIBlockFactory;
|
use Combodo\iTop\Application\UI\Base\Component\Input\Select\SelectOptionUIBlockFactory;
|
||||||
use Combodo\iTop\Application\UI\Base\Component\Input\Select\SelectUIBlockFactory;
|
use Combodo\iTop\Application\UI\Base\Component\Input\Select\SelectUIBlockFactory;
|
||||||
use Combodo\iTop\Application\UI\Base\Component\Input\TextArea;
|
use Combodo\iTop\Application\UI\Base\Component\Input\TextArea;
|
||||||
@@ -387,6 +389,14 @@ EOF
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'display_classes_select':
|
||||||
|
$oPage = new AjaxPage("");
|
||||||
|
$sClassName = utils::ReadPostedParam('class_name', '', utils::ENUM_SANITIZATION_FILTER_CLASS);
|
||||||
|
$bAdvanced = utils::ReadPostedParam('advanced', 'false');
|
||||||
|
$oClassesSelect = ImportHelper::GetClassesSelectUIBlock('class_name', $sClassName, UR_ACTION_BULK_MODIFY, $bAdvanced === 'true');
|
||||||
|
$oPage->AddSubBlock($oClassesSelect);
|
||||||
|
break;
|
||||||
|
|
||||||
case 'get_csv_template':
|
case 'get_csv_template':
|
||||||
$sClassName = utils::ReadParam('class_name');
|
$sClassName = utils::ReadParam('class_name');
|
||||||
$sFormat = utils::ReadParam('format', 'csv');
|
$sFormat = utils::ReadParam('format', 'csv');
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
* @license http://opensource.org/licenses/AGPL-3.0
|
* @license http://opensource.org/licenses/AGPL-3.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use Combodo\iTop\Application\Helper\ImportHelper;
|
||||||
use Combodo\iTop\Application\UI\Base\Component\Alert\AlertUIBlockFactory;
|
use Combodo\iTop\Application\UI\Base\Component\Alert\AlertUIBlockFactory;
|
||||||
use Combodo\iTop\Application\UI\Base\Component\Button\ButtonUIBlockFactory;
|
use Combodo\iTop\Application\UI\Base\Component\Button\ButtonUIBlockFactory;
|
||||||
use Combodo\iTop\Application\UI\Base\Component\CollapsibleSection\CollapsibleSectionUIBlockFactory;
|
use Combodo\iTop\Application\UI\Base\Component\CollapsibleSection\CollapsibleSectionUIBlockFactory;
|
||||||
@@ -14,7 +15,6 @@ use Combodo\iTop\Application\UI\Base\Component\Form\FormUIBlockFactory;
|
|||||||
use Combodo\iTop\Application\UI\Base\Component\Html\Html;
|
use Combodo\iTop\Application\UI\Base\Component\Html\Html;
|
||||||
use Combodo\iTop\Application\UI\Base\Component\Input\FileSelect\FileSelectUIBlockFactory;
|
use Combodo\iTop\Application\UI\Base\Component\Input\FileSelect\FileSelectUIBlockFactory;
|
||||||
use Combodo\iTop\Application\UI\Base\Component\Input\InputUIBlockFactory;
|
use Combodo\iTop\Application\UI\Base\Component\Input\InputUIBlockFactory;
|
||||||
use Combodo\iTop\Application\UI\Base\Component\Input\Select\Select;
|
|
||||||
use Combodo\iTop\Application\UI\Base\Component\Input\Select\SelectOptionUIBlockFactory;
|
use Combodo\iTop\Application\UI\Base\Component\Input\Select\SelectOptionUIBlockFactory;
|
||||||
use Combodo\iTop\Application\UI\Base\Component\Input\Select\SelectUIBlockFactory;
|
use Combodo\iTop\Application\UI\Base\Component\Input\Select\SelectUIBlockFactory;
|
||||||
use Combodo\iTop\Application\UI\Base\Component\Input\TextArea;
|
use Combodo\iTop\Application\UI\Base\Component\Input\TextArea;
|
||||||
@@ -30,7 +30,6 @@ 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\Renderer\BlockRenderer;
|
|
||||||
use Combodo\iTop\Service\Import\CSVImportPageProcessor;
|
use Combodo\iTop\Service\Import\CSVImportPageProcessor;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -52,67 +51,6 @@ try {
|
|||||||
$oPage = new iTopWebPage(Dict::S('UI:Title:BulkImport'));
|
$oPage = new iTopWebPage(Dict::S('UI:Title:BulkImport'));
|
||||||
$oPage->SetBreadCrumbEntry('ui-tool-bulkimport', Dict::S('Menu:CSVImportMenu'), Dict::S('UI:Title:BulkImport+'), '', 'fas fa-file-import', iTopWebPage::ENUM_BREADCRUMB_ENTRY_ICON_TYPE_CSS_CLASSES);
|
$oPage->SetBreadCrumbEntry('ui-tool-bulkimport', Dict::S('Menu:CSVImportMenu'), Dict::S('UI:Title:BulkImport+'), '', 'fas fa-file-import', iTopWebPage::ENUM_BREADCRUMB_ENTRY_ICON_TYPE_CSS_CLASSES);
|
||||||
|
|
||||||
/**
|
|
||||||
* Helper function to build a select from the list of valid classes for a given action
|
|
||||||
*
|
|
||||||
* @deprecated 3.0.0 use GetClassesSelectUIBlock
|
|
||||||
*
|
|
||||||
* @param $sDefaultValue
|
|
||||||
* @param integer $iWidthPx The width (in pixels) of the drop-down list
|
|
||||||
* @param integer $iActionCode The ActionCode (from UserRights) to check for authorization for the classes
|
|
||||||
*
|
|
||||||
* @param string $sName The name of the select in the HTML form
|
|
||||||
*
|
|
||||||
* @return string The HTML fragment corresponding to the select tag
|
|
||||||
*/
|
|
||||||
function GetClassesSelect($sName, $sDefaultValue, $iWidthPx, $iActionCode = null)
|
|
||||||
{
|
|
||||||
DeprecatedCallsLog::NotifyDeprecatedPhpMethod('use GetClassesSelectUIBlock');
|
|
||||||
$oSelectBlock = GetClassesSelectUIBlock($sName, $sDefaultValue, $iActionCode);
|
|
||||||
|
|
||||||
return BlockRenderer::RenderBlockTemplates($oSelectBlock);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Helper function to build a select from the list of valid classes for a given action
|
|
||||||
*
|
|
||||||
* @param string $sName The name of the select in the HTML form
|
|
||||||
* @param $sDefaultValue
|
|
||||||
* @param integer $iWidthPx The width (in pixels) of the drop-down list
|
|
||||||
* @param integer $iActionCode The ActionCode (from UserRights) to check for authorization for the classes
|
|
||||||
*
|
|
||||||
* @return \Combodo\iTop\Application\UI\Base\Component\Input\Select\
|
|
||||||
*/
|
|
||||||
function GetClassesSelectUIBlock(string $sName, $sDefaultValue, int $iActionCode, bool $bAdvanced = false): Select
|
|
||||||
{
|
|
||||||
$oSelectBlock = SelectUIBlockFactory::MakeForSelect($sName, 'select_'.$sName);
|
|
||||||
$oOption = SelectOptionUIBlockFactory::MakeForSelectOption("", Dict::S('UI:CSVImport:ClassesSelectOne'), false);
|
|
||||||
$oSelectBlock->AddSubBlock($oOption);
|
|
||||||
$aValidClasses = [];
|
|
||||||
$aClassCategories = ['bizmodel', 'addon/authentication'];
|
|
||||||
if ($bAdvanced) {
|
|
||||||
$aClassCategories[] = 'grant_by_profile';
|
|
||||||
}
|
|
||||||
if (UserRights::IsAdministrator()) {
|
|
||||||
$aClassCategories[] = 'application';
|
|
||||||
}
|
|
||||||
foreach ($aClassCategories as $sClassCategory) {
|
|
||||||
foreach (MetaModel::GetClasses($sClassCategory) as $sClassName) {
|
|
||||||
if ((is_null($iActionCode) || UserRights::IsActionAllowed($sClassName, $iActionCode)) &&
|
|
||||||
(!MetaModel::IsAbstract($sClassName))) {
|
|
||||||
$sDisplayName = ($bAdvanced) ? MetaModel::GetName($sClassName)." ($sClassName)" : MetaModel::GetName($sClassName);
|
|
||||||
$aValidClasses[$sDisplayName] = SelectOptionUIBlockFactory::MakeForSelectOption($sClassName, $sDisplayName, ($sClassName == $sDefaultValue));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ksort($aValidClasses);
|
|
||||||
foreach ($aValidClasses as $sValue => $oBlock) {
|
|
||||||
$oSelectBlock->AddSubBlock($oBlock);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $oSelectBlock;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper to 'check' an input in an HTML form if the current value equals the value given
|
* Helper to 'check' an input in an HTML form if the current value equals the value given
|
||||||
*
|
*
|
||||||
@@ -351,7 +289,7 @@ try {
|
|||||||
$oClassesSelect->AddSubBlock($oDefaultSelect);
|
$oClassesSelect->AddSubBlock($oDefaultSelect);
|
||||||
$aSynchroUpdate = utils::ReadParam('synchro_update', []);
|
$aSynchroUpdate = utils::ReadParam('synchro_update', []);
|
||||||
} else {
|
} else {
|
||||||
$oClassesSelect = GetClassesSelectUIBlock('class_name', $sClassName, UR_ACTION_BULK_MODIFY, (bool)$bAdvanced);
|
$oClassesSelect = ImportHelper::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);
|
||||||
@@ -375,11 +313,9 @@ try {
|
|||||||
$oAdvancedMode->GetInput()->SetIsChecked(($bAdvanced == 1));
|
$oAdvancedMode->GetInput()->SetIsChecked(($bAdvanced == 1));
|
||||||
$oAdvancedMode->SetBeforeInput(false);
|
$oAdvancedMode->SetBeforeInput(false);
|
||||||
$oAdvancedMode->GetInput()->AddCSSClass('ibo-input-checkbox');
|
$oAdvancedMode->GetInput()->AddCSSClass('ibo-input-checkbox');
|
||||||
|
$oAdvancedMode->SetDescription(utils::EscapeHtml(Dict::S('UI:CSVImport:AdvancedMode+')));
|
||||||
$oMulticolumn->AddColumn(ColumnUIBlockFactory::MakeForBlock($oAdvancedMode));
|
$oMulticolumn->AddColumn(ColumnUIBlockFactory::MakeForBlock($oAdvancedMode));
|
||||||
|
|
||||||
$oDivAdvancedHelp = UIContentBlockUIBlockFactory::MakeStandard("advanced_help")->AddCSSClass('ibo-is-hidden');
|
|
||||||
$oForm->AddSubBlock($oDivAdvancedHelp);
|
|
||||||
|
|
||||||
$oDivMapping = UIContentBlockUIBlockFactory::MakeStandard("mapping")->AddCSSClass('mt-5');
|
$oDivMapping = UIContentBlockUIBlockFactory::MakeStandard("mapping")->AddCSSClass('mt-5');
|
||||||
$oMessage = AlertUIBlockFactory::MakeForInformation(Dict::S('UI:CSVImport:SelectAClassFirst'))->SetIsClosable(false)->SetIsCollapsible(false);
|
$oMessage = AlertUIBlockFactory::MakeForInformation(Dict::S('UI:CSVImport:SelectAClassFirst'))->SetIsClosable(false)->SetIsCollapsible(false);
|
||||||
$oDivMapping->AddSubBlock($oMessage);
|
$oDivMapping->AddSubBlock($oMessage);
|
||||||
@@ -416,7 +352,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) { DoReload(); } );
|
$('#advanced').on('click', function(ev) { DoAdvanced(); } );
|
||||||
EOF
|
EOF
|
||||||
);
|
);
|
||||||
if ($sClassName != '') {
|
if ($sClassName != '') {
|
||||||
@@ -429,15 +365,13 @@ EOF
|
|||||||
}
|
}
|
||||||
|
|
||||||
$oPage->add_script(
|
$oPage->add_script(
|
||||||
<<<EOF
|
<<<JS
|
||||||
var aDefaultKeys = new Array();
|
var aDefaultKeys = new Array();
|
||||||
var aReadOnlyKeys = new Array();
|
var aReadOnlyKeys = new Array();
|
||||||
|
|
||||||
function DoReload()
|
function DoAdvanced()
|
||||||
{
|
{
|
||||||
$('input[name=step]').val(3);
|
UpdateClassesSelect();
|
||||||
$('#wizForm').removeAttr('onsubmit'); // No need to perform validation checks when going back
|
|
||||||
$('#wizForm').submit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function CSVGoBack()
|
function CSVGoBack()
|
||||||
@@ -462,14 +396,7 @@ EOF
|
|||||||
{
|
{
|
||||||
var class_name = $('select[name=class_name]').val();
|
var class_name = $('select[name=class_name]').val();
|
||||||
var advanced = $('input[name=advanced]:checked').val();
|
var advanced = $('input[name=advanced]:checked').val();
|
||||||
if (advanced != 1)
|
|
||||||
{
|
|
||||||
$('#advanced_help').hide();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$('#advanced_help').show();
|
|
||||||
}
|
|
||||||
if (class_name != '')
|
if (class_name != '')
|
||||||
{
|
{
|
||||||
var separator = $('input[name=separator]').val();
|
var separator = $('input[name=separator]').val();
|
||||||
@@ -517,6 +444,26 @@ EOF
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function UpdateClassesSelect()
|
||||||
|
{
|
||||||
|
const aParams = {
|
||||||
|
operation: 'display_classes_select',
|
||||||
|
class_name: $('#select_class_name').val(),
|
||||||
|
advanced: $('#advanced').is(':checked'),
|
||||||
|
};
|
||||||
|
|
||||||
|
$('#select_class_name').block();
|
||||||
|
|
||||||
|
$.post(GetAbsoluteUrlAppRoot()+'pages/ajax.csvimport.php',
|
||||||
|
aParams,
|
||||||
|
function(data) {
|
||||||
|
$('#select_class_name').replaceWith($(data));
|
||||||
|
$('#select_class_name').on('change', function(ev) { DoMapping(); } );
|
||||||
|
DoMapping();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
function CheckValues()
|
function CheckValues()
|
||||||
{
|
{
|
||||||
// Reset the highlight in case the check has already been executed with failure
|
// Reset the highlight in case the check has already been executed with failure
|
||||||
@@ -647,7 +594,7 @@ EOF
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
JS
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1065,7 +1012,7 @@ EOF
|
|||||||
}*/
|
}*/
|
||||||
//Tab:Template
|
//Tab:Template
|
||||||
$oTabTemplate = $oTabContainer->AddTab('tabsTemplate', Dict::S('UI:CSVImport:Tab:Templates'));
|
$oTabTemplate = $oTabContainer->AddTab('tabsTemplate', Dict::S('UI:CSVImport:Tab:Templates'));
|
||||||
$oFieldTemplate = FieldUIBlockFactory::MakeFromObject(Dict::S('UI:CSVImport:PickClassForTemplate'), GetClassesSelectUIBlock('template_class', '', UR_ACTION_BULK_MODIFY));
|
$oFieldTemplate = FieldUIBlockFactory::MakeFromObject(Dict::S('UI:CSVImport:PickClassForTemplate'), ImportHelper::GetClassesSelectUIBlock('template_class', '', UR_ACTION_BULK_MODIFY));
|
||||||
$oTabTemplate->AddSubBlock($oFieldTemplate);
|
$oTabTemplate->AddSubBlock($oFieldTemplate);
|
||||||
$oDivTemplate = UIContentBlockUIBlockFactory::MakeStandard("template")->AddCSSClass("ibo-is-visible");
|
$oDivTemplate = UIContentBlockUIBlockFactory::MakeStandard("template")->AddCSSClass("ibo-is-visible");
|
||||||
$oTabTemplate->AddSubBlock($oDivTemplate);
|
$oTabTemplate->AddSubBlock($oDivTemplate);
|
||||||
|
|||||||
65
sources/Application/Helper/ImportHelper.php
Normal file
65
sources/Application/Helper/ImportHelper.php
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Combodo\iTop\Application\Helper;
|
||||||
|
|
||||||
|
use Combodo\iTop\Application\UI\Base\Component\Input\Select\Select;
|
||||||
|
use Combodo\iTop\Application\UI\Base\Component\Input\Select\SelectOptionUIBlockFactory;
|
||||||
|
use Combodo\iTop\Application\UI\Base\Component\Input\SelectUIBlockFactory;
|
||||||
|
use CoreException;
|
||||||
|
use Dict;
|
||||||
|
use DictExceptionMissingString;
|
||||||
|
use MetaModel;
|
||||||
|
use UserRights;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class
|
||||||
|
* ImportHelper
|
||||||
|
*
|
||||||
|
* @internal
|
||||||
|
* @since 3.2.3
|
||||||
|
* @package Combodo\iTop\Application\Helper
|
||||||
|
*/
|
||||||
|
class ImportHelper
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get classes select UI block.
|
||||||
|
*
|
||||||
|
* @param string $sName
|
||||||
|
* @param $sDefaultValue
|
||||||
|
* @param int $iActionCode
|
||||||
|
* @param bool $bAdvanced
|
||||||
|
*
|
||||||
|
* @return Select
|
||||||
|
* @throws CoreException
|
||||||
|
* @throws DictExceptionMissingString
|
||||||
|
*/
|
||||||
|
public static function GetClassesSelectUIBlock(string $sName, $sDefaultValue, int $iActionCode, bool $bAdvanced = false): Select
|
||||||
|
{
|
||||||
|
$oSelectBlock = SelectUIBlockFactory::MakeForSelect($sName, 'select_'.$sName);
|
||||||
|
$oOption = SelectOptionUIBlockFactory::MakeForSelectOption("", Dict::S('UI:CSVImport:ClassesSelectOne'), false);
|
||||||
|
$oSelectBlock->AddSubBlock($oOption);
|
||||||
|
$aValidClasses = [];
|
||||||
|
$aClassCategories = ['bizmodel', 'addon/authentication'];
|
||||||
|
if ($bAdvanced) {
|
||||||
|
$aClassCategories[] = 'grant_by_profile';
|
||||||
|
}
|
||||||
|
if (UserRights::IsAdministrator()) {
|
||||||
|
$aClassCategories[] = 'application';
|
||||||
|
}
|
||||||
|
foreach ($aClassCategories as $sClassCategory) {
|
||||||
|
foreach (MetaModel::GetClasses($sClassCategory) as $sClassName) {
|
||||||
|
if ((is_null($iActionCode) || UserRights::IsActionAllowed($sClassName, $iActionCode)) &&
|
||||||
|
(!MetaModel::IsAbstract($sClassName))) {
|
||||||
|
$sDisplayName = ($bAdvanced) ? MetaModel::GetName($sClassName)." ($sClassName)" : MetaModel::GetName($sClassName);
|
||||||
|
$aValidClasses[$sDisplayName] = SelectOptionUIBlockFactory::MakeForSelectOption($sClassName, $sDisplayName, ($sClassName == $sDefaultValue));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ksort($aValidClasses);
|
||||||
|
foreach ($aValidClasses as $sValue => $oBlock) {
|
||||||
|
$oSelectBlock->AddSubBlock($oBlock);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $oSelectBlock;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user