Browse Source

Evolution #98: Formulaire filtre: Plus de chargement après click sur tag

bastien 13 years ago
parent
commit
a876f523ec

+ 4 - 4
src/Muzich/CoreBundle/Controller/SearchController.php View File

163
     foreach ($tags as $i => $tag)
163
     foreach ($tags as $i => $tag)
164
     {
164
     {
165
       // Pas plus de trois caractères en plus de la recherche
165
       // Pas plus de trois caractères en plus de la recherche
166
-      if (strlen(str_replace(strtoupper($search), '', strtoupper($tag))) < 4)
166
+      if (strlen(str_replace(strtoupper($search), '', strtoupper($tag['name']))) < 4)
167
       {
167
       {
168
         unset($tag_sorted[$i]);
168
         unset($tag_sorted[$i]);
169
         $tag_sorted = array_merge(array($tag), $tag_sorted);
169
         $tag_sorted = array_merge(array($tag), $tag_sorted);
175
     foreach ($tags as $i => $tag)
175
     foreach ($tags as $i => $tag)
176
     {
176
     {
177
       // Pas plus de trois caractères en plus de la recherche
177
       // Pas plus de trois caractères en plus de la recherche
178
-      if (strtoupper($search) == strtoupper($tag))
178
+      if (strtoupper($search) == strtoupper($tag['name']))
179
       {
179
       {
180
         unset($tag_sorted[$i]);
180
         unset($tag_sorted[$i]);
181
         $tag_sorted = array_merge(array($tag), $tag_sorted);
181
         $tag_sorted = array_merge(array($tag), $tag_sorted);
213
         }
213
         }
214
 
214
 
215
         $tags = $this->getDoctrine()->getEntityManager()->createQuery("
215
         $tags = $this->getDoctrine()->getEntityManager()->createQuery("
216
-          SELECT t.name FROM MuzichCoreBundle:Tag t
216
+          SELECT t.name, t.id FROM MuzichCoreBundle:Tag t
217
           $where
217
           $where
218
           ORDER BY t.name ASC"
218
           ORDER BY t.name ASC"
219
         )->setParameters($params)
219
         )->setParameters($params)
223
         $tags_response = array();
223
         $tags_response = array();
224
         foreach ($tags as $tag)
224
         foreach ($tags as $tag)
225
         {
225
         {
226
-          $tags_response[] = $tag['name'];
226
+          $tags_response[] = array('name' => $tag['name'], 'id' => $tag['id']);
227
         }
227
         }
228
         
228
         
229
         $tags_response = $this->sort_search_tags($tags_response, $string_search);
229
         $tags_response = $this->sort_search_tags($tags_response, $string_search);

+ 16 - 4
src/Muzich/CoreBundle/Resources/views/Tag/tagsPrompt.html.twig View File

12
   {% endif %}
12
   {% endif %}
13
   
13
   
14
    <input class="tags_prompt_list" id="tags_prompt_list_{{ form_name }}" name="tags" value=""> 
14
    <input class="tags_prompt_list" id="tags_prompt_list_{{ form_name }}" name="tags" value=""> 
15
+   <input id="tags_selected_tag_{{ form_name }}" type="hidden" value="" />
15
    <div id="search_tag_{{ form_name }}" class="search_tag_list" style="display: none;">
16
    <div id="search_tag_{{ form_name }}" class="search_tag_list" style="display: none;">
16
      <span class="info"></span>
17
      <span class="info"></span>
17
      <div class="tag_loader_div">
18
      <div class="tag_loader_div">
133
               more = false;
134
               more = false;
134
               // Pour chaque tags retournés
135
               // Pour chaque tags retournés
135
               for (i in tags)
136
               for (i in tags)
136
-              {                
137
+              {
138
+                var tag_name = tags[i]['name'];
139
+                var tag_id = tags[i]['id'];
137
                 // On construit un li
140
                 // On construit un li
138
                 var sstr = $.trim(input.val());
141
                 var sstr = $.trim(input.val());
139
                 var re = new RegExp(sstr, "i") ;
142
                 var re = new RegExp(sstr, "i") ;
140
-                var t_string = tags[i].replace(re,"<strong>" + sstr + "</strong>");
143
+                var t_string = tag_name.replace(re,"<strong>" + sstr + "</strong>");
141
                 
144
                 
142
                 li_tag = 
145
                 li_tag = 
143
                   $('<li>').append(
146
                   $('<li>').append(
144
-                    $('<a>').attr('href','#'+tags[i])
147
+                    $('<a>').attr('href','#'+tag_id+'#'+tag_name)
145
                     // qui réagit quand on clique dessus
148
                     // qui réagit quand on clique dessus
146
                     .click(function(e){
149
                     .click(function(e){
147
                       // On récupère le nom du tag
150
                       // On récupère le nom du tag
148
-                      inputTag.val($(this).attr('href').substr(1,$(this).attr('href').length));
151
+                      name = $(this).attr('href').substr(1,$(this).attr('href').length);
152
+                      name = name.substr(strpos(name, '#')+1, name.length);
153
+                                            
154
+                      id = $(this).attr('href').substr(1,$(this).attr('href').length);
155
+                      id = str_replace(name, '', id);
156
+                      id = str_replace('#', '', id);
157
+                                            
158
+                      $('input#tags_selected_tag_'+form_name).val(id);
159
+                      inputTag.val(name);
149
                       // Et on execute l'évènement selectTag de l'input
160
                       // Et on execute l'évènement selectTag de l'input
150
                       inputTag.trigger("selectTag");
161
                       inputTag.trigger("selectTag");
151
                       // On cache la liste puisque le choix vient d'être fait
162
                       // On cache la liste puisque le choix vient d'être fait
152
                       divtags.hide();
163
                       divtags.hide();
164
+                      inputTag.val(tag_text_help); 
153
                       return false;
165
                       return false;
154
                     })
166
                     })
155
                     .append(t_string)
167
                     .append(t_string)

+ 13 - 0
web/bundles/muzichcore/js/muzich.js View File

55
   return new Array();
55
   return new Array();
56
 }
56
 }
57
 
57
 
58
+function strpos (haystack, needle, offset) {
59
+    // Finds position of first occurrence of a string within another  
60
+    // 
61
+    // version: 1109.2015
62
+    // discuss at: http://phpjs.org/functions/strpos    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
63
+    // +   improved by: Onno Marsman    
64
+    // +   bugfixed by: Daniel Esteban
65
+    // +   improved by: Brett Zamir (http://brett-zamir.me)
66
+    // *     example 1: strpos('Kevin van Zonneveld', 'e', 5);    // *     returns 1: 14
67
+    var i = (haystack + '').indexOf(needle, (offset || 0));
68
+    return i === -1 ? false : i;
69
+}
70
+
58
 /**
71
 /**
59
  * Converts the given data structure to a JSON string.
72
  * Converts the given data structure to a JSON string.
60
  * Argument: arr - The data structure that must be converted to JSON
73
  * Argument: arr - The data structure that must be converted to JSON

+ 14 - 12
web/js/tags/jquery.tagBox.js View File

56
         });
56
         });
57
         
57
         
58
         self.tagInput.bind("selectTag", function(event) {
58
         self.tagInput.bind("selectTag", function(event) {
59
+          
59
           if(!$(this).val()) {
60
           if(!$(this).val()) {
60
               return;
61
               return;
61
           }
62
           }
62
           
63
           
63
           input = $(this);
64
           input = $(this);
65
+          inputId = $('input#tags_selected_tag_'+options.form_name);
64
           
66
           
65
           // Ici il faut faire un ajax q pour connaitre l'id, on a que le string
67
           // Ici il faut faire un ajax q pour connaitre l'id, on a que le string
66
           // ajax loader gif
68
           // ajax loader gif
67
-          $('#tag_loader_'+options.form_name).css('display', 'block');
69
+          //$('#tag_loader_'+options.form_name).css('display', 'block');
68
           // On bloque le submit le temps de la validation du tag
70
           // On bloque le submit le temps de la validation du tag
69
-          $('form[name="'+options.form_name+'"] input[type="submit"]').attr('disabled', 'disabled');
70
-          $.getJSON('/app_dev.php/fr/search/tagid/'+$(this).val(), function(data) {
71
-            if (isInteger(data))
72
-            {
73
-              self.addTag(input.val(), data, options.form_name, false);
74
-              input.val("");
75
-              $('#tag_loader_'+options.form_name).css('display', 'none');
76
-              $('form[name="'+options.form_name+'"] input[type="submit"]').removeAttr('disabled');
77
-            }
78
-          });
71
+          //$('form[name="'+options.form_name+'"] input[type="submit"]').attr('disabled', 'disabled');
72
+//          $.getJSON('/app_dev.php/fr/search/tagid/'+$(this).val(), function(data) {
73
+//            if (isInteger(data))
74
+//            {
75
+//              self.addTag(input.val(), data, options.form_name, false);
76
+//              input.val("");
77
+//              $('#tag_loader_'+options.form_name).css('display', 'none');
78
+//              $('form[name="'+options.form_name+'"] input[type="submit"]').removeAttr('disabled');
79
+//            }
80
+//          });
79
 
81
 
80
-          
82
+          self.addTag(input.val(), inputId.val(), options.form_name, false);
81
         });
83
         });
82
         
84
         
83
         self.tagbox = $('<ul>', {
85
         self.tagbox = $('<ul>', {