Почему мне нужно обновить
Мне нужно иметь функцию отключения навигации по датам после некоторой даты, поэтому я рассматриваю возможность обновления с jscalendar (http://www.dynarch.com/projects/calendar/old/) до jscal2 (http://www.dynarch.com/projects/calendar/))в моем проекте. Но на домашней странице и в документации нового jscal2 упоминаются следующие вещи -
Обратите внимание, что это совершенно новый продукт.
Обратите внимание, что он несовместим с нашим старым календарным проектом.
Задача
Итак, я запутался, есливозможно обновление с минимальными изменениями в моем текущем проекте, и если да, то как именно это сделать. Я уже разместил комментарий на сайте - http://www.dynarch.com/projects/calendar/discussion/ и жду ответа. Тем временем я думал, что те, кто имеетИспользованный продукт может помочь, поэтому вот мой вопрос.
Существующий код моего проекта использует версию 1.51 jscalendar (я вижу, что эта строка записана в файле calendar.js - calendar.js,v 1.51).Нет этого вспомогательного кода, который содержит function showCalendar()
, который вызывает var cal = new Calendar()
, вот так -
function setActiveStyleSheet()
function selected()
function closeHandler()
function showCalendar(){
...
//some lines of code
...
var cal = new Calendar(1, null, selected, closeHandler);
...
//some lines of code
...
}
....
Проверьте то же самое здесь http://pastebin.com/QHAb0WdB
Но я нея не вижу этот вспомогательный скрипт в демоверсиях новой версии, которые я скачал сегодня.Я попытался, удалив включение всех файлов js / css старой версии, включенных файлов новой версии, но сохранив только тот же jscalendar.js, но он выдает эту ошибку js -
_dynarch_popupCalendar is not defined
[Break On This Error] if (_dynarch_popupCalendar != null) {
Iкак я догадался, я мог бы ограничить прошедшую дату, добавив параметр onSelect
к новой инициации Календаря следующим образом -
onSelect: function() {
var date = Calendar.intToDate(this.selection.get());
LEFT_CAL.args.min = date; // setting minimum date, so as to not allow browsing past this date
LEFT_CAL.redraw();
this.hide();
}
Но я ничего не пробовал после того, как изменение в вспомогательном скрипте не удалось.
Пожалуйста, дайте мне знать, если у вас есть представление о правильном процессе обновления.Я не уверен, что мне чего-то не хватает.
Я думал, что это будет так же просто, как просто изменить включение js, и это могут быть файлы css, и никаких изменений в коде не потребуется.Мне просто нужно установить еще несколько параметров конфигурации, соответствующих отключению дат, как я желаю.
Обновление
Упрощение сейчас !!
Прежде всегоисправление, это не обновление, потому что документ jscal2 (тот, который я хочу использовать) говорит -
Обратите внимание, что это совершенно новый продукт.
Обратите внимание, что он не совместим с нашим старым календарным проектом.
Я понял, что минимум, необходимый для вызова календаря, -
Calendar.setup({
cont : "calendar-container" // a cont or a trigger
});
Все аргументы необязательны.Однако вы должны предоставить один из параметров cont (для встроенных календарей) или триггер для всплывающих календарей, либо предоставить собственный код для отображения всплывающего календаря.Мы увидим, как это можно сделать позже.
Я думаю, мне нужно написать этот код для отображения всплывающего календаря, например:
function showCalendar(){
...
//some lines of code
...
var cal = new Calendar();
...
//some code to display the calendar, based on the details already being passed to this function - which button was clicked, where to attach the calendar, etc.
...
}
Но я сделалне вижу такого кода в документации.Я пытался с этим кодом, но не работает -
function trigger()
{
cal = new Calendar({
inputField: "startdate",
dateFormat: "%B %d, %Y",
bottomBar: false,
showTime:true
}
});
cal.redraw(); //blind try - does not work, but it does not give any errors. But I
don't see any other proper function to do this in the doc.
}
Есть идеи, ребята?
Спасибо
Bounty Started
Нашлине очень хорошее, неоптимизированное решение, опубликовало его в ответе, но все еще ищет правильное решение.