mirror of
https://github.com/Mibew/mibew.git
synced 2024-11-15 08:34:11 +03:00
parent
668e724a01
commit
4594619a4a
@ -631,6 +631,22 @@ translation_edit_save:
|
||||
string_id: "\d{1,10}"
|
||||
methods: [POST]
|
||||
|
||||
translation_export:
|
||||
path: /operator/translation/export
|
||||
defaults:
|
||||
_controller: Mibew\Controller\Localization\TranslationExportController::showFormAction
|
||||
_access_check: Mibew\AccessControl\Check\PermissionsCheck
|
||||
_access_permissions: [CAN_ADMINISTRATE]
|
||||
methods: [GET]
|
||||
|
||||
translation_export_process:
|
||||
path: /operator/translation/export
|
||||
defaults:
|
||||
_controller: Mibew\Controller\Localization\TranslationExportController::submitFormAction
|
||||
_access_check: Mibew\AccessControl\Check\PermissionsCheck
|
||||
_access_permissions: [CAN_ADMINISTRATE]
|
||||
methods: [POST]
|
||||
|
||||
translation_import:
|
||||
path: /operator/translation/import
|
||||
defaults:
|
||||
|
@ -41,12 +41,18 @@ abstract class AbstractController extends BaseAbstractController
|
||||
? $this->generateUrl('translations')
|
||||
: '';
|
||||
|
||||
$import = $route == 'translation_import'
|
||||
|| $route == 'translation_import_process';
|
||||
$import = ($route == 'translation_import'
|
||||
|| $route == 'translation_import_process');
|
||||
$tabs[getlocal('Translations import')] = !$import
|
||||
? $this->generateUrl('translation_import')
|
||||
: '';
|
||||
|
||||
$export = ($route == 'translation_export'
|
||||
|| $route == 'translation_export_process');
|
||||
$tabs[getlocal('Translations export')] = !$export
|
||||
? $this->generateUrl('translation_export')
|
||||
: '';
|
||||
|
||||
$tabs[getlocal('Locales')] = ($route != 'locales')
|
||||
? $this->generateUrl('locales')
|
||||
: '';
|
||||
|
@ -0,0 +1,99 @@
|
||||
<?php
|
||||
/*
|
||||
* Copyright 2005-2014 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
namespace Mibew\Controller\Localization;
|
||||
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\Translation\MessageCatalogue;
|
||||
use Symfony\Component\Translation\Dumper\PoFileDumper;
|
||||
|
||||
/**
|
||||
* Contains actions for all translations export functionality.
|
||||
*/
|
||||
class TranslationExportController extends AbstractController
|
||||
{
|
||||
/**
|
||||
* Builds a page with form for downloading translation file.
|
||||
*
|
||||
* @param Request $request Incoming request.
|
||||
* @return string Rendered page content.
|
||||
*/
|
||||
public function showFormAction(Request $request)
|
||||
{
|
||||
set_csrf_token();
|
||||
$operator = $this->getOperator();
|
||||
|
||||
$target = $request->request->get('target');
|
||||
if (!preg_match("/^[\w-]{2,5}$/", $target)) {
|
||||
$target = get_current_locale();
|
||||
}
|
||||
|
||||
// Load list of all available locales.
|
||||
$locales_list = array();
|
||||
$all_locales = get_available_locales();
|
||||
foreach ($all_locales as $loc) {
|
||||
$locales_list[] = array(
|
||||
'id' => $loc,
|
||||
'name' => $this->getLocaleName($loc)
|
||||
);
|
||||
}
|
||||
|
||||
$page['localesList'] = $locales_list;
|
||||
$page['formtarget'] = $target;
|
||||
$page['title'] = getlocal('Translations export');
|
||||
$page['menuid'] = 'translation';
|
||||
$page = array_merge($page, prepare_menu($operator));
|
||||
$page['tabs'] = $this->buildTabs($request);
|
||||
|
||||
return $this->render('translation_export', $page);
|
||||
}
|
||||
|
||||
/**
|
||||
* Processes submitting of the form which is generated in
|
||||
* {@link \Mibew\Controller\TranslationExportController::showFormAction()}
|
||||
* method.
|
||||
*
|
||||
* @param Request $request Incoming request.
|
||||
* @return string Rendered page content.
|
||||
*/
|
||||
public function submitFormAction(Request $request)
|
||||
{
|
||||
csrf_check_token($request);
|
||||
|
||||
$target = $request->request->get('target');
|
||||
if (!preg_match("/^[\w-]{2,5}$/", $target)) {
|
||||
$target = get_current_locale();
|
||||
}
|
||||
|
||||
$messages = load_messages($target);
|
||||
ksort($messages);
|
||||
|
||||
$catalogue = new MessageCatalogue($target, array('messages' => $messages));
|
||||
$dumper = new PoFileDumper();
|
||||
$output = $dumper->format($catalogue);
|
||||
|
||||
$response = new Response();
|
||||
$response->headers->set('Content-type', 'application/octet-stream');
|
||||
$response->headers->set('Content-Disposition', sprintf('attachment; filename=translation-%s.po', $target));
|
||||
$response->headers->set('Content-Length', strlen($output));
|
||||
$response->headers->set('Content-Transfer-Encoding', 'binary');
|
||||
$response->setContent($output);
|
||||
|
||||
return $response;
|
||||
}
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
{{#extends "_layout"}}
|
||||
{{#override "menu"}}{{> _menu}}{{/override}}
|
||||
|
||||
{{#override "content"}}
|
||||
{{l10n "On this page you can download translations."}}
|
||||
|
||||
<br />
|
||||
<br />
|
||||
|
||||
{{> _errors}}
|
||||
|
||||
<form method="post" action="{{mibewRoot}}/operator/translation/export">
|
||||
{{csrfTokenInput}}
|
||||
|
||||
<div>
|
||||
{{> _tabs}}
|
||||
|
||||
<div class="mform">
|
||||
<div class="formtop">
|
||||
<div class="formtopi"></div>
|
||||
</div>
|
||||
|
||||
<div class="forminner">
|
||||
<div class="fieldForm">
|
||||
{{l10n "For language:"}}<br/>
|
||||
<select name="target">
|
||||
{{#each localesList}}
|
||||
<option value="{{id}}"{{#ifEqual id ../formtarget}} selected="selected"{{/ifEqual}}>{{name}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="fieldForm">
|
||||
<div class="fbutton">
|
||||
<input type="submit" name="save" class="submit-bg-button save-button" value="{{l10n "Download"}}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="formbottom">
|
||||
<div class="formbottomi"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{{/override}}
|
||||
{{/extends}}
|
Loading…
Reference in New Issue
Block a user