diff --git a/app/Config/Constants.php b/app/Config/Constants.php index 1839d88..dd69076 100644 --- a/app/Config/Constants.php +++ b/app/Config/Constants.php @@ -224,7 +224,7 @@ define('LAYOUTS', [ 'stylesheets' => [ '', '', - '', + '', ], 'javascripts' => [ '', @@ -253,7 +253,7 @@ define('LAYOUTS', [ '', '', '', - '', + '', ], 'javascripts' => [ '', @@ -284,7 +284,7 @@ define('LAYOUTS', [ '', '', '', - '', + '', ], 'javascripts' => [ '', diff --git a/app/Controllers/Admin/AdminController.php b/app/Controllers/Admin/AdminController.php index 326f7c4..fa5c91a 100644 --- a/app/Controllers/Admin/AdminController.php +++ b/app/Controllers/Admin/AdminController.php @@ -13,7 +13,8 @@ abstract class AdminController extends MVController { parent::initController($request, $response, $logger); $this->layout = "admin"; - $this->view_root .= "admin/"; - $this->action_form = FORMS['IFRAME']; + $this->uri_path = "admin/"; + $this->view_path = "admin/"; + $this->action_form = FORMS['MODAL']; } } diff --git a/app/Controllers/Admin/Cloudflare/AccountController.php b/app/Controllers/Admin/Cloudflare/AccountController.php index f304c6c..f3e9664 100644 --- a/app/Controllers/Admin/Cloudflare/AccountController.php +++ b/app/Controllers/Admin/Cloudflare/AccountController.php @@ -2,13 +2,14 @@ namespace App\Controllers\Admin\Cloudflare; -use Psr\Log\LoggerInterface; -use CodeIgniter\HTTP\ResponseInterface; -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\HTTP\RedirectResponse; -use CodeIgniter\HTTP\DownloadResponse; -use App\Models\Cloudflare\AccountModel; +use App\Helpers\Cloudflare\AccountHelper; use App\Libraries\Cloudflare\Account; +use App\Models\Cloudflare\AccountModel; +use CodeIgniter\HTTP\DownloadResponse; +use CodeIgniter\HTTP\RedirectResponse; +use CodeIgniter\HTTP\RequestInterface; +use CodeIgniter\HTTP\ResponseInterface; +use Psr\Log\LoggerInterface; class AccountController extends CloudflareController { @@ -20,9 +21,8 @@ class AccountController extends CloudflareController parent::initController($request, $response, $logger); $this->class_name = "Account"; $this->class_path .= $this->class_name; - $this->view_path = strtolower($this->view_root . $this->class_name); $this->title = lang("{$this->class_path}.title"); - helper($this->class_path); + $this->helper = new AccountHelper(); } final protected function getModel(): AccountModel { diff --git a/app/Controllers/Admin/Cloudflare/AuthController.php b/app/Controllers/Admin/Cloudflare/AuthController.php index 3cd327e..f07bbf5 100644 --- a/app/Controllers/Admin/Cloudflare/AuthController.php +++ b/app/Controllers/Admin/Cloudflare/AuthController.php @@ -2,12 +2,13 @@ namespace App\Controllers\Admin\Cloudflare; -use Psr\Log\LoggerInterface; -use CodeIgniter\HTTP\ResponseInterface; -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\HTTP\RedirectResponse; -use CodeIgniter\HTTP\DownloadResponse; +use App\Helpers\Cloudflare\AuthHelper; use App\Models\Cloudflare\AuthModel; +use CodeIgniter\HTTP\DownloadResponse; +use CodeIgniter\HTTP\RedirectResponse; +use CodeIgniter\HTTP\RequestInterface; +use CodeIgniter\HTTP\ResponseInterface; +use Psr\Log\LoggerInterface; class AuthController extends CloudflareController { @@ -17,9 +18,8 @@ class AuthController extends CloudflareController parent::initController($request, $response, $logger); $this->class_name .= "Auth"; $this->class_path .= $this->class_name; - $this->view_path = strtolower($this->view_root . $this->class_name); $this->title = lang("{$this->class_path}.title"); - helper($this->class_path); + $this->helper = new AuthHelper(); } final protected function getModel(): AuthModel { diff --git a/app/Controllers/Admin/Cloudflare/CloudflareController.php b/app/Controllers/Admin/Cloudflare/CloudflareController.php index 61f0f4a..3b7c747 100644 --- a/app/Controllers/Admin/Cloudflare/CloudflareController.php +++ b/app/Controllers/Admin/Cloudflare/CloudflareController.php @@ -2,15 +2,15 @@ namespace App\Controllers\Admin\Cloudflare; -use Psr\Log\LoggerInterface; -use CodeIgniter\HTTP\ResponseInterface; -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\HTTP\RedirectResponse; -use App\Models\Cloudflare\ZoneModel; -use App\Models\Cloudflare\RecordModel; -use App\Models\Cloudflare\AuthModel; -use App\Models\Cloudflare\AccountModel; use App\Controllers\Admin\AdminController; +use App\Models\Cloudflare\AccountModel; +use App\Models\Cloudflare\AuthModel; +use App\Models\Cloudflare\RecordModel; +use App\Models\Cloudflare\ZoneModel; +use CodeIgniter\HTTP\RedirectResponse; +use CodeIgniter\HTTP\RequestInterface; +use CodeIgniter\HTTP\ResponseInterface; +use Psr\Log\LoggerInterface; abstract class CloudflareController extends AdminController { @@ -21,8 +21,8 @@ abstract class CloudflareController extends AdminController public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { parent::initController($request, $response, $logger); - $this->class_path .= "Cloudflare/"; - $this->view_root .= strtolower($this->class_path); + $this->class_path = "Cloudflare/"; + $this->uri_path .= strtolower($this->class_path); } final protected function getAuthModel(): AuthModel { @@ -59,6 +59,7 @@ abstract class CloudflareController extends AdminController $this->getModel()->transStart(); try { $this->sync_process($uid); + $this->message = "{$this->class_name}: 동기화작업을 완료하였습니다."; $this->getModel()->transCommit(); log_message("notice", $this->message); $this->session->setFlashdata(SESSION_NAMES['RETURN_MSG'], $this->message); @@ -79,6 +80,7 @@ abstract class CloudflareController extends AdminController $this->getModel()->transStart(); try { $this->reload_process($uid); + $this->message = "{$this->class_name}: Reload 작업이 완료되었습니다."; $this->getModel()->transCommit(); log_message("notice", $this->message); $this->session->setFlashdata(SESSION_NAMES['RETURN_MSG'], $this->message); diff --git a/app/Controllers/Admin/Cloudflare/RecordController.php b/app/Controllers/Admin/Cloudflare/RecordController.php index 2ebcee6..438523e 100644 --- a/app/Controllers/Admin/Cloudflare/RecordController.php +++ b/app/Controllers/Admin/Cloudflare/RecordController.php @@ -2,13 +2,14 @@ namespace App\Controllers\Admin\Cloudflare; -use Psr\Log\LoggerInterface; -use CodeIgniter\HTTP\ResponseInterface; -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\HTTP\RedirectResponse; -use CodeIgniter\HTTP\DownloadResponse; -use App\Models\Cloudflare\RecordModel; +use App\Helpers\Cloudflare\RecordHelper; use App\Libraries\Cloudflare\Record; +use App\Models\Cloudflare\RecordModel; +use CodeIgniter\HTTP\DownloadResponse; +use CodeIgniter\HTTP\RedirectResponse; +use CodeIgniter\HTTP\RequestInterface; +use CodeIgniter\HTTP\ResponseInterface; +use Psr\Log\LoggerInterface; class RecordController extends CloudflareController { @@ -19,9 +20,8 @@ class RecordController extends CloudflareController parent::initController($request, $response, $logger); $this->class_name .= "Record"; $this->class_path .= $this->class_name; - $this->view_path = strtolower($this->view_root . $this->class_name); $this->title = lang("{$this->class_path}.title"); - helper($this->class_path); + $this->helper = new RecordHelper(); } final protected function getModel(): RecordModel { @@ -100,7 +100,7 @@ class RecordController extends CloudflareController $cnt = 1; foreach ($this->formDatas['hosts'] as $host) { //호스트명 형식확인 - if (!isHost_CommonHelper($host)) { + if (!$this->helper->isHost($host)) { throw new \Exception("{$this->_zone_entity->getTitle()}의 {$cnt}번째 {$host} 호스트명 형식 오류"); } $cnt++; @@ -110,7 +110,6 @@ class RecordController extends CloudflareController $entity = $this->getMyLibrary()->create($host, $this->formDatas['type'], $this->formDatas['content'], $this->formDatas['proxied']); log_message("debug", "Record:{$entity->getTitle()} 생성 작업을 완료하였습니다."); } - $this->message = "Record {$this->action} 작업을 완료하였습니다."; } public function create(mixed $zone_uid = false): RedirectResponse|string { @@ -137,7 +136,6 @@ class RecordController extends CloudflareController //Socket처리 $entity = $this->getMyLibrary()->modify($this->entity, $this->formDatas); } - $this->message = "Record:{$entity->getTitle()} {$this->action} 작업을 완료하였습니다."; } //일괄처리작업 public function batcjob(): RedirectResponse @@ -159,7 +157,6 @@ class RecordController extends CloudflareController $this->_zone_entity = $this->getZoneModel()->getEntityByPK($this->entity->getParent()); //Socket처리 $this->getMyLibrary()->sync($this->entity); - $this->message = "Record:{$this->entity->getTitle()} {$this->action} 작업을 완료하였습니다."; } public function sync(string $uid): RedirectResponse { @@ -178,7 +175,6 @@ class RecordController extends CloudflareController $this->_zone_entity = $this->getZoneModel()->getEntityByPK($this->formDatas[$this->getModel()::PARENT]); //Cloudflare 삭제 $this->getMyLibrary()->delete($this->entity); - $this->message = "Record:{$this->entity->getTitle()} {$this->action} 작업을 완료하였습니다."; } // 리스트 public function index(): string diff --git a/app/Controllers/Admin/Cloudflare/ZoneController.php b/app/Controllers/Admin/Cloudflare/ZoneController.php index e17aa5b..4affec4 100644 --- a/app/Controllers/Admin/Cloudflare/ZoneController.php +++ b/app/Controllers/Admin/Cloudflare/ZoneController.php @@ -2,14 +2,15 @@ namespace App\Controllers\Admin\Cloudflare; -use Psr\Log\LoggerInterface; -use CodeIgniter\HTTP\ResponseInterface; -use CodeIgniter\HTTP\RequestInterface; -use CodeIgniter\HTTP\RedirectResponse; -use CodeIgniter\HTTP\DownloadResponse; -use App\Models\Cloudflare\ZoneModel; -use App\Libraries\Cloudflare\Zone; +use App\Helpers\Cloudflare\ZoneHelper; use App\Libraries\Cloudflare\Record; +use App\Libraries\Cloudflare\Zone; +use App\Models\Cloudflare\ZoneModel; +use CodeIgniter\HTTP\DownloadResponse; +use CodeIgniter\HTTP\RedirectResponse; +use CodeIgniter\HTTP\RequestInterface; +use CodeIgniter\HTTP\ResponseInterface; +use Psr\Log\LoggerInterface; class ZoneController extends CloudflareController { @@ -21,9 +22,8 @@ class ZoneController extends CloudflareController parent::initController($request, $response, $logger); $this->class_name .= "Zone"; $this->class_path .= $this->class_name; - $this->view_path = strtolower($this->view_root . $this->class_name); - $this->title = lang("{$this->class_path}.title"); - helper($this->class_path); + $this->title = lang("{$this->class_path}.title"); + $this->helper = new ZoneHelper(); } final protected function getModel(): ZoneModel { @@ -35,7 +35,6 @@ class ZoneController extends CloudflareController final protected function getMyLibrary(): Zone { if ($this->_myLibrary === null) { - $this->_myLibrary = new Zone($this->_account_entity); } return $this->_myLibrary; @@ -111,14 +110,14 @@ class ZoneController extends CloudflareController //데이터검증 //Type이 A형식일경우 IP형태인지 확인 if ($this->formDatas['type'] === 'A') { - if (!isIPAddress_CommonHelper($this->formDatas['content'], $this->formDatas['type'])) { + if (!$this->helper->isIPAddress($this->formDatas['content'], $this->formDatas['type'])) { throw new \Exception("{$this->_account_entity->getTitle()}의 {$this->formDatas['type']}, {$this->formDatas['content']} 형식 오류[사설IP 않됨]"); } } $cnt = 1; foreach ($this->formDatas['domains'] as $domain) { //도메인명 형식확인 - if (!isDomain_CommonHelper($domain)) { + if (!$this->helper->isDomain($domain)) { throw new \Exception("{$this->_account_entity->getTitle()}의 {$cnt}번째 {$domain} 형식 오류"); } //도메인명이 해당계정의 유일한 도메인인지 확인 @@ -130,7 +129,7 @@ class ZoneController extends CloudflareController $cnt = 1; foreach ($this->formDatas['hosts'] as $host) { //호스트명 형식확인 - if (!isHost_CommonHelper($host)) { + if (!$this->helper->isHost($host)) { throw new \Exception("{$this->_account_entity->getTitle()}의 {$cnt}번째 {$host} 호스트명 형식 오류"); } $cnt++; @@ -153,7 +152,6 @@ class ZoneController extends CloudflareController log_message("debug", "Record:{$entity->getTitle()} 작업을 완료하였습니다."); } } - $this->message = "Zone {$this->action} 작업을 완료하였습니다."; } public function create(): RedirectResponse|string { @@ -175,7 +173,6 @@ class ZoneController extends CloudflareController $this->_account_entity = $this->getAccountModel()->getEntityByPK($this->entity->getParent()); //Socket처리 $entity = $this->getMyLibrary()->modify($this->entity, $this->formDatas); - $this->message = "Zone:{$entity->getTitle()} {$this->action} 작업을 완료하였습니다."; } //일괄처리작업 public function batcjob(): RedirectResponse @@ -197,7 +194,6 @@ class ZoneController extends CloudflareController $this->_account_entity = $this->getAccountModel()->getEntityByPK($this->entity->getParent()); //Socket처리 $this->getMyLibrary()->sync($this->entity); - $this->message = "Zone:{$this->entity->getTitle()} {$this->action} 작업을 완료하였습니다."; } public function sync(string $uid): RedirectResponse { @@ -216,7 +212,6 @@ class ZoneController extends CloudflareController $this->_account_entity = $this->getAccountModel()->getEntityByPK($this->formDatas[$this->getModel()::PARENT]); //Cloudflare 삭제 $this->getMyLibrary()->delete($this->entity); - $this->message = "Zone:{$this->entity->getTitle()} {$this->action} 작업을 완료하였습니다."; } // 리스트 public function index(): string diff --git a/app/Controllers/Admin/MapurlController.php b/app/Controllers/Admin/MapurlController.php index 204ac88..87f8294 100644 --- a/app/Controllers/Admin/MapurlController.php +++ b/app/Controllers/Admin/MapurlController.php @@ -2,9 +2,10 @@ namespace App\Controllers\Admin; +use App\Helpers\MapurlHelper; use App\Models\MapurlModel; -use CodeIgniter\HTTP\DownloadResponse; +use CodeIgniter\HTTP\DownloadResponse; use CodeIgniter\HTTP\RedirectResponse; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; @@ -18,9 +19,8 @@ class MapurlController extends AdminController parent::initController($request, $response, $logger); $this->class_name .= "Mapurl"; $this->class_path .= $this->class_name; - $this->view_path = strtolower($this->view_root . $this->class_name); $this->title = lang("{$this->class_path}.title"); - helper($this->class_path); + $this->helper = new MapurlHelper(); } protected function getModel(): MapurlModel { diff --git a/app/Controllers/Admin/UserController.php b/app/Controllers/Admin/UserController.php index 4a7df82..e109900 100644 --- a/app/Controllers/Admin/UserController.php +++ b/app/Controllers/Admin/UserController.php @@ -2,9 +2,10 @@ namespace App\Controllers\Admin; +use App\Helpers\UserHelper; use App\Models\UserModel; -use CodeIgniter\HTTP\DownloadResponse; +use CodeIgniter\HTTP\DownloadResponse; use CodeIgniter\HTTP\RedirectResponse; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; @@ -19,9 +20,8 @@ class UserController extends AdminController parent::initController($request, $response, $logger); $this->class_name = "User"; $this->class_path .= $this->class_name; - $this->view_path = strtolower($this->view_root . $this->class_name); $this->title = lang("{$this->class_path}.title"); - helper($this->class_path); + $this->helper = new UserHelper(); } protected function getModel(): UserModel { diff --git a/app/Controllers/CommonController.php b/app/Controllers/CommonController.php index dfe1cd2..154f852 100644 --- a/app/Controllers/CommonController.php +++ b/app/Controllers/CommonController.php @@ -14,7 +14,6 @@ abstract class CommonController extends BaseController { parent::initController($request, $response, $logger); $this->session = service('session'); - helper("common"); } final public function __get($name) { diff --git a/app/Controllers/FrontController.php b/app/Controllers/FrontController.php index d73bc7a..480c8d6 100644 --- a/app/Controllers/FrontController.php +++ b/app/Controllers/FrontController.php @@ -13,7 +13,8 @@ abstract class FrontController extends MVController { parent::initController($request, $response, $logger); $this->layout = "front"; - $this->view_root .= "front/"; + $this->uri_path = "front/"; + $this->view_path = "front/"; $this->action_form = FORMS['MODAL']; } } diff --git a/app/Controllers/MVController.php b/app/Controllers/MVController.php index 5799f52..43b2e8a 100644 --- a/app/Controllers/MVController.php +++ b/app/Controllers/MVController.php @@ -17,7 +17,6 @@ abstract class MVController extends CommonController public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { parent::initController($request, $response, $logger); - helper('common'); $this->session = service('session'); } abstract protected function getModel(): mixed; @@ -89,9 +88,7 @@ abstract class MVController extends CommonController )); } } - protected function create_form_process(): void - { - } + protected function create_form_process(): void {} final protected function create_form_procedure(): RedirectResponse|string { try { @@ -100,7 +97,7 @@ abstract class MVController extends CommonController $this->session->keepFlashdata(SESSION_NAMES['RETURN_URL']); $this->forms = ['attributes' => ['method' => "post",], 'hiddens' => []]; return view( - $this->view_path . "/create", + $this->view_path . "create", data: ['viewDatas' => $this->getViewDatas()] ); } catch (\Exception $e) { @@ -113,7 +110,6 @@ abstract class MVController extends CommonController $this->create_validate($this->action, $this->fields); $this->formDatas = $this->getFormDatas(); $this->entity = $this->getModel()->create(formDatas: $this->formDatas); - $this->message = "{$this->action} 작업이 완료되었습니다."; } final protected function create_procedure(): RedirectResponse|string { @@ -121,6 +117,7 @@ abstract class MVController extends CommonController $this->getModel()->transStart(); try { $this->create_process(); + $this->message = "{$this->class_name} : 생성작업이 완료되었습니다."; $this->getModel()->transCommit(); log_message("notice", __FUNCTION__ . $this->message); switch ($this->action_form) { @@ -172,7 +169,7 @@ abstract class MVController extends CommonController $this->session->keepFlashdata(SESSION_NAMES['RETURN_URL']); $this->forms = ['attributes' => ['method' => "post",], 'hiddens' => []]; return view( - $this->view_path . "/modify", + $this->view_path . "modify", data: ['viewDatas' => $this->getViewDatas()] ); } catch (\Exception $e) { @@ -190,7 +187,6 @@ abstract class MVController extends CommonController throw new \Exception(__FUNCTION__, " => {$uid} 정보를 찾을수 없습니다."); } $this->entity = $this->getModel()->modify($this->entity, $this->formDatas); - $this->message = "{$this->action} 작업이 완료되었습니다."; } final protected function modify_procedure(string $uid): RedirectResponse|string { @@ -198,6 +194,7 @@ abstract class MVController extends CommonController $this->getModel()->transStart(); try { $this->modify_process($uid); + $this->message = "{$this->class_name} : 수정작업이 완료되었습니다."; $this->getModel()->transCommit(); log_message("notice", __FUNCTION__ . $this->message); switch ($this->action_form) { @@ -236,6 +233,7 @@ abstract class MVController extends CommonController foreach ($uids as $uid) { $this->modify_process($uid); } + $this->message = "{$this->class_name} : 일괄처리작업이 완료되었습니다."; $this->getModel()->transCommit(); log_message("notice", $this->message); $this->session->setFlashdata(SESSION_NAMES['RETURN_MSG'], $this->message); @@ -258,6 +256,7 @@ abstract class MVController extends CommonController $this->getModel()->transStart(); try { $this->modify_process($uid); + $this->message = "{$this->class_name} : Toggle 수정작업이 완료되었습니다."; $this->getModel()->transCommit(); log_message("notice", $this->message); $this->session->setFlashdata(SESSION_NAMES['RETURN_MSG'], $this->message); @@ -279,7 +278,6 @@ abstract class MVController extends CommonController throw new \Exception("{$uid} 정보를 찾을수 없습니다."); } $this->entity = $this->getModel()->delete($this->entity->getPK()); - $this->message = "삭제작업을 완료하였습니다."; } final public function delete(string $uid): RedirectResponse { @@ -287,6 +285,7 @@ abstract class MVController extends CommonController $this->getModel()->transStart(); try { $this->delete_process($uid); + $this->message = "{$this->class_name} : 삭제작업이 완료되었습니다."; $this->getModel()->transCommit(); log_message("notice", $this->message); $this->session->setFlashdata(SESSION_NAMES['RETURN_MSG'], $this->message); @@ -365,7 +364,7 @@ abstract class MVController extends CommonController $this->order_value = $this->request->getVar('order_value') ?: DEFAULTS['EMPTY']; $this->getModel()->setList_OrderBy( $this->order_field !== DEFAULTS['EMPTY'] && - $this->order_value !== DEFAULTS['EMPTY'] ? "{$this->order_field} {$this->order_value}" : "" + $this->order_value !== DEFAULTS['EMPTY'] ? "{$this->order_field} {$this->order_value}" : "" ); if ($this->page) { $this->getModel()->limit( @@ -395,12 +394,12 @@ abstract class MVController extends CommonController $this->session->setFlashdata(SESSION_NAMES['RETURN_URL'], current_url() . ($this->uri->getQuery() ? "?" . $this->uri->getQuery() : "")); return view( - $this->view_path . "/index", + $this->view_path . "index", ['viewDatas' => $this->getViewDatas()] ); } catch (\Exception $e) { log_message("error", $e->getMessage()); - return alert_CommonHelper($e->getMessage(), "back"); + return $this->helper->alert($e->getMessage(), "back"); // return redirect()->back()->with(SESSION_NAMES['RETURN_MSG'], $e->getMessage()); } } @@ -431,7 +430,7 @@ abstract class MVController extends CommonController // header("Cache-Control: must-revalidate"); // header("Pragma: public"); // header("Content-Length:" . filesize($full_path)); - // return $writer->save('php://output'); + // return $writer->save('php://output'); break; } return array($full_path, $file_name); @@ -473,7 +472,7 @@ abstract class MVController extends CommonController return $this->response->download($full_path, null)->setFileName($file_name); } catch (\Exception $e) { log_message("error", $e->getMessage()); - return alert_CommonHelper($e->getMessage(), "back"); + return $this->helper->alert($e->getMessage(), "back"); } } } diff --git a/app/Helpers/Cloudflare/AccountHelper.php b/app/Helpers/Cloudflare/AccountHelper.php new file mode 100644 index 0000000..cb66d86 --- /dev/null +++ b/app/Helpers/Cloudflare/AccountHelper.php @@ -0,0 +1,112 @@ + lang($viewDatas['class_path'] . '.label.' . $field) . ' 선택', + ...$viewDatas['field_options'][$field], + ], isset($viewDatas[AccountModel::PARENT]) ? $viewDatas[AccountModel::PARENT] : $value, [...$extras, 'class' => "select-field"]); + // // return form_multiselect($field, $field_options[$field], is_array($value) ? [...$value] : [$value], [$extras]); + // foreach ($viewDatas['field_options'][$field] as $key => $label) { + // $checkboxs[] = form_checkbox("{$field}[]", $key, in_array($key, explode(DEFAULTS["DELIMITER_ROLE"], $value))) . $label; + // } + // return implode(" ", $checkboxs); + break; + case AccountModel::TITLE: + $form = form_input($field, $value, [ + "placeholder" => "예)test@exmaple.com", + "style" => + "width:100%; ::placeholder{color:silver; opacity: 1;}", + "class" => "form-control", + (strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : "" + ]); + break; + case 'type': + $form = form_dropdown($field, [ + "" => lang($viewDatas['class_path'] . '.label.' . $field) . ' 선택', + ...$viewDatas['field_options'][$field], + ], $value, $extras); + break; + default: + $form = parent::getFieldForm($field, $value, $viewDatas, $extras); + break; + } + return $form; + } // + public function getFieldView(string $field, array $viewDatas, array $extras = []): string + { + $value = $viewDatas['entity']->$field ?: DEFAULTS['EMPTY']; + switch ($field) { + case AccountModel::PARENT: + if ($this->old_parent === $viewDatas['entity']->getParent()) { + $value = ""; + } else { + // dd($viewDatas['field_options']); + $value = anchor( + current_url() . "/reload/" . $viewDatas['entity']->getParent(), + ICONS["RELOAD"], + [ + "class" => "btn btn-sm btn-primary btn-circle", + "target" => "_self", + ] + ) . " " . + preg_replace("/(\w+)@(.+)/", "$1", $viewDatas['field_options'][$field][$value]) + . ""; + } + $this->old_parent = $viewDatas['entity']->getParent(); + break; + case AccountModel::TITLE: + $value = anchor( + base_url() . $viewDatas['uri_path'] . 'zone/reload/' . $viewDatas['entity']->getPK(), + ICONS["RELOAD"], + [ + "class" => "btn btn-sm btn-primary btn-circle", + "target" => "_self", + ] + ) . " " . + anchor( + base_url() . $viewDatas['uri_path'] . "zone?account_uid=" . $viewDatas['entity']->getPK(), + ICONS["FLAG"], + [ + "class" => "btn btn-sm btn-primary btn-circle", + "target" => "_self", + ] + ) . " {$value}"; + break; + default: + $value = parent::getFieldView($field, $viewDatas, $extras); + break; + } + return $value; + } // + public function getListButton(string $action, array $viewDatas, array $extras = []): string + { + switch ($action) { + case 'create': + $action = ""; + break; + case 'modify': + $action = $viewDatas['cnt']; + break; + case 'delete': + $action = ""; + break; + } + return $action; + } +} diff --git a/app/Helpers/Cloudflare/Account_helper.php b/app/Helpers/Cloudflare/Account_helper.php deleted file mode 100644 index c56e2b8..0000000 --- a/app/Helpers/Cloudflare/Account_helper.php +++ /dev/null @@ -1,163 +0,0 @@ - 'text-danger']; - break; - default: - if (strpos($viewDatas['field_rules'][$field], 'required') !== false) { - $extras = [...$extras, "class" => 'text-danger']; - } - break; - } - return form_label(lang("{$viewDatas['class_path']}.label.{$field}"), $field, $extras); -} -//header.php에서 getFieldForm_Helper사용 -function getFieldForm_AccountHelper(string $field, mixed $value, array $viewDatas, array $extras = []): string -{ - $value = $value ?: DEFAULTS['EMPTY']; - switch ($field) { - case AccountModel::PARENT: - $form = form_dropdown($field, [ - "" => lang($viewDatas['class_path'] . '.label.' . $field) . ' 선택', - ...$viewDatas['field_options'][$field] - ], isset($viewDatas[AccountModel::PARENT]) ? $viewDatas[AccountModel::PARENT] : $value, [...$extras, 'class' => "select-field"]); - // // return form_multiselect($field, $field_options[$field], is_array($value) ? [...$value] : [$value], [$extras]); - // foreach ($viewDatas['field_options'][$field] as $key => $label) { - // $checkboxs[] = form_checkbox("{$field}[]", $key, in_array($key, explode(DEFAULTS["DELIMITER_ROLE"], $value))) . $label; - // } - // return implode(" ", $checkboxs); - break; - case AccountModel::TITLE: - $form = form_input($field, $value, [ - "placeholder" => "예)test@exmaple.com", - "style" => - "width:100%; ::placeholder{color:silver; opacity: 1;}", - "class" => "form-control", - (strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : "" - ]); - break; - case 'type': - case 'status': - $form = form_dropdown($field, [ - "" => lang($viewDatas['class_path'] . '.label.' . $field) . ' 선택', - ...$viewDatas['field_options'][$field] - ], $value, $extras); - break; - case 'updated_at': - case 'created_at': - $form = form_input($field, $value, [ - "class" => "calener form-control", - (strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : "" - ]); - break; - default: - $form = form_input($field, $value, [ - "style" => "width:100%;", - "class" => "form-control", - (strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : "" - ]); - break; - } - return $form; -} // -function getFieldView_AccountHelper(string $field, array $viewDatas, array $extras = []) -{ - $value = $viewDatas['entity']->$field ?: DEFAULTS['EMPTY']; - switch ($field) { - case AccountModel::PARENT: - if ($viewDatas['old_auth'] === $viewDatas['entity']->getParent()) { - $value = ""; - } else { - // dd($viewDatas['field_options']); - $value = anchor( - current_url() . "/reload/" . $viewDatas['entity']->getParent(), - ICONS["RELOAD"], - [ - "class" => "btn btn-sm btn-primary btn-circle", - "target" => "_self" - ] - ) . " " . - preg_replace("/(\w+)@(.+)/", "$1", $viewDatas['field_options'][$field][$value]) - . ""; - } - break; - case AccountModel::TITLE: - $value = anchor( - base_url() . $viewDatas['view_root'] . 'zone/reload/' . $viewDatas['entity']->getPK(), - ICONS["RELOAD"], - [ - "class" => "btn btn-sm btn-primary btn-circle", - "target" => "_self" - ] - ) . " " . - anchor( - base_url() . $viewDatas['view_root'] . "zone?account_uid=" . $viewDatas['entity']->getPK(), - ICONS["FLAG"], - [ - "class" => "btn btn-sm btn-primary btn-circle", - "target" => "_self" - ] - ) . " {$value}"; - break; - case 'category_uid': - foreach (array_values($viewDatas['field_options'][$field]) as $category_2depths) { - foreach ($category_2depths as $key => $depth) { - if ($key == $depth) { - $value = $depth; - } - } - } - break; - case 'updated_at': - case 'created_at': - // $value = $value ? date("Y-m-d", strtotime($value)) : ""; - break; - default: - // if (in_array($field, $viewDatas['filter_fields']) && $value) { - // $extras["onChange"] = sprintf( - // 'location.href="%s/toggle/%s/%s?%s="+this.options[this.selectedIndex].value', - // current_url(), - // $viewDatas['entity']->getPK(), - // $field, - // $field - // ); - // $value = getFieldForm_AccountHelper($field, $viewDatas['entity']->$field, $viewDatas, $extras); - // } - break; - } - return $value; -} // -function getListLabel_AccountHelper(string $field, array $viewDatas, array $extras = []): string -{ - $label = getFieldLabel_AccountHelper($field, $viewDatas, $extras); - if (isset($viewDatas['order_field']) && $field == $viewDatas['order_field']) { - $label .= $viewDatas['order_value'] == 'ASC' ? ICONS["UP"] : ICONS["DOWN"]; - $order_value = $viewDatas['order_value'] == 'DESC' ? "ASC" : "DESC"; - $viewDatas['uri']->addQuery('order_field', $field); - $viewDatas['uri']->addQuery('order_value', $order_value); - $label = anchor((string)$viewDatas['uri'], $label); - } - return sprintf("%s", implode(" ", $extras), $label); -} -function getListButton_AccountHelper(string $action, array $viewDatas, array $extras = []): string -{ - switch ($action) { - case 'create': - $viewDatas['list_action_url'] = current_url() . '/' . $action . '?' . $viewDatas['uri']->getQuery(['only' => AccountModel::PARENT]); - $extras = ["class" => "btn btn-outline btn-primary btn-circle", "target" => "_self", ...$extras]; - $action = getListButtonLabel_CommonHelper($action, '입력', $viewDatas, $extras); - break; - case 'sync': - $action = $viewDatas['cnt']; - break; - case 'delete': - $action = ""; - break; - } - return $action; -} diff --git a/app/Helpers/Cloudflare/AuthHelper.php b/app/Helpers/Cloudflare/AuthHelper.php new file mode 100644 index 0000000..dc13521 --- /dev/null +++ b/app/Helpers/Cloudflare/AuthHelper.php @@ -0,0 +1,60 @@ + "예)test@example.com", + "style" => "width:100%; ::placeholder{color:silver; opacity: 1;}", + "class" => "form-control", + (strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : "" + ]); + break; + default: + $form = parent::getFieldForm($field, $value, $viewDatas, $extras); + break; + } + return $form; + } // + public function getFieldView(string $field, array $viewDatas, array $extras = []): string + { + $value = $viewDatas['entity']->$field ?: DEFAULTS['EMPTY']; + switch ($field) { + case AuthModel::TITLE: + $value = anchor( + base_url() . $viewDatas['uri_path'] . 'account/reload/' . $viewDatas['entity']->getPK(), + ICONS["RELOAD"], + [ + "class" => "btn btn-sm btn-primary btn-circle", + "target" => "_self" + ] + ) . " " . + anchor( + base_url() . $viewDatas['uri_path'] . "account?auth_uid=" . $viewDatas['entity']->getPK(), + ICONS["FLAG"], + [ + "class" => "btn btn-sm btn-primary btn-circle", + "target" => "_self" + ] + ) . " {$value}"; + break; + default: + $value = parent::getFieldView($field, $viewDatas, $extras); + break; + } + return $value; + } // +} diff --git a/app/Helpers/Cloudflare/Auth_helper.php b/app/Helpers/Cloudflare/Auth_helper.php deleted file mode 100644 index f80874b..0000000 --- a/app/Helpers/Cloudflare/Auth_helper.php +++ /dev/null @@ -1,141 +0,0 @@ - 'text-danger']; - } - break; - } - return form_label(lang("{$viewDatas['class_path']}.label.{$field}"), $field, $extras); -} -//header.php에서 getFieldForm_Helper사용 -function getFieldForm_AuthHelper(string $field, mixed $value, array $viewDatas, array $extras = []): string -{ - $value = $value ?: DEFAULTS['EMPTY']; - switch ($field) { - case AuthModel::TITLE: - $form = form_input($field, $value, [ - "placeholder" => "예)test@example.com", - "style" => "width:100%; ::placeholder{color:silver; opacity: 1;}", - "class" => "form-control", - (strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : "" - ]); - break; - case 'status': - $form = form_dropdown($field, [ - "" => lang($viewDatas['class_path'] . '.label.' . $field) . ' 선택', - ...$viewDatas['field_options'][$field] - ], $value, $extras); - break; - case 'updated_at': - case 'created_at': - $form = form_input($field, $value, [ - "class" => "calender form-control", - (strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : "" - ]); - break; - default: - $form = form_input($field, $value, [ - "style" => "width:100%;", - "class" => "form-control", - (strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : "" - ]); - break; - } - return $form; -} // -function getFieldView_AuthHelper(string $field, array $viewDatas, array $extras = []) -{ - $value = $viewDatas['entity']->$field ?: DEFAULTS['EMPTY']; - switch ($field) { - case AuthModel::TITLE: - $value = anchor( - base_url() . $viewDatas['view_root'] . 'account/reload/' . $viewDatas['entity']->getPK(), - ICONS["RELOAD"], - [ - "class" => "btn btn-sm btn-primary btn-circle", - "target" => "_self" - ] - ) . " " . - anchor( - base_url() . $viewDatas['view_root'] . "account?auth_uid=" . $viewDatas['entity']->getPK(), - ICONS["FLAG"], - [ - "class" => "btn btn-sm btn-primary btn-circle", - "target" => "_self" - ] - ) . " {$value}"; - break; - case 'category_uid': - foreach (array_values($viewDatas['field_options'][$field]) as $category_2depths) { - foreach ($category_2depths as $key => $depth) { - if ($key == $depth) { - $value = $depth; - } - } - } - break; - case 'updated_at': - case 'created_at': - $value = $value ? date("Y-m-d", strtotime($value)) : ""; - break; - default: - if (in_array($field, $viewDatas['filter_fields']) && $value) { - $extras["onChange"] = sprintf( - 'location.href="%s/toggle/%s/%s?%s="+this.options[this.selectedIndex].value', - current_url(), - $viewDatas['entity']->getPK(), - $field, - $field - ); - $value = getFieldForm_AuthHelper($field, $viewDatas['entity']->$field, $viewDatas, $extras); - } - break; - } - return $value; -} // -function getListLabel_AuthHelper(string $field, array $viewDatas, array $extras = []): string -{ - $label = getFieldLabel_AuthHelper($field, $viewDatas, $extras); - if (isset($viewDatas['order_field']) && $field == $viewDatas['order_field']) { - $label .= $viewDatas['order_value'] == 'ASC' ? ICONS["UP"] : ICONS["DOWN"]; - $order_value = $viewDatas['order_value'] == 'DESC' ? "ASC" : "DESC"; - $viewDatas['uri']->addQuery('order_field', $field); - $viewDatas['uri']->addQuery('order_value', $order_value); - $label = anchor((string) $viewDatas['uri'], $label); - } - return sprintf("%s", implode(" ", $extras), $label); -} -function getListButton_AuthHelper(string $action, array $viewDatas, array $extras = []): string -{ - switch ($action) { - case 'create': - $viewDatas['list_action_url'] = current_url() . '/' . $action; - $extras = ["class" => "btn btn-outline btn-primary btn-circle", "target" => "_self", ...$extras]; - $action = getListButtonLabel_CommonHelper($action, '입력', $viewDatas, $extras); - break; - case 'modify': - $pk = $viewDatas['entity']->getPK(); - $checkbox = form_checkbox([ - "id" => "checkbox_uid_{$pk}", - "name" => "batchjob_uids[]", - "value" => $pk, - "class" => "batchjobuids_checkboxs", - "checked" => in_array($pk, old("batchjob_uids", [])) - ]); - $viewDatas['list_action_url'] = current_url() . '/' . $action . '/' . $viewDatas['entity']->getPK(); - $action = $checkbox . getListButtonLabel_CommonHelper($action, $viewDatas['cnt'], $viewDatas, $extras); - break; - case 'delete': - $viewDatas['list_action_url'] = current_url() . '/' . $action . '/' . $viewDatas['entity']->getPK(); - $extras = ["class" => "btn btn-sm btn-danger btn-circle", "target" => "_self", ...$extras]; - $action = anchor($viewDatas['list_action_url'], ICONS['DELETE'], $extras); - break; - } - return $action; -} diff --git a/app/Helpers/Cloudflare/CloudflareHelper.php b/app/Helpers/Cloudflare/CloudflareHelper.php new file mode 100644 index 0000000..fe7680a --- /dev/null +++ b/app/Helpers/Cloudflare/CloudflareHelper.php @@ -0,0 +1,13 @@ + lang($viewDatas['class_path'] . '.label.' . $field) . ' 선택', + ...$viewDatas['field_options'][$field], + ], + isset($viewDatas[RecordModel::PARENT]) ? $viewDatas[RecordModel::PARENT] : $value, + [...$extras, 'class' => "select-field"] + ); + // // return form_multiselect($field, $field_options[$field], is_array($value) ? [...$value] : [$value], [$extras]); + // foreach ($viewDatas['field_options'][$field] as $key => $label) { + // $checkboxs[] = form_checkbox("{$field}[]", $key, in_array($key, explode(DEFAULTS["DELIMITER_ROLE"], $value))) . $label; + // } + // return implode(" ", $checkboxs); + break; + case RecordModel::TITLE: //host + $form = form_input($field, $value, [ + "placeholder" => "예)www.example.com", + "style" => + "width:200px; ::placeholder{color:silver; opacity: 1;}", + "class" => "form-control", + (strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : "" + ]); + break; + case 'hosts': + $form = form_textarea($field, html_entity_decode($value), [ + 'rows' => '5', + "class" => "form-control", + (strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : "" + ]); + break; + case 'content': + $form = form_input($field, $value, [ + "placeholder" => "예)123.123.123.123", + "style" => + "width:200px; ::placeholder{color:silver; opacity: 1;}", + "class" => "form-control", + (strpos($viewDatas['field_rules'][$field], 'required') !== false) ? "required" : "" + ]); + break; + case "type": + case "fixed": + case "locked": + case "proxied": + case "proxiable": + $form = form_dropdown($field, [ + "" => lang($viewDatas['class_path'] . '.label.' . $field) . ' 선택', + ...$viewDatas['field_options'][$field], + ], $value, $extras); + break; + default: + $form = parent::getFieldForm($field, $value, $viewDatas, $extras); + break; + } + return $form; + } // + public function getFieldView(string $field, array $viewDatas, array $extras = []): string + { + $value = $viewDatas['entity']->$field ?: DEFAULTS['EMPTY']; + switch ($field) { + case RecordModel::PARENT: + if ($this->old_parent === $viewDatas['entity']->getParent()) { + $value = ""; + } else { + $value = anchor( + current_url() . "/reload/" . $viewDatas['entity']->getParent(), + ICONS["RELOAD"], + [ + "class" => "btn btn-sm btn-primary btn-circle", + "target" => "_self", + ] + ) . " " . "{$viewDatas['field_options'][$field][$value]}"; + } + $this->old_parent = $viewDatas['entity']->getParent(); + break; + case RecordModel::TITLE: + $url = sprintf("%s/toggle/%s/fixed?fixed=%s", current_url(), $viewDatas['entity']->getPK(), $viewDatas['entity']->fixed == 'on' ? "off" : "on"); + $value = sprintf("%s%s", $viewDatas['entity']->fixed == 'on' ? "" . ICONS['LOCK'] . "" : "", $value); + $value = anchor($url, $value, ["target" => "_self"]); + break; + default: + $value = parent::getFieldView($field, $viewDatas, $extras); + break; + } + return $value; + } // + + public function getListRowColor($entity): string + { + return $entity->locked != 'on' ? 'class="table-danger"' : ""; + } + public function getListLabel(string $field, array $viewDatas, array $extras = []): string + { + $label = parent::getListLabel($field, $viewDatas, $extras); + switch ($field) { + case RecordModel::PARENT: + $label .= "