[Sell] Argos CMS / MVC logic less

Очаквайте 9.3.1 в Събота, защото в бързината съм пропуснал някои неща.
Трябва да се премахне array_merge в ланг файла на инсталатора, че в момента бъгва. Ще има промени и по ланг файловете.
Трябва да сложа цветната тема на емоджитата в админ панела.
В globals.js трябва да се добави +timestamp на линка с chat id съобщението, че понякога не обновява в реално време, и да се премести функцията за скруул в success евента в събмит функцията.
Трябва да видя и някои екстеншъни, които са позабравени да ги пипна и да прегледам пак някои неща по системата.

Възможно е края на Януари пак да замина за Франция. Този път ще взема лаптопа с мен, но само Събота и Неделя ще съм свободен.Понякога може дори в почивните дни да не седям..
Така, че който има интерес и иска привейт неща, да пише сега.
 
Прескочих направо на 9.4, защото има по мащабни промени.
changelog.png


9.4:
- Премахнат е array_merge от инсталатора и неговите ланг файлове, тъй като не наследяват $lang_sys
- Добавени са нови ланг ключове към инсталатора и неговите ланг файлове
- Подобрения в чатовете и добавяне на timestamp към url адреса на chat id съобщението (изменения в globals.js)
- Добавена е нова функция get_argos_version(), която ще се използва за страницата с автоматични ъпдейти. Вече в главната дирекория има version.json файл, който е задължителен!
- Добавена е нова игра към greyfish: Day of Dead Source

9.3 -> 9.4:
Презамествате:
lang/
install/
admin/
template/your-template/js/globals.js
App/
includes/
нов файл в root dir: version.json (подготовка за автоматичните ъпдейти)
readme/


В 9.5 очаквайте:
- Добавяне на опция от конфигурация за ползване на Gametracker.com Карти за Greyfish.
- Добавяне на опция за pages per side или колко бутона за странициране да се показват от 2-те страни на настоящата страница в страницирането.
- Добавяне на локално качване на снимки в галерията само за админи в админ панела.
- Добавяне на локално качване на снимки за новините в админ панела.
- Добавяне на локално качване на снимки в слайдъра само за админи в админ панела.

Утре очаквайте линк към демо версията.
 
Live демо: https://argoscms.xyz


changelog.png


9.4.1:
- Премахнат е OneSignalSDKUpdaterWorker.js и функцията onesignal_to_user (deprecated е)
- Обновено е апи-то на Onesignal до версия v16
- Фикснат е бъг със страницирането в блог страниците и в къстъм страниците
- Оптимизации по ядрото (core.php, includes/global_vars.php и includes/functions.php)
- Добавени са бисквитките в json файла за cookie manager js плъгина

9.4 -> 9.4.1:
Презамествате:
admin/
OneSignalSDKWorker.js в root папката
OneSignalSDKUpdaterWorker.js може да се изтрие в root папката
App/
includes/
core.php
assets/
readme/

Очаквайте в сряда 9.5
 
image.png

9.5:
- Оптимизации в core.php (sql заявката за стила вече се кешира)
- Промени в бейсконтролера, които засягат ajax методите в екстеншъните с новия lazyload
- Промени по check_is_mod функцията в includes/functions.php
- Добавена е нова функция is_admin (има вече съществуващ метод $this->is_admin, но въпреки него добавих и функция, нека има...)
- Оптимизации в admin/includes/admin_functions.php
- Оптимизации в admin/js/calendar.js
- Оптимизации в admin/template/js_libs.html
- Добавена е опция за вкл./изкл. на изображения от gametracker.com в greyfish
- Изменения в greyfist_list.html в папките на темплейтите
- Добавена е опция за вкл./изкл. скриване на коментари в сорс кода
- Добавена е опция за pages per side в конфигурацияа, а именно по колко бутона за странициране да се показват от 2-те страни на текущия бутон.
- Изменения в lang/ заради горните промени
- Добавен е начин за ъплоуд на локални изображения при писане на новина. (Създадена е нова директория в uploads/, а именно news_images)
- Добавен е начин за ъплоуд на локални изображения при добавянето на нов слайдър (Създадена е нова директория в uploads/, а именно sliders_images)
- Изменения в readme/
- Всички библиотеки са ъпдейтнати през composer

9.4.1 -> 9.5:
Презаместват се:
core.php
App/
includes/
lang/
admin/
readme/
install/
version.json
template/your-style/greyfish_list.html

След това:
Пускате този sql:
INSERT INTO argos_config (config_name, config_value) VALUES ('pages_per_side', '');
INSERT INTO argos_config (config_name, config_value) VALUES ('gametracker_map_images', '1');
INSERT INTO argos_config (config_name, config_value) VALUES ('hide_sourcecode_comments', '0');
И създавате:
папките news_images и sliders_images в uploads/ папката

В следващия ъпдейт (9.6):
- Нова страница в админ панела за ъплоуд на изображения
- sql.php ще претърпи промени, а именно навсякъде където има varchar(255) ще се форматира коректно според типа на подаваната информация.
- Индентация на код (за пореден път) почти навсякъде в admin/ папката , в App/ и в includes/
 
Новият sql.php вече е факт, ще дойде с версия 9.6, а който иска, нека изпълни този sql който ще дам в датабазата си:
Code:
ALTER TABLE `argos_aboutus` MODIFY `aboutus` TEXT NOT NULL;

ALTER TABLE `argos_privacypolicy` MODIFY `privacypolicy` TEXT NOT NULL;
ALTER TABLE `argos_privacypolicy` MODIFY `language` VARCHAR(255);

ALTER TABLE `argos_advertise` MODIFY `id` INT NOT NULL AUTO_INCREMENT;
ALTER TABLE `argos_advertise` MODIFY `type` VARCHAR(20);
ALTER TABLE `argos_advertise` MODIFY `site_link` VARCHAR(255);
ALTER TABLE `argos_advertise` MODIFY `dobaven_na` bigint NOT NULL;
ALTER TABLE `argos_advertise` MODIFY `banner_img` VARCHAR(255);
ALTER TABLE `argos_advertise` MODIFY `expire` INT(11) NOT NULL;
ALTER TABLE `argos_advertise` MODIFY `link_title` VARCHAR(50);

ALTER TABLE `argos_banners` MODIFY `id` INT NOT NULL AUTO_INCREMENT;
ALTER TABLE `argos_banners` MODIFY `type` VARCHAR(20);
ALTER TABLE `argos_banners` MODIFY `site_link` VARCHAR(255);
ALTER TABLE `argos_banners` MODIFY `banner_img` VARCHAR(255);
ALTER TABLE `argos_banners` MODIFY `link_title` VARCHAR(50);
ALTER TABLE `argos_banners` MODIFY `avtor` VARCHAR(50);

ALTER TABLE `argos_ext` MODIFY `ext_name` VARCHAR(50) NOT NULL DEFAULT '';
ALTER TABLE `argos_ext` MODIFY `ext_active` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0;
ALTER TABLE `argos_ext` MODIFY `ext_version` VARCHAR(20) NOT NULL;

ALTER TABLE `argos_custom_user_access` MODIFY `id` INT NOT NULL AUTO_INCREMENT;
ALTER TABLE `argos_custom_user_access` MODIFY `username` VARCHAR(100) NOT NULL;
ALTER TABLE `argos_custom_user_access` MODIFY `pages` TEXT NOT NULL;

ALTER TABLE `argos_chat` MODIFY `id` INT NOT NULL AUTO_INCREMENT;
ALTER TABLE `argos_chat` MODIFY `name` VARCHAR(100) NOT NULL;
ALTER TABLE `argos_chat` MODIFY `text` TEXT NOT NULL;
ALTER TABLE `argos_chat` MODIFY `date` VARCHAR(20) NOT NULL;

ALTER TABLE `argos_comments` MODIFY `id` INT NOT NULL AUTO_INCREMENT;
ALTER TABLE `argos_comments` MODIFY `author` VARCHAR(100) NOT NULL;
ALTER TABLE `argos_comments` MODIFY `text` TEXT NOT NULL;
ALTER TABLE `argos_comments` MODIFY `date` bigint NOT NULL;
ALTER TABLE `argos_comments` MODIFY `user_id` INT(11) NOT NULL;
ALTER TABLE `argos_comments` MODIFY `newsid` INT(11) NOT NULL;
ALTER TABLE `argos_comments` MODIFY `vote` INT(11) DEFAULT 0;

ALTER TABLE `argos_onesignal` MODIFY `id` INT NOT NULL AUTO_INCREMENT;
ALTER TABLE `argos_onesignal` MODIFY `user_id` INT DEFAULT 0;
ALTER TABLE `argos_onesignal` MODIFY `username` VARCHAR(100) DEFAULT 0;
ALTER TABLE `argos_onesignal` MODIFY `user_ip` VARCHAR(50) DEFAULT 0;
ALTER TABLE `argos_onesignal` MODIFY `phpbb_user_id` INT(11) DEFAULT 0;
ALTER TABLE `argos_onesignal` MODIFY `date` bigint;

ALTER TABLE `argos_logs` MODIFY `id_inc` INT NOT NULL AUTO_INCREMENT;
ALTER TABLE `argos_logs` MODIFY `id` INT NOT NULL;
ALTER TABLE `argos_logs` MODIFY `username` VARCHAR(100) NOT NULL;
ALTER TABLE `argos_logs` MODIFY `user_ip` VARCHAR(50) DEFAULT 0;
ALTER TABLE `argos_logs` MODIFY `date` bigint DEFAULT 0;
ALTER TABLE `argos_logs` MODIFY `action` TEXT NOT NULL;
ALTER TABLE `argos_logs` MODIFY `destination_link` VARCHAR(255) DEFAULT 0;
ALTER TABLE `argos_logs` MODIFY `type` VARCHAR(50) DEFAULT 0;

ALTER TABLE `argos_config` MODIFY `config_name` VARCHAR(255) COLLATE utf8_bin NOT NULL DEFAULT '';
ALTER TABLE `argos_config` MODIFY `config_value` VARCHAR(255) COLLATE utf8_bin NOT NULL DEFAULT '';
ALTER TABLE `argos_config` MODIFY `is_dynamic` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0;

ALTER TABLE `argos_contacts` MODIFY `id` INT NOT NULL AUTO_INCREMENT;
ALTER TABLE `argos_contacts` MODIFY `date` bigint;
ALTER TABLE `argos_contacts` MODIFY `ip` VARCHAR(50);
ALTER TABLE `argos_contacts` MODIFY `username` VARCHAR(100);
ALTER TABLE `argos_contacts` MODIFY `text` TEXT;
ALTER TABLE `argos_contacts` MODIFY `question` TEXT;
ALTER TABLE `argos_contacts` MODIFY `email` VARCHAR(255);
ALTER TABLE `argos_contacts` MODIFY `respond` TINYINT(1) DEFAULT 0;

ALTER TABLE `argos_dpolls` MODIFY `id` INT(12) NOT NULL AUTO_INCREMENT;
ALTER TABLE `argos_dpolls` MODIFY `poll_question` VARCHAR(255) NOT NULL;
ALTER TABLE `argos_dpolls` MODIFY `poll_answer` TEXT NOT NULL;
ALTER TABLE `argos_dpolls` MODIFY `poll_votes` INT DEFAULT 0;

ALTER TABLE `argos_dpolls_votes` MODIFY `id` INT NOT NULL AUTO_INCREMENT;
ALTER TABLE `argos_dpolls_votes` MODIFY `poll_id` INT NOT NULL;
ALTER TABLE `argos_dpolls_votes` MODIFY `ip` VARCHAR(50) NOT NULL;

ALTER TABLE `argos_files` MODIFY `id` INT NOT NULL AUTO_INCREMENT;
ALTER TABLE `argos_files` MODIFY `picture` VARCHAR(255) NOT NULL;
ALTER TABLE `argos_files` MODIFY `author` VARCHAR(100) NOT NULL;
ALTER TABLE `argos_files` MODIFY `down_counts` INT NOT NULL DEFAULT 0;
ALTER TABLE `argos_files` MODIFY `date` bigint NOT NULL;
ALTER TABLE `argos_files` MODIFY `size` VARCHAR(50) NOT NULL;
ALTER TABLE `argos_files` MODIFY `type` VARCHAR(100) NOT NULL;
ALTER TABLE `argos_files` MODIFY `game` VARCHAR(100) NOT NULL;
ALTER TABLE `argos_files` MODIFY `type_not_real` VARCHAR(10) NOT NULL;
ALTER TABLE `argos_files` MODIFY `game_not_real` VARCHAR(10) NOT NULL;
ALTER TABLE `argos_files` MODIFY `category` VARCHAR(100) NOT NULL;
ALTER TABLE `argos_files` MODIFY `opisanie` TEXT NOT NULL;
ALTER TABLE `argos_files` MODIFY `link` VARCHAR(255) NOT NULL;
ALTER TABLE `argos_files` MODIFY `name` VARCHAR(255) NOT NULL;

ALTER TABLE `argos_gallery` MODIFY `id` INT NOT NULL AUTO_INCREMENT;
ALTER TABLE `argos_gallery` MODIFY `date` bigint;
ALTER TABLE `argos_gallery` MODIFY `uploader` VARCHAR(100);
ALTER TABLE `argos_gallery` MODIFY `pic_link` VARCHAR(255);

ALTER TABLE `argos_greyfish_servers` MODIFY `id` INT NOT NULL AUTO_INCREMENT;
ALTER TABLE `argos_greyfish_servers` MODIFY `ip` VARCHAR(50) NOT NULL;
ALTER TABLE `argos_greyfish_servers` MODIFY `port` VARCHAR(10) NOT NULL;
ALTER TABLE `argos_greyfish_servers` MODIFY `players` INT NOT NULL;
ALTER TABLE `argos_greyfish_servers` MODIFY `maxplayers` INT NOT NULL;
ALTER TABLE `argos_greyfish_servers` MODIFY `version` VARCHAR(50) NOT NULL;
ALTER TABLE `argos_greyfish_servers` MODIFY `type` VARCHAR(50) NOT NULL;
ALTER TABLE `argos_greyfish_servers` MODIFY `map` VARCHAR(50) NOT NULL;
ALTER TABLE `argos_greyfish_servers` MODIFY `hostname` VARCHAR(255) NOT NULL;
ALTER TABLE `argos_greyfish_servers` MODIFY `vote` INT NOT NULL DEFAULT 0;
ALTER TABLE `argos_greyfish_servers` MODIFY `status` TINYINT(1) NOT NULL DEFAULT 0;
ALTER TABLE `argos_greyfish_servers` MODIFY `gtrs` TINYINT(1) NOT NULL DEFAULT 0;

ALTER TABLE `argos_jquery_js` MODIFY `id` INT NOT NULL AUTO_INCREMENT;
ALTER TABLE `argos_jquery_js` MODIFY `jquery_js` TEXT NOT NULL;
ALTER TABLE `argos_jquery_js` MODIFY `jquery_js_name` VARCHAR(80);

ALTER TABLE `argos_menus` MODIFY `id` INT NOT NULL AUTO_INCREMENT;
ALTER TABLE `argos_menus` MODIFY `title` VARCHAR(255) NOT NULL;
ALTER TABLE `argos_menus` MODIFY `the_content` TEXT NOT NULL;
ALTER TABLE `argos_menus` MODIFY `position` VARCHAR(50) NOT NULL;

ALTER TABLE `argos_news` MODIFY `id` INT NOT NULL AUTO_INCREMENT;
ALTER TABLE `argos_news` MODIFY `author` VARCHAR(100) NOT NULL;
ALTER TABLE `argos_news` MODIFY `title` VARCHAR(255) NOT NULL;
ALTER TABLE `argos_news` MODIFY `seourl` VARCHAR(255) NOT NULL;
ALTER TABLE `argos_news` MODIFY `text` TEXT NOT NULL;
ALTER TABLE `argos_news` MODIFY `date` bigint DEFAULT NULL;
ALTER TABLE `argos_news` MODIFY `comments` INT(11) DEFAULT 0;
ALTER TABLE `argos_news` MODIFY `comments_enabled` TINYINT(1) DEFAULT 1;
ALTER TABLE `argos_news` MODIFY `img` VARCHAR(255) NOT NULL;
ALTER TABLE `argos_news` MODIFY `vote` INT(11) DEFAULT 0;
ALTER TABLE `argos_news` MODIFY `views` INT(11) DEFAULT 0;
ALTER TABLE `argos_news` MODIFY `cat` VARCHAR(50) NOT NULL DEFAULT 'site_news';

ALTER TABLE `argos_pages` MODIFY `id` INT NOT NULL AUTO_INCREMENT;
ALTER TABLE `argos_pages` MODIFY `page_name` VARCHAR(100) NOT NULL;
ALTER TABLE `argos_pages` MODIFY `page_title` VARCHAR(255) NOT NULL;
ALTER TABLE `argos_pages` MODIFY `menu_type` VARCHAR(50) NOT NULL;
ALTER TABLE `argos_pages` MODIFY `type` VARCHAR(50) NOT NULL DEFAULT 0;
ALTER TABLE `argos_pages` MODIFY `show` TINYINT(1) DEFAULT 1;
ALTER TABLE `argos_pages` MODIFY `addon_regex` VARCHAR(255) NOT NULL DEFAULT '';

ALTER TABLE `argos_sliders` MODIFY `id` INT NOT NULL AUTO_INCREMENT;
ALTER TABLE `argos_sliders` MODIFY `slider_img` VARCHAR(255);
ALTER TABLE `argos_sliders` MODIFY `is_link` TINYINT(1) DEFAULT 0;
ALTER TABLE `argos_sliders` MODIFY `slider_link` VARCHAR(255);
ALTER TABLE `argos_sliders` MODIFY `text` TEXT;

ALTER TABLE `argos_stats` MODIFY `id` INT NOT NULL AUTO_INCREMENT;
ALTER TABLE `argos_stats` MODIFY `date` DATE DEFAULT NULL;
ALTER TABLE `argos_stats` MODIFY `ip` VARCHAR(50);
ALTER TABLE `argos_stats` MODIFY `country` VARCHAR(100);

ALTER TABLE `argos_uploadvideos` MODIFY `id` INT NOT NULL AUTO_INCREMENT;
ALTER TABLE `argos_uploadvideos` MODIFY `uploader` VARCHAR(100) NOT NULL;
ALTER TABLE `argos_uploadvideos` MODIFY `videolink` VARCHAR(255) NOT NULL;
ALTER TABLE `argos_uploadvideos` MODIFY `date` bigint NOT NULL;
ALTER TABLE `argos_uploadvideos` MODIFY `cat` VARCHAR(100) NOT NULL;
ALTER TABLE `argos_uploadvideos` MODIFY `site` VARCHAR(100) NOT NULL;
ALTER TABLE `argos_uploadvideos` MODIFY `approved` TINYINT(1) DEFAULT 0;
ALTER TABLE `argos_uploadvideos` MODIFY `original_title` VARCHAR(255) NOT NULL;

ALTER TABLE `argos_videocat` MODIFY `id` INT NOT NULL AUTO_INCREMENT;
ALTER TABLE `argos_videocat` MODIFY `category` VARCHAR(255) NOT NULL;

ALTER TABLE `argos_voting_ip_greyfish_servers` MODIFY `ip_id` INT NOT NULL AUTO_INCREMENT;
ALTER TABLE `argos_voting_ip_greyfish_servers` MODIFY `mes_id_fk` INT DEFAULT NULL;
ALTER TABLE `argos_voting_ip_greyfish_servers` MODIFY `ip_add` VARCHAR(50) DEFAULT NULL;

ALTER TABLE `argos_voting_ip_comments` MODIFY `ip_id` INT NOT NULL AUTO_INCREMENT;
ALTER TABLE `argos_voting_ip_comments` MODIFY `mes_id_fk` INT DEFAULT NULL;
ALTER TABLE `argos_voting_ip_comments` MODIFY `ip_add` VARCHAR(50) DEFAULT NULL;

ALTER TABLE `argos_voting_ip_news` MODIFY `ip_id` INT NOT NULL AUTO_INCREMENT;
ALTER TABLE `argos_voting_ip_news` MODIFY `mes_id_fk` INT DEFAULT NULL;
ALTER TABLE `argos_voting_ip_news` MODIFY `ip_add` VARCHAR(50) DEFAULT NULL;

ALTER TABLE `argos_acp_user_visits` MODIFY `username` VARCHAR(100) NOT NULL;
ALTER TABLE `argos_acp_user_visits` MODIFY `ip_address` VARCHAR(50) NOT NULL;
ALTER TABLE `argos_acp_user_visits` MODIFY `page_name` TEXT NOT NULL;
ALTER TABLE `argos_acp_user_visits` MODIFY `browser` TEXT NOT NULL;
ALTER TABLE `argos_acp_user_visits` MODIFY `visit_date` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
 
Last edited:
Утре ще пусна 9.6 и на нея вече ще се задържа повече.
В нея ще добавя нова глобална темплейт дефиниция, а иммено {{disabled_acp_pages}}, която ще се декларира в config.env така :
Code:
"DISABLED_ACP_PAGES"="add_server.php,edit_servers.php,add_video_cat.php"
Какво прави тя?
Както се подразбира, тя премахва страници от страничното меню, дори ако сте изтрили всички линкове в даден таб, го изтрива и него.
Полезна е, защото системата може да се ползва за всичко друго, а не и за игри и може някои табове в админ панела да са ненужни и да не пречат толкова на админите, ако няма да се ползват.

Другото важно нещо е, че инсталатора вече няма да работи след успешна инсталация и дори при грешни данни пак ще бъдете редиректнати към него, за да ги поправите.
Това е важно, защото някои хора ги е страх и го трият, а пък то няма смисъл. Е, сега вече няма да е активен, а за сметка на това ще излиза съобщение, че системата е инсталирана успешно.

За новия sql.php стана ясно по-нагоре, който също ще влезе в 9.6
И:
Нова страница в админ панела за ъплоуд на изображения

Това ми се върти в главата и вече 9.7 ще се тества на php 8.4 и при нея ще индентвам кода.
Това е за утре.
 
image.png


9.6:
- Добавяне на локално качване на снимки в галерията само за админи в админ панела.
- Изменения в Install.php контролера, вече при успешна инсталация - инсталатора няма да е достъпен.
- Оптимизации в includes/events.php (вече админ евентите са отделно от другите и са с проверка дали има admin/ в url и чак тогава са активни)
- Добавена е нова глобална променлива DISABLED_ACP_PAGES в config.env, чрез която може да премахвате линкове и табове в админ панелското странично меню
- Argos вече има нов sql, форматиран както трябва.

9.5 -> 9.6:
Изменения в:
admin/
includes/
core.php
lang/
install/
App/
readme/
version.json

Изпълвате тази заявка:
ALTER table argos_gallery add column type varchar(6);
ALTER table argos_gallery add column title varchar(100);

Това е версията на която ще се задържа по-дълго и ще чакам версия 8.4 на php. Ако след празниците няма промяна в xampp, то от Февруари ще инсталирам https://ampps.com/ и ще работя по него, тъкмо да оправя и несъвместимостите с mysql драйвъра.

След като оправим всичко, ще почна да пренаписвам и екстеншъните малко по-малко.
Напомням, че от 23 Декември влиза в сила промоцията в която може да закупите ядрото за 80 лв.
Весели празници!
 
Last edited:
Напомням за промоцията, която ще трае до 31ви, а именно ядрото ще струва 80 лв и безплатни ъпдейти 6 месеца.

След празниците ще пусна 9.7 в която:
Ще има възможност да стилизирате страницирането и неговите класове директно от файл pagination.json в темплейт папката ви. Ето примерно съдържание :
Code:
{
    "btn-block": "btn-sm",
    "glyphicon-plus": "fa-plus",
    "btn-default": "btn-primary",
    "pagination": "pagination p-3",
    "pagination-responsive": "",
    "pagination-lg": "",
    "toggle-pagination": "hidden"
}
Така съм премахнал toggle бутона за респонсив и директно се появяват бутоните. Може да реплейсвате всички класове.

Също така, има за оправяне няколко неща, защото като системата е в под папка, някои аякс заявки имат / отпред в линка и ги търси в предна директория.
Това ще го оправя набързо.

В админ панела ще оправя евент календара да не е в цикъл с аякс заявките, а ще взима празниците накуп, за да не забива толкова.

Това е за след празниците.
Весела Коледа и успешна Нова Година!
 
changelog.png


9.7:
- Цялото ядро и екстеншъните бяха обходени и е добавен $('base').attr('href') където трябва пред url-тата на js скриптовете, за да няма проблеми, ако системата е в под папка.
- Добавена е опцията да имате pagination.json в папката на вашия темплейт, за да стилизирате страницирането директно от този файл
- Нов стил на under construction страницата
- Нов стил на 404 error страницата
- Календара вече не работи с цикъл с аякс заявката, а взима всичко на един път и го изобразява.
- Всички библиотеки бяха ъпдейтнати през compopser

Демо на 2-те страници (404/under construction):
https://i.ibb.co/LzW1whN/404.png (404) (ефекта с буквите в таблицата е анимиран и се показват плавно една по една) В по-нови версии ще има превод на страницата.
https://i.ibb.co/ccctQc1/under.png (under construction)

Наблегнал съм на това синьо, защото новия дефолт темплейт ще е повече син и именно на тази цветова гама ще наблегне.

9.6 -> 9.7:
Заменяте:
admin/
App/
core.php
version.json
assets/
404/
readme/
includes/
Взимате си globals.js от default темплейта и презамествате вашия във вашия темплейт


За 9.8:
- Нов клас работещ с Google Vision API с цел детекция на голи снимки и такива с кръв в галерията. 1000 безплатни рекуеста на месец, след това ще ви таксува. Изисква апи кей от Google Console.
- Нов клас, който ще сваля през php gd от качеството на изображението с цел оптимизация. Също така и ще го преоразмерява ако е над даден размер, който вие ще сетвате.

За 9.9:
- Нови аякс коментари към галерията и видео клиповете. Вече са готови, остава да се интегрират.

Нарочно ще ги разделя на 2 версии, защото тези аякс коментари ще са по-мащабни и ме е страх да не стане нещо докато ги внедрявам.
Версия 10.0 ще се тества на PHP 8.4 и ще се индентва кода там, а може и още оптимизации да има.
 
changelog.png


9.8:
- Изменения в App/ - оправен е бъг, ако системата е в подпапка със смяната на стила през url /style/default (примерно)
- Изменения в аутолоудъра, вече не се зареждат неактивните екстеншъни (тези които са с ext_active=0 и тези, които не фигурират в датабазата)
- Добавени са нови класове и опции в админ панела за оптимизирането на изображения и ограничаването на качване на голи снимки и такива с насилие
- Добавени нови ланг дефиниции заради горните промени

Изменения в:
lang/
App/
core.php
includes/
admin/
install/
readme/
version.json

Изпълвате този sql накрая:
Code:
INSERT INTO argos_config(config_name, config_value)  VALUES ('gallery_moderation', 0);
INSERT INTO argos_config(config_name, config_value)  VALUES ('google_cloud_vision_api_key', '');
INSERT INTO argos_config(config_name, config_value)  VALUES ('gallery_optimization', 0);
INSERT INTO argos_config(config_name, config_value)  VALUES ('gallery_maxwidth', 800);
INSERT INTO argos_config(config_name, config_value)  VALUES ('gallery_maxheight', 800);
INSERT INTO argos_config(config_name, config_value)  VALUES ('gallery_quality', 80);
 
https://argoscms.xyz/test_things/comments/ - тук може да видите и тествате коментарите.
Те ще са за галерията със снимки и видео клиповете. Потребителите ще могат да пишат само, ако са регистрирани.
Ще им взима юзърнейма и аватара от phpbb интеграцията.
Също така в админ панела ще има таймлайни с коментарите и ще може да ги триете (модерирате)
Отне ми доста време да ги направя работещи, макар, че тази библиотека е стара, php частта беше предизвикателство.
Вече всичко ми е ясно относно нея и нищо няма да ми попречи в Сряда да я интегрирам.
 
Last edited:
changelog.png


9.8.1:
- Добавена е възможност да създавате къстъм 404 error page от вашия темплейт, просто в него създавате 404.html и си го кодирате, както искате.
- Изтрити са php.ini и robots.txt, вече ненужни и нямащ смисъл да са в системата. Ботовете пренебрегват този файл, а php модулите се активират от cpanel или друг хост панел.
- Оптимизации по core.php

9.8 -> 9.8.1
Презамествате:
core.php
изтривате:
robots.txt
php.ini
 
image.png

9.9:
- Стартирането на сесията е преместено от core.php в BaseController-a, обхванато е с проверка дали е стартирана вече сесията.
- Phpbb интеграцията е обхваната с проверка, за да не се преизпълнява. Също така require на няколко места е заменено с require_once.
- Добавени са аякс коментари към видео клиповете и изображенията в галерията. + админски страници за изтриване на коментарите
- Добавена е нова функция timeago($epoch) която връща в чист текст преди колко секунди, часове, дни, години даден епоч е минал. Преди съм я дефинирал къстъм по контролери и екстеншъни, вече е вградена.
- Добавена е нова функция add_lang('lang_file') - тази функция зарежда езиков файл за определен контролер, няма да ви трябва на вас, а на мен, ако занапред имам контролери, които не са толкова зависими от главните ланг файлове и за тях ще се прави къстъм ланг файл.
- Добавен е кеш файл за рутирането и парсването на json файла (вече няма да се парсва, а ще инклудва готов кеш файл)
- Оптимизации по ядрото
- Всички библиотеки бяха ъпдейтнати през composer

9.8.1 -> 9.9:
Заменяте:
routes.json
App/
assets/
install/
includes/
admin/
template/your-style/js/globals.js
template/header.html,footer.html,gallery.html,videos.html
version.json
readme/

в header.html в head секцията поставяте:
Code:
<link rel="stylesheet" href="{{baseurl}}/assets/jquery-comments/jquery-comments.css?v={{css_js_ver}}">

Във footer.html под js библиотеките поставяте:
Code:
<script type="text/javascript" src="{{baseurl}}/assets/jquery-comments/jquery-comments.min.js?v={{css_js_ver}}"></script>
<script type="text/javascript" src="{{baseurl}}/assets/jquery-comments/jquery-comments-loader.js?v={{css_js_ver}}"></script>

Махате от globals.js:
Code:
//magnific popup for files
if ($(".see_with_magnific").length > 0) {
  $('.see_with_magnific').magnificPopup({
    type: 'image',
    closeOnContentClick: true,
    mainClass: 'mfp-img-mobile',
    image: {
      verticalFit: true
    }
  });
}

//magnific popup for videos
if ($(".see_with_magnific_v").length > 0) {
  $('.see_with_magnific_v').magnificPopup({
    disableOn: 700,
    type: 'iframe',
    mainClass: 'mfp-fade',
    removalDelay: 160,
    preloader: false,
    fixedContentPos: false
  });
}

Инсертвате този sql:
Code:
  CREATE TABLE IF NOT EXISTS `argos_gallery_comments` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `parent` int(11) DEFAULT NULL,
    `content` text NOT NULL,
    `creator` int(11) NOT NULL,
    `fullname` varchar(255) NOT NULL,
    `profile_picture_url` varchar(255) NOT NULL,
    `created` bigint NOT NULL,
    `modified` bigint NOT NULL,
    `created_by_admin` tinyint(1) DEFAULT 0,
    `created_by_current_user` tinyint(1) DEFAULT 0,
    `upvote_count` int(11) DEFAULT 0,
    `user_has_upvoted` tinyint(1) DEFAULT 0,
    `is_new` tinyint(1) DEFAULT 1,
    `requestid` int(11) DEFAULT NULL,
    PRIMARY KEY (`id`)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

  CREATE TABLE IF NOT EXISTS `argos_videos_comments` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `parent` int(11) DEFAULT NULL,
    `content` text NOT NULL,
    `creator` int(11) NOT NULL,
    `fullname` varchar(255) NOT NULL,
    `profile_picture_url` varchar(255) NOT NULL,
    `created` bigint NOT NULL,
    `modified` bigint NOT NULL,
    `created_by_admin` tinyint(1) DEFAULT 0,
    `created_by_current_user` tinyint(1) DEFAULT 0,
    `upvote_count` int(11) DEFAULT 0,
    `user_has_upvoted` tinyint(1) DEFAULT 0,
    `is_new` tinyint(1) DEFAULT 1,
    `requestid` int(11) DEFAULT NULL,
    PRIMARY KEY (`id`)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

  CREATE TABLE IF NOT EXISTS `argos_gallery_votes` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `comment_id` int(11) NOT NULL,
    `user_ip` varchar(45) NOT NULL,
    `requestid` int(11) DEFAULT NULL,
    PRIMARY KEY (`id`)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

  CREATE TABLE IF NOT EXISTS `argos_videos_votes` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `comment_id` int(11) NOT NULL,
    `user_ip` varchar(45) NOT NULL,
    `requestid` int(11) DEFAULT NULL,
    PRIMARY KEY (`id`)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Във videos.html добавяте:
Code:
data-request-id="{{video_id}}"
в href връзката след
Code:
rel="nofollow"

Същото и в gallery.html
Добавяте това:
Code:
data-request-id="{{pic_id}}"
след:
Code:
href="{{baseurl}}/uploads/images/{{pic_link}}"
и си правите промените от по-горе във вашите header.html/footer.html и в gallery.hml/videos.html

След което вдигате Css/js версиите и запазвате промените от раздел Конфигурация.
 
Празниците минаха и ядрото вече ще бъде 140 лв.
В Събота и Неделя ще пусна версия 10.0, в която ще има важна оптимизация свързана с Беис контролера и зареждането на ланг файловете.
Планирам да добавя и нов бутон при екстеншъните, чрез който ще може да спирате всички наведнъж.
Ще се добавят в беис контролера къстъм проверки за пост рекуести за логин и логаут към phpbb.
Така вече формата ще е по проста и ще може да ги ползвате тях, вместо да слагате hidden полета и т.н.
Нейм параметрите ще са: phpbb_login и phpbb_logout.

Вече са направени адски много неща, първия пост в темата е от февруари 2022, и сега вече след месец ще станат 3 години от както я ъпдейтвам, така че цената е разумна според мен.

За контакт с мен:
discord:
.pok4
 
image.png

10.0:
- Опимизации в includes/functions.php
- Оптимизации в BaseController.php и Dependencies.php
- Добавени са 2 нови метода в BaseController-a за логин и логаут към phpbb.
- Изменения в assets
- Добавен е бутон за спиране на всички екстеншъни в админ панелската им страница

9.9 -> 10.0:
Заменяте:
assets/
readme/
App/
includes/
admin/
lang/
 
image.png

10.1:
- Фиксове по функцията за транслейт през Google API (Не превеждаше някои текстове докрай)
- Aboutus страницата вече се превежда автоматично на всички езици с новата функция detect_language() и translate функцията през Google API.
- 'ahref' връзката в pagination функцията е заменена с div (защото 'а' атрибута беше без href и няма смисъл от него)
- Добавени са нови темплейтни дефиниции в News.php контролера, вече в темплейтите може да ползавате {{#is_index_page}} и {{#is_blog_page}}

10.0 -> 10.1:
Замяна на:
App/
includes/
readme/
version.json
 
image.png


10.2:
- Добавен е флоод лимит на аякс коментарите към Галерията с изображения и Видео клипчетата.
- Оптимизации по контролерите

10.1 > 10.2:
Заменяте:
App/
version.json
readme/
 
image.png


11.0:
- Добавен е нов клас LangWrapper в Entity папката, който ще следи за наслоявания в масивите с преводите и няма да ги допуска.
- Добавен е нов бутон в екстеншън страницата 'Пусни последно спряните' с който може да пуснете последно спряните екстеншъни от бутона 'Спри всички'. Работи с кеш и се появява и помни 1 час. Добре ще е ако тествате нещо.

10.1 -> 11.0:
Презамествате:
admin/
App/
lang/
readme/
version.json
 
Core.php и includes/ папката са завършени. С grok и chatgpt минах всичко, което не е sql ориентирано и беше оптимизирано.
5 функции бяха пренаписани.
Утре ще излезе версия 12.0 с променените функции, които целят по-бързото зареждане.
След това в по нови версии ще добавя и cronjobs таб в админ панела, от който ще може да сетвате крон задачи.
Ще има проверка дали сте под линукс и дали shell_exec е налична и тогава ще се визуализира таблицата и формата за добавяне.

След като свърша с крон таба (версия 13.0), ще се ориентирам към оптимизация на контролери и модели.
След тях ще има индентация на код и след това нов default стил, в който ще има всичко нужно и спазване на добрите практики с цел бързо зареждане.
 
image.png


12.0:
- Оптимизации в includes/functions.php и includes/phpbb_bridge.php
- Изменения в App/ папката по някои контролери

11.0 -> 12.0
Замяна на:
App/
includes/
readme/
version.json