Компонент Моменты для InstantCMS 2.5.+ 2.X

4032
Всем привет. Пока скучал в одной теме на форуме, собрал небольшой компонент с использованием этого скрипта fullcalendar. Это своего рода пререлиз, демо-версия, free или lite version компонента, зовите как хотите, так как функционал скромный. Это версия компонента, который выйдет не скоро, причём очень даже не скоро. Даже у меня нет такого чёткого представления, что он вообще выйдет. Поэтому, скажем так, вероятность появления полнофункциональной версии есть, но сроков нет.

В общем подробнее обо всём

Доступ на демо предоставляется по запросу в личном сообщении. Скачать можно в дополнениях.
Для установки необходимо создать тип контента с любыми настройками, но обязательно с системным именем "moments" и установить компонент.
Очерёдность в этом деле начиная с версии движка 2.6.0 строгая, сначала тип контента, затем установка компонента.
С компонентом установится дополнительное поле "Событие в календаре".
Из настроек самого поля доступно лишь цветовое оформление события в календаре по умолчанию, которое можно изменить в настройках самого поля.
Спойлер
При создании/редактировании записи доступно чуть больше опций
Спойлер
Это дата начала, окончания события, варианты повторов события от ежедневного до ежегодного, включая повторы по дням недели и датам в ежемесячных повторах. А также возможность делать вложенные события. Или подобие вложенности событий smile .
В других типах контента это поле будет выводить дату начала/окончания и продолжительность события, но на календаре эти записи в лайт версии не будут отображены. В полной версии планируется работа без привязки к типу контента.
Привязка записей возможна только к записям из этой же категории.Из других категорий записи в список не попадут. Это сделано в основном, для того, чтобы можно было скажем одно мероприятие разбить на несколько частей, и эти части вывести в календаре.
Вот так выглядит запись у которой есть "подзаписи".
Спойлер
А так - которая сама является "вложенной"
Спойлер
В списке вид выглядит так
Спойлер
Содержимое календаря чувствительно к выборанной категории, наборам, фильтру.
Виджетов с календарём в этой версии нет. Доступны все стандартные функции, поля и виджеты как в обычном типе контента.

Для работы этого компонента нужна версия php не ниже 5.6. Я понимаю, что движок instantcms работает на версии 5.3, но "нормальные" php-функции для работы с датой и временем, появились только в 5.6.
Тип поля "Список количества". | Компонент "Похожий контент". Обновление для InstantCMS 2.5.1
Комментарии (50)
Алексей 19 мая 2016 в 21:30 +1
Скромно так -
..Пока скучал..
.
Замечательный компонент и..вопрос: "Приватность присутствует? скажем для использования как расписания для себя или себя и друзей..."
Alekskrug 19 мая 2016 в 21:59 +1
Мне тоже интересно
eoleg 19 мая 2016 в 22:55 +6
Loadырь:
очень нескоро
Лодырь! laugh
Loadырь 20 мая 2016 в 06:28 +2
спалился zst
vikont 19 мая 2016 в 23:51 0
Умеют же люди скучать творчески.. smile
skewes 20 мая 2016 в 08:06 0
Loadырь, +++ в карму!
Однозначно хорошая и многим нужная вещь!

Почему такого нет по умолчанию в Мапсе.? scratch
Def 20 мая 2016 в 08:51 0
Почему такого нет по умолчанию в Мапсе.?
потому что r2 не "скучает" так как скучает Loadырь)

--

компонент очень полезный. не совсем понял правда как повторять по указанным дням недели, т.к вроде нет возможности указать дни недели, или я вероятно не совсем понял эту фопцию)

а фильтр по городам возможен также с учетом типа контента и наличием поля город?)
Loadырь 20 мая 2016 в 13:35 0
Ежемесячно по дате - это берётся дата начала скажем 18 число месяца и каждый месяц 18 числа повторяется.
Ежемесячно по дням недели - это берётся у даты начала день недели, скажем 4 мая - это первая среда месяца и повторяется каждую первую среду месяца, независимо от даты.
lezginka.ru 20 мая 2016 в 09:16 0
шикарная штука...жаль что только для версия 2,5*
Loadырь 20 мая 2016 в 09:35 +1
По поводу приватности поправил файлы. Перезалил архив, ссылку в посте поправил.
Приватность работает немного иначе чем в стандарте. Так как понятие "показать только название" тут я считаю лишнее. В итоге если выбрать в настройках типа контента "Не показывать", то ничего не покажет в календаре. Если выбрать любое другое, то в календаре выведет, записи согласно настроек самой записи - показывать всем или только друзьям.
Loadырь 20 мая 2016 в 09:39 +2
Для обновления перезалейте у себя файлы из архива папки package в корень сайта. Добавил сегодня событие которое видно авторизованному пользователю demouser.
Алексей 20 мая 2016 в 10:24 0
Вот и славненько....! Еще раз Спасибо! Будет желание поскучать - пишите на форум
Def 20 мая 2016 в 13:15 0
Классно, записи фильтруются по городу:)
Олег Васильевич я 21 мая 2016 в 16:16 0
Спасибо!
GoodMade.ru 22 мая 2016 в 15:13 0
Давно хотел сделать Новости публикации.. Т.е. возможность писать записи к записи и сортировать их по типу, например: Новости, События и т.д.
Проясните не невыспавшемуся человеку, у вас та же идея заложена? Уже не осилю я эти много букв.. извините.
GoodMade.ru 22 мая 2016 в 15:18 0
До меня как до утки, на третьи сутки laugh Тооолько понял, Вы немного о другом smile
Loadырь 23 мая 2016 в 09:31 +1
Тут немного иная цель преследуется. Но в целом принцип тот же. Поле для прикрепления одной записи к другой или нескольким, пара хуков и если не привязываться к файлам движка, то и свой компонент, для обработки этих хуков.
GoodMade.ru 23 мая 2016 в 15:01 +1
Благодарю за пояснения joke С вашего позволения возьму вашу разработку за основу для воплощения своей задумки.
ermakover 28 мая 2016 в 06:49 0
Отличное дополнение.
Немного расстроила фраза "Это версия компонента, который выйдет не скоро, причём очень даже не скоро", но я полагаю, что если будет стимул, то процесс можно и ускорить v
Пытался поделить события на "Прошедшие" и "Грядущие", чтобы прошло событие и уже в фильтре не показывалось, но и не было скрыто от пользователей, но не получилось.
При добавлении в наборы контента поля "Событие в календаре" у меня выскакивает ошибка 503.
Loadырь 28 мая 2016 в 10:17 0
ermakover:
При добавлении в наборы контента поля "Событие в календаре" у меня выскакивает ошибка 503
Не стоит этого делать, так как в поле хранится массив данных, а вы пытаетесь дату провести в фильтре набора.
PolarOne 30 мая 2016 в 17:52 0
Очень напомнило встраиваемый гугл календарь и еще пару плагинов от вордпресса.
Однозначно здорово!
Sergo 24 июня 2016 в 00:07 0
Спасибо, отличная вещь.
Я попробовал использовать с тэгами, но при клике по тэгу в ответ получил: Невозможно получить данные для календаря.
Скажите пожалуйста, в том виде как есть, эта ситуация неразрешима, или есть возможность где-то "поставить нужную галочку"?
@Egu 1 марта 2017 в 23:39 0
На 2.7.1 не работает, как не пытался. Очень жаль - нужный компонент.
Pocus 20 марта 2017 в 19:28 0
Loadырь, пожалуйста скажите, вы "календарную" тему совсем забросили?

Я сейчас обдумываю, как бы перевести "события" объектов InstantMaps на типы контента, но, боюсь, без календаря это не имеет смысла.
А с календарями в ICMS просто беда. Кроме вашего, нашел одинi от sitestroi и еще Афишу от Zau4man. Но первый вообще не годный, второй вроде бы можно приспособить, но там свои заморочки. Ваши "Моменты" подошли бы лучше всего, жаль что не работают на 2.7.1, да и вложенные события надо переводить на связи.
Loadырь 20 марта 2017 в 20:07 0
Не совсем забросил, поддержка будет, если кто-то отважится и скажет, что именно не работает. А ещё лучше будет, если код ошибки приведёт.
Pocus 20 марта 2017 в 20:13 0
Спасибо. Тогда я сам попробую установить, а то поверил @Egu на слово.
Ris 20 марта 2017 в 20:21 0
Движок теперь не дает создавать типы контента с именем совпадающим с именем компонента.
Loadырь 20 марта 2017 в 20:31 0
laugh теперь сначала надо создать тип контента, а потом установить компонент. А тем, кто поторопился и уже установил компонент, сначала надо удалить его в админке в компонентах, а затем удалить папку monents из system/controllers. После этого не спеша установить в правильной последовательности
Ris 20 марта 2017 в 20:40 0
Может лучше сделать в админке форму ввода, куда привязываемый тип вписывать (или типы) ? zst
И в любом типе контента можно будет считать моменты.
Loadырь 20 марта 2017 в 21:08 0
Там не так просто отвязаться от типа контента, поэтому эта фича отложена до появления платной версии.
Pocus 20 марта 2017 в 21:08 0
В общем так.
Сначала выдавал сообщение "Невозможно получить данные для календаря. Загрузка...", или типа того.
Включил категории, перенес запись в категорию, создал еще одну запись и всё заработало. Я так и не понял что это было, не успел в консоль глянуть.
Ну и, если шаблон свой, надо файлы к себе перетащить.

В общем, на 2.7.1, на первый взгляд, работает.
С миллисекундами вы конечно прикололись. Теперь их как-то удалять придётся.
И это.... кажется "моменты" - не совсем то, что я ожидал. Я думал, будет обычный список контента и где то рядом календарь, для фильтрации.
Поковыряю еще, может приспособлю.
Pocus 21 марта 2017 в 00:19 0
Из неприятных мелочей:
1. Не хватает поля is_deleted для совместимости с корзиной в 2.7
2. js и css пытается тянуть из рабочего шаблона. Надо из default. Пришлось копировать файлы к себе.
3. Ну и странная установка. Хотя, если действовать по инструкции, то все ОК.
Loadырь 22 марта 2017 в 07:50 +1
Спасибо, поправил. Выложил в дополнениях.
@alexandr22 2 июля 2018 в 14:33 0
Здравствуйте, можно ставить на 2.10 ?
Loadырь 2 июля 2018 в 19:46 0
На 2.10.0 не проверялся, поэтому на свой страх и риск.
Ris 20 марта 2017 в 20:19 0
Создаваемый тип контента называете как хотите, но в 27 строке \system\fields\moments.php вместо get('con_moments'); напишите get('con_ваш_тип_контента'); В смысле системное имя вашего типа контента туда впишите.
И будет Вам счастье.

Спойлер
Def 24 октября 2017 в 23:08 0
время идет, а компонент остается очень полезным! Спасибо автору огромное! на 2.8.2 полет пока нормальный.
Блицкриг 30 июля 2018 в 03:53 0
Ошибка: Не должно называться именем существующего компонента
Я по дурости сначала установил, потом тип контента создать попытался. В базе нашёл табличку moments и удалил... перед этим снёс компонент. Всё равно ошибка при создании контента осталась...
Может что то ещё в БД нужно стереть?
Loadырь 30 июля 2018 в 08:22 +1
Вероятно, в таблице cms_controllers есть запись о компоненте
Блицкриг 13 августа 2018 в 06:08 0
Нет. Искал в БД moments по запросу возвращает ноль строк. Записи нет.
Блицкриг 13 августа 2018 в 06:10 0
phpMyAdmin:
Итого: 0 соответствий
Блицкриг 13 августа 2018 в 06:25 0
Разобрался. Всё дело в хуках =)
Игорь ФИН 9 февраля 2019 в 22:31 0
Решил немного по тестировать .
Решил добавить его в группы.
Все работает только вот такое сообщения весит ( и в группе на календаре события не отражается, а в само календаре отражается.


InstantCMS v2.11.0

Notice: Undefined index: mc_start in /templates/default/content/moments_item.tpl.php on line 20
- Робототехника
Loadырь 10 февраля 2019 в 11:37 0
Отключите режим отладки в настройках сайта, возможно появятся события в календаре.
Игорь ФИН 10 февраля 2019 в 20:18 0
Вот по шагам первый

Второй

третий

четвертый


Идем в группу

идем в календарь отдельно


Идем опять в группу


Но , он работает, хоть как-то.
Loadырь 13 февраля 2019 в 21:19 0
Тут как выяснилось, записи могут быть либо только в группе, либо в календаре. Зависит от того, откуда добавляли.
fincheck 11 февраля 2019 в 23:34 0
Loadырь:
с использованием этого скрипта fullcalendar
Уважаемый Loadырь, а сложно будет прикрутить и синхронизацию с Google Календарь? В скрипте fullcalendar вроде как это предусмотрено.
Loadырь 12 февраля 2019 в 09:17 0
Насколько я знаю, fullcalendar может вывести события из Google Календаря, а вот обратную связь я не замечал в нем.
fincheck 13 февраля 2019 в 15:05 0
Ну да, мне как раз это и нужно. Из Google Календаря в Моменты.
Loadырь 13 февраля 2019 в 21:18 +1
Синхронизация подразумевает обмен данными в обоих направлениях. У fullcalendar только в одном направлении. Что касается сложно или нет, решайте сами: https://fullcalendar.io/docs/google-calendar это сложно или нет? Нужен ключ Google Calendar API и пара строк в нужном месте. Но пока не скажу в каком именно ))). Не до календаря пока.