Dmytro
Собственно GPT Agents підхід вирішує це питання )
Dmytro
На разі це даже не джун це трейні )
Dmytro
Але він вміє вчитися якщо підключити його до векторноі бази данних ) і ще купа штук там цікавих:)
𝓔𝓾𝓰𝓮𝓷𝓮
Доречі, ставив вчора EVO на пхп 8.2, та звичайно трейсі, можливо то так вийшло, можливо ні, коли композер апдейт робив, бажина вийшла, а саме Warning: Undefined array key "mgrRole" in .../core/src/Providers/TracyServiceProvider.php on line 98 та Warning: Undefined global variable $_SESSION in core/src/Providers/TracyServiceProvider.php on line 95 то думаю саме через пиху 8+. Ото було лінь самому писати, скормив в GPT, та все добре, видав новенький код з if (session_status() == PHP_SESSION_NONE) { session_start(); } та перевіркою на mgrRole. Кому потрібен новенький код, заменіть у себе .../core/src/Providers/TracyServiceProvider.php
𝓔𝓾𝓰𝓮𝓷𝓮
<?php namespace EvolutionCMS\Providers; use Illuminate\Support\ServiceProvider; use EvolutionCMS\Tracy\Debugger; use EvolutionCMS\Interfaces\TracyPanel; use Tracy\IBarPanel; // Начало сессии if (session_status() == PHP_SESSION_NONE) { session_start(); } class TracyServiceProvider extends ServiceProvider { /** * Register the service provider. * * @return void */ public function register() { if ($this->isTracyHandler()) { $this->activateTracy(); } } protected function activateTracy() : void { Debugger::enable($this->isHiddenTracyHandler(), $this->logPath()); Debugger::$strictMode = $this->isStrictMode(); Debugger::$showLocation = $this->isShowLocation(); Debugger::$maxDepth = 20; Debugger::$maxLength = 200; if($this->app['config']->get('tracy.editor')) { Debugger::$editor = $this->app['config']->get('tracy.editor'); } if($this->app['config']->get('tracy.editorMapping')) { Debugger::$editorMapping = $this->app['config']->get('tracy.editorMapping'); } $this->registerErrorTpl(); $this->registerPanels($this->listPanels()); } protected function logPath() : string { return evolutionCMS()->storagePath() . '/logs'; } protected function isTracyHandler() : bool { $this->prepareActiveTracy(); return $this->app['config']->get('tracy.active'); } /** * @return mixed */ public function isHiddenTracyHandler() { return $this->app['config']->get('tracy.hidden'); } protected function isShowLocation() : bool { return true; } protected function isStrictMode() : bool { return false; } protected function registerErrorTpl() : void { $errorTpl = $this->app['config']->get('tracy.error.500'); if ($errorTpl !== null) { Debugger::$errorTemplate = MODX_BASE_PATH . $errorTpl; } } protected function prepareActiveTracy() : void { $flag = $this->app['config']->get('tracy.active'); if (\is_string($flag)) { $newFlag = false; switch ($flag) { case 'manager': if($this->app->isLoggedIn('mgr')) { $newFlag = true; } break; case 'admin': if($this->app->isLoggedIn('mgr') && isset($_SESSION['mgrRole']) && $_SESSION['mgrRole'] == 1) { $newFlag = true; } break; case 'adminfrontonly': if ($this->app->isLoggedIn('mgr') && isset($_SESSION['mgrRole']) && $_SESSION['mgrRole'] == 1 && ($_SERVER['SCRIPT_NAME'] != '/manager/index.php' && $_SERVER['SCRIPT_NAME'] != '/manager/media/browser/mcpuk/browse.php')) { $newFlag = true; } break; case 'managerfrontonly': if ($this->app->isLoggedIn('mgr') && ($_SERVER['SCRIPT_NAME'] != '/manager/index.php' && $_SERVER['SCRIPT_NAME'] != '/manager/media/browser/mcpuk/browse.php')) { $newFlag = true; } break; } $this->app['config']->set('tracy.active', $newFlag); } } protected function listPanels() : array { $panels = $this->app['config']->get('tracy.panels'); return \is_array($panels) ? $panels : []; } protected function registerPanels(array $panels) : void { foreach ($panels as $panel) { $this->injectPanel(new $panel); } } protected function injectPanel(IBarPanel $panel) : void { if (is_a($panel, TracyPanel::class)) { $panel->setEvolutionCMS($this->app); } Debugger::getBar()->addPanel($panel); } }
Serhii
<?php namespace EvolutionCMS\Providers; use Illuminate\Support\ServiceProvider; use EvolutionCMS\Tracy\Debugger; use EvolutionCMS\Interfaces\TracyPanel; use Tracy\IBarPanel; // Начало сессии if (session_status() == PHP_SESSION_NONE) { session_start(); } class TracyServiceProvider extends ServiceProvider { /** * Register the service provider. * * @return void */ public function register() { if ($this->isTracyHandler()) { $this->activateTracy(); } } protected function activateTracy() : void { Debugger::enable($this->isHiddenTracyHandler(), $this->logPath()); Debugger::$strictMode = $this->isStrictMode(); Debugger::$showLocation = $this->isShowLocation(); Debugger::$maxDepth = 20; Debugger::$maxLength = 200; if($this->app['config']->get('tracy.editor')) { Debugger::$editor = $this->app['config']->get('tracy.editor'); } if($this->app['config']->get('tracy.editorMapping')) { Debugger::$editorMapping = $this->app['config']->get('tracy.editorMapping'); } $this->registerErrorTpl(); $this->registerPanels($this->listPanels()); } protected function logPath() : string { return evolutionCMS()->storagePath() . '/logs'; } protected function isTracyHandler() : bool { $this->prepareActiveTracy(); return $this->app['config']->get('tracy.active'); } /** * @return mixed */ public function isHiddenTracyHandler() { return $this->app['config']->get('tracy.hidden'); } protected function isShowLocation() : bool { return true; } protected function isStrictMode() : bool { return false; } protected function registerErrorTpl() : void { $errorTpl = $this->app['config']->get('tracy.error.500'); if ($errorTpl !== null) { Debugger::$errorTemplate = MODX_BASE_PATH . $errorTpl; } } protected function prepareActiveTracy() : void { $flag = $this->app['config']->get('tracy.active'); if (\is_string($flag)) { $newFlag = false; switch ($flag) { case 'manager': if($this->app->isLoggedIn('mgr')) { $newFlag = true; } break; case 'admin': if($this->app->isLoggedIn('mgr') && isset($_SESSION['mgrRole']) && $_SESSION['mgrRole'] == 1) { $newFlag = true; } break; case 'adminfrontonly': if ($this->app->isLoggedIn('mgr') && isset($_SESSION['mgrRole']) && $_SESSION['mgrRole'] == 1 && ($_SERVER['SCRIPT_NAME'] != '/manager/index.php' && $_SERVER['SCRIPT_NAME'] != '/manager/media/browser/mcpuk/browse.php')) { $newFlag = true; } break; case 'managerfrontonly': if ($this->app->isLoggedIn('mgr') && ($_SERVER['SCRIPT_NAME'] != '/manager/index.php' && $_SERVER['SCRIPT_NAME'] != '/manager/media/browser/mcpuk/browse.php')) { $newFlag = true; } break; } $this->app['config']->set('tracy.active', $newFlag); } } protected function listPanels() : array { $panels = $this->app['config']->get('tracy.panels'); return \is_array($panels) ? $panels : []; } protected function registerPanels(array $panels) : void { foreach ($panels as $panel) { $this->injectPanel(new $panel); } } protected function injectPanel(IBarPanel $panel) : void { if (is_a($panel, TracyPanel::class)) { $panel->setEvolutionCMS($this->app); } Debugger::getBar()->addPanel($panel); } }
Додай пулл реквест в ядро.
𝓔𝓾𝓰𝓮𝓷𝓮
Сьогодні, завтра зроблю
𝓔𝓾𝓰𝓮𝓷𝓮
зараз тут по роботі напали)
Serhii
зараз тут по роботі напали)
У самого повна срака. Роботи валом, але переважно безкоштовна 🥲.
𝓔𝓾𝓰𝓮𝓷𝓮
Додай пулл реквест в ядро.
https://github.com/Seiger/evolution/pull/1
𝓔𝓾𝓰𝓮𝓷𝓮
@seigerit Підкажи по можливості, в sLang є можливість ставити свої таби на general закладках, на скільки я зрозумів. В прикладі в тебе є таке: Event::listen('evolution.sLangDocFormFieldRender', function($params) { if ($params['content']['template'] == 7) { if ($params['name'] == 'introtext') { return view('slang.introtext', $params)->render(); } } }); якщо я вірно зрозумів, то щоб я зробив свій таб з данними, мені треба щось таке: Event::listen('evolution.sLangDocFormFieldRender', function($params) { if ($params['content']['template'] == 1) { if ($params['name'] == 'longtitle') { $params['field']['tab'] = 'Мій таб'; return view('slang.longtitle', $params)->render(); } } }); я вірно зрозумів?
𝓔𝓾𝓰𝓮𝓷𝓮
чи думаю не в тому напрямку?
Serhii
Це для роботи з полями. типу підмінити параметр поля, Наприклад перейменувати (з прикладу, замість "Інтротекст" відобразити менеджеру "Коротки опис для ресурса", або задати текст по дефолту для поля). Кастомні таби додати через sLang не має можливості.
𝓔𝓾𝓰𝓮𝓷𝓮
Буду щось мудрити)
Serhii
А тре просто кастомній таб?
Serhii
Чи саме з sLang?
𝓔𝓾𝓰𝓮𝓷𝓮
Та хочу порядок навести, наприклад є таб General_UA В ньому таб "Основні" (title,desc.,menutaitle) Ще один там "SEO" (tv_seotitle,tv_desc.,h1,h2...) Третій таб "IMG"
𝓔𝓾𝓰𝓮𝓷𝓮
templatesEdit 3 як працює, алеж він працює з таблицями site_content, а sLang з s_lang_content
𝓔𝓾𝓰𝓮𝓷𝓮
тому тут треба щось думати
Serhii
Для зображень можна використати https://github.com/Seiger/sGallery він додасть окремий таб.
Serhii
Там же можна підгледіти як додати новий таб https://github.com/Seiger/sGallery/blob/9cadff11dad46724476efe26015253850e2836ca/plugins/sGalleryPlugin.php#L5
Rana رنا
Jumma Mubarak
Yevhenii
хочу зробити ще один, але вже по sLang. Вiн у мене чомусь не працює потрiбним чином нi на локалi, нi з серверу :(
Yevhenii
але ще сумнiваюсь, чи в модулi справа, чи в моїх нерiвних руках)
𝓔𝓾𝓰𝓮𝓷𝓮
а що за баг?
𝓔𝓾𝓰𝓮𝓷𝓮
доречі в sMultisite трабла була що в таблиці не додавались сайти?
Yevhenii
а що за баг?
не працюють сторiнки (крiм головноi) на неосновiй мовi
𝓔𝓾𝓰𝓮𝓷𝓮
думав що тільки в мене таке
Yevhenii
думав що тільки в мене таке
в мене теж. Може на старiших версiях ево працюватиме?
𝓔𝓾𝓰𝓮𝓷𝓮
Раніше як працювало, але на старішу йти не хо)
𝓔𝓾𝓰𝓮𝓷𝓮
то треба десь подивитись, чого воно редіректіть на 404
Serhii
Привіт, по мультисайту багрепорт отримав. Нажаль ще не виправив.
Serhii
Маю майже безкоштовний проект який п'є з мене всі соки...
Serhii
По ленгу перевірте налаштування nginx
Serhii
https://github.com/evolution-cms/evolution/blob/3.2.x/ng.inx
Yevhenii
По ленгу перевірте налаштування nginx
а якi мають бути, якщо дефолтний апач?
Serhii
ось для апача https://github.com/evolution-cms/evolution/blob/3.2.x/ht.access
Yevhenii
ось для апача https://github.com/evolution-cms/evolution/blob/3.2.x/ht.access
дякую, спробую. На жаль, в документацii не сказано що треба вности в хтассесс чи ng.inx змiни
Serhii
Та не треба наче.
Serhii
Справа в тому, що я вже давно на нгінкс працюю.
Serhii
Загалом маю надію що десь за тиждень стану трохи доступніший.
Yevhenii
Справа в тому, що я вже давно на нгінкс працюю.
розумiю, але нажаль, на шаред хостингах частiше ще апач
Serhii
Я робив sLang таким чином, щоб працювало незалежно від движка. Має бути на реквестах.
Yevhenii
Я робив sLang таким чином, щоб працювало незалежно від движка. Має бути на реквестах.
Порiвняю свiй htaccess з дефолтним, якщо щось вiдпишусь. Дякую за допомогу❤️
𝓔𝓾𝓰𝓮𝓷𝓮
Привіт, по мультисайту багрепорт отримав. Нажаль ще не виправив.
Можливо тут https://github.com/Seiger/sMultisite/pull/1 https://github.com/Seiger/sMultisite/pull/1/commits/b79823f4940436b258a97ad4b1fa1fd6676b8499
𝓔𝓾𝓰𝓮𝓷𝓮
наразі виправив у себе, запрацювало
𝓔𝓾𝓰𝓮𝓷𝓮
в БД додається
Yevhenii
в БД додається
в мене теж, але фронт без папок:
Yevhenii
Serhii
Я первірю, але спробуйте додати домен не .loc, а інший.
𝓔𝓾𝓰𝓮𝓷𝓮
по мультиленгу, зрозумів як собі зробити) додаткові поля, та ще вкладки (викину templatesEdit), але тоді звісно не зможу оновитися, та то таке, можно і руками)
Serhii
А ви ж використовуєте зареєстровані домени?
Serhii
Чи може прибрати валідацію домена?
Yevhenii
Чи може прибрати валідацію домена?
а як проходить валiдацiя? просто пiнг?
Serhii
так
Serhii
Зараз перевіряю все. Та мабуть викину перевірку домена на існування.
Yevhenii
якщо можна, то думаю краще прибрати
Yevhenii
бо може бути ще й таке що новий домен неможливо в ево додати, пока не оновяться NS. А так i чекати не треба, можна вже контент вносити буде
Dmytro
Ага там сенсу від перевірки нема на ділі
𝓔𝓾𝓰𝓮𝓷𝓮
аж цікаво
Yevhenii
Evolution CMS ?
Serhii
https://nordic.seigerit.com/ Тут робиться мультидомен та комерц. Просто тема в тому, що сильно промахнувся з оцінкою і вже пів року на підсосі.
Serhii
Тут же правиться й еволюшка
Serhii
На початку навіть не здавалося що проект буде над складний та втішає те, що виходить крутяцький. Є що в портфоліо додати.
Yevhenii
виглядає масштабно
Yevhenii
а чим реалiзована ця велика форма пошуку?
𝓔𝓾𝓰𝓮𝓷𝓮
а чим реалiзована ця велика форма пошуку?
Та то думаю звичайний get запит в базу
𝓔𝓾𝓰𝓮𝓷𝓮
=))
𝓔𝓾𝓰𝓮𝓷𝓮
ну сам сайт дуже круто виглядає
Serhii
ще до кінця не готовий сайт
𝓔𝓾𝓰𝓮𝓷𝓮
Та то зрозуміло) Можливо та сторінка і не потрібна)) russian-visa
Serhii
Так все правильно, якщо сторінка не існує то 404. А сторінок пов'язаних з раша там уже не існує