ARGOS multigaming cms

Pok4

Registered
Добре :)
Оправям още неща, input-и, бутони и т.н. Довечера ще е готова и ще я кача :)
Това няма да е последния темплейт, ще направя още. Не ми представлява трудност, мога да правя и всеки ден темплейти, но нямам идеи...
Прегледах доста темплейти, но те вече ги правят one page и е трудно да измислиш нещо различно в content-a.
Сега новините са почти сходни с останалите темплейти (изобразяването им), както и коментарите...

Ако някой има подобен стил като тези в момента (като структура) и иска да се вгради - няма проблем, ще го вградя за нула време...
Иначе съм работил с почти всички jquery библиотеки, за sticky content, sidebar-и, менюта каквито се сетите, дори с jquery ui...
Лоудвал съм какви ли не неща с modernizr...
Това не е проблем, проблема е самия дизайн и това, че трудно може да се излезе от тези рамки сега.
Та дизайна трябва да е с 2 колони (лява и дясна) и да е с разчупен стил в изобразяването на менютата и новините.
Другото (хедър, фуутър) все ще се намери от някъде... Просто съдържанието в контейнера трябва да е разчупено, свежо и невиждано до момента.

Намерите ли такъв дизайн някъде - давайте, ще крада и ще го интегрирам :)
 

Pok4

Registered
Готово, качих го. За сега работи без слайдър, но който иска, мога да го активирам, за да види как е със. :)
Ако сте сменили темата, моля, използвайте страничното меню и изберете новия стил - purplemagic се казва.

Версия 6.8:
- Добавени са 2 нови глобални темплейт дефиниции - {{base_forum_url}} и {{admin_email}}
- Бяха променени изпуснати грешни темплейт дефиниции {{base_url}}, бяха променени на {{baseurl}} (тъй като първата не съществува)
- Обновен readme с текущата версия
- Леки промени по екстеншъните, тъй като Bootstrap5 го изисква (заради новия темплейт), но всичко под bootstrap3 си е наред.
- Добавено е "order by id DESC" при изкарването на страниците в multipurpose менюто, ако въобще го ползвате, тъй като и преди не се славеше като масово използвано.
Ползва се екстеншън, който го крие и ползва обикновено меню в дясно.
 

Pok4

Registered
Добавих нова опция в админ панела, а именно да се качват файлове през админ панела, а не както беше преди само линк.
Добавил съм 2 радио бутона с еднакъв нейм параметър. Когато се кликнат с js (чист) проверявам стойността и на база нея, сетвам display:none или inline-block и изкарвам полета за линк към файл или input за качване на файл.
Работи с класа, който вече бях прибавил към системата. Имената на файловете са ime_na_fail_data_chas_minuti и се качват в папка uploads/files/
Добавил съм и 2 индекса там, които са празни, да не стане нещо, въпреки, че файловете се качват от админите, а и има htaccess правила, за да не се минава през директориите 'ей така'.
Просто нарочно ги добавих, нека седят за всеки случай, ако сървъра не разчита htaccess... (както вече ми се случи с nginx).
Дори и да се видят какво има като файлове из тези директории, не смятам, че ще има проблем, все пак вие ги качвате за вашите потребители.

Демо: https://i.ibb.co/S6WLGwr/444.png

Eто и как работи класа:
Код:
                    $uploader = new Uploader();
                    $data = $uploader->upload($_FILES['fileToUpload'], array(
                        'limit' => 1, //Maximum Limit of files. {null, Number}
                        'maxSize' => 9000, //Maximum Size of files {null, Number(in MB's)}
                        'extensions' => ['jpg','gif','png','zip','rar','exe'], //Whitelist for file extension. {null, Array(ex: array('jpg', 'png'))}
                        'required' => false, //Minimum one file is required for upload {Boolean}
                        'uploadDir' => 'uploads/files/', //Upload directory {String}
                        'title' => '{{file_name}}_'.date('d_m_y_h_i'), //New file name {null, String, Array} *please read documentation in README.md
                        'removeFiles' => false, //Enable file exclusion {Boolean(extra for jQuery.filer), String($_POST field name containing json data with file names)}
                        'replace' => true, //Replace the file if it already exists {Boolean}
                        'perms' => null, //Uploaded file permisions {null, Number}
                    ));
 
Последно редактирано:

Pok4

Registered
Намерих човек, който ще ми помогне с френския език на системата. Започнах превода, а той ще коригира каквото Translat-а не е превел правилно. Скоро ще имаме и френски език към системата :)
 

Pok4

Registered
Е, почти стигнахме версия 7.0.. 2 месеца работа, мисля, че горе-долу доби вид.
Интересно ми е във версия 4.0 на phpbb дали няма да има някои промени по сайт интеграцията и дали няма да трябва да пренаписвам някои неща... Ще видим :)

Ето и една снимка на версиите при мен: https://i.ibb.co/FDrgpgY/image.png
6.9:
- Добавена е опция в админ панела да може, да се качва файл локално във файловата система
- Системата и екстеншъните са преведени и на френски език
- Малки промени по някои екстеншъни

Ако имате някакви съвети за темплейти или още екстеншъни - пишете :)

ПС:
Ето и линкове към библиотеките от Entity папката:
Captcha - https://www.codexworld.com/simple-php-captcha-using-codexworldcaptcha/
Background process - https://github.com/cocur/background-process
Cookie class - https://github.com/overclokk/cookie
CSRF - https://github.com/GramThanos/php-csrf
Form Validator - https://stackoverflow.com/questions/737385/easiest-form-validation-library-for-php ( с редакции от мен за php 8.1 и нови regex правила от мен)
Image resizer - https://github.com/eventviva/php-image-resize
Uploader class - https://github.com/CreativeDream/php-uploader (с редакции от мен за php 8.1)
 
Последно редактирано:

Pok4

Registered
Забелязах един бъг - https://i.ibb.co/VxskXRP/image.png
Получава се когато включа екстеншъна за gtranslate и бъгва tooltip-a (tipso jquery plugin).
Ще се опитам да видя от къде може да идва, но туултипа няма relative content id поддръжка и не знам как точно ще стане ... :)

Ето и тук един е изревал - https://xenforo.com/community/threads/no-more-user-tooltip-when-over-username-or-avatar.188933/
 
Последно редактирано:

Pok4

Registered
Оправих го :) Добавих малко css код:
Код:
            /*tipso hotfix*/
            .tipso_bubble.top>.tipso_arrow{top:0%;left:50%;margin-left:-8px;border-color:#000 transparent transparent}
            .tipso_bubble { margin-top:-25px;}

И така горе-долу вече е ОК :) Скрих и arrow-а, който се появява. Който ползва транслейта ще е с този Custom css код...

Ще направя и 1 екстеншънче, с което ще можете да си добавяте линкове в страничното меню от админ панела.
 

Pok4

Registered
Здравейте :)
В следващите версии ще пробвам да сменя и wysiwyg редакторите в системата. В момента се ползва Custom с много дървен код...
Също така в админ панела е ограничена jquery версията до 2.х заради html editor-a, който е https://www.cdolivet.com/editarea/
Не отричам, че всичко си работи, но са дървени та дървени...
Този, който се ползва с къстъм код се нарича Darcy и според мен е събиран от кодове в нета...
На тяхно място аз бих добавил ACE (https://ace.c9.io/) и Summernote (https://summernote.org/).
Има една библиотека, някои от вас, може и да я знаят и тя е - https://github.com/ezyang/htmlpurifier
Чрез нея, спокойно мога да изведа и wysiwyg и за коментарите към новините. (поне да са разрешени някои bbcoд-чета, за да е по-приятно)


Чакам автора на mustache да каже, дали това с css/js версиите е възможно и ако не е, преминавам нататък.
Има на места по екстеншъните и контролерите място за още коментари към кода и ще въведа там нещо, горе-долу да сте в час, кое за какво е...

Ако всичко върви по-план, скоро ще премина и към екстеншъните за смяна на парола, забравена парола и регистрационния. Там трябва да добавя event listener-и и да видя дали ще може да работят с тях... (не съм го тествал и не знам, дали е възможно в събмит event-a, да добавя и да работят)

HTML Purifier-a пише, че е тестван на PHP7, но дали работи под 8-цата не знам, ще тествам когато стигна до него. Има standalone версия, има и github и съм малко раздвоен дали да не го добавя в entity папката като standalone...
Ще преценея като стигна до него.
 

Pok4

Registered
7.0
- всички библиотеки са ъпдейтнати през composer
- Премахнати са Darcy + Editarea плъгините и ги замества ckeditor+плъгини към него (smileys,youtube link adder, syntax highlighting (codemirror) и color button)
- Премахната е bootstrap js библиотеката в админ панела и на нейно място е добавен само tipso плъгина за туултип, тъй като bootstrap-a се ползваше само за tooltips-a..
- Още коментари към кода
- Премахнати излишни assign mustache дефиниции в Greyfish контролерите
- jquery библиотеката в админ панела е ъпдейтната до 3.6.0
- добавени още проверки при add custom lang, css и htmleditor-a с цел когато няма избран файл да не дава грешки.

 
Последно редактирано:

Pok4

Registered
Обнових демото, качих последната версия + включих повече екстеншъни от преди.
Може да разгледате :)
Ако на някой му е дало грешки по-време на ъплоуда, извинявам се :)
 

devcvetomir

Registered
Някой ползва ли я системата, или е за learning purposes, няма продукшън някъде. И забелязах бекъпите, че се извършват със папки :D , най-добре го пусни в гитхъб, махни цената от скрипта, или искай същата сума за премахване на footer copyright нотиса + дарения. Така много тегаво всичко.


едит: аз мислех, че е 7лв, а е 70евро - това не е сериозно, codecanyon нещата струват по-малко и са несравними. Махни тая цена, пусни кода безплатно - и профитвай от теми / плъгини - вдигни им цената на тях.
 

Pok4

Registered
Имам свободно време и да свърша нещо полезно. :) Цената няма да се променя. Вярвам, че след време на някои хора ще им потрябва, поне ако искат да изкарват пари от хост на гейм сървъри. А и Phpbb 4 особено ако е с някои по-мащабни промени... (все пак е интегрирана с него)
 

Pok4

Registered
Довърших и екстеншъна за смяна на парола.
Остава да довърша и този за забравена парола и да адна някаква емейл библиотека към него, която да поддържа и HTML поне, да е приятен темплейта за към емейлите.

Ам... Добавих и една нова функция, казва се is_ext_active($ext_name) и връща true/false, ако екстеншъна е пуснат или спрян.
Важна е, тъй като чрез нея ще си взаимодействат екстеншъните за забравена парола/регистрация и смяна на парола с другите екстеншъни за игрите (world of warcraft или mu online или някоя друга игра, която сте си избрали да хоствате и изисква да има регистрация,смяна на парола и забравена парола)
Вече имам идея какво да правя с ивент листънърите и ще видя какво ще стане.

Пътувам утре или другиден за Испания и съм на курс по испански А1.2 в понеделник и сряда, така че ще съм активен по системата през останалите дни.
Ще се получат нещата, но по-бавно :)...
 

Pok4

Registered
Прибрах си се в Испания :) 3000км екскурзия...
Понеже я качих в 1 испанско гейм форумче и там ми поискаха видео клипове, качих 2 видео клипа, но са с лоша резолюция.
Който иска, нека ги прегледа:
# 1:
# 2:

Общо 16-тина минути. Показвам малко фронт енда и минавам през админ панела.
Утре и другиден трябва да отворя тетрадките, че имам курс в понеделник и някои неща съм ги позабравил и да си ги припомня... Ще съм с 2 учителки (рускини) :D
 

Pok4

Registered
7.1:
- Добавена е нова функция (is_ext_active($ext_name)) - чрез нея, може да проверявате дали някой екстеншън е включен. Полезна е, ако имате екстеншъни, които са зависими един от друг.
- Добавена е nette email library библиотека към ядрото (https://github.com/nette/mail)
- Активиран е ckeditor-a при пращането на емейли от админ панела.

Всичко с емейлите е ОК.
Тези дни ще довърша екстеншъна за забравена парола. Ще го правя по урок - https://www.allphptricks.com/forgot-password-recovery-reset-using-php-and-mysql/
До сега не ми се е налагало да правя подобно нещо и реших да потърся готово решение. Най-вече за temp token таблицата и начина на работа с нея.
Естествено няма да е 1:1, но ще е подобно. Ако нещо има бъгове ще пипна леко. Статията е ъпдейтната 2021. В гугъл потърсих с "forgot password php' и тази статия беше една от първите.

Не е голяма играчка, но пък превода на екстеншъна ще е по-труден, тъй като емейл текста ще е по-дългичък и ще има променливи вътре...
Ще го измисля някак... :)
 

Pok4

Registered
Здравейте :)
Завърших екстеншъна за забравена парола.
Давам и код:
пейстбин: https://pastebin.com/peQEVFgd
Както вече знаете, правих го по урок, но с малки промени от друга тема намерена в нета - https://itnext.io/how-to-implement-password-recovery-securely-in-php-db2275ab3560
temp key-a, който се се съхранява в датабазата е с друга функция, а именно:
Код:
$key = bin2hex(random_bytes(16));
като се споменава в статията и за другата тема и се казва, че това е най-добрия вариант.

Прегледайте кода и ако имате забележки - пишете :)
 

anonimen

Super Moderator
Понеже питаш…
Не те ли притеснява, че имаш функция със 7 вложени if блока?

PHP:
public function custom_page() {
 
        if (strpos($_SERVER['REQUEST_URI'], '/pages/forgot_pw') !== false) {
 
            if (isset($_GET["key"]) && isset($_GET["email"])) {
 
                $csrf = new CSRF();
 
                $submit = "";//globalize
                if(isset($_POST['forgot_pw'])) {
 
                    // .. 7 more lines ..
 
                    if ($csrf->validate('forgot_pw',$_POST['key-awesome'])) {
                        if($validator->validate($_POST))
                        {
                            // .. 3 more lines ..
                            if($enteredcaptchaCode === $captchaCode){
                                if($_POST['new_pass']==$_POST['new_r_pass']) {
 
  • Like
Реакции: Pok4

anonimen

Super Moderator
И още, нали ползваше някакъв template engine по принцип – защо не го ползваш и тук, вместо да лепиш html низове в логиката? (гледам пращането на мейл конкретно)
 
  • Like
Реакции: Pok4

Pok4

Registered
Ам.. дай съвет, какво да ги правя тези иф-ове... ? :) Иначе да, ползвам темплейтния енджин Mustache.
Искаш да кажеш, че всичко в $output променливата мога да го лепна в html файл и да го мина през mustache- да, става, вариант е и е възможно, но пък струва ли си да пускам пак file_get_contents за нещо, което потребителя така или иначе няма да пипа ?
За това реших така да е, иначе може, не е проблем...
Може да видиш надолу, че се викат темплейтни файлове с file_get_contents и се пращат променливи към тях...
Ами не знам, така сметнах, ако кажете, че не е добра идея, ще си го мина през темплейтния енджин...
Гледах да е сходно с урока, който следвах в phptricks...

Благодаря за коментара иначе и ако дадеш съвет за ифо-вете, тъй като не знам какво да ги правя... Да, много са, но как иначе да стане ?

PS:
Код:
<?php
$ext_language = [
    'ext_forgot_pw_submit_button'=>'Рестартирай паролата',
    'ext_forgot_pw_pass'=>'Нова парола',
    'ext_forgot_pw_r_pass'=>'Повтори новата парола',
    'ext_forgot_pw_lang_antibot'=>'Въведете кода от картинката',
    'ext_forgot_pw_allowed_password'=>'Минимум 8 символа и максимум 10, поне една буква и 1 цифра',
    'ext_forgot_pw_forbidden_pass'=>'В паролата се съдържат непозволени символи...',
    'ext_forgot_pw_email'=>'Въведете вашият емейл',
    'ext_forgot_pw_email_subject'=>'Възстановяване на парола',
    'ext_forgot_pw_email_content1'=>'Здравей потребителю,',
    'ext_forgot_pw_email_content2'=>'Моля, кликнете на следният линк, за да рестартирате вашата парола:',
    'ext_forgot_pw_email_content3'=>'Моля, бъдете сигурни, че копирате целия линк по-горе във вашият браузър.
    Линка ще изтече след 1 ден от съображения за сигурност.</p>
    <p>Ако не сте заявили този линк за забравена парола, то моля, не кликайте на линка по-горе. Все пак, моля, сменете паролата си
    от съображения за сигурност.',
    'ext_forgot_pw_email_content4'=>'Благодарности,',
    'ext_forgot_pw_send_success'=>'Моля, проверете вашият емейл и следвайте инструкциите.',
    'ext_forgot_pw_invalid_mail'=>'Невалиден емейл',
    'ext_forgot_pw_no_email_found'=>'Няма такъв потребител с този емейл',
    'ext_forgot_pw_antibot_not_ok'=>'Анти-бот въпроса не е правилен!',
    'ext_forgot_pw_lang_success'=>'Паролата е успешно сменена!',
    'ext_forgot_pw_pass_req'=>'Новата парола е задължителна!',
    'ext_forgot_pw_lang_pass_not_match'=>'Паролите не съвпадат!',
    'ext_forgot_pw_repeat_pw'=>'Моля, повторете новата парола!',
    'ext_forgot_pw_antibot_req'=>'Антибот въпроса е задължителен!',
];
това е превода.
 
Последно редактирано:

Revelation

Super Moderator
Искаш да кажеш, че всичко в $output променливата мога да го лепна в html файл и да го мина през mustache- да, става, вариант е и е възможно, но пък струва ли си да пускам пак file_get_contents за нещо, което потребителя така или иначе няма да пипа ?

Дет' се вика "всяка жаба да си знае гьола". При положение, че използваш template engine се предполага цялата логика, която засяга изгледа да се намира в самия темплейт. Този темплейт само трябва да получава нужните данни. Ти пак може да имаш някаква логика, за да доставиш тези данни, но всичките тези дивове и параграфи не им е мястото в PHP файла. Първо, че прави кода ужасно нечетим, второ че омесваш бизнес логика с изглед и тези методи започват да правят прекалено много неща. За момента може да не ти пречи, но един ден някой друг ще искаш да поддържа тази платформа и този някой ще се види в чудо. Не е изключено след време и ти да си на това дередже.

Кода трябва да се разбира какво прави с един поглед. Наложи ли се да се съсредоточавам и да проследявам 1000 outcome-а, означава че нещо сериозно е сбъркано тука. Да не говорим, че в твоя случай трябва да чета и конкатениран HTML в PHP код и да отделя ненужно време да разбера какво точно се случва във всеки един случай.
 

Горе