Bladeren bron

Anomalie #185: Message pour proposition de tag

bastien 13 jaren geleden
bovenliggende
commit
b625521678

+ 4 - 0
app/Resources/translations/userui.fr.yml Bestand weergeven

54
     inputs:
54
     inputs:
55
       cancel:       Annuler
55
       cancel:       Annuler
56
       submit:       Faire la demande
56
       submit:       Faire la demande
57
+    errors:
58
+      min:              Le tag doit être de %limit% caractéres minimum
59
+      max:              Le tag doit être de %limit% caractéres maximum
60
+      unknow:           Une erreur est survenue
57
   new:
61
   new:
58
     has_news:       %count% éléments viennent d'être ajoutés, %link%
62
     has_news:       %count% éléments viennent d'être ajoutés, %link%
59
     has_news_one:   %count% élément vient d'être ajouté, %link%
63
     has_news_one:   %count% élément vient d'être ajouté, %link%

+ 37 - 3
src/Muzich/CoreBundle/Controller/CoreController.php Bestand weergeven

433
   /**
433
   /**
434
    * Ajout d'un tag en base.
434
    * Ajout d'un tag en base.
435
    */
435
    */
436
-  public function addTagAction($name, $arguments = null)
436
+  public function addTagAction()
437
   {
437
   {
438
-    if (($response = $this->mustBeConnected()))
438
+    if (($response = $this->mustBeConnected(true)))
439
     {
439
     {
440
       return $response;
440
       return $response;
441
     }
441
     }
442
     
442
     
443
+    if (strlen((($tag_name = $this->getRequest()->request->get('tag_name')))) 
444
+      < $this->container->getParameter('tag_add_min_length'))
445
+    {
446
+      return $this->jsonResponse(array(
447
+        'status' => 'error',
448
+        'errors' => array($this->trans(
449
+          'tags.add.errors.min', 
450
+          array(
451
+            '%limit%' => $this->container->getParameter('tag_add_min_length')
452
+          ), 
453
+          'userui'
454
+        )
455
+      )));
456
+    }
457
+    
458
+    if (strlen($tag_name) > $this->container->getParameter('tag_add_max_length'))
459
+    {
460
+      return $this->jsonResponse(array(
461
+        'status' => 'error',
462
+        'errors' => array($this->trans(
463
+          'tags.add.errors.max', 
464
+          array(
465
+            '%limit%' => $this->container->getParameter('tag_add_max_length')
466
+          ), 
467
+          'userui'
468
+        )
469
+      )));
470
+    }
471
+    
443
     $tagManager = new TagManager();
472
     $tagManager = new TagManager();
444
-    $tag = $tagManager->addTag($this->getDoctrine(), $name, $this->getUser(), $arguments);
473
+    $tag = $tagManager->addTag(
474
+      $this->getDoctrine(), 
475
+      $tag_name, 
476
+      $this->getUser(), 
477
+      $this->getRequest()->request->get('argument')
478
+    );
445
     
479
     
446
     return $this->jsonResponse(array(
480
     return $this->jsonResponse(array(
447
       'status'   => 'success',
481
       'status'   => 'success',

+ 1 - 1
src/Muzich/CoreBundle/Entity/Tag.php Bestand weergeven

58
   /**
58
   /**
59
    * Nom du tag
59
    * Nom du tag
60
    * 
60
    * 
61
-   * @ORM\Column(type="string", length=64, unique=true)
61
+   * @ORM\Column(type="string", length=64, unique=true, nullable=false)
62
    * @var type string
62
    * @var type string
63
    */
63
    */
64
   protected $name;
64
   protected $name;

+ 1 - 0
src/Muzich/CoreBundle/Managers/TagManager.php Bestand weergeven

78
     }
78
     }
79
     else
79
     else
80
     {
80
     {
81
+      
81
       // Sinon on l'ajoute en base
82
       // Sinon on l'ajoute en base
82
       $tag = new Tag();
83
       $tag = new Tag();
83
       $tag->setName(ucfirst(strtolower($name)));
84
       $tag->setName(ucfirst(strtolower($name)));

+ 2 - 6
src/Muzich/CoreBundle/Resources/config/routing.yml Bestand weergeven

45
   defaults: { _controller: MuzichCoreBundle:Core:getFavoriteTags }
45
   defaults: { _controller: MuzichCoreBundle:Core:getFavoriteTags }
46
 
46
 
47
 ajax_add_tag:
47
 ajax_add_tag:
48
-  pattern: /ajax/add-tag/{name}
49
-  defaults: { _controller: MuzichCoreBundle:Core:addTag, name: null }
50
-  
51
-ajax_add_tag_arguments:
52
-  pattern: /ajax/add-tag/{name}/{arguments}
53
-  defaults: { _controller: MuzichCoreBundle:Core:addTag, name: null, arguments: null }
48
+  pattern: /ajax/add-tag
49
+  defaults: { _controller: MuzichCoreBundle:Core:addTag }
54
   
50
   
55
 ajax_element_add_vote_good:
51
 ajax_element_add_vote_good:
56
   pattern: /ajax/element/vote/add/good/{element_id}/{token}
52
   pattern: /ajax/element/vote/add/good/{element_id}/{token}

+ 53 - 45
web/bundles/muzichcore/js/muzich.js Bestand weergeven

817
                     .addClass('popin_block')
817
                     .addClass('popin_block')
818
                     .css('width', '400px')
818
                     .css('width', '400px')
819
                       //.append($('<h2>').append(string_tag_add_title))
819
                       //.append($('<h2>').append(string_tag_add_title))
820
+                   .append($('<form>')
821
+                     .attr('action', url_add_tag)
822
+                     .attr('method', 'post')
823
+                     .attr('name', 'add_tag')
824
+                     .ajaxForm(function(response) {
825
+                       /*
826
+                        *
827
+                        */
828
+
829
+                        if (response.status == 'mustbeconnected')
830
+                        {
831
+                          $(location).attr('href', url_index);
832
+                        }
833
+
834
+                        if (response.status == 'success')
835
+                        {
836
+                          var tag_id   = response.tag_id;
837
+                          var tag_name = response.tag_name;
838
+
839
+                          $('input#tags_selected_tag_'+form_name).val(tag_id);
840
+                          inputTag.val(tag_name);
841
+                          // Et on execute l'évènement selectTag de l'input
842
+                          inputTag.trigger("selectTag");
843
+                          // On cache la liste puisque le choix vient d'être fait
844
+                          divtags.hide();
845
+                          inputTag.val(tag_text_help); 
846
+
847
+                          link_add_tag.parents('div.search_tag_list').find('img.tag_loader').hide();
848
+
849
+                          $('#fade').fadeOut(400, function(){$('#fade').remove();});
850
+                          $('#add_tag').remove();
851
+                        }
852
+                        
853
+                        if (response.status == 'error')
854
+                        {
855
+                          $('form[name="add_tag"]').find('ul.error_list').remove();
856
+                          var ul_errors = $('<ul>').addClass('error_list');
857
+
858
+                          for (i in response.errors)
859
+                          {
860
+                            ul_errors.append($('<li>').append(response.errors[i]));
861
+                          }
862
+
863
+                          $('form[name="add_tag"]').prepend(ul_errors);
864
+                        }
865
+                        
866
+                        return false;
867
+                     })
868
+                     
820
                       .append($('<div>').addClass('tag')
869
                       .append($('<div>').addClass('tag')
821
                         .append($('<ul>')
870
                         .append($('<ul>')
822
                           .append($('<li>').addClass('button')
871
                           .append($('<li>').addClass('button')
837
                           })
886
                           })
838
                         )
887
                         )
839
                         .append($('<input>')
888
                         .append($('<input>')
840
-                          .attr('type', 'button')
889
+                          .attr('type', 'submit')
841
                           .attr('value', string_tag_add_inputs_submit)
890
                           .attr('value', string_tag_add_inputs_submit)
842
                           .addClass('button')
891
                           .addClass('button')
843
                           .click(function(){
892
                           .click(function(){
844
                             
893
                             
845
-                            var arguments = $('#add_tag textarea').val();
846
-                            
847
-                            $('#fade').fadeOut(400, function(){$('#fade').remove();});
848
-                            $('#add_tag').remove();
849
-                            
850
-                            // On récupère le nom du tag
851
-                            var name = link_add_tag.attr('href').substr(1,link_add_tag.attr('href').length);
852
-                            name = name.substr(strpos(name, '#')+1, name.length);
853
-
854
                             link_add_tag.parents('div.search_tag_list').find('img.tag_loader').show();
894
                             link_add_tag.parents('div.search_tag_list').find('img.tag_loader').show();
855
-
856
-                            var url;
857
-                            if (arguments)
858
-                            {
859
-                              url = url_add_tag+'/'+name+'/'+arguments;
860
-                            }
861
-                            else
862
-                            {
863
-                              url = url_add_tag+'/'+name;
864
-                            }
865
-
866
-                            // La on fait l'ajout en base en tant que nouveau tag
867
-                            $.getJSON(url, function(response){
868
-
869
-                              if (response.status == 'mustbeconnected')
870
-                              {
871
-                                $(location).attr('href', url_index);
872
-                              }
873
-
874
-                              var tag_id   = response.tag_id;
875
-                              var tag_name = response.tag_name;
876
-
877
-                              $('input#tags_selected_tag_'+form_name).val(tag_id);
878
-                              inputTag.val(tag_name);
879
-                              // Et on execute l'évènement selectTag de l'input
880
-                              inputTag.trigger("selectTag");
881
-                              // On cache la liste puisque le choix vient d'être fait
882
-                              divtags.hide();
883
-                              inputTag.val(tag_text_help); 
884
-
885
-                              link_add_tag.parents('div.search_tag_list').find('img.tag_loader').hide();
886
-                            });
887
-                            
888
-                            return false;
895
+                          
889
                           })
896
                           })
890
                         )
897
                         )
891
-                      )
898
+                        .append($('<input>').attr('type', 'hidden').attr('name', 'tag_name').val($(this).text()))
899
+                      ))
892
                     ;
900
                     ;
893
                     
901
                     
894
                     // Il faut ajouter le popup au dom avant de le positionner en css
902
                     // Il faut ajouter le popup au dom avant de le positionner en css