Sfoglia il codice sorgente

Merge pull request #1476 from coopTilleuls/confirm-exit

Ask before quitting a page with unsaved changes
Thomas 12 anni fa
parent
commit
b90b666cf2
29 ha cambiato i file con 148 aggiunte e 0 eliminazioni
  1. 1 0
      DependencyInjection/Configuration.php
  2. 1 0
      Resources/doc/reference/configuration.rst
  3. 3 0
      Resources/public/base.js
  4. 38 0
      Resources/public/jquery/jquery.confirmExit.js
  5. 4 0
      Resources/translations/SonataAdminBundle.bg.xliff
  6. 4 0
      Resources/translations/SonataAdminBundle.ca.xliff
  7. 4 0
      Resources/translations/SonataAdminBundle.cs.xliff
  8. 4 0
      Resources/translations/SonataAdminBundle.de.xliff
  9. 4 0
      Resources/translations/SonataAdminBundle.en.xliff
  10. 4 0
      Resources/translations/SonataAdminBundle.es.xliff
  11. 4 0
      Resources/translations/SonataAdminBundle.eu.xliff
  12. 4 0
      Resources/translations/SonataAdminBundle.fa.xliff
  13. 4 0
      Resources/translations/SonataAdminBundle.fr.xliff
  14. 4 0
      Resources/translations/SonataAdminBundle.hr.xliff
  15. 4 0
      Resources/translations/SonataAdminBundle.hu.xliff
  16. 4 0
      Resources/translations/SonataAdminBundle.it.xliff
  17. 4 0
      Resources/translations/SonataAdminBundle.ja.xliff
  18. 4 0
      Resources/translations/SonataAdminBundle.lb.xliff
  19. 4 0
      Resources/translations/SonataAdminBundle.nl.xliff
  20. 4 0
      Resources/translations/SonataAdminBundle.pl.xliff
  21. 4 0
      Resources/translations/SonataAdminBundle.pt.xliff
  22. 4 0
      Resources/translations/SonataAdminBundle.pt_BR.xliff
  23. 4 0
      Resources/translations/SonataAdminBundle.ro.xliff
  24. 4 0
      Resources/translations/SonataAdminBundle.ru.xliff
  25. 4 0
      Resources/translations/SonataAdminBundle.sk.xliff
  26. 4 0
      Resources/translations/SonataAdminBundle.sl.xliff
  27. 4 0
      Resources/translations/SonataAdminBundle.uk.xliff
  28. 4 0
      Resources/translations/SonataAdminBundle.zh_CN.xliff
  29. 9 0
      Resources/views/standard_layout.html.twig

+ 1 - 0
DependencyInjection/Configuration.php

@@ -74,6 +74,7 @@ class Configuration implements ConfigurationInterface
                     ->addDefaultsIfNotSet()
                     ->children()
                         ->scalarNode('html5_validate')->defaultValue(true)->end()
+                        ->scalarNode('confirm_exit')->defaultValue(true)->end()
                     ->end()
                 ->end()
                 ->arrayNode('dashboard')

+ 1 - 0
Resources/doc/reference/configuration.rst

@@ -27,6 +27,7 @@ Full Configuration Options
         title_logo: bundles/sonataadmin/logo_title.png
         options:
             html5_validate: false # does not use html5 validation
+            confirm_exit:   false # disable confirmation when quitting with unsaved changes
             
         templates:
             # default global templates

+ 3 - 0
Resources/public/base.js

@@ -1,5 +1,8 @@
 jQuery(document).ready(function() {
     jQuery('html').removeClass('no-js');
+    if (window.SONATA_CONFIG.CONFIRM_EXIT) {
+        jQuery('.sonata-ba-form form').confirmExit(window.SONATA_TRANSLATIONS.CONFIRM_EXIT);
+    }
     Admin.add_pretty_errors(document);
     Admin.add_filters(document);
     Admin.set_object_field_value(document);

+ 38 - 0
Resources/public/jquery/jquery.confirmExit.js

@@ -0,0 +1,38 @@
+/*!
+* jQuery confirmExit plugin
+* https://github.com/dunglas/jquery.confirmExit
+*
+* Copyright 2012 Kévin Dunglas <dunglas@gmail.com>
+* Released under the MIT license
+* http://www.opensource.org/licenses/mit-license.php
+*/
+(function ($) {
+	$.fn.confirmExit = function(message) {
+		var confirmExit = false;
+
+		$('input, textarea, select', this).on('change keyup', function() {
+			// Do not set the event handler if not needed
+			if (!confirmExit) {
+				confirmExit = true;
+
+				window.onbeforeunload = function(event) {
+					var e = event || window.event;
+
+					// For old IE and Firefox
+					if (e) {
+						e.returnValue = message;
+					}
+
+					return message;
+				}
+			}
+		});
+
+		this.submit(function() {
+			window.onbeforeunload = null;
+			confirmExit = false;
+		});
+
+		return this;
+	}
+	})(jQuery);

+ 4 - 0
Resources/translations/SonataAdminBundle.bg.xliff

@@ -346,6 +346,10 @@
               <source>list_select</source>
               <target>list_select</target>
             </trans-unit>
+            <trans-unit id="confirm_exit">
+                <source>confirm_exit</source>
+                <target>confirm_exit</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.ca.xliff

@@ -346,6 +346,10 @@
               <source>list_select</source>
               <target>list_select</target>
             </trans-unit>
+            <trans-unit id="confirm_exit">
+                <source>confirm_exit</source>
+                <target>confirm_exit</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.cs.xliff

@@ -346,6 +346,10 @@
               <source>list_select</source>
               <target>list_select</target>
             </trans-unit>
+            <trans-unit id="confirm_exit">
+                <source>confirm_exit</source>
+                <target>confirm_exit</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.de.xliff

@@ -346,6 +346,10 @@
               <source>list_select</source>
               <target>list_select</target>
             </trans-unit>
+            <trans-unit id="confirm_exit">
+                <source>confirm_exit</source>
+                <target>You have unsaved changes.</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

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

@@ -346,6 +346,10 @@
               <source>list_select</source>
               <target>Select</target>
             </trans-unit>
+            <trans-unit id="confirm_exit">
+                <source>confirm_exit</source>
+                <target>You have unsaved changes.</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.es.xliff

@@ -346,6 +346,10 @@
               <source>list_select</source>
               <target>list_select</target>
             </trans-unit>
+            <trans-unit id="confirm_exit">
+                <source>confirm_exit</source>
+                <target>confirm_exit</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.eu.xliff

@@ -346,6 +346,10 @@
               <source>list_select</source>
               <target>list_select</target>
             </trans-unit>
+            <trans-unit id="confirm_exit">
+                <source>confirm_exit</source>
+                <target>confirm_exit</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.fa.xliff

@@ -346,6 +346,10 @@
               <source>list_select</source>
               <target>list_select</target>
             </trans-unit>
+            <trans-unit id="confirm_exit">
+                <source>confirm_exit</source>
+                <target>confirm_exit</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

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

@@ -346,6 +346,10 @@
               <source>list_select</source>
               <target>Sélectionner</target>
             </trans-unit>
+            <trans-unit id="confirm_exit">
+                <source>confirm_exit</source>
+                <target>Vous avez effectué des modifications non sauvegardées.</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.hr.xliff

@@ -346,6 +346,10 @@
               <source>list_select</source>
               <target>list_select</target>
             </trans-unit>
+            <trans-unit id="confirm_exit">
+                <source>confirm_exit</source>
+                <target>confirm_exit</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.hu.xliff

@@ -346,6 +346,10 @@
               <source>list_select</source>
               <target>list_select</target>
             </trans-unit>
+            <trans-unit id="confirm_exit">
+                <source>confirm_exit</source>
+                <target>confirm_exit</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.it.xliff

@@ -346,6 +346,10 @@
               <source>list_select</source>
               <target>Seleziona</target>
             </trans-unit>
+            <trans-unit id="confirm_exit">
+                <source>confirm_exit</source>
+                <target>confirm_exit</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.ja.xliff

@@ -346,6 +346,10 @@
               <source>list_select</source>
               <target>list_select</target>
             </trans-unit>
+            <trans-unit id="confirm_exit">
+                <source>confirm_exit</source>
+                <target>confirm_exit</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.lb.xliff

@@ -346,6 +346,10 @@
               <source>list_select</source>
               <target>list_select</target>
             </trans-unit>
+            <trans-unit id="confirm_exit">
+                <source>confirm_exit</source>
+                <target>confirm_exit</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.nl.xliff

@@ -346,6 +346,10 @@
               <source>list_select</source>
               <target>list_select</target>
             </trans-unit>
+            <trans-unit id="confirm_exit">
+                <source>confirm_exit</source>
+                <target>confirm_exit</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.pl.xliff

@@ -346,6 +346,10 @@
               <source>list_select</source>
               <target>list_select</target>
             </trans-unit>
+            <trans-unit id="confirm_exit">
+                <source>confirm_exit</source>
+                <target>confirm_exit</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.pt.xliff

@@ -346,6 +346,10 @@
               <source>list_select</source>
               <target>Selecionar</target>
             </trans-unit>
+            <trans-unit id="confirm_exit">
+                <source>confirm_exit</source>
+                <target>confirm_exit</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.pt_BR.xliff

@@ -346,6 +346,10 @@
               <source>list_select</source>
               <target>list_select</target>
             </trans-unit>
+            <trans-unit id="confirm_exit">
+                <source>confirm_exit</source>
+                <target>confirm_exit</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.ro.xliff

@@ -346,6 +346,10 @@
               <source>list_select</source>
               <target>Selectați</target>
             </trans-unit>
+            <trans-unit id="confirm_exit">
+                <source>confirm_exit</source>
+                <target>confirm_exit</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.ru.xliff

@@ -346,6 +346,10 @@
               <source>list_select</source>
               <target>list_select</target>
             </trans-unit>
+            <trans-unit id="confirm_exit">
+                <source>confirm_exit</source>
+                <target>confirm_exit</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.sk.xliff

@@ -346,6 +346,10 @@
               <source>list_select</source>
               <target>list_select</target>
             </trans-unit>
+            <trans-unit id="confirm_exit">
+                <source>confirm_exit</source>
+                <target>confirm_exit</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.sl.xliff

@@ -346,6 +346,10 @@
               <source>list_select</source>
               <target>list_select</target>
             </trans-unit>
+            <trans-unit id="confirm_exit">
+                <source>confirm_exit</source>
+                <target>confirm_exit</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.uk.xliff

@@ -346,6 +346,10 @@
               <source>list_select</source>
               <target>list_select</target>
             </trans-unit>
+            <trans-unit id="confirm_exit">
+                <source>confirm_exit</source>
+                <target>confirm_exit</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

+ 4 - 0
Resources/translations/SonataAdminBundle.zh_CN.xliff

@@ -346,6 +346,10 @@
               <source>list_select</source>
               <target>list_select</target>
             </trans-unit>
+            <trans-unit id="confirm_exit">
+                <source>confirm_exit</source>
+                <target>confirm_exit</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>

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

@@ -37,6 +37,14 @@ file that was distributed with this source code.
         {% endblock %}
 
         {% block javascripts %}
+            <script type="text/javascript">
+                window.SONATA_CONFIG = {
+                    CONFIRM_EXIT: {% if admin_pool.getOption('confirm_exit') %}true{% else %}false{% endif %}
+                };
+                window.SONATA_TRANSLATIONS = {
+                    CONFIRM_EXIT:  '{{ 'confirm_exit'|trans({}, 'SonataAdminBundle')|escape('js') }}'
+               };
+            </script>
             <script src="{{ asset('bundles/sonatajquery/jquery-1.8.3.js') }}" type="text/javascript"></script>
             <script src="{{ asset('bundles/sonatajquery/jquery-ui-1.8.23.js') }}" type="text/javascript"></script>
             <script src="{{ asset('bundles/sonatajquery/jquery-ui-i18n.js') }}" type="text/javascript"></script>
@@ -44,6 +52,7 @@ file that was distributed with this source code.
             <script src="{{ asset('bundles/sonataadmin/bootstrap/js/bootstrap.min.js') }}" type="text/javascript"></script>
 
             <script src="{{ asset('bundles/sonataadmin/jquery/jquery.form.js') }}" type="text/javascript"></script>
+            {% if admin_pool.getOption('confirm_exit') %}<script src="{{ asset('bundles/sonataadmin/jquery/jquery.confirmExit.js') }}" type="text/javascript"></script>{% endif %}
             <script src="{{ asset('bundles/sonataadmin/base.js') }}" type="text/javascript"></script>
         {% endblock %}