[geeklog-cvs] geeklog: Preparations to allow config type '%select'
geeklog-cvs at lists.geeklog.net
geeklog-cvs at lists.geeklog.net
Sun Nov 29 04:45:35 EST 2009
changeset 7490:0d33295fe66f
url: http://project.geeklog.net/cgi-bin/hgwebdir.cgi/geeklog/rev/0d33295fe66f
user: Dirk Haun <dirk at haun-online.de>
date: Sat Nov 28 21:58:11 2009 +0100
description:
Preparations to allow config type '%select'
diffstat:
public_html/javascript/configmanager.js | 24 ++++++++++++
public_html/layout/professional/admin/config/config_element.thtml | 6 ++-
system/classes/config.class.php | 23 +++++++++++-
3 files changed, 50 insertions(+), 3 deletions(-)
diffs (109 lines):
diff -r e1df65abb027 -r 0d33295fe66f public_html/javascript/configmanager.js
--- a/public_html/javascript/configmanager.js Sat Nov 28 20:28:54 2009 +0100
+++ b/public_html/javascript/configmanager.js Sat Nov 28 21:58:11 2009 +0100
@@ -42,6 +42,30 @@
add_element(self.parentNode.parentNode.parentNode, array_name, name, 'text', '', '1');
}else if(array_type == "placeholder"){
add_element(self.parentNode.parentNode.parentNode, array_name, name, 'hidden', '1', '1');
+ }else if(array_type == "select"){
+ add_select(self.parentNode.parentNode.parentNode, array_name, name - 1, '1');
+ }
+}
+
+function add_select(tbl, arr_name, index, deletable){
+ var newRow = tbl.insertRow(tbl.rows.length - 1);
+ titleCell = newRow.insertCell(0);
+ paramCell = newRow.insertCell(1);
+ titleCell.className = "alignright";
+ titleCell.appendChild(document.createTextNode(index));
+ dropDown = tbl.getElementsByTagName('tr')[0].getElementsByTagName('td')[1].getElementsByTagName('select')[0].cloneNode(true);
+ dropDown.name = arr_name + "[" + index + "]";
+ paramCell.appendChild(dropDown);
+ if(deletable){
+ paramCell.appendChild(document.createTextNode("\n"));
+ deleteButton = document.createElement("input");
+ deleteButton.type = "button";
+ deleteButton.value = "x";
+ deleteButton.onclick =
+ function(){
+ gl_cfg_remove(this)
+ };
+ paramCell.appendChild(deleteButton);
}
}
diff -r e1df65abb027 -r 0d33295fe66f public_html/layout/professional/admin/config/config_element.thtml
--- a/public_html/layout/professional/admin/config/config_element.thtml Sat Nov 28 20:28:54 2009 +0100
+++ b/public_html/layout/professional/admin/config/config_element.thtml Sat Nov 28 21:58:11 2009 +0100
@@ -18,13 +18,15 @@
<!-- END placeholder-element -->
<!-- BEGIN select-element -->
-<tr><td class="alignright">{display_name} {doc_link} {unset_link}</td>
+<tr{hide_row}><td class="alignright">{display_name} {doc_link} {unset_link}</td>
<td>
<select name="{name}" class="opt">
<!-- BEGIN select-options -->
<option {selected} value="{opt_value}">{opt_name}</option>
<!-- END select-options -->
-</select></td></tr>
+</select>
+{delete}
+</td></tr>
<!-- END select-element -->
<!-- BEGIN unset-param -->
diff -r e1df65abb027 -r 0d33295fe66f system/classes/config.class.php
--- a/system/classes/config.class.php Sat Nov 28 20:28:54 2009 +0100
+++ b/system/classes/config.class.php Sat Nov 28 21:58:11 2009 +0100
@@ -680,6 +680,14 @@
} elseif ($type == "placeholder") {
return $t->finish($t->parse('output', 'placeholder-element'));
} elseif ($type == 'select') {
+ // if $name is like "blah[0]", separate name and index
+ $n = explode('[', $name);
+ $name = $n[0];
+ $index = null;
+ if (count($n) == 2) {
+ $i = explode(']', $n[1]);
+ $index = $i[0];
+ }
$type_name = $type . '_' . $name;
if ($group == 'Core') {
$fn = 'configmanager_' . $type_name . '_helper';
@@ -687,7 +695,11 @@
$fn = 'plugin_configmanager_' . $type_name . '_' . $group;
}
if (function_exists($fn)) {
- $selectionArray = $fn();
+ if ($index === null) {
+ $selectionArray = $fn();
+ } else {
+ $selectionArray = $fn($index);
+ }
} else if (is_array($selectionArray)) {
// leave sorting to the function otherwise
uksort($selectionArray, 'strcasecmp');
@@ -707,6 +719,9 @@
$t->set_var('selected', ($val == $sVal ? 'selected="selected"' : ''));
$t->parse('myoptions', 'select-options', true);
}
+ if ($index == 'placeholder') {
+ $t->set_var('hide_row', ' style="display:none;"');
+ }
return $t->parse('output', 'select-element');
} elseif (strpos($type, '@') === 0) {
$result = '';
@@ -726,6 +741,12 @@
'unkeyed-add-button'));
$t->set_var('my_add_element_button', $button);
$result = "";
+ if ($type == '%select') {
+ $result .= config::_UI_get_conf_element($group,
+ $name . '[placeholder]', 'placeholder',
+ substr($type, 1), 'placeholder', $selectionArray,
+ true);
+ }
foreach ($val as $valkey => $valval) {
$result .= config::_UI_get_conf_element($group,
$name . '[' . $valkey . ']', $valkey,
More information about the geeklog-cvs
mailing list