Browse Source

Anomalie #185: Message pour proposition de tag

bastien 13 years ago
parent
commit
b625521678

+ 4 - 0
app/Resources/translations/userui.fr.yml View File

@@ -54,6 +54,10 @@ tags:
54 54
     inputs:
55 55
       cancel:       Annuler
56 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 61
   new:
58 62
     has_news:       %count% éléments viennent d'être ajoutés, %link%
59 63
     has_news_one:   %count% élément vient d'être ajouté, %link%

+ 37 - 3
src/Muzich/CoreBundle/Controller/CoreController.php View File

@@ -433,15 +433,49 @@ class CoreController extends Controller
433 433
   /**
434 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 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 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 480
     return $this->jsonResponse(array(
447 481
       'status'   => 'success',

+ 1 - 1
src/Muzich/CoreBundle/Entity/Tag.php View File

@@ -58,7 +58,7 @@ class Tag
58 58
   /**
59 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 62
    * @var type string
63 63
    */
64 64
   protected $name;

+ 1 - 0
src/Muzich/CoreBundle/Managers/TagManager.php View File

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

+ 2 - 6
src/Muzich/CoreBundle/Resources/config/routing.yml View File

@@ -45,12 +45,8 @@ ajax_get_favorites_tags:
45 45
   defaults: { _controller: MuzichCoreBundle:Core:getFavoriteTags }
46 46
 
47 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 51
 ajax_element_add_vote_good:
56 52
   pattern: /ajax/element/vote/add/good/{element_id}/{token}

+ 53 - 45
web/bundles/muzichcore/js/muzich.js View File

@@ -817,6 +817,55 @@ $(document).ready(function(){
817 817
                     .addClass('popin_block')
818 818
                     .css('width', '400px')
819 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 869
                       .append($('<div>').addClass('tag')
821 870
                         .append($('<ul>')
822 871
                           .append($('<li>').addClass('button')
@@ -837,58 +886,17 @@ $(document).ready(function(){
837 886
                           })
838 887
                         )
839 888
                         .append($('<input>')
840
-                          .attr('type', 'button')
889
+                          .attr('type', 'submit')
841 890
                           .attr('value', string_tag_add_inputs_submit)
842 891
                           .addClass('button')
843 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 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 902
                     // Il faut ajouter le popup au dom avant de le positionner en css