|
Предоставляет простой API для генерации HTML кода календарей. Был написан для собственных нужд и, в порыве человеколюбия, выложен в public domain.
Где взять?
Здесь: http://things.paradigm.ru/calendar.class/calendar.class.zip
Что умеет?
- Умеет генерировать календарь на отдельно заданный месяц или год.
- Имеет многоязычную поддержку. Названия месяцев и дней недели, могут отображаться на русском и английском языках (этот набор языков легко расшириряется).
- Первым днём недели можно задать воскресенье или понедельник — по необходимости.
- Опционально выдеяет текущую (заданную) дату и выходные дни (воскресенье или субботу и воскресенье).
- Умеет привязывать к заданным датам гиперссылки и фрагменты текста, которые отображаются в виде хинтов при наведении курсора.
- Оформление сделано полностью через внешние таблицы стилей. В комплект поставки входит три разных типа оформления, по образу и подобию которых можно делать свои собственные.
Как все выглядит?
Ниже приведены несколько скриншотов сгенерированных календарей. По клику на любом из них откроется страница с соответствующим примером кода и сами календари вживую.
Код календарей генерируется с включенными CSS-спецификаторами, благодаря чему их можно оформлять с помощью собственных стилей.
Несколько примеров определения CSS-классов для календарей.
Написать комментарий
|
# Александр: (26 ноября, 2008 @ 15:07)
Скрипт хороший. Искал как раз генератор календаря.
Единственное, не понял, как выставлять язык – ru
Надеюсь, автор пояснит…
Спасибо!
# mihdan: (17 декабря, 2008 @ 12:41)
$calendar = new Calendar();
$calendar->lng = 'ru';
# Дмитрий: (23 февраля, 2009 @ 08:14)
Я пробка но чтото понять немагу как его запустить чтото работать нехочет, хотелось бы чтобы автор еще для ламоботов объяснил как календарь воткнуть в страницу и чтобы он работал.
# Дмитрий: (23 февраля, 2009 @ 08:17)
Забыл дописать что он у меня выдает
Fatal error: Class ‘Calendar’ not found in C:\www\html\calendar\demo4.php on line 2
т.е. ему ненравица строка $c = new Calendar();
что в ней должно быть?
# admin: (23 февраля, 2009 @ 11:26)
По всей видимости, не подключен файл, в котором определен Calendar. Стоит внимательнее смотерть на пример (точка входа на в demo4.php).
# mihdan: (23 февраля, 2009 @ 19:46)
Перед инициализацие класса Calendar(), его необходимо подключить
Например так
include_once ‘calendar.class.php’;
$cal = new Calendar();
# Юрий: (29 апреля, 2009 @ 11:28)
А в классе предусмотрен переход Назад Вперед по месяцам при показе всего одного месяца? Или придется реализовывать самому?
# admin: (29 апреля, 2009 @ 12:31)
Юрий: Этот класс не про навигацию, а про отрисовку календаря. Ссылки на «соседние» страницы так или иначе придется реализовывать отдельно.
# mihdan: (29 апреля, 2009 @ 13:05)
Юрий, а в чем у вас проблема?
# Юрий: (29 апреля, 2009 @ 13:39)
Листание месяцев сделал. нашел проблему – сегодня 29 число. если я листаю назад и вперед и дохожу до февраля – показывает март! причем два раза. я думаю что проблема именно в 29 числе. делаю вручную $currentMonth = strtotime(‘-2 month’); без своих заморочек с листанием – получаю все равно март.
# Юрий: (29 апреля, 2009 @ 13:47)
пробовал менять число – все равно при -2 – дает март. а не февраль.
# Юрий: (29 апреля, 2009 @ 14:11)
сделал так
$d1 = getdate();
$day1 = $d1["mday"];
$currentMonth = strtotime(‘+’.@$_SESSION['monthjump'].’ month’);
if ($day1==29) $currentMonth = strtotime(‘+’.@$_SESSION['monthjump'].’ month -1 day’);
наверняка получу ошибку в высокосный год. но хотя бы так пока более умного не придумается.
# mihdan: (29 апреля, 2009 @ 14:49)
На проекте инфоШОС http://infoshos.ru стоит календарь разработанный на данном классе, как видите – ошибок нет
# Юрий: (29 апреля, 2009 @ 15:01)
mihdan – так там и листание идет не стрелочками влево-вправо а выбором конкретно года и месяца – там не может быть ошибки.
# Василий: (18 мая, 2009 @ 17:21)
использую demo4.php
у меня класс подключить так как тут советовали:
include_once ‘calendar.class.php’;
$cal = new Calendar();
не вышло, подключил следующим образом:
nclude_once(‘./calendar.class.php’);
$c = new Calendar();
но увы не подключаются стили хотя ошибок не выдается :(
что может быть не так подскажите пожалуйста
# admin: (18 мая, 2009 @ 17:30)
Василий: Стили подключаются в заголовке HTML документа. С PHP кодом это никак не связано. Поправьте путь к CSS файлу в соответствующем теге link.
# Василий: (18 мая, 2009 @ 18:10)
прошу прощения наверно неправильно описал проблему (или чего то я сам не понял , увы мне) :
в последнем примере demo4.php. где отрисовываются 3 месяца насколько я разобрался за включение определений CSS-классов для календарей отвечает :
$c->setCssPrefix(‘red_’); а затем отрисовка месяца в соответствующем стиле:
echo $c->genUMonth($prevMonth);
вот єто и не работает
setCssPrefix описан в calendar.class.php, сам CSS описан в calendar_red.css
можно предположиь, что, в данном случае, проблема возможно не в теге link?
# admin: (18 мая, 2009 @ 18:35)
Василий: Посмотрите на сгенерированный HTML код. Если префиксы red_ присутствуют в именах CSS классов, значит код сгенерировался нормально, и причина отсутствия правильных стилей может быть только в том, что .css не подключился.
# Василий: (19 мая, 2009 @ 08:38)
Прошу прощения, Вы были правы. я не туда смотрел, все дело было таки да. в теге link
# Zheban: (4 июня, 2009 @ 11:27)
А как вообще ставить его?
# mihdan: (5 июня, 2009 @ 12:46)
http://things.paradigm.ru/calendar.class/#c04
# koldun666: (14 октября, 2009 @ 15:11)
Огромное спасибо! Все прекрасно работает.
# nikolay: (29 октября, 2009 @ 15:03)
Здравствуйте, подскажите как автоматически привязать к числу месяца гиперссылку вида 2009/1001/ например. Спасибо. Чтобы в календаре автоматически проставлялись ссылки?
# admin: (29 октября, 2009 @ 15:23)
nikolay: Например, так:
# nikolay: (29 октября, 2009 @ 16:33)
Спасибо! А дни случайно не подскажите чтобы после $i еще и день выводился по порядку. Спасибо еще раз.
# admin: (29 октября, 2009 @ 17:53)
nikolay:
... + $i + "/" + date("l", [нужная дата и время]) ...http://php.net/manual/en/function.date.php
# nikolay: (30 октября, 2009 @ 17:03)
Спасибо большое за помощь! Единственное что не могу решить как вывести нужный мне день в ссылке. Сейчас 1,2, 3, 4 и тд. а надо чтобы начиналось с 01,02,03. Еще раз спасибо. Может класс где-то подправить?
Код вот.
for($i = 1; $i addDateLink($i, 10, 2009, “http://www.example.com/2009/10$i”);
# admin: (30 октября, 2009 @ 17:30)
nikolay: Префиксный ноль при выводе чисел можно сделать функциями sprintf(), date() и, возможно, number_format(). Форматирование URL не относится к функционалу календаря, поэтому грамотнее его делать вне класса. Может, книжку про php прочитать, м?
# Александр: (22 декабря, 2009 @ 14:13)
Добрый день! Сделал из ваших образцов вот такой календарик.
setLang(‘ru’);
$c->setOptions(CLD_MONDAYS | CLD_MARKSATSUN);
$c->setCssPrefix(‘blank_’);
$currentMonth = time();
echo $c->genUMonth($currentMonth, true);
?>
Но почему то по русски пишет не правильно названия дней:
дЕЙЮАПЭ
оМ бР яП вР оР яА бЯ
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
# admin: (24 декабря, 2009 @ 13:41)
Александр: Видимо, в браузере кодировка сбилась. Нужно ее поправить в HTTP заголовоке или в <head> прописать правильную. Ну или включить автоопределение, если оно не работает.
# Сергей: (14 мая, 2010 @ 18:43)
Здравствуйте! Нужна помощь,нужно сделать чтобы в календаре выделялись выходные дни и первый день стоял понедельник а не воскресенье,менял разные значения но у меня ничего не вышло
# Exorcist: (24 мая, 2010 @ 05:21)
Отличный календарь. А как его модифицировать под AJAX. Чтобы можно было листать календарь влево вправо по месяцам?
# Dmitriy: (4 сентября, 2010 @ 01:42)
Хочу, но не знаю, куда и как в букс поместить календарь! Экспериментировал, однако, нечего не получилось! Пожалуйста, подскажите, как и куда в Букс установить календарь, чтоб работал! Mtnuleft.php – побывал но не знаю почему не работает!