Скрипт для календаря (Золтан дарит!)

Автор Serifa, 27 июля 2012, 23:59:12

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Serifa

Началось все с этого: http://www.simplemachines.ru/index.php?topic=3158.msg115414#msg115414

ЦитироватьКак сделать вместо названия событий - ссылки на пост в теме? У админов видны "карандашики", т.е. событие можно править или удалить. Карандашики пусть остаются, а вот всем остальным пользователям было бы гораздо удобнее, если "ссылка на календарь" была не просто с проставленными датами, а и реальной ссылкой на пост в теме, который и был приписан к дате в календаре. Но как это сделать?

Т.е. при назначении ссылки в календарь мы сначала создаем новый пост в теме, потом нажимаем кнопочку внизу страницы "Ссылка на календарь". В календаре начинает отображаться наше событие. А в теме появляется вот такое объявление наверху. Где бы как раз пригодились к датам еще и ссылки на посты.




Потом мне вличку пришло некое предложение от некоего камрада (если он сам захочет себя назвать, пусть пишет сюда). В общем, мода пока нет.

А вот Zoltan с http://forroll.forum24.ru/ придумал такое решение:

1. нужно выполнить запрос к базе данных
ALTER TABLE `префикс_calendar` ADD `id_post` SMALLINT( 5 ) NOT NULL
("префикс" нужно заменить настоящим)
2. В папке \Sources файл Post.php, в нем находим строчки
// Insert the event.
$eventOptions = array(
там же чуть ниже, после строки
'title' => $_POST['evtitle'],
добавляем строку
'id_post' => $msgOptions['id'],

3. в той же папке, файл Subs-Calendar.php
находим строку
// Insert the event!
Чуть ниже будет
array(
'id_board' => 'int', 'id_topic' => 'int', 'title' => 'string-60', 'id_member' => 'int',
'start_date' => 'date', 'end_date' => 'date'
Добавляем , 'id_post' => 'int'

еще ниже
$eventOptions['board'], $eventOptions['topic'], $eventOptions['title'], $eventOptions['member'],
$eventOptions['start_date'], $eventOptions['end_date'],
добавляем
, $eventOptions['id_post'],

4. Та же папка, файл Display.php
находим строку
// Any calendar information for this topic?
$request = $smcFunc['db_query']('', '
После
SELECT cal.id_event,
добавляем
cal.id_post,
Чуть ниже, после
'id' => $row['id_event'],
добавляем
'event_post_href' => $scripturl . '/topic,' . $topic . '.msg'.$row['id_post'].'.html#msg'.$row['id_post'],

5. Заключительная часть, в папке текущего стиля находим файлик Display.template.php
в нем строку
// Does this topic have some events linked to it?
чуть ниже находим
'<strong>', $event['title'], '</strong>:
заменяем на
'<strong><a href="' . $event['event_post_href'] . '">', $event['title'], '</a></strong>:



ЦитироватьФинита. Итого, чуть тяжелее база данных и чуть тяжелее запрос к ней, что в общей массе всего смф заметно быть не должно.
Cерьёзный баг в том, что будет работать только для новых событий, т.к для старых в таблице не будет значения.
Ссылка будет иметь вид http://smf.ru/index.php/topic,1.msg0.html#msg0, т.е, собственно, только ссылка на тему, а не на само сообщение. Небольшое демо, что все должно работать в итоге   

Естессна, отвалится после первого же обновления, т.к непонятно, как это загнать в мод. Ну и сделано на коленке, возможно что-то не так...

Далее:
Цитировать... ну, у них должно получиться лучше - оформленный мод, да и смф колупали дольше двадцати минут. Я-то сварганил на скорую руку...

Цитироватьcкриптик выполняет только пункт 1, остальное ручками всё равно надо   
з.ы. но потестить я сам уже потестил, все работает и даже что сломалось - все описано


Кстати, мнение камрада Золтана о форуме СМФ:

ЦитироватьДа, вот обновление форума смф всегда будет проблемой, пока они не перейдут на прогрессивную модель модов. Без правки ядра, хуки (: phpbb, консерватор, и тот перешел на такую систему, насколько я слышал, а гигант IPB уже дааавным давно такой. Гораздо меньше волокиты.

Сама я еще скриптик не тестила. Для меня, наверное, будет проще в виде готового мода, если кто возьмется. Все наработки для этого есть.

Справка: С Золтаном мы познакомились на http://forroll.forum24.ru/, появилась специальная тема http://forroll.forum24.ru/?1-25-0-00000385-000-0-0, но продолжать он предпочитает во флуде))
«- Помощник капитана Бакстер, - заявил Лумис, - безбожно врет. Все отнюдь не под контролем, вернее, не под его контролем. Корабль захвачен представителями небелковой формы разумной жизни, которые маскируются под обслуживающих роботов, а некоторые даже не делают и этого...»
«То, что у тебя есть, лечится антибиотиками» (nowhere man, 1995)
В телеге срочно нужны читатели!