Your IP : 3.149.235.190


Current Path : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/modules/translate/admin/
Upload File :
Current File : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/modules/translate/admin/collector.php

<?php
//region head
define('ADMIN_MODULE_NAME', 'translate');
require_once($_SERVER['DOCUMENT_ROOT']. '/bitrix/modules/main/include/prolog_admin_before.php');

/**
 * @global \CUser $USER
 * @global \CMain $APPLICATION
 */

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


if(!Main\Loader::includeModule('translate'))
{
	require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_admin_after.php');

	\CAdminMessage::showMessage('Translate module not found');

	require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/epilog_admin.php');
}

if (!Translate\Permission::canEdit($USER))
{
	$APPLICATION->AuthForm(Main\Localization\Loc::getMessage('ACCESS_DENIED'));
}
if (!Translate\Permission::canEditSource($USER))
{
	$APPLICATION->AuthForm(\Bitrix\Main\Localization\Loc::getMessage('ACCESS_DENIED'));
}

define('HELP_FILE', 'translate_list.php');

$APPLICATION->SetTitle(Loc::getMessage('TRANS_TITLE'));

require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_admin_after.php');

Main\UI\Extension::load([
	'main.loader',
	'ui.buttons',
	'ui.alerts',
	'ui.notification',
	'translate.process',
]);

//endregion

$isUtfMode = Translate\Config::isUtfMode();
$useTranslationRepository = Main\Localization\Translation::useTranslationRepository();

$enabledLanguages = Translate\Config::getEnabledLanguages();
$availableLanguages = Translate\Config::getAvailableLanguages();
$allLanguages = Translate\Config::getLanguages();
$allowedEncodings = Translate\Config::getAllowedEncodings();


$assemblyDate = date('Ymd');
$languageId = Loc::getCurrentLang();
$encoding = Main\Localization\Translation::getCurrentEncoding();
$convertEncoding = $useTranslationRepository;
$packFile = Translate\IO\Archiver::libAvailable();
$updatePublic = false;

const ACTION_EXTRACT = 'extract';
const ACTION_COLLECT = 'collect';

$request = \Bitrix\Main\Context::getCurrent()->getRequest();

$currentAction = $request->get('tabControl_active_tab') === ACTION_EXTRACT ? ACTION_EXTRACT : ACTION_COLLECT;

$aTabs = array(
	array(
		'DIV' => ACTION_COLLECT,
		'TAB' => Loc::getMessage("TRANS_UPLOAD"),
		'TITLE' => Loc::getMessage("TRANS_UPLOAD"),
		'ONSELECT' => "tabSelect('".ACTION_COLLECT."')"
	),
	array(
		'DIV' => ACTION_EXTRACT,
		'TAB' => Loc::getMessage("TRANS_DOWNLOAD"),
		'TITLE' => Loc::getMessage("TRANS_DOWNLOAD"),
		'ONSELECT' => "tabSelect('".ACTION_EXTRACT."')"
	),
);

$tabControl = new \CAdminTabControl('tabControl', $aTabs, false, true);
$tabControl->selectedTab = $currentAction;

$tabControl->Begin();

//region Form COLLECT LANGUAGE
?>
<form method="post" action="" name="form<?= ACTION_COLLECT ?>">
	<?/*
	<input type="hidden" name="tabControl_active_tab" value="<?= TAB_COLLECT ?>">
	<?=bitrix_sessid_post()?>
	<?
	*/

	$tabControl->BeginNextTab();

	?>
	<tr class="adm-required-field">
		<td style="width:40%">
			<?= Loc::getMessage("TR_SELECT_LANGUAGE")?>:
		</td>
		<td>
			<select name="languageId">
				<?
				$iterator = Main\Localization\LanguageTable::getList([
					'select' => ['ID', 'NAME'],
					'filter' => [
						'ID' => array_intersect($availableLanguages, $enabledLanguages),
						'=ACTIVE' => 'Y'
					],
					'order' => ['SORT' => 'ASC']
				]);
				while ($row = $iterator->fetch())
				{
					?><option value="<?= $row['ID'] ?>"<?=($row['ID'] == $languageId ? ' selected' : ''); ?>><?= $row['NAME'] ?> (<?= $row['ID'] ?>)</option><?
				}
				?>
			</select>
		</td>
	</tr>

	<tr class="adm-required-field">
		<td>
			<?= Loc::getMessage("TR_COLLECT_DATE")?>:
		</td>
		<td>
			<input type="text" name="assemblyDate" size="10" maxlength="8" value="<?= htmlspecialcharsbx($assemblyDate) ?>">
		</td>
	</tr>
	<?

	if (!$isUtfMode && !$useTranslationRepository)
	{
		?>
		<tr>
			<td>
				<?= Loc::getMessage("TR_CONVERT_UTF8")?>:
			</td>
			<td>
				<input type="hidden" name="encoding" value="utf-8" <?= ($convertEncoding ? '' : 'disabled="disabled"') ?>>
				<input type="checkbox" name="convertEncoding" value="Y" <?= ($convertEncoding ? 'checked="checked"' : '') ?> onClick="encodeClicked()">
			</td>
		</tr>
		<?
	}
	else
	{
		?>
		<tr>
			<td>
				<?= Loc::getMessage("TR_CONVERT_NATIONAL")?>:
			</td>
			<td>
				<input type="checkbox" name="convertEncoding" value="Y" <?= ($convertEncoding ? 'checked="checked"' : '') ?> onClick="encodeClicked()">
			</td>
		</tr>
		<tr>
			<td>
				<?= Loc::getMessage("TR_CONVERT_ENCODING") ?>:
			</td>
			<td>
				<select name="encoding">
					<?
					foreach ($allowedEncodings as $enc)
					{
						$encTitle = Translate\Config::getEncodingName($enc);
						?><option value="<?= htmlspecialcharsbx($enc) ?>"<?if ($enc == $encoding) echo " selected";?>><?= $encTitle ?></option><?
					}
					?>
				</select>
			</td>
		</tr>
		<?
	}

	?>
	<tr>
		<td>
			<?= Loc::getMessage("TR_PACK_FILES")?>:
		</td>
		<td>
			<input type="checkbox" name="packFile" value="Y" <?= ($packFile ?  'checked="checked"' : '') ?>>
		</td>
	</tr>
	<?

$tabControl->EndTab();

?>
</form>
<?

//endregion


//region Form UPLOAD FILE

?>
<form method="post" action="" name="form<?= ACTION_EXTRACT ?>" enctype="multipart/form-data">
	<?/*
	<input type="hidden" name="tabControl_active_tab" value="<?= TAB_EXTRACT ?>">
	<?=bitrix_sessid_post()?>
	<?
	*/

$tabControl->BeginNextTab();

	?>
	<tr class="adm-required-field">
		<td style="width:40%" nowrap>
			<?= Loc::getMessage('TR_UPLOAD_FILE')?>
			<?= Loc::getMessage('TR_UPLOAD_FILE_MAX_SIZE', ['#SIZE#' => \CFile::FormatSize(Translate\Controller\Asset\Grabber::getMaxUploadSize())]) ?>:
		</td>
		<td>
			<input type="file" name="tarFile">
		</td>
	</tr>
	<tr class="adm-required-field">
		<td>
			<?= Loc::getMessage("TR_SELECT_LANGUAGE")?> <?=Loc::getMessage("TR_SELECT_LANGUAGE_DESCRIPTION")?>:
		</td>
		<td>
			<select name="languageId">
				<?
				$iterator = Main\Localization\LanguageTable::getList([
					'select' => ['ID', 'NAME'],
					'filter' => [
						'ID' => $enabledLanguages,
						'=ACTIVE' => 'Y'
					],
					'order' => ['SORT' => 'ASC']
				]);
				while ($row = $iterator->fetch())
				{
					?><option value="<?= $row['ID'] ?>"<?=($row['ID'] == $languageId ? ' selected' : ''); ?>><?= $row['NAME'] ?> (<?= $row['ID'] ?>)</option><?
				}
				?>
			</select>
		</td>
	</tr>
	<?

	if (!$isUtfMode && !$useTranslationRepository)
	{
		?>
		<tr>
			<td>
				<?= Loc::getMessage("TR_CONVERT_FROM_UTF8")?>:
			</td>
			<td>
				<input type="hidden" name="encoding" value="utf-8" <?= ($convertEncoding ? '' : 'disabled="disabled"') ?>>
				<input type="checkbox" name="localizeEncoding" value="Y" <?=($convertEncoding ? 'checked="checked"' : ''); ?> onClick="localizeClicked()">
			</td>
		</tr>
		<?
	}
	else
	{
		?>
		<tr>
			<td>
				<?= Loc::getMessage("TR_CONVERT_FROM_NATIONAL")?>:
			</td>
			<td>
				<input type="checkbox" id="localizeEncoding" name="localizeEncoding" value="Y" <?=($convertEncoding ? 'checked="checked"' : ''); ?> onClick="localizeClicked()">
			</td>
		</tr>
		<tr id="tr-encoding" >
			<td>
				<?= Loc::getMessage("TR_CONVERT_ENCODING")?>:
			</td>
			<td>
				<select name="encoding" <?= ($convertEncoding ? '' : 'disabled="disabled"') ?>><?
					foreach ($allowedEncodings as $enc)
					{
						$encTitle = Translate\Config::getEncodingName($enc);

						?><option value="<?=htmlspecialcharsbx($enc); ?>"<?if ($enc == $encoding) echo " selected";?>><?= $encTitle ?></option><?
					}
				?></select>
			</td>
		</tr>
		<?
	}

	?>
	<tr>
		<td>
			<?= Loc::getMessage("TR_IMPORT_UPDATE_PUBLIC")?>:
		</td>
		<td>
			<input type="checkbox" name="updatePublic" value="Y" <?=($updatePublic ? 'checked="checked"' : ''); ?>>
		</td>
	</tr>
	<?


	$tabControl->EndTab();

?>
</form>
<?

//endregion


$tabControl->Buttons();
?>
<input type="submit" id="tr_submit" class="adm-btn-green" data-action="<?= $currentAction ?>" value="<?
	echo $currentAction === ACTION_EXTRACT ? Loc::getMessage("TR_DOWNLOAD_LANGUAGE") : Loc::getMessage("TR_COLLECT_LANGUAGE"); ?>">
<?

$tabControl->End();


?>
<script type="text/javascript">

function tabSelect(action)
{
	var pageTitle = BX("adm-title"), button = BX('tr_submit');

	if(action == '<?=ACTION_COLLECT?>')
	{
		document.title = '<?= Loc::getMessage("TRANS_UPLOAD") ?>';
		if(pageTitle) pageTitle.innerHTML = '<?= Loc::getMessage("TRANS_UPLOAD") ?>';
		if(button){
			button.value = '<?= Loc::getMessage("TR_COLLECT_LANGUAGE") ?>';
			BX.data(button, 'action', action);
		}
		encodeClicked();
	}
	else
	{
		document.title = '<?= Loc::getMessage("TRANS_DOWNLOAD") ?>';
		if(pageTitle) pageTitle.innerHTML = '<?= Loc::getMessage("TRANS_DOWNLOAD") ?>';
		if(button){
			button.value = '<?= Loc::getMessage("TR_DOWNLOAD_LANGUAGE") ?>';
			BX.data(button, 'action', action);
		}
		localizeClicked();
	}
}

function encodeClicked()
{
	document.forms['form<?=ACTION_COLLECT?>'].elements['encoding'].disabled =
		!document.forms['form<?=ACTION_COLLECT?>'].elements['convertEncoding'].checked;
}
function localizeClicked()
{
	document.forms['form<?=ACTION_EXTRACT?>'].elements['encoding'].disabled =
		!document.forms['form<?=ACTION_EXTRACT?>'].elements['localizeEncoding'].checked;
}


BX.ready(function(){

	BX.bind(BX('tr_submit'), 'click', function ()
	{
		var process, form, button, action;
		button = BX('tr_submit');
		action = BX.data(button, 'action');
		if (action == '<?=ACTION_COLLECT?>')
		{
			form = document.forms['form<?=ACTION_COLLECT?>'];
			process = BX.Translate.ProcessManager.getInstance('<?=ACTION_COLLECT?>');
		}
		else
		{
			form = document.forms['form<?=ACTION_EXTRACT?>'];
			process = BX.Translate.ProcessManager.getInstance('<?=ACTION_EXTRACT?>');
		}
		process
			.setParams(BX.ajax.prepareForm(form).data)
			.showDialog()
			.start();
	});


	BX.Translate.ProcessManager.create(<?=Json::encode([
		'id' => ACTION_COLLECT,
		'controller' => 'bitrix:translate.controller.asset.grabber',
		'messages' => [
			'DialogTitle' => Loc::getMessage("TRANS_UPLOAD"),
			'DialogStopButton' => Loc::getMessage('TR_DLG_BTN_STOP'),
			'DialogCloseButton' => Loc::getMessage('TR_DLG_BTN_CLOSE'),
			'AuthError' => Loc::getMessage('main_include_decode_pass_sess'),
			'RequestError' => Loc::getMessage('TR_DLG_REQUEST_ERR'),
			'RequestCanceling' => Loc::getMessage('TR_DLG_REQUEST_CANCEL'),
			'RequestCanceled' => Loc::getMessage('TR_COLLECT_CANCELED'),
			'RequestCompleted' => Loc::getMessage('TR_COLLECT_COMPLETED'),
			'DialogExportDownloadButton' => Loc::getMessage('TR_COLLECT_DOWNLOAD'),
			'DialogExportClearButton' => Loc::getMessage('TR_COLLECT_CLEAR'),
		],
		'showButtons' => ['stop' => true, 'close' => true],
		'queue' => [
			[
				'action' => \Bitrix\Translate\Controller\Index\Collector::ACTION_COLLECT_LANG_PATH,
				'controller' => 'bitrix:translate.controller.index.collector',
				'title' => Loc::getMessage('TR_COLLECT_LANG_PATH', ['#NUM#' => 1, '#LEN#' => 3]),
				'progressBarTitle' => Loc::getMessage('TR_COLLECT_LANG_PATH_PROGRESS'),
				'params' => [
					'path' => \Bitrix\Translate\Controller\Asset\Grabber::START_PATH
				]
			],
			[
				'action' => \Bitrix\Translate\Controller\Asset\Grabber::ACTION_COLLECT,
				'controller' => 'bitrix:translate.controller.asset.grabber',
				'title' => Loc::getMessage('TR_COLLECT_COLLECT', ['#NUM#' => 2, '#LEN#' => 3]),
				'progressBarTitle' => Loc::getMessage('TR_COLLECT_COLLECT_PROGRESS'),
				'params' => [
					'path' => \Bitrix\Translate\Controller\Asset\Grabber::START_PATH
				]
			],
			[
				'action' => \Bitrix\Translate\Controller\Asset\Grabber::ACTION_PACK,
				'controller' => 'bitrix:translate.controller.asset.grabber',
				'title' => Loc::getMessage('TR_COLLECT_PACK', ['#NUM#' => 3, '#LEN#' => 3]),
				'progressBarTitle' => Loc::getMessage('TR_COLLECT_PACK_PROGRESS'),
				'params' => [
					'path' => \Bitrix\Translate\Controller\Asset\Grabber::START_PATH
				]
			],
			[
				'action' => \Bitrix\Translate\Controller\Asset\Grabber::ACTION_FINALIZE,
				'finalize' => true,
			],
		],
		'sToken' => 's'. time(),
	])?>);

	BX.Translate.ProcessManager.create(<?=Json::encode([
		'id' => ACTION_EXTRACT,
		'controller' => 'bitrix:translate.controller.asset.grabber',
		'messages' => [
			'DialogTitle' => Loc::getMessage("TRANS_DOWNLOAD"),
			'DialogStopButton' => Loc::getMessage('TR_DLG_BTN_STOP'),
			'DialogCloseButton' => Loc::getMessage('TR_DLG_BTN_CLOSE'),
			'AuthError' => Loc::getMessage('main_include_decode_pass_sess'),
			'RequestError' => Loc::getMessage('TR_DLG_REQUEST_ERR'),
			'RequestCanceling' => Loc::getMessage('TR_DLG_REQUEST_CANCEL'),
			'RequestCanceled' => Loc::getMessage('TR_IMPORT_CANCELED'),
			'RequestCompleted' => Loc::getMessage('TR_IMPORT_COMPLETED'),
		],
		'showButtons' => ['stop' => true, 'close' => true],
		'queue' => [
			[
				'action' => \Bitrix\Translate\Controller\Asset\Grabber::ACTION_UPLOAD,
				'title' => Loc::getMessage('TR_EXTRACT_ACTION_UPLOAD', ['#NUM#' => 1, '#LEN#' => 4]),
				'progressBarTitle' => Loc::getMessage('TR_EXTRACT_ACTION_UPLOAD_PROGRESS'),
			],
			[
				'action' => \Bitrix\Translate\Controller\Asset\Grabber::ACTION_EXTRACT,
				'title' => Loc::getMessage('TR_EXTRACT_ACTION_EXTRACTING', ['#NUM#' => 2, '#LEN#' => 4]),
				'progressBarTitle' => Loc::getMessage('TR_EXTRACT_ACTION_EXTRACTING_PROGRESS'),
			],
			[
				'action' => \Bitrix\Translate\Controller\Asset\Grabber::ACTION_APPLY,
				'title' => Loc::getMessage('TR_EXTRACT_ACTION_APPLYING', ['#NUM#' => 3, '#LEN#' => 4]),
				'progressBarTitle' => Loc::getMessage('TR_EXTRACT_ACTION_APPLYING_PROGRESS'),
			],
			[
				'action' => \Bitrix\Translate\Controller\Asset\Grabber::ACTION_APPLY_PUBLIC,
				'title' => Loc::getMessage('TR_EXTRACT_ACTION_APPLYING_PUBLIC', ['#NUM#' => 4, '#LEN#' => 4]),
				'progressBarTitle' => Loc::getMessage('TR_EXTRACT_ACTION_APPLYING_PROGRESS'),
			],
			[
				'action' => \Bitrix\Translate\Controller\Asset\Grabber::ACTION_FINALIZE,
				'finalize' => true,
			],
		],
		'sToken' => 's'. time(),
	])?>);

	localizeClicked();
	encodeClicked();
});
</script>
<?



require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");