main.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  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. function init_setting_example(){
  12. var doc = new DocumentApi('#example-doc');
  13. doc.load();
  14. }
  15. /**
  16. *
  17. * QUICKFORM
  18. *
  19. */
  20. function example_quickform_buttons(){
  21. $('.quickform-modal .modal-footer').append('<div class="btn btn-success" onclick="contact_save(contact_submit_quickform);"><i class="fas fa-check"></i> Ajouter</div>');
  22. }
  23. // Callback du quickform on save
  24. function contact_submit_quickform(){
  25. //do something
  26. $('#quickform-modal').modal('hide');
  27. }
  28. //GESTION CONTACT
  29. function contact_search(callback, exportMode){
  30. $('#contacts').fill({
  31. action:"contact_search",
  32. filters : $('#filters').filters(),
  33. //Gestion du tri par colonnes de tableau (optionnel)
  34. sort : $('#contacts').sortable_table('get'),
  35. //Activation de l'export excel (optionnel)
  36. export : !exportMode ? false : exportMode,
  37. //exemple d'affichage de ligne personnalisé (optionnel)
  38. showing : function(item,i){
  39. item.css({
  40. transform:'translateX(-200px)',
  41. transition:'all 0.2s ease-in-out',
  42. opacity : 0
  43. }).removeClass('hidden');
  44. setTimeout(function(){
  45. item.css({
  46. transform:'translateX(0px)',
  47. opacity : 1
  48. })
  49. },(i+1)*20);
  50. }
  51. },function(response){
  52. $('.results-count span').text(response.pagination.total);
  53. if(callback!=null) callback();
  54. });
  55. }
  56. //Sauvegarde
  57. function contact_save(cb){
  58. var data = $('#contactForm').toJson();
  59. data.id = $('#contactForm').attr('data-id');
  60. data.avatar = $('#picture')[0].files[0];
  61. $.action(data,function(r){
  62. if(cb) cb();
  63. $('#contactForm').attr('data-id',r.id);
  64. $.message('success','Enregistré');
  65. });
  66. }
  67. //Suppression
  68. function contact_delete(element){
  69. if(!confirm('Êtes vous sûr de vouloir supprimer cet item ?')) return;
  70. var line = $(element).closest('tr');
  71. $.action({
  72. action : 'contact_delete',
  73. id : line.attr('data-id')
  74. },function(r){
  75. line.remove();
  76. $.message('info','Element supprimé');
  77. });
  78. }
  79. //Suppression de document
  80. function contact_delete_document(element){
  81. if(!confirm("Êtes-vous sûr de vouloir supprimer ce fichier ?")) return;
  82. var line = $(element).closest('li');
  83. $.action({
  84. action : 'contact_delete_document',
  85. path : line.attr('data-path')
  86. },function(r){
  87. line.remove();
  88. $.message('info','Element supprimé');
  89. });
  90. }
  91. //Ajout de document
  92. function contact_add_document(files){
  93. var form = $('#contactForm');
  94. var contactId = form.attr('data-id');
  95. $.action({
  96. action : 'contact_add_document',
  97. id: contactId,
  98. files : files
  99. }, function(r){
  100. form.attr('data-id', r.id);
  101. $.each(r.files, function(i, file){
  102. var line = $('li[data-path="'+file.oldPath+'"]', form);
  103. line.attr('data-path', file.relative);
  104. line.find('a').attr('href', file.url);
  105. line.find('i.pointer').attr('onclick', 'contact_delete_document(this)');
  106. $('[data-type="dropzone"] input:not(:visible)', form).val('');
  107. $.message('success', 'Fichier "'+file.name+'" sauvegardé');
  108. });
  109. });
  110. }
  111. //Suppression de l'avatar
  112. function contact_avatar_delete(element){
  113. if(!confirm('Êtes vous sûr de vouloir supprimer l\'image ?')) return;
  114. var imageComposer = $(element).parent().find("input[data-type='image']");
  115. $.action({
  116. action: 'contact_avatar_delete',
  117. id: $('#contactForm').attr('data-id')
  118. }, function(r){
  119. imageComposer.wrap('<form>').closest('form').get(0).reset();
  120. imageComposer.unwrap();
  121. $(element).next('img').attr('src', $(imageComposer).attr('data-default-src'));
  122. $(element).remove();
  123. });
  124. }
  125. /* EXPORT MODELE */
  126. function contact_export_callback(){
  127. console.log('Callback custom après chargement du modal');
  128. setTimeout(function(){
  129. $('#export-modal .cb-custom-btn').remove();
  130. $('#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>');
  131. },0);
  132. }