diff --git a/.gitignore b/.gitignore index e8d3d39..6bfde72 100644 --- a/.gitignore +++ b/.gitignore @@ -62,3 +62,6 @@ error.log access.log build.log +net.json # for traffic +/net.json +[Aa]vocado[Aa]mber/net.json diff --git a/AvocadoAmber/.htaccess b/AvocadoAmber/.htaccess new file mode 100644 index 0000000..ac0f01f --- /dev/null +++ b/AvocadoAmber/.htaccess @@ -0,0 +1,3 @@ +RewriteEngine On + +RewriteRule ^(\.git|\.ht|\.travis|codeception\.|composer\.|Gruntfile\.js|package\.json|CONTRIBUTING|COPYRIGHT|LICENSE|README) - [L,F] diff --git a/AvocadoAmber/adm/_admin.mgirate.db.php b/AvocadoAmber/adm/_admin.mgirate.db.php new file mode 100644 index 0000000..234235f --- /dev/null +++ b/AvocadoAmber/adm/_admin.mgirate.db.php @@ -0,0 +1,12 @@ + G5_TABLE_PREFIX . "migrations" +]; + +if (!sql_table_exists($ext_table["migrate"])) { + +} diff --git a/AvocadoAmber/adm/_gnb.002.content.menu.php b/AvocadoAmber/adm/_gnb.002.content.menu.php index 64e77e8..5b47006 100644 --- a/AvocadoAmber/adm/_gnb.002.content.menu.php +++ b/AvocadoAmber/adm/_gnb.002.content.menu.php @@ -30,6 +30,8 @@ $menu["content"]->getLastAddedMenu()->addSubFile("/board_form_update.php"); $menu["content"]->getLastAddedMenu()->addSubFile("/board_delete.php"); $menu["content"]->getLastAddedMenu()->addSubFile("/board_copy.php"); $menu["content"]->getLastAddedMenu()->addSubFile("/board_copy_update.php"); +$menu["content"]->getLastAddedMenu()->addSubFile("/board_move_list.php"); +$menu["content"]->getLastAddedMenu()->addSubFile("/board_move_check.php"); $menu["content"]->addChildMenu("content", "게시판그룹관리", G5_ADMIN_URL . "/boardgroup_list.php", true, 100, "\F2EE", 0); $menu["content"]->getLastAddedMenu()->addSubFile("/boardgroup_list_update.php"); diff --git a/AvocadoAmber/adm/admin.head.php b/AvocadoAmber/adm/admin.head.php index 8429252..3ebd0d6 100644 --- a/AvocadoAmber/adm/admin.head.php +++ b/AvocadoAmber/adm/admin.head.php @@ -31,15 +31,15 @@ include_once G5_PATH . '/head.sub.php';
- -
+
+ +
diff --git a/AvocadoAmber/adm/admin.tail.php b/AvocadoAmber/adm/admin.tail.php index b39a053..b5d291b 100644 --- a/AvocadoAmber/adm/admin.tail.php +++ b/AvocadoAmber/adm/admin.tail.php @@ -2,6 +2,7 @@ if (!defined('_GNUBOARD_')) exit; ?> +
@@ -11,6 +12,17 @@ if (!defined('_GNUBOARD_')) diff --git a/AvocadoAmber/adm/board_list_update.php b/AvocadoAmber/adm/board_list_update.php index 7567322..6bc71a8 100644 --- a/AvocadoAmber/adm/board_list_update.php +++ b/AvocadoAmber/adm/board_list_update.php @@ -1,13 +1,63 @@ false, 'message' => '게시판 테이블명이 없습니다.']); + exit; + } + + $result = migrate_board_table($bo_table); + echo json_encode($result); + exit; +} + +// 선택 마이그레이션 처리 + if (!count($_POST['chk'])) { alert($_POST['act_button'] . " 하실 항목을 하나 이상 체크하세요."); } -if ($_POST['act_button'] == "선택수정") { +if ($_POST['act_button'] == "선택마이그레이션") { + auth_check($auth[$sub_menu], 'w'); + + if (!count($_POST['chk'])) { + alert("마이그레이션 하실 항목을 하나 이상 체크하세요."); + } + + $success_count = 0; + $fail_count = 0; + $messages = []; + + for ($i = 0; $i < count($_POST['chk']); $i++) { + $k = $_POST['chk'][$i]; + $bo_table = sql_real_escape_string(strip_tags($_POST['board_table'][$k])); + + if (empty($bo_table)) { + continue; + } + + $result = migrate_board_table($bo_table); + + if ($result['success']) { + $success_count++; + $messages[] = "{$bo_table}: 성공 (컬럼 {$result['updated']}개 추가)"; + } else { + $fail_count++; + $messages[] = "{$bo_table}: 실패 - {$result['message']}"; + } + } +} else if ($_POST['act_button'] == "선택수정") { auth_check($auth[$sub_menu], 'w'); @@ -28,7 +78,7 @@ if ($_POST['act_button'] == "선택수정") { $purify_keys = ["gr_id", "bo_subject", "bo_skin", "bo_list_level", "bo_read_level", "bo_write_level", "bo_comment_level", "bo_reply_level", "board_table"]; - foreach($_POST as $key => $value) { + foreach ($_POST as $key => $value) { if (in_array($key, $purify_keys)) { if (is_array($_POST[$key])) { $_POST[$key][$k] = sql_real_escape_string(strip_tags($_POST[$key][$k])); diff --git a/AvocadoAmber/adm/board_migration.inc.php b/AvocadoAmber/adm/board_migration.inc.php new file mode 100644 index 0000000..3ae43db --- /dev/null +++ b/AvocadoAmber/adm/board_migration.inc.php @@ -0,0 +1,319 @@ + 'int(11) NOT NULL AUTO_INCREMENT', + 'wr_num' => 'int(11) NOT NULL DEFAULT 0', + 'wr_reply' => 'varchar(10) NOT NULL', + 'wr_parent' => 'int(11) NOT NULL DEFAULT 0', + 'wr_is_comment' => 'tinyint(4) NOT NULL DEFAULT 0', + 'wr_comment' => 'int(11) NOT NULL DEFAULT 0', + 'wr_comment_reply' => 'varchar(5) NOT NULL', + 'ca_name' => 'varchar(255) NOT NULL', + 'wr_option' => "set('html1','html2','secret','mail') NOT NULL", + 'wr_subject' => 'varchar(255) NOT NULL', + 'wr_content' => 'mediumtext NOT NULL', + 'wr_extra_vars' => 'text NOT NULL', + 'wr_link1' => 'text NOT NULL', + 'wr_link2' => 'text NOT NULL', + 'wr_link1_hit' => 'int(11) NOT NULL DEFAULT 0', + 'wr_link2_hit' => 'int(11) NOT NULL DEFAULT 0', + 'wr_hit' => 'int(11) NOT NULL DEFAULT 0', + 'wr_good' => 'int(11) NOT NULL DEFAULT 0', + 'wr_nogood' => 'int(11) NOT NULL DEFAULT 0', + 'mb_id' => 'varchar(20) NOT NULL', + 'wr_password' => 'varchar(255) NOT NULL', + 'wr_extrapassword' => 'varchar(255) NOT NULL', + 'wr_name' => 'varchar(255) NOT NULL', + 'wr_email' => 'varchar(255) NOT NULL', + 'wr_homepage' => 'varchar(255) NOT NULL', + 'wr_datetime' => "datetime NOT NULL DEFAULT '1970-01-01 00:00:00'", + 'wr_file' => 'tinyint(4) NOT NULL DEFAULT 0', + 'wr_last' => 'varchar(19) NOT NULL', + 'wr_ip' => 'varchar(255) NOT NULL', + 'wr_facebook_user' => 'varchar(255) NOT NULL', + 'wr_twitter_user' => 'varchar(255) NOT NULL', + 'wr_dice1' => 'int(11) NOT NULL DEFAULT 0', + 'wr_dice2' => 'int(11) NOT NULL DEFAULT 0', + 'wr_log' => 'text NOT NULL', + 'wr_item' => 'int(11) NOT NULL DEFAULT 0', + 'wr_item_log' => "varchar(255) NOT NULL DEFAULT ''", + 'wr_action' => "varchar(255) NOT NULL DEFAULT ''", + 'wr_secret' => 'int(11) NOT NULL DEFAULT 0', + 'wr_adult' => 'int(11) NOT NULL DEFAULT 0', + 'wr_wide' => 'int(11) NOT NULL DEFAULT 0', + 'wr_plip' => 'int(11) NOT NULL DEFAULT 0', + 'wr_noname' => 'int(11) NOT NULL DEFAULT 0', + 'wr_ing' => 'int(11) NOT NULL DEFAULT 0', + 'ch_id' => 'int(11) NOT NULL DEFAULT 0', + 'ch_side' => 'int(11) NOT NULL DEFAULT 0', + 'ch_class' => 'int(11) NOT NULL DEFAULT 0', + 'ti_id' => 'int(11) NOT NULL DEFAULT 0', + 'ma_id' => 'int(11) NOT NULL DEFAULT 0', + 'wr_width' => 'int(11) NOT NULL DEFAULT 0', + 'wr_height' => 'int(11) NOT NULL DEFAULT 0', + 'wr_url' => "varchar(255) NOT NULL DEFAULT ''", + 'wr_type' => "varchar(255) NOT NULL DEFAULT ''", + 'wr_1' => "varchar(255) NOT NULL DEFAULT ''", + 'wr_2' => "varchar(255) NOT NULL DEFAULT ''", + 'wr_3' => "varchar(255) NOT NULL DEFAULT ''", + 'wr_4' => "varchar(255) NOT NULL DEFAULT ''", + 'wr_5' => "varchar(255) NOT NULL DEFAULT ''", + 'wr_6' => "varchar(255) NOT NULL DEFAULT ''", + 'wr_7' => "varchar(255) NOT NULL DEFAULT ''", + 'wr_8' => "varchar(255) NOT NULL DEFAULT ''", + 'wr_9' => "varchar(255) NOT NULL DEFAULT ''", + 'wr_10' => "varchar(255) NOT NULL DEFAULT ''" + ]; +} + +// bo_version 컬럼 체크 및 추가 +function check_and_add_bo_version() +{ + global $g5; + + $sql = "SHOW COLUMNS FROM {$g5['board_table']} LIKE 'bo_version'"; + $result = sql_query($sql); + + if (sql_num_rows($result) == 0) { + $sql = "ALTER TABLE {$g5['board_table']} ADD `bo_version` varchar(255) NOT NULL DEFAULT '0'"; + sql_query($sql); + return true; + } + + return false; +} + +// 컬럼 정의 정규화 (비교를 위해) +function normalize_column_definition($definition) +{ + // 소문자로 변환 + $def = strtolower($definition); + + // 공백 정규화 + $def = preg_replace('/\s+/', ' ', $def); + $def = trim($def); + + // AUTO_INCREMENT 제거 (비교 시 제외) + $def = str_replace('auto_increment', '', $def); + + // int(11) -> int 형식 통일 + $def = preg_replace('/int\(\d+\)/', 'int', $def); + $def = preg_replace('/tinyint\(\d+\)/', 'tinyint', $def); + + // varchar/char 길이는 유지 + + // 따옴표 통일 (single quote) + $def = str_replace('"', "'", $def); + + return trim($def); +} + +// 현재 테이블 구조 가져오기 (원본 정의 포함) +function get_current_table_structure($table_name) +{ + $sql = "SHOW COLUMNS FROM `{$table_name}`"; + $result = sql_query($sql); + + $structure = []; + while ($row = sql_fetch_array($result)) { + $type = $row['Type']; + $null = $row['Null'] == 'NO' ? 'NOT NULL' : ''; + $default = ''; + + if ($row['Default'] !== null) { + if (in_array(strtolower($row['Default']), ['current_timestamp'])) { + $default = "DEFAULT {$row['Default']}"; + } else { + $default = "DEFAULT '{$row['Default']}'"; + } + } else if ($row['Null'] == 'NO' && $row['Default'] === null && $row['Extra'] != 'auto_increment') { + // NOT NULL이고 DEFAULT가 없는 경우 처리 + if (strpos($type, 'int') !== false) { + $default = 'DEFAULT 0'; + } else if (strpos($type, 'text') !== false) { + // text 타입은 default를 설정할 수 없음 + $default = ''; + } else { + $default = "DEFAULT ''"; + } + } + + $extra = $row['Extra']; + if ($extra == 'auto_increment') { + $extra = 'AUTO_INCREMENT'; + } + + $definition = trim("{$type} {$null} {$default} {$extra}"); + $structure[$row['Field']] = $definition; + } + + return $structure; +} + +// 테이블 구조 비교 (누락 및 변경된 컬럼 모두 감지) +function compare_table_structure($table_name) +{ + $standard = get_standard_board_structure(); + $current = get_current_table_structure($table_name); + + $missing_columns = []; // 누락된 컬럼 + $modified_columns = []; // 속성이 다른 컬럼 + + foreach ($standard as $column => $definition) { + if (!isset($current[$column])) { + // 컬럼이 존재하지 않음 + $missing_columns[$column] = $definition; + } else { + // 컬럼은 존재하지만 속성 비교 + $standard_normalized = normalize_column_definition($definition); + $current_normalized = normalize_column_definition($current[$column]); + + if ($standard_normalized !== $current_normalized) { + // 속성이 다름 + $modified_columns[$column] = [ + 'current' => $current[$column], + 'standard' => $definition + ]; + } + } + } + + return [ + 'missing' => $missing_columns, + 'modified' => $modified_columns + ]; +} + +// 게시판 테이블 마이그레이션 실행 +function migrate_board_table($bo_table) +{ + global $g5; + + $write_table = $g5['write_prefix'] . $bo_table; + + // 테이블 존재 확인 + $sql = "SHOW TABLES LIKE '{$write_table}'"; + $result = sql_query($sql); + if (sql_num_rows($result) == 0) { + return ['success' => false, 'message' => '테이블이 존재하지 않습니다.']; + } + + // 누락 및 변경된 컬럼 확인 + $comparison = compare_table_structure($write_table); + $missing_columns = $comparison['missing']; + $modified_columns = $comparison['modified']; + + if (empty($missing_columns) && empty($modified_columns)) { + // 버전 업데이트만 수행 + $sql = "UPDATE {$g5['board_table']} SET bo_version = '" . BOARD_MIGRATION_VERSION . "' WHERE bo_table = '{$bo_table}'"; + sql_query($sql); + return [ + 'success' => true, + 'message' => '이미 최신 버전입니다.', + 'added' => 0, + 'modified' => 0 + ]; + } + + $added_count = 0; + $modified_count = 0; + $errors = []; + + // 누락된 컬럼 추가 + foreach ($missing_columns as $column => $definition) { + $sql = "ALTER TABLE `{$write_table}` ADD `{$column}` {$definition}"; + if (sql_query($sql)) { + $added_count++; + } else { + $errors[] = "컬럼 추가 실패: {$column}"; + } + } + + // 변경된 컬럼 수정 + foreach ($modified_columns as $column => $info) { + $sql = "ALTER TABLE `{$write_table}` MODIFY `{$column}` {$info['standard']}"; + if (sql_query($sql)) { + $modified_count++; + } else { + $errors[] = "컬럼 수정 실패: {$column}"; + } + } + + // 버전 업데이트 + $sql = "UPDATE {$g5['board_table']} SET bo_version = '" . BOARD_MIGRATION_VERSION . "' WHERE bo_table = '{$bo_table}'"; + sql_query($sql); + + $message = '마이그레이션이 완료되었습니다.'; + if (!empty($errors)) { + $message .= ' (일부 오류: ' . implode(', ', $errors) . ')'; + } + + return [ + 'success' => true, + 'message' => $message, + 'added' => $added_count, + 'modified' => $modified_count, + 'errors' => $errors + ]; +} + +// 모든 게시판 체크 +function check_all_boards_migration() +{ + global $g5; + + check_and_add_bo_version(); + + $sql = "SELECT bo_table, bo_version FROM {$g5['board_table']}"; + $result = sql_query($sql); + + $boards_need_update = []; + + while ($row = sql_fetch_array($result)) { + if ($row['bo_version'] != BOARD_MIGRATION_VERSION) { + $write_table = $g5['write_prefix'] . $row['bo_table']; + $comparison = compare_table_structure($write_table); + + $boards_need_update[] = [ + 'bo_table' => $row['bo_table'], + 'current_version' => $row['bo_version'], + 'missing_columns' => count($comparison['missing']), + 'modified_columns' => count($comparison['modified']) + ]; + } + } + + return $boards_need_update; +} + +// 특정 게시판의 상세 차이점 확인 +function get_board_migration_details($bo_table) +{ + global $g5; + + $write_table = $g5['write_prefix'] . $bo_table; + + // 테이블 존재 확인 + $sql = "SHOW TABLES LIKE '{$write_table}'"; + $result = sql_query($sql); + if (sql_num_rows($result) == 0) { + return ['success' => false, 'message' => '테이블이 존재하지 않습니다.']; + } + + $comparison = compare_table_structure($write_table); + + return [ + 'success' => true, + 'bo_table' => $bo_table, + 'missing_columns' => $comparison['missing'], + 'modified_columns' => $comparison['modified'] + ]; +} diff --git a/AvocadoAmber/adm/board_move_check.php b/AvocadoAmber/adm/board_move_check.php new file mode 100644 index 0000000..9c31aa0 --- /dev/null +++ b/AvocadoAmber/adm/board_move_check.php @@ -0,0 +1,48 @@ + false, 'message' => '']); + exit; +} + +$source_table = $g5['write_prefix'] . $source_board; +$target_table = $g5['write_prefix'] . $target_board; + +$source_exists = sql_query("SHOW TABLES LIKE '{$source_table}'", false); +$target_exists = sql_query("SHOW TABLES LIKE '{$target_table}'", false); + +if (!sql_num_rows($source_exists) || !sql_num_rows($target_exists)) { + echo json_encode(['warning' => true, 'message' => '게시판 테이블이 존재하지 않습니다.']); + exit; +} + +$source_columns = []; +$result = sql_query("SHOW COLUMNS FROM {$source_table}"); +while ($row = sql_fetch_array($result)) { + $source_columns[] = $row['Field']; +} + +$target_columns = []; +$result = sql_query("SHOW COLUMNS FROM {$target_table}"); +while ($row = sql_fetch_array($result)) { + $target_columns[] = $row['Field']; +} + +$missing_columns = array_diff($source_columns, $target_columns); + +$exclude_columns = ['wr_id', 'wr_num', 'wr_reply', 'wr_parent']; +$missing_columns = array_diff($missing_columns, $exclude_columns); + +if (count($missing_columns) > 0) { + $message = '대상 게시판에 존재하지 않는 필드가 있어 해당 데이터는 복사되지 않습니다: ' . implode(', ', $missing_columns); + echo json_encode(['warning' => true, 'message' => $message]); +} else { + echo json_encode(['warning' => false, 'message' => '']); +} +?> diff --git a/AvocadoAmber/adm/board_move_list.php b/AvocadoAmber/adm/board_move_list.php new file mode 100644 index 0000000..6cb1f20 --- /dev/null +++ b/AvocadoAmber/adm/board_move_list.php @@ -0,0 +1,295 @@ +처음'; + +$g5['title'] = '게시물 이동/복사'; +include_once "./admin.head.php"; + +$colspan = 8; +?> + +
+ + () + 전체게시물 개 +
+ +
+ + + + + + +
+ +
+ +
+ + + + + + + + + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + '; + } + ?> + +
목록
+ + + 번호제목작성자조회댓글작성일
+ + + + + + + + +
자료가 없습니다.
+
+ +
+
+ drive_file_move + +
+
+ content_copy + +
+
+
+ +
+ + + +
+

+ 이동: 선택한 게시물을 대상 게시판으로 이동합니다. 원본 게시물은 삭제됩니다.
+ 복사: 선택한 게시물을 대상 게시판에 복사합니다. 원본 게시물은 유지됩니다.
+ 게시판 테이블 구조가 다른 경우, 존재하는 필드만 복사되며 경고 메시지가 표시됩니다. +

+
+ + + + diff --git a/AvocadoAmber/adm/board_move_update.php b/AvocadoAmber/adm/board_move_update.php new file mode 100644 index 0000000..b456191 --- /dev/null +++ b/AvocadoAmber/adm/board_move_update.php @@ -0,0 +1,286 @@ + $col_info) { + if (isset($target_columns[$col_name]) && !in_array($col_name, $exclude_fields)) { + $common_columns[] = $col_name; + } +} + +if (empty($common_columns)) { + alert('복사할 수 있는 공통 컬럼이 없습니다.'); +} + +$success_count = 0; +$fail_count = 0; +$error_messages = []; + +foreach ($chk as $wr_id) { + $wr_id = (int) $wr_id; + + $write = sql_fetch("SELECT * FROM {$source_table} WHERE wr_id = '{$wr_id}'"); + + if (!$write) { + $fail_count++; + $error_messages[] = "게시물 ID {$wr_id}를 찾을 수 없습니다."; + continue; + } + + $is_reply = $write['wr_reply'] ? true : false; + + if ($is_reply && $act_button === 'move') { + $parent_id = $write['wr_parent']; + $parent_check = sql_fetch("SELECT wr_id FROM {$source_table} WHERE wr_id = '{$parent_id}'"); + if (!$parent_check) { + $write['wr_reply'] = ''; + $write['wr_parent'] = 0; + } + } + + try { + $insert_values = []; + $insert_fields = []; + + foreach ($common_columns as $col) { + if ($col === 'wr_num') + continue; + + if ($col === 'wr_reply' || $col === 'wr_parent') { + if ($col === 'wr_reply') { + $insert_fields[] = $col; + $insert_values[] = "''"; + } else if ($col === 'wr_parent') { + $insert_fields[] = $col; + $insert_values[] = "0"; + } + continue; + } + + $insert_fields[] = $col; + $value = $write[$col]; + + if ($col === 'bo_table') { + $insert_values[] = "'{$target_board}'"; + } else { + $insert_values[] = "'" . sql_real_escape_string($value) . "'"; + } + } + + $row = sql_fetch("SELECT MIN(wr_num) AS min_wr_num FROM {$target_table}"); + $wr_num = $row['min_wr_num'] - 1; + + $insert_fields[] = 'wr_num'; + $insert_values[] = "'{$wr_num}'"; + + $sql = "INSERT INTO {$target_table} (" . implode(', ', $insert_fields) . ") + VALUES (" . implode(', ', $insert_values) . ")"; + + sql_query($sql); + $new_wr_id = sql_insert_id(); + + if (isset($write['wr_is_comment']) && $write['wr_is_comment'] == 0) { + sql_query("UPDATE {$target_table} SET wr_parent = '{$new_wr_id}' WHERE wr_id = '{$new_wr_id}'"); + } + + if ($write['wr_file']) { + copy_board_files($bo_table, $wr_id, $target_board, $new_wr_id, $write); + } + + if ($act_button === 'move') { + sql_query("DELETE FROM {$g5['board_new_table']} WHERE bo_table = '{$bo_table}' AND wr_id = '{$wr_id}'"); + sql_query("DELETE FROM {$g5['board_good_table']} WHERE bo_table = '{$bo_table}' AND wr_id = '{$wr_id}'"); + + sql_query("DELETE FROM {$source_table} WHERE wr_id = '{$wr_id}'"); + + move_board_files($bo_table, $wr_id, $target_board, $new_wr_id); + } + + sql_query("UPDATE {$g5['board_table']} SET bo_count_write = bo_count_write + 1 WHERE bo_table = '{$target_board}'"); + + if ($act_button === 'move') { + sql_query("UPDATE {$g5['board_table']} SET bo_count_write = bo_count_write - 1 WHERE bo_table = '{$bo_table}'"); + } + + $success_count++; + + } catch (Exception $e) { + $fail_count++; + $error_messages[] = "게시물 ID {$wr_id} 처리 중 오류: " . $e->getMessage(); + } +} + +$action_text = ($act_button === 'move') ? '이동' : '복사'; +$message = "{$success_count}개의 게시물이 {$action_text}되었습니다."; + +if ($fail_count > 0) { + $message .= "\\n{$fail_count}개의 게시물 처리 중 오류가 발생했습니다."; + if (!empty($error_messages)) { + $message .= "\\n\\n상세 오류:\\n" . implode("\\n", array_slice($error_messages, 0, 5)); + if (count($error_messages) > 5) { + $message .= "\\n... 외 " . (count($error_messages) - 5) . "건"; + } + } +} + +$qstr = 'bo_table=' . $bo_table; +if (isset($_POST['sod'])) + $qstr .= '&sod=' . $_POST['sod']; +if (isset($_POST['sfl'])) + $qstr .= '&sfl=' . $_POST['sfl']; +if (isset($_POST['stx'])) + $qstr .= '&stx=' . urlencode($_POST['stx']); +if (isset($_POST['page'])) + $qstr .= '&page=' . $_POST['page']; + +goto_url('./board_move_list.php?' . $qstr, false, $message); + +function copy_board_files($source_bo_table, $source_wr_id, $target_bo_table, $target_wr_id, $write_data) +{ + global $g5; + + $source_dir = G5_DATA_PATH . '/file/' . $source_bo_table; + $target_dir = G5_DATA_PATH . '/file/' . $target_bo_table; + + if (!is_dir($target_dir)) { + @mkdir($target_dir, G5_DIR_PERMISSION); + @chmod($target_dir, G5_DIR_PERMISSION); + } + + for ($i = 0; $i < 10; $i++) { + $file_field = 'wr_file' . $i; + $source_field = 'bf_source' . $i; + + if (isset($write_data[$file_field]) && $write_data[$file_field]) { + $source_file = $source_dir . '/' . $write_data[$file_field]; + + if (file_exists($source_file)) { + $new_filename = $target_wr_id . '_' . $i . '_' . time() . substr($write_data[$file_field], strrpos($write_data[$file_field], '.')); + $target_file = $target_dir . '/' . $new_filename; + + if (@copy($source_file, $target_file)) { + @chmod($target_file, G5_FILE_PERMISSION); + + $bf_source = isset($write_data[$source_field]) ? $write_data[$source_field] : basename($write_data[$file_field]); + $bf_filesize = filesize($target_file); + $bf_width = 0; + $bf_height = 0; + $bf_type = 0; + + if (preg_match("/\.(gif|jpg|jpeg|png)$/i", $new_filename)) { + $size = @getimagesize($target_file); + if ($size) { + $bf_width = $size[0]; + $bf_height = $size[1]; + $bf_type = $size[2]; + } + } + + $sql = " INSERT INTO {$g5['board_file_table']} + SET bo_table = '{$target_bo_table}', + wr_id = '{$target_wr_id}', + bf_no = '{$i}', + bf_source = '" . sql_real_escape_string($bf_source) . "', + bf_file = '{$new_filename}', + bf_download = 0, + bf_content = '', + bf_filesize = '{$bf_filesize}', + bf_width = '{$bf_width}', + bf_height = '{$bf_height}', + bf_type = '{$bf_type}', + bf_datetime = '" . G5_TIME_YMDHIS . "' "; + sql_query($sql); + } + } + } + } +} + +function move_board_files($source_bo_table, $source_wr_id, $target_bo_table, $target_wr_id) +{ + global $g5; + + $sql = "SELECT * FROM {$g5['board_file_table']} + WHERE bo_table = '{$source_bo_table}' AND wr_id = '{$source_wr_id}' + ORDER BY bf_no"; + $result = sql_query($sql); + + $source_dir = G5_DATA_PATH . '/file/' . $source_bo_table; + $target_dir = G5_DATA_PATH . '/file/' . $target_bo_table; + + if (!is_dir($target_dir)) { + @mkdir($target_dir, G5_DIR_PERMISSION); + @chmod($target_dir, G5_DIR_PERMISSION); + } + + while ($row = sql_fetch_array($result)) { + $source_file = $source_dir . '/' . $row['bf_file']; + + if (file_exists($source_file)) { + $new_filename = $target_wr_id . '_' . $row['bf_no'] . '_' . time() . substr($row['bf_file'], strrpos($row['bf_file'], '.')); + $target_file = $target_dir . '/' . $new_filename; + + if (@rename($source_file, $target_file)) { + $sql = " INSERT INTO {$g5['board_file_table']} + SET bo_table = '{$target_bo_table}', + wr_id = '{$target_wr_id}', + bf_no = '{$row['bf_no']}', + bf_source = '" . sql_real_escape_string($row['bf_source']) . "', + bf_file = '{$new_filename}', + bf_download = '{$row['bf_download']}', + bf_content = '" . sql_real_escape_string($row['bf_content']) . "', + bf_filesize = '{$row['bf_filesize']}', + bf_width = '{$row['bf_width']}', + bf_height = '{$row['bf_height']}', + bf_type = '{$row['bf_type']}', + bf_datetime = '{$row['bf_datetime']}' "; + sql_query($sql); + } + } + } + + sql_query("DELETE FROM {$g5['board_file_table']} WHERE bo_table = '{$source_bo_table}' AND wr_id = '{$source_wr_id}'"); +} +?> diff --git a/AvocadoAmber/adm/community_form_update.php b/AvocadoAmber/adm/community_form_update.php index de85568..67941e1 100644 --- a/AvocadoAmber/adm/community_form_update.php +++ b/AvocadoAmber/adm/community_form_update.php @@ -33,4 +33,4 @@ EventHandler::triggerEvent("amber.admin.community_form_update"); sql_query($sql); -goto_url('./community_form.php'); +goto_url(G5_ADMIN_URL . '/community_form.php'); diff --git a/AvocadoAmber/adm/css/addon_config.css b/AvocadoAmber/adm/css/addon_config.css index b38abf6..907bfe3 100644 --- a/AvocadoAmber/adm/css/addon_config.css +++ b/AvocadoAmber/adm/css/addon_config.css @@ -3,7 +3,7 @@ th a { display: inline-block; vertical-align: middle; padding: 3px 10px; - background: var(--theme-color-a); + background: var(--theme-sub-500); color: #fff; margin: 5px 0 0; } @@ -12,33 +12,30 @@ th a+a { margin-top: 3px; } -#wrap { +html>body #container { + padding: 0; +} + +.addon_conf_form { height: 100%; } -#container { - padding: 0 !important; - min-height: 100%; -} - -#wrapper { - height: 100%; - box-sizing: border-box; -} - -#container section.addon_config { +#container .addon_config { display: flex; - height: 100%; - padding: 8px; + height: auto; gap: 8px; + box-sizing: border-box; + margin-bottom: 0; + padding: 0; + width: calc(100% - 8px); + height: 100% } .addon_config>nav { min-width: 200px; display: flex; flex-direction: column; - border: 1px solid var(--theme-color-d); - border-radius: 4px; + background: var(--theme-gray-800); overflow:hidden; } @@ -48,12 +45,13 @@ th a+a { } .addon_config>nav>a.selected { - background: var(--theme-color-a); + background: var(--theme-sub-300); + color: var(--black); font-weight: bold; } .addon_config>nav>span { - background: var(--theme-color-d); + background: var(--theme-gray-500); color: #FFF; line-height: 48px; font-size: 14px; @@ -71,10 +69,6 @@ td a { color: var(--theme-color-d); } -.footer-copyright { - padding: 20px !important; -} - span.empty { display: flex; flex-direction: column; diff --git a/AvocadoAmber/adm/css/default.css b/AvocadoAmber/adm/css/default.css new file mode 100644 index 0000000..67fb6cf --- /dev/null +++ b/AvocadoAmber/adm/css/default.css @@ -0,0 +1,1950 @@ +@charset "utf-8"; +@import url(./jquery.minicolors.css); +@import url('https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css'); +@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100..900&display=swap'); + +@font-face { + font-family: 'icon'; + src: url("../../css/fonts/bootstrap-icons.woff2") format("woff2"), + url("../../css/fonts/bootstrap-icons.woff") format("woff"); + font-weight: normal; + font-style: normal; +} + +:root { + --black: #000; + --white: #FFF; + + --theme-50: #fff3e0; + --theme-100: #ffe1b3; + --theme-200: #ffce81; + --theme-300: #ffb94e; + --theme-400: #ffa927; + --theme-500: #ff9b02; + --theme-600: #fc8f01; + --theme-700: #f67f00; + --theme-800: #f06f00; + --theme-900: #e75400; + + --theme-sub-50: #e6f2ff; + --theme-sub-100: #c4ddff; + --theme-sub-200: #a1c9ff; + --theme-sub-300: #81b3ff; + --theme-sub-400: #6fa3fe; + --theme-sub-500: #6893fa; + --theme-sub-600: #6484ea; + --theme-sub-700: #5e71d6; + --theme-sub-800: #5960c2; + --theme-sub-900: #5040a0; + + --theme-gray-50: #fff9ef; + --theme-gray-100: #d0d3d8; + --theme-gray-200: #b0b6bf; + --theme-gray-300: #919aa7; + --theme-gray-400: #7a8494; + --theme-gray-500: #637083; + --theme-gray-600: #566272; + --theme-gray-700: #464f5c; + --theme-gray-800: #363d47; + --theme-gray-900: #242930; + + --theme-color-0: #FFF8F0; + --theme-color-a: #edd0b6; + --theme-color-b: #e3bb82; + --theme-color-c: #c7996b; + --theme-color-d: hsl(30, 72%, 55%); + --theme-color-d-gnb: hsla(30, 72%, 55%, .2); + --theme-color-e: hsl(45, 100%, 50%); + --theme-color-sub: #4a797b; + --theme-color-sub-b: #A8DADC; + + --bg-color: #181926; + --text-color: #CAD3F5; + --border-color: #6E738D; + --button-bg-hover-color: #CAD3F5; + --button-text-color: #000; + --header-bg-color: #24273A; + + --accent-color: var(--theme-color-e); + --button-bg-color: var(--theme-color-e); +} + +html, +body { + padding: 0; + margin: 0; + font-family: 'Noto Sans KR', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'; + vertical-align: text-bottom; + line-height: 1; + font-weight: 500; + font-size: 12px; +} + +body.popup-body { + background: var(--theme-gray-100); + min-width: 0px; +} + +html, +h1, +h2, +h3, +h4, +h5, +h6, +form, +fieldset, +img { + margin: 0; + padding: 0; + border: 0 +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +menu, +nav, +section { + display: block +} + +header ul, +nav ul, +aside ul, +footer ul { + margin: 0; + padding: 0; + list-style: none +} + +label, +input, +button, +select, +img { + vertical-align: middle +} + +input { + margin: 0; + padding: 0; + border-radius: 0; +} + +input[type=text], +input[type=password], +input[type=submit], +input[type=image] { + appearance: none; + -webkit-appearance: none; +} + +button { + border-radius: 0; + appearance: none; + -webkit-appearance: none; + cursor: pointer +} + +p { + margin: 0; + padding: 0; + word-break: break-all +} + +hr { + display: none +} + +pre { + overflow-x: scroll; +} + +caption { + display: none; +} + +.cke_sc, +.sound_only { + display: none; +} + +input[type="file"] { + font-size: 12px; + border: 1px solid #dde3e0; + height: 28px; +} + +input[type="number"], +input[type="text"], +input[type="password"], +select, +textarea { + border: 1px solid #dde3e0; + box-sizing: border-box; + font-family: 'Dotum'; + font-size: 12px; +} + +input[type="number"], +input[type="text"], +input[type="password"] { + padding: 0 8px; +} + +input[type="number"], +input[type="text"], +input[type="password"], +select { + height: 28px; + padding-left: 8px; +} + +textarea { + width: 100%; + height: 150px; +} + +input[type="number"] { + text-align: center; + padding: 0; +} + +label { + cursor: pointer; +} + +label+input { + margin-left: 10px; +} + +input[type=checkbox] { + margin-left: 0; +} + +td img, +.prev_thumb { + max-width: 100% !important; + max-height: 300px; +} + +.txt-center { + text-align: center !important; +} + +.txt-left { + text-align: left !important; +} + +.txt-right { + text-align: right !important; +} + +.frm_info { + display: block; + margin-bottom: 5px; + font-size: 11px; + font-family: 'Dotum'; + color: var(--theme-color-d); +} + +.single-info .frm_info { + margin-bottom: 0; +} + +.full { + width: 100% !important; +} + +.empty_table { + line-height: 200px; +} + +#container { + font-family: 'Noto Sans KR', sans-serif; +} + +#container section { + position: relative; + padding-bottom: 50px; +} + +#container h2 { + font-size: 18px; + font-weight: 300; + margin-bottom: 10px; + line-height: 30px; + display: flex; + gap: 8px; +} + +#container h2:before { + content: "\F3E5"; + font-family: 'icon'; + padding-right: 5px; + font-size: 20px; + height: 20px; + width: 20px; + color: #4b4b47; +} + +#container h3 { + font-size: 15px; + font-weight: 300; + margin-bottom: 10px; + line-height: 30px; +} + +.local_ov { + border-bottom: 1px solid #efeff1; + margin-bottom: 10px; + padding-bottom: 10px; + font-size: 13px; + font-weight: 300; +} + +.ov_listall { + display: block; + position: relative; + float: left; + padding: 0 10px 0 0; + margin-right: 10px; + text-decoration: none; + color: var(--theme-color-c); +} + +.ov_listall:before { + content: ""; + display: block; + position: absolute; + right: 0; + top: 3px; + bottom: 3px; + width: 1px; + background: #e1e1e1; +} + +.local_desc { + background: var(--theme-color-0); + padding: 5px 10px; + border: 1px solid var(--theme-color-a); + color: #5b5b5a; + margin-bottom: 10px; + line-height: 1.8em; +} + +.local_desc .point { + color: var(--theme-color-c); +} + +.local_desc.pos-top { + margin-top: 10px; + margin-bottom: 0; +} + +.pg_wrap { + display: block; + position: relative; + text-align: center; + padding: 30px 0 30px 0; +} + +.pg_wrap span { + display: inline-block; + position: relative; + text-align: center; + vertical-align: middle; + margin: 0 10px; +} + +.pg_wrap strong, +.pg_wrap a { + display: inline-block; + padding: 0 10px; + min-width: 10px; + height: 30px; + line-height: 30px; + text-align: center; + background: #fafafa; + text-decoration: none; + vertical-align: middle; + border-radius: 9em; +} + +.pg_wrap strong { + background: var(--theme-color-c); + color: #fff; + border-color: var(--theme-color-c); +} + +.pg_wrap .pg_control { + width: 30px; + padding: 0; + box-sizing: border-box; + border: none; +} + +.pg_wrap .pg_control * { + line-height: 30px; +} + +.btn_list01 { + position: relative; + padding: 20px 0; +} + +.local_desc.pos-top+.btn_list01 { + padding-top: 10px; +} + +.btn_list01 * { + padding: 10px 15px; + vertical-align: middle; +} + +.btn_list03 { + position: absolute; + top: 5px; + right: 0; +} + +.btn_list03 * { + padding: 5px 10px; +} + +.btn_add01 * { + padding: 10px 15px; + vertical-align: middle; +} + +.btn_list a, +.btn_list button, +.btn_list input { + display: inline-block; + background: var(--theme-color-c); + color: #fff; + font-weight: 400; + text-decoration: none; + border: none; + line-height: 1.0em; + cursor: pointer; +} + +.btn_add { + float: right; + clear: both; + margin-bottom: 10px; +} + +.btn_add a, +.btn_add button, +.btn_add input { + display: inline-block; + background: var(--theme-color-c); + color: #fff; + font-size: 13px; + font-weight: 400; + text-decoration: none; + border: none; + line-height: 1.0em; + cursor: pointer; +} + +.btn_frmline { + display: inline-block; + background: var(--theme-color-c); + color: #fff; + font-weight: 400; + padding: 0 15px; + text-decoration: none; + border: none; + line-height: 28px; + cursor: pointer; + vertical-align: middle; +} + +.btn_del_menu { + display: inline-block; + color: var(--theme-color-c); + font-size: 13px; + font-weight: 400; + border: none; + line-height: 1.0em; + background: transparent; + cursor: pointer; +} + +.sv { + display: none !important; +} + +.color-preview { + display: inline-block; + width: 25px; + height: 25px; + border: 1px solid #cacaca; + vertical-align: middle; +} + +.admin-icon-box { + display: inline-block; + min-width: 25px; + height: 25px; + border: 1px solid #cacaca; + vertical-align: middle; +} + +table { + border-spacing: 0px; +} + +.tbl_wrap table { + width: 100%; + border-collapse: collapse; + table-layout: fixed; +} + +.tbl_head01 thead th { + background: #f9f9f9; + font-weight: 300; + padding: 8px 10px; + border: 1px solid #efeff1; + font-size: 13px; + color: #5b5b5a; +} + +.tbl_head01 .bo-right { + border-right-width: 1px !important; +} + +.tbl_head01 .bo-left { + border-left-width: 1px !important; +} + +.tbl_head01 .bo-top { + border-top-width: 1px !important; +} + +.tbl_head01 .bo-no-right { + border-right-width: 0px !important; +} + +.tbl_head01 .bo-no-left { + border-left-width: 0px !important; +} + +.tbl_head01 .bo-no-top { + border-top-width: 0px !important; +} + +.tbl_head01 .bo-no-bottom { + border-bottom-width: 0px !important; +} + +.tbl_head01 tbody td { + text-align: center; + padding: 7px 10px; + color: #5b5b5a; + border: 1px solid #efeff1; + border-top-width: 0; + border-left-width: 0; + height: 30px; +} + +.tbl_head01 tbody td:first-child { + border-left-width: 1px; +} + +.tbl_head01 tbody td a { + color: var(--theme-color-d); +} + +.tbl_head01 tfoot th, +.tbl_head01 tfoot td { + background: #f9f9f9; + font-weight: 300; + padding: 8px 10px; + border: 1px solid #efeff1; + border-top-width: 0; + border-left-width: 0; + font-size: 13px; + color: #5b5b5a; +} + +.tbl_head01 tfoot td:first-child, +.tbl_head01 tfoot th:first-child { + border-left-width: 1px; +} + +.tbl_frm01 table { + border-top: 1px solid #efeff5; +} + +.tbl_frm01 tbody th, +.tbl_frm01 tbody td { + color: #5b5b5a; + font-weight: 400; + padding: 10px; + border: 0px solid #efeff5; + border-bottom-width: 1px; +} + +.tbl_frm01 tbody th { + background: #f9f9f9; + border-right-width: 1px; +} + +.tbl_frm01 tbody th.bo-right, +.tbl_frm01 tbody td.bo-right { + border-right-width: 1px; +} + +.tbl_frm01 tbody th.bo-left, +.tbl_frm01 tbody td.bo-left { + border-left-width: 1px; +} + +.tbl_frm01 tbody th.bo-top, +.tbl_frm01 tbody td.bo-top { + border-top-width: 1px; +} + +.tbl_frm01 tbody th+td.bo-left { + border-left-width: 0px !important; +} + +table .side-image { + max-width: 100%; +} + +.index-gnb { + display: block; + font-size: 13px; +} + +.index-gnb>ul>li { + display: table; + width: 100%; + table-layout: fixed; + overflow: hidden; + border-bottom: 1px solid rgba(255, 255, 255, .2); +} + +.index-gnb>ul>li>* { + display: table-cell; +} + +.index-gnb>ul>li>a { + width: 130px; + text-align: center; + vertical-align: middle; + font-size: 14px; +} + +.index-gnb>ul>li>ul { + display: block; + padding: 10px; +} + +.index-gnb>ul>li>ul>li { + display: inline-block; + min-width: 130px; + vertical-align: middle; + padding: 5px 0; +} + +.prev_thumb { + max-width: 100px; + max-height: 50px; +} + +.banner-thumb { + max-width: 200px; + max-height: 100px; +} + +.character-thumb { + max-width: 200px; + max-height: 500px; +} + + +.ajax-list-box { + height: 70px; + overflow-y: auto; + border: 1px solid #eaeaea; + margin-top: 10px; + padding: 5px; +} + +.ajax-list-box ul, +.ajax-list-box li { + display: block; + margin: 0; + padding: 0; + position: relative; +} + +.ajax-list-box li { + margin-bottom: 5px; +} + +.ajax-list-box li a { + display: block; + position: relative; + padding: 10px; + border-radius: 3px; + color: #2a2d2a; + background: #fafafa; + text-decoration: none; + font-size: 12px; +} + +.ajax-list-box li a p.point { + color: var(--theme-color-c); +} + +.ajax-list-box li a:hover { + color: #fff; + background: #3a3a3a; +} + +.ajax-list-box li a .ui-thumb { + position: absolute; + top: 10px; + left: 10px; + width: 30px; + line-height: 30px; + overflow: hidden; + text-align: center; +} + +.ajax-list-box li a .ui-thumb img { + max-width: 100%; +} + +.ajax-list-box li a .ui-info { + margin-left: 40px; +} + +.ajax-list-box .no-data { + line-height: 50px; + text-align: center; + margin-top: 10px; +} + +.visit_bar { + position: relative +} + +.visit_bar span { + position: absolute; + top: -8px; + left: 0; + height: 15px; + background: var(--theme-color-c) +} + +/*테마*/ +.theme_p { + margin: 0 0 10px +} + +#theme_list { + padding: 0; + margin: 0; + list-style: none; + width: 1000px; + position: relative +} + +#theme_list:after { + display: block; + visibility: hidden; + clear: both; + content: "" +} + +#theme_list li { + margin: 10px 10px 10px 0; + float: left +} + +#theme_list li:after { + display: block; + visibility: hidden; + clear: both; + content: "" +} + +#theme_list li .tmli_if { + border: 1px solid var(--theme-color-a); + width: 300px; + box-sizing: border-box; + min-height: 240px; + display: flex; + flex-direction: column; +} + +#theme_list li .tmli_if::before { + content: ""; + height: 220px; + background-image: var(--bg); + background-size: cover; + background-position: center; +} + +#theme_list li .tmli_if>img { + width: 300px; + height: 225px; +} + +#theme_list li .tmli_if:hover>img { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50); + -moz-opacity: 0.5; + -khtml-opacity: 0.5; + opacity: 0.5; +} + +#theme_list li .tmli_tit { + position: relative; + border-top: 1px solid var(--theme-color-a); + background: var(--theme-color-0); +} + +#theme_list li .tmli_tit p { + height: 40px; + line-height: 40px; + padding: 0 10px 0; + font-weight: bold; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; +} + +#theme_list li .tmli_tit button.tmli_dt { + position: absolute; + top: 8px; + right: 10px; + padding: 5px; + background: #111; + color: #fff; + display: none; + border: none +} + +#theme_list li .tmli_if:hover button.tmli_dt { + display: block +} + +#theme_list li .theme_sl { + float: left; + border: none; + margin-top: 5px; + padding: 0 5px; + height: 26px; + background: #999; + color: #fff +} + +#theme_list li .theme_sl:hover { + background: var(--theme-color-d); +} + +#theme_list li .theme_deactive { + margin-left: 4px +} + +#theme_list li .theme_sl_use { + background: var(--theme-color-d); + line-height: 26px +} + +#theme_list li .theme_pr { + float: right; + margin-top: 5px; + padding: 0 5px; + height: 26px; + line-height: 24px; + border: 1px solid #ccc; + background: #fafafa; +} + +#theme_list li .theme_preview { + float: right; + margin-top: 5px; + padding: 0 5px; + height: 26px; + border: 1px solid #ccc; + background: #fafafa; +} + +#theme_detail { + position: fixed; + top: 50%; + height: 540px; + width: 900px; + margin-top: -271px; + background: #fff; + background: #f3f3f3; + border: 1px solid #000; + -webkit-box-shadow: 1px 2px 5px rgba(150, 150, 150, 100.5); + -moz-box-shadow: 1px 2px 5px rgba(150, 150, 150, 0.5); + box-shadow: 1px 2px 5px rgba(150, 150, 150, 0.5); + z-index: 1000 +} + +#theme_detail:after { + display: block; + visibility: hidden; + clear: both; + content: "" +} + +#theme_detail h2 { + font-size: 1.25em; + background: #fff; + padding: 0 15px; + line-height: 40px; + border-bottom: 1px solid #d8d8d8; + margin: 0 +} + +.theme_dt_img { + float: left; + padding: 20px +} + +.theme_dt_img img { + border: 1px solid #aaa; + max-width: 600px; +} + +.theme_dt_if { + float: left; + width: 235px; + padding: 20px 0 +} + +.theme_dt_if table { + width: 100%; + border-collapse: collapse; + margin: 15px 0 0; + font-size: 0.92em +} + +.theme_dt_if table th { + padding: 5px; + background: #fff; + border-bottom: 1px solid #f3f3f3; + vertical-align: top; + color: #3f51b5 +} + +.theme_dt_if table td { + padding: 5px; + background: #fff; + border-bottom: 1px solid #f3f3f3; + line-height: 1.56em +} + +.theme_dt_if table td a { + text-decoration: underline +} + +.theme_dt_if p { + line-height: 1.5em +} + +.if_p_bg { + display: inline-block; + width: 20px; + height: 1px; + background: #000; + margin: 30px 0 10px +} + +#theme_detail .theme_dt_btn { + position: absolute; + top: 0px; + right: 0px; + background: #fff; +} + +#theme_detail .theme_dt_btn .close_btn { + border: 0; + border-left: 1px solid #d8d8d8; + background: url('../img/close.png') 50% 50% no-repeat; + width: 40px; + height: 40px; + overflow: hidden; + text-indent: -99999px +} + +#theme_detail .theme_dt_btn .close_btn:hover { + background-color: #eceffc +} + +#theme_detail .theme_dt_btn .btn_03 { + line-height: 28px; + display: inline-block; + vertical-align: top; + margin-top: 6px; + padding: 0 6px; + border-radius: 5px +} + +#theme_detail h2:before { + content: "\F45D"; + font-size: 16px; +} + +.footer-copyright { + font-size: 14px; + color: #A0A0A0; + text-align: center; +} + +.footer-copyright a { + color: #A0A0A0; +} + +table span.dbchk { + display: flex; + align-items: center; + gap: 8px; +} + +table i.dbchk.bi { + font-size: 16px; +} + +table i.dbchk.bi.bi-x-circle { + color: #800000; +} + +.grid_1 { + width: 50px +} + +.grid_2 { + width: 100px +} + +.grid_3 { + width: 150px +} + +.grid_4 { + width: 200px +} + +.grid_5 { + width: 250px +} + +.grid_6 { + width: 300px +} + +.grid_7 { + width: 350px +} + +.grid_8 { + width: 400px +} + +.grid_9 { + width: 450px +} + +.grid_10 { + width: 500px +} + +.grid_11 { + width: 550px +} + +.grid_12 { + width: 600px +} + +.grid_13 { + width: 650px +} + +.grid_14 { + width: 700px +} + +.grid_15 { + width: 750px +} + +.grid_16 { + width: 800px +} + +.grid_17 { + width: 850px +} + +.grid_18 { + width: 900px +} + + +th a { + display: inline-block; + vertical-align: middle; + padding: 3px 10px; + font-weight: 500; + color: #fff; + margin: 5px 0 0; +} + +th a+a { + margin-top: 3px; +} + +td a { + color: var(--theme-color-d); +} + +span.empty { + display: flex; + flex-direction: column; + width: 100%; + min-height: 200px; + justify-content: center; + align-items: center; + color: #A0A0A0; + border: 1px solid #F0F0F0; +} + +/* amber.lib */ + +.adm-form { + padding: 16px; + border-bottom: 1px solid var(--theme-color-e, #efeff5); +} + +.adm-form input, +.adm-form textarea, +.adm-form select { + outline-color: var(--theme-color-e); +} + +.adm-form:hover { + background: var(--theme-color-0); +} + +.adm-form:last-child { + margin-bottom: 8px; +} + +.adm-form-postfix { + min-width: 40px; + text-align: center; +} + +.adm-form-colflex { + display: flex; + gap: 8px; +} + +.adm-form-rowflex { + display: flex; + gap: 8px; + flex-direction: column; + justify-content: center; +} + +.adm-form-colflex .adm-form-flex-full { + flex-grow: 1; +} + +.adm-form-name { + font-size: 16px; + font-weight: bold; +} + +.adm-form-desc { + margin: 8px 0 0 0; + font-size: 14px; +} + +.adm-form-check { + position: relative; + width: 48px; + height: 24px; + margin: 4px 0; +} + +.adm-form-check input[type=checkbox] { + width: 48px; + height: 24px; + position: relative; + cursor: pointer; + opacity: 0; +} + +.adm-form-check input[type=checkbox]+.adm-form-checkbox-cover { + pointer-events: none; + box-shadow: inset 0 0 3px #0004; + background: #DDD; + width: 48px; + height: 24px; + border-radius: 24px; + position: absolute; + left: 0; + top: 0; + display: flex; + justify-content: center; + transition: .25s; +} + +.adm-form-check input[type=checkbox]+.adm-form-checkbox-cover::before { + content: ""; + height: 18px; + width: 18px; + border-radius: 50%; + background: #FFF; + box-shadow: 0 0 3px #0004; + transform: translateX(-12px) translateY(3px); + box-sizing: border-box; + transition: .25s; +} + +.adm-form-check input[type=checkbox]:checked+.adm-form-checkbox-cover { + background: var(--theme-color-e, #06C); +} + +.adm-form-check input[type=checkbox]:checked+.adm-form-checkbox-cover::before { + transform: translateX(12px) translateY(3px); +} + +.adm-form-select { + padding: 4px; +} + +.adm-form-select select { + width: 100%; + box-sizing: border-box; + cursor: pointer; + border: 1px solid var(--theme-color-e, #efeff5); + border-radius: 4px; + padding: 8px; + height: auto +} + +.adm-form-text { + padding: 4px; +} + +.adm-form-text input[type=text] { + border: 1px solid var(--theme-color-e, #efeff5); + padding: 8px; + border-radius: 4px; + height: auto; + width: 100%; + box-sizing: border-box; +} + +.adm-form-file { + display: flex; + flex-direction: column; + gap: 8px; +} + +.adm-form-file>div { + display: flex; + gap: 8px; + align-items: center; +} + +.adm-form-file div>span { + display: inline-block; + min-width: 80px; + font-size: 14px; +} + +.adm-form-file div>input { + flex-grow: 1; + box-sizing: border-box; + border: 1px solid var(--theme-color-e, #efeff5); + padding: 8px; + border-radius: 4px; + height: auto; +} + +.adm-form-file div>input[type=file] { + cursor: pointer; +} + +.adm-form-listedit { + width: 100%; +} + +.adm-form-listedit .adm-listedit-controls { + display: flex; + align-items: center; + gap: 8px; +} + +.adm-listedit-items { + display: flex; + flex-direction: column; + gap: 8px; + margin-bottom: 8px; + overflow-y: auto; + max-height: 360px; + box-sizing: border-box; + border: 1px solid var(--theme-color-e, #efeff5); + border-radius: 4px; + padding: 8px; +} + +.adm-listedit-item { + display: flex; + align-items: center; + gap: 8px; +} + +.adm-form-listedit input[type=text] { + flex-grow: 1; + padding: 8px; + flex-grow: 1; + box-sizing: border-box; + border: 1px solid var(--theme-color-e, #efeff5); + border-radius: 4px; +} + +.adm-listedit-remove, +.adm-listedit-add { + min-width: 100px; + align-self: stretch; + border: 1px solid #ddd; + background: #f8f8f8; + cursor: pointer; + border-radius: 4px; + font-size: 14px; + white-space: nowrap; +} + +.adm-listedit-remove:hover, +.adm-listedit-add:hover { + background: #e8e8e8; +} + +.adm-listedit-remove { + background: var(--theme-color-sub-b, #ff6b6b); + color: #000; + border-color: var(--theme-color-sub, #ff5252); +} + +.adm-listedit-remove:hover { + color: #FFF; + background: var(--theme-color-sub, #ff6b6b); +} + +.adm-listedit-add { + background: var(--theme-color-e, #4CAF50); + color: #000; + border-color: var(--theme-color-d, #45a049); +} + +.adm-listedit-add:hover { + color: #FFF; + background: var(--theme-color-d, #45a049); +} + +.adm-listedit-controls { + text-align: left; +} + +.adm-form-number { + padding: 4px; + display: flex; + align-items: center; + gap: 8px +} + +.adm-form-number input[type=number] { + border: 1px solid var(--theme-color-e, #efeff5); + padding: 8px; + border-radius: 4px; + height: auto; + width: 80px; + min-width: 60px; + box-sizing: border-box; +} + +#page_top a { + display: block; + position: relative; + width: 70px; + height: 70px; + float: right; + border-left: 1px solid #4d515c; + overflow: hidden; + color: #c3c8cc; + text-indent: -999px; +} + +#page_top a:before { + display: block; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + font-family: 'icon'; + line-height: 70px; + font-size: 25px; + text-align: center; + text-indent: 0; +} + +.list_confirm { + display: flex; + justify-content: end; + padding: 16px; + gap: 8px; +} + +.list_confirm>* { + background: var(--theme-color-c); + color: #FFF; + cursor: pointer; + min-width: 64px; + text-align: center; + display: block; + line-height: 1em; + padding: 8px 16px; + box-sizing: border-box; + border: 0; +} + +#gnb { + margin-left: 8px; + display: block; + position: relative; + font-family: 'Noto Sans KR', sans-serif; +} + +#gnb .gnb_1dli { + position: relative; + overflow: hidden; +} + +#gnb .gnb_1dli>a { + padding: 8px; + line-height: 16px; +} + +#gnb .gnb_1dli>ul { + padding: 0; + margin: 0 0 0 8px; +} + +#gnb .gnb_1dli.on>a { + color: var(--theme-200); +} + +#gnb .gnb_1dli.on>ul { + position: relative; + overflow: hidden; + border-radius: 4px; +} + +#gnb .gnb_1dli.on>ul::before { + content: ""; + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: .25; + background: var(--theme-sub-900); + display: block; +} + +#gnb>ul>li>a { + display: block; + padding: 8px 16px; + color: var(--theme-gray-200); + font-size: 15px; + text-decoration: none; +} + +#gnb .gnb_2dli { + position: relative; +} + +#gnb .gnb_2dli>a { + display: block; + padding: 8px 12px; + color: #acaeb2; + font-size: 13px; +} + +#gnb .gnb_2dli>a:before { + font-family: 'icon'; + padding-right: 7px; +} + +#gnb .gnb_2dli.check { + background: var(--theme-color-d-gnb); + border-left: 4px solid var(--theme-color-e); + font-weight: bold; +} + +#gnb .gnb_2dli.check>a { + color: #FFF; +} + +#gnb .gnb_2dli.check>a:before { + color: var(--theme-color-d); + font-weight: normal; +} + +#gnb .gnb_2dli>a:hover { + color: #fff; + background: var(--theme-sub-700); + text-decoration: none; +} + +#gnb .gnb_2dli>a:hover:before { + color: var(--theme-sub-100); +} + +#gnb .gnb_2dli.on>a:hover { + background: var(--theme-700); +} + +#gnb .gnb_2dli.on>a:hover:before { + color: var(--theme-100); +} + +#gnb .gnb_2dul { + display: none; +} + +#gnb .gnb_2dli>a { + display: flex; + align-items: center; +} + +#gnb .gnb_2dli.check>a:after { + content: ""; + display: block; + position: absolute; +} + +#gnb .gnb_2dli>a:before { + content: "\F3E3"; + font-size: 16px !important; + width: 16px; + height: 16px; +} + +#gnb .gnb_2dli>a:before { + content: var(--icon, "\F3E3"); +} + +#fsearch input { + margin: 0; +} + +form .btn_submit { + border: none; + background: var(--theme-color-c); + color: #fff; + font-size: 13px; + width: 50px; + height: 28px; + cursor: pointer; + line-height: 1.0em; +} + +.new_win { + padding: 20px; +} + +.new_win_desc { + padding: 10px; + margin: 20px 0; + background: var(--theme-gray-500); + color: #fff; +} + +.win-guide { + display: block; + position: relative; + padding: 10px; + border: 1px solid #efeff5; + background: #f9f9f9; +} + +.win-guide em { + color: var(--theme-color-c); + font-weight: 800; + font-style: normal; + padding: 0 10px; +} + +.btn_win02 { + padding: 20px; + text-align: center; +} + +.btn_win02>* { + display: inline-block; + background: var(--theme-color-c); + color: #fff; + font-size: 13px; + height: 30px; + padding: 0 20px; + font-weight: 400; + text-decoration: none; + border: none; + line-height: 1.0em; + cursor: pointer; +} + +.add_select { + display: inline-block; + background: #b0c4de; + color: #fff; + font-size: 13px; + height: 30px; + padding: 0 20px; + font-weight: 400; + text-decoration: none; + border: none; + line-height: 1.0em; + cursor: pointer; +} + +.full_input { + width: 100% !important; +} + +.menu_list[data-name="구분선"] td { + background: #efeff1; +} + +.menu_list[data-name="구분선"] .td_category~td:not(.order) input, +.menu_list[data-name="구분선"] .td_category~td:not(.order) select { + display: none; +} + +/* 2.4.0 */ + +body a { + text-decoration: none; + color: var(--theme-sub-500); +} + +body a:hover { + text-decoration: underline; + color: var(--theme-sub-300); +} + +html { + width: 100vw; + height: 100vh; + overflow: hidden; +} + +body { + position: relative; + height: 100vh; + overflow: auto; +} + +body #header { + position: fixed; + left: 0; + top: 0; + bottom: 0; + width: 240px; +} + +body #header nav>ul { + padding: unset; +} + +body #header ul { + list-style: none; + padding: 0 0 0 16px; +} + +body #wrapper { + display: block; + position: relative; + margin: 0 0 0 248px; + height: calc(100vh - 16px); + width: calc(100% - 256px); + overflow: hidden; + border-radius: 4px; + box-sizing: border-box; +} + +body #wrapper .admin-content { + height: 100%; + width: 100%; + position: relative; + overflow: hidden; + display: flex; + flex-direction: column; +} + +body #wrapper .admin-content #page_top { + position: sticky; + top: 0; + margin: 0; + background: var(--theme-gray-800); + color: var(--theme-sub-50); +} + +body #wrapper .admin-content #page_top h2 { + display: flex; + align-items: center; + height: 64px; + margin: 0; + padding: 0; + font-weight: normal; + font-size: 20px; + line-height: 32px; + padding-left: 32px; +} + +body #wrapper .admin-content .footer-copyright { + position: sticky; + bottom: 0; + padding: 8px 16px; + background: var(--theme-gray-800); + text-align: center; +} + +body #container { + overflow: auto; + height: 100%; + flex-grow: 1; + padding: 20px; + box-sizing: border-box; + background: var(--white); +} + +.anchor { + display: flex; + padding: 0; + margin: 0; + list-style: none; + border-bottom: 1px solid var(--theme-300); + margin-bottom: 10px; +} + +.anchor li a { + display: block; + padding: 8px 12px; + color: var(--theme-gray-700); + border-top: 1px solid transparent; +} + +.anchor li a.active { + border: 1px solid var(--theme-300); + border-radius: 4px 4px 0 0; + border-bottom: 1px solid var(--white); + margin-bottom: -1px; + color: var(--black); +} + +.anchor li a:hover { + text-decoration: none; +} + +.btn_confirm button { + background: transparent; +} + +#admin_prof { + height: 80px; +} + +#admin_prof h1 { + display: flex; + height: 70px; + justify-content: center; + align-items: center; +} + +#header p { + display: flex; + justify-content: space-between; + padding: 8px; + background: var(--theme-gray-600); + border-radius: 4px; + margin-left: 8px; +} + +#header p a { + color: #FFF; +} + +.admin_theme { + font-size: 18px; + padding-left: 24px; + display: block; + position: relative; +} + +.admin_theme::before { + font-family: 'icon'; + content: "\F4B0"; + position: absolute; + left: 0; + right: 0; +} + +.btn_confirm { + display: block; + position: absolute; + top: 0; + right: 0; + z-index: 9999; + padding: 0; +} + +.btn_confirm>* { + display: block; + position: relative; + height: 64px; + width: 64px; + float: left; + border: none; + color: #fff; + cursor: pointer; +} + +.btn_confirm .btn { + display: flex; + justify-content: center; + align-items: center; + border: 2px solid transparent; + box-sizing: border-box; + transition: .25s; +} + +.btn_confirm .btn>span { + position: relative; + text-align: center; + z-index: 0; +} + +.btn_confirm .btn>input[type=submit], +.btn_confirm .btn>.btn_submit { + position: absolute; + display: block; + width: 100%; + height: 100%; + opacity: 0; + z-index: 1; + cursor: pointer; +} + +.manage_buttons { + display: flex; + gap: 8px; + justify-content: space-between; +} + +.btn_confirm .btn, +.btn_confirm a, +.btn_confirm button { + background: var(--theme-gray-600); + margin-left: 1px; +} + +.btn_confirm .btn>span, +.btn_confirm a>*, +.btn_confirm button>* { + pointer-events: none; +} + +.btn_confirm .btn>input[type=submit], +.btn_confirm a, +.btn_confirm button { + box-sizing: border-box; + border: 2px solid transparent; + display: flex; + justify-content: center; + align-items: center; + padding: 0; + transition: .25s; +} + +.btn_confirm a:hover, +.btn_confirm button:hover, +.btn_confirm .btn:hover { + text-decoration: none; + color: var(--white); + background-color: var(--theme-sub-700); +} + +#wrap { + display: block; + position: relative; + margin: 0; + padding: 8px 0; + box-sizing: border-box; + background: var(--theme-gray-900); + height: 100%; +} + +/* ex css */ + +.setter { + display: block; +} + +.setter>div.css-setting-multi { + display: flex; + gap: 8px; + border: 1px solid #F4F4F2; + align-items: center; + padding: 4px 8px; + justify-content: end; +} + +.setter>div.css-setting-multi input { + display: inline-block; + flex: 1; + max-width: 80px; /* firefox fix */ + width: auto; +} + +.setter>div.css-setting-multi>.css-left-desc { + display: block; + text-align: center; + min-width: 24px; +} + +.setter>div.css-setting-multi>.css-setting-radius { + min-width: 24px; + width: 24px; + height: 16px; + background: #866; + box-sizing: border-box; +} diff --git a/AvocadoAmber/adm/design_form_css.php b/AvocadoAmber/adm/design_form_css.php index 83f1824..d53dba1 100644 --- a/AvocadoAmber/adm/design_form_css.php +++ b/AvocadoAmber/adm/design_form_css.php @@ -15,6 +15,44 @@ $tab_width = 1024; $is_item_area = false; $is_comment_area = false; +if (!function_exists('hex2rgba')) { + function hex2rgba($color, $opacity = false) + { + $default = 'rgb(0,0,0)'; + if (empty($color)) + return $default; + if ($color[0] == '#') { + $color = substr($color, 1); + } + if (strlen($color) == 6) { + $hex = [$color[0] . $color[1], $color[2] . $color[3], $color[4] . $color[5]]; + } elseif (strlen($color) == 3) { + $hex = [$color[0] . $color[0], $color[1] . $color[1], $color[2] . $color[2]]; + } else { + return $default; + } + + $rgb = array_map('hexdec', $hex); + + if ($opacity) { + $opacity = (100 - $opacity) / 100; + if (abs($opacity) > 1) + $opacity = 1.0; + $output = 'rgba(' . implode(",", $rgb) . ',' . $opacity . ')'; + } else { + $output = 'rgb(' . implode(",", $rgb) . ')'; + } + return $output; + } +} + +function print_css($key, $index, $css_value) { + global $css; + + if (array_key_exists($key, $css) && array_key_exists($index, $css[$key])) { + echo $css_value; + } +} ?> @charset "utf-8"; @@ -49,30 +87,24 @@ $middle_content_width = $content_width + 40; 기본 폰트 설정 ***************************************************************/ -* {} +* {} body { } .txt-default { } a, .txt-point, .sch_word { } -.txt-menu-font {} +.txt-menu-font {} /************************************************************** @@ -81,25 +113,17 @@ if ($css['color_point'][0]) .enterWrapper { } .enterWrapper .guide { } @@ -107,16 +131,11 @@ if ($css['intro'][5]) .admin-preview-box, html.single:before { } } @@ -124,16 +143,11 @@ if ($css['background'][5]) .admin-preview-box, html.single:before { } } @@ -143,20 +157,16 @@ if ($css['m_background'][5]) ***************************************************************/ /* 관리자 미리보기 스타일 정의 */ -.admin-preview-box .gnbWrap { } +.admin-preview-box .gnbWrap { } .admin-preview-box .gnbWrap .tooltips { -} +} #topCont a .icons, .icons-link-box .icons, .admin-preview-box .gnbWrap .icons { } #topCont a .icons:before, @@ -174,43 +184,29 @@ switch ($css['menu_icon'][13]) { echo ""; break; } -if ($css['menu_icon'][0]) - echo "background-color:" . hex2rgba($css['menu_icon'][0], $css['menu_icon'][1]) . "; "; -if ($css['menu_icon'][2]) - echo "background:linear-gradient(0deg, " . hex2rgba($css['menu_icon'][2], $css['menu_icon'][3]) . " 0%, " . hex2rgba($css['menu_icon'][4], $css['menu_icon'][5]) . " 100%); "; -if ($css['menu_icon'][6]) - echo "border-color:" . hex2rgba($css['menu_icon'][6], $css['menu_icon'][7]) . "; "; -if ($css['menu_icon'][8]) - echo "border-style:{$css['menu_icon'][8]}; "; -if ($css['menu_icon'][9]) - echo "border-width:{$css['menu_icon'][9]}px; "; +print_css('menu_icon', 0, "background-color:" . hex2rgba($css['menu_icon'][0], $css['menu_icon'][1]) . "; "); +print_css('menu_icon', 2, "background:linear-gradient(0deg, " . hex2rgba($css['menu_icon'][2], $css['menu_icon'][3]) . " 0%, " . hex2rgba($css['menu_icon'][4], $css['menu_icon'][5]) . " 100%); "); +print_css('menu_icon', 6, "border-color:" . hex2rgba($css['menu_icon'][6], $css['menu_icon'][7]) . "; "); +print_css('menu_icon', 8, "border-style:{$css['menu_icon'][8]}; "); +print_css('menu_icon', 9, "border-width:{$css['menu_icon'][9]}px; "); ?>} .admin-preview-box .gnbWrap .tooltips { } /* 사용자단 스타일 정의 */ #header .gnbWrap, -#mo_header .gnbWrap { } +#mo_header .gnbWrap { } #header .gnbWrap .tooltips, #mo_header .gnbWrap .tooltips { -} +} @media all and (min-width: px) { #header { @@ -318,8 +314,7 @@ switch ($css['use_header'][0]) { #header .gnbWrap .icons { } @@ -336,57 +331,40 @@ switch ($css['menu_icon'][13]) { echo ""; break; } -if ($css['menu_icon'][0]) - echo "background-color:" . hex2rgba($css['menu_icon'][0], $css['menu_icon'][1]) . "; "; -if ($css['menu_icon'][2]) - echo "background:linear-gradient(0deg, " . hex2rgba($css['menu_icon'][2], $css['menu_icon'][3]) . " 0%, " . hex2rgba($css['menu_icon'][4], $css['menu_icon'][5]) . " 100%); "; -if ($css['menu_icon'][6]) - echo "border-color:" . hex2rgba($css['menu_icon'][6], $css['menu_icon'][7]) . "; "; -if ($css['menu_icon'][8]) - echo "border-style:{$css['menu_icon'][8]}; "; -if ($css['menu_icon'][9]) - echo "border-width:{$css['menu_icon'][9]}px; "; +print_css('menu_icon', 0, "background-color:" . hex2rgba($css['menu_icon'][0], $css['menu_icon'][1]) . "; "); +print_css('menu_icon', 2, "background:linear-gradient(0deg, " . hex2rgba($css['menu_icon'][2], $css['menu_icon'][3]) . " 0%, " . hex2rgba($css['menu_icon'][4], $css['menu_icon'][5]) . " 100%); "); +print_css('menu_icon', 6, "border-color:" . hex2rgba($css['menu_icon'][6], $css['menu_icon'][7]) . "; "); +print_css('menu_icon', 8, "border-style:{$css['menu_icon'][8]}; "); +print_css('menu_icon', 9, "border-width:{$css['menu_icon'][9]}px; "); ?>} #header .gnbWrap .tooltips { } } @media all and (max-width: px) { #mo_header { } #mo_header .gnbWrap a { } #mo_header .gnbWrap li.line { } body.open-gnb .control-mobile-menu { } } @@ -398,52 +376,38 @@ if ($css['menu_tooltip'][2]) *::-webkit-scrollbar { } *::-webkit-scrollbar-track { } *::-webkit-scrollbar-thumb { } * { -} +} ::selection { } ::-moz-selection { } ::-webkit-selection { } @@ -453,117 +417,79 @@ if ($css['color_bak'][0]) .ui-btn { } .ui-btn:hover { } .ui-btn.point { } .ui-btn.point:hover { } .ui-btn.etc { } .ui-btn.etc:hover { } a.ui-btn { } .ui-btn.small { } a.ui-btn.small { } .ui-btn.big { } a.ui-btn.big { } @@ -571,11 +497,9 @@ if ($css['input_bak'][2]) 검색박스 영역 ***************************************************************/ -#bo_sch { } +#bo_sch { } #bo_sch button { -} +} /************************************************************** @@ -586,30 +510,21 @@ if ($css['input_bak'][2]) #bo_w, #bo_v { } #bo_v .board-title, @@ -617,35 +532,28 @@ if ($css['board_table'][12]) #bo_v #bo_vc, #bo_v #bo_v_bot { } #bo_v .board-title, #bo_v .board-info { } #bo_v #bo_vc, #bo_v #bo_v_bot { } #bo_v .board-title > * { } #bo_v #bo_vc .is-reply { } @@ -656,28 +564,23 @@ if ($css['form_body'][4]) .pg_wrap { } .pg_wrap .pg_page { } .pg_wrap .pg_page:hover { } .pg_wrap .pg_control { } .pg_wrap .pg_current { } @@ -687,8 +590,7 @@ if ($css['color_point'][0]) hr.line { } @@ -703,8 +605,7 @@ input[type="number"], input[type="password"], select { } .form-input, @@ -716,28 +617,19 @@ textarea, select { } *::placeholder { -} +} /************************************************************** @@ -746,58 +638,40 @@ if ($css['input_bak'][11]) .theme-box { } .board-notice-box { } @@ -809,75 +683,55 @@ for ($i = 0; $i < count($css['board_notice']['border']); $i++) { .theme-list thead th { } .theme-list tbody th, .theme-list tbody td { } .theme-form tbody th { } .theme-form tbody td { } @@ -891,33 +745,23 @@ for ($i = 0; $i < count($css['form_body']['border']); $i++) { #load_log_board { } #log_list { } @@ -926,40 +770,29 @@ for ($i = 0; $i < count($css['mmb_list']['border']); $i++) { } #log_list .item .item-inner .ui-pic { } @@ -968,42 +801,31 @@ for ($i = 0; $i < count($css['mmb_log']['border']); $i++) { } #log_list .item .item-inner .ui-comment { } #log_list .item .item-inner .co-header p.owner, #log_list .item .item-inner .co-header p.owner a { } #log_list .item .item-inner .co-footer .date { } #log_list .item .item-inner .co-content .other-site-link { } #log_list .item .item-inner .co-content .link_hash_tag { } #log_list .item .item-inner .co-content .log_link_tag { } diff --git a/AvocadoAmber/adm/items/config/addon_config.php b/AvocadoAmber/adm/items/config/addon_config.php index cace59e..fb5a5c4 100644 --- a/AvocadoAmber/adm/items/config/addon_config.php +++ b/AvocadoAmber/adm/items/config/addon_config.php @@ -19,89 +19,89 @@ include_once G5_ADMIN_PATH . '/admin.head.php'; add_stylesheet(get_embed_file("css", G5_PATH . "/adm/css/addon_config.css"), 1); ?> -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - - - -
- 애드온 이름 - - name ?> -
- 애드온 제작자 - - link ? "link . "\" target=\"_blank\">" . $addon->author . " [{$addon->link}]" : $addon->author ?> -
- 애드온 설명 - - description ?> -
- 애드온 버전 - - version ?> -
-
-
- -
- - printConfigForm(); - } - ?> -
-
- save - -
-
-
-
+
+ +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ 애드온 이름 + + name ?> +
+ 애드온 제작자 + + link ? "link . "\" target=\"_blank\">" . $addon->author . " [{$addon->link}]" : $addon->author ?> +
+ 애드온 설명 + + description ?> +
+ 애드온 버전 + + version ?> +
+
+
+ + + printConfigForm(); + } + ?> + 애드온을 선택하세요"; + } + ?> +
-
+
+
+ save + +
+
+
diff --git a/AvocadoAmber/adm/theme.php b/AvocadoAmber/adm/theme.php index 27f5240..c17783f 100644 --- a/AvocadoAmber/adm/theme.php +++ b/AvocadoAmber/adm/theme.php @@ -23,7 +23,7 @@ $g5['title'] = "테마설정"; include_once "./admin.head.php"; ?> -
+
설치된 테마
diff --git a/AvocadoAmber/adm/write_count.php b/AvocadoAmber/adm/write_count.php index f7ed2b4..78a5a90 100644 --- a/AvocadoAmber/adm/write_count.php +++ b/AvocadoAmber/adm/write_count.php @@ -178,9 +178,9 @@ switch ($day) { var plot1 = $.jqplot('chart1', [line1, line2], { seriesDefaults: { - renderer: $.jqplot.BarRenderer, + renderer: $.jqplot.BarRenderer, - pointLabels: { show: true } + pointLabels: { show: true } }, axes: { xaxis: { @@ -198,8 +198,10 @@ switch ($day) { }); }); - + +
+= (G5_SERVER_TIME - $config['cf_delay set_session('ss_datetime', G5_SERVER_TIME); $wr = get_write($write_table, $wr_id); -if (empty($wr['wr_id'])) +if (empty($wr['wr_id']) && $wr_id != -1) alert("글이 존재하지 않습니다.\\n글이 삭제되었거나 이동하였을 수 있습니다."); diff --git a/AvocadoAmber/bbs/write_update_file.php b/AvocadoAmber/bbs/write_update_file.php index 434a580..f889cfe 100644 --- a/AvocadoAmber/bbs/write_update_file.php +++ b/AvocadoAmber/bbs/write_update_file.php @@ -79,7 +79,7 @@ $notice_array = explode(",", $board['bo_notice']); if ($w == 'u' || $w == 'r') { $wr = get_write($write_table, $wr_id); - if (!$wr['wr_id']) { + if (!$wr['wr_id'] && $wr_parent != -1) { alert("글이 존재하지 않습니다.\\n글이 삭제되었거나 이동하였을 수 있습니다."); } } diff --git a/AvocadoAmber/classes/setting/setting.class.php b/AvocadoAmber/classes/setting/setting.class.php index c59eabc..2640bd9 100644 --- a/AvocadoAmber/classes/setting/setting.class.php +++ b/AvocadoAmber/classes/setting/setting.class.php @@ -478,10 +478,10 @@ class Setting "html" => "{$desc}
-
Xcs_name}\" min=\"-9999\" max=\"9999\" size=\"20\" name=\"cs_etc_{$idx}[{$this->idx}][]\" value=\"{$values[1]}\"/>px
-
Ycs_name}\" min=\"-9999\" max=\"9999\" size=\"20\" name=\"cs_etc_{$idx}[{$this->idx}][]\" value=\"{$values[2]}\"/>px
-
너비cs_name}\" min=\"-9999\" max=\"9999\" size=\"20\" name=\"cs_etc_{$idx}[{$this->idx}][]\" value=\"{$values[3]}\"/>px
-
높이cs_name}\" min=\"-9999\" max=\"9999\" size=\"20\" name=\"cs_etc_{$idx}[{$this->idx}][]\" value=\"{$values[4]}\"/>px
+
Xcs_name}\" min=\"-9999\" max=\"9999\" size=\"20\" name=\"cs_etc_{$idx}[{$this->idx}][]\" value=\"{$values[1]}\"/>px
+
Ycs_name}\" min=\"-9999\" max=\"9999\" size=\"20\" name=\"cs_etc_{$idx}[{$this->idx}][]\" value=\"{$values[2]}\"/>px
+
너비cs_name}\" min=\"-9999\" max=\"9999\" size=\"20\" name=\"cs_etc_{$idx}[{$this->idx}][]\" value=\"{$values[3]}\"/>px
+
높이cs_name}\" min=\"-9999\" max=\"9999\" size=\"20\" name=\"cs_etc_{$idx}[{$this->idx}][]\" value=\"{$values[4]}\"/>px
" @@ -514,10 +514,10 @@ class Setting "html" => "{$desc}
-
cs_name}\" min=\"-9999\" max=\"9999\" size=\"20\" name=\"cs_etc_{$idx}[{$this->idx}][]\" value=\"{$values[1]}\"/>px
-
cs_name}\" min=\"-9999\" max=\"9999\" size=\"20\" name=\"cs_etc_{$idx}[{$this->idx}][]\" value=\"{$values[2]}\"/>px
-
cs_name}\" min=\"-9999\" max=\"9999\" size=\"20\" name=\"cs_etc_{$idx}[{$this->idx}][]\" value=\"{$values[3]}\"/>px
-
cs_name}\" min=\"-9999\" max=\"9999\" size=\"20\" name=\"cs_etc_{$idx}[{$this->idx}][]\" value=\"{$values[4]}\"/>px
+
cs_name}\" min=\"-9999\" max=\"9999\" size=\"20\" name=\"cs_etc_{$idx}[{$this->idx}][]\" value=\"{$values[1]}\"/>px
+
cs_name}\" min=\"-9999\" max=\"9999\" size=\"20\" name=\"cs_etc_{$idx}[{$this->idx}][]\" value=\"{$values[2]}\"/>px
+
cs_name}\" min=\"-9999\" max=\"9999\" size=\"20\" name=\"cs_etc_{$idx}[{$this->idx}][]\" value=\"{$values[3]}\"/>px
+
cs_name}\" min=\"-9999\" max=\"9999\" size=\"20\" name=\"cs_etc_{$idx}[{$this->idx}][]\" value=\"{$values[4]}\"/>px
" @@ -550,10 +550,10 @@ class Setting "html" => "{$desc}
-
cs_name}\" min=\"-9999\" max=\"9999\" size=\"20\" name=\"cs_etc_{$idx}[{$this->idx}][]\" value=\"{$values[1]}\"/>px
-
cs_name}\" min=\"-9999\" max=\"9999\" size=\"20\" name=\"cs_etc_{$idx}[{$this->idx}][]\" value=\"{$values[2]}\"/>px
-
cs_name}\" min=\"-9999\" max=\"9999\" size=\"20\" name=\"cs_etc_{$idx}[{$this->idx}][]\" value=\"{$values[3]}\"/>px
-
cs_name}\" min=\"-9999\" max=\"9999\" size=\"20\" name=\"cs_etc_{$idx}[{$this->idx}][]\" value=\"{$values[4]}\"/>px
+
cs_name}\" min=\"-9999\" max=\"9999\" size=\"20\" name=\"cs_etc_{$idx}[{$this->idx}][]\" value=\"{$values[1]}\"/>px
+
cs_name}\" min=\"-9999\" max=\"9999\" size=\"20\" name=\"cs_etc_{$idx}[{$this->idx}][]\" value=\"{$values[2]}\"/>px
+
cs_name}\" min=\"-9999\" max=\"9999\" size=\"20\" name=\"cs_etc_{$idx}[{$this->idx}][]\" value=\"{$values[3]}\"/>px
+
cs_name}\" min=\"-9999\" max=\"9999\" size=\"20\" name=\"cs_etc_{$idx}[{$this->idx}][]\" value=\"{$values[4]}\"/>px
" @@ -623,9 +623,9 @@ class Setting $key1 = "cs_etc_{$idx}"; $key2 = "cs_etc_{$idx2}"; if (is_array($default) && isset($default[0]) && isset($default[1])) { - if (!isset($this->$key1)) + if (empty($this->$key1)) $this->$key1 = array_key_exists($default[0], $options) ? $default[0] : ""; - if (!isset($this->$key2)) + if (empty($this->$key2) && $this->$key2 !== 0) $this->$key2 = intval($default[1]); } $options_html = ""; @@ -665,15 +665,15 @@ class Setting $key3 = "cs_etc_{$idx3}"; if (is_array($default) && isset($default[0]) && isset($default[1])) { - if (!isset($this->$key1)) + if (empty($this->$key1)) $this->$key1 = array_key_exists($default[0], $options) ? $default[0] : ""; - if (!isset($this->$key2)) + if (empty($this->$key2) && $this->$key2 !== 0) $this->$key2 = intval($default[1]); } - if (is_array($default) && isset($default[2])) { - if (!isset($this->$key3)) + if (empty($this->$key3) && $this->$key3 !== 0) { + if ($this->$key3 === "" || !isset($this->$key3)) $this->$key3 = intval($default[2]); } diff --git a/AvocadoAmber/common.php b/AvocadoAmber/common.php index 7cc061b..a9d8c14 100644 --- a/AvocadoAmber/common.php +++ b/AvocadoAmber/common.php @@ -6,7 +6,7 @@ /******************************************************************************* ** 공통 변수, 상수, 코드 *******************************************************************************/ -error_reporting(E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_PARSE | E_USER_ERROR); +error_reporting(E_CORE_ERROR | E_COMPILE_ERROR | E_ERROR | E_PARSE | E_USER_ERROR); // 보안설정이나 프레임이 달라도 쿠키가 통하도록 설정 header('P3P: CP="ALL CURa ADMa DEVa TAIa OUR BUS IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC OTC"'); @@ -420,10 +420,10 @@ if (file_exists($dbconfig_file)) { -
- AVOCADO EDITION - Message -
+

아보카도 에디션을 먼저 설치해주십시오.

다음 파일을 찾을 수 없습니다.

@@ -462,10 +462,10 @@ if (!defined('G5_IS_ADMIN')) { -
- AVOCADO EDITION - Message -
+

아보카도 에디션 설정을 완료해주십시오.


diff --git a/AvocadoAmber/css/fonts/SCDream1.otf b/AvocadoAmber/css/fonts/SCDream1.otf new file mode 100644 index 0000000..c8eac97 Binary files /dev/null and b/AvocadoAmber/css/fonts/SCDream1.otf differ diff --git a/AvocadoAmber/css/fonts/SCDream2.otf b/AvocadoAmber/css/fonts/SCDream2.otf new file mode 100644 index 0000000..c5625d9 Binary files /dev/null and b/AvocadoAmber/css/fonts/SCDream2.otf differ diff --git a/AvocadoAmber/css/fonts/SCDream3.otf b/AvocadoAmber/css/fonts/SCDream3.otf new file mode 100644 index 0000000..28a160c Binary files /dev/null and b/AvocadoAmber/css/fonts/SCDream3.otf differ diff --git a/AvocadoAmber/css/fonts/SCDream4.otf b/AvocadoAmber/css/fonts/SCDream4.otf new file mode 100644 index 0000000..1978ea4 Binary files /dev/null and b/AvocadoAmber/css/fonts/SCDream4.otf differ diff --git a/AvocadoAmber/css/fonts/SCDream5.otf b/AvocadoAmber/css/fonts/SCDream5.otf new file mode 100644 index 0000000..628e828 Binary files /dev/null and b/AvocadoAmber/css/fonts/SCDream5.otf differ diff --git a/AvocadoAmber/css/fonts/SCDream6.otf b/AvocadoAmber/css/fonts/SCDream6.otf new file mode 100644 index 0000000..4e20297 Binary files /dev/null and b/AvocadoAmber/css/fonts/SCDream6.otf differ diff --git a/AvocadoAmber/css/fonts/SCDream7.otf b/AvocadoAmber/css/fonts/SCDream7.otf new file mode 100644 index 0000000..7e38170 Binary files /dev/null and b/AvocadoAmber/css/fonts/SCDream7.otf differ diff --git a/AvocadoAmber/css/fonts/SCDream8.otf b/AvocadoAmber/css/fonts/SCDream8.otf new file mode 100644 index 0000000..5d7e4be Binary files /dev/null and b/AvocadoAmber/css/fonts/SCDream8.otf differ diff --git a/AvocadoAmber/css/fonts/SCDream9.otf b/AvocadoAmber/css/fonts/SCDream9.otf new file mode 100644 index 0000000..f6db18f Binary files /dev/null and b/AvocadoAmber/css/fonts/SCDream9.otf differ diff --git a/AvocadoAmber/css/scdream.css b/AvocadoAmber/css/scdream.css new file mode 100644 index 0000000..8eb38d4 --- /dev/null +++ b/AvocadoAmber/css/scdream.css @@ -0,0 +1,55 @@ +@charset "utf-8"; + +@font-face { + font-family: 'SCDream'; + font-weight: 900; + src: url(./fonts/SCDream9.otf); +} + +@font-face { + font-family: 'SCDream'; + font-weight: 800; + src: url(./fonts/SCDream8.otf); +} + +@font-face { + font-family: 'SCDream'; + font-weight: 700; + src: url(./fonts/SCDream7.otf); +} + +@font-face { + font-family: 'SCDream'; + font-weight: 600; + src: url(./fonts/SCDream6.otf); +} + +@font-face { + font-family: 'SCDream'; + font-weight: 500; + src: url(./fonts/SCDream5.otf); +} + +@font-face { + font-family: 'SCDream'; + font-weight: 400; + src: url(./fonts/SCDream4.otf); +} + +@font-face { + font-family: 'SCDream'; + font-weight: 300; + src: url(./fonts/SCDream3.otf); +} + +@font-face { + font-family: 'SCDream'; + font-weight: 200; + src: url(./fonts/SCDream2.otf); +} + +@font-face { + font-family: 'SCDream'; + font-weight: 100; + src: url(./fonts/SCDream1.otf); +} diff --git a/AvocadoAmber/extend/character.lib.php b/AvocadoAmber/extend/character.lib.php index de3f84d..9e5ac45 100644 --- a/AvocadoAmber/extend/character.lib.php +++ b/AvocadoAmber/extend/character.lib.php @@ -9,7 +9,7 @@ Character::resetSearchCount(); if ($is_admin) { if (!sql_table_exists($g5["article_table"])) { - sql_query("CREATE TABLE IF NOT EXISTS `avo_article` ( + sql_query("CREATE TABLE IF NOT EXISTS `{$g5["article_table"]}` ( `ar_id` INT(11) NOT NULL AUTO_INCREMENT, `ar_theme` VARCHAR(255) NOT NULL DEFAULT '', `ar_code` VARCHAR(255) NOT NULL DEFAULT '', @@ -26,7 +26,7 @@ if ($is_admin) { } if (!sql_table_exists($g5["article_default_table"])) { - sql_query("CREATE TABLE IF NOT EXISTS `avo_article_default` ( + sql_query("CREATE TABLE IF NOT EXISTS `{$g5["article_default_table"]}` ( `ad_id` INT(11) NOT NULL AUTO_INCREMENT , `ad_use_thumb` INT(11) NOT NULL DEFAULT '0', `ad_use_head` INT(11) NOT NULL DEFAULT '0', @@ -56,7 +56,7 @@ if ($is_admin) { } if (!sql_table_exists($g5["value_table"])) { - sql_query("CREATE TABLE IF NOT EXISTS `avo_article_value` ( + sql_query("CREATE TABLE IF NOT EXISTS `{$g5["value_table"]}` ( `av_id` INT(11) NOT NULL AUTO_INCREMENT , `ch_id` INT(11) NOT NULL DEFAULT '0', `ar_theme` VARCHAR(255) NOT NULL DEFAULT '', diff --git a/AvocadoAmber/head.sub.php b/AvocadoAmber/head.sub.php index 08e6120..64dc5e8 100644 --- a/AvocadoAmber/head.sub.php +++ b/AvocadoAmber/head.sub.php @@ -87,9 +87,10 @@ $html_class .= $_COOKIE['header_close'] == 'close' ? " close-header" : ""; include_once __DIR__ . "/_extra_font.php"; if (defined('G5_IS_ADMIN')) { - echo get_embed_file("css", G5_ADMIN_PATH . '/css/admin.css') . PHP_EOL; - echo get_embed_file("css", G5_ADMIN_PATH . '/css/admin.layout.css') . PHP_EOL; - echo get_embed_file("css", G5_ADMIN_PATH . '/css/admin.amber.lib.css') . PHP_EOL; + // echo get_embed_file("css", G5_ADMIN_PATH . '/css/admin.css') . PHP_EOL; + // echo get_embed_file("css", G5_ADMIN_PATH . '/css/admin.layout.css') . PHP_EOL; + // echo get_embed_file("css", G5_ADMIN_PATH . '/css/admin.amber.lib.css') . PHP_EOL; + echo get_embed_file("css", G5_ADMIN_PATH . '/css/default.css') . PHP_EOL; echo get_embed_file("css", G5_ADMIN_PATH . '/css/amberstone.cp.css') . PHP_EOL; } else { if (defined('G5_THEME_PATH') && file_exists(G5_THEME_PATH . "/css/default.css")) { diff --git a/AvocadoAmber/install/index.php b/AvocadoAmber/install/index.php index eddc611..e1f7f59 100644 --- a/AvocadoAmber/install/index.php +++ b/AvocadoAmber/install/index.php @@ -1,13 +1,13 @@ - -
- AVOCADO EDITION - INSTALLATION -
- +

- 디렉토리의 퍼미션을 705로 변경하여 주십시오.
-

#> chmod 705 
- 또는
-
#> chmod uo+rx 

- 위 명령 실행후 브라우저를 새로고침 하십시오. + 디렉토리의 퍼미션을 705로 변경하여 주십시오.
+ 아래 내용을 클릭하면 명령어가 전체 선택됩니다.
+
chmod 705 
+ 또는
+
chmod uo+rx 

+ 위 명령 실행후 브라우저를 새로고침 하십시오.

- 디렉토리의 퍼미션을 707로 변경하여 주십시오.
-

#> chmod 707 
- 또는
-
#> chmod uo+rwx 

- 위 명령 실행후 브라우저를 새로고침 하십시오. + 디렉토리의 퍼미션을 707로 변경하여 주십시오.
+ 아래 내용을 클릭하면 명령어가 전체 선택됩니다.
+
chmod 707 
+ 또는
+
chmod uo+rwx 

+ 위 명령 실행후 브라우저를 새로고침 하십시오.

- 디렉토리의 퍼미션을 707로 변경하여 주십시오.
-

#> chmod 707 
- 또는
-
#> chmod uo+rwx 

- 위 명령 실행후 브라우저를 새로고침 하십시오. + 디렉토리의 퍼미션을 707로 변경하여 주십시오.
+ 아래 내용을 클릭하면 명령어가 전체 선택됩니다.
+
chmod 707 
+ 또는
+
chmod uo+rwx 

+ 위 명령 실행후 브라우저를 새로고침 하십시오.

- AVOCADO EDITION + AVOCADO EDITION: AMBER

GPL! OPEN SOURCE GNUBOARD

diff --git a/AvocadoAmber/install/install_config.php b/AvocadoAmber/install/install_config.php index 38497af..2f6a804 100644 --- a/AvocadoAmber/install/install_config.php +++ b/AvocadoAmber/install/install_config.php @@ -102,7 +102,7 @@ if (!isset($_POST['agree']) || $_POST['agree'] != '동의함') {

- 주의! 이미 이 존재한다면 DB 자료가 망실되므로 주의하십시오.
+ 이미 를 설치한 경우, 재설치 시 기존 데이터베이스를 잃어버리므로 주의해 주시기 바랍니다!
주의사항을 이해했으며, 아보카도 에디션 설치를 계속 진행하시려면 다음을 누르십시오.

diff --git a/AvocadoAmber/install/install_db.php b/AvocadoAmber/install/install_db.php index 17abf39..68608ad 100644 --- a/AvocadoAmber/install/install_db.php +++ b/AvocadoAmber/install/install_db.php @@ -32,7 +32,6 @@ $admin_id = $_POST['admin_id']; $admin_pass = $_POST['admin_pass']; $admin_name = $_POST['admin_name']; $admin_email = $_POST['admin_email']; -$absolute_password = $_POST['absolute_password']; $table_url = $_POST['table_url']; $dblink = sql_connect($mysql_host, $mysql_user, $mysql_pass, $mysql_db); @@ -273,6 +272,7 @@ unset($row); // 디렉토리 생성 $dir_arr = array( + $data_path . '/css', $data_path . '/cache', $data_path . '/editor', $data_path . '/file', @@ -366,16 +366,9 @@ EOD; //------------------------------------------------------------------------------------------------- // CSS 설정 파일 생성 - $css_data_path = $g5_path['path'] . "/css"; - $css_data_url = $g5_path['url'] . "/css"; + $css_data_path = $data_path . "/css"; - @mkdir($css_data_path, G5_DIR_PERMISSION); - @chmod($css_data_path, G5_DIR_PERMISSION); - - $file = '../' . G5_CSS_DIR . '/_design.config.css'; - $file_path = $css_data_path . '/_design.config.css'; - - @unlink($file_path); + $file = $css_data_path . '/_design.config.css'; $f = @fopen($file, 'a'); ?>
  • @@ -403,6 +396,8 @@ EOD; sql_query(" set time_zone = '" . G5_TIMEZONE . "'"); } + $g5['css_table'] = $table_prefix . 'css_config'; + ob_start(); include "../adm/design_form_css.php"; $css = ob_get_contents(); diff --git a/AvocadoAmber/install/install_header.php b/AvocadoAmber/install/install_header.php new file mode 100644 index 0000000..ac57878 --- /dev/null +++ b/AvocadoAmber/install/install_header.php @@ -0,0 +1,2 @@ +
    AVOCADO EDITION: AMBER
    diff --git a/AvocadoAmber/plugin/editor/smarteditor2/photo_uploader/plugin/hp_SE2M_AttachQuickPhoto.js b/AvocadoAmber/plugin/editor/smarteditor2/photo_uploader/plugin/hp_SE2M_AttachQuickPhoto.js index 23835a8..d8c98c2 100644 --- a/AvocadoAmber/plugin/editor/smarteditor2/photo_uploader/plugin/hp_SE2M_AttachQuickPhoto.js +++ b/AvocadoAmber/plugin/editor/smarteditor2/photo_uploader/plugin/hp_SE2M_AttachQuickPhoto.js @@ -95,10 +95,7 @@ nhn.husky.SE2M_AttachQuickPhoto = jindo.$Class({ */ _getPhotoTag: function (htPhotoInfo) { // id와 class는 썸네일과 연관이 많습니다. 수정시 썸네일 영역도 Test - var sTag = ''; - if (htPhotoInfo.bNewLine) { - sTag += '
    '; - } + var sTag = '

    '; sTag = jindo.$Template(sTag).process(htPhotoInfo); return sTag; diff --git a/AvocadoAmber/skin/member/basic/login.admin.skin.php b/AvocadoAmber/skin/member/basic/login.admin.skin.php index 2dc2fce..e6ac7f8 100644 --- a/AvocadoAmber/skin/member/basic/login.admin.skin.php +++ b/AvocadoAmber/skin/member/basic/login.admin.skin.php @@ -10,16 +10,11 @@ add_stylesheet('

    - 관리자 로그인 + - AVOCADO EDITION Ver. + Ver. - - 관리자 비번을 잊을 시, DB 접속을 통해 직접 변경 하여야 합니다.
    - 최대한 비밀번호를 잊지 않도록 조심해 주시길 바랍니다.
    - DB 관리툴은 호스팅 업체에 문의해 주시길 바랍니다. -

  • diff --git a/AvocadoAmber/skin/member/basic/style.admin.css b/AvocadoAmber/skin/member/basic/style.admin.css index f9c1557..f643702 100644 --- a/AvocadoAmber/skin/member/basic/style.admin.css +++ b/AvocadoAmber/skin/member/basic/style.admin.css @@ -1,265 +1,109 @@ @charset "utf-8"; -@import url(//fonts.googleapis.com/earlyaccess/notosanskr.css); +@import url(../../../adm/css/default.css); -@font-face { - font-family: 'icon'; - src: url('../../../css/fonts/icomoon.eot?y5isk6'); - src: url('../../../css/fonts/icomoon.eot?y5isk6#iefix') format('embedded-opentype'), - url('../../../css/fonts/icomoon.ttf?y5isk6') format('truetype'), - url('../../../css/fonts/icomoon.woff?y5isk6') format('woff'), - url('../../../css/fonts/icomoon.svg?y5isk6#icomoon') format('svg'); - font-weight: normal; - font-style: normal; +/* override */ +html, body { + display: block; + padding: 0; + margin: 0; } -html, body { - position: relative; - height: 100%; - background: #fff; + background: var(--white); } #login_page_box { position: relative; + width: 100%; height: 100%; -} - -#login_page_box:before { - content: ""; - display: block; - position: absolute; - top: 0; - left: 0; - right: 0; - height: 50%; - box-sizing: border-box; - border-top: 8px solid #ecc6c6; - background: url('./img/bak_admin_login_top_pattern.png'); - z-index: 0; -} - -#login_page_box:after { - content: ""; - display: block; - position: absolute; - top: 0; - left: 0; - right: 0; - height: 50%; - - background: rgba(0, 0, 0, 0); - background: -moz-linear-gradient(top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 65%, rgba(0, 0, 0, 0.5) 100%); - background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(0, 0, 0, 0)), color-stop(65%, rgba(0, 0, 0, 0)), color-stop(100%, rgba(0, 0, 0, 0.5))); - background: -webkit-linear-gradient(top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 65%, rgba(0, 0, 0, 0.5) 100%); - background: -o-linear-gradient(top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 65%, rgba(0, 0, 0, 0.5) 100%); - background: -ms-linear-gradient(top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 65%, rgba(0, 0, 0, 0.5) 100%); - background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 65%, rgba(0, 0, 0, 0.5) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#000000', endColorstr='#000000', GradientType=0); + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; } #login_title { - display: block; - position: relative; - height: 50%; - padding-bottom: 130px; - box-sizing: border-box; - z-index: 3; -} - -#login_title .inner { - position: relative; - width: 100%; - height: 100%; -} - -#login_title h1 { position: absolute; - top: 50%; - left: 50%; - transform: translateX(-50%) translateY(-50%); - font-family: 'Noto Sans KR', sans-serif; - font-size: 35px; - font-weight: 600; -} - -#login_title em { - font-style: normal; - color: #ecc6c6; - text-align: center; - line-height: 1.5em; -} - -#login_title em strong { - color: #fff; -} - -#login_title span { - display: block; - font-size: 16px; - font-weight: 400; - color: #999; - text-align: center; -} - -#login_title sup { - display: block; - position: relative; - font-size: 13px; - font-weight: 300; - text-align: center; - padding: 0; - margin-top: 20px; - color: #777; + left: 0; + top: 0; + width: 100%; + height: 50vh; + display: flex; + box-sizing: border-box; + padding: 20px; + justify-content: start; + align-items: center; + flex-direction: column; + background: linear-gradient(to top, var(--theme-gray-900) 0%, var(--theme-gray-800) 50%, var(--theme-gray-800) 100%); } #mb_login { - position: absolute; - top: 50%; - left: 50%; - width: 500px; - height: 260px; - - border-top: 5px solid #ecc6c6; - - transform: translateX(-50%) translateY(-50%); - background: #fff; - - -webkit-box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.49); - -moz-box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.49); - box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.49); - - z-index: 5; -} - - -#mb_login:before { - content: ""; - display: block; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: -20px; - background: #fff; - z-index: 0; -} - -#mb_login .inner { position: relative; - padding: 30px; - z-index: 1; -} - -#mb_login fieldset.input { - display: block; - position: relative; - margin-bottom: 5px; - margin-right: 130px; -} - -#mb_login fieldset.input input { - display: block; - width: 100%; + padding: 40px; + border-radius: 16px; + background: var(--white); + min-width: 360px; box-sizing: border-box; - - background: #fff !important; - color: #3a3a3b; - height: 45px; - padding: 0 15px 0 45px; - font-size: 15px; - font-family: 'Noto Sans KR', sans-serif; - outline: none; - border: 1px solid #eaeaea; + filter: drop-shadow(0 0 15px #0002); } -#mb_login fieldset.input input:focus { - border: 2px solid #ecc6c6; -} - -#mb_login fieldset.input label { - display: block; - position: absolute; - top: 0; - left: 0; - width: 45px; - height: 45px; - line-height: 45px; - overflow: hidden; - text-indent: -999px; - -} - -#mb_login fieldset.input label:before { - display: block; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - text-indent: 0; - text-align: center; - font-family: 'icon'; - font-size: 16px; - color: #ccc; -} - -#mb_login fieldset.input input:focus+label:before { - color: #ecc6c6; -} - -#mb_login fieldset.input label.login_id:before { - content: "\e976"; -} - -#mb_login fieldset.input label.login_pw:before { - content: "\e98e"; -} - -#mb_login fieldset.input input:-webkit-autofill { - transition: background-color 50000s ease-in-out 0s; - -webkit-box-shadow: 0 0 0 30px white inset; - -webkit-text-fill-color: #3a3a3b !important; -} - -#mb_login fieldset.check { +#mb_login fieldset { display: block; position: relative; - padding: 5px; - background: #f6f6f6; - border: 1px solid #ebebeb; - color: #3a3a3a; - margin: 5px 130px 5px 0; - font-size: 11px; + padding-top: 1.5em; + margin-bottom: 1em; } -#mb_login fieldset.check label { - cursor: pointer; -} - -#mb_login fieldset.button { +#mb_login fieldset label{ display: block; position: absolute; - top: 30px; - right: 30px; - width: 126px; - height: 128px; + left: 0; + top: 0em; + color: var(--theme-gray-500); } -#mb_login fieldset.button .btn_submit { - display: block; +#mb_login fieldset input:not([type=checkbox]) { width: 100%; - height: 100%; - background: #ecc6c6; - font-family: 'Noto Sans KR', sans-serif; - font-size: 18px; - border: none; - cursor: pointer; - color: #fff; + display: block; + box-sizing: border-box; + padding: 4px 8px; + line-height: 2em; + height: auto; + border-radius: 4px; +} + +#mb_login fieldset button.btn_submit { + display: block; + box-sizing: border-box; + border: unset; + width: 100%; + height: auto; + line-height: 3em; + border-radius: 4px; } #copyright { - padding-top: 30px; - font-size: 12px; - color: #aaa; + color: var(--theme-gray-500); text-align: center; + font-size: 11px; + border-top: 1px solid var(--theme-gray-100); + margin-top: 1em; + padding-top: 1em; +} + +#login_title .inner h1 { + color: var(--white); + display: flex; + flex-direction: column; + text-align: center; + line-height: 1.25em; +} + +#login_title .inner h1 span { + font-size: 14px; +} + +#login_title .inner h1 sup { + font-size: 16px; + line-height: 1.25em; }