[Sell] Argos CMS / MVC logic less

НОВО!
В includes папката вкарах един helper клас към Mustache, чрез който може да ползвате във вашите темплейти следните темплейтни дефиниции:
* {{#escape}}<b>Hello</b>{{/escape}}
* → Returns: &lt;b&gt;Hello&lt;/b&gt;
*
* {{#nl2br}}Line 1\nLine 2{{/nl2br}}
* → Returns: Line 1<br />Line 2
*
* {{#truncate}}100{{/truncate}}
* → Truncates text to 100 characters with ellipsis (…)
*
* {{#length}}Example text{{/length}}
* → Returns: 12
*
* {{#strip_tags}}<p>Hello</p>{{/strip_tags}}
* → Returns: Hello
*
* {{#trim}} Hello {{/trim}}
* → Returns: Hello
*
* {{#urlencode}}hello world@example.com{{/urlencode}}
* → Returns: hello+world%40example.com
*
* {{#rawurlencode}}/path/space/{{/rawurlencode}}
* → Returns: %2Fpath%2Fspace%2F


Те ще са ви полезни при създаването на форми като контактни, тикет и т.н. Виждате примерите и няма да дам повече информация за тях, защото това е достатъчно. Не може да ги ползвате в темплейтите на екстеншъните, само в templates/ папката!
Може да се допълни в бъдеще с още полезни неща, но засега ще са тези. За мен лично са полезни.
 
Продължавам да си играя с Админ панела. Добавих функция, която парсва фийда на fakti.bg (известния български сайт за новини).
Функцията проверява дали сте с български език или с друг, ако сте с друг превеждам новиние с rss app (https://rss.app/feeds/5XJAdYWRlICLBeys.xml) от bg на en. (Не мога да дам гаранция за този сайт, но има безплатен абонамент и засега се вписва добре като преводач, но да видим линка колко време ще е активен)
Функцията работи с php fast cache и кешира новините за 1 час в хранилището. След 1 час ще ги извлече отново (опресни)
Бутона за новините се намира до заглавката най-горе в ляво и когато се кликне, се отваря бокс с всички новини, а бутона гладко пада по-надолу, ако го кликнете отново бокса ще се скрие.

Целта е админ панела да е наистина полезен и всичко да е вътре, за да се чувствате добре докато поддържате сайта си или сайтовете си (ако имате няколко)

Снимка:
 
12.9:

Нови ъпдейти:
- Пълно аяксицифиране на админ панела (КРАЙ с досадните рефрешвания, за да видите актуално съдържание след редакциите)
- Фикснат бъг с логаута в админ панела. (Най-горе в падащото меню в дясно)
- Добавени са RSS емисии в админ панела, за да следите новините около света
- Добавени са нови custom helper-и в mustache (includes/Mustache_Helpers.php)
- Добавено е ново мини сайд меню в админ панела и опция за запомняне на изобра (свито или разгърнато)

По-стари ъпдейти свързани с 12.9:
- Оправен е цвета 128 128 128 (Grey) на 0 64 0 (Dark Grey) при функцията за но аватарите с цвят по първатта буква. Иначе не се четеше текста, ако съвпаднат.
- Добавена е нова функция sql_escape (може да потрябва някой път за нещо не-толкова важно), ползва $pdo->quote(), обвивка.
- Добавено е балонче в дясно в админ панела с цел по-бърз достъп до къстъм страниците от екстеншъните.
- Нови промени в помощната функция за страницирането с цел по-добро прихващане на url сегменти.
- Добавен е кеш в translate() функцията с цел по-бързо зареждане на системата.
- Добавени са phpDOC коментари в App/Entity.
- 3 библиотеки бяха ъпдейтнати през composer.
- В PW Manager-a в админ панела е добавена js функция през бутон за генериране на случайни силни пароли.
- Изкарано е потребителското АЙПИ + Флаг на държава в индекс страницата на админ панела (за ваше улеснение)
- Махнати са IP Api-тата и са заменени от нова локална библиотека + GeoIP Maxmind free базаданни.
- Фикснат е бъг с но аватарите, не се е изобразявала кирилицата, вече е оправено.
- Добавен е нов шрифт за каптчата и за но-аватарите.
- Изцяло нова логика за бележките в админ панела. (Вече пътя към тях е с уникален md5 в имената им)
- Фиксната е грешката в индекса в админ панела ("Uncaught TypeError: google.visualization.DataTable is not a constructor(…)) - От нея не е могло да скрива правилно страниците при къстъм достъпа (само в индекса). Вече е ОК!
- Добавен е нов слайдър с времето, махната е старата accuweather библиотека, която товареше...
- Добавена е нова функция getCityCoordinates($country_code), връща longitude/latitude и име на столица.
- Добавена е нова функция base_dir_url(), чрез която ще фикснем това Аргос да може да се инсталира в под папка. (Има промени по темплейтите), Сменя се само мета тага с този:
Code:
<base href="{{base_dir_url}}/">
най-горе в header.html
- Промени в readme.

Общо взето 12.9 е готова, остава да завърша и 13.0. Където ще има изцяло нов дефолт стил и индентация на кода.
След което мисля да спра с ъпдейтите по ядрото, докато не премина на PHP 8.4.
В същото време, ако някой закупи системата може да открие нещо и аз ще го оправя бързо, ако се открие някакъв бъг или разминаване!

Това е една много стабилна версия на ядрото, защото почти всичко е преминало през ръцете ми.
За връзка с мен:
Discord: .pok4
Цена на ядрото: 140 лв.
 
Имам новина :)
Както знаете в екстеншъните не можеше да се ползват global темплейтните дефиниции от includes/global_vars.php, трябваше да се предефинират с php. Същото се отнасяше и за новите helper-и.
Е, новината е такава, че вече може да си ги ползвате в екстеншънските темплейти без никакъв проблем. Всичко работи повече от добре.
С бота си поиграхме малко и го напаснахме така, че да не мърда (haha)
Също така добавих още Lambda helper-и, и те са:
Code:
            // Base64 encode
            'base64' => fn($text) => base64_encode($text),
            
            // Time ago helper
            'timeago' => fn($timestamp) => timeago($timestamp),

Днес бях зает, но тези дни ще направя още някои малки промени по админ панела.
Засега всичко е ТОК И ЖИЦА!
 
Здравейте,
Разцепих js_libs.html от admin/ папката. Беше много голям и беше пълен с Js код. Преместил съм всеки код по админските страници, които се отнасят за него.
Оставил съм само базов код там и малко от конфигурацията...
Мисля, че така е по-добре.

Също така вече в екстеншъните може да ползвате всички lang_ дефиниции без предефиниране (както написах по-горе, може да ползвате глобалните темплейт дефиниции и helper-ите) Тоест - $lang_sys, $global_vars и $helpers са прекарани през $this->m (рендера на mustache в екстеншъните)
Мога да предам и $event_dispatcher-a, но не виждам смисъл. Не знам и как точно ще работи, за това се отказах от това... Писал съм го TODO, ако някога ми се наложи да прекарам темплейтна дефиниция от папката templates/ в екстеншън може и да пробвам... Просто на този етап съм объркан и не мога да преценя дали си струва. За това ако ми се наложи ще го активирам и него...

Сега пак ще трябва да тествам админ панела, за да съм сигурен, че всичко работи. Ще съобщя в следващ пост дали всичко е ОК!
 
Завърших и lambda helper-ите, добавени са още:
Code:
            // Format timestamp as DD-MM-YYYY
            'date_dmy' => fn($ts) => date('d-m-Y', (int)$ts),

            // Remove non-alphanumeric characters
            'alphanumeric' => fn($text) => preg_replace('/[^a-zA-Z0-9]+/', '', $text),

            // Convert URLs to clickable links
            'linkify' => fn($text) => preg_replace('~(https?://[^\s]+)~', '<a href="$1" target="_blank">$1</a>', $text),

            // JSON encode
            'json_encode' => fn($text) => json_encode($text, JSON_UNESCAPED_UNICODE),

            // JSON decode (returns value only if scalar)
            'json_decode' => fn($text) => is_scalar(json_decode($text, true)) ? json_decode($text, true) : '',

            // Is only letters
            'is_alpha' => fn($text) => ctype_alpha($text) ? 'true' : 'false',

            // Is only alphanumeric
            'is_alnum' => fn($text) => ctype_alnum($text) ? 'true' : 'false',

            // Is empty string
            'is_empty' => fn($text) => trim($text) === '' ? 'true' : 'false',

            // MD5 hash
            'md5' => fn($text) => md5($text),

            // SHA1 hash
            'sha1' => fn($text) => sha1($text),

            // Lowercase
            'lower' => fn($text) => mb_strtolower($text, 'UTF-8'),

            // Uppercase
            'upper' => fn($text) => mb_strtoupper($text, 'UTF-8'),

            // Capitalize first letter
            'ucfirst' => fn($text) => mb_strtoupper(mb_substr($text, 0, 1, 'UTF-8'), 'UTF-8') . mb_substr($text, 1, null, 'UTF-8'),

            // Capitalize each word
            'ucwords' => fn($text) => mb_convert_case($text, MB_CASE_TITLE, 'UTF-8'),

            // Is valid email
            'is_email' => fn($text) => filter_var($text, FILTER_VALIDATE_EMAIL) ? 'true' : 'false',

            // Is numeric
            'is_numeric' => fn($text) => is_numeric($text) ? 'true' : 'false',

            // Is valid URL
            'is_url' => fn($text) => filter_var($text, FILTER_VALIDATE_URL) ? 'true' : 'false',

Тях може да ги ползвате по темплейти и екстеншъни. Полезни са много. Ето го и пълния списък:
Code:
        return [
            // Escape HTML
            'escape' => fn($text) => htmlspecialchars($text, ENT_QUOTES, 'UTF-8'),

            // Convert newlines to <br />
            'nl2br' => fn($text) => nl2br($text),

            // Truncate to 100 characters with ellipsis
            'truncate' => fn($text) => mb_strimwidth($text, 0, 100, '...'),

            // String length
            'length' => fn($text) => (string)mb_strlen($text, 'UTF-8'),

            // Strip HTML tags
            'strip_tags' => fn($text) => strip_tags($text),

            // Trim whitespace
            'trim' => fn($text) => trim($text),

            // URL encoding
            'urlencode' => fn($text) => urlencode($text),

            // Raw URL encoding
            'rawurlencode' => fn($text) => rawurlencode($text),

            // Base64 encoding
            'base64' => fn($text) => base64_encode($text),

            // Human-readable "time ago"
            'timeago' => fn($timestamp) => timeago($timestamp),

            // Format timestamp as DD-MM-YYYY
            'date_dmy' => fn($ts) => date('d-m-Y', (int)$ts),

            // Remove non-alphanumeric characters
            'alphanumeric' => fn($text) => preg_replace('/[^a-zA-Z0-9]+/', '', $text),

            // Convert URLs to clickable links
            'linkify' => fn($text) => preg_replace('~(https?://[^\s]+)~', '<a href="$1" target="_blank">$1</a>', $text),

            // JSON encode
            'json_encode' => fn($text) => json_encode($text, JSON_UNESCAPED_UNICODE),

            // JSON decode (returns value only if scalar)
            'json_decode' => fn($text) => is_scalar(json_decode($text, true)) ? json_decode($text, true) : '',

            // Is only letters
            'is_alpha' => fn($text) => ctype_alpha($text) ? 'true' : 'false',

            // Is only alphanumeric
            'is_alnum' => fn($text) => ctype_alnum($text) ? 'true' : 'false',

            // Is empty string
            'is_empty' => fn($text) => trim($text) === '' ? 'true' : 'false',

            // MD5 hash
            'md5' => fn($text) => md5($text),

            // SHA1 hash
            'sha1' => fn($text) => sha1($text),

            // Lowercase
            'lower' => fn($text) => mb_strtolower($text, 'UTF-8'),

            // Uppercase
            'upper' => fn($text) => mb_strtoupper($text, 'UTF-8'),

            // Capitalize first letter
            'ucfirst' => fn($text) => mb_strtoupper(mb_substr($text, 0, 1, 'UTF-8'), 'UTF-8') . mb_substr($text, 1, null, 'UTF-8'),

            // Capitalize each word
            'ucwords' => fn($text) => mb_convert_case($text, MB_CASE_TITLE, 'UTF-8'),

            // Is valid email
            'is_email' => fn($text) => filter_var($text, FILTER_VALIDATE_EMAIL) ? 'true' : 'false',

            // Is numeric
            'is_numeric' => fn($text) => is_numeric($text) ? 'true' : 'false',

            // Is valid URL
            'is_url' => fn($text) => filter_var($text, FILTER_VALIDATE_URL) ? 'true' : 'false',
        ];
 
Покрай ъпдейтите, които направих вече не е нужно да предефинирате екстеншънските езикови файлове, пример:
Code:
              'ext_gmon_warning_vip_packages'=>$this->lang['ext_gmon_warning_vip_packages'],
              'ext_gmon_report_explain'=>$this->lang['ext_gmon_report_explain'],
              'ext_gmon_claim_explain'=>$this->lang['ext_gmon_claim_explain'],
              'ext_gmon_claim_explain2'=>$this->lang['ext_gmon_claim_explain2'],
              'ext_gmon_canceled'=>$this->lang['ext_gmon_canceled'],
              'ext_gmon_cancel'=>$this->lang['ext_gmon_cancel'],
              'ext_gmon_accept'=>$this->lang['ext_gmon_accept'],
              'ext_gmon_banned'=>$this->lang['ext_gmon_banned'],
              'ext_gmon_remove_ban'=>$this->lang['ext_gmon_remove_ban'],
              'ext_gmon_ban_server'=>$this->lang['ext_gmon_ban_server'],
              'ext_gmon_delete_server'=>$this->lang['ext_gmon_delete_server'],
              'ext_gmon_last_update'=>$this->lang['ext_gmon_last_update'],
              'ext_gmon_owner'=>$this->lang['ext_gmon_owner'],
Това вече е отживелица, защото с вкарването на $lang_sys автоматично ще могат да се викат в темплейтите и няма нужда да ги викате в екстеншъна. Директно си ги ползвате с mustache {{ext_gmon_owner}}. :)
Като ми остане повече време ще ъпдейтна темата как да пишем екстеншъни.
 
Last edited:
НОВО!
Вкарана е нова функция: get_user_groups_by_id($user_id) - връща в масив групите в които дадения потребител членува + цвета им.
Добавен е нов Entity клас - Notification Manager, чрез него може да разпращате нотификации към потребителите, добавил съм му и транслейт функцията.
В екстеншъните:
Code:
  * // Send global notification
 * $this->notification->addNotification(0, 'test.', true);
 * // Send specific notification
 * $this->notification->addNotification(2, 'test.');
 * // Get user notifications by user_id and the second option is limit
 * $this->notification->getNotifications(2, 2);
 * // Get all global notifications (the integer is limit)
 * $this->notification->getGlobalNotifications(2);
 * // Get all notifications for user and global (the firs integer is userid and the second is limit)
 * $this->notification->getAllNotifications(2,2);
 * // Delete specific notification by notification_id
 * $this->notification->deleteNotification(1);
 * // Delete all notifications for user by user_id
 * $this->notification->clearUserNotifications(2);
 * // Get all notifications with pagination (user id, results per page, per side, get parameter name)
 * $this->notification->getAllNotificationsPaginated(2,2,3,'npage')['notifications']; //print the results within array
 * $this->notification->getAllNotificationsPaginated(2,2,3,'npage')['pagination']; //print pagination pages

Нотификейшън мениджъра е тестван от мен на phpbb 3.3.15 и работи отлично!
Работи с phpbb_notifications таблицата.
 
Last edited:
Добавени са още глобални променливи:
Code:
    'user_email' => fn() => $phpBB->get_user_email(),
    'user_warnings' => fn() => $phpBB->get_user_warnings(),
    'user_regdate' => fn() => $phpBB->get_user_regdate(),

Добавена са и нови функции:
Code:
add_to_users_table($column_name,$column_type);
Пример:
Code:
add_to_users_table("price2","varchar(255)");
Защо ни е? Ами много просто, после може да се вземе с $user->data['price2']; през сесията.

Другата нова функция е:
Code:
update_users_table_column($user_id, $column_name, $value);
пример:
Code:
update_users_table_column(2, price2, 15);
Според примера, ъпдейтваме price2 колоната на user с потребителско айди 2 с 15. Това 15 може да са стойност в заредени кредити/пари.

Мисля, че това ще се впише идеално в екстеншъните.
 
Днес реших да тествам къстъм достъпа до определени страници с демо потребител. Да, достъпът се дава, но реално аякс заявките не работеха и дефакто потребителя не можеше да прави почти нищо. За това оправих функцията, която дава достъпа, така, че да работи. Също и бележките в хоум страницата не работеха. Всичко вече е оправено.
Също така съм разширил текстареата с бележките, че седеше свита, сега е колкото първия бокс от ляво на дясно.
Също така съм добавил и кои админи са онлайн в админ панела, демо: https://i.ibb.co/QFV6YZKB/image.png (показват се и потребителите с къстъм достъп)
Така винаги ще знаете кой е до 'вас'. :)
 
Нови 2 функции са добавени:
Code:
add_user_in_group($user_id,$group_id);
remove_user_from_group($user_id,$group_id);

с тях може да вкарвате и изкарвате хора от определени групи в phpbb3.
Знам, че phpbb има вградена функция, но реших да ги изпиша и отделно, за да са си във functions.php на системата + PHPDOC коментари и т.н.

Мисля, че вече всичко е ОК, остава да интегрирам темплейта само и това е... Повече не се сещам какво може да се направи. Ще ви държа в течение :)
 
Утре ще имам още малко работа, днес я довърших, а утре ще бъде интегрирано.
Става дума за възможност да викате аякс заявки директно от темплейта ви.
Трябва да достъпвате този url: https://your-site.com/ajax/style
И да създадете ajax.php в папката на вашия темплейт с подобно съдържание:
Code:
<?php
namespace Style;

class Style extends \App\Controllers\BaseController
{
    public function __construct()
    {
        parent::__construct();
    }

    public function Ajax()
    {
        if (is_ajax()) {
            if (isset($_POST['username'])) {
                echo $this->username;
            }

            if (isset($_POST['myform'])) {
                echo $this->myform();
            }
        }
    }

    public function myform()
    {
        return alert('success', $this->lang['lang_success']);
    }
}
Това е примерно съдържание, само да се ориентирате
Може да викате всичко от системата, функции, entity класове и т.н.

Другото е, че бота ми написа wrapper за Nette Utils, която и без това е в системата заради емейл библиотеката и ще го прасна в Entity папката. Полезен е, има доста неща...

Това ще е май последно..
 
Още малко:
- Оптимизации в get_user_ava функцията
- Добавен е ErrorHandler клас, който представя грешките в Аргос в по-четлив и стилизиран вид. (500 грешките)

Правя бекъп и спирам докато не завърша темплейта и не мина след това на PHP 8.4.
 
от няколко дена следя какво правиш, впечатлен съм и доста, евала Г-н Сашев, иска ми се да видя демо на всичко това
 
Здравей, мерси за което.
Утре по някое време ще ти драсна лс с линк към демо и профил, за да разгледаш админ панела.
 
Снощи бота ми написа един jquery плъгин, който ще вградя заедно с новия дизайн.
Става дума за това: https://i.ibb.co/PqFkrGC/Screenshot-20250510-102828.png
Това ще е вид защита на админ панела ви. При първа визита ще ви иска отново админската парола, за да продължите. Вече ако 2 минути не сте били активни ще ви я поиска пак.
В админ панела има проверка за изключен javascript + redirect, но въпреки всичко отново може да бъде заобиколено през конзолата или хром / файърфокс екстеншън, но само от хора, които разбират.
За това аз ще го сложа, защото има много хора, които не разбират толкова, а ако имат достъп може да направят нещо нередно.
Давам пример: имате брат, сестра и си седите на лаптопа вкъщи и сте в админ панела, отивате за малко някъде, а лаптопът ви е отворен и сте в админ панела. Тогава мисля, че това ще е от полза, за да не пипат в него.
С 2 думи проверка за noobs.
Аз съм го тествал вече през телефона и работи повече от добре.

Също така ще добавя и нова темплейт дефиниция, а именно {{current_url}}, че в момента такава няма, а ще ми трябва за в бъдеще.

Ако някой има съвет за нещо, което да се добави, то нека пише в темата. :)
 
Last edited:
Започнах да събирам в свободното време разни jquery библиотеки за новия дизайн. Back to top, Notify alerts, Tables, Confirmation и т.н.

С Бота направихме едно превю за системата, което ще постна тук, за да си знаете, а и да го индексират ботовете.
🎮 Какво представлява ArgosCMS?
- 🛠️ Аргос е мулти гейминг система за управление на съдържанието (CMS), насочена към хора, които искат да стартират гейминг сървъри (на която и да било игра) или блог, в който да пишат гейминг новини.
- 🧩 Аргос е разширяем, поддържа екстеншъни (добавки), които се активират от админ панела с 1 клик и се пишат също толкова лесно.
- 🌍 Поддържа вградени езици за превод: 🇧🇬 Български, 🇬🇧 Английски, 🇪🇸 Испански, 🇫🇷 Френски и 🇷🇺 Руски.
- 🎨 Поддържа стилове на база Bootstrap 3, 4 и 5 + jQuery 3.x, благодарение на Mustache темплейтния енджин. Смяната става с 1 клик от админ панела.

💻 На какъв програмен език е написана системата?
- 🧠 Ядрото на Argos е написано на PHP и е тествано до PHP 8.3. Подготвено е за работа с PHP 8.4.
- 🏗️ Изградена по MVC архитектура с къстъм рутиращ клас и Robot Autoloader от Nette, който кешира автоматично.
- 🧰 Използва библиотеки от GitHub: Nette Mail, IMAP, LGSL, phpFastCache, Pimple Container, Event Dispatcher, Env, MobileDetect, Html Minifier и др.

⚙️ Как се инсталира?
- 🧵 Аргос е интегриран с phpBB форумен софтуер. Той трябва да бъде инсталиран преди Argos.
- 🧑‍💻 Аргос използва ядрото и сесийната система на phpBB. Инсталаторът стартира при първо отваряне и инсталацията отнема секунди.

🧩 Какви екстеншъни (модули) са направени до момента?
- 📦 Общо 230 добавки.
- 🧙‍♂️ 45 за Mu Online: онлайн магазини, точки, инвентар, предмети и др.
- 🔫 Поддръжка за CS 1.6 и Half-Life. CS2 модулите са в разработка.
- 🌐 Общи екстеншъни: Steam/Discord логини, style switcher, RSS парсери, Google Translate с флагове, Facebook feed, auto save, логове, файлов мениджър, Welcome съобщения, Tickets система, e-mail абонаменти, Stripe/PayPal магазини, SEO модули и още!

📉 Защо само толкова малко сайтове?
- 📣 Липса на сериозна реклама. Системата е рекламирана в:
- https://amxx-bg.info/forum/viewtopic.php?t=11424
- https://web-tourist.net/threads/argos-multigaming-cms.131376/page-21#post-682584
- https://darksteam.net/threads/sell-argos-cms-mvc-logic-less.25638/page-9#post-221053

🧑‍💻 Кой я разработва?
- 👤 Разработва се от мен (pok4). Уча PHP отдавна и продължавам да уча чрез нови API-та и GPT.
- 🤖 GPT е като съ-разработчик и помага в съмнителни моменти – затова може да я наречете ArgosGPT 😂

💰 Цена на системата:
- 🧾 Ядро + default стил + няколко екстеншъна: **140 лв**
- 🧱 Интеграция на нов Bootstrap темплейт: **60 лв**
- 🧑‍💻 Изработка на нов екстеншън (1000 реда PHP код): **60 лв**
- JS/HTML/CSS е бонус – безплатно 🎁

🔄 Само за гейминг ли става?
- ❌ Не! С подходящи темплейти и екстеншъни може да се ползва и за други цели.
- 🕵️‍♂️ Има екстеншън, който скрива форума и го прави достъпен само за админи.

📖 Документация и демо:
- README (английски): https://argoscms.xyz/readme
- Live demo: https://argoscms.xyz

📬 Контакт:
- 💬 Discord: .pok4
- 💌 Плащане чрез: Easypay, Еконт/Спиди, банков превод

🎉 Enjoy life!


И като за финал, ето какво ще съдържа версия 13.0 (Final), но не завинаги, а за малко по-дълъг период от време. Защото имам в момента други ангажименти и може би зимата ще съм свободен за нови приключения и оптимизаци..
Е, ето каква ще е версия 13.0:
- Добавени са 2 нови функции add_user_in_group и remove_user_from_group чрез които може да вкарвате/изкарвате потребители в групите на форума ви. (includes/functions.php)
- Оправен е къстъм достъпа до страници за потребителите, които не са реални администратори във вашия форум
- Добавени са 3 нови глобални темплейтни дефиниции: {{user_email}}, {{user_regdate}} и {{user_warnings}}.
- Добавени са 2 нови функции add_to_users_table и update_users_table_column чрез които може да добавяте/обновявате информация в phpbb_users таблицата.
- Добавен е нов клас в Entity папката. Става дума за нотификейшън мениджър, чрез който може да разпращате известия, да ги взимате и т.н.
- js_libs.html е разцепен и вече не е наблъскан с js код, останалия код е разпръснат из админските темплейтни файлове, които са за него.
- Добавени са още lambda helper-и, които може да ги използвате в темплейтите и в екстеншъните. (includes/Mustache_Helpers.php)
- Вече не е нужно да редекларирате ланг ключове в екстеншъните, пример: $this->lang['lang_test'], а може да ги ползвате директно в темплейтите {{lang_test}}. Нужно е само да сте превели екстеншъните в папка /lang/.
- Аргос разполага с нов дефолт темплейт.
- Добавен е нов помощен клас в Entity/ папката - Utils.php
- Добавена е възможност да викате аякс заявки от папката на темплейта ви. (Файл: ajax.php)
- Оптимизации в get_user_ava функцията
- Добавен е ErrorHandler клас, който представя грешките в Аргос в по-четлив и стилизиран вид. (500 грешките)
- Добавено е поле в конфигурацията за въвеждане на Телеграм линк към социалната мрежа и {{telegram_link}} темплейтна дефиниция
- Добавени са FontAwesome 6.7 + 4 shiv в админ панела (вече може да ползвате и новите и старите иконки)
- Добавена е защита за админ панела на всеки 120 секунди с цел превенция на достъпа от злонамерени хора. (Може да се изключва от env "ACP_SECURE"="0")
- Добавена е нова глобална темплейт дефиниция {{current_url}} - връща настоящия адрес на който сте в момента.
 
https://argoscms.xyz/test_things/argos/ - тук може да разгледате новият дизайн за Аргос.
Това демо не е завършено и неоптимизирано.
Дизайна е дело на jerryborisov и с леки пипвания от моя страна.
Всичко ще бъде прегледано и оптимизирано в бъдеще.
Може би ще има и style switcher с тъмна тема, но ще видим дали chatGPT ще може да пресъздаде хедъра с тъмен такъв.
Да, в момента хедъра е правен с изкуствен интелект и се получи супер според мен.

Дизайна ще бъде интегриран едва когато свърша с това, което правя и в момента.
Може да дадете вашите отзиви за дизайна и да дадете насоки, кое и как може да се промени.
 
Бота направи хедър и за тъмната тема: https://i.ibb.co/Lzm3xks1/argosheader-bg.jpg
Искам само да кажа, че този нов дефолт темплейт ще разполага с:
- Собствена lang/ папка с преводи
- Ajax файл, защото ще има някои неща с аякс, като изкарването на топ 5 потребители, нови потребители и може би и малко за чата (само моделите ще викна от ядрото)
- Ще има къстъм код във _functions.php, където ще има и няколко къстъм евента за темплейта.
- Конфигурационен файл (config.json), от където ще променяте разни неща по темплейта. (линк към хедъра, спиране/пускане на текста в хедъра, беграунд на фуутъра и т.н.) Ще е по-лесно, иначе трябва да ровите код
- Ще има pagination.json с редекларирани класове на страницирането.

Общо взето това ще е един солиден темплейт пълен с всички екстри на системата и идеално показно за всеки, който иска да си прави свой темплейт.
 
Аргос ще придобие още една новост чрез библиотеката https://github.com/matthiasmullie/minify
Тази библиотека е една, да не кажа единствената, която се поддържа.
Бота ми изработи скрипт (min.php) чрез който чрез get параметри ще му се подават css/js файлове и ще ги обединява и минифицира с кеш.
Има и допълнителна защита към скрипта, да не ровят назад (../) и да не могат да се слагат чужди линкове.
Ще се поддържа и version параметър, чрез който може да обновявате кеша, като му подадете темплейтна дефиниция от Аргос.
Защо ни е всичко това ?
Това е с цел да не блъскате много css/js файловете, а да обедините всичко само в 1.
Пробвах много пъти да изградя сам css клас за минификация, но трябва да се парсва css, за да се оправят пътищата към файловете, които fontawesome и други библиотеки изискват.
Бота ме увери, че с тази библиотека проблеми няма да има.
Ако всичко мине по план, то вашите темплейти ще са идея по-оптимизирани, особено, ако не ползвате cdn, а локални библиотеки.
Така ще ги обедините само в 1 файл и сайтът ви ще зарежда по- бързо.
Ето и как:
Code:
<link rel="stylesheet" href="min.php?type=css&f=assets/css/style.css,assets/css/theme.css&version=3">
<script src="min.php?type=js&f=assets/js/app.js,assets/js/utils.js&version=3"></script>

Скрипта min.php ще седи в главната папка, ще съхранява кеша в assets/cache, а в конфигурация ще се добави при изтриването на кеша, да трие и този кеш от скрипта min.php.

Това ще е във версия 13.1, мога да я пусна веднага след 13.0.
 
Last edited: