main.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. //CHARGEMENT DE LA PAGE
  2. function init_plugin_example(){
  3. switch($.urlParam('page')){
  4. default:
  5. break;
  6. }
  7. $('#contacts').sortable_table({
  8. onSort : contact_search
  9. });
  10. }
  11. /**
  12. *
  13. * QUICKFORM
  14. *
  15. */
  16. function example_quickform_buttons(){
  17. $('.quickform-modal .modal-footer').append('<div class="btn btn-success" onclick="contact_save(contact_submit_quickform);"><i class="fas fa-check"></i> Ajouter</div>');
  18. }
  19. // Callback du quickform on save
  20. function contact_submit_quickform(){
  21. $('#quickform-modal').modal('hide');
  22. }
  23. //GESTION CONTACT
  24. function contact_search(callback, exportMode){
  25. var box = new FilterBox('#filters');
  26. $('#contacts').fill({
  27. action:"contact_search",
  28. filters : box.filters(),
  29. //Gestion du tri par colonnes de tableau (optionnel)
  30. sort : $('#contacts').sortable_table('get'),
  31. //Activation de l'export excel (optionnel)
  32. export : !exportMode ? false : exportMode,
  33. //exemple d'affichage de ligne personnalisé (optionnel)
  34. showing : function(item,i){
  35. item.css({
  36. transform:'translateX(-200px)',
  37. transition:'all 0.2s ease-in-out',
  38. opacity : 0
  39. }).removeClass('hidden');
  40. setTimeout(function(){
  41. item.css({
  42. transform:'translateX(0px)',
  43. opacity : 1
  44. })
  45. },(i+1)*5);
  46. }
  47. },function(response){
  48. $('.results-count span').text(response.pagination.total);
  49. if(callback!=null) callback();
  50. });
  51. }
  52. //Sauvegarde
  53. function contact_save(cb){
  54. var data = $('#contactForm').toJson();
  55. data.id = $('#contactForm').attr('data-id');
  56. data.avatar = $('#picture')[0].files[0];
  57. $.action(data,function(r){
  58. if(cb) cb();
  59. $('#contactForm').attr('data-id',r.id);
  60. $.message('success','Enregistré');
  61. });
  62. }
  63. //Suppression
  64. function contact_delete(element){
  65. if(!confirm('Êtes vous sûr de vouloir supprimer cet item ?')) return;
  66. var line = $(element).closest('tr');
  67. $.action({
  68. action : 'contact_delete',
  69. id : line.attr('data-id')
  70. },function(r){
  71. line.remove();
  72. $.message('info','Element supprimé');
  73. });
  74. }
  75. //Suppression de document
  76. function contact_delete_document(element){
  77. if(!confirm("Êtes-vous sûr de vouloir supprimer ce fichier ?")) return;
  78. var line = $(element).closest('li');
  79. $.action({
  80. action : 'contact_delete_document',
  81. path : line.attr('data-path')
  82. },function(r){
  83. line.remove();
  84. $.message('info','Element supprimé');
  85. });
  86. }
  87. //Ajout de document
  88. function contact_add_document(files){
  89. var form = $('#contactForm');
  90. var contactId = form.attr('data-id');
  91. $.action({
  92. action : 'contact_add_document',
  93. id: contactId,
  94. files : files
  95. }, function(r){
  96. form.attr('data-id', r.id);
  97. $.each(r.files, function(i, file){
  98. var line = $('li[data-path="'+file.oldPath+'"]', form);
  99. line.attr('data-path', file.relative);
  100. line.find('a').attr('href', file.url);
  101. line.find('i.pointer').attr('onclick', 'contact_delete_document(this)');
  102. $('[data-type="dropzone"] input:not(:visible)', form).val('');
  103. $.message('success', 'Fichier "'+file.name+'" sauvegardé');
  104. });
  105. });
  106. }
  107. //Suppression de l'avatar
  108. function contact_avatar_delete(element){
  109. if(!confirm('Êtes vous sûr de vouloir supprimer l\'image ?')) return;
  110. var imageComposer = $(element).parent().find("input[data-type='image']");
  111. $.action({
  112. action: 'contact_avatar_delete',
  113. id: $('#contactForm').attr('data-id')
  114. }, function(r){
  115. imageComposer.wrap('<form>').closest('form').get(0).reset();
  116. imageComposer.unwrap();
  117. $(element).next('img').attr('src', $(imageComposer).attr('data-default-src'));
  118. $(element).remove();
  119. });
  120. }
  121. /* EXPORT MODELE */
  122. function contact_export_pre_callback(){
  123. console.log('Callback custom après chargement du modal');
  124. setTimeout(function(){
  125. $('#export-modal .cb-custom-btn').remove();
  126. $('#export-modal .modal-footer').prepend('<div class="btn btn-primary mr-auto cb-custom-btn"><i class="fas fa-check"></i> Bouton ajouté avec le callback custom</div>');
  127. },0);
  128. }
  129. function contact_export_post_callback(){
  130. alert('Callback custom après export');
  131. }
  132. /* EXAMPLE LOCATION CALLBACK */
  133. function example_location_select(location){
  134. var attributes = {};
  135. for(var key in location){
  136. attributes['data-'+key] = location[key];
  137. if($('#'+key)!='') $('#'+key).val(location[key]).text(location[key]);
  138. }
  139. }
  140. function example_location_geocode(infos){
  141. alert("Latitude: "+infos.Response.View[0].Result[0].Location.DisplayPosition.Latitude+"\nLongitude: "+infos.Response.View[0].Result[0].Location.DisplayPosition.Longitude);
  142. }
  143. /** SETTINGS */
  144. //Enregistrement des configurations
  145. function example_setting_save(){
  146. $.action({
  147. action : 'example_setting_save',
  148. fields : $('#example-setting-form').toJson()
  149. }, function(r){
  150. $.message('success','Enregistré');
  151. });
  152. }