cfmgrv4 init...2
This commit is contained in:
parent
f685c863c2
commit
cb004fdb55
@ -89,9 +89,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
|
final protected function create_form_procedure(): RedirectResponse|string
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
@ -190,7 +188,7 @@ abstract class MVController extends CommonController
|
|||||||
try {
|
try {
|
||||||
helper(['form']);
|
helper(['form']);
|
||||||
$this->modify_process($uid);
|
$this->modify_process($uid);
|
||||||
$this->message = "{$this->class_name} : 수정작업이 완료되었습니다.";
|
$this->message = "{$this->class_name} : 생성작업이 완료되었습니다.";
|
||||||
$this->getModel()->transCommit();
|
$this->getModel()->transCommit();
|
||||||
log_message("notice", __FUNCTION__ . $this->message);
|
log_message("notice", __FUNCTION__ . $this->message);
|
||||||
return view(
|
return view(
|
||||||
@ -214,10 +212,10 @@ abstract class MVController extends CommonController
|
|||||||
try {
|
try {
|
||||||
//변경할 UIDS
|
//변경할 UIDS
|
||||||
$uids = $this->request->getVar('batchjob_uids');
|
$uids = $this->request->getVar('batchjob_uids');
|
||||||
if ($uids === null || !is_array($uids) || count($uids) === 0) {
|
if (!$uids) {
|
||||||
throw new \Exception("적용할 리스트를 선택하셔야합니다.");
|
throw new \Exception("적용할 리스트를 선택하셔야합니다.");
|
||||||
}
|
}
|
||||||
foreach ($uids as $uid) {
|
foreach (explode(",", $uids) as $uid) {
|
||||||
$this->modify_process($uid);
|
$this->modify_process($uid);
|
||||||
}
|
}
|
||||||
$this->message = "{$this->class_name} : 일괄처리작업이 완료되었습니다.";
|
$this->message = "{$this->class_name} : 일괄처리작업이 완료되었습니다.";
|
||||||
@ -351,7 +349,7 @@ abstract class MVController extends CommonController
|
|||||||
$this->order_value = $this->request->getVar('order_value') ?: DEFAULTS['EMPTY'];
|
$this->order_value = $this->request->getVar('order_value') ?: DEFAULTS['EMPTY'];
|
||||||
$this->getModel()->setList_OrderBy(
|
$this->getModel()->setList_OrderBy(
|
||||||
$this->order_field !== DEFAULTS['EMPTY'] &&
|
$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) {
|
if ($this->page) {
|
||||||
$this->getModel()->limit(
|
$this->getModel()->limit(
|
||||||
|
|||||||
@ -17,19 +17,14 @@ class AccountHelper extends CommonHelper
|
|||||||
$value = $value ?: DEFAULTS['EMPTY'];
|
$value = $value ?: DEFAULTS['EMPTY'];
|
||||||
switch ($field) {
|
switch ($field) {
|
||||||
case AccountModel::PARENT:
|
case AccountModel::PARENT:
|
||||||
$extraClass = isset($extras['class']) ? $extras['class'] . ' select-field' : 'select-field';
|
$extra_class = isset($extras['class']) ? $extras['class'] . ' select-field' : 'select-field';
|
||||||
$form = form_dropdown($field, [
|
$form = form_dropdown($field, [
|
||||||
"" => lang($viewDatas['class_path'] . '.label.' . $field) . ' 선택',
|
"" => lang($viewDatas['class_path'] . '.label.' . $field) . ' 선택',
|
||||||
...$viewDatas['field_options'][$field]
|
...$viewDatas['field_options'][$field]
|
||||||
], isset($viewDatas[$field]) ? $viewDatas[$field] : $value, ['class' => $extraClass, ...array_diff_key($extras, ['class' => ''])]);
|
], isset($viewDatas[$field]) ? $viewDatas[$field] : $value, ['class' => $extra_class, ...array_diff_key($extras, ['class' => ''])]);
|
||||||
break;
|
break;
|
||||||
case AccountModel::TITLE:
|
case AccountModel::TITLE:
|
||||||
$form = form_input($field, $value, [
|
$form = form_input($field, $value, ["placeholder" => "예)test@exmaple.com", ...$extras]);
|
||||||
"placeholder" => "예)test@exmaple.com",
|
|
||||||
"style" =>
|
|
||||||
"width:100%; ::placeholder{color:silver; opacity: 1;}",
|
|
||||||
...$extras
|
|
||||||
]);
|
|
||||||
break;
|
break;
|
||||||
case 'type':
|
case 'type':
|
||||||
$form = form_dropdown($field, [
|
$form = form_dropdown($field, [
|
||||||
|
|||||||
@ -16,11 +16,7 @@ class AuthHelper extends CommonHelper
|
|||||||
$value = $value ?: DEFAULTS['EMPTY'];
|
$value = $value ?: DEFAULTS['EMPTY'];
|
||||||
switch ($field) {
|
switch ($field) {
|
||||||
case AuthModel::TITLE:
|
case AuthModel::TITLE:
|
||||||
$form = form_input($field, $value, [
|
$form = form_input($field, $value, ["placeholder" => "예)test@example.com", ...$extras]);
|
||||||
"placeholder" => "예)test@example.com",
|
|
||||||
"style" => "width:100%; ::placeholder{color:silver; opacity: 1;}",
|
|
||||||
...$extras
|
|
||||||
]);
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
$form = parent::getFieldForm($field, $value, $viewDatas, $extras);
|
$form = parent::getFieldForm($field, $value, $viewDatas, $extras);
|
||||||
|
|||||||
@ -17,19 +17,14 @@ class RecordHelper extends CommonHelper
|
|||||||
$value = $value ?: DEFAULTS['EMPTY'];
|
$value = $value ?: DEFAULTS['EMPTY'];
|
||||||
switch ($field) {
|
switch ($field) {
|
||||||
case RecordModel::PARENT:
|
case RecordModel::PARENT:
|
||||||
$extraClass = isset($extras['class']) ? $extras['class'] . ' select-field' : 'select-field';
|
$extra_class = isset($extras['class']) ? $extras['class'] . ' select-field' : 'select-field';
|
||||||
$form = form_dropdown($field, [
|
$form = form_dropdown($field, [
|
||||||
"" => lang($viewDatas['class_path'] . '.label.' . $field) . ' 선택',
|
"" => lang($viewDatas['class_path'] . '.label.' . $field) . ' 선택',
|
||||||
...$viewDatas['field_options'][$field]
|
...$viewDatas['field_options'][$field]
|
||||||
], isset($viewDatas[$field]) ? $viewDatas[$field] : $value, ['class' => $extraClass, ...array_diff_key($extras, ['class' => ''])]);
|
], isset($viewDatas[$field]) ? $viewDatas[$field] : $value, ['class' => $extra_class, ...array_diff_key($extras, ['class' => ''])]);
|
||||||
break;
|
break;
|
||||||
case RecordModel::TITLE: //host
|
case RecordModel::TITLE: //host
|
||||||
$form = form_input($field, $value, [
|
$form = form_input($field, $value, $extras);
|
||||||
"placeholder" => "예)www.example.com",
|
|
||||||
"style" =>
|
|
||||||
"width:200px; ::placeholder{color:silver; opacity: 1;}",
|
|
||||||
...$extras
|
|
||||||
]);
|
|
||||||
break;
|
break;
|
||||||
case 'hosts':
|
case 'hosts':
|
||||||
$form = form_textarea($field, html_entity_decode($value), [
|
$form = form_textarea($field, html_entity_decode($value), [
|
||||||
@ -38,12 +33,7 @@ class RecordHelper extends CommonHelper
|
|||||||
]);
|
]);
|
||||||
break;
|
break;
|
||||||
case 'content':
|
case 'content':
|
||||||
$form = form_input($field, $value, [
|
$form = form_input($field, $value, ["placeholder" => "예)123.123.123.123", ...$extras]);
|
||||||
"placeholder" => "예)123.123.123.123",
|
|
||||||
"style" =>
|
|
||||||
"width:200px; ::placeholder{color:silver; opacity: 1;}",
|
|
||||||
...$extras
|
|
||||||
]);
|
|
||||||
break;
|
break;
|
||||||
case "type":
|
case "type":
|
||||||
case "fixed":
|
case "fixed":
|
||||||
|
|||||||
@ -17,19 +17,14 @@ class ZoneHelper extends CommonHelper
|
|||||||
$value = $value ?: DEFAULTS['EMPTY'];
|
$value = $value ?: DEFAULTS['EMPTY'];
|
||||||
switch ($field) {
|
switch ($field) {
|
||||||
case ZoneModel::PARENT:
|
case ZoneModel::PARENT:
|
||||||
$extraClass = isset($extras['class']) ? $extras['class'] . ' select-field' : 'select-field';
|
$extra_class = isset($extras['class']) ? $extras['class'] . ' select-field' : 'select-field';
|
||||||
$form = form_dropdown($field, [
|
$form = form_dropdown($field, [
|
||||||
"" => lang($viewDatas['class_path'] . '.label.' . $field) . ' 선택',
|
"" => lang($viewDatas['class_path'] . '.label.' . $field) . ' 선택',
|
||||||
...$viewDatas['field_options'][$field]
|
...$viewDatas['field_options'][$field]
|
||||||
], isset($viewDatas[$field]) ? $viewDatas[$field] : $value, ['class' => $extraClass, ...array_diff_key($extras, ['class' => ''])]);
|
], isset($viewDatas[$field]) ? $viewDatas[$field] : $value, ['class' => $extra_class, ...array_diff_key($extras, ['class' => ''])]);
|
||||||
break;
|
break;
|
||||||
case ZoneModel::TITLE:
|
case ZoneModel::TITLE:
|
||||||
$form = form_input($field, $value, [
|
$form = form_input($field, $value, ["placeholder" => "예)exampel.com", ...$extras]);
|
||||||
"placeholder" => "예)exmaple.com",
|
|
||||||
"style" =>
|
|
||||||
"width:100%; ::placeholder{color:silver; opacity: 1;}",
|
|
||||||
...$extras
|
|
||||||
]);
|
|
||||||
break;
|
break;
|
||||||
case 'domains':
|
case 'domains':
|
||||||
$form = form_textarea($field, $value, ['rows' => '5', ...$extras]);
|
$form = form_textarea($field, $value, ['rows' => '5', ...$extras]);
|
||||||
@ -41,12 +36,7 @@ class ZoneHelper extends CommonHelper
|
|||||||
]);
|
]);
|
||||||
break;
|
break;
|
||||||
case 'content':
|
case 'content':
|
||||||
$form = form_input($field, $value, [
|
$form = form_input($field, $value, ["placeholder" => "예)123.123.123.123", ...$extras]);
|
||||||
"placeholder" => "예)123.123.123.123",
|
|
||||||
"style" =>
|
|
||||||
"width:200px; ::placeholder{color:silver; opacity: 1;}",
|
|
||||||
...$extras
|
|
||||||
]);
|
|
||||||
break;
|
break;
|
||||||
case "development_mode":
|
case "development_mode":
|
||||||
case "ipv6":
|
case "ipv6":
|
||||||
|
|||||||
@ -4,9 +4,7 @@ namespace App\Helpers;
|
|||||||
|
|
||||||
abstract class CommonHelper
|
abstract class CommonHelper
|
||||||
{
|
{
|
||||||
protected function __construct()
|
protected 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);
|
||||||
@ -156,10 +154,11 @@ abstract class CommonHelper
|
|||||||
break;
|
break;
|
||||||
case 'updated_at':
|
case 'updated_at':
|
||||||
case 'created_at':
|
case 'created_at':
|
||||||
$form = form_input($field, $value, ["class" => "calender", ...$extras]);
|
$extra_class = isset($extras['class']) ? $extras['class'] . ' calender' : 'calender';
|
||||||
|
$form = form_input($field, $value, ['class' => $extra_class, ...array_diff_key($extras, ['class' => ''])]);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
$form = form_input($field, $value, $extras);
|
$form = form_input($field, $value, ["autocomplete" => $field, ...$extras]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return $form;
|
return $form;
|
||||||
|
|||||||
@ -15,21 +15,10 @@ class MapurlHelper extends CommonHelper
|
|||||||
$value = $value ?: DEFAULTS['EMPTY'];
|
$value = $value ?: DEFAULTS['EMPTY'];
|
||||||
switch ($field) {
|
switch ($field) {
|
||||||
case MapurlModel::TITLE:
|
case MapurlModel::TITLE:
|
||||||
$form = form_input($field, $value, [
|
$form = form_input($field, $value, ["placeholder" => "예)http://old.example.com", ...$extras]);
|
||||||
"placeholder" => "예)http://old.example.com",
|
|
||||||
"style" => "width:100%; ::placeholder{color:silver; opacity: 1;}",
|
|
||||||
"class" => "form-control",
|
|
||||||
"required" => ""
|
|
||||||
]);
|
|
||||||
break;
|
break;
|
||||||
case 'newurl':
|
case 'newurl':
|
||||||
$form = form_input($field, $value, [
|
$form = form_input($field, $value, ["placeholder" => "예)http://new.example.com", ...$extras]);
|
||||||
"placeholder" => "예)https://new.example.com",
|
|
||||||
"style" =>
|
|
||||||
"width:100%; ::placeholder{color:silver; opacity: 1;}",
|
|
||||||
"class" => "form-control",
|
|
||||||
"required" => ""
|
|
||||||
]);
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
$form = parent::getFieldForm($field, $value, $viewDatas, $extras);
|
$form = parent::getFieldForm($field, $value, $viewDatas, $extras);
|
||||||
|
|||||||
@ -16,39 +16,28 @@ class UserHelper extends CommonHelper
|
|||||||
switch ($field) {
|
switch ($field) {
|
||||||
case 'id':
|
case 'id':
|
||||||
case UserModel::TITLE:
|
case UserModel::TITLE:
|
||||||
$form = form_input($field, $value, [
|
$form = form_input($field, $value, $extras);
|
||||||
"placeholder" => "예)",
|
|
||||||
"style" => "width:100%; ::placeholder{color:silver; opacity: 1;}",
|
|
||||||
...$extras
|
|
||||||
]);
|
|
||||||
break;
|
break;
|
||||||
case 'passwd':
|
case 'passwd':
|
||||||
case 'confirmpassword':
|
case 'confirmpassword':
|
||||||
$form = form_password($field, "", [
|
$form = form_password($field, "", ["autocomplete" => $field, ...$extras]);
|
||||||
"style" => "width:100%;",
|
|
||||||
...$extras
|
|
||||||
]);
|
|
||||||
break;
|
break;
|
||||||
case 'email':
|
case 'email':
|
||||||
$form = form_input($field, $value, [
|
$form = form_input($field, $value, ["placeholder" => "예)test@example.com", ...$extras]);
|
||||||
"placeholder" => "예)test@example.com",
|
|
||||||
"style" => "width:100%; ::placeholder{color:silver; opacity: 1;}",
|
|
||||||
...$extras
|
|
||||||
]);
|
|
||||||
break;
|
break;
|
||||||
case 'mobile':
|
case 'mobile':
|
||||||
$form = form_input($field, $value, [
|
$form = form_input($field, $value, ["placeholder" => "예)010-0010-0010", ...$extras]);
|
||||||
"placeholder" => "예)010-0010-0010",
|
|
||||||
"style" => "width:100%; ::placeholder{color:silver; opacity: 1;}",
|
|
||||||
...$extras
|
|
||||||
]);
|
|
||||||
break;
|
break;
|
||||||
case 'role':
|
case 'role':
|
||||||
if (in_array($viewDatas['action'], ['create', 'modify'])) {
|
if (in_array($viewDatas['action'], ['create', 'modify'])) {
|
||||||
$forms = [];
|
$forms = [];
|
||||||
foreach ($viewDatas['field_options'][$field] as $key => $label) {
|
foreach ($viewDatas['field_options'][$field] as $key => $label) {
|
||||||
$values = is_array($value) ? $value : explode(DEFAULTS["DELIMITER_ROLE"], $value);
|
$values = is_array($value) ? $value : explode(DEFAULTS["DELIMITER_ROLE"], $value);
|
||||||
$forms[] = form_checkbox($field . "[]", $key, in_array($key, $values)) . $label;
|
$forms[] = form_checkbox(
|
||||||
|
"{$field}[]",
|
||||||
|
$key,
|
||||||
|
in_array($key, $values)
|
||||||
|
) . $label;
|
||||||
}
|
}
|
||||||
$form = implode(" ", $forms);
|
$form = implode(" ", $forms);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -11,7 +11,7 @@
|
|||||||
<th nowrap class="text-end"><?= $viewDatas['helper']->getFieldLabel($field, $viewDatas) ?></th>
|
<th nowrap class="text-end"><?= $viewDatas['helper']->getFieldLabel($field, $viewDatas) ?></th>
|
||||||
<td nowrap class="text-start">
|
<td nowrap class="text-start">
|
||||||
<?php
|
<?php
|
||||||
$extras = ["class" => 'form-control'];
|
$extras = ["class" => "form-control"];
|
||||||
if (strpos($viewDatas['field_rules'][$field], 'required') !== false) {
|
if (strpos($viewDatas['field_rules'][$field], 'required') !== false) {
|
||||||
$extras = ["required" => "", ...$extras];
|
$extras = ["required" => "", ...$extras];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,7 +10,6 @@
|
|||||||
<link href="/css/common/resizeTable.css" media="screen" rel="stylesheet" type="text/css" />
|
<link href="/css/common/resizeTable.css" media="screen" rel="stylesheet" type="text/css" />
|
||||||
<div class="index_body">
|
<div class="index_body">
|
||||||
<?= $this->include("templates/{$viewDatas['layout']}/index_content_top"); ?>
|
<?= $this->include("templates/{$viewDatas['layout']}/index_content_top"); ?>
|
||||||
<?= form_open(current_url() . '/batchjob', ['id' => 'batchjob_form', 'method' => "post"]) ?>
|
|
||||||
<table class="index_table data table table-bordered table-hover table-striped" data-rtc-resizable-table="reisze_table">
|
<table class="index_table data table table-bordered table-hover table-striped" data-rtc-resizable-table="reisze_table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
@ -42,10 +41,9 @@
|
|||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<?= $this->include("templates/{$viewDatas['layout']}/index_content_batchjob"); ?>
|
<?= $this->include("templates/{$viewDatas['layout']}/index_content_batchjob"); ?>
|
||||||
<?= form_close() ?>
|
|
||||||
</div>
|
</div>
|
||||||
<div class=" index_pagination"><?= $viewDatas['pagination'] ?></div>
|
<div class=" index_pagination"><?= $viewDatas['pagination'] ?></div>
|
||||||
<div class="index_bottom"><?= $this->include("templates/{$viewDatas['layout']}/modal_form"); ?></div>
|
<div class="index_bottom"><?= $this->include("templates/common/modal_iframe"); ?></div>
|
||||||
<script type="text/javascript" src="/js/common/resizeTable.js"></script>
|
<script type="text/javascript" src="/js/common/resizeTable.js"></script>
|
||||||
<script type="text/javascript" src="/js/<?= $viewDatas['layout'] ?>/index.js"></script>
|
<script type="text/javascript" src="/js/<?= $viewDatas['layout'] ?>/index.js"></script>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
<?= $this->section('content') ?>
|
<?= $this->section('content') ?>
|
||||||
<div id="container" class="content">
|
<div id="container" class="content">
|
||||||
<link href="/css/<?= $viewDatas['layout'] ?>/form.css" media="screen" rel="stylesheet" type="text/css" />
|
<link href="/css/<?= $viewDatas['layout'] ?>/form.css" media="screen" rel="stylesheet" type="text/css" />
|
||||||
<?= form_open(current_url(), $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
|
<?= form_open(current_url(), ['id' => 'action_form', ...$viewDatas['forms']['attributes']], $viewDatas['forms']['hiddens']) ?>
|
||||||
<div class="action_form">
|
<div class="action_form">
|
||||||
<table class="table table-bordered">
|
<table class="table table-bordered">
|
||||||
<?php $cnt = 1 ?>
|
<?php $cnt = 1 ?>
|
||||||
@ -24,7 +24,7 @@
|
|||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="<?= $cnt * 2 ?>" class="text-center">
|
<td colspan="<?= $cnt * 2 ?>" class="text-center">
|
||||||
<?= form_submit('', '수정', array("class" => "btn btn-outline btn-primary")); ?>
|
<?= form_submit("", '수정', ["class" => "btn btn-outline btn-primary"]) ?>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@ -1,4 +1,6 @@
|
|||||||
<div class="index_batchjob">
|
<div class="index_batchjob">
|
||||||
|
<?= form_open(current_url() . '/batchjob', ['id' => 'batchjob_form', 'method' => "post"]) ?>
|
||||||
|
<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>
|
||||||
<?php foreach ($viewDatas['batchjob_fields'] as $field): ?>
|
<?php foreach ($viewDatas['batchjob_fields'] as $field): ?>
|
||||||
@ -7,6 +9,7 @@
|
|||||||
<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>
|
||||||
</ul>
|
</ul>
|
||||||
|
<?= form_close() ?>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
function submitBatchJob() {
|
function submitBatchJob() {
|
||||||
@ -23,11 +26,16 @@
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
//적용받는 uids가 한개라도 선택되었다면 true
|
//적용받는 uids가 한개라도 선택되었다면 true
|
||||||
|
var batchjobUids = [];
|
||||||
var checkboxes = document.querySelectorAll('input[name="batchjob_uids[]"]:checked');
|
var checkboxes = document.querySelectorAll('input[name="batchjob_uids[]"]:checked');
|
||||||
if (checkboxes.length === 0) {
|
checkboxes.forEach(function(checkbox) {
|
||||||
|
batchjobUids.push(checkbox.value);
|
||||||
|
});
|
||||||
|
if (batchjobUids.length === 0) {
|
||||||
alert('적용할 리스트를 선택하셔야합니다.');
|
alert('적용할 리스트를 선택하셔야합니다.');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
document.getElementById('batchjob_uids').value = batchjobUids.join(',');
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
@ -6,84 +6,8 @@
|
|||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<span class="nav-link active" aria-current="page" data-bs-toggle="modal" data-bs-target="#DNSModal" style="cursor:pointer;">Cloudflare DNS</span>
|
<span class="nav-link active" aria-current="page" data-bs-toggle="modal" data-bs-target="#index_header_dns" style="cursor:pointer;">Cloudflare DNS</span>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="modal fade" id="DNSModal" tabindex="-1" aria-labelledby="CloudflareDNSModal" aria-hidden="true">
|
<?= $this->include("templates/{$viewDatas['layout']}/index_header/dns"); ?>
|
||||||
<div class="modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h1 class="modal-title fs-5" id="CloudflareDNSModal">Cloudflare DNS</h1>
|
|
||||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<style>
|
|
||||||
table.cloudflare {
|
|
||||||
width: 100%;
|
|
||||||
border: thin solid;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.cloudflare th {
|
|
||||||
border: thin solid;
|
|
||||||
text-align: center;
|
|
||||||
padding: 0px 5px 0px 5px;
|
|
||||||
background-color: #e8e9ea;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.cloudflare td {
|
|
||||||
border: thin solid;
|
|
||||||
text-align: center;
|
|
||||||
padding: 0px 5px 0px 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.cloudflare td.dnsname:hover {
|
|
||||||
cursor: pointer;
|
|
||||||
background-color: #fde9bf;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<script>
|
|
||||||
function copyToClipboard(element, domain) {
|
|
||||||
navigator.clipboard.writeText(domain);
|
|
||||||
element.style.backgroundColor = '#fde9bf';
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<table class="cloudflare">
|
|
||||||
<tr>
|
|
||||||
<th>cloudprime001@idcjp.jp(영,숫자)</th>
|
|
||||||
<td class="dnsname" onclick="copyToClipboard(this,'felicity.ns.cloudflare.com')">felicity.ns.cloudflare.com</td>
|
|
||||||
<td class="dnsname" onclick="copyToClipboard(this,'tara.ns.cloudflare.com')">tara.ns.cloudflare.com</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>cloudjp002@idcjp.jp(ㄱ~ㅅ)</th>
|
|
||||||
<td class="dnsname" onclick="copyToClipboard(this,'aida.ns.cloudflare.com');">aida.ns.cloudflare.com</td>
|
|
||||||
<td class="dnsname" onclick="copyToClipboard(this,'kurt.ns.cloudflare.com');">kurt.ns.cloudflare.com</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>jpcf003@gmail.com(ㅇ~ㅎ)</th>
|
|
||||||
<td class="dnsname" onclick="copyToClipboard(this,'natasha.ns.cloudflare.com');">natasha.ns.cloudflare.com</td>
|
|
||||||
<td class="dnsname" onclick="copyToClipboard(this,'plato.ns.cloudflare.com');">plato.ns.cloudflare.com</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>cloudwin001@idcjp.jp(영,숫자)</th>
|
|
||||||
<td class="dnsname" onclick="copyToClipboard(this,'alina.ns.cloudflare.com');">alina.ns.cloudflare.com</td>
|
|
||||||
<td class="dnsname" onclick="copyToClipboard(this,'rick.ns.cloudflare.com');">rick.ns.cloudflare.com</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>cloudwin002@idcjp.jp(ㄱ~ㅅ)</th>
|
|
||||||
<td class="dnsname" onclick="copyToClipboard(this,'hope.ns.cloudflare.com');">hope.ns.cloudflare.com</td>
|
|
||||||
<td class="dnsname" onclick="copyToClipboard(this,'piotr.ns.cloudflare.com');">piotr.ns.cloudflare.com</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>cloudwin003@idcjp.jp(ㅇ~ㅎ)</th>
|
|
||||||
<td class="dnsname" onclick="copyToClipboard(this,'tani.ns.cloudflare.com');">tani.ns.cloudflare.com</td>
|
|
||||||
<td class="dnsname" onclick="copyToClipboard(this,'woz.ns.cloudflare.com');">woz.ns.cloudflare.com</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
|
||||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
79
app/Views/templates/admin/index_header/dns.php
Normal file
79
app/Views/templates/admin/index_header/dns.php
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
<div id="index_header_dns" class="index_header_modal modal fade" tabindex="-1" aria-labelledby="index_header_dns_label" aria-hidden="true">
|
||||||
|
<div class="modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable"> <!-- modal-lg는 모달 크기를 크게 설정 -->
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title" id="index_header_dns_label">
|
||||||
|
<h4> <?= ICONS['DESKTOP'] ?> Cloudflare DNS</h4>
|
||||||
|
</h5>
|
||||||
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<style>
|
||||||
|
table.cloudflare {
|
||||||
|
width: 100%;
|
||||||
|
border: thin solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.cloudflare th {
|
||||||
|
border: thin solid;
|
||||||
|
text-align: center;
|
||||||
|
padding: 0px 5px 0px 5px;
|
||||||
|
background-color: #e8e9ea;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.cloudflare td {
|
||||||
|
border: thin solid;
|
||||||
|
text-align: center;
|
||||||
|
padding: 0px 5px 0px 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.cloudflare td.dnsname:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
background-color: #fde9bf;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script>
|
||||||
|
function copyToClipboard(element, domain) {
|
||||||
|
navigator.clipboard.writeText(domain);
|
||||||
|
element.style.backgroundColor = '#fde9bf';
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<table class="cloudflare">
|
||||||
|
<tr>
|
||||||
|
<th>cloudprime001@idcjp.jp(영,숫자)</th>
|
||||||
|
<td class="dnsname" onclick="copyToClipboard(this,'felicity.ns.cloudflare.com')">felicity.ns.cloudflare.com</td>
|
||||||
|
<td class="dnsname" onclick="copyToClipboard(this,'tara.ns.cloudflare.com')">tara.ns.cloudflare.com</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>cloudjp002@idcjp.jp(ㄱ~ㅅ)</th>
|
||||||
|
<td class="dnsname" onclick="copyToClipboard(this,'aida.ns.cloudflare.com');">aida.ns.cloudflare.com</td>
|
||||||
|
<td class="dnsname" onclick="copyToClipboard(this,'kurt.ns.cloudflare.com');">kurt.ns.cloudflare.com</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>jpcf003@gmail.com(ㅇ~ㅎ)</th>
|
||||||
|
<td class="dnsname" onclick="copyToClipboard(this,'natasha.ns.cloudflare.com');">natasha.ns.cloudflare.com</td>
|
||||||
|
<td class="dnsname" onclick="copyToClipboard(this,'plato.ns.cloudflare.com');">plato.ns.cloudflare.com</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>cloudwin001@idcjp.jp(영,숫자)</th>
|
||||||
|
<td class="dnsname" onclick="copyToClipboard(this,'alina.ns.cloudflare.com');">alina.ns.cloudflare.com</td>
|
||||||
|
<td class="dnsname" onclick="copyToClipboard(this,'rick.ns.cloudflare.com');">rick.ns.cloudflare.com</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>cloudwin002@idcjp.jp(ㄱ~ㅅ)</th>
|
||||||
|
<td class="dnsname" onclick="copyToClipboard(this,'hope.ns.cloudflare.com');">hope.ns.cloudflare.com</td>
|
||||||
|
<td class="dnsname" onclick="copyToClipboard(this,'piotr.ns.cloudflare.com');">piotr.ns.cloudflare.com</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>cloudwin003@idcjp.jp(ㅇ~ㅎ)</th>
|
||||||
|
<td class="dnsname" onclick="copyToClipboard(this,'tani.ns.cloudflare.com');">tani.ns.cloudflare.com</td>
|
||||||
|
<td class="dnsname" onclick="copyToClipboard(this,'woz.ns.cloudflare.com');">woz.ns.cloudflare.com</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@ -1,20 +1,20 @@
|
|||||||
<!-- 처음 호출할때 사용법
|
<!-- 처음 호출할때 사용법
|
||||||
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#iframeInModal" data-src="시작URL">시작</button>
|
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#index_action_form" data-src="시작URL">시작</button>
|
||||||
-->
|
-->
|
||||||
<!-- 동적으로 ifram src 바꾸고싶을때
|
<!-- 동적으로 ifram src 바꾸고싶을때
|
||||||
<span data-bs-toggle="modal" data-bs-target="#iframeInModal" data-src="바꾸고싶은URL" style="cursor:pointer;">바꾸기</span>
|
<span data-bs-toggle="modal" data-bs-target="#index_action_form" data-src="바꾸고싶은URL" style="cursor:pointer;">바꾸기</span>
|
||||||
-->
|
-->
|
||||||
<div id="index_action_form" class="index_action_form modal fade" tabindex="-1" aria-labelledby="iframeModalLabel" aria-hidden="true">
|
<div id="index_action_form" class="index_action_form modal fade" tabindex="-1" aria-labelledby="iframe_modal_label" aria-hidden="true">
|
||||||
<div class="modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable"> <!-- modal-lg는 모달 크기를 크게 설정 -->
|
<div class="modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable"> <!-- modal-lg는 모달 크기를 크게 설정 -->
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title" id="iframeModalLabel">
|
<h5 class="modal-title" id="iframe_modal_label">
|
||||||
<h4> <?= ICONS['DESKTOP'] ?> <?= $viewDatas['title'] ?> </h4>
|
<h4> <?= ICONS['DESKTOP'] ?> <?= $viewDatas['title'] ?> </h4>
|
||||||
</h5>
|
</h5>
|
||||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<iframe id="iframeInModal" src="about:blank" width="100%" frameborder="0" allowfullscreen></iframe>
|
<iframe id="form-container" src="about:blank" width="100%" frameborder="0" allowfullscreen></iframe>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
|
||||||
@ -25,7 +25,7 @@
|
|||||||
<!-- Modal이 열릴 때 iframe의 src를 설정 -->
|
<!-- Modal이 열릴 때 iframe의 src를 설정 -->
|
||||||
<script>
|
<script>
|
||||||
function resizeIframe() {
|
function resizeIframe() {
|
||||||
var iframe = document.getElementById('iframeInModal');
|
var iframe = document.getElementById('form-container');
|
||||||
iframe.style.height = iframe.contentWindow.document.body.scrollHeight + 'px';
|
iframe.style.height = iframe.contentWindow.document.body.scrollHeight + 'px';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,7 +45,7 @@
|
|||||||
index_action_form.addEventListener('show.bs.modal', function(event) {
|
index_action_form.addEventListener('show.bs.modal', function(event) {
|
||||||
var button = event.relatedTarget;
|
var button = event.relatedTarget;
|
||||||
var iframeSrc = button.getAttribute('data-src');
|
var iframeSrc = button.getAttribute('data-src');
|
||||||
var iframe = document.getElementById('iframeInModal');
|
var iframe = document.getElementById('form-container');
|
||||||
iframe.src = iframeSrc;
|
iframe.src = iframeSrc;
|
||||||
// iframe이 로드된 후 높이를 조정하는 이벤트 리스너 추가
|
// iframe이 로드된 후 높이를 조정하는 이벤트 리스너 추가
|
||||||
iframe.onload = function() {
|
iframe.onload = function() {
|
||||||
@ -63,7 +63,7 @@
|
|||||||
|
|
||||||
// 모달이 닫힐 때 iframe src를 초기화하여 종료 처리
|
// 모달이 닫힐 때 iframe src를 초기화하여 종료 처리
|
||||||
index_action_form.addEventListener('hidden.bs.modal', function() {
|
index_action_form.addEventListener('hidden.bs.modal', function() {
|
||||||
var iframe = document.getElementById('iframeInModal');
|
var iframe = document.getElementById('form-container');
|
||||||
iframe.src = "about:blank"; // 모달 닫힐 때 iframe 초기화
|
iframe.src = "about:blank"; // 모달 닫힐 때 iframe 초기화
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
46
app/Views/templates/common/modal_target.php
Normal file
46
app/Views/templates/common/modal_target.php
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
<!--
|
||||||
|
처음 호출할때 사용법
|
||||||
|
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#index_action_form" data-src="시작URL">시작</button>
|
||||||
|
번호를 누르면 바꾸고싶은URL로 이동
|
||||||
|
<label data-bs-toggle="modal" data-bs-target="#index_action_form" data-src="바꾸고싶은URL">번호</label>
|
||||||
|
-->
|
||||||
|
<div id="index_action_form" class="index_action_form modal fade" tabindex="-1" aria-labelledby="target_modal_label" aria-hidden="true">
|
||||||
|
<div class="modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable"> <!-- modal-lg는 모달 크기를 크게 설정 -->
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title" id="target_modal_label">
|
||||||
|
<h4> <?= ICONS['DESKTOP'] ?> <?= $viewDatas['title'] ?> </h4>
|
||||||
|
</h5>
|
||||||
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
|
</div>
|
||||||
|
<div id="form-container" class="modal-body"></div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Modal이 열릴 때 iframe의 src를 설정 -->
|
||||||
|
<script>
|
||||||
|
// 모달이 열릴 때 이벤트 리스너 추가
|
||||||
|
document.getElementById('index_action_form').addEventListener('show.bs.modal', function(event) {
|
||||||
|
// 모달을 트리거한 버튼 요소 가져오기
|
||||||
|
var button = event.relatedTarget;
|
||||||
|
// data-src 속성에서 URL 가져오기
|
||||||
|
var url = button.getAttribute('data-src');
|
||||||
|
// URL로 loadActionForm 함수 호출
|
||||||
|
if (url) {
|
||||||
|
fetch(url)
|
||||||
|
.then(response => response.text())
|
||||||
|
.then(data => {
|
||||||
|
document.getElementById('form-container').innerHTML = data;
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.error('콘텐츠 로딩 오류:', error);
|
||||||
|
alert('콘텐츠를 로드하는 중 오류가 발생했습니다.');
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
alert('data-src 속성이 없습니다.');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
@ -1,61 +0,0 @@
|
|||||||
<!-- 처음 호출할때 사용법
|
|
||||||
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#iframeInModal" data-src="시작URL">시작</button>
|
|
||||||
-->
|
|
||||||
<!-- 동적으로 ifram src 바꾸고싶을때
|
|
||||||
<span data-bs-toggle="modal" data-bs-target="#iframeInModal" data-src="바꾸고싶은URL" style="cursor:pointer;">바꾸기</span>
|
|
||||||
-->
|
|
||||||
<div id="index_action_form" class="index_action_form modal fade" tabindex="-1" aria-labelledby="iframeModalLabel" aria-hidden="true">
|
|
||||||
<div class="modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable"> <!-- modal-lg는 모달 크기를 크게 설정 -->
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h5 class="modal-title" id="iframeModalLabel">
|
|
||||||
<h4> <?= ICONS['DESKTOP'] ?> <?= $viewDatas['title'] ?> </h4>
|
|
||||||
</h5>
|
|
||||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<iframe id="iframeInModal" src="about:blank" width="100%" height="400" frameborder="0" allowfullscreen></iframe>
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
|
||||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- Modal이 열릴 때 iframe의 src를 설정 -->
|
|
||||||
<script>
|
|
||||||
function resizeIframe() {
|
|
||||||
var iframe = document.getElementById('iframeInModal');
|
|
||||||
iframe.style.height = iframe.contentWindow.document.body.scrollHeight + 'px';
|
|
||||||
}
|
|
||||||
|
|
||||||
function closeBootstrapModal() {
|
|
||||||
var modalElement = document.getElementById('index_action_form'); // 모달의 실제 DOM 요소 가져오기
|
|
||||||
var modalInstance = bootstrap.Modal.getInstance(modalElement); // 모달 인스턴스 가져오기
|
|
||||||
if (modalInstance) {
|
|
||||||
// 먼저 모달을 호출한 페이지를 리로드
|
|
||||||
window.location.reload();
|
|
||||||
modalInstance.hide(); // 모달 닫기 (hide() 메서드 사용)
|
|
||||||
} else {
|
|
||||||
console.error("Modal instance not found.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var index_action_form = document.getElementById('index_action_form');
|
|
||||||
index_action_form.addEventListener('show.bs.modal', function(event) {
|
|
||||||
// 버튼이 클릭된 이벤트를 가져옴
|
|
||||||
var button = event.relatedTarget;
|
|
||||||
// console.log(button.getAttribute('data-src'));
|
|
||||||
var iframeSrc = button.getAttribute('data-src'); // data-src 값을 가져옴
|
|
||||||
var iframe = document.getElementById('iframeInModal');
|
|
||||||
// console.log(iframe.getAttribute('src'));
|
|
||||||
iframe.src = iframeSrc; // 가져온 data-src 값을 iframe에 설정
|
|
||||||
// iframe.onload = resizeIframe; // iframe이 로드된 후 높이를 조정
|
|
||||||
});
|
|
||||||
|
|
||||||
// 모달이 닫힐 때 iframe src를 초기화하여 종료 처리
|
|
||||||
index_action_form.addEventListener('hidden.bs.modal', function() {
|
|
||||||
var iframe = document.getElementById('iframeInModal');
|
|
||||||
iframe.src = "about:blank"; // 모달 닫힐 때 iframe 초기화
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
Loading…
Reference in New Issue
Block a user