diff --git a/modules/widget/tpl/widget_generate_code.html b/modules/widget/tpl/widget_generate_code.html index 0a3ed9bcd..a5d9bac01 100644 --- a/modules/widget/tpl/widget_generate_code.html +++ b/modules/widget/tpl/widget_generate_code.html @@ -11,8 +11,6 @@
- - @@ -49,7 +47,17 @@

{$lang->about_widget_cache}

- + + + + {@$group = $var->group} +
+ + + + + + + + +
{$group}
{$var->name} @@ -92,6 +100,14 @@
+ + + + + diff --git a/modules/widget/tpl/widget_generate_code_in_page.html b/modules/widget/tpl/widget_generate_code_in_page.html index 2c6e2722f..9fe406b9b 100644 --- a/modules/widget/tpl/widget_generate_code_in_page.html +++ b/modules/widget/tpl/widget_generate_code_in_page.html @@ -18,7 +18,6 @@
-
{$lang->widget_code}
@@ -60,7 +59,17 @@

{$lang->about_widget_cache}

- + + + + {@$group = $var->group} +
+ + + + + +
{$group}
{$var->name} diff --git a/modules/widget/widget.model.php b/modules/widget/widget.model.php index 91c8ac776..5f937b26a 100644 --- a/modules/widget/widget.model.php +++ b/modules/widget/widget.model.php @@ -93,36 +93,42 @@ $buff .= sprintf('$widget_info->author->description = "%s";', $xml_obj->author->description->body); // 추가 변수 (템플릿에서 사용할 제작자 정의 변수) - if(!is_array($xml_obj->extra_vars->var)) $extra_vars[] = $xml_obj->extra_vars->var; - else $extra_vars = $xml_obj->extra_vars->var; + $extra_var_groups = $xml_obj->extra_vars->group; + if(!$extra_var_groups) $extra_var_groups = $xml_obj->extra_vars; + if(!is_array($extra_var_groups)) $extra_var_groups = array($extra_var_groups); + foreach($extra_var_groups as $group){ + $extra_vars = $group->var; + if(!is_array($group->var)) $extra_vars = array($group->var); + + if($extra_vars[0]->attrs->id || $extra_vars[0]->attrs->name) { + $extra_var_count = count($extra_vars); + + $buff .= sprintf('$widget_info->extra_var_count = "%s";', $extra_var_count); + for($i=0;$i<$extra_var_count;$i++) { + unset($var); + unset($options); + $var = $extra_vars[$i]; - if($extra_vars[0]->attrs->id || $extra_vars[0]->attrs->name) { - $extra_var_count = count($extra_vars); + $id = $var->attrs->id?$var->attrs->id:$var->attrs->name; + $name = $var->name->body?$var->name->body:$var->title->body; + $type = $var->attrs->type?$var->attrs->type:$var->type->body; - $buff .= sprintf('$widget_info->extra_var_count = "%s";', $extra_var_count); - for($i=0;$i<$extra_var_count;$i++) { - unset($var); - unset($options); - $var = $extra_vars[$i]; + $buff .= sprintf('$widget_info->extra_var->%s->group = "%s";', $id, $group->title->body); + $buff .= sprintf('$widget_info->extra_var->%s->name = "%s";', $id, $name); + $buff .= sprintf('$widget_info->extra_var->%s->type = "%s";', $id, $type); + $buff .= sprintf('$widget_info->extra_var->%s->value = $vars->%s;', $id, $id); + $buff .= sprintf('$widget_info->extra_var->%s->description = "%s";', $id, str_replace('"','\"',$var->description->body)); + + $options = $var->options; + if(!$options) continue; - $id = $var->attrs->id?$var->attrs->id:$var->attrs->name; - $name = $var->name->body?$var->name->body:$var->title->body; - $type = $var->attrs->type?$var->attrs->type:$var->type->body; - - $buff .= sprintf('$widget_info->extra_var->%s->name = "%s";', $id, $name); - $buff .= sprintf('$widget_info->extra_var->%s->type = "%s";', $id, $type); - $buff .= sprintf('$widget_info->extra_var->%s->value = $vars->%s;', $id, $id); - $buff .= sprintf('$widget_info->extra_var->%s->description = "%s";', $id, str_replace('"','\"',$var->description->body)); - - $options = $var->options; - if(!$options) continue; - - if(!is_array($options)) $options = array($options); - $options_count = count($options); - for($j=0;$j<$options_count;$j++) { - $buff .= sprintf('$widget_info->extra_var->%s->options["%s"] = "%s";', $id, $options[$j]->value->body, $options[$j]->name->body); + if(!is_array($options)) $options = array($options); + $options_count = count($options); + for($j=0;$j<$options_count;$j++) { + $buff .= sprintf('$widget_info->extra_var->%s->options["%s"] = "%s";', $id, $options[$j]->value->body, $options[$j]->name->body); + } + } - } }