Перед созданием новой темы, пожалуйста, ознакомьтесь с FAQ по LinkorCMS

Модуль+Блок События

Супер пользователь
Сообщений: 38
Представляю вашему вниманию своё детище - Модуль События (Holidays).
Версия 0.3 для скачки
В Админке есть раздел помощи. Изучите, прежде, чем задавать вопросы!
Админка для заполнения таблиц, настройки для вывода - в блоке.
В ближайших планах:
- изменить выбор интервала показа событий в настройках блока.

И главный вопрос - нужен ли данный модуль, продолжать его развитие?

Буду благодарен в оптимизации кода блока.
С оформлением блока также выслушаю критику. Не силён я в оформлении.

Добавил тип события "Историческое событие".
Обнаружил ошибку - при указании года событие не отображается.
Исправил ошибку в блоке - неправильно выводились даты при указании дня недели, например F4.07 (четвёртая пятница июля)..

-- Изменено "dimajak": 28.07.2017 16:49 --
Супер пользователь
Сообщений: 87
dimajak По ссылке сообщение — «Ничего не найдено».
В Админ-панели сайта ни слова про ваш модуль.

-- Изменено "Антонъ": 16.02.2016 03:55 --
Разработчик
Сообщений: 605
Антонъ:
В Админ-панели сайта ни слова про ваш модуль.

Откуда оно там появится, если вы не установили этот модуль...
Супер пользователь
Сообщений: 393
Антонъ:
По ссылке сообщение — «Ничего не найдено».

Действительно.Не скачать.
Супер пользователь
Сообщений: 38
Поправил ссылку.
Разработчик
Сообщений: 605

<?
switch($op){<br />
    case 'main': HolidaysMain();<br />
        break;<br />
    default: HolidaysMain();<br />
}
?>

Можно и просто

<?
case 'main':<br />
default:<br />
...<br />
break;
?>


Ну что еще могу сказать. Goto только в исключительных ситуациях надо использовать, есть константа Day2Sec и многие другие. Забудьте о глобальных переменных, включая объект класса User в переменной $user. Такое чувство, что это портировали с Перла на LCMS 1.3, а потом на 1.4.

Для оптимизации надо анализировать код блока, он достаточно жирный.
Супер пользователь
Сообщений: 38
Мартин:
Забудьте о глобальных переменных, включая объект класса User в переменной $user.

А как надо? Описания API фактически нет. Собирал по крохам из других модулей.
Такое чувство, что это портировали с Перла на LCMS 1.3, а потом на 1.4.

Нет, сразу на 1.4. Версия для Slaed была написана много лет назад, много раз дорабатывалась, более-менее оптимизирована, но она безвозвратно утеряна вместе с винтом, бэкапы на другом винте были удалены немного ранее для освобождения места. Код я уже не помню. Поэтому пришлось делать с нуля.
С Goto буду бороться, чуть позже. Немного отойду от проделанной работы.
Из того, что вспомнил это шаблон "Dдней" для дней с начала года и что хочу сейчас сделать - ссылка на событии, у которого есть описание для открытия страницы с подробным описанием события, например, "08.03", это событие будет в виде ссылки, при переходе будет открыта страница с описанием когда и где зародилась данная традиция, про Клару Цеткин и т.д.

-- Изменено "dimajak": 18.02.2016 02:11 --
Разработчик
Сообщений: 605
dimajak:
А как надо?

API системы доступно через статический класс System. Там методы возвращают глобальные переменные, которые возвращают объекты классов User (сессия текущего пользователя, всякая инфа о нем), слой абстрации БД, кэша, шаблонизатора и т.д. Ну и в ядре всякие функции есть. Так же есть готовые классы для реализации деревьев, работы с изображениями, отправки почты, комментариев и т.д.

dimajak:
Описания API фактически нет.

Немного в FAQ есть. А по факту читаете /index.php, /admin.php, /config/init.php, папку /base/inc/ и понимаете как работает система. При условии достаточного знания PHP конечно.
Супер пользователь
Сообщений: 125
Это:
Скрытый текст
заменить на это

<?
System::database()->Select('holidays_bd');<br />
    if(System::database()->NumRows() > 0){<br />
        $vars = array();<br />
        System::site()->AddTemplatedBox('','module/holidays.html');<br />
        System::site()->AddBlock('holidays',true,true,'holidays');<br />
        foreach(System::database()->FetchRow() as $holi){<br />
            $vars['date'] = $holi['date'];<br />
            $vars['name'] = $holi['name'];<br />
            System::site()->AddSubBlock('holidays', true, $vars);<br />
        }<br />
    }else{<br />
        System::site()->AddTextBox('', '<p align="center">Событий пока нет</p>');<br />
    }
?>

ну просто потому что быстрее будет работать и еще
<p align="center">
это не пойдет валидацию HTML
и еще у вас нету сортировки при выборки из бд. Или писать

<?
System::database()->Select('holidays_bd', '', null, 'ЗДЕСЬ ПОЛЕ по которому сор
тируем', true)
?>
на конце true-значит в обратном порядке
или делать как в других частях(что очень ужасно для скорости работы) это массив выборки обрабатывать через SortArray()

-- Изменено "Fort": 18.02.2016 17:18 --
Разработчик
Сообщений: 605
Fort:
это массив выборки обрабатывать через SortArray()

Когда не было поддержки ORDER BY был смысл в таком действии.

Роутер и функция - это может быть задел на будущее. Но можно и упростить конечно.
Супер пользователь
Сообщений: 125
Мартин:
Fort:
это массив выборки обрабатывать через SortArray()

Когда не было поддержки ORDER BY был смысл в таком действии.

Роутер и функция - это может быть задел на будущее. Но можно и упростить конечно.

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

-- Изменено "Fort": 18.02.2016 17:44 --
Супер пользователь
Сообщений: 38
Fort:
System::database()->Select('holidays_bd');
    if(System::database()->NumRows() > 0){
        $vars = array();
        System::site()->AddTemplatedBox('','module/holidays.html');
        System::site()->AddBlock('holidays',true,true,'holidays');
        foreach(System::database()->FetchRow() as $holi){
            $vars['date'] = $holi['date'];
            $vars['name'] = $holi['name'];
            System::site()->AddSubBlock('holidays', true, $vars);
        }
    }else{
        System::site()->AddTextBox('', '<p align="center">Событий пока нет</p>');
    }


Не работает.
Предупреждение!: "Illegal string offset 'date'"


-- Изменено "dimajak": 19.02.2016 13:53 --
Гости не могут отвечать на темы. Войдите или Зарегистрируйтесь.
Здесь присутствуют
(пользователей: 0, гостей: 1)
Быстрый переход: