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('toggle/(:num)/(:any)', 'MapurlController::toggle/$1/$2');
$routes->post('batchjob', 'MapurlController::batcjob');
$routes->post('batchjob_delete', 'MapurlController::batcjob_delete');
$routes->get('download/(:alpha)', 'MapurlController::download/$1');
});
$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('toggle/(:num)/(:any)', 'UserController::toggle/$1/$2');
$routes->post('batchjob', 'UserController::batcjob');
$routes->post('batchjob_delete', 'UserController::batcjob_delete');
$routes->get('download/(:alpha)', 'UserController::download/$1');
});
$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('toggle/(:num)/(:any)', 'UserSNSController::toggle/$1/$2');
$routes->post('batchjob', 'UserSNSController::batcjob');
$routes->post('batchjob_delete', 'UserSNSController::batcjob_delete');
$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('toggle/(:num)/(:any)', 'AuthController::toggle/$1/$2');
$routes->post('batchjob', 'AuthController::batcjob');
$routes->post('batchjob_delete', 'AuthController::batcjob_delete');
$routes->get('download/(:alpha)', 'AccountController::download/$1');
});
$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('toggle/(:alphanum)/(:any)', 'ZoneController::toggle/$1/$2');
$routes->post('batchjob', 'ZoneController::batcjob');
$routes->post('batchjob_delete', 'ZoneController::batcjob_delete');
$routes->get('reload/(:alphanum)', 'ZoneController::reload/$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('toggle/(:alphanum)/(:any)', 'RecordController::toggle/$1/$2');
$routes->post('batchjob', 'RecordController::batcjob');
$routes->post('batchjob_delete', 'RecordController::batcjob_delete');
$routes->get('reload/(:alphanum)', 'RecordController::reload/$1');
$routes->get('download/(:alpha)', 'RecordController::download/$1');
});

View File

@ -148,7 +148,7 @@ class RecordController extends CloudflareController
if ($this->entity === null) {
throw new \Exception("{$uid} 정보를 찾을수 없습니다.");
}
//fixed 필드가 있고 값이 변경되었을때
//fixed 필드가 있고 값이 변경되었을때(toggle에서 fixed만 설정시사용)
if (in_array('fixed', $this->fields)) {
// dd($this->formDatas, $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
{
$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);
return $this->batcjob_procedure();
}

View File

@ -202,7 +202,14 @@ class ZoneController extends CloudflareController
public function batcjob(): RedirectResponse
{
$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);
return $this->batcjob_procedure();
}

View File

@ -304,6 +304,32 @@ abstract class MVController extends CommonController
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
{

View File

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

View File

@ -52,4 +52,16 @@ class AuthHelper extends CommonHelper
}
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
{
public function __construct()
{
}
public function __construct() {}
final public function getRandomString($length = 10, $characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
{
return substr(str_shuffle($characters), 0, $length);
@ -265,10 +263,18 @@ class CommonHelper
break;
case 'batchjob':
$action = form_submit("batchjob_submit", '일괄처리', [
"formaction" => current_url() . '/batchjob',
"class" => "btn btn-outline btn-warning",
"onclick" => "return submitBatchJob()"
]);
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;
}

View File

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

View File

@ -1,5 +1,5 @@
<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="">
<ul class="nav justify-content-center">
<li class="nav-item"><?= form_checkbox(array("id" => "batchjobuids_checkbox")) ?>ALL</li>
@ -8,6 +8,7 @@
<?php endforeach ?>
<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('batchjob_delete', $viewDatas) ?></li>
</ul>
<?= form_close() ?>
</div>
@ -38,4 +39,18 @@
document.getElementById('batchjob_uids').value = batchjobUids.join(',');
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>

View File

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