Use ['locales.I18n.available'] to generate field label

This commit is contained in:
Nicolas Le Goff
2013-05-31 16:02:20 +02:00
parent 3dcb45d974
commit 16d79abd43
6 changed files with 43 additions and 20 deletions

View File

@@ -31,6 +31,10 @@ class Root implements ControllerProviderInterface
->get('/', $this->call('getRoot'))
->bind('root');
$controllers
->get('/available-languages', $this->call('getAvailableLanguages'))
->bind('available_languages');
$controllers
->get('/robots.txt', $this->call('getRobots'))
->bind('robots');
@@ -70,6 +74,11 @@ class Root implements ControllerProviderInterface
return $response;
}
public function getAvailableLanguages(Application $app, Request $request)
{
return $app->json($app['locales.I18n.available']);
}
/**
* Prefix the method to call with the controller class name
*

View File

@@ -55,15 +55,13 @@
<label class="control-label" for="new-name"">{% trans %}Labels{% endtrans %}</label>
<div class="controls">
<ul class="unstyled inline">
<li class="select lng-label"><a href="#new-label_fr">FR</a></li>
<li class="lng-label"><a href="#new-label_en">EN</a></li>
<li class="lng-label"><a href="#new-label_de">DE</a></li>
<li class="lng-label"><a href="#new-label_nl">NL</a></li>
<% _.each(languages, function(placeholder, code) { %>
<li class="lng-label <%= code === 'fr' ? 'select' : ''%>"><a href="#new-label_<%= code %>"><%= code %></a></li>
<% }); %>
</ul>
<input type="text" id="new-label_en" class="input-block-level input-label" style="display:none" placeholder="{% trans %}English label{% endtrans %}">
<input type="text" id="new-label_fr" class="input-block-level input-label" placeholder="{% trans %}French label{% endtrans %}">
<input type="text" id="new-label_de" class="input-block-level input-label" style="display:none" placeholder="{% trans %}German label{% endtrans %}">
<input type="text" id="new-label_nl" class="input-block-level input-label" style="display:none" placeholder="{% trans %}Dutch label{% endtrans %}">
<% _.each(languages, function(placeholder, code) { %>
<input type="text" id="new-label_<%= code %>" class="input-block-level input-label" <%= code === 'fr' ? '' : 'style="display:none"'%> placeholder="<%= placeholder %>">
<% }); %>
<span class="help-block"></span>
</div>
</div>
@@ -105,15 +103,15 @@
<tr class="edit-label ">
<td colspan="2" class="control-group">
<ul class="unstyled inline">
<li class="select lng-label"><a href="#label_fr">FR</a></li>
<li class="lng-label"><a href="#label_en">EN</a></li>
<li class="lng-label"><a href="#label_de">DE</a></li>
<li class="lng-label"><a href="#label_nl">NL</a></li>
<ul class="unstyled inline">
<% _.each(field.labels, function(value, code) { %>
<li class="lng-label <%= code === 'fr' ? 'select' : ''%>"><a href="#label_<%= code %>"><%= code %></a></li>
<% }); %>
</ul>
<input type="text" value="<%= field.label_en %>" id="label_en" class="input-block-level input-label" style="display:none" placeholder="{% trans %}English label{% endtrans %}">
<input type="text" value="<%= field.label_fr %>" id="label_fr" class="input-block-level input-label" placeholder="{% trans %}French label{% endtrans %}">
<input type="text" value="<%= field.label_de %>" id="label_de" class="input-block-level input-label" style="display:none" placeholder="{% trans %}German label{% endtrans %}">
<input type="text" value="<%= field.label_nl %>" id="label_nl" class="input-block-level input-label" style="display:none" placeholder="{% trans %}Dutch label{% endtrans %}">
</ul>
<% _.each(field.labels, function(value, code) { %>
<input type="text" value="<%= value %>" id="label_<%= code %>" class="input-block-level input-label" <%= code === 'fr' ? '' : 'style="display:none"'%> >
<% }); %>
</td>
</tr>
<tr>

View File

@@ -40,6 +40,14 @@ class RootTest extends \PhraseanetWebTestCaseAuthenticatedAbstract
$this->assertRegExp('/^\/login\/\?redirect=[\/a-zA-Z]+/', $response->headers->get('location'));
}
public function testRouteAvailableLanguages()
{
$crawler = self::$DI['client']->request('GET', '/available-languages');
$response = self::$DI['client']->getResponse();
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals((array) json_decode($response->getContent()), self::$DI['app']['locales.I18n.available']);
}
public function testRouteRobots()
{
$original_value = self::$DI['app']['phraseanet.registry']->get('GV_allow_search_engine');

View File

@@ -58,13 +58,19 @@ define([
AdminFieldApp.dcFieldsCollection = new DcFieldsCollection();
// load strings
i18n.init({ resGetPath: "/admin/fields/language.json"});
i18n.init({resGetPath: "/admin/fields/language.json"});
// load all collections
$.when.apply($, [
AdminFieldApp.fieldsCollection.fetch(),
AdminFieldApp.vocabularyCollection.fetch(),
AdminFieldApp.dcFieldsCollection.fetch()
AdminFieldApp.dcFieldsCollection.fetch(),
$.ajax({
url: '/available-languages',
success: function(languages) {
AdminFieldApp.languages = languages;
}
})
]).done(
function() {
// register views

View File

@@ -25,7 +25,9 @@ define([
"click .lng-label a": "_toggleLabels"
},
render: function() {
var template = _.template($("#create_template").html());
var template = _.template($("#create_template").html(), {
languages: AdminFieldApp.languages
});
this.$el.html(template);

View File

@@ -54,7 +54,7 @@ define([
});
},
render: function() {
var template = _.template($("#item_list_view_template").html(), {});
var template = _.template($("#item_list_view_template").html());
this.$el.empty().html(template);