200 lines
9.7 KiB
PHP
200 lines
9.7 KiB
PHP
<?php
|
|
$sub_menu = '700100';
|
|
include_once('./_common.php');
|
|
|
|
// ... (폼 제출 처리 로직은 변경 없음) ...
|
|
$target_table = isset($_REQUEST['target_table']) ? preg_replace('/[^a-z0-9_]/i', '', $_REQUEST['target_table']) : '';
|
|
$target_id = isset($_REQUEST['target_id']) ? (int)$_REQUEST['target_id'] : 0;
|
|
|
|
if (!$target_table || !$target_id) {
|
|
alert('잘못된 접근입니다.');
|
|
}
|
|
|
|
if (isset($w) && $w == 'u' && $_SERVER['REQUEST_METHOD'] === 'POST') {
|
|
auth_check_menu($auth, $sub_menu, 'w');
|
|
check_admin_token();
|
|
$lang_code = trim($_POST['lang_code']);
|
|
$cl_name = trim($_POST['cl_name']);
|
|
$cl_description = trim($_POST['cl_description']);
|
|
if (!$lang_code) alert('언어 코드를 선택해주세요.');
|
|
if (!$cl_name) alert('이름/값을 입력해주세요.');
|
|
$sql = "INSERT INTO {$g5['common_lang_table']}
|
|
SET target_table = '{$target_table}',
|
|
target_id = '{$target_id}',
|
|
lang_code = '{$lang_code}',
|
|
cl_name = '{$cl_name}',
|
|
cl_description = '{$cl_description}',
|
|
updated_at = '".G5_TIME_YMDHIS."',
|
|
updated_by = '{$member['mb_id']}'
|
|
ON DUPLICATE KEY UPDATE
|
|
cl_name = '{$cl_name}',
|
|
cl_description = '{$cl_description}',
|
|
updated_at = '".G5_TIME_YMDHIS."',
|
|
updated_by = '{$member['mb_id']}'";
|
|
sql_query($sql);
|
|
goto_url("./lang_manager.php?target_table=$target_table&target_id=$target_id");
|
|
}
|
|
if (isset($mode) && $mode == 'delete') {
|
|
auth_check_menu($auth, $sub_menu, 'd');
|
|
check_admin_token();
|
|
$cl_id = isset($_GET['cl_id']) ? (int)$_GET['cl_id'] : 0;
|
|
if (!$cl_id) alert('cl_id 값이 없습니다.');
|
|
$sql = "DELETE FROM {$g5['common_lang_table']} WHERE cl_id = '{$cl_id}' AND target_table = '{$target_table}' AND target_id = '{$target_id}'";
|
|
sql_query($sql);
|
|
goto_url("./lang_manager.php?target_table=$target_table&target_id=$target_id");
|
|
}
|
|
|
|
auth_check_menu($auth, $sub_menu, 'r');
|
|
|
|
// 💡 [핵심 추가] 이전 페이지로 돌아가기 위한 링크 생성
|
|
$back_link = './ui_manager_list.php'; // 기본 돌아가기 링크
|
|
if ($target_table == $g5['form_category_table']) {
|
|
// 카테고리 다국어 관리였다면, 해당 카테고리가 속한 리소스의 옵션 관리 페이지로 돌아가야 함
|
|
$sql_back = "SELECT um_id FROM {$g5['form_category_table']} WHERE fc_id = '{$target_id}'";
|
|
$back_row = sql_fetch($sql_back);
|
|
if (isset($back_row['um_id'])) {
|
|
$back_link = './category_list.php?um_id=' . $back_row['um_id'];
|
|
}
|
|
}
|
|
|
|
// UiManager 클래스를 사용하여 사용 가능한 언어 목록 가져오기
|
|
$active_languages = ui_manager()->get_data('language_list');
|
|
|
|
// 현재 관리 대상의 기본 정보(한국어)를 가져옴
|
|
$sql = "SELECT cl_name FROM {$g5['common_lang_table']} WHERE target_table = '{$target_table}' AND target_id = '{$target_id}' AND lang_code = 'ko'";
|
|
$parent_info = sql_fetch($sql);
|
|
$parent_name = isset($parent_info['cl_name']) ? get_text($parent_info['cl_name']) : "ID: {$target_id}";
|
|
|
|
// 등록된 다국어 목록 조회
|
|
$sql = "SELECT * FROM {$g5['common_lang_table']} WHERE target_table = '{$target_table}' AND target_id = '{$target_id}' ORDER BY lang_code";
|
|
$result = sql_query($sql);
|
|
$lang_list = [];
|
|
while ($row = sql_fetch_array($result)) {
|
|
$lang_list[] = $row;
|
|
}
|
|
$lang_list_count = count($lang_list);
|
|
|
|
$g5['title'] = '다국어 관리';
|
|
include_once(G5_ADMIN_PATH . '/admin.head.php');
|
|
|
|
add_stylesheet('<link rel="stylesheet" href="' . G5_ADMIN_URL . '/code_manager/css/code_manager.css?ver=1.1">', 0);
|
|
?>
|
|
|
|
<div class="local_desc01 local_desc">
|
|
<p>
|
|
<strong>'<?php echo $parent_name; ?>'</strong> 항목에 대한 다국어 이름과 설명을 관리합니다.<br>
|
|
'언어 코드'는 중복하여 등록할 수 없습니다.
|
|
</p>
|
|
</div>
|
|
|
|
<section id="code_manager">
|
|
<h2 class="h2_frm">다국어 등록/수정</h2>
|
|
<form name="flangform" id="flangform" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="post">
|
|
<input type="hidden" name="w" value="u">
|
|
<input type="hidden" name="target_table" value="<?php echo $target_table; ?>">
|
|
<input type="hidden" name="target_id" value="<?php echo $target_id; ?>">
|
|
<input type="hidden" name="token" value="<?php echo get_admin_token(); ?>">
|
|
|
|
<div class="tbl_frm01 tbl_wrap">
|
|
<table>
|
|
<caption>다국어 정보 추가/수정 폼</caption>
|
|
<colgroup>
|
|
<col class="grid_4">
|
|
<col>
|
|
</colgroup>
|
|
<tbody>
|
|
<tr>
|
|
<th scope="row"><label for="lang_code">언어 코드</label></th>
|
|
<td>
|
|
<select name="lang_code" id="lang_code" required>
|
|
<option value="">선택</option>
|
|
<?php foreach ($active_languages as $lang_item) : ?>
|
|
<option value="<?php echo $lang_item['fc_key']; ?>"><?php echo get_text($lang_item['cl_name']); ?> (<?php echo $lang_item['fc_key']; ?>)</option>
|
|
<?php endforeach; ?>
|
|
</select>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th scope="row"><label for="cl_name">이름/값</label></th>
|
|
<td>
|
|
<input type="text" name="cl_name" id="cl_name" required class="required frm_input" size="80">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th scope="row"><label for="cl_description">부가 설명</label></th>
|
|
<td>
|
|
<textarea name="cl_description" id="cl_description" rows="5"></textarea>
|
|
<span class="frm_info">툴팁 등 부가적으로 사용될 설명을 입력합니다. (선택사항)</span>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="btn_confirm01 btn_confirm">
|
|
<!-- 💡 [핵심 수정] 목록으로 돌아가는 버튼 추가 -->
|
|
<a href="<?php echo $back_link; ?>" class="btn_cancel btn">목록으로</a>
|
|
<input type="submit" value="저장" class="btn_submit btn" accesskey="s">
|
|
</div>
|
|
</form>
|
|
|
|
<!-- 등록된 다국어 목록 테이블 -->
|
|
<div class="tbl_head01 tbl_wrap" style="margin-top: 20px;">
|
|
<h2 class="h2_frm">등록된 다국어 목록</h2>
|
|
<table>
|
|
<caption>등록된 다국어 목록</caption>
|
|
<thead>
|
|
<tr>
|
|
<th scope="col" style="width: 100px;">언어 코드</th>
|
|
<th scope="col">이름/값</th>
|
|
<th scope="col">부가 설명</th>
|
|
<th scope="col" style="width: 120px;">관리</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php if ($lang_list_count > 0) : ?>
|
|
<?php foreach ($lang_list as $lang) : ?>
|
|
<tr>
|
|
<td class="td_alignc"><?php echo get_text($lang['lang_code']); ?></td>
|
|
<td class="td_left"><?php echo get_text($lang['cl_name']); ?></td>
|
|
<td class="td_left"><?php echo get_text($lang['cl_description']); ?></td>
|
|
<td class="td_mng">
|
|
<button type="button" class="btn btn_02 btn_edit_lang"
|
|
data-lang_code="<?php echo get_text($lang['lang_code']); ?>"
|
|
data-cl_name="<?php echo get_text($lang['cl_name']); ?>"
|
|
data-cl_description="<?php echo get_text($lang['cl_description']); ?>">수정</button>
|
|
<a href="./lang_manager.php?mode=delete&cl_id=<?php echo $lang['cl_id']; ?>&target_table=<?php echo $target_table; ?>&target_id=<?php echo $target_id; ?>&token=<?php echo get_admin_token(); ?>"
|
|
class="btn btn_delete" onclick="return confirm('정말 삭제하시겠습니까?');">삭제</a>
|
|
</td>
|
|
</tr>
|
|
<?php endforeach; ?>
|
|
<?php else : ?>
|
|
<tr class="empty_table">
|
|
<td colspan="4">등록된 다국어 정보가 없습니다.</td>
|
|
</tr>
|
|
<?php endif; ?>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</section>
|
|
|
|
<script>
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
const editLangButtons = document.querySelectorAll('.btn_edit_lang');
|
|
const langForm = document.getElementById('flangform');
|
|
if (editLangButtons.length > 0 && langForm) {
|
|
editLangButtons.forEach(button => {
|
|
button.addEventListener('click', function() {
|
|
const data = this.dataset;
|
|
langForm.lang_code.value = data.lang_code;
|
|
langForm.cl_name.value = data.cl_name;
|
|
langForm.cl_description.value = data.cl_description;
|
|
langForm.scrollIntoView({ behavior: 'smooth' });
|
|
});
|
|
});
|
|
}
|
|
});
|
|
</script>
|
|
|
|
<?php
|
|
include_once(G5_ADMIN_PATH . '/admin.tail.php');
|