contextMenu brisant le glissement d’un événement FullCalendar

J’ai donc récemment ajouté un menu contextuel aux événements de FullCalendar à l’aide de jQuery contextMenu (http://abeautifulsite.net/blog/2008/09/jquery-context-menu-plugin/). Cela fonctionne à merveille, sauf que ma capacité de glisser / déposer a cessé de fonctionner correctement, lorsque vous faites glisser un événement et que vous laissez passer une autre date, la date de l’événement n’est pas modifiée et qu’il redirige vers l’URL de l’événement. J’ai fait quelques vérifications et me suis rendu compte que eventDrop, eventDragStart et eventClick ne sont pas tous déclenchés. Si je commente le menu contextuel tout fonctionne bien. Si quelqu’un peut comprendre pourquoi contextMenu empêche les rappels de calendrier complets d’être renvoyés, je l’apprécierais, car contextMenu répond parfaitement à mes besoins, sinon. Code pour les rappels de contextMenu et d’événement:

eventRender: function(event, element) { if (event.url.indexOf("https://www.google.com") != 0) { element.contextMenu({ menu: "myMenu", }, function(action, el) { if (action == "approve") { $.ajax({ url: 'events/' + event.id, data: { 'event' : { 'status' : "Approved", } }, type: "PUT", }), $('#calendar').fullCalendar('refetchEvents'); } else if (action == "deny") { $.ajax({ url: 'events/' + event.id, data: { 'event' : { 'status' : "Denied", } }, type: "PUT", }), $('#calendar').fullCalendar('refetchEvents'); } else if (action == "destroy") { if (confirm("Are you sure you want to delete this event?") ) { $.ajax({ url: 'events/' + event.id, type: "DELETE", }), $('#calendar').fullCalendar('refetchEvents'); } } else if (action == "edit") { window.location = 'events/' + event.id + '/edit' } } ); } }, eventDrop: function(event, dayDelta, minuteDelta, allDay, revertFunc){ updateEvent(event); }, eventResize: function(event, dayDelta, minuteDelta, revertFunc){ updateEvent(event); }, eventClick: function(event) { if (event.url.indexOf("https://www.google.com") != 0) { $.facebox(function() { $.get('events/' + event.id, function(data) { $.facebox(data) } ); }) return false; } return false; } 

Eh bien, comme il semble que cela ne va pas être résolu, ma solution a été de passer à un plugin de menu contextuel différent (http://www.trendskitchens.co.nz/jquery/contextmenu/) qui était très similaire et n’a pas causer des problèmes avec le calendrier complet. Ce n’est pas un correctif pour le problème qui empêche ce plugin de fonctionner avec le calendrier complet, mais c’est un correctif pour que mon programme fonctionne correctement.

Pour ceux qui ne veulent pas changer de plugins, pour résoudre le problème avec le menu contextuel qui modifie la glissabilité, j’ai modifié jquery.contextMenu.js

De:

 $(this).mousedown( function(e) { var evt = e; evt.stopPropagation(); $(this).mouseup( function(e) { e.stopPropagation(); var srcElement = $(this); $(this).unbind('mouseup'); if (evt.button == 2) { 

à

 $(this).mousedown( function(e) { var evt = e; evt.stopPropagation(); $(this).mouseup( function(e) { if (evt.button == 2) { e.stopPropagation(); var srcElement = $(this); $(this).unbind('mouseup'); 

Cela empêche le plugin de menu contextuel de faire quoi que ce soit avec un clic gauche, mais uniquement avec un clic droit.