Добро пожаловать, Гость!
Рерайтинг движка | GitHub - Страница 7
Предложения и пожелания | Рерайтинг движка | GitHub
MarkPrior :
Доброго времени суток. Набрёл на движок с интернета. Подобные системы - не моя специальность, но я всегда рад помочь в улучшении, если то возможно. Сам занимаюсь Java/C#, но в свободное время балуюсь подобными вещами, поэтому решил подсобить/ускорить его преображение.
Вчера просмотрел движок, чуток очумел от количества мусора, но не всё потеряно. Как я понял, пользуются системой исключительно те, кто любит максимально простой и понятный вид кода без "всяких ваши ООП и т.п.". И хоть двиг подутратил свою востребованность, но, как я увидел, есть ещё много ньюфагов, которые пользуются и, надеюсь, учатся на этой системе.
Мне не помешает человек (или несколько человекОВ), которые давно пользуются этим движком и которые уверенно ориентируются в коде, дабы, при возникновении у меня вопросов, я мог кому-то написать.
На своём старом аккаунте GitHub создал репозиторий для движка. За основу взял версию DS-Special из-за введённой мультиязычности.
ФУЛЛ переписи не планируется, дабы, если у кого-то будет желание, переход на обновлёнку не был тяжёлым. Привычная архитектура, думаю, будет сохранена. Обновления затронут стилизацию кода и удаление излишнего мусора.
Для примера в одном только /sys/inc/user.php было ~27 лишних запросов в базу данных.
От mysql мы уйдём в сторону PDO (простота и, прежде всего, безопасность). Уже имеется обёртка, которая позволит легко и просто осуществлять запросы в базу. "Документация" по ним будет так же на GitHub.
Здесь в теме буду кратко писать ChangeLog'и по изменениям в коде. По мере переписи файлы будут загружаться на git.
Ссылка на репозиторий: GitHub - Dcms-Social
Рерайтинг движка | GitHub
3 Авг 2022Доброго времени суток. Набрёл на движок с интернета. Подобные системы - не моя специальность, но я всегда рад помочь в улучшении, если то возможно. Сам занимаюсь Java/C#, но в свободное время балуюсь подобными вещами, поэтому решил подсобить/ускорить его преображение.
Вчера просмотрел движок, чуток очумел от количества мусора, но не всё потеряно. Как я понял, пользуются системой исключительно те, кто любит максимально простой и понятный вид кода без "всяких ваши ООП и т.п.". И хоть двиг подутратил свою востребованность, но, как я увидел, есть ещё много ньюфагов, которые пользуются и, надеюсь, учатся на этой системе.
Мне не помешает человек (или несколько человекОВ), которые давно пользуются этим движком и которые уверенно ориентируются в коде, дабы, при возникновении у меня вопросов, я мог кому-то написать.
На своём старом аккаунте GitHub создал репозиторий для движка. За основу взял версию DS-Special из-за введённой мультиязычности.
ФУЛЛ переписи не планируется, дабы, если у кого-то будет желание, переход на обновлёнку не был тяжёлым. Привычная архитектура, думаю, будет сохранена. Обновления затронут стилизацию кода и удаление излишнего мусора.
Для примера в одном только /sys/inc/user.php было ~27 лишних запросов в базу данных.
От mysql мы уйдём в сторону PDO (простота и, прежде всего, безопасность). Уже имеется обёртка, которая позволит легко и просто осуществлять запросы в базу. "Документация" по ним будет так же на GitHub.
Здесь в теме буду кратко писать ChangeLog'и по изменениям в коде. По мере переписи файлы будут загружаться на git.
Ссылка на репозиторий: GitHub - Dcms-Social
Последний раз редактировалось biket
1 Сент 2022
Комментарии:
MarkPrior 30 Авг 2022
Автор темы
ChangeLog 30.08 19:10
* переписывается почта.
Этот раздел полностью перерабатывается. Старые таблицы (mail, users_konts) удалены.
Теперь будет иметься полноценный функционал мессенджера с групповыми чатами.
Новые таблицы:
dialogs (id, name, type (personal/group), new_msg),
dialogs_msg (id, dialog_id, user_id, time, read, msg),
users_dialogs (dialog_id, user_id, type (fav/archive), pin).
Список диалогов (скроллится).
Обычная переписка.
Конференция.
Сообщения в своём окне, который скроллится. Пока что не знаю, как реализовать листинг: прогрузка при прокрутке или привычный постраничный листинг.
При клике в списке диалогов на нужный контакт/конфу - всё быстро подгружается на ajax. Отправка сообщений тоже на ajax.
Единственное, над чем сейчас думаю - реализация автообновления диалога для каждого из собеседников только в том случае, если кем-то отправлено новое сообщение. Это можно было бы плюс/минус легко реализовать при помощи сокетов, но, дабы не грузить мозг обывателям, попробую реализовать на ajax при обращении к файлу-обработчику, который респонсом будет нам сообщать о наличии непрочитанных сообщений в диалоге и только при их наличии будет осуществлено обновление диалога.
Хоть это и влечёт за собой постоянное выполнение запроса к БД, но это лучше, чем обновлять весь диалог, в котором запросов гораздо больше.
Ещё сыровато, написана лишь сама переписка и ajax-обработчики.
* подправлен класс user:
==> добавлен метод dialog_avatar (он тут не особо к месту, но пока что будет здесь).
Автор темы
ChangeLog 30.08 19:10
* переписывается почта.
Этот раздел полностью перерабатывается. Старые таблицы (mail, users_konts) удалены.
Теперь будет иметься полноценный функционал мессенджера с групповыми чатами.
Новые таблицы:
dialogs (id, name, type (personal/group), new_msg),
dialogs_msg (id, dialog_id, user_id, time, read, msg),
users_dialogs (dialog_id, user_id, type (fav/archive), pin).
Список диалогов (скроллится).
Обычная переписка.
Конференция.
Сообщения в своём окне, который скроллится. Пока что не знаю, как реализовать листинг: прогрузка при прокрутке или привычный постраничный листинг.
При клике в списке диалогов на нужный контакт/конфу - всё быстро подгружается на ajax. Отправка сообщений тоже на ajax.
Единственное, над чем сейчас думаю - реализация автообновления диалога для каждого из собеседников только в том случае, если кем-то отправлено новое сообщение. Это можно было бы плюс/минус легко реализовать при помощи сокетов, но, дабы не грузить мозг обывателям, попробую реализовать на ajax при обращении к файлу-обработчику, который респонсом будет нам сообщать о наличии непрочитанных сообщений в диалоге и только при их наличии будет осуществлено обновление диалога.
Хоть это и влечёт за собой постоянное выполнение запроса к БД, но это лучше, чем обновлять весь диалог, в котором запросов гораздо больше.
Ещё сыровато, написана лишь сама переписка и ajax-обработчики.
* подправлен класс user:
==> добавлен метод dialog_avatar (он тут не особо к месту, но пока что будет здесь).
MarkPrior 29 Авг 2022
Автор темы
ChangeLog 29.08 10:00 mini
Видел, что писали про панель BB-тегов. Походил по сайтам, которые нашёл на этом двиге, чтобы приблизительные предпочтения посмотреть. Реализовал простой вариант.
Панель выглядит следующим образом, будет появляться при нажатии на кнопку "A" (не стал делать панель статичной). Расширил количество доступных тегов, изменил их обработчик.
Так же добавил тег цвет текста, панель разворачивается при нажатии на кисть. Не стал совать палитру, смысла в этом нет, указан набор плюс/минус популярных цветов, но юзер может указать и другой. Доступные форматы: #FFF, #FFFFFF.
Параллельно чисто по фронту изменил отображение капчи.
Насчёт окна со смайлами возникли сложности, т.к. не знаю, нужны ли они, ведь во всех смартфонах есть наборы Emoji. Лишь поэкспериментировал с open-source библиотекой от Twitter, нашёл два варианта опен сорс панелей: первый оказался тяжеловат, страница зависает на 2-3 секунды, второй оказался проще и лучше, но реализация такого окна не нравится. Посему пока что оставлю это на потом.
---------------
Для более-менее статичных html-элементов (капча, панель bb-тегов, поле ввода текста в целом (комменты, сообщения)) создан класс /sys/classes/html.class.php с методами captcha, bbpanel, insertMessage.
Пример использования: html::captcha('Проверка').
Сделано для того, чтобы для каждого раздела сайта не прописывать вручную одно и то же, а просто передать нужные параметры. Поле ввода текста пока что доделывается.
---------------
На гит будет выгружено завтра.
Если снова пропаду, то я регулярно появляюсь в телеграме: @marknprior.
Автор темы
ChangeLog 29.08 10:00 mini
Видел, что писали про панель BB-тегов. Походил по сайтам, которые нашёл на этом двиге, чтобы приблизительные предпочтения посмотреть. Реализовал простой вариант.
Панель выглядит следующим образом, будет появляться при нажатии на кнопку "A" (не стал делать панель статичной). Расширил количество доступных тегов, изменил их обработчик.
Так же добавил тег цвет текста, панель разворачивается при нажатии на кисть. Не стал совать палитру, смысла в этом нет, указан набор плюс/минус популярных цветов, но юзер может указать и другой. Доступные форматы: #FFF, #FFFFFF.
Параллельно чисто по фронту изменил отображение капчи.
Насчёт окна со смайлами возникли сложности, т.к. не знаю, нужны ли они, ведь во всех смартфонах есть наборы Emoji. Лишь поэкспериментировал с open-source библиотекой от Twitter, нашёл два варианта опен сорс панелей: первый оказался тяжеловат, страница зависает на 2-3 секунды, второй оказался проще и лучше, но реализация такого окна не нравится. Посему пока что оставлю это на потом.
---------------
Для более-менее статичных html-элементов (капча, панель bb-тегов, поле ввода текста в целом (комменты, сообщения)) создан класс /sys/classes/html.class.php с методами captcha, bbpanel, insertMessage.
Пример использования: html::captcha('Проверка').
Сделано для того, чтобы для каждого раздела сайта не прописывать вручную одно и то же, а просто передать нужные параметры. Поле ввода текста пока что доделывается.
---------------
На гит будет выгружено завтра.
Если снова пропаду, то я регулярно появляюсь в телеграме: @marknprior.
MarkPrior 24 Авг 2022
Автор темы
Немного заматался с делами. Репозиторий восстановлю, баганулось и в ветку поверх залился другой проект, пришлось удалять.
Сегодня-завтра работа продолжится.
Автор темы
Немного заматался с делами. Репозиторий восстановлю, баганулось и в ветку поверх залился другой проект, пришлось удалять.
Сегодня-завтра работа продолжится.
MarkPrior 17 Авг 2022
Автор темы
ChangeLog 17.08 15:50
+ просмотр блогов в категории блогов;
+ удаление категорий блогов осуществлено на ajax:
==> из категории должны удалиться все блоги -> комментарии в этих блогах -> все файлы, прикреплённые к комментариям (не просто из БД, а конкретно файлы, которые мы должны получить из БД). в принципе, написать один select запрос с join'ами, чтобы получить файлы - несложно, но пока что останется так, как было бы максимально понятно - циклы в циклах. да, трешово, но потому и перенесено отдельно и выполняется чисто через ajax, дабы не выполнять всю ту кипу кода с шапки. пока всё не удалится, будет показываться анимация загрузки, но пока что при тесте в 7к файлов (больше на пк нет) всё удалялось очень быстро и почти что не застаёшь анимацию.
==> по тому же принципу переделал удаление блогов, тоже на ajax.
* такое удаление будет внедрено и на форуме.
Пока что код чуток как каша, сегодня посижу, укомплектую, прокомментирую и выгружу на хаб.
Репостинг пока что делать не буду, займусь стеной, чтобы дальше сразу пилить репосты под два раздела: блоги и стена. И дальше начать работать на уведомлениями пользователей (т.к. есть уже три раздела, откуда могут идти уведомлялки) -> раздел Друзей -> лента пользователей.
Для обработки ajax создан отдельный файл /sys/inc/ajax.require.php, куда помещён весь нужный код для получения-обработки-вывода. Так же в обработчик можно сунуть лишь /sys/inc/session.php (да, снова вынесен из start.php из-за необходимости юзанья в ajax, но теперь инклудится сразу в него, а не отдельно) и /sys/inc/ajax.db.connect.php для подключения к бд. Т.к. данные бд хранятся в settings.ini, то после установки будет так же создаваться ajax.db.ini, откуда будут браться данные, дабы не тягать весь массив настроек из settings.ini.
Автор темы
ChangeLog 17.08 15:50
+ просмотр блогов в категории блогов;
+ удаление категорий блогов осуществлено на ajax:
==> из категории должны удалиться все блоги -> комментарии в этих блогах -> все файлы, прикреплённые к комментариям (не просто из БД, а конкретно файлы, которые мы должны получить из БД). в принципе, написать один select запрос с join'ами, чтобы получить файлы - несложно, но пока что останется так, как было бы максимально понятно - циклы в циклах. да, трешово, но потому и перенесено отдельно и выполняется чисто через ajax, дабы не выполнять всю ту кипу кода с шапки. пока всё не удалится, будет показываться анимация загрузки, но пока что при тесте в 7к файлов (больше на пк нет) всё удалялось очень быстро и почти что не застаёшь анимацию.
==> по тому же принципу переделал удаление блогов, тоже на ajax.
* такое удаление будет внедрено и на форуме.
Пока что код чуток как каша, сегодня посижу, укомплектую, прокомментирую и выгружу на хаб.
Репостинг пока что делать не буду, займусь стеной, чтобы дальше сразу пилить репосты под два раздела: блоги и стена. И дальше начать работать на уведомлениями пользователей (т.к. есть уже три раздела, откуда могут идти уведомлялки) -> раздел Друзей -> лента пользователей.
Для обработки ajax создан отдельный файл /sys/inc/ajax.require.php, куда помещён весь нужный код для получения-обработки-вывода. Так же в обработчик можно сунуть лишь /sys/inc/session.php (да, снова вынесен из start.php из-за необходимости юзанья в ajax, но теперь инклудится сразу в него, а не отдельно) и /sys/inc/ajax.db.connect.php для подключения к бд. Т.к. данные бд хранятся в settings.ini, то после установки будет так же создаваться ajax.db.ini, откуда будут браться данные, дабы не тягать весь массив настроек из settings.ini.
MarkPrior 16 Авг 2022
Автор темы
Вчера отдыхал.
ChangeLog 16.08 18:15
* работал над видом сайта для гостей (авторизация/регистрация), в связи с чем были исправлены ошибки в классе User (вызов, если юзера нет) и в частности метод isRegistered, который вызывал бесконечную переадресацию для неавтоизованных.
=> скрины оформления авторизации/регистрации: Авторизация, Регистрация, шаг 1, Регистрация, шаг 2. Картинки сменяются автоматически, можно свои поставить и текст сменить.
* работал над начальным шаблоном главной страницы, т.к. два основных раздела (форум и блоги) готовы.
Шаблон начальный. Не факт, что так и останется, но пока что всё нравится. Пункты меню в блоках выводятся из таблицы menu, в которую для главной страницы добавлено поле big_icon. Все иконки для меню берутся из /style/icons/menu/ (указывается в виде name.png), а для главного меню - /style/icons/menu/big/.
Сразу накидал вариант Фото историй. Пока что это просто публикация какой-то фотки. В принципе, есть наброски для нанесения текста на них, но пока внедрять такое не буду, останется в простом виде. В настройках сториз будет пункт "Публичный". Такие смогут выводиться на главной странице. Оформление взято на подобие ВК, лучше варианта не увидел. Фотки будут открываться во всплывающем окне либо на новой странице в зависимости от устройства (это пока допиливается).
Скрины главной страницы: Скрин 1, Скрин 2, Скрин 3.
Сообщения с гостевой будут автообновляться на ajax.
Главная страница максимально адаптивная под устройства. Блок с гостевой с уменьшением экрана пропадёт, а новые темы спустятся вниз.
Начальная Alpha-версия для ознакомления, возможно, будет запущена к концу месяца, адрес опубликую тут.
Beta-версия для установки пока что не знаю, когда будет доступна, т.к. нужно инсталлер переп
Автор темы
Вчера отдыхал.
ChangeLog 16.08 18:15
* работал над видом сайта для гостей (авторизация/регистрация), в связи с чем были исправлены ошибки в классе User (вызов, если юзера нет) и в частности метод isRegistered, который вызывал бесконечную переадресацию для неавтоизованных.
=> скрины оформления авторизации/регистрации: Авторизация, Регистрация, шаг 1, Регистрация, шаг 2. Картинки сменяются автоматически, можно свои поставить и текст сменить.
* работал над начальным шаблоном главной страницы, т.к. два основных раздела (форум и блоги) готовы.
Шаблон начальный. Не факт, что так и останется, но пока что всё нравится. Пункты меню в блоках выводятся из таблицы menu, в которую для главной страницы добавлено поле big_icon. Все иконки для меню берутся из /style/icons/menu/ (указывается в виде name.png), а для главного меню - /style/icons/menu/big/.
Сразу накидал вариант Фото историй. Пока что это просто публикация какой-то фотки. В принципе, есть наброски для нанесения текста на них, но пока внедрять такое не буду, останется в простом виде. В настройках сториз будет пункт "Публичный". Такие смогут выводиться на главной странице. Оформление взято на подобие ВК, лучше варианта не увидел. Фотки будут открываться во всплывающем окне либо на новой странице в зависимости от устройства (это пока допиливается).
Скрины главной страницы: Скрин 1, Скрин 2, Скрин 3.
Сообщения с гостевой будут автообновляться на ajax.
Главная страница максимально адаптивная под устройства. Блок с гостевой с уменьшением экрана пропадёт, а новые темы спустятся вниз.
Начальная Alpha-версия для ознакомления, возможно, будет запущена к концу месяца, адрес опубликую тут.
Beta-версия для установки пока что не знаю, когда будет доступна, т.к. нужно инсталлер переп
MarkPrior 14 Авг 2022
Автор темы
ChangeLog 14.08 18:50
* улучшено редактирование прикреплённых изображений к блогам/форуму, в частности обработка передаваемых данных, дабы предотвратить негативные манипуляции...
* блоги допилены.
(скрины ниже - без боковых панелей, но они так же имеются).
[!] По большей мере сегодня правился только фронт. Решил заранее сделать первый шаблон личной страницы пользователя - Начальный вариант. Вместе с тем отправка постов на стену сразу осуществлена на ajax, относительно файлов надо будет думать позже. Страница полностью адаптируема под все устройства.
Ссылка на страницу пользователя теперь будет иметь вид либо /id<ID>, либо @nick.
[!] Сделана страница личных блогов пользователя - Начальный вариант, но, думаю, что таким и оставлю, выглядит прилично. Там так же возможно будет задать мини заставку и небольшой лозунг.
[!] Сам блог теперь выглядит следующим образом. Размеры изображений по мере уменьшения/увеличения разрешения экрана - подстраиваются. Ничто не вылезет за пределы. При наведении на (ред.) будет показано время последнее изменения комментария. Это так же будет введено во все разделы и личную почту.
=> Во все разделы со временем возможно внедрить отправку комментариев на ajax. Надо лишь будет думать, возможно ли это осуществить через единый обработчик.
Пока что в ajax больше уходить не буду. Допишу полностью стену пользователя и дальше начну объединять разделы: репосты с форума в блог, со стены в блог и со стены на стену. Да, на стену репосты с главных разделов идти не будут, она будет нести в себе смысл наподобие "стены" в твиттере - короткие месседжи. Возможно, там будут показываться уведомлялки о смене аватарки и другие мелочи, но объёмных данных на ней не будет.
P.S. К сожалению, и сегодня обновления на GitHub выгружены не будут.
Автор темы
ChangeLog 14.08 18:50
* улучшено редактирование прикреплённых изображений к блогам/форуму, в частности обработка передаваемых данных, дабы предотвратить негативные манипуляции...
* блоги допилены.
(скрины ниже - без боковых панелей, но они так же имеются).
[!] По большей мере сегодня правился только фронт. Решил заранее сделать первый шаблон личной страницы пользователя - Начальный вариант. Вместе с тем отправка постов на стену сразу осуществлена на ajax, относительно файлов надо будет думать позже. Страница полностью адаптируема под все устройства.
Ссылка на страницу пользователя теперь будет иметь вид либо /id<ID>, либо @nick.
[!] Сделана страница личных блогов пользователя - Начальный вариант, но, думаю, что таким и оставлю, выглядит прилично. Там так же возможно будет задать мини заставку и небольшой лозунг.
[!] Сам блог теперь выглядит следующим образом. Размеры изображений по мере уменьшения/увеличения разрешения экрана - подстраиваются. Ничто не вылезет за пределы. При наведении на (ред.) будет показано время последнее изменения комментария. Это так же будет введено во все разделы и личную почту.
=> Во все разделы со временем возможно внедрить отправку комментариев на ajax. Надо лишь будет думать, возможно ли это осуществить через единый обработчик.
Пока что в ajax больше уходить не буду. Допишу полностью стену пользователя и дальше начну объединять разделы: репосты с форума в блог, со стены в блог и со стены на стену. Да, на стену репосты с главных разделов идти не будут, она будет нести в себе смысл наподобие "стены" в твиттере - короткие месседжи. Возможно, там будут показываться уведомлялки о смене аватарки и другие мелочи, но объёмных данных на ней не будет.
P.S. К сожалению, и сегодня обновления на GitHub выгружены не будут.