|
@@ -230,12 +230,31 @@ function explode (delimiter, string, limit) {
|
230
|
230
|
function remove_tags(form_name)
|
231
|
231
|
{
|
232
|
232
|
//tagsAddeds[form_name] = new Array();
|
233
|
|
- $('form[name="'+form_name+'"] ul.tagbox li.tag').remove();
|
234
|
|
- $('form[name="'+form_name+'"] input.tagBox_tags_ids').val('');
|
|
233
|
+ //$('form[name="'+form_name+'"] ul.tagbox li.tag').remove();
|
|
234
|
+ //$('form[name="'+form_name+'"] input.tagBox_tags_ids').val('');
|
235
|
235
|
|
236
|
236
|
}
|
237
|
237
|
|
238
|
|
-$(document).ready(function(){
|
|
238
|
+function JQueryJson(url, data, callback_success)
|
|
239
|
+{
|
|
240
|
+ $.ajax({
|
|
241
|
+ type: 'POST',
|
|
242
|
+ url: url,
|
|
243
|
+ dataType: 'json',
|
|
244
|
+ data: data,
|
|
245
|
+ success: function(response)
|
|
246
|
+ {
|
|
247
|
+ if (response.status == 'mustbeconnected')
|
|
248
|
+ {
|
|
249
|
+ $(location).attr('href', url_index);
|
|
250
|
+ }
|
|
251
|
+
|
|
252
|
+ callback_success(response);
|
|
253
|
+ }
|
|
254
|
+ });
|
|
255
|
+}
|
|
256
|
+
|
|
257
|
+$(document).ready(function(){
|
239
|
258
|
|
240
|
259
|
// Controle du focus sur la page
|
241
|
260
|
function onBlur() {
|
|
@@ -261,9 +280,11 @@ $(document).ready(function(){
|
261
|
280
|
$('img.elements_more_loader').show();
|
262
|
281
|
$('ul.elements').html('');
|
263
|
282
|
// On initialise la liste de tags déjà ajouté
|
264
|
|
- tagsAddeds['search'] = new Array;
|
|
283
|
+ window.search_tag_prompt_connector.initializeTags([]);
|
|
284
|
+ $('div.no_elements').hide();
|
|
285
|
+ //tagsAddeds['search'] = new Array;
|
265
|
286
|
var form = $('form[name="search"]');
|
266
|
|
- remove_tags(form.attr('name'));
|
|
287
|
+ //remove_tags(form.attr('name'));
|
267
|
288
|
form.submit();
|
268
|
289
|
});
|
269
|
290
|
|
|
@@ -272,8 +293,6 @@ $(document).ready(function(){
|
272
|
293
|
|
273
|
294
|
$('img.elements_more_loader').show();
|
274
|
295
|
$('ul.elements').html('');
|
275
|
|
- // On initialise la liste de tags déjà ajouté
|
276
|
|
- tagsAddeds['search'] = new Array;
|
277
|
296
|
|
278
|
297
|
var form = $('form[name="search"]');
|
279
|
298
|
|
|
@@ -283,22 +302,15 @@ $(document).ready(function(){
|
283
|
302
|
$(location).attr('href', url_index);
|
284
|
303
|
}
|
285
|
304
|
|
286
|
|
- remove_tags(form.attr('name'));
|
287
|
|
-// if (tags.length)
|
288
|
|
-// {
|
289
|
|
- var inputTag = $("div#tags_prompt_"+form.attr('name')+" input.form-default-value-processed");
|
|
305
|
+ var tags = [];
|
290
|
306
|
for (i in response.tags)
|
291
|
307
|
{
|
292
|
|
- $('input#tags_selected_tag_'+form.attr('name')).val(i);
|
293
|
|
- inputTag.val(response.tags[i]);
|
294
|
|
-
|
295
|
|
- // Et on execute l'évènement selectTag de l'input
|
296
|
|
- inputTag.trigger("selectTag");
|
|
308
|
+ var tag = new Tag(i, response.tags[i]);
|
|
309
|
+ tags.push(tag);
|
297
|
310
|
}
|
298
|
311
|
|
|
312
|
+ window.search_tag_prompt_connector.initializeTags(tags);
|
299
|
313
|
form.submit();
|
300
|
|
- //}
|
301
|
|
-
|
302
|
314
|
});
|
303
|
315
|
});
|
304
|
316
|
|
|
@@ -307,9 +319,6 @@ $(document).ready(function(){
|
307
|
319
|
// Si il y a une liste de tags (comme sur la page favoris, profil)
|
308
|
320
|
var id;
|
309
|
321
|
|
310
|
|
- // On initialise la liste de tags déjà ajouté
|
311
|
|
- tagsAddeds['search'] = new Array;
|
312
|
|
-
|
313
|
322
|
if ($('ul#favorite_tags').length)
|
314
|
323
|
{
|
315
|
324
|
id = str_replace('element_tag_', '', $(this).attr('id'));
|
|
@@ -321,13 +330,13 @@ $(document).ready(function(){
|
321
|
330
|
{
|
322
|
331
|
$('img.elements_more_loader').show();
|
323
|
332
|
$('ul.elements').html('');
|
|
333
|
+
|
324
|
334
|
var form = $('form[name="search"]');
|
325
|
335
|
id = str_replace('element_tag_', '', $(this).attr('id'));
|
326
|
|
- remove_tags('search');
|
327
|
|
- var inputTag = $("div#tags_prompt_search input.form-default-value-processed");
|
328
|
|
- $('input#tags_selected_tag_search').val(id);
|
329
|
|
- inputTag.val($(this).html());
|
330
|
|
- inputTag.trigger("selectTag");
|
|
336
|
+ var tag = new Tag(id, $(this).text());
|
|
337
|
+
|
|
338
|
+ window.search_tag_prompt_connector.initializeTags([tag]);
|
|
339
|
+
|
331
|
340
|
form.submit();
|
332
|
341
|
}
|
333
|
342
|
});
|
|
@@ -705,378 +714,378 @@ $(document).ready(function(){
|
705
|
714
|
});
|
706
|
715
|
|
707
|
716
|
////////////////// TAG PROMPT ///////////////
|
708
|
|
-
|
709
|
|
- var ajax_query_timestamp = null;
|
710
|
|
-
|
711
|
|
- // Les deux clicks ci-dessous permettent de faire disparaitre
|
712
|
|
- // la div de tags lorsque l'on clique ailleurs
|
713
|
|
- $('html').click(function() {
|
714
|
|
- if ($("div.search_tag_list").is(':visible'))
|
715
|
|
- {
|
716
|
|
- $("div.search_tag_list").hide();
|
717
|
|
- }
|
718
|
|
- });
|
719
|
|
-
|
720
|
|
- $("div.search_tag_list, div.search_tag_list a.more").live('click', function(event){
|
721
|
|
- event.stopPropagation();
|
722
|
|
- $("div.search_tag_list").show();
|
723
|
|
- });
|
724
|
|
-
|
725
|
|
- function autocomplete_tag(input, form_name)
|
726
|
|
- {
|
727
|
|
- // Il doit y avoir au moin un caractère
|
728
|
|
- if (input.val().length > 0)
|
729
|
|
- {
|
730
|
|
-
|
731
|
|
- // on met en variable l'input
|
732
|
|
- var inputTag = input;
|
733
|
|
-
|
734
|
|
- // On récupére la div de tags
|
735
|
|
- var divtags = $("#search_tag_"+form_name);
|
736
|
|
-
|
737
|
|
- // Si la fenêtre de tags est caché
|
738
|
|
- if (!divtags.is(':visible'))
|
739
|
|
- {
|
740
|
|
- // On la replace
|
741
|
|
- var position = input.position();
|
742
|
|
- divtags.css('left', Math.round(position.left) + 5);
|
743
|
|
- divtags.css('top', Math.round(position.top) + 28);
|
744
|
|
- // Et on l'affiche
|
745
|
|
- divtags.show();
|
746
|
|
- }
|
747
|
|
- // On affiche le loader
|
748
|
|
- $('#tag_loader_'+form_name).show();
|
749
|
|
- // On cache la liste de tags
|
750
|
|
- var search_tag_list = divtags.find('ul.search_tag_list');
|
751
|
|
- // On supprime les anciens li
|
752
|
|
- search_tag_list.find('li').remove();
|
753
|
|
- search_tag_list.hide();
|
754
|
|
- // Et on affiche une info
|
755
|
|
- var span_info = divtags.find('span.info');
|
756
|
|
- span_info.show();
|
757
|
|
- // TODO: multilingue !
|
758
|
|
- span_info.text(str_replace('%string_search%', input.val(), string_search_tag_title));
|
759
|
|
-
|
760
|
|
- // C'est en fonction du nb de resultats qu'il sera affiché
|
761
|
|
- divtags.find('a.more').hide();
|
762
|
|
-
|
763
|
|
- // On récupère le timestamp pour reconnaitre la dernière requête effectué
|
764
|
|
- ajax_query_timestamp = new Date().getTime();
|
765
|
|
-
|
766
|
|
- // Récupération des tags correspondants
|
767
|
|
- $.ajax({
|
768
|
|
- type: 'POST',
|
769
|
|
- url: url_search_tag+'/'+ajax_query_timestamp,
|
770
|
|
- dataType: 'json',
|
771
|
|
- data: {'string_search':input.val()},
|
772
|
|
- success: function(data) {
|
773
|
|
- if (data.status == 'mustbeconnected')
|
774
|
|
- {
|
775
|
|
- $(location).attr('href', url_index);
|
776
|
|
- }
|
777
|
|
-
|
778
|
|
- // Ce contrôle permet de ne pas continuer si une requete
|
779
|
|
- // ajax a été faite depuis.
|
780
|
|
- if (data.timestamp == ajax_query_timestamp)
|
781
|
|
- {
|
782
|
|
- var status = data.status;
|
783
|
|
- var tags = data.data;
|
784
|
|
-
|
785
|
|
- // Si on spécifie une erreur
|
786
|
|
- if (status == 'error')
|
787
|
|
- {
|
788
|
|
- // On l'affiche a l'utilisateur
|
789
|
|
- span_info.text(data.error);
|
790
|
|
- }
|
791
|
|
- // Si c'est un succés
|
792
|
|
- else if (status == 'success')
|
793
|
|
- {
|
794
|
|
- if (tags.length > 0)
|
795
|
|
- {
|
796
|
|
- var more = false;
|
797
|
|
- // Pour chaque tags retournés
|
798
|
|
- for (i in tags)
|
799
|
|
- {
|
800
|
|
- var tag_name = tags[i]['name'];
|
801
|
|
- var tag_id = tags[i]['id'];
|
802
|
|
- var t_string = tag_name
|
803
|
|
- // On construit un li
|
804
|
|
-
|
805
|
|
- var r_string = $.trim(input.val());
|
806
|
|
- var re = new RegExp(r_string, "i");
|
807
|
|
- t_string = t_string.replace(re,"<strong>" + r_string + "</strong>");
|
808
|
|
-
|
809
|
|
-
|
810
|
|
- var li_tag =
|
811
|
|
- $('<li>').append(
|
812
|
|
- $('<a>').attr('id','searched_tag_'+tag_id)
|
813
|
|
- .attr('href', '#')
|
814
|
|
- // qui réagit quand on clique dessus
|
815
|
|
- .click(function(e){
|
816
|
|
-
|
817
|
|
- var id = str_replace('searched_tag_', '', $(this).attr('id'));
|
818
|
|
- var name = $('span#tag_prompt_tag_'+id+'_name').html();
|
819
|
|
-
|
820
|
|
- $('input#tags_selected_tag_'+form_name).val(id);
|
821
|
|
- inputTag.val(name);
|
822
|
|
- // Et on execute l'évènement selectTag de l'input
|
823
|
|
- inputTag.trigger("selectTag");
|
824
|
|
- // On cache la liste puisque le choix vient d'être fait
|
825
|
|
- divtags.hide();
|
826
|
|
- // On vide le champs de saisie du tag
|
827
|
|
- $('input.form-default-value-processed').val('');
|
828
|
|
- return false;
|
829
|
|
- })
|
830
|
|
- .append(t_string)
|
831
|
|
- ).append($('<span style="display: none;" id="tag_prompt_tag_'+tag_id+'_name">'+tag_name+'</span>'));
|
832
|
|
-
|
833
|
|
- // Si on depasse les 30 tags
|
834
|
|
- if (i > 30)
|
835
|
|
- {
|
836
|
|
- more = true;
|
837
|
|
- // On le cache
|
838
|
|
- li_tag.hide();
|
839
|
|
- }
|
840
|
|
-
|
841
|
|
- // On ajout ce li a la liste
|
842
|
|
- search_tag_list.append(li_tag);
|
843
|
|
- }
|
844
|
|
-
|
845
|
|
- if (more)
|
846
|
|
- {
|
847
|
|
- divtags.find('a.more').show();
|
848
|
|
- }
|
849
|
|
-
|
850
|
|
- span_info.show();
|
851
|
|
- span_info.text(data.message);
|
852
|
|
- // Et on affiche la liste
|
853
|
|
- search_tag_list.show();
|
854
|
|
- }
|
855
|
|
- else
|
856
|
|
- {
|
857
|
|
- span_info.show();
|
858
|
|
- span_info.text(data.message);
|
859
|
|
- search_tag_list.show();
|
860
|
|
-
|
861
|
|
- // Dans ce cas ou aucun tag n'a été trouvé, la proposition
|
862
|
|
- // d'ajout s'affichecf en dessous
|
863
|
|
-
|
864
|
|
- //span_info.text("Aucun tag de trouvé pour \""+inputTag.val()+"\"");
|
865
|
|
- }
|
866
|
|
-
|
867
|
|
- // Si le tag ne semble pas connu en base
|
868
|
|
- if (!data.same_found)
|
869
|
|
- {
|
870
|
|
- li_tag =
|
871
|
|
- $('<li>').addClass('new').append(
|
872
|
|
- $('<a>').attr('href','#new#'+$.trim(input.val()))
|
873
|
|
- // qui réagit quand on clique dessus
|
874
|
|
- .click({
|
875
|
|
- inputTag: inputTag,
|
876
|
|
- form_name: form_name,
|
877
|
|
- divtags: divtags
|
878
|
|
- }, event_click_new_tag_proposition)
|
879
|
|
- .append($.trim(input.val()))
|
880
|
|
- );
|
881
|
|
- search_tag_list.append(li_tag);
|
882
|
|
- }
|
883
|
|
-
|
884
|
|
- }
|
885
|
|
-
|
886
|
|
- // On cache le loader
|
887
|
|
- $('#tag_loader_'+form_name).hide();
|
888
|
|
- }
|
889
|
|
- }
|
890
|
|
- });
|
891
|
|
-
|
892
|
|
-
|
893
|
|
- //$.getJSON(url_search_tag+'/'+input.val()+'/'+ajax_query_timestamp, );
|
894
|
|
-
|
895
|
|
- }
|
896
|
|
- }
|
897
|
|
-
|
898
|
|
- function event_click_new_tag_proposition(event)
|
899
|
|
- {
|
900
|
|
- form_add_open_dialog_for_new_tag($(event.target), event.data.inputTag, event.data.form_name, event.data.divtags);
|
901
|
|
- }
|
902
|
|
-
|
903
|
|
- function form_add_open_dialog_for_new_tag(link_add_tag, inputTag, form_name, divtags)
|
904
|
|
- {
|
905
|
|
-
|
906
|
|
-
|
907
|
|
- // Effet fade-in du fond opaque
|
908
|
|
- $('body').append($('<div>').attr('id', 'fade'));
|
909
|
|
- //Apparition du fond - .css({'filter' : 'alpha(opacity=80)'}) pour corriger les bogues de IE
|
910
|
|
- $('#fade').css({'filter' : 'alpha(opacity=80)'}).fadeIn();
|
911
|
|
-
|
912
|
|
- // En premier lieux on fait apparaître la fenêtre de confirmation
|
913
|
|
- var popup = $('<div>')
|
914
|
|
- .attr('id', 'add_tag')
|
915
|
|
- .addClass('popin_block')
|
916
|
|
- .css('width', '400px')
|
917
|
|
- //.append($('<h2>').append(string_tag_add_title))
|
918
|
|
- .append($('<form>')
|
919
|
|
- .attr('action', url_add_tag)
|
920
|
|
- .attr('method', 'post')
|
921
|
|
- .attr('name', 'add_tag')
|
922
|
|
- .ajaxForm(function(response) {
|
923
|
|
- /*
|
924
|
|
- *
|
925
|
|
- */
|
926
|
|
-
|
927
|
|
- if (response.status == 'mustbeconnected')
|
928
|
|
- {
|
929
|
|
- $(location).attr('href', url_index);
|
930
|
|
- }
|
931
|
|
-
|
932
|
|
- if (response.status == 'success')
|
933
|
|
- {
|
934
|
|
- var tag_id = response.tag_id;
|
935
|
|
- var tag_name = response.tag_name;
|
936
|
|
-
|
937
|
|
- $('input#tags_selected_tag_'+form_name).val(tag_id);
|
938
|
|
- inputTag.val(tag_name);
|
939
|
|
- // Et on execute l'évènement selectTag de l'input
|
940
|
|
- inputTag.trigger("selectTag");
|
941
|
|
- // On cache la liste puisque le choix vient d'être fait
|
942
|
|
- divtags.hide();
|
943
|
|
-
|
944
|
|
- link_add_tag.parents('div.search_tag_list').find('img.tag_loader').hide();
|
945
|
|
-
|
946
|
|
- $('#fade').fadeOut(400, function(){$('#fade').remove();});
|
947
|
|
- $('#add_tag').remove();
|
948
|
|
- }
|
949
|
|
-
|
950
|
|
- if (response.status == 'error')
|
951
|
|
- {
|
952
|
|
- $('form[name="add_tag"]').find('ul.error_list').remove();
|
953
|
|
- var ul_errors = $('<ul>').addClass('error_list');
|
954
|
|
-
|
955
|
|
- for (i in response.errors)
|
956
|
|
- {
|
957
|
|
- ul_errors.append($('<li>').append(response.errors[i]));
|
958
|
|
- }
|
959
|
|
-
|
960
|
|
- $('form[name="add_tag"]').prepend(ul_errors);
|
961
|
|
- }
|
962
|
|
-
|
963
|
|
- return false;
|
964
|
|
- })
|
965
|
|
-
|
966
|
|
- .append($('<div>').addClass('tag')
|
967
|
|
- .append($('<ul>')
|
968
|
|
- .append($('<li>').addClass('button')
|
969
|
|
- .append(link_add_tag.text()))))
|
970
|
|
- .append($('<p>').append(string_tag_add_text))
|
971
|
|
- .append($('<p>').append(string_tag_add_argument))
|
972
|
|
- .append($('<textarea>').attr('name', 'argument'))
|
973
|
|
- .append($('<div>').addClass('inputs')
|
974
|
|
- .append($('<input>')
|
975
|
|
- .attr('type', 'button')
|
976
|
|
- .attr('value', string_tag_add_inputs_cancel)
|
977
|
|
- .addClass('button')
|
978
|
|
- .click(function(){
|
979
|
|
- $('#fade').fadeOut(1000, function(){$('#fade').remove();});
|
980
|
|
- $('#add_tag').remove();
|
981
|
|
-
|
982
|
|
- return false;
|
983
|
|
- })
|
984
|
|
- )
|
985
|
|
- .append($('<input>')
|
986
|
|
- .attr('type', 'submit')
|
987
|
|
- .attr('value', string_tag_add_inputs_submit)
|
988
|
|
- .addClass('button')
|
989
|
|
- .click(function(){
|
990
|
|
-
|
991
|
|
- link_add_tag.parents('div.search_tag_list').find('img.tag_loader').show();
|
992
|
|
-
|
993
|
|
- })
|
994
|
|
- )
|
995
|
|
- .append($('<input>').attr('type', 'hidden').attr('name', 'tag_name').val(link_add_tag.text()))
|
996
|
|
- ))
|
997
|
|
- ;
|
998
|
|
-
|
999
|
|
- // Il faut ajouter le popup au dom avant de le positionner en css
|
1000
|
|
- // Sinon la valeur height n'est pas encore calculable
|
1001
|
|
- $('body').prepend(popup);
|
1002
|
|
-
|
1003
|
|
- //Récupération du margin, qui permettra de centrer la fenêtre - on ajuste de 80px en conformité avec le CSS
|
1004
|
|
- var popMargTop = (popup.height() + 50) / 2;
|
1005
|
|
- var popMargLeft = (popup.width() + 50) / 2;
|
1006
|
|
-
|
1007
|
|
- //On affecte le margin
|
1008
|
|
- $(popup).css({
|
1009
|
|
- 'margin-top' : -popMargTop,
|
1010
|
|
- 'margin-left' : -popMargLeft
|
1011
|
|
- });
|
1012
|
|
-
|
1013
|
|
- return false;
|
1014
|
|
- }
|
1015
|
|
-
|
1016
|
|
- var last_keypress = 0;
|
1017
|
|
-
|
1018
|
|
- function check_timelaps_and_search(input, form_name, time_id, timed, info)
|
1019
|
|
- {
|
1020
|
|
- if (!timed)
|
1021
|
|
- {
|
1022
|
|
- // C'est une nouvelle touche (pas redirigé) on lui donne un id
|
1023
|
|
- // et on met a jour l'id de la dernière pressé
|
1024
|
|
- last_keypress = new Date().getTime();
|
1025
|
|
- var this_time_id = last_keypress;
|
1026
|
|
- }
|
1027
|
|
- else
|
1028
|
|
- {
|
1029
|
|
- // Si elle a été redirigé, on met son id dans cette variable
|
1030
|
|
- var this_time_id = time_id;
|
1031
|
|
- }
|
1032
|
|
-
|
1033
|
|
- // C'est une touche redirigé dans le temps qui a été suivit d'une autre touche
|
1034
|
|
- if (time_id != last_keypress && timed)
|
1035
|
|
- {
|
1036
|
|
- // elle disparait
|
1037
|
|
- }
|
1038
|
|
- else
|
1039
|
|
- {
|
1040
|
|
- //
|
1041
|
|
- if ((new Date().getTime() - last_keypress) < 600 || timed == false)
|
1042
|
|
- {
|
1043
|
|
- // Si elle vient d'être tapé (timed == false) elle doit attendre (au cas ou une autre touche soit tapé)
|
1044
|
|
- // Si c'est une redirigé qui n'a pas été remplacé par une nouvelle lettre
|
1045
|
|
- // elle doit attendre au cas ou soit pressé.
|
1046
|
|
- setTimeout(function(){check_timelaps_and_search(input, form_name, this_time_id, true, info)}, 700);
|
1047
|
|
- }
|
1048
|
|
- else
|
1049
|
|
- {
|
1050
|
|
- // il n'y a plus a attendre, on envoie la demande de tag.
|
1051
|
|
- autocomplete_tag(input, form_name);
|
1052
|
|
- }
|
1053
|
|
- }
|
1054
|
|
- }
|
1055
|
|
-
|
1056
|
|
- // Autocompletion de tags
|
1057
|
|
- $("div.tags_prompt ul.tagbox li.input input").live('keypress', function(e){
|
1058
|
|
-
|
1059
|
|
- var form_name = $(this).parents('form').attr('name');
|
1060
|
|
- var code = (e.keyCode ? e.keyCode : e.which);
|
1061
|
|
-
|
1062
|
|
- if ((e.which !== 0 && e.charCode !== 0) || (code == 8 || code == 46))
|
1063
|
|
- {
|
1064
|
|
- check_timelaps_and_search($(this), form_name, new Date().getTime(), false, $(this).val());
|
1065
|
|
- }
|
1066
|
|
-
|
1067
|
|
- });
|
1068
|
|
-
|
1069
|
|
- // Un click sur ce lien affiche tout les tags cachés de la liste
|
1070
|
|
- $('div.search_tag_list a.more').live('click', function(){
|
1071
|
|
- jQuery.each( $(this).parent('div').find('ul.search_tag_list li') , function(){
|
1072
|
|
- $(this).show();
|
1073
|
|
- });
|
1074
|
|
- $(this).hide();
|
1075
|
|
- return false;
|
1076
|
|
- });
|
1077
|
|
-
|
1078
|
|
- $('ul.tagbox li.input input[type="text"]').formDefaults();
|
1079
|
|
-
|
|
717
|
+ //
|
|
718
|
+ //var ajax_query_timestamp = null;
|
|
719
|
+ //
|
|
720
|
+ //// Les deux clicks ci-dessous permettent de faire disparaitre
|
|
721
|
+ //// la div de tags lorsque l'on clique ailleurs
|
|
722
|
+ //$('html').click(function() {
|
|
723
|
+ // if ($("div.search_tag_list").is(':visible'))
|
|
724
|
+ // {
|
|
725
|
+ // $("div.search_tag_list").hide();
|
|
726
|
+ // }
|
|
727
|
+ //});
|
|
728
|
+ //
|
|
729
|
+ //$("div.search_tag_list, div.search_tag_list a.more").live('click', function(event){
|
|
730
|
+ // event.stopPropagation();
|
|
731
|
+ // $("div.search_tag_list").show();
|
|
732
|
+ //});
|
|
733
|
+ //
|
|
734
|
+ //function autocomplete_tag(input, form_name)
|
|
735
|
+ //{
|
|
736
|
+ // // Il doit y avoir au moin un caractère
|
|
737
|
+ // if (input.val().length > 0)
|
|
738
|
+ // {
|
|
739
|
+ //
|
|
740
|
+ // // on met en variable l'input
|
|
741
|
+ // var inputTag = input;
|
|
742
|
+ //
|
|
743
|
+ // // On récupére la div de tags
|
|
744
|
+ // var divtags = $("#search_tag_"+form_name);
|
|
745
|
+ //
|
|
746
|
+ // // Si la fenêtre de tags est caché
|
|
747
|
+ // if (!divtags.is(':visible'))
|
|
748
|
+ // {
|
|
749
|
+ // // On la replace
|
|
750
|
+ // var position = input.position();
|
|
751
|
+ // divtags.css('left', Math.round(position.left) + 5);
|
|
752
|
+ // divtags.css('top', Math.round(position.top) + 28);
|
|
753
|
+ // // Et on l'affiche
|
|
754
|
+ // divtags.show();
|
|
755
|
+ // }
|
|
756
|
+ // // On affiche le loader
|
|
757
|
+ // $('#tag_loader_'+form_name).show();
|
|
758
|
+ // // On cache la liste de tags
|
|
759
|
+ // var search_tag_list = divtags.find('ul.search_tag_list');
|
|
760
|
+ // // On supprime les anciens li
|
|
761
|
+ // search_tag_list.find('li').remove();
|
|
762
|
+ // search_tag_list.hide();
|
|
763
|
+ // // Et on affiche une info
|
|
764
|
+ // var span_info = divtags.find('span.info');
|
|
765
|
+ // span_info.show();
|
|
766
|
+ // // TODO: multilingue !
|
|
767
|
+ // span_info.text(str_replace('%string_search%', input.val(), string_search_tag_title));
|
|
768
|
+ //
|
|
769
|
+ // // C'est en fonction du nb de resultats qu'il sera affiché
|
|
770
|
+ // divtags.find('a.more').hide();
|
|
771
|
+ //
|
|
772
|
+ // // On récupère le timestamp pour reconnaitre la dernière requête effectué
|
|
773
|
+ // ajax_query_timestamp = new Date().getTime();
|
|
774
|
+ //
|
|
775
|
+ // // Récupération des tags correspondants
|
|
776
|
+ // $.ajax({
|
|
777
|
+ // type: 'POST',
|
|
778
|
+ // url: url_search_tag+'/'+ajax_query_timestamp,
|
|
779
|
+ // dataType: 'json',
|
|
780
|
+ // data: {'string_search':input.val()},
|
|
781
|
+ // success: function(data) {
|
|
782
|
+ // if (data.status == 'mustbeconnected')
|
|
783
|
+ // {
|
|
784
|
+ // $(location).attr('href', url_index);
|
|
785
|
+ // }
|
|
786
|
+ //
|
|
787
|
+ // // Ce contrôle permet de ne pas continuer si une requete
|
|
788
|
+ // // ajax a été faite depuis.
|
|
789
|
+ // if (data.timestamp == ajax_query_timestamp)
|
|
790
|
+ // {
|
|
791
|
+ // var status = data.status;
|
|
792
|
+ // var tags = data.data;
|
|
793
|
+ //
|
|
794
|
+ // // Si on spécifie une erreur
|
|
795
|
+ // if (status == 'error')
|
|
796
|
+ // {
|
|
797
|
+ // // On l'affiche a l'utilisateur
|
|
798
|
+ // span_info.text(data.error);
|
|
799
|
+ // }
|
|
800
|
+ // // Si c'est un succés
|
|
801
|
+ // else if (status == 'success')
|
|
802
|
+ // {
|
|
803
|
+ // if (tags.length > 0)
|
|
804
|
+ // {
|
|
805
|
+ // var more = false;
|
|
806
|
+ // // Pour chaque tags retournés
|
|
807
|
+ // for (i in tags)
|
|
808
|
+ // {
|
|
809
|
+ // var tag_name = tags[i]['name'];
|
|
810
|
+ // var tag_id = tags[i]['id'];
|
|
811
|
+ // var t_string = tag_name
|
|
812
|
+ // // On construit un li
|
|
813
|
+ //
|
|
814
|
+ // var r_string = $.trim(input.val());
|
|
815
|
+ // var re = new RegExp(r_string, "i");
|
|
816
|
+ // t_string = t_string.replace(re,"<strong>" + r_string + "</strong>");
|
|
817
|
+ //
|
|
818
|
+ //
|
|
819
|
+ // var li_tag =
|
|
820
|
+ // $('<li>').append(
|
|
821
|
+ // $('<a>').attr('id','searched_tag_'+tag_id)
|
|
822
|
+ // .attr('href', '#')
|
|
823
|
+ // // qui réagit quand on clique dessus
|
|
824
|
+ // .click(function(e){
|
|
825
|
+ //
|
|
826
|
+ // var id = str_replace('searched_tag_', '', $(this).attr('id'));
|
|
827
|
+ // var name = $('span#tag_prompt_tag_'+id+'_name').html();
|
|
828
|
+ //
|
|
829
|
+ // $('input#tags_selected_tag_'+form_name).val(id);
|
|
830
|
+ // inputTag.val(name);
|
|
831
|
+ // // Et on execute l'évènement selectTag de l'input
|
|
832
|
+ // inputTag.trigger("selectTag");
|
|
833
|
+ // // On cache la liste puisque le choix vient d'être fait
|
|
834
|
+ // divtags.hide();
|
|
835
|
+ // // On vide le champs de saisie du tag
|
|
836
|
+ // $('input.form-default-value-processed').val('');
|
|
837
|
+ // return false;
|
|
838
|
+ // })
|
|
839
|
+ // .append(t_string)
|
|
840
|
+ // ).append($('<span style="display: none;" id="tag_prompt_tag_'+tag_id+'_name">'+tag_name+'</span>'));
|
|
841
|
+ //
|
|
842
|
+ // // Si on depasse les 30 tags
|
|
843
|
+ // if (i > 30)
|
|
844
|
+ // {
|
|
845
|
+ // more = true;
|
|
846
|
+ // // On le cache
|
|
847
|
+ // li_tag.hide();
|
|
848
|
+ // }
|
|
849
|
+ //
|
|
850
|
+ // // On ajout ce li a la liste
|
|
851
|
+ // search_tag_list.append(li_tag);
|
|
852
|
+ // }
|
|
853
|
+ //
|
|
854
|
+ // if (more)
|
|
855
|
+ // {
|
|
856
|
+ // divtags.find('a.more').show();
|
|
857
|
+ // }
|
|
858
|
+ //
|
|
859
|
+ // span_info.show();
|
|
860
|
+ // span_info.text(data.message);
|
|
861
|
+ // // Et on affiche la liste
|
|
862
|
+ // search_tag_list.show();
|
|
863
|
+ // }
|
|
864
|
+ // else
|
|
865
|
+ // {
|
|
866
|
+ // span_info.show();
|
|
867
|
+ // span_info.text(data.message);
|
|
868
|
+ // search_tag_list.show();
|
|
869
|
+ //
|
|
870
|
+ // // Dans ce cas ou aucun tag n'a été trouvé, la proposition
|
|
871
|
+ // // d'ajout s'affichecf en dessous
|
|
872
|
+ //
|
|
873
|
+ // //span_info.text("Aucun tag de trouvé pour \""+inputTag.val()+"\"");
|
|
874
|
+ // }
|
|
875
|
+ //
|
|
876
|
+ // // Si le tag ne semble pas connu en base
|
|
877
|
+ // if (!data.same_found)
|
|
878
|
+ // {
|
|
879
|
+ // li_tag =
|
|
880
|
+ // $('<li>').addClass('new').append(
|
|
881
|
+ // $('<a>').attr('href','#new#'+$.trim(input.val()))
|
|
882
|
+ // // qui réagit quand on clique dessus
|
|
883
|
+ // .click({
|
|
884
|
+ // inputTag: inputTag,
|
|
885
|
+ // form_name: form_name,
|
|
886
|
+ // divtags: divtags
|
|
887
|
+ // }, event_click_new_tag_proposition)
|
|
888
|
+ // .append($.trim(input.val()))
|
|
889
|
+ // );
|
|
890
|
+ // search_tag_list.append(li_tag);
|
|
891
|
+ // }
|
|
892
|
+ //
|
|
893
|
+ // }
|
|
894
|
+ //
|
|
895
|
+ // // On cache le loader
|
|
896
|
+ // $('#tag_loader_'+form_name).hide();
|
|
897
|
+ // }
|
|
898
|
+ // }
|
|
899
|
+ // });
|
|
900
|
+ //
|
|
901
|
+ //
|
|
902
|
+ // //$.getJSON(url_search_tag+'/'+input.val()+'/'+ajax_query_timestamp, );
|
|
903
|
+ //
|
|
904
|
+ // }
|
|
905
|
+ //}
|
|
906
|
+ //
|
|
907
|
+ //function event_click_new_tag_proposition(event)
|
|
908
|
+ //{
|
|
909
|
+ // form_add_open_dialog_for_new_tag($(event.target), event.data.inputTag, event.data.form_name, event.data.divtags);
|
|
910
|
+ //}
|
|
911
|
+ //
|
|
912
|
+ //function form_add_open_dialog_for_new_tag(link_add_tag, inputTag, form_name, divtags)
|
|
913
|
+ //{
|
|
914
|
+ //
|
|
915
|
+ //
|
|
916
|
+ // // Effet fade-in du fond opaque
|
|
917
|
+ // $('body').append($('<div>').attr('id', 'fade'));
|
|
918
|
+ // //Apparition du fond - .css({'filter' : 'alpha(opacity=80)'}) pour corriger les bogues de IE
|
|
919
|
+ // $('#fade').css({'filter' : 'alpha(opacity=80)'}).fadeIn();
|
|
920
|
+ //
|
|
921
|
+ // // En premier lieux on fait apparaître la fenêtre de confirmation
|
|
922
|
+ // var popup = $('<div>')
|
|
923
|
+ // .attr('id', 'add_tag')
|
|
924
|
+ // .addClass('popin_block')
|
|
925
|
+ // .css('width', '400px')
|
|
926
|
+ // //.append($('<h2>').append(string_tag_add_title))
|
|
927
|
+ // .append($('<form>')
|
|
928
|
+ // .attr('action', url_add_tag)
|
|
929
|
+ // .attr('method', 'post')
|
|
930
|
+ // .attr('name', 'add_tag')
|
|
931
|
+ // .ajaxForm(function(response) {
|
|
932
|
+ // /*
|
|
933
|
+ // *
|
|
934
|
+ // */
|
|
935
|
+ //
|
|
936
|
+ // if (response.status == 'mustbeconnected')
|
|
937
|
+ // {
|
|
938
|
+ // $(location).attr('href', url_index);
|
|
939
|
+ // }
|
|
940
|
+ //
|
|
941
|
+ // if (response.status == 'success')
|
|
942
|
+ // {
|
|
943
|
+ // var tag_id = response.tag_id;
|
|
944
|
+ // var tag_name = response.tag_name;
|
|
945
|
+ //
|
|
946
|
+ // $('input#tags_selected_tag_'+form_name).val(tag_id);
|
|
947
|
+ // inputTag.val(tag_name);
|
|
948
|
+ // // Et on execute l'évènement selectTag de l'input
|
|
949
|
+ // inputTag.trigger("selectTag");
|
|
950
|
+ // // On cache la liste puisque le choix vient d'être fait
|
|
951
|
+ // divtags.hide();
|
|
952
|
+ //
|
|
953
|
+ // link_add_tag.parents('div.search_tag_list').find('img.tag_loader').hide();
|
|
954
|
+ //
|
|
955
|
+ // $('#fade').fadeOut(400, function(){$('#fade').remove();});
|
|
956
|
+ // $('#add_tag').remove();
|
|
957
|
+ // }
|
|
958
|
+ //
|
|
959
|
+ // if (response.status == 'error')
|
|
960
|
+ // {
|
|
961
|
+ // $('form[name="add_tag"]').find('ul.error_list').remove();
|
|
962
|
+ // var ul_errors = $('<ul>').addClass('error_list');
|
|
963
|
+ //
|
|
964
|
+ // for (i in response.errors)
|
|
965
|
+ // {
|
|
966
|
+ // ul_errors.append($('<li>').append(response.errors[i]));
|
|
967
|
+ // }
|
|
968
|
+ //
|
|
969
|
+ // $('form[name="add_tag"]').prepend(ul_errors);
|
|
970
|
+ // }
|
|
971
|
+ //
|
|
972
|
+ // return false;
|
|
973
|
+ // })
|
|
974
|
+ //
|
|
975
|
+ // .append($('<div>').addClass('tag')
|
|
976
|
+ // .append($('<ul>')
|
|
977
|
+ // .append($('<li>').addClass('button')
|
|
978
|
+ // .append(link_add_tag.text()))))
|
|
979
|
+ // .append($('<p>').append(string_tag_add_text))
|
|
980
|
+ // .append($('<p>').append(string_tag_add_argument))
|
|
981
|
+ // .append($('<textarea>').attr('name', 'argument'))
|
|
982
|
+ // .append($('<div>').addClass('inputs')
|
|
983
|
+ // .append($('<input>')
|
|
984
|
+ // .attr('type', 'button')
|
|
985
|
+ // .attr('value', string_tag_add_inputs_cancel)
|
|
986
|
+ // .addClass('button')
|
|
987
|
+ // .click(function(){
|
|
988
|
+ // $('#fade').fadeOut(1000, function(){$('#fade').remove();});
|
|
989
|
+ // $('#add_tag').remove();
|
|
990
|
+ //
|
|
991
|
+ // return false;
|
|
992
|
+ // })
|
|
993
|
+ // )
|
|
994
|
+ // .append($('<input>')
|
|
995
|
+ // .attr('type', 'submit')
|
|
996
|
+ // .attr('value', string_tag_add_inputs_submit)
|
|
997
|
+ // .addClass('button')
|
|
998
|
+ // .click(function(){
|
|
999
|
+ //
|
|
1000
|
+ // link_add_tag.parents('div.search_tag_list').find('img.tag_loader').show();
|
|
1001
|
+ //
|
|
1002
|
+ // })
|
|
1003
|
+ // )
|
|
1004
|
+ // .append($('<input>').attr('type', 'hidden').attr('name', 'tag_name').val(link_add_tag.text()))
|
|
1005
|
+ // ))
|
|
1006
|
+ // ;
|
|
1007
|
+ //
|
|
1008
|
+ // // Il faut ajouter le popup au dom avant de le positionner en css
|
|
1009
|
+ // // Sinon la valeur height n'est pas encore calculable
|
|
1010
|
+ // $('body').prepend(popup);
|
|
1011
|
+ //
|
|
1012
|
+ // //Récupération du margin, qui permettra de centrer la fenêtre - on ajuste de 80px en conformité avec le CSS
|
|
1013
|
+ // var popMargTop = (popup.height() + 50) / 2;
|
|
1014
|
+ // var popMargLeft = (popup.width() + 50) / 2;
|
|
1015
|
+ //
|
|
1016
|
+ // //On affecte le margin
|
|
1017
|
+ // $(popup).css({
|
|
1018
|
+ // 'margin-top' : -popMargTop,
|
|
1019
|
+ // 'margin-left' : -popMargLeft
|
|
1020
|
+ // });
|
|
1021
|
+ //
|
|
1022
|
+ // return false;
|
|
1023
|
+ //}
|
|
1024
|
+ //
|
|
1025
|
+ //var last_keypress = 0;
|
|
1026
|
+ //
|
|
1027
|
+ //function check_timelaps_and_search(input, form_name, time_id, timed, info)
|
|
1028
|
+ //{
|
|
1029
|
+ // if (!timed)
|
|
1030
|
+ // {
|
|
1031
|
+ // // C'est une nouvelle touche (pas redirigé) on lui donne un id
|
|
1032
|
+ // // et on met a jour l'id de la dernière pressé
|
|
1033
|
+ // last_keypress = new Date().getTime();
|
|
1034
|
+ // var this_time_id = last_keypress;
|
|
1035
|
+ // }
|
|
1036
|
+ // else
|
|
1037
|
+ // {
|
|
1038
|
+ // // Si elle a été redirigé, on met son id dans cette variable
|
|
1039
|
+ // var this_time_id = time_id;
|
|
1040
|
+ // }
|
|
1041
|
+ //
|
|
1042
|
+ // // C'est une touche redirigé dans le temps qui a été suivit d'une autre touche
|
|
1043
|
+ // if (time_id != last_keypress && timed)
|
|
1044
|
+ // {
|
|
1045
|
+ // // elle disparait
|
|
1046
|
+ // }
|
|
1047
|
+ // else
|
|
1048
|
+ // {
|
|
1049
|
+ // //
|
|
1050
|
+ // if ((new Date().getTime() - last_keypress) < 600 || timed == false)
|
|
1051
|
+ // {
|
|
1052
|
+ // // Si elle vient d'être tapé (timed == false) elle doit attendre (au cas ou une autre touche soit tapé)
|
|
1053
|
+ // // Si c'est une redirigé qui n'a pas été remplacé par une nouvelle lettre
|
|
1054
|
+ // // elle doit attendre au cas ou soit pressé.
|
|
1055
|
+ // setTimeout(function(){check_timelaps_and_search(input, form_name, this_time_id, true, info)}, 700);
|
|
1056
|
+ // }
|
|
1057
|
+ // else
|
|
1058
|
+ // {
|
|
1059
|
+ // // il n'y a plus a attendre, on envoie la demande de tag.
|
|
1060
|
+ // autocomplete_tag(input, form_name);
|
|
1061
|
+ // }
|
|
1062
|
+ // }
|
|
1063
|
+ //}
|
|
1064
|
+ //
|
|
1065
|
+ //// Autocompletion de tags
|
|
1066
|
+ //$("div.tags_prompt ul.tagbox li.input input").live('keypress', function(e){
|
|
1067
|
+ //
|
|
1068
|
+ // var form_name = $(this).parents('form').attr('name');
|
|
1069
|
+ // var code = (e.keyCode ? e.keyCode : e.which);
|
|
1070
|
+ //
|
|
1071
|
+ // if ((e.which !== 0 && e.charCode !== 0) || (code == 8 || code == 46))
|
|
1072
|
+ // {
|
|
1073
|
+ // check_timelaps_and_search($(this), form_name, new Date().getTime(), false, $(this).val());
|
|
1074
|
+ // }
|
|
1075
|
+ //
|
|
1076
|
+ //});
|
|
1077
|
+ //
|
|
1078
|
+ //// Un click sur ce lien affiche tout les tags cachés de la liste
|
|
1079
|
+ //$('div.search_tag_list a.more').live('click', function(){
|
|
1080
|
+ // jQuery.each( $(this).parent('div').find('ul.search_tag_list li') , function(){
|
|
1081
|
+ // $(this).show();
|
|
1082
|
+ // });
|
|
1083
|
+ // $(this).hide();
|
|
1084
|
+ // return false;
|
|
1085
|
+ //});
|
|
1086
|
+ //
|
|
1087
|
+ //$('ul.tagbox li.input input[type="text"]').formDefaults();
|
|
1088
|
+ //
|
1080
|
1089
|
////////////////// FIN TAG PROMPT ///////////////
|
1081
|
1090
|
|
1082
|
1091
|
// Suppression d'un element
|
|
@@ -1348,15 +1357,12 @@ $(document).ready(function(){
|
1348
|
1357
|
|
1349
|
1358
|
var form_name = "add";
|
1350
|
1359
|
var tag_id = str_replace('#', '', $(this).attr('href'));
|
1351
|
|
- var input_tag = $("div.tags_prompt ul.tagbox li.input input");
|
1352
|
1360
|
|
1353
|
1361
|
// Si on connait le tag id (pas un nouveau tag donc)
|
1354
|
1362
|
if (tag_id)
|
1355
|
1363
|
{
|
1356
|
|
- $('input#tags_selected_tag_'+form_name).val(tag_id);
|
1357
|
|
- input_tag.val($(this).text());
|
1358
|
|
- // Et on execute l'évènement selectTag de l'input
|
1359
|
|
- input_tag.trigger("selectTag");
|
|
1364
|
+ var tag = new Tag(tag_id, $(this).text());
|
|
1365
|
+ window.add_tag_prompt_connector.addTagToTagPrompt(tag);
|
1360
|
1366
|
}
|
1361
|
1367
|
else
|
1362
|
1368
|
{
|