Allow sequencing widget to disable/enable each sequence entry.

This commit is contained in:
Garvin Hicking 2008-08-03 11:33:39 +00:00
parent 4b09f17bca
commit 6c112ff3d2
3 changed files with 57 additions and 11 deletions

View File

@ -3,6 +3,10 @@
Version 1.4 ()
------------------------------------------------------------------------
* Allow 'sequence' widget to enable/disable each config item,
if the property "checkable" is added to the introspect method.
(garvinhicking)
* Do not show title of entries marked as public/private when
viewed without permissions. Patch thanks to Anthem

View File

@ -89,6 +89,24 @@ if (isset($_GET['serendipity']['plugin_to_conf'])) {
if ($validate === true) {
// echo $config_item . " validated: $validate<br />\n";
if (!empty($_POST['serendipity']['plugin']['override'][$config_item])) {
$value = $_POST['serendipity']['plugin']['override'][$config_item];
}
if (is_array($_POST['serendipity']['plugin']['activate'][$config_item])) {
$values = explode(',', $value);
$out_values = array();
foreach($values AS $out_value) {
if (!isset($_POST['serendipity']['plugin']['activate'][$config_item][$out_value])) {
continue;
}
$out_values[] = $out_value;
}
$value = implode(',', $out_values);
}
$plugin->set_config($config_item, $value);
} else {
$save_errors[] = $validate;

View File

@ -666,13 +666,15 @@ EOS;
}
$cname = $cbag->get('name');
$cdesc = $cbag->get('description');
$checkable = $cbag->get('checkable');
/** Unordered array of values */
$items = $cbag->get('values');
if (!is_array($items)) { $items = null; }
/** Array specifying order to use values in $items */
$order = null;
if ($value) {
$order = explode(',', $value);
$store_order = $order = explode(',', $value);
}
$uparrow_img = serendipity_getTemplateFile('admin/img/uparrow.png');
$downarrow_img = serendipity_getTemplateFile('admin/img/downarrow.png');
@ -773,6 +775,11 @@ EOS;
print ' <li id="'.$id.'" class="sequence_item pluginmanager_item_even">' . "\n";
// Make a handle with ID 'g$id'
print ' <div id="g'.$id.'" class="pluginmanager_grablet sequence_grablet"><a href="#"></a></div>' . "\n";
if ($checkable) {
print ' <input type="checkbox" onclick="sort_' . $config_item . '_Sequence();" name="serendipity[' . $postKey . ']' . '[activate][' . $config_item . '][' . $id . ']" ' . (in_array($id, $store_order) ? ' checked="checked" ' : '') . ' value="true" id="activate_' . $id . '" />' . "\n";
}
// Add the item contents
print ' <span>'.$items[$id]['display'].'</span>' . "\n";
if (isset($items[$id]['img'])) {
@ -785,7 +792,7 @@ EOS;
print "&nbsp;\n";
} else {
print <<<EOS
<button type="submit" name="serendipity[$postKey][$config_item]" value="$oneup">
<button type="submit" name="serendipity[$postKey][override][$config_item]" value="$oneup">
<img src="$uparrow_img" alt="Move Up">
</button>
@ -796,7 +803,7 @@ EOS;
print "&nbsp;\n";
} else {
print <<<EOS
<button type="submit" name="serendipity[$postKey][$config_item]" value="$onedown">
<button type="submit" name="serendipity[$postKey][override][$config_item]" value="$onedown">
<img src="$downarrow_img" alt="Move Down">
</button>
@ -815,18 +822,35 @@ EOS;
// Print the Javascript to drag-n-drop the list
print <<<EOS
<script type="text/javascript">
function sort_${config_item}_Sequence() {
//var seq = DragDrop.serData('${config_item}_group', null);
var seq = DragDrop.serData(null, '${config_item}');
var start = seq.indexOf("(");
var end = seq.indexOf(")");
seq = seq.slice((start + 1), end);
checkable_seq = seq.split(",");
out_seq = '';
for (i in checkable_seq) {
if (document.getElementById('activate_' + checkable_seq[i]) && !document.getElementById('activate_' + checkable_seq[i]).checked) {
continue;
} else {
if (out_seq != '') {
out_seq += ',';
}
out_seq += checkable_seq[i];
}
}
var order = document.getElementById("${config_item}_value");
order.value = out_seq;
}
function init_${config_item}_Sequence()
{
var lst = document.getElementById("${config_item}");
DragDrop.makeListContainer(lst, '${config_item}_group');
lst.onDragOut = function() {
//var seq = DragDrop.serData('${config_item}_group', null);
var seq = DragDrop.serData(null, '${config_item}');
var start = seq.indexOf("(");
var end = seq.indexOf(")");
seq = seq.slice((start + 1), end);
var order = document.getElementById("${config_item}_value");
order.value = seq;
lst.onDragOut = function() {
sort_${config_item}_Sequence();
};
}
addLoadEvent(init_${config_item}_Sequence);