Jelajahi Sumber

javascript dans un js

François 6 tahun lalu
induk
melakukan
6a213b0b6a

+ 65 - 0
src/AppBundle/Resources/public/assets/collectiontypeadd.js

@@ -0,0 +1,65 @@
+$(document).ready(function() {
+    // On récupère la balise <div> en question qui contient l'attribut « data-prototype » qui nous intéresse.
+    var $container = $('div#appbundle_film_realisateurs');
+
+    // On définit un compteur unique pour nommer les champs qu'on va ajouter dynamiquement
+    var index = $container.find(':input').length;
+
+    // On ajoute un nouveau champ à chaque clic sur le lien d'ajout.
+    $('#add_realisateur').click(function(e) {
+        addRealisateur($container);
+
+        e.preventDefault(); // évite qu'un # apparaisse dans l'URL
+        return false;
+    });
+
+    // On ajoute un premier champ automatiquement s'il n'en existe pas déjà un (cas d'une nouvelle annonce par exemple).
+    if (index == 0) {
+        addRealisateur($container);
+    } else {
+        // S'il existe déjà des catégories, on ajoute un lien de suppression pour chacune d'entre elles
+        $container.children('div').each(function() {
+            addDeleteLink($(this));
+        });
+    }
+
+    // La fonction qui ajoute un formulaire RealisateurType
+    function addRealisateur($container) {
+        // Dans le contenu de l'attribut « data-prototype », on remplace :
+        // - le texte "__name__label__" qu'il contient par le label du champ
+        // - le texte "__name__" qu'il contient par le numéro du champ
+        var template = $container.attr('data-prototype')
+            .replace(/__name__label__/g, 'réalisateur n°' + (index+1))
+            .replace(/__name__/g,        index)
+        ;
+
+        // On crée un objet jquery qui contient ce template
+        var $prototype = $(template);
+
+        // On ajoute au prototype un lien pour pouvoir supprimer la catégorie
+        addDeleteLink($prototype);
+
+        // On ajoute le prototype modifié à la fin de la balise <div>
+        $container.append($prototype);
+
+        // Enfin, on incrémente le compteur pour que le prochain ajout se fasse avec un autre numéro
+        index++;
+    }
+
+    // La fonction qui ajoute un lien de suppression d'une catégorie
+    function addDeleteLink($prototype) {
+        // Création du lien
+        var $deleteLink = $('<a href="#" class="btn btn-danger">Supprimer</a>');
+
+        // Ajout du lien
+        $prototype.append($deleteLink);
+
+        // Ajout du listener sur le clic du lien pour effectivement supprimer la catégorie
+        $deleteLink.click(function(e) {
+            $prototype.remove();
+
+            e.preventDefault(); // évite qu'un # apparaisse dans l'URL
+            return false;
+        });
+    }
+});

+ 1 - 0
src/AppBundle/Resources/views/videotheque/ajouter.html.twig

@@ -5,3 +5,4 @@
 {% block body %}
 	{{ include('@App/videotheque/form.html.twig') }}
 {% endblock %}
+{% block javascripts %}<script src="{{ asset('/bundles/app/assets/collectiontypeadd.js') }}"></script>{% endblock %}

+ 0 - 70
src/AppBundle/Resources/views/videotheque/base.html.twig

@@ -2,73 +2,3 @@
 
 {% block title %}Videothèque commune{% endblock %}
 {% block titre %}Vidéothèque commune{% endblock %}
-
-{% block javascripts %}
-    <script type="text/javascript">
-        $(document).ready(function() {
-            // On récupère la balise <div> en question qui contient l'attribut « data-prototype » qui nous intéresse.
-            var $container = $('div#appbundle_film_realisateurs');
-
-            // On définit un compteur unique pour nommer les champs qu'on va ajouter dynamiquement
-            var index = $container.find(':input').length;
-
-            // On ajoute un nouveau champ à chaque clic sur le lien d'ajout.
-            $('#add_realisateur').click(function(e) {
-                addRealisateur($container);
-
-                e.preventDefault(); // évite qu'un # apparaisse dans l'URL
-                return false;
-            });
-
-            // On ajoute un premier champ automatiquement s'il n'en existe pas déjà un (cas d'une nouvelle annonce par exemple).
-            if (index == 0) {
-                addRealisateur($container);
-            } else {
-                // S'il existe déjà des catégories, on ajoute un lien de suppression pour chacune d'entre elles
-                $container.children('div').each(function() {
-                    addDeleteLink($(this));
-                });
-            }
-
-            // La fonction qui ajoute un formulaire RealisateurType
-            function addRealisateur($container) {
-                // Dans le contenu de l'attribut « data-prototype », on remplace :
-                // - le texte "__name__label__" qu'il contient par le label du champ
-                // - le texte "__name__" qu'il contient par le numéro du champ
-                var template = $container.attr('data-prototype')
-                    .replace(/__name__label__/g, 'réalisateur n°' + (index+1))
-                    .replace(/__name__/g,        index)
-                ;
-
-                // On crée un objet jquery qui contient ce template
-                var $prototype = $(template);
-
-                // On ajoute au prototype un lien pour pouvoir supprimer la catégorie
-                addDeleteLink($prototype);
-
-                // On ajoute le prototype modifié à la fin de la balise <div>
-                $container.append($prototype);
-
-                // Enfin, on incrémente le compteur pour que le prochain ajout se fasse avec un autre numéro
-                index++;
-            }
-
-            // La fonction qui ajoute un lien de suppression d'une catégorie
-            function addDeleteLink($prototype) {
-                // Création du lien
-                var $deleteLink = $('<a href="#" class="btn btn-danger">Supprimer</a>');
-
-                // Ajout du lien
-                $prototype.append($deleteLink);
-
-                // Ajout du listener sur le clic du lien pour effectivement supprimer la catégorie
-                $deleteLink.click(function(e) {
-                    $prototype.remove();
-
-                    e.preventDefault(); // évite qu'un # apparaisse dans l'URL
-                    return false;
-                });
-            }
-        });
-    </script>
-{% endblock %}

+ 1 - 0
src/AppBundle/Resources/views/videotheque/modifier.html.twig

@@ -6,3 +6,4 @@
 {% block body %}
 	{{  include('@App/videotheque/form.html.twig') }}
 {% endblock %}
+{% block javascripts %}<script src="{{ asset('/bundles/app/assets/collectiontypeadd.js') }}"></script>{% endblock %}