Prechádzať zdrojové kódy

Merge pull request #1873 from eko/master

SONATA-179 - Add an optional confirmation modal for boolean types
Thomas 11 rokov pred
rodič
commit
b0aa1b135d

+ 1 - 1
Resources/public/base.js

@@ -141,7 +141,7 @@ var Admin = {
     add_filters: function(subject) {
         jQuery('div.filter_container .sonata-filter-option', subject).hide();
         jQuery('fieldset.filter_legend', subject).click(function(event) {
-           jQuery('div.filter_container .sonata-filter-option', jQuery(event.target).parent()).toggle();
+            jQuery('div.filter_container .sonata-filter-option', jQuery(event.target).parent()).toggle();
         });
     },
 

+ 1 - 1
Resources/views/CRUD/base_list_field.html.twig

@@ -25,7 +25,7 @@ file that was distributed with this source code.
 
         {% if isEditable and xEditableType %}
             {% set url = path('sonata_admin_set_object_field_value', { 'context': 'list', 'field': field_description.name, 'objectId': admin.id(object), 'code': admin.code(object) })  %}
-            <span class="x-editable" data-type="{{ xEditableType }}" data-value="{{ value }}" data-title="{{ field_description.label|trans({}, field_description.translationDomain) }}" data-pk="{{ admin.id(object) }}" data-url="{{ url }}">
+            <span {% block field_span_attributes %}class="x-editable" data-type="{{ xEditableType }}" data-value="{{ value }}" data-title="{{ field_description.label|trans({}, field_description.translationDomain) }}" data-pk="{{ admin.id(object) }}" data-url="{{ url }}" {% endblock %}>
                 {{ block('field') }}
             </span>
         {% else %}

+ 13 - 18
Resources/views/CRUD/list_boolean.html.twig

@@ -11,24 +11,19 @@ file that was distributed with this source code.
 
 {% extends admin.getTemplate('base_list_field') %}
 
+{% block field_span_attributes %}
+    {% spaceless %}
+        {{ parent() }}
+        data-source="[{value: 0, text: '{%- trans from 'SonataAdminBundle' %}label_type_no{% endtrans -%}'},{value: 1, text: '{%- trans from 'SonataAdminBundle' %}label_type_yes{% endtrans -%}'}]"
+    {% endspaceless %}
+{% endblock %}
+
 {% block field %}
-{% spaceless %}
-{% if field_description.options.editable is defined and field_description.options.editable and admin.isGranted('EDIT', object) %}
-    {% if value %}
-        <a href="{{ url('sonata_admin_set_object_field_value', { 'context': 'list', 'field': field_description.name, 'objectId': admin.id(object), 'value': 0, 'code': admin.code(object) }) }}" class="sonata-ba-action sonata-ba-edit-inline">
+    {% spaceless %}
+        {% if value %}
             <span class="label label-success">{%- trans from 'SonataAdminBundle' %}label_type_yes{% endtrans -%}</span>
-        </a>
-    {% else %}
-        <a href="{{ url('sonata_admin_set_object_field_value', { 'context': 'list', 'field': field_description.name, 'objectId': admin.id(object), 'value': 1, 'code': admin.code(object) }) }}" class="sonata-ba-action sonata-ba-edit-inline">
+        {% else %}
             <span class="label label-important">{%- trans from 'SonataAdminBundle' %}label_type_no{% endtrans -%}</span>
-        </a>
-    {% endif %}
-{% else %}
-    {% if value %}
-        <span class="label label-success">{%- trans from 'SonataAdminBundle' %}label_type_yes{% endtrans -%}</span>
-    {% else %}
-        <span class="label label-important">{%- trans from 'SonataAdminBundle' %}label_type_no{% endtrans -%}</span>
-    {% endif %}
-{% endif %}
-{% endspaceless %}
-{% endblock %}
+        {% endif %}
+    {% endspaceless %}
+{% endblock %}

+ 3 - 3
Tests/Twig/Extension/SonataAdminExtensionTest.php

@@ -253,9 +253,9 @@ class SonataAdminExtensionTest extends \PHPUnit_Framework_TestCase
             array('<td class="sonata-ba-list-field sonata-ba-list-field-boolean" objectId="12345"> <span class="label label-success">yes</span> </td>', 'boolean', true, array('editable'=>false)),
             array('<td class="sonata-ba-list-field sonata-ba-list-field-boolean" objectId="12345"> <span class="label label-important">no</span> </td>', 'boolean', false, array('editable'=>false)),
             array('<td class="sonata-ba-list-field sonata-ba-list-field-boolean" objectId="12345"> <span class="label label-important">no</span> </td>', 'boolean', null, array('editable'=>false)),
-            array('<td class="sonata-ba-list-field sonata-ba-list-field-boolean" objectId="12345"> <a href="http://localhost/core/set-object-field-value?context=list&amp;field=fd_name&amp;objectId=12345&amp;value=0&amp;code=xyz" class="sonata-ba-action sonata-ba-edit-inline"><span class="label label-success">yes</span></a> </td>', 'boolean', true, array('editable'=>true)),
-            array('<td class="sonata-ba-list-field sonata-ba-list-field-boolean" objectId="12345"> <a href="http://localhost/core/set-object-field-value?context=list&amp;field=fd_name&amp;objectId=12345&amp;value=1&amp;code=xyz" class="sonata-ba-action sonata-ba-edit-inline"><span class="label label-important">no</span></a> </td>', 'boolean', false, array('editable'=>true)),
-            array('<td class="sonata-ba-list-field sonata-ba-list-field-boolean" objectId="12345"> <a href="http://localhost/core/set-object-field-value?context=list&amp;field=fd_name&amp;objectId=12345&amp;value=1&amp;code=xyz" class="sonata-ba-action sonata-ba-edit-inline"><span class="label label-important">no</span></a> </td>', 'boolean', null, array('editable'=>true)),
+            array('<td class="sonata-ba-list-field sonata-ba-list-field-boolean" objectId="12345"> <a href="http://localhost/core/set-object-field-value?context=list&amp;field=fd_name&amp;objectId=12345&amp;value=0&amp;code=xyz" data-source="[{value: 0, text: \'no\'},{value: 1, text: \'yes\'}]"><span class="label label-success">yes</span></a> </td>', 'boolean', true, array('editable'=>true)),
+            array('<td class="sonata-ba-list-field sonata-ba-list-field-boolean" objectId="12345"> <a href="http://localhost/core/set-object-field-value?context=list&amp;field=fd_name&amp;objectId=12345&amp;value=1&amp;code=xyz" data-source="[{value: 0, text: \'no\'},{value: 1, text: \'yes\'}]"><span class="label label-important">no</span></a> </td>', 'boolean', false, array('editable'=>true)),
+            array('<td class="sonata-ba-list-field sonata-ba-list-field-boolean" objectId="12345"> <a href="http://localhost/core/set-object-field-value?context=list&amp;field=fd_name&amp;objectId=12345&amp;value=1&amp;code=xyz" data-source="[{value: 0, text: \'no\'},{value: 1, text: \'yes\'}]"><span class="label label-important">no</span></a> </td>', 'boolean', null, array('editable'=>true)),
             array('<td class="sonata-ba-list-field sonata-ba-list-field-trans" objectId="12345"> Delete </td>', 'trans', 'action_delete', array('catalogue'=>'SonataAdminBundle')),
             array('<td class="sonata-ba-list-field sonata-ba-list-field-trans" objectId="12345"> </td>', 'trans', null, array('catalogue'=>'SonataAdminBundle')),
             array('<td class="sonata-ba-list-field sonata-ba-list-field-choice" objectId="12345"> Status1 </td>', 'choice', 'Status1', array()),

+ 1 - 0
Twig/Extension/SonataAdminExtension.php

@@ -241,6 +241,7 @@ class SonataAdminExtension extends \Twig_Extension
     public function getXEditableType($type)
     {
         $mapping = array(
+            'boolean'    => 'select',
             'text'       => 'text',
             'textarea'   => 'textarea',
             'email'      => 'email',