В представлении календаря SharePoint можно очень легко и незаметно для себя изменить дату события, просто перетащив запись в другое место календаря. При этом, интерфейс SharePoint не скажет тебе ничего о сделанных изменениях, потому легко может оказаться, что, к примеру, дата запланированной встречи неожиданно изменилась. Что делать?
Чтобы этого избежать, очень напрашивается установка запрета на Drag and drop для страницы, где отображается представление календаря. Есть очень простое и быстрое решение запрета Drag and drop для календаря SharePoint - с помощью небольшого кода Javascript, который будет блокировать перетаскивание.
Я оказался далеко не первым, кому это понадобилось, потому уже были красивые решения. Везде 10й "Шарик" снимается с поддержки и информации по нему все труднее найти, потому этот кусок кода добавлю здесь.
Для его применения, как и обычно, нужно добавить на страницу представления веб-часть "Редактор содержимого" (Content editor web part) и добавить в нее следующий код:
<script type='text/javascript'> ExecuteOrDelayUntilScriptLoaded(function(){ var calendarCreate = SP.UI.ApplicationPages.CalendarContainerFactory.create; SP.UI.ApplicationPages.CalendarContainerFactory.create = function(elem, cctx, viewType, date, startupData) { if(cctx.dataSources && cctx.dataSources instanceof Array && cctx.dataSources.length > 0){ for(var i = 0; i < cctx.dataSources.length; i++){ cctx.dataSources[i].disableDrag = true; } } calendarCreate(elem, cctx, viewType, date, startupData); } }, 'SP.UI.ApplicationPages.Calendar.js'); </script>