瀏覽代碼

Se agrega extensión Twig para traducir label de los workflows. Se
agrupan acciones de workflow en un solo botón.

Maximiliano Schvindt 8 年之前
父節點
當前提交
908961cd72

+ 1 - 1
Resources/config/services.yml

@@ -32,7 +32,7 @@ services:
         class: WorkflowBundle\Twig\WorkflowExtension
         tags:
             - { name: twig.extension }
-        arguments: ["@workflow.registry"]
+        arguments: ["@workflow.registry","@translator"]
     workflow.action_event.subscriber:
         class: WorkflowBundle\EventListener\ActionEventSubscriber
         tags:

+ 2 - 1
Resources/translations/WorkflowBundle.es.yml

@@ -108,4 +108,5 @@ Incorrect State: Estado erróneo
 Undefined Workflow: Sin workflow
 workflow_edit_create_alert: "Para realizar el template, tenga en cuenta:"
 Workflow Documentation: Documentación sobre Workflows
-YAML Documentation: Sintaxis básica para YAML
+YAML Documentation: Sintaxis básica para YAML
+Actions Workflow: Acciones

+ 44 - 0
Resources/translations/WorkflowLabel.es.yml

@@ -0,0 +1,44 @@
+Undefined State: Sin estado
+Incorrect State: Estado erróneo
+Undefined Workflow: Sin workflow
+workflow:
+  administrative_state:
+    places:
+      active: Activo
+      pre_notice: Pre Aviso
+      suspend: Suspendido
+      deleted: Eliminado
+    transitions:
+      active_to_pre_notice: Notificar
+      active_to_suspend: Suspender
+      pre_notice_to_active: Activar
+      pre_notice_to_suspend: Suspender
+      suspend_to_active: Activar
+      delete: Eliminar
+  transition_state:
+    places:
+      pending: Pendiente
+      process: Procesando
+      fail: Falló
+      success: Finalizó
+    transitions:
+      pending_to_process: Procesar
+      process_to_fail: Poner en Fallo
+      process_to_success: Poner en Finalizado
+      fail_to_pending: Poner Pendiente
+      success_to_pending: Poner Pendiente
+  olt_workflow:
+    places:
+      enabled: Habilitado
+      disabled: Deshabilitado
+    transitions:
+      disable: Deshabilitar
+      enable: Habilitar
+  onu_workflow:
+    places:
+      active: Activo
+      disable: Deshabilitado
+    transitions:
+      add_config: Configurar
+      disable: Deshabilitar
+      active: Activar

+ 4 - 1
Resources/views/Workflow/base_list_field_current_state.html.twig

@@ -2,6 +2,9 @@
 
 {% block field %}
     <div>
-        <a href="{{path('admin_workflow_workflow_show_workflow',{class: get_class(object), id:object.getId()})}}">{{object.getCurrentState()}}</a>
+        <a href="{{path('admin_workflow_workflow_show_workflow',{class: get_class(object), id:object.getId()})}}">
+        {% set label = field_description.options.workflowName ~ '.places.' ~ object.getCurrentState() %}
+        {{ workflow_translate_label(label, object.getCurrentState(),{},"WorkflowLabel") }}
+        </a>
     </div>
 {% endblock %}

+ 19 - 10
Resources/views/Workflow/show_transitions.html.twig

@@ -1,19 +1,28 @@
 {% if object.getWorkflow() is null %}
-    <a  href="#" name="transition" value="" class="btn btn-sm view_link btn-danger" disabled="disabled">{{ "Undefined Workflow"|trans({},'WorkflowBundle') }}</a>
+    <a  href="#" name="transition" value="" class="btn btn-sm view_link btn-danger" disabled="disabled">{{ "Undefined Workflow"|trans({},'WorkflowLabel') }}</a>
 {% else %}
     {% if workflow_correct_state(object, object.getWorkflowName()) %}
+        <div class="btn-group">
+            <button class="btn btn-default btn-sm dropdown-toggle" type="button" data-toggle="dropdown" aria-expanded="false">
+                <i class="fa fa-bars" aria-hidden="true" style="margin-right:1px"></i>&nbsp;{{ "Actions Workflow"|trans({},'WorkflowLabel') }}
+            </button>
+            <ul class="dropdown-menu">
+
         {% for transition in workflow_transitions(object, object.getWorkflowName()) %}
-            <a  href="{{path('admin_workflow_workflow_apply_transition',{class: get_class(object), id:object.getId(), transition:transition.name})}}" name="transition" value="{{ transition.name }}"
-            {% if workflow_can(object, transition.name, object.getWorkflowName()) -%}
-                class="btn btn-sm btn-default view_link btn-info"
-            {% else %}
-                class="btn btn-sm btn-default view_link btn-danger" disabled="disabled"
-            {% endif %}
-        > {{ transition.name }}</a>
+            <li>
+                {% set url = path('admin_workflow_workflow_apply_transition',{class: get_class(object), id:object.getId(), transition:transition.name}) %}
+                {% set label = 'workflow.' ~ object.getWorkflowName ~ '.transitions.' ~ transition.name %}
+                <a  href="{{url}}" name="transition" value="{{ transition.name }}"> {{ workflow_translate_label(label, transition.name,{},"WorkflowLabel") }}</a>
+            </li>
         {% endfor %}
+            </ul>
+        <div class="btn-group">
     {% elseif object.getCurrentState() is null %}
-        <a  href="{{ path('admin_workflow_workflow_reset_state', {class: get_class(object), id: object.getId()}) }}" name="transition" value="" class="btn btn-sm view_link btn-danger">{{ "Undefined State"|trans({},'WorkflowBundle') }}</a>
+        <a  href="{{ path('admin_workflow_workflow_reset_state', {class: get_class(object), id: object.getId()}) }}" name="transition" value="" class="btn btn-sm view_link btn-danger">{{ "Undefined State"|trans({},'WorkflowLabel') }}</a>
     {% else %}
-        <a  href="{{ path('admin_workflow_workflow_reset_state', {class: get_class(object), id: object.getId()}) }}" name="transition" value="" class="btn btn-sm view_link btn-danger">{{ "Incorrect State"|trans({},'WorkflowBundle') }}</a>
+        <a  href="{{ path('admin_workflow_workflow_reset_state', {class: get_class(object), id: object.getId()}) }}" name="transition" value="" class="btn btn-sm view_link btn-danger">{{ "Incorrect State"|trans({},'WorkflowLabel') }}</a>
     {% endif %}
 {% endif %}
+
+
+

+ 6 - 3
Resources/views/Workflow/show_workflow.html.twig

@@ -20,7 +20,9 @@
                 <h2>Workflow: {{object.getWorkflowName()}}</h2>
                 <p>
                     <code>
-                        {{get_class(object)}}::current_state = {{ object.getCurrentState() }}
+                        {% set label = 'workflow.' ~ object.getWorkflowName ~ '.places.' ~ object.getCurrentState() %}
+                        Object {{get_class(object)}}<br />
+                        current_state = {{ object.getCurrentState() }} | [trans: {{ workflow_translate_label(label, object.getCurrentState(),{},"WorkflowLabel") }}]
                     </code>
                 </p>
                 <p>
@@ -32,7 +34,7 @@
             <div class="col-md-6">
                 <h2>What can you do?</h2>
                     <div class="btn-group-vertical" role="group">
-                        <code style="color:black;text-align:center">current_state</code> 
+                        {#<code style="color:black;text-align:center">current_state</code> #}
                         {% if workflow_transitions(object, object.getWorkflowName())|length > 0 %}
                             {% for transition in workflow_transitions(object, object.getWorkflowName()) %}
                                 <a  href="{{path('admin_workflow_workflow_apply_transition',{class: get_class(object),id:object.getId(),transition:transition.name})}}" name="transition" value="{{ transition.name }}"
@@ -42,7 +44,8 @@
                                         class="btn btn-danger" disabled="disabled"
                                     {%- endif -%}
                                 >
-                                    {{ transition.name }}
+                                    {% set label = 'workflow.' ~ object.getWorkflowName ~ '.transitions.' ~ transition.name %}
+                                    {{ transition.name }} | [trans: {{ workflow_translate_label(label, transition.name,{},"WorkflowLabel") }}]
                                 </a>
                             {% endfor %}
                         {% else %}

+ 19 - 2
Twig/WorkflowExtension.php

@@ -3,14 +3,17 @@
 namespace WorkflowBundle\Twig;
 
 use Symfony\Component\Workflow\Registry;
+use Symfony\Component\Translation\DataCollectorTranslator as Translator;
 
 class WorkflowExtension extends \Twig_Extension
 {
     private $workflowRegistry;
+    private $translator;
 
-    public function __construct(Registry $workflowRegistry)
+    public function __construct(Registry $workflowRegistry, Translator $translator)
     {
         $this->workflowRegistry = $workflowRegistry;
+        $this->translator = $translator;
     }
 
     public function getFunctions()
@@ -19,7 +22,8 @@ class WorkflowExtension extends \Twig_Extension
             new \Twig_SimpleFunction('workflow_can', array($this, 'canTransition')),
             new \Twig_SimpleFunction('workflow_transitions', array($this, 'getEnabledTransitions')),
             new \Twig_SimpleFunction('workflow_correct_state', array($this, 'isCorrectState')),
-            new \Twig_SimpleFunction('get_class', array($this, 'getClass'))
+            new \Twig_SimpleFunction('get_class', array($this, 'getClass')),
+            new \Twig_SimpleFunction('workflow_translate_label', array($this, 'getLabelTranslate'))
         );
     }
 
@@ -65,4 +69,17 @@ class WorkflowExtension extends \Twig_Extension
     {
         return get_class($object);
     }
+
+    public function getLabelTranslate($label, $alternative, $params = null, $resource = "WorkflowLabel") 
+    {
+        if(is_null($params)) $params = array();
+        
+        $trans = $this->translator->trans($label,$params,$resource);
+
+        if($trans == $label) {
+            return $alternative;
+        }
+
+        return $trans;
+    }
 }