idx = $idx;
$this->cs_name = $name;
$this->title = $title;
$this->html = "";
$this->extrahtml = "";
$this->is_value_added = false;
if ($init) {
$this->init();
}
if (!empty($data)) {
foreach ($data as $val) {
switch ($val["type"]) {
case "desc":
$this->addDescription($val["desc"], array_key_exists("default", $val) ? (is_array($val["default"]) ? $val["default"] : []) : []);
break;
case "text":
$this->addTextSetting($val["desc"], array_key_exists("default", $val) ? (is_array($val["default"]) ? $val["default"] : []) : [], array_key_exists("placeholder", $val) ? $val["placeholder"] : "");
break;
case "textarea":
$this->addTextareaSetting($val["desc"], array_key_exists("default", $val) ? (is_array($val["default"]) ? $val["default"] : []) : [], array_key_exists("placeholder", $val) ? $val["placeholder"] : "");
break;
case "editor":
$this->addEditorSetting($val["desc"], array_key_exists("default", $val) ? (is_array($val["default"]) ? $val["default"] : []) : [], array_key_exists("js", $val) ? $val["js"] : true);
break;
case "image":
$this->addImageSetting($val["desc"], array_key_exists("default", $val) ? (is_array($val["default"]) ? $val["default"] : []) : []);
break;
case "select":
$this->addSelectSetting($val["desc"], array_key_exists("default", $val) ? (is_array($val["default"]) ? $val["default"] : []) : [], array_key_exists("values", $val) ? $val["values"] : "");
break;
case "color":
$this->addColorSetting($val["desc"], array_key_exists("default", $val) ? (is_array($val["default"]) ? $val["default"] : []) : []);
break;
case "color2":
$this->addColor2Setting($val["desc"], array_key_exists("default", $val) ? (is_array($val["default"]) ? $val["default"] : []) : []);
break;
case "border":
$this->addBorderSetting($val["desc"], array_key_exists("default", $val) ? (is_array($val["default"]) ? $val["default"] : []) : []);
break;
case "rect":
$this->addRectSetting($val["desc"], array_key_exists("default", $val) ? (is_array($val["default"]) ? $val["default"] : []) : []);
break;
case "radius":
$this->addRadiusSetting($val["desc"], array_key_exists("default", $val) ? (is_array($val["default"]) ? $val["default"] : []) : []);
break;
}
}
}
}
public static function getSettingList()
{
global $g5;
$css = [];
$sql = sql_query("SELECT * FROM {$g5['css_table']}");
while ($row = sql_fetch_array($sql)) {
$set = new Setting(0, "", "", [], false);
$set->cs_id = $row['cs_id'];
$set->cs_value = $row['cs_value'];
$set->cs_name = $row['cs_name'];
$set->cs_descript = $row['cs_descript'];
for ($i = 1; $i <= 20; $i++) {
$key = "cs_etc_{$i}";
$set->$key = $row[$key];
}
$css[$row['cs_name']] = $set;
}
return $css;
}
public static function getSetting($cs_name)
{
global $g5;
$row = sql_fetch("SELECT * FROM {$g5['css_table']} WHERE cs_name = '{$cs_name}'");
$set = new Setting(0, "", "", [], false);
$set->cs_id = $row['cs_id'];
$set->cs_value = $row['cs_value'];
$set->cs_name = $row['cs_name'];
$set->cs_descript = $row['cs_descript'];
for ($i = 1; $i <= 20; $i++) {
$key = "cs_etc_{$i}";
$set->$key = $row[$key];
}
return $set;
}
public function init()
{
global $g5;
$this->settings = [];
$data = sql_fetch("SELECT * FROM {$g5['css_table']} WHERE cs_name = '{$this->cs_name}'");
if ($data) {
$this->cs_id = intval($data['cs_id']);
$this->cs_name = $data['cs_name'];
$this->cs_value = $data['cs_value'];
$this->cs_descript = $data['cs_descript'];
for ($i = 1; $i <= 20; $i++) {
$key = "cs_etc_{$i}";
$this->$key = $data[$key];
}
} else {
$this->cs_value = "";
$this->cs_descript = "";
for ($i = 1; $i <= 20; $i++) {
$key = "cs_etc_{$i}";
$this->$key = "";
}
}
}
public function addHeader()
{
$count = count(array_filter($this->settings, function ($setting) {
return $setting["type"] != "image";
}));
$count += count(array_filter($this->settings, function ($setting) {
return $setting["type"] == "image";
})) ? 2 : 0;
return "
| {$this->idx}{$this->title}idx}]\" value=\"{$this->cs_name}\" readonly size=\"15\" /> | ";
}
public function getCurrentCount()
{
$count = 0;
foreach ($this->settings as $setting) {
switch ($setting["type"]) {
case "image":
case "text":
case "editor":
case "desc":
break;
case "color":
case "border":
$count += 2;
break;
default:
$count++;
break;
}
}
return $count;
}
public function addDescription($text, $default)
{
$this->settings[] = [
"type" => "desc",
"html" => "{$text} |
"
];
}
public function addTextSetting($desc, $default, $placeholder)
{
if ($this->is_value_added)
return;
$this->settings[] = [
"type" => "text",
"html" => "{$desc} | idx}]\" value=\"{$this->cs_value}\" size=\"100\" placeholder=\"{$placeholder}\" /> | "
];
$this->is_value_added = true;
}
public function addTextareaSetting($desc, $default, $placeholder)
{
if ($this->is_value_added)
return;
$this->settings[] = [
"type" => "text",
"html" => "{$desc} | | "
];
$this->is_value_added = true;
}
public function addEditorSetting($desc, $default, $js)
{
if ($this->is_value_added)
return;
$this->settings[] = [
"type" => "editor",
"html" => "{$desc} | " . $this->editor_html($this->cs_name, "cs_value[{$this->idx}]", get_text($this->cs_value, 0)) . " | "
];
$this->is_value_added = true;
$this->extrahtml = $this->get_editor_js($this->cs_name, "cs_value[{$this->idx}]");
}
public function addImageSetting($desc, $default)
{
if ($this->is_value_added)
return;
$image_set = $this->cs_value != "" ? "
cs_value}\" class=\"prev_thumb\">" : "{$desc} 이미지 미등록";
$this->settings[] = [
"type" => "image",
"html" => "{$image_set} | 직접등록idx}]\" value=\"\" size=\"50\"> | 외부경로idx}]\" value=\"{$this->cs_value}\" size=\"50\"/> |
"
];
$this->is_value_added = true;
}
public function addRectSetting($desc, $default)
{
$idx = $this->getCurrentCount() + 1;
if ($idx <= 20) {
$key1 = "cs_etc_{$idx}";
$values = explode("||", $this->$key1);
if (empty($default)) {
$default = [0, 0, 0, 0];
}
if (count($values) < 6) {
$values = array_merge([""], $default, [""]);
}
foreach ($values as &$val) {
$val = intval($val);
}
$this->settings[] = [
"type" => "rect",
"html" => "{$desc} |
|
"
];
}
// error
}
public function addRadiusSetting($desc, $default)
{
$idx = $this->getCurrentCount() + 1;
if ($idx <= 20) {
$key1 = "cs_etc_{$idx}";
$values = explode("||", $this->$key1);
if (empty($default)) {
$default = [0, 0, 0, 0];
}
if (count($values) < 6) {
$values = array_merge([""], $default, [""]);
}
foreach ($values as &$val) {
$val = intval($val);
}
$this->settings[] = [
"type" => "radius",
"html" => "{$desc} |
|
"
];
}
// error
}
public function addColorSetting($desc, $default)
{
$idx = $this->getCurrentCount() + 1;
if ($idx <= 19) {
$idx2 = $idx + 1;
$key1 = "cs_etc_{$idx}";
$key2 = "cs_etc_{$idx2}";
if (empty($default)) {
if ($this->$key1 === "")
$this->$key1 = "#000000";
if ($this->$key2 === "")
$this->$key2 = "0";
}
$this->settings[] = [
"type" => "color",
"html" => "{$desc} | 색상idx}]\" value=\"{$this->$key1}\" class=\"colorpicker\" size=\"30\" maxlength=\"255\" placeholder=\"#색상코드\" />투명도idx}]\" value=\"{$this->$key2}\" placeholder=\"0\" title=\"투명도\" style=\"width:45px;\"/>% | "
];
}
// error
}
public function addColor2Setting($desc, $default)
{
$idx = $this->getCurrentCount() + 1;
if ($idx <= 20) {
$key1 = "cs_etc_{$idx}";
if (empty($default)) {
if ($this->$key1 === "")
$this->$key1 = "#000000FF";
} else {
if ($this->$key1 === "")
$this->$key1 = $default[0];
}
$this->settings[] = [
"type" => "color2",
"html" => "{$desc} | 색상idx}]\" value=\"{$this->$key1}\" class=\"neo_color\" size=\"30\" maxlength=\"255\" placeholder=\"#색상코드\" /> | "
];
}
// error
}
public function addBorderSetting($desc, $default)
{
$idx = $this->getCurrentCount() + 1;
$options = [
" " => "사용 안 함",
"dotted" => "점선",
"dashed" => "대시",
"solid" => "직선",
"double" => "이중선",
"groove" => "내부 경사",
"ridge" => "외부 경사",
"inset" => "내부",
"outset" => "외부"
];
if ($idx <= 19) {
$idx2 = $idx + 1;
$key1 = "cs_etc_{$idx}";
$key2 = "cs_etc_{$idx2}";
$options_html = "";
foreach ($options as $key => $val) {
$k = trim($key);
$s = $this->$key1 == $k ? " selected" : "";
$options_html .= "";
}
$this->settings[] = [
"type" => "border",
"html" => "{$desc} | 두께idx}]\" value=\"{$this->$key2}\" placeholder=\"0\" title=\"두께\" style=\"width:45px;\"/> | "
];
}
}
public function addSelectSetting($desc, $default, $values)
{
$idx = $this->getCurrentCount() + 1;
if ($idx <= 19) {
$key1 = "cs_etc_{$idx}";
$options_html = "";
foreach ($values as $key => $val) {
$k = trim($key);
$s = $this->$key1 == $k ? " selected" : "";
$options_html .= "";
}
$this->settings[] = [
"type" => "select",
"html" => "{$desc} | | "
];
}
}
public function getExplodeValue($idx)
{
$key = "cs_etc_{$idx}";
return explode("||", $this->$key);
}
public function getSettingHtml()
{
$html = "";
foreach ($this->settings as $idx => $val) {
if ($html == "") {
$html .= $this->addHeader();
} else {
$html .= "";
}
$html .= $val['html'];
}
return $html;
}
public function get_editor_js($id, $is_dhtml_editor = true)
{
if ($is_dhtml_editor) {
$js = "var {$id}_editor_data = oEditors.getById['{$id}'].getIR();\n";
$js .= "oEditors.getById['{$id}'].exec('UPDATE_CONTENTS_FIELD', []);\n";
$js .= "if (jQuery.inArray(document.getElementById('{$id}').value.toLowerCase().replace(/^\s*|\s*$/g, ''), [' ','
','
','
','','
','']) != -1) {\n";
$js .= "document.getElementById('{$id}').value='';\n";
$js .= "}\n";
return $js;
} else {
return "var {$id}_editor = document.getElementById('{$id}');\n";
}
}
public function editor_html($id, $key, $content, $js = true, $is_dhtml_editor = true, $maxlength = 65536)
{
global $g5, $config, $w, $board, $write, $js;
if (
$is_dhtml_editor && $content &&
(
(!$w && (isset($board['bo_insert_content']) && !empty($board['bo_insert_content'])))
|| ($w == 'u' && isset($write['wr_option']) && strpos($write['wr_option'], 'html') === false)
)
) {
if (preg_match('/\r|\n/', $content) && $content === strip_tags($content, '')) {
$content = nl2br($content);
}
}
$editor_url = G5_EDITOR_URL . '/' . $config['cf_editor'];
$html = "";
$html .= "웹에디터 시작";
if ($is_dhtml_editor && $js) {
$html .= "\n";
$html .= "\n";
$html .= "\n";
$js = false;
}
$smarteditor_class = $is_dhtml_editor ? "smarteditor2" : "";
$html .= "\n";
$html .= "\n웹 에디터 끝";
return $html;
}
}