dbms_init...1
This commit is contained in:
parent
9fe08371ef
commit
869ed66b1e
@ -19,7 +19,7 @@ class AuthHelper extends CommonHelper
|
||||
switch ($field) {
|
||||
case 'id':
|
||||
case 'passwd':
|
||||
$form = form_password($field, "", ["autocomplete" => $field, ...$extras]);
|
||||
$form = form_password($field, "", ["id" => $field, ...$extras]);
|
||||
break;
|
||||
default:
|
||||
$form = parent::getFieldForm($field, $value, $viewDatas, $extras);
|
||||
|
||||
@ -218,11 +218,11 @@ class CommonHelper
|
||||
}
|
||||
switch ($field) {
|
||||
case 'email':
|
||||
$form = form_input($field, $value ?? "", ["placeholder" => "예)test@example.com", ...$extras]);
|
||||
$form = form_input($field, $value ?? "", ["id" => $field, "placeholder" => "예)test@example.com", ...$extras]);
|
||||
break;
|
||||
case 'mobile':
|
||||
case 'phone':
|
||||
$form = form_input($field, $value ?? "", ["placeholder" => "예)010-0010-0010", ...$extras]);
|
||||
$form = form_input($field, $value ?? "", ["id" => $field, "placeholder" => "예)010-0010-0010", ...$extras]);
|
||||
break;
|
||||
case 'role':
|
||||
if (!is_array($viewDatas['control']['filter_optons'][$field])) {
|
||||
@ -233,7 +233,7 @@ class CommonHelper
|
||||
$forms = [];
|
||||
foreach ($viewDatas['control']['filter_optons'][$field] as $key => $filterEntity) {
|
||||
$values = is_array($value) ? $value : explode(DEFAULTS["DELIMITER_ROLE"], $value);
|
||||
$forms[] = form_checkbox("{$field}[]", $key, in_array($key, $values)) . $filterEntity->getTitle();
|
||||
$forms[] = form_checkbox("{$field}[]", $key, in_array($key, $values), ["id" => $field, ...$extras]) . $filterEntity->getTitle();
|
||||
}
|
||||
$form = implode(" ", $forms);
|
||||
} else {
|
||||
@ -241,7 +241,7 @@ class CommonHelper
|
||||
foreach ($viewDatas['control']['filter_optons'][$field] as $key => $filterEntity) {
|
||||
$formOptions[$key] = $filterEntity->getTitle();
|
||||
}
|
||||
$form = form_dropdown($field, $formOptions, $value, $extras);
|
||||
$form = form_dropdown($field, $formOptions, $value, ["id" => $field, ...$extras]);
|
||||
}
|
||||
break;
|
||||
case 'expired_at':
|
||||
@ -250,7 +250,7 @@ class CommonHelper
|
||||
case 'updated_at':
|
||||
case 'created_at':
|
||||
$extra_class = isset($extras['class']) ? $extras['class'] . ' calender' : 'calender';
|
||||
$form = form_input($field, $value ?? "", ['class' => $extra_class, ...array_diff_key($extras, ['class' => ''])]);
|
||||
$form = form_input($field, $value ?? "", ["id" => $field, 'class' => $extra_class, ...array_diff_key($extras, ['class' => ''])]);
|
||||
break;
|
||||
case 'description':
|
||||
case 'content':
|
||||
@ -272,7 +272,7 @@ class CommonHelper
|
||||
if (in_array($viewDatas['control']['action'], ['create', 'modify', 'create_form', 'modify_form'])) {
|
||||
$value = $value ?? DEFAULTS['STATUS'];
|
||||
}
|
||||
$form = form_dropdown($field, $formOptions, $value, ['class' => $extra_class, ...array_diff_key($extras, ['class' => ''])]);
|
||||
$form = form_dropdown($field, $formOptions, $value, ["id" => $field, 'class' => $extra_class, ...array_diff_key($extras, ['class' => ''])]);
|
||||
} else {
|
||||
$form = form_input($field, $value ?? "", $extras);
|
||||
}
|
||||
|
||||
@ -57,7 +57,7 @@ class ServiceHelper extends CustomerHelper
|
||||
throw new \Exception(__METHOD__ . "에서 {$field}의 field_options가 array형태가 아닙니다.");
|
||||
}
|
||||
//CodeIgniter 4의 form_dropdown()은 options 배열로만 값을 받기 때문에, disabled 속성 같은 개별 옵션에 대한 HTML 속성 추가는 기본적으로 지원하지 않습니다.
|
||||
$form_temps = ["<select name=\"{$field}\" class=\"select-field\"" . (isset($extras['onChange']) ? " onChange=\"{$extras['onChange']}\"" : "") . ">"];
|
||||
$form_temps = ["<select id=\"{$field}\" name=\"{$field}\" class=\"select-field\"" . (isset($extras['onChange']) ? " onChange=\"{$extras['onChange']}\"" : "") . ">"];
|
||||
$form_temps[] = "<option value=\"\">" . lang($viewDatas['class_path'] . '.label.' . $field) . " 선택</option>";
|
||||
foreach ($viewDatas['control']['filter_optons'][$field] as $key => $filterEntity) {
|
||||
$disabled = $filterEntity->getStatus() === SwitchEntity::STATUS_OCCUPIED ? 'disabled="disabled"' : '';
|
||||
@ -78,7 +78,7 @@ class ServiceHelper extends CustomerHelper
|
||||
throw new \Exception(__METHOD__ . "에서 {$field}의 field_options가 array형태가 아닙니다.");
|
||||
}
|
||||
//CodeIgniter 4의 form_dropdown()은 options 배열로만 값을 받기 때문에, disabled 속성 같은 개별 옵션에 대한 HTML 속성 추가는 기본적으로 지원하지 않습니다.
|
||||
$form_temps = ["<select name=\"{$field}\" class=\"select-field\"" . (isset($extras['onChange']) ? " onChange=\"{$extras['onChange']}\"" : "") . ">"];
|
||||
$form_temps = ["<select id=\"{$field}\" name=\"{$field}\" class=\"select-field\"" . (isset($extras['onChange']) ? " onChange=\"{$extras['onChange']}\"" : "") . ">"];
|
||||
$form_temps[] = "<option value=\"\">" . lang($viewDatas['class_path'] . '.label.' . $field) . " 선택</option>";
|
||||
foreach ($viewDatas['control']['filter_optons'][$field] as $key => $filterEntity) {
|
||||
$disabled = $filterEntity->getStatus() === CodeEntity::STATUS_OCCUPIED ? 'disabled="disabled"' : '';
|
||||
|
||||
@ -29,7 +29,7 @@ class ServiceItemHelper extends CustomerHelper
|
||||
throw new \Exception(__METHOD__ . "에서 {$item_type}의 field_options가 array형태가 아닙니다.");
|
||||
}
|
||||
//CodeIgniter 4의 form_dropdown()은 options 배열로만 값을 받기 때문에, disabled 속성 같은 개별 옵션에 대한 HTML 속성 추가는 기본적으로 지원하지 않습니다.
|
||||
$form_temps = ["<select name=\"{$field}\" class=\"select-field\"" . (isset($extras['onChange']) ? " onChange=\"{$extras['onChange']}\"" : "") . ">"];
|
||||
$form_temps = ["<select id=\"{$field}\" name=\"{$field}\" class=\"select-field\"" . (isset($extras['onChange']) ? " onChange=\"{$extras['onChange']}\"" : "") . ">"];
|
||||
$form_temps[] = "<option value=\"\">" . lang($viewDatas['class_path'] . '.label.' . $item_type) . " 선택</option>";
|
||||
foreach ($viewDatas['control']['filter_optons'][$item_type] as $key => $filterEntity) {
|
||||
$disabled = $filterEntity->getStatus() === IpEntity::STATUS_OCCUPIED ? 'disabled="disabled"' : '';
|
||||
@ -50,7 +50,7 @@ class ServiceItemHelper extends CustomerHelper
|
||||
throw new \Exception(__METHOD__ . "에서 {$item_type}의 field_options가 array형태가 아닙니다.");
|
||||
}
|
||||
//CodeIgniter 4의 form_dropdown()은 options 배열로만 값을 받기 때문에, disabled 속성 같은 개별 옵션에 대한 HTML 속성 추가는 기본적으로 지원하지 않습니다.
|
||||
$form_temps = ["<select name=\"{$field}\" class=\"select-field\"" . (isset($extras['onChange']) ? " onChange=\"{$extras['onChange']}\"" : "") . ">"];
|
||||
$form_temps = ["<select id=\"{$field}\" name=\"{$field}\" class=\"select-field\"" . (isset($extras['onChange']) ? " onChange=\"{$extras['onChange']}\"" : "") . ">"];
|
||||
$form_temps[] = "<option value=\"\">" . lang($viewDatas['class_path'] . '.label.' . $item_type) . " 선택</option>";
|
||||
foreach ($viewDatas['control']['filter_optons'][$item_type] as $key => $filterEntity) {
|
||||
$disabled = $filterEntity->getStatus() === DomainEntity::STATUS_OCCUPIED ? 'disabled="disabled"' : '';
|
||||
@ -78,7 +78,7 @@ class ServiceItemHelper extends CustomerHelper
|
||||
throw new \Exception(__METHOD__ . "에서 {$item_type}의 field_options가 array형태가 아닙니다.");
|
||||
}
|
||||
//CodeIgniter 4의 form_dropdown()은 options 배열로만 값을 받기 때문에, disabled 속성 같은 개별 옵션에 대한 HTML 속성 추가는 기본적으로 지원하지 않습니다.
|
||||
$form_temps = ["<select name=\"{$field}\" class=\"select-field\"" . (isset($extras['onChange']) ? " onChange=\"{$extras['onChange']}\"" : "") . ">"];
|
||||
$form_temps = ["<select id=\"{$field}\" name=\"{$field}\" class=\"select-field\"" . (isset($extras['onChange']) ? " onChange=\"{$extras['onChange']}\"" : "") . ">"];
|
||||
$form_temps[] = "<option value=\"\">" . lang($viewDatas['class_path'] . '.label.' . $item_type) . " 선택</option>";
|
||||
foreach ($viewDatas['control']['filter_optons'][$item_type] as $key => $filterEntity) {
|
||||
$disabled = '';
|
||||
|
||||
@ -11,4 +11,21 @@ class DomainHelper extends PartHelper
|
||||
parent::__construct();
|
||||
$this->setTitleField(field: DomainModel::TITLE);
|
||||
}
|
||||
|
||||
public function getFieldForm(string $field, mixed $value, array $viewDatas, array $extras = []): string
|
||||
{
|
||||
if (in_array($viewDatas['control']['action'], ['create', 'modify', 'create_form', 'modify_form'])) {
|
||||
$extras = (strpos($viewDatas['control']['field_rules'][$field], 'required') !== false) ? ["class" => "form-control", "required" => "", ...$extras] : ["class" => "form-control", ...$extras];
|
||||
}
|
||||
switch ($field) {
|
||||
case 'domain':
|
||||
$form = form_input($field, "", ["id" => $field, "placeholder" => "예)domain.co.kr", ...$extras]);
|
||||
$form .= "<div id=\"domain-errors\" style=\"color:red; margin-top:5px;\"></div>";
|
||||
break;
|
||||
default:
|
||||
$form = parent::getFieldForm($field, $value, $viewDatas, $extras);
|
||||
break;
|
||||
}
|
||||
return $form;
|
||||
} //
|
||||
}
|
||||
|
||||
@ -19,7 +19,7 @@ class UserHelper extends CommonHelper
|
||||
switch ($field) {
|
||||
case 'passwd':
|
||||
case 'confirmpassword':
|
||||
$form = form_password($field, "", ["autocomplete" => $field, ...$extras]);
|
||||
$form = form_password($field, "", ["id" => $field, ...$extras]);
|
||||
break;
|
||||
default:
|
||||
$form = parent::getFieldForm($field, $value, $viewDatas, $extras);
|
||||
|
||||
@ -1,9 +1,49 @@
|
||||
<link href="/css/<?= $viewDatas['layout'] ?>/form.css" media="screen" rel="stylesheet" type="text/css" />
|
||||
<script src="/js/<?= $viewDatas['layout'] ?>/form.js" referrerpolicy="origin"></script>
|
||||
<script src="/assets/tinymce/tinymce.min.js" referrerpolicy="origin"></script>
|
||||
<link rel="stylesheet" href="/assets/tagify/dist/tagify.css">
|
||||
<script src="/assets/tagify/dist/tagify.js"></script>
|
||||
<?php foreach ($viewDatas['individualStylesheets'] as $css): ?>
|
||||
<link href="/css/<?= $viewDatas['layout'] ?>/<?= $css ?>" media="screen" rel="stylesheet" type="text/css" />
|
||||
<?php endforeach ?>
|
||||
<?php foreach ($viewDatas['individualScripts'] as $js): ?>
|
||||
<script src="/js/<?= $viewDatas['layout'] ?>/<?= $js ?>" referrerpolicy="origin"></script>
|
||||
<?php endforeach ?>
|
||||
<?php endforeach ?>
|
||||
|
||||
<script>
|
||||
const input = document.querySelector('#domain');
|
||||
const errorBox = document.getElementById('domain-errors');
|
||||
|
||||
const tagify = new Tagify(input, {
|
||||
enforceWhitelist: false, // 자유 입력 허용
|
||||
whitelist: [], // 자동완성 후보
|
||||
duplicates: false, // 중복 제거
|
||||
delimiters: ", ", // 엔터나 콤마로 구분
|
||||
pattern: /^[a-zA-Z0-9.-]+\.[a-z]{2,}$/ // 기본 도메인 형식
|
||||
});
|
||||
|
||||
// ✅ 입력된 태그가 추가될 때 AJAX 검증
|
||||
tagify.on('add', async e => {
|
||||
const domain = e.detail.data.value;
|
||||
// 서버로 도메인 유효성 검증 요청
|
||||
const res = await fetch('/admin/equipment/part/domain/validate', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify({
|
||||
domain
|
||||
})
|
||||
});
|
||||
|
||||
const result = await res.json();
|
||||
|
||||
if (!result.valid) {
|
||||
// 유효하지 않으면 해당 태그 제거
|
||||
tagify.removeTag(domain);
|
||||
errorBox.innerText = `"${domain}" 은(는) 이미 등록되었거나 유효하지 않습니다.`;
|
||||
} else {
|
||||
errorBox.innerText = '';
|
||||
}
|
||||
});
|
||||
</script>
|
||||
1
public/assets/tagify
Submodule
1
public/assets/tagify
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 3c49093fba26029602a5dc56676af3504e74dd3a
|
||||
Loading…
Reference in New Issue
Block a user