From f896a478bd31c43bb5ce11e2658bfc630f40b2fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=B5=9C=EC=A4=80=ED=9D=A0?= Date: Mon, 14 Oct 2024 19:55:54 +0900 Subject: [PATCH] cfmgrv4 init...2 --- .../Admin/Cloudflare/RecordController.php | 13 ++++++---- .../Admin/Cloudflare/ZoneController.php | 17 +++++++++---- app/Controllers/MVController.php | 24 ++++++++++++------- app/Helpers/Cloudflare/AccountHelper.php | 7 ++++-- app/Helpers/Cloudflare/RecordHelper.php | 7 ++++-- app/Helpers/Cloudflare/ZoneHelper.php | 7 ++++-- app/Views/templates/common/modal_fetch.php | 13 ++++++++++ public/js/admin/form.js | 11 +++++---- 8 files changed, 72 insertions(+), 27 deletions(-) diff --git a/app/Controllers/Admin/Cloudflare/RecordController.php b/app/Controllers/Admin/Cloudflare/RecordController.php index 42e4982..d7bf947 100644 --- a/app/Controllers/Admin/Cloudflare/RecordController.php +++ b/app/Controllers/Admin/Cloudflare/RecordController.php @@ -59,7 +59,7 @@ class RecordController extends CloudflareController switch ($field) { case 'hosts': $formDatas[$field] = explode("\n", $this->request->getVar($field)); - if (!is_array($this->formDatas[$field]) || !count($this->formDatas[$field])) { + if (!is_array($formDatas[$field]) || !count($formDatas[$field])) { throw new \Exception("호스트명이 정의되지 않았습니다."); } break; @@ -108,8 +108,13 @@ class RecordController extends CloudflareController } //Socket처리 foreach ($this->formDatas['hosts'] as $host) { - $entity = $this->getMyLibrary()->create($host, $this->formDatas['type'], $this->formDatas['content'], $this->formDatas['proxied']); - log_message("debug", "Record:{$entity->getTitle()} 생성 작업을 완료하였습니다."); + $this->entity = $this->getMyLibrary()->create( + $host, + $this->formDatas['type'], + $this->formDatas['content'], + $this->formDatas['proxied'] + ); + log_message("debug", message: "Record:{$this->entity->getTitle()} 생성 작업을 완료하였습니다."); } } public function create(mixed $zone_uid = false): RedirectResponse|string @@ -176,7 +181,7 @@ class RecordController extends CloudflareController throw new \Exception("{$uid} 정보를 찾을수 없습니다."); } //부모데이터정의 - $this->_zone_entity = $this->getZoneModel()->getEntityByPK($this->formDatas[$this->getModel()::PARENT]); + $this->_zone_entity = $this->getZoneModel()->getEntityByPK($this->entity->getParent()); //Cloudflare 삭제 $this->entity = $this->getMyLibrary()->delete($this->entity); } diff --git a/app/Controllers/Admin/Cloudflare/ZoneController.php b/app/Controllers/Admin/Cloudflare/ZoneController.php index 2df9d07..d8274e6 100644 --- a/app/Controllers/Admin/Cloudflare/ZoneController.php +++ b/app/Controllers/Admin/Cloudflare/ZoneController.php @@ -138,19 +138,26 @@ class ZoneController extends CloudflareController //Socket처리 //Zone생성 $cnt = 1; - $zone_entitys = []; + $this->zone_entitys = []; foreach ($this->formDatas['domains'] as $domain) { $entity = $this->getMyLibrary()->create($domain); log_message("debug", "Zone:{$entity->getTitle()} 작업을 완료하였습니다."); - $zone_entitys[] = $entity; + $this->zone_entitys[] = $entity; $cnt++; } //Record생성 - foreach ($zone_entitys as $zone_entity) { + $this->record_entitys = []; + foreach ($this->zone_entitys as $zone_entity) { $record = new Record($zone_entity); foreach ($this->formDatas['hosts'] as $host) { - $entity = $record->create($host, $this->formDatas['type'], $this->formDatas['content'], $this->formDatas['proxied']); + $entity = $record->create( + $host, + $this->formDatas['type'], + $this->formDatas['content'], + $this->formDatas['proxied'] + ); log_message("debug", "Record:{$entity->getTitle()} 작업을 완료하였습니다."); + $this->record_entitys[] = $entity; } } } @@ -210,7 +217,7 @@ class ZoneController extends CloudflareController throw new \Exception("{$uid} 정보를 찾을수 없습니다."); } //부모데이터정의 - $this->_account_entity = $this->getAccountModel()->getEntityByPK($this->formDatas[$this->getModel()::PARENT]); + $this->_account_entity = $this->getAccountModel()->getEntityByPK($this->entity->getParent()); //Cloudflare 삭제 $this->entity = $this->getMyLibrary()->delete($this->entity); } diff --git a/app/Controllers/MVController.php b/app/Controllers/MVController.php index be3f9a6..e18a42a 100644 --- a/app/Controllers/MVController.php +++ b/app/Controllers/MVController.php @@ -110,6 +110,13 @@ abstract class MVController extends CommonController $this->formDatas = $this->getFormDatas(); $this->entity = $this->getModel()->create(formDatas: $this->formDatas); } + protected function create_result(): string + { + return view( + $this->view_path . "view", + data: ['viewDatas' => $this->getViewDatas()] + ); + } final protected function create_procedure(): RedirectResponse|string { //Transaction Start @@ -119,10 +126,7 @@ abstract class MVController extends CommonController $this->create_process(); $this->getModel()->transCommit(); $this->message = "{$this->class_name} : 생성작업이 완료되었습니다."; - return view( - $this->view_path . "view", - data: ['viewDatas' => $this->getViewDatas()] - ); + return $this->create_result(); } catch (\Exception $e) { //Transaction Rollback $this->getModel()->transRollback(); @@ -175,6 +179,13 @@ abstract class MVController extends CommonController } $this->entity = $this->getModel()->modify($this->entity, $this->formDatas); } + protected function modify_result(): string + { + return view( + $this->view_path . "view", + data: ['viewDatas' => $this->getViewDatas()] + ); + } final protected function modify_procedure(string $uid): RedirectResponse|string { //Transaction Start @@ -184,10 +195,7 @@ abstract class MVController extends CommonController $this->modify_process($uid); $this->getModel()->transCommit(); $this->message = "{$this->class_name} : 수정작업이 완료되었습니다."; - return view( - $this->view_path . "view", - data: ['viewDatas' => $this->getViewDatas()] - ); + return $this->modify_result(); } catch (\Exception $e) { //Transaction Rollback $this->getModel()->transRollback(); diff --git a/app/Helpers/Cloudflare/AccountHelper.php b/app/Helpers/Cloudflare/AccountHelper.php index 44d7bab..97b8e31 100644 --- a/app/Helpers/Cloudflare/AccountHelper.php +++ b/app/Helpers/Cloudflare/AccountHelper.php @@ -17,10 +17,13 @@ class AccountHelper extends CommonHelper $value = $value ?: DEFAULTS['EMPTY']; switch ($field) { case AccountModel::PARENT: - $extra_class = isset($extras['class']) ? $extras['class'] . ' select-field' : 'select-field'; + $extra_class = isset($extras['class']) ? 'select-field ' . $extras['class'] : 'select-field'; $form = form_dropdown($field, [ "" => lang($viewDatas['class_path'] . '.label.' . $field) . ' 선택', - ] + $viewDatas['field_options'][$field], $value, ['class' => $extra_class, ...array_diff_key($extras, ['class' => ''])]); + ] + $viewDatas['field_options'][$field], $value, [ + 'class' => $extra_class, + ...array_diff_key($extras, ['class' => '']) + ]); break; case AccountModel::TITLE: $form = form_input($field, $value, ["placeholder" => "예)test@exmaple.com", ...$extras]); diff --git a/app/Helpers/Cloudflare/RecordHelper.php b/app/Helpers/Cloudflare/RecordHelper.php index 6f5edb5..13e2ff4 100644 --- a/app/Helpers/Cloudflare/RecordHelper.php +++ b/app/Helpers/Cloudflare/RecordHelper.php @@ -17,10 +17,13 @@ class RecordHelper extends CommonHelper $value = $value ?: DEFAULTS['EMPTY']; switch ($field) { case RecordModel::PARENT: - $extra_class = isset($extras['class']) ? $extras['class'] . ' select-field' : 'select-field'; + $extra_class = isset($extras['class']) ? 'select-field ' . $extras['class'] : 'select-field'; $form = form_dropdown($field, [ "" => lang($viewDatas['class_path'] . '.label.' . $field) . ' 선택', - ] + $viewDatas['field_options'][$field], $value, ['class' => $extra_class, ...array_diff_key($extras, ['class' => ''])]); + ] + $viewDatas['field_options'][$field], $value, [ + 'class' => $extra_class, + ...array_diff_key($extras, ['class' => '']) + ]); break; case RecordModel::TITLE: //host $form = form_input($field, $value, $extras); diff --git a/app/Helpers/Cloudflare/ZoneHelper.php b/app/Helpers/Cloudflare/ZoneHelper.php index 3dbfb79..01ef77b 100644 --- a/app/Helpers/Cloudflare/ZoneHelper.php +++ b/app/Helpers/Cloudflare/ZoneHelper.php @@ -17,10 +17,13 @@ class ZoneHelper extends CommonHelper $value = $value ?: DEFAULTS['EMPTY']; switch ($field) { case ZoneModel::PARENT: - $extra_class = isset($extras['class']) ? $extras['class'] . ' select-field' : 'select-field'; + $extra_class = isset($extras['class']) ? 'select-field ' . $extras['class'] : 'select-field'; $form = form_dropdown($field, [ "" => lang($viewDatas['class_path'] . '.label.' . $field) . ' 선택', - ] + $viewDatas['field_options'][$field], $value, ['class' => $extra_class, ...array_diff_key($extras, ['class' => ''])]); + ] + $viewDatas['field_options'][$field], $value, [ + 'class' => $extra_class, + ...array_diff_key($extras, ['class' => '']) + ]); break; case ZoneModel::TITLE: $form = form_input($field, $value, ["placeholder" => "예)exampel.com", ...$extras]); diff --git a/app/Views/templates/common/modal_fetch.php b/app/Views/templates/common/modal_fetch.php index 3ae55ad..a8a48b5 100644 --- a/app/Views/templates/common/modal_fetch.php +++ b/app/Views/templates/common/modal_fetch.php @@ -37,6 +37,19 @@ } const content = await response.text(); modalBody.innerHTML = content; + // 새로 추가된 스크립트 실행 + const scripts = modalBody.getElementsByTagName('script'); + for (let script of scripts) { + if (script.src) { + // 외부 스크립트 로드 + const newScript = document.createElement('script'); + newScript.src = script.src; + document.body.appendChild(newScript); + } else { + // 인라인 스크립트 실행 + eval(script.innerHTML); + } + } setupFormSubmission(); } catch (error) { console.error('콘텐츠 로드 중 오류 발생:', error); diff --git a/public/js/admin/form.js b/public/js/admin/form.js index ea76567..d0216bf 100644 --- a/public/js/admin/form.js +++ b/public/js/admin/form.js @@ -20,9 +20,12 @@ $(document).ready(function () { }); //class가 select-field인 SelectBox용 $(".select-field").select2({ - theme: "classic", - width: 'style', - dropdownAutoWidth: true + theme: "bootstrap-5", + dropdownParent: $('#index_action_form'), + templateResult: function(data) { + if (!data.id) return data.text; + return $('').text(data.text); + } }); // text editor 초기화 //참고: https://phppot.com/menu/php/learn-php/ @@ -58,4 +61,4 @@ $(document).ready(function () { xhr.send(formData); }, }); -}); \ No newline at end of file +});