diff --git a/AvocadoAmber/_extra_font.php b/AvocadoAmber/_extra_font.php index 8ac3541..18efe83 100644 --- a/AvocadoAmber/_extra_font.php +++ b/AvocadoAmber/_extra_font.php @@ -2,25 +2,82 @@ if (!defined('_GNUBOARD_')) exit; -$font_sql = "SELECT * FROM {$g5['font_table']} ORDER BY font_name ASC"; -$font_result = sql_query($font_sql); +function getFontCSSWithCache() +{ + global $g5; + $cache_key = 'font_css_cache'; + $cache_duration = 300; -echo ""; + +function getFontCSSWithFileCache($g5, $cache_duration) +{ + $cache_file = G5_DATA_PATH . '/cache/font_css_cache.txt'; + $cache_dir = dirname($cache_file); + + if (!is_dir($cache_dir)) { + @mkdir($cache_dir, 0755, true); + } + + if (file_exists($cache_file) && (time() - filemtime($cache_file)) < $cache_duration) { + return file_get_contents($cache_file); + } + + $css_content = generateFontCSS($g5); + + @file_put_contents($cache_file, $css_content, LOCK_EX); + + return $css_content; +} + +function generateFontCSS($g5) +{ + $font_sql = "SELECT * FROM {$g5['font_table']} ORDER BY font_name ASC"; + $font_result = sql_query($font_sql); + $css_content = ""; + return $css_content; +} + +echo getFontCSSWithCache(); diff --git a/AvocadoAmber/adm/design_form_css.php b/AvocadoAmber/adm/design_form_css.php index 9d02f58..6377abf 100644 --- a/AvocadoAmber/adm/design_form_css.php +++ b/AvocadoAmber/adm/design_form_css.php @@ -6,33 +6,140 @@ $css_sql = sql_query("SELECT * FROM {$g5['css_table']}"); $css = []; for ($i = 0; $cs = sql_fetch_array($css_sql); $i++) { $css[$cs['cs_name']][0] = $cs['cs_value']; - $css[$cs['cs_name']][1] = $cs['cs_etc_1']; - $css[$cs['cs_name']][2] = $cs['cs_etc_2']; - $css[$cs['cs_name']][3] = $cs['cs_etc_3']; - $css[$cs['cs_name']][4] = $cs['cs_etc_4']; - $css[$cs['cs_name']][5] = $cs['cs_etc_5']; - $css[$cs['cs_name']][6] = $cs['cs_etc_6']; - $css[$cs['cs_name']][7] = $cs['cs_etc_7']; - $css[$cs['cs_name']][8] = $cs['cs_etc_8']; - $css[$cs['cs_name']][9] = $cs['cs_etc_9']; - $css[$cs['cs_name']][10] = $cs['cs_etc_10']; - - $css[$cs['cs_name']][11] = $cs['cs_etc_11']; - $css[$cs['cs_name']][12] = $cs['cs_etc_12']; - $css[$cs['cs_name']][13] = $cs['cs_etc_13']; - $css[$cs['cs_name']][14] = $cs['cs_etc_14']; - $css[$cs['cs_name']][15] = $cs['cs_etc_15']; - $css[$cs['cs_name']][16] = $cs['cs_etc_16']; - $css[$cs['cs_name']][17] = $cs['cs_etc_17']; - $css[$cs['cs_name']][18] = $cs['cs_etc_18']; - $css[$cs['cs_name']][19] = $cs['cs_etc_19']; - $css[$cs['cs_name']][20] = $cs['cs_etc_20']; + for ($j = 1; $j <= 20; $j++) { + $css[$cs['cs_name']][$j] = $cs["cs_etc_$j"]; + } } -$tab_width = 1024; +$tab_width = 1024; $is_item_area = false; $is_comment_area = false; +function isset_value($arr, $key) { + return isset($arr[$key]) && $arr[$key] !== '' && $arr[$key] !== null; +} + +function css_background($css_arr, $prefix = 'background') { + if (!is_array($css_arr)) return ''; + + $output = ''; + if (isset_value($css_arr, 0)) $output .= "{$prefix}-image:url('{$css_arr[0]}'); "; + if (isset_value($css_arr, 1)) $output .= "{$prefix}-color:" . hex2rgba($css_arr[1], $css_arr[2] ?? 100) . "; "; + if (isset_value($css_arr, 3)) $output .= "{$prefix}-repeat:{$css_arr[3]}; "; + if (isset_value($css_arr, 4)) $output .= "{$prefix}-position:{$css_arr[4]}; "; + if (isset_value($css_arr, 5)) $output .= "{$prefix}-size:{$css_arr[5]}; "; + + return $output; +} + +function css_color($color, $alpha = null, $property = 'color') { + if (!$color) return ''; + $alpha_value = $alpha ?? 100; + return "{$property}:" . hex2rgba($color, $alpha_value) . "; "; +} + +function css_border_radius($css_arr, $start_index = 5) { + if (!is_array($css_arr)) return ''; + + $output = ''; + $corners = ['top-left', 'top-right', 'bottom-right', 'bottom-left']; + + for ($i = 0; $i < 4; $i++) { + $index = $start_index + $i; + if (isset_value($css_arr, $index)) { + $output .= "border-{$corners[$i]}-radius:{$css_arr[$index]}px; "; + } + } + + return $output; +} + +function css_border($css_arr, $directions = null) { + if (!is_array($css_arr)) return ''; + + $output = ''; + + if (isset_value($css_arr, 4)) { + $output .= css_color($css_arr[4], $css_arr[5] ?? null, 'border-color'); + } + + if (isset_value($css_arr, 8)) { + $border_directions = explode("||", $css_arr[8]); + + foreach ($border_directions as $direction) { + if ($direction) { + if (isset_value($css_arr, 6)) { + $output .= "border-{$direction}-style:{$css_arr[6]}; "; + } + if (isset_value($css_arr, 7)) { + $output .= "border-{$direction}-width:{$css_arr[7]}px; "; + } + } + } + } elseif ($directions) { + if (isset_value($css_arr, 6)) { + $output .= "border-{$directions}-style:{$css_arr[6]}; "; + } + if (isset_value($css_arr, 7)) { + $output .= "border-{$directions}-width:{$css_arr[7]}px; "; + } + } + + return $output; +} + +function css_box_style($css_arr, $border_start = 5, $radius_start = 9) { + if (!is_array($css_arr)) return ''; + + $output = ''; + + if (isset_value($css_arr, 0)) { + $output .= css_color($css_arr[0], $css_arr[1] ?? null, 'background-color'); + } + + if (isset_value($css_arr, 2)) { + $output .= css_color($css_arr[2], $css_arr[3] ?? null, 'color'); + } + + $output .= css_border($css_arr); + $output .= css_border_radius($css_arr, $radius_start); + + return $output; +} + +function css_button_style($css_arr, $with_hover = true) { + if (!is_array($css_arr)) return ''; + + $output = ''; + + $output .= css_border_radius($css_arr, 12); + if (isset_value($css_arr, 0)) $output .= css_color($css_arr[0], $css_arr[1] ?? null, 'background-color'); + if (isset_value($css_arr, 2)) $output .= css_color($css_arr[2], $css_arr[3] ?? null, 'color'); + if (isset_value($css_arr, 4)) $output .= css_color($css_arr[4], $css_arr[5] ?? null, 'border-color'); + + return $output; +} + +function css_button_hover($css_arr) { + if (!is_array($css_arr)) return ''; + + $output = ''; + if (isset_value($css_arr, 6)) $output .= css_color($css_arr[6], $css_arr[7] ?? null, 'background-color'); + if (isset_value($css_arr, 8)) $output .= css_color($css_arr[8], $css_arr[9] ?? null, 'color'); + if (isset_value($css_arr, 10)) $output .= css_color($css_arr[10], $css_arr[11] ?? null, 'border-color'); + + return $output; +} + +function media_query($condition, $content) { + if (empty(trim($content))) return ''; + return "@media $condition {\n$content}\n\n"; +} + +$content_width = isset_value($css['content_width'], 0) ? $css['content_width'][0] : 1000; +$max_content_width = $content_width + 160; +$middle_content_width = $content_width + 40; + ?> @charset "utf-8"; @@ -43,23 +150,18 @@ Design Manager Setting Style: 자동생성 CSS - 모바일 사이즈 기준 (공통) : px ***************************************************************/ - + /************************************************************** 기본 레이아웃 ***************************************************************/ - -.fix-layout { } +.fix-layout { max-width:px; } + @media all and (max-width:px) { -.fix-layout { } -#body > .fix-layout > .mid-layout {padding-left:20px; padding-right:20px;} + .fix-layout { max-width:px; } + #body > .fix-layout > .mid-layout { padding-left:20px; padding-right:20px; } } @@ -67,30 +169,29 @@ $middle_content_width = $content_width + 40; 기본 폰트 설정 ***************************************************************/ -* {} + +* { font-family:, sans-serif; } + + body { } -.txt-default { -} -a, .txt-point, .sch_word { -} + if (isset_value($css['default_font'], 0)) echo css_color($css['default_font'][0], $css['default_font'][1] ?? null); + if (isset_value($css['default_font'], 2)) echo "font-size:{$css['default_font'][2]}px; "; + if (isset_value($css['default_font'], 3)) echo "font-family:{$css['default_font'][3]}, sans-serif; "; +?> +} -.txt-menu-font {} +.txt-default { + +} + +a, .txt-point, .sch_word { + +} + + +.txt-menu-font { font-family:, sans-serif; } + /************************************************************** @@ -98,61 +199,29 @@ if ($css['color_point'][0]) ***************************************************************/ .enterWrapper { -} + +} + .enterWrapper .guide { } - + if (isset_value($css['intro'], 2)) echo css_color($css['intro'][2], $css['intro'][3] ?? null); + if (isset_value($css['intro'], 4)) echo "font-size:{$css['intro'][4]}px; "; + if (isset_value($css['intro'], 5)) echo "font-family:{$css['intro'][5]}, sans-serif; "; +?> +} @media all and (min-width: px) { -.admin-preview-box, -html.single:before { -} + .admin-preview-box, + html.single:before { + + } } @media all and (max-width: px) { -.admin-preview-box, -html.single:before { -} + .admin-preview-box, + html.single:before { + + } } @@ -160,309 +229,183 @@ if ($css['m_background'][5]) 메뉴 스타일 설정 ***************************************************************/ -/* 관리자 미리보기 스타일 정의 */ -.admin-preview-box .gnbWrap { } -.admin-preview-box .gnbWrap .tooltips { -} + + +/* 관리자 미리보기 & 공통 스타일 */ +.admin-preview-box .gnbWrap, +#header .gnbWrap, +#mo_header .gnbWrap { + +} + +.admin-preview-box .gnbWrap .tooltips, +#header .gnbWrap .tooltips, +#mo_header .gnbWrap .tooltips { + +} #topCont a .icons, .icons-link-box .icons, -.admin-preview-box .gnbWrap .icons { +.admin-preview-box .gnbWrap .icons, +#header .gnbWrap .icons { } + if (isset_value($css['menu_icon'], 10)) echo css_color($css['menu_icon'][10], $css['menu_icon'][11] ?? null); + if (isset_value($css['menu_icon'], 13) && $css['menu_icon'][13] == 'diamond') echo "height:3.3em; "; +?> +} #topCont a .icons:before, .icons-link-box a .icons:before, -.admin-preview-box .gnbWrap .icons:before { -} -.admin-preview-box .gnbWrap .tooltips { -} - -/* 사용자단 스타일 정의 */ -#header .gnbWrap, -#mo_header .gnbWrap { } -#header .gnbWrap .tooltips, -#mo_header .gnbWrap .tooltips { -} - -@media all and (min-width: px) { -#header { -} -#header .gnbWrap { -} -#header .gnbWrap li { -} -#header .gnbWrap li.line { -} -#header .gnbWrap .tooltips { -} -#header .gnbWrap a:hover .tooltips { -} - -#header .gnbWrap .icons { -} +.admin-preview-box .gnbWrap .icons:before, #header .gnbWrap .icons:before { -} -#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 { -} + } +.admin-preview-box .gnbWrap .tooltips, +#header .gnbWrap .tooltips { + + +} + +/* PC 헤더 위치 설정 */ +@media all and (min-width: px) { + + + #header { } + #header .gnbWrap { } + + #header .gnbWrap li { } + + #header .gnbWrap li.line { } + #header .gnbWrap .tooltips { } + #header .gnbWrap a:hover .tooltips { } +} + +/* 모바일 헤더 */ +@media all and (max-width: px) { + #mo_header { + + } + + #mo_header .gnbWrap a, + #mo_header .gnbWrap li.line, + body.open-gnb .control-mobile-menu { + + } + + #mo_header .gnbWrap li.line { + + } +} /************************************************************** 스크롤 / 마우스 드래그 블록 색상 지정 ***************************************************************/ -*::-webkit-scrollbar { -} + +*::-webkit-scrollbar { width:px; height:px; } + + *::-webkit-scrollbar-track { -} + +} + *::-webkit-scrollbar-thumb { } + if (isset_value($css['scrollbar'], 3)) echo css_color($css['scrollbar'][3], $css['scrollbar'][4] ?? null, 'background-color'); + echo css_border_radius($css['scrollbar'] ?? [], 5); +?> +} * { -} + +} -::selection { -} -::-moz-selection { -} +::selection, +::-moz-selection, ::-webkit-selection { } + if (isset_value($css['color_point'], 0)) echo css_color($css['color_point'][0], $css['color_point'][1] ?? null, 'background'); + if (isset_value($css['color_bak'], 0)) echo css_color($css['color_bak'][0], $css['color_bak'][1] ?? null, 'color'); +?> +} /************************************************************** @@ -471,129 +414,57 @@ if ($css['color_bak'][0]) .ui-btn { +} -if ($css['btn_default'][12]) - echo "border-top-left-radius:{$css['btn_default'][12]}px; "; -if ($css['btn_default'][13]) - echo "border-top-right-radius:{$css['btn_default'][13]}px; "; -if ($css['btn_default'][14]) - echo "border-bottom-right-radius:{$css['btn_default'][14]}px; "; -if ($css['btn_default'][15]) - echo "border-bottom-left-radius:{$css['btn_default'][15]}px; "; - -if ($css['btn_default'][0]) - echo "background-color:" . hex2rgba($css['btn_default'][0], $css['btn_default'][1]) . "; "; -if ($css['btn_default'][2]) - echo "color:" . hex2rgba($css['btn_default'][2], $css['btn_default'][3]) . "; "; -if ($css['btn_default'][4]) - echo "border-color:" . hex2rgba($css['btn_default'][4], $css['btn_default'][5]) . "; "; -?>} .ui-btn:hover { -} + +} + .ui-btn.point { - +} -if ($css['btn_point'][0]) - echo "background-color:" . hex2rgba($css['btn_point'][0], $css['btn_point'][1]) . "; "; -if ($css['btn_point'][2]) - echo "color:" . hex2rgba($css['btn_point'][2], $css['btn_point'][3]) . "; "; -if ($css['btn_point'][4]) - echo "border-color:" . hex2rgba($css['btn_point'][4], $css['btn_point'][5]) . "; "; -?>} .ui-btn.point:hover { -} + +} + .ui-btn.etc { - +} -if ($css['btn_etc'][0]) - echo "background-color:" . hex2rgba($css['btn_etc'][0], $css['btn_etc'][1]) . "; "; -if ($css['btn_etc'][2]) - echo "color:" . hex2rgba($css['btn_etc'][2], $css['btn_etc'][3]) . "; "; -if ($css['btn_etc'][4]) - echo "border-color:" . hex2rgba($css['btn_etc'][4], $css['btn_etc'][5]) . "; "; -?>} .ui-btn.etc:hover { -} + +} -a.ui-btn { -} -.ui-btn.small { -} -a.ui-btn.small { -} -.ui-btn.big { -} -a.ui-btn.big { -} + +a.ui-btn { line-height:px; } +.ui-btn.small { height:px; } +a.ui-btn.small { line-height:px; } +.ui-btn.big { height:px; } +a.ui-btn.big { line-height:px; } + + + +.ui-btn.big { font-size:px; } + /************************************************************** 검색박스 영역 ***************************************************************/ -#bo_sch { } -#bo_sch button { -} + +#bo_sch { margin-top:px; } +#bo_sch button { width:px; height:px; font-size:px; } + /************************************************************** @@ -604,68 +475,41 @@ if ($css['input_bak'][2]) #bo_w, #bo_v { } -if ($css['board_table'][9]) - echo "border-top-left-radius:{$css['board_table'][9]}px; "; -if ($css['board_table'][10]) - echo "border-top-right-radius:{$css['board_table'][10]}px; "; -if ($css['board_table'][11]) - echo "border-bottom-right-radius:{$css['board_table'][11]}px; "; -if ($css['board_table'][12]) - echo "border-bottom-left-radius:{$css['board_table'][12]}px; "; -?>} - #bo_v .board-title, #bo_v .board-info, #bo_v #bo_vc, #bo_v #bo_v_bot { -} + +} + #bo_v .board-title, #bo_v .board-info { } + if (isset_value($css['form_body'], 6)) echo "border-bottom-style:{$css['form_body'][6]}; "; + if (isset_value($css['form_body'], 7)) echo "border-bottom-width:{$css['form_body'][7]}px; "; +?> +} + #bo_v #bo_vc, #bo_v #bo_v_bot { } + if (isset_value($css['form_body'], 6)) echo "border-top-style:{$css['form_body'][6]}; "; + if (isset_value($css['form_body'], 7)) echo "border-top-width:{$css['form_body'][7]}px; "; +?> +} #bo_v .board-title > * { -} -#bo_v #bo_vc .is-reply { -} + +} +#bo_v #bo_vc .is-reply { + +} /************************************************************** @@ -673,30 +517,21 @@ if ($css['form_body'][4]) ***************************************************************/ .pg_wrap { -} + +} + .pg_wrap .pg_page { -} -.pg_wrap .pg_page:hover { -} -.pg_wrap .pg_control { -} + +} + +.pg_wrap .pg_page:hover, .pg_wrap .pg_current { -} + +} + +.pg_wrap .pg_control { + +} /************************************************************** @@ -704,10 +539,8 @@ if ($css['color_point'][0]) ***************************************************************/ hr.line { -} + +} /************************************************************** @@ -720,10 +553,8 @@ input[type="text"], input[type="number"], input[type="password"], select { -} + +} .form-input, input[type="file"], @@ -733,29 +564,28 @@ input[type="password"], textarea, select { } + if (isset_value($css['input_bak'], 0)) { + $alpha = isset_value($css['input_bak'], 1) ? $css['input_bak'][1] : 100; + echo css_color($css['input_bak'][0], $alpha, 'background-color'); + } + if (isset_value($css['input_bak'], 6)) echo css_color($css['input_bak'][6], $css['input_bak'][7] ?? null, 'border-color'); + if (isset_value($css['input_bak'], 3)) { + $alpha = isset_value($css['input_bak'], 4) ? $css['input_bak'][4] : 0; + echo css_color($css['input_bak'][3], $alpha); + } + if (isset_value($css['input_bak'], 5)) echo "font-size:{$css['input_bak'][5]}px; "; + echo css_border_radius($css['input_bak'] ?? [], 8); +?> +} *::placeholder { -} + +} /************************************************************** @@ -763,62 +593,12 @@ if ($css['input_bak'][11]) ***************************************************************/ .theme-box { - } -?>} .board-notice-box { - } -?>} /************************************************************** @@ -826,81 +606,21 @@ 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 { - } -?>} - - /************************************************************** @@ -908,166 +628,72 @@ for ($i = 0; $i < count($css['form_body']['border']); $i++) { ***************************************************************/ #load_log_board { -} + +} #log_list { - } -?>} #log_list .item { } -if ($css['mmb_list_item'][9]) - echo "margin-bottom:{$css['mmb_list_item'][9]}px; "; -?>} #log_list .item .item-inner .ui-pic { - } -?>} #log_list .item .item-inner .item-comment { } -if ($css['mmb_reply_item'][9]) - echo "margin-bottom:{$css['mmb_reply_item'][9]}px; "; -?>} #log_list .item .item-inner .ui-comment { } -if ($is_item_area && $is_comment_area) - echo "padding-left:15px; padding-right:15px;"; -?>} #log_list .item .item-inner .co-header p, #log_list .item .item-inner .co-header p a { } + if (isset_value($css['mmb_name'], 0)) echo css_color($css['mmb_name'][0], $css['mmb_name'][1] ?? null); + if (isset_value($css['mmb_name'], 2)) echo "font-size:{$css['mmb_name'][2]}px; "; +?> +} #log_list .item .item-inner .co-header p.owner, #log_list .item .item-inner .co-header p.owner a { } + if (isset_value($css['mmb_owner_name'], 0)) echo css_color($css['mmb_owner_name'][0], $css['mmb_owner_name'][1] ?? null); + if (isset_value($css['mmb_owner_name'], 2)) echo "font-size:{$css['mmb_owner_name'][2]}px; "; +?> +} #log_list .item .item-inner .co-footer .date { } + if (isset_value($css['mmb_datetime'], 0)) echo css_color($css['mmb_datetime'][0], $css['mmb_datetime'][1] ?? null); + if (isset_value($css['mmb_datetime'], 2)) echo "font-size:{$css['mmb_datetime'][2]}px; "; +?> +} #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/common.php b/AvocadoAmber/common.php index e9b0351..7cc061b 100644 --- a/AvocadoAmber/common.php +++ b/AvocadoAmber/common.php @@ -1,4 +1,8 @@