Ищу единомышленников.
Идея стоит выделки?
Пока вышел из ситуации заменой данной строчки на:
'href' => href_to($this->controller->root_url, 'add')
А при
На данный момент остановился на этом:
INSERT INTO `{#}controllers` (`title`, `name`, `is_enabled`, `options`, `author`, `url`, `version`, `is_backend`) VALUES ('Мои патчи', 'mypatch', 1, '', 'Scorpion', '', '1.0', 1); DROP TABLE IF EXISTS `{#}mypatch`; CREATE TABLE IF NOT EXISTS `{#}mypatch` ( `id` int(11) NOT NULL, `description` varchar(100) DEFAULT NULL, `file_path_id` int(11) DEFAULT NULL, `file_name_id` int(11) DEFAULT NULL, `order_patch` tinyint(4) DEFAULT NULL, `code_search` text DEFAULT NULL, `code_replace` text DEFAULT NULL, `shifts` text DEFAULT NULL, `state` tinyint(4) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; DROP TABLE IF EXISTS `{#}mypatch_paths`; CREATE TABLE IF NOT EXISTS `{#}mypatch_paths` ( `id` int(11) NOT NULL, `file_path` varchar(100) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; DROP TABLE IF EXISTS `{#}mypatch_files`; CREATE TABLE IF NOT EXISTS `{#}mypatch_files` ( `id` int(11) NOT NULL, `file_name` varchar(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ALTER TABLE `{#}mypatch` ALTER TABLE `{#}mypatch_paths` ALTER TABLE `{#}mypatch_files` ALTER TABLE `{#}mypatch` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `{#}mypatch_paths` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `{#}mypatch_files` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
Исходные файлы:
<?php class actionMypatchAdd extends cmsAction { public function run(){ $is_can_add = cmsUser::isAdmin(); if (!$is_can_add) { cmsCore::error404(); } $errors = false; $form = $this->getForm('patch'); $is_submitted = $this->request->has('submit'); $patch = $form->parse($this->request, $is_submitted); if ($is_submitted) { $errors = $form->validate($this, $patch) ; if (!$errors){ // $patch_id = $this->model->addPatch($patch); } if ($errors){ cmsUser::addSessionMessage(LANG_FORM_ERRORS, 'error'); } } $template = cmsTemplate::getInstance(); 'do' => 'add', 'form' => $form, 'patch' => $patch, 'errors' => $errors )); } }
<?php // $this->addBreadcrumb(LANG_MYPATCH_CONTROLLER, $this->href_to('')); if ($do == 'add') { $page_title = LANG_MYPATCH_ADD;} if ($do == 'edit') { $page_title = LANG_MYPATCH_EDIT; $this->addBreadcrumb ($patch['description'], $this->href_to('patch', $patch['id'])); } $this->setPageTitle($page_title); $this->addBreadcrumb($page_title); /* $this->addToolButton(array( 'class' => 'save', 'title' => LANG_SAVE, 'href' => "javascript:icms.forms.submit()" )); */ 'class' => 'cancel', 'title' => LANG_CANCEL, 'href' => $this->href_to('') )); /**/ ?> <?php 'action' => '', 'metod' => 'post', 'toolbar' => false ), $errors);
При нажатии "добавить" — получаю вот что:
<?php // $this->addBreadcrumb(LANG_MYPATCH_CONTROLLER, $this->href_to('')); if ($do == 'add') { $page_title = LANG_MYPATCH_ADD;} if ($do == 'edit') { $page_title = LANG_MYPATCH_EDIT; $this->addBreadcrumb ($patch['description'], $this->href_to('patch', $patch['id'])); } $this->setPageTitle($page_title); $this->addBreadcrumb($page_title); /* $this->addToolButton(array( 'class' => 'save', 'title' => LANG_SAVE, 'href' => "javascript:icms.forms.submit()" )); */ 'class' => 'cancel', 'title' => LANG_CANCEL, 'href' => $this->href_to('') )); /**/ ?> <?php echo 'test'; // $this->renderForm($form, $patch, array( // 'action' => '', // 'metod' => 'post', // 'toolbar' => false // ), $errors);
То есть вывод заканчивается на построении глубинометра а все что после него — игнорируется :(
Нашел я в чем проблема:
в файле system\controllers\mypatch\backend\actions\add.php
меняем :
$template = cmsTemplate::getInstance(); 'do' => 'add', 'form' => $form, 'patch' => $patch, 'errors' => $errors ));
'do' => 'add', 'form' => $form, 'patch' => $patch, 'errors' => $errors ));
Не программисты со мной согласятся…
A helper library for analyzing and modifying PHP source files.
как ясно из названия умеет анализировать и программно модифицировать php файлы
т.е. можете сделать cms которая собирает сама себя по кусочкам 😊
в принципе, можно при желании и автотесты сделать — для наката патча, запуска cms и проверки результата. Но автотесты похоже будут в тройке...
но так как сайт на Инстанте обычно делает и ведет один и тот же человек — то это все и не нужно в принципе
а БД всех патчей — в связи с всплеском хаков для каждой версии Инстанта — думаю имела бы смысл
Именно это главная цель. И возможность в одно касание применить/отменить патч.а БД всех патчей — в связи с всплеском хаков для каждой версии Инстанта — думаю имела бы смысл
Я не собираюсь писать компонент "обновления" всей системы… поэтому и оставил для разработчиков имя контролера "patch"😊а застолбил для своего компонента имя "mypatch" — тоесть это небольшие хаки, которые помогут обывателю немного подправить код до выхода официального релиза.
Я конечно извиняюсь, но ориентируюсь пока только на двойку.для первой ветки это тоже было бы полезно...