cfmgrv4 init...3

This commit is contained in:
최준흠 2024-10-16 13:13:35 +09:00
parent ed8ded5f7b
commit 3a69193a9d
10 changed files with 103 additions and 7 deletions

View File

@ -40,6 +40,7 @@ $routes->group('admin/mapurl', ['namespace' => 'App\Controllers\Admin', 'filter'
$routes->get('delete/(:num)', 'MapurlController::delete/$1'); $routes->get('delete/(:num)', 'MapurlController::delete/$1');
$routes->get('toggle/(:num)/(:any)', 'MapurlController::toggle/$1/$2'); $routes->get('toggle/(:num)/(:any)', 'MapurlController::toggle/$1/$2');
$routes->post('batchjob', 'MapurlController::batcjob'); $routes->post('batchjob', 'MapurlController::batcjob');
$routes->post('batchjob_delete', 'MapurlController::batcjob_delete');
$routes->get('download/(:alpha)', 'MapurlController::download/$1'); $routes->get('download/(:alpha)', 'MapurlController::download/$1');
}); });
$routes->group('admin/user', ['namespace' => 'App\Controllers\Admin', 'filter' => 'authFilter:master'], function ($routes) { $routes->group('admin/user', ['namespace' => 'App\Controllers\Admin', 'filter' => 'authFilter:master'], function ($routes) {
@ -52,6 +53,7 @@ $routes->group('admin/user', ['namespace' => 'App\Controllers\Admin', 'filter' =
$routes->get('delete/(:num)', 'UserController::delete/$1'); $routes->get('delete/(:num)', 'UserController::delete/$1');
$routes->get('toggle/(:num)/(:any)', 'UserController::toggle/$1/$2'); $routes->get('toggle/(:num)/(:any)', 'UserController::toggle/$1/$2');
$routes->post('batchjob', 'UserController::batcjob'); $routes->post('batchjob', 'UserController::batcjob');
$routes->post('batchjob_delete', 'UserController::batcjob_delete');
$routes->get('download/(:alpha)', 'UserController::download/$1'); $routes->get('download/(:alpha)', 'UserController::download/$1');
}); });
$routes->group('admin/usersns', ['namespace' => 'App\Controllers\Admin', 'filter' => 'authFilter:master'], function ($routes) { $routes->group('admin/usersns', ['namespace' => 'App\Controllers\Admin', 'filter' => 'authFilter:master'], function ($routes) {
@ -59,6 +61,7 @@ $routes->group('admin/usersns', ['namespace' => 'App\Controllers\Admin', 'filter
$routes->get('delete/(:num)', 'UserSNSController::delete/$1'); $routes->get('delete/(:num)', 'UserSNSController::delete/$1');
$routes->get('toggle/(:num)/(:any)', 'UserSNSController::toggle/$1/$2'); $routes->get('toggle/(:num)/(:any)', 'UserSNSController::toggle/$1/$2');
$routes->post('batchjob', 'UserSNSController::batcjob'); $routes->post('batchjob', 'UserSNSController::batcjob');
$routes->post('batchjob_delete', 'UserSNSController::batcjob_delete');
$routes->get('download/(:alpha)', 'UserSNSController::download/$1'); $routes->get('download/(:alpha)', 'UserSNSController::download/$1');
}); });
@ -72,6 +75,7 @@ $routes->group('admin/cloudflare', ['namespace' => 'App\Controllers\Admin\Cloudf
$routes->get('delete/(:num)', 'AuthController::delete/$1'); $routes->get('delete/(:num)', 'AuthController::delete/$1');
$routes->get('toggle/(:num)/(:any)', 'AuthController::toggle/$1/$2'); $routes->get('toggle/(:num)/(:any)', 'AuthController::toggle/$1/$2');
$routes->post('batchjob', 'AuthController::batcjob'); $routes->post('batchjob', 'AuthController::batcjob');
$routes->post('batchjob_delete', 'AuthController::batcjob_delete');
$routes->get('download/(:alpha)', 'AccountController::download/$1'); $routes->get('download/(:alpha)', 'AccountController::download/$1');
}); });
$routes->group('account', function ($routes) { $routes->group('account', function ($routes) {
@ -88,6 +92,7 @@ $routes->group('admin/cloudflare', ['namespace' => 'App\Controllers\Admin\Cloudf
$routes->get('sync/(:alphanum)', 'ZoneController::sync/$1'); $routes->get('sync/(:alphanum)', 'ZoneController::sync/$1');
$routes->get('toggle/(:alphanum)/(:any)', 'ZoneController::toggle/$1/$2'); $routes->get('toggle/(:alphanum)/(:any)', 'ZoneController::toggle/$1/$2');
$routes->post('batchjob', 'ZoneController::batcjob'); $routes->post('batchjob', 'ZoneController::batcjob');
$routes->post('batchjob_delete', 'ZoneController::batcjob_delete');
$routes->get('reload/(:alphanum)', 'ZoneController::reload/$1'); $routes->get('reload/(:alphanum)', 'ZoneController::reload/$1');
$routes->get('download/(:alpha)', 'ZoneController::download/$1'); $routes->get('download/(:alpha)', 'ZoneController::download/$1');
}); });
@ -100,6 +105,7 @@ $routes->group('admin/cloudflare', ['namespace' => 'App\Controllers\Admin\Cloudf
$routes->get('sync/(:alphanum)', 'RecordController::sync/$1'); $routes->get('sync/(:alphanum)', 'RecordController::sync/$1');
$routes->get('toggle/(:alphanum)/(:any)', 'RecordController::toggle/$1/$2'); $routes->get('toggle/(:alphanum)/(:any)', 'RecordController::toggle/$1/$2');
$routes->post('batchjob', 'RecordController::batcjob'); $routes->post('batchjob', 'RecordController::batcjob');
$routes->post('batchjob_delete', 'RecordController::batcjob_delete');
$routes->get('reload/(:alphanum)', 'RecordController::reload/$1'); $routes->get('reload/(:alphanum)', 'RecordController::reload/$1');
$routes->get('download/(:alpha)', 'RecordController::download/$1'); $routes->get('download/(:alpha)', 'RecordController::download/$1');
}); });

View File

@ -148,7 +148,7 @@ class RecordController extends CloudflareController
if ($this->entity === null) { if ($this->entity === null) {
throw new \Exception("{$uid} 정보를 찾을수 없습니다."); throw new \Exception("{$uid} 정보를 찾을수 없습니다.");
} }
//fixed 필드가 있고 값이 변경되었을때 //fixed 필드가 있고 값이 변경되었을때(toggle에서 fixed만 설정시사용)
if (in_array('fixed', $this->fields)) { if (in_array('fixed', $this->fields)) {
// dd($this->formDatas, $this->entity->fixed); // dd($this->formDatas, $this->entity->fixed);
if (isset($this->formDatas['fixed']) && $this->formDatas['fixed'] !== $this->entity->fixed) { if (isset($this->formDatas['fixed']) && $this->formDatas['fixed'] !== $this->entity->fixed) {
@ -165,7 +165,14 @@ class RecordController extends CloudflareController
public function batcjob(): RedirectResponse public function batcjob(): RedirectResponse
{ {
$this->action = __FUNCTION__; $this->action = __FUNCTION__;
$this->fields = ['proxied']; //데이터가 있는경우 Field만 처리하기위해
$fields = [];
foreach (['content', 'proxied'] as $field) {
if ($this->request->getVar($field)) {
$fields[$field] = $field;
}
}
$this->fields = $fields;
$this->field_rules = $this->getModel()->getFieldRules($this->action, $this->fields); $this->field_rules = $this->getModel()->getFieldRules($this->action, $this->fields);
return $this->batcjob_procedure(); return $this->batcjob_procedure();
} }

View File

@ -202,7 +202,14 @@ class ZoneController extends CloudflareController
public function batcjob(): RedirectResponse public function batcjob(): RedirectResponse
{ {
$this->action = __FUNCTION__; $this->action = __FUNCTION__;
$this->fields = ['development_mode', 'ipv6', 'security_level']; //데이터가 있는경우 Field만 처리하기위해
$fields = [];
foreach (['development_mode', 'ipv6', 'security_level'] as $field) {
if ($this->request->getVar($field)) {
$fields[$field] = $field;
}
}
$this->fields = $fields;
$this->field_rules = $this->getModel()->getFieldRules($this->action, $this->fields); $this->field_rules = $this->getModel()->getFieldRules($this->action, $this->fields);
return $this->batcjob_procedure(); return $this->batcjob_procedure();
} }

View File

@ -304,6 +304,32 @@ abstract class MVController extends CommonController
return redirect()->back()->with('error', __FUNCTION__ . " 실패하였습니다.\n" . $e->getMessage()); return redirect()->back()->with('error', __FUNCTION__ . " 실패하였습니다.\n" . $e->getMessage());
} }
} }
//일괄삭제
final public function batcjob_delete(): RedirectResponse|string
{
//Transaction Start
$this->getModel()->transStart();
try {
//변경할 UIDS
$uids = $this->request->getVar('batchjob_uids');
if (!$uids) {
throw new \Exception("적용할 리스트를 선택하셔야합니다.");
}
foreach (explode(",", $uids) as $uid) {
$this->delete_process($uid);
}
$this->getModel()->transCommit();
$this->message = "{$this->class_name} : 일괄삭제처리작업이 완료되었습니다.";
log_message("notice", $this->message);
// 이전 URL로 리다이렉트
return redirect()->to($this->myauth->popPreviousUrl())->with('error', $this->message);
} catch (\Exception $e) {
//Transaction Rollback
$this->getModel()->transRollback();
log_message("error", $e->getMessage());
return redirect()->back()->with('error', __FUNCTION__ . " 실패하였습니다.\n" . $e->getMessage());
}
}
// 리스트 // 리스트
protected function list_condition_process(): void protected function list_condition_process(): void
{ {

View File

@ -104,6 +104,12 @@ class AccountHelper extends CommonHelper
case 'batchjob': case 'batchjob':
$action = ""; $action = "";
break; break;
case 'batchjob_delete':
$action = "";
break;
default:
$action = parent::getListButton($action, $viewDatas, $extras);
break;
} }
return $action; return $action;
} }

View File

@ -52,4 +52,16 @@ class AuthHelper extends CommonHelper
} }
return $value; return $value;
} // } //
public function getListButton(string $action, array $viewDatas, array $extras = []): string
{
switch ($action) {
case 'batchjob_delete':
$action = "";
break;
default:
$action = parent::getListButton($action, $viewDatas, $extras);
break;
}
return $action;
}
} }

View File

@ -4,9 +4,7 @@ namespace App\Helpers;
class CommonHelper class CommonHelper
{ {
public function __construct() public function __construct() {}
{
}
final public function getRandomString($length = 10, $characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789") final public function getRandomString($length = 10, $characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
{ {
return substr(str_shuffle($characters), 0, $length); return substr(str_shuffle($characters), 0, $length);
@ -265,10 +263,18 @@ class CommonHelper
break; break;
case 'batchjob': case 'batchjob':
$action = form_submit("batchjob_submit", '일괄처리', [ $action = form_submit("batchjob_submit", '일괄처리', [
"formaction" => current_url() . '/batchjob',
"class" => "btn btn-outline btn-warning", "class" => "btn btn-outline btn-warning",
"onclick" => "return submitBatchJob()" "onclick" => "return submitBatchJob()"
]); ]);
break; break;
case 'batchjob_delete':
$action = form_submit("batchjob_submit", '일괄삭제', [
"formaction" => current_url() . '/batchjob_delete',
"class" => "btn btn-outline btn-danger",
"onclick" => "return submitBatchJobDelete()"
]);
break;
} }
return $action; return $action;
} }

View File

@ -54,6 +54,12 @@ class UserSNSHelper extends CommonHelper
case 'batchjob': case 'batchjob':
$action = ""; $action = "";
break; break;
case 'batchjob_delete':
$action = "";
break;
default:
$action = parent::getListButton($action, $viewDatas, $extras);
break;
} }
return $action; return $action;
} }

View File

@ -1,5 +1,5 @@
<div class="index_batchjob"> <div class="index_batchjob">
<?= form_open(current_url() . '/batchjob', ['id' => 'batchjob_form', 'method' => "post"]) ?> <?= form_open("", ['id' => 'batchjob_form', 'method' => "post"]) ?>
<input type="hidden" name="batchjob_uids" id="batchjob_uids" value=""> <input type="hidden" name="batchjob_uids" id="batchjob_uids" value="">
<ul class="nav justify-content-center"> <ul class="nav justify-content-center">
<li class="nav-item"><?= form_checkbox(array("id" => "batchjobuids_checkbox")) ?>ALL</li> <li class="nav-item"><?= form_checkbox(array("id" => "batchjobuids_checkbox")) ?>ALL</li>
@ -8,6 +8,7 @@
<?php endforeach ?> <?php endforeach ?>
<li class="nav-item"><?= $viewDatas['helper']->getListButton('batchjob', $viewDatas) ?></li> <li class="nav-item"><?= $viewDatas['helper']->getListButton('batchjob', $viewDatas) ?></li>
<li class="nav-item"><?= $viewDatas['helper']->getListButton('create', $viewDatas) ?></li> <li class="nav-item"><?= $viewDatas['helper']->getListButton('create', $viewDatas) ?></li>
<li class="nav-item"><?= $viewDatas['helper']->getListButton('batchjob_delete', $viewDatas) ?></li>
</ul> </ul>
<?= form_close() ?> <?= form_close() ?>
</div> </div>
@ -38,4 +39,18 @@
document.getElementById('batchjob_uids').value = batchjobUids.join(','); document.getElementById('batchjob_uids').value = batchjobUids.join(',');
return true; return true;
} }
function submitBatchJobDelete() {
var batchjobUids = [];
var checkboxes = document.querySelectorAll('input[name="batchjob_uids[]"]:checked');
checkboxes.forEach(function(checkbox) {
batchjobUids.push(checkbox.value);
});
if (batchjobUids.length === 0) {
alert('적용할 리스트를 선택하셔야합니다.');
return false;
}
document.getElementById('batchjob_uids').value = batchjobUids.join(',');
return true;
}
</script> </script>

View File

@ -99,6 +99,11 @@ div.index_batchjob {
/* border: 1px solid red; */ /* border: 1px solid red; */
} }
div.index_batchjob ul.nav li.nav-item {
margin-left: 10px;
/* border: 1px solid red; */
}
div.index_pagination { div.index_pagination {
margin-top: 20px; margin-top: 20px;
/* border: 1px solid red; */ /* border: 1px solid red; */