Преглед на файлове

Merge pull request #223 from mteneur/master

User flash notifications
Thomas преди 14 години
родител
ревизия
ab605913c8

+ 10 - 7
Controller/CRUDController.php

@@ -146,8 +146,9 @@ class CRUDController extends Controller
 
         $modelManager = $this->admin->getModelManager();
         $modelManager->batchDelete($this->admin->getClass(), $query);
+        $this->get('session')->setFlash('sonata_flash_success', 'flash_batch_delete_success');
+
 
-        // todo : add confirmation flash var
         return new RedirectResponse($this->admin->generateUrl('list', $this->admin->getFilterParameters()));
     }
 
@@ -165,7 +166,7 @@ class CRUDController extends Controller
         }
 
         $this->admin->delete($object);
-
+        $this->get('session')->setFlash('sonata_flash_success', 'flash_delete_success');
         return new RedirectResponse($this->admin->generateUrl('list'));
     }
 
@@ -194,10 +195,11 @@ class CRUDController extends Controller
 
         if ($this->get('request')->getMethod() == 'POST') {
             $form->bindRequest($this->get('request'));
-
+            
             if ($form->isValid()) {
                 $this->admin->update($object);
-
+                $this->get('session')->setFlash('sonata_flash_success', 'flash_edit_success');
+                
                 if ($this->isXmlHttpRequest()) {
                     return $this->renderJson(array(
                         'result'    => 'ok',
@@ -208,6 +210,7 @@ class CRUDController extends Controller
                 // redirect to edit mode
                 return $this->redirectTo($object);
             }
+            $this->get('session')->setFlash('sonata_flash_error', 'flash_edit_error');
         }
 
         return $this->render($this->admin->getEditTemplate(), array(
@@ -263,7 +266,7 @@ class CRUDController extends Controller
         $all_elements = $this->get('request')->get('all_elements', false);
 
         if (count($idx) == 0 && !$all_elements) { // no item selected
-            // todo : add flash information
+            $this->get('session')->setFlash('sonata_flash_notice', 'flash_batch_empty');
 
             return new RedirectResponse($this->admin->generateUrl('list', $this->admin->getFilterParameters()));
         }
@@ -290,7 +293,6 @@ class CRUDController extends Controller
         if (count($idx) > 0) {
             $this->admin->getModelManager()->addIdentifiersToQuery($this->admin->getClass(), $query, $idx);
         }
-
         return call_user_func(array($this, $final_action), $query);
     }
 
@@ -322,10 +324,11 @@ class CRUDController extends Controller
                         'objectId' => $this->admin->getNormalizedIdentifier($object)
                     ));
                 }
-
+                $this->get('session')->setFlash('sonata_flash_success','flash_create_success');
                 // redirect to edit mode
                 return $this->redirectTo($object);
             }
+            $this->get('session')->setFlash('sonata_flash_error', 'flash_create_error');
         }
 
         return $this->render($this->admin->getEditTemplate(), array(

+ 36 - 0
Resources/translations/SonataAdminBundle.en.xliff

@@ -114,6 +114,42 @@
                 <source>all_elements</source>
                 <target>All elements</target>
             </trans-unit>
+            <trans-unit id='flash_batch_empty'>
+              <source>flash_batch_empty</source>
+              <target>Action aborted. No items where selected.</target>
+            </trans-unit>
+            <trans-unit id='flash_create_success'>
+              <source>flash_create_success</source>
+              <target>Item has been successfully created.</target>
+            </trans-unit>
+            <trans-unit id='flash_create_error'>
+              <source>flash_create_error</source>
+              <target>An error has occurred during item creation.</target>
+            </trans-unit>
+            <trans-unit id='flash_edit_success'>
+              <source>flash_edit_success</source>
+              <target>Item has been successfully updated.</target>
+            </trans-unit>
+            <trans-unit id='flash_edit_error'>
+              <source>flash_edit_error</source>
+              <target>An error has occurred during item update.</target>
+            </trans-unit>
+            <trans-unit id='flash_batch_delete_success'>
+              <source>flash_batch_delete_success</source>
+              <target>Selected items have been successfully deleted.</target>
+            </trans-unit>
+            <trans-unit id='flash_batch_delete_error'>
+              <source>flash_batch_delete_error</source>
+              <target>An Error has occurred during selected items deletion.</target>
+            </trans-unit>
+            <trans-unit id='flash_delete_error'>
+              <source>flash_delete_error</source>
+              <target>An Error has occurred during item deletion.</target>
+            </trans-unit>
+            <trans-unit id='flash_delete_success'>
+              <source>flash_delete_success</source>
+              <target>Item has been deleted successfully.</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 36 - 0
Resources/translations/SonataAdminBundle.fr.xliff

@@ -114,6 +114,42 @@
                 <source>all_elements</source>
                 <target>Tous les éléments</target>
             </trans-unit>
+            <trans-unit id='flash_batch_empty'>
+              <source>flash_batch_empty</source>
+              <target>Action interrompue. Aucun élément n'a été séléctionné.</target>
+            </trans-unit>
+            <trans-unit id='flash_create_success'>
+              <source>flash_create_success</source>
+              <target>L'élément a été crée avec succès.</target>
+            </trans-unit>
+            <trans-unit id='flash_create_error'>
+              <source>flash_create_error</source>
+              <target>Une erreur est intervenue lors de la création de l'élément.</target>
+            </trans-unit>
+            <trans-unit id='flash_edit_success'>
+              <source>flash_edit_success</source>
+              <target>L'élément a été mis à jour avec succès.</target>
+            </trans-unit>
+            <trans-unit id='flash_edit_error'>
+              <source>flash_edit_error</source>
+              <target>Une erreur est intervenue lors de la mise à jour de l'élément.</target>
+            </trans-unit>
+            <trans-unit id='flash_batch_delete_success'>
+              <source>flash_batch_delete_success</source>
+              <target>Les éléments séléctionnés ont été supprimés avec succès.</target>
+            </trans-unit>
+            <trans-unit id='flash_batch_delete_error'>
+              <source>flash_batch_delete_error</source>
+              <target>Une erreur est intervenue lors de la suppression des éléments séléctionnés.</target>
+            </trans-unit>
+            <trans-unit id='flash_delete_error'>
+              <source>flash_delete_error</source>
+              <target>Une erreur est intervenue lors de la suppression de l'élément.</target>
+            </trans-unit>
+            <trans-unit id='flash_delete_success'>
+              <source>flash_delete_success</source>
+              <target>Les éléments ont été supprimés avec succès.</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 13 - 0
Resources/views/standard_layout.html.twig

@@ -92,6 +92,19 @@ file that was distributed with this source code.
                     {% endblock %}
                     </h1>
                 </div>
+                
+                {# flash notice defined in CRUDController after actions- 3 levels #}
+                {% for notice_level in ['success','error','notice'] %}
+
+                   {% set session_var = 'sonata_flash_' ~ notice_level %}
+                    {% if app.session.hasFlash(session_var) %}
+                        <div class="{{notice_level}}">
+                        {{ app.session.flash(session_var) | trans([],'SonataAdminBundle') }}
+                       </div>
+                    {% endif %}
+                
+                {% endfor %}
+               
             </div>
 
             {% if preview is not empty %}