Создание инструмента для совместной работы - проверка, редактирует ли пользователь в настоящее время элементы перетаскивания и диалоговое окно отображения - PullRequest
0 голосов
/ 20 февраля 2012

Привет после некоторых идей на самом деле,

Я создал инструмент для перетаскивания (вроде доски объявлений), чтобы люди могли публиковать идеи для совместной работы. Все работает на AJAX через Jquery UI, Jquery с PHP / Mysql для обработки позиции и хранения данных. У меня вопрос такой, скажем, у меня есть 2 пользователя. Пользователь 1 перетаскивает и изменяет размер изображения и перемещает его - пользователь 2 перетаскивает то же изображение, пользователь 1 увидит, как его изображение переместится и появится там, где размещен пользователь 2.

Могу ли я обнаружить ajax-вызов пользователя 1 или изменить или перетащить его, а затем сказать, есть ли диалоговое окно с надписью "редактируется" или что-то в этом духе для пользователя 2? Если так, как бы я поступил об этом?

Надеюсь, моя болтовня имеет смысл? У меня есть прикрепленное изображение, чтобы проиллюстрировать мою точку зрения.

Заранее большое спасибо! enter image description here

1 Ответ

1 голос
/ 20 февраля 2012

вы можете использовать начальное событие Draggable

$( ".selector" ).draggable({
   start: function(event, ui) { ... }
});

и заблокируйте элемент для перетаскивания для других пользователей. просто создайте столбец «draggedBy» и введите имя пользователя, который в данный момент его перетаскивает, и NULL в противном случае.

если вам нравится такой подход, вы можете установить таймаут в несколько секунд, чтобы не блокировать элемент навсегда, если пользователь, которому принадлежит блокировка, отключается. Вы можете создать второй столбец draggingStartedAt и поместить в него текущую метку времени. теперь просто возражайте против этой блокировки, если она не старше MAX_LOCK_TIME, может быть, 10 с или около того.

если вам нужно что-то более сложное, есть много способов блокировки: Wikipedia: Lock

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...