Update of /cvsroot/php-blog/jBlog
In directory sc8-pr-cvs1:/tmp/cvs-serv3028
Modified Files:
jBlog_admin.php jBlog_admin_entries.inc.php
jBlog_admin_plugins.inc.php jBlog_functions.inc.php
jBlog_plugin_api.php jBlog_sidebar_items.php
Log Message:
Make the htmlarea easily accessible to other parts of the admin section that
need to use it.
Implement plugin configuration (via introspection).
Add "HTML Nugget" plugin that allows user to add little bytes of html to their
sidebar(s).
Index: jBlog_admin.php
===================================================================
RCS file: /cvsroot/php-blog/jBlog/jBlog_admin.php,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- jBlog_admin.php 11 Mar 2003 02:23:02 -0000 1.16
+++ jBlog_admin.php 11 Mar 2003 03:08:19 -0000 1.17
@@ -16,15 +16,7 @@
<title>jBlog Administration Suite</title>
<link rel="stylesheet" type="text/css" href="jBlog.css.php">
</head>
- <? if (isset ($jBlog["wysiwyg"]) && $jBlog["wysiwyg"] && $jBlog["GET"]["adminModule"] == "entries") { ?>
- <body onload="HTMLArea.replaceAll()">
- <script type="text/javascript" src="htmlarea/htmlarea.js"></script>
- <script type="text/javascript" src="htmlarea/htmlarea-lang-en.js"></script>
- <script type="text/javascript" src="htmlarea/dialog.js"></script>
- <style type="text/css">
- @import url(htmlarea/htmlarea.css);
- </style>
- <? } else echo "<body>"; ?>
+ <body>
<table class="jBlog_banner">
<tr>
<td><?= htmlentities($jBlog['blogTitle']) ?></td>
Index: jBlog_admin_entries.inc.php
===================================================================
RCS file: /cvsroot/php-blog/jBlog/jBlog_admin_entries.inc.php,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- jBlog_admin_entries.inc.php 10 Mar 2003 22:11:17 -0000 1.6
+++ jBlog_admin_entries.inc.php 11 Mar 2003 03:08:20 -0000 1.7
@@ -83,6 +83,7 @@
case "edit":
$entry = jBlog_fetchEntry("id", $jBlog["GET"]["id"]);
+
jBlog_printEntryForm("?", array("jBlog[action]" => "admin", "jBlog[adminModule]" => "entries",
"jBlog[adminAction]" => "save"), $entry);
break;
Index: jBlog_admin_plugins.inc.php
===================================================================
RCS file: /cvsroot/php-blog/jBlog/jBlog_admin_plugins.inc.php,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- jBlog_admin_plugins.inc.php 10 Mar 2003 20:38:17 -0000 1.2
+++ jBlog_admin_plugins.inc.php 11 Mar 2003 03:08:20 -0000 1.3
@@ -5,6 +5,77 @@
include_once "jBlog_plugin_api.php";
include_once "jBlog_sidebar_items.php";
+if (isset($_GET['jBlog']['plugin_to_conf'])) {
+ /* configure a specific instance */
+
+ $plugin =& jblog_plugin_api::load_plugin($_GET['jBlog']['plugin_to_conf']);
+
+ $bag = new jBlog_property_bag;
+ $plugin->introspect($bag);
+ $name = htmlentities($bag->get('name'));
+ $desc = htmlentities($bag->get('description'));
+
+ $config_names = $bag->get('configuration');
+
+ if (isset($_POST['SAVECONF'])) {
+ /* enum properties and set their values */
+
+ foreach ($config_names as $config_item) {
+ $cbag = new jBlog_property_bag;
+ if ($plugin->introspect_config_item($config_item, $cbag)) {
+ $plugin->set_config($config_item, $_POST['jBlog']['plugin'][$config_item]);
+ }
+ }
+ }
+
+?>
+<form method="POST">
+
+<table cellpadding="5">
+<tr>
+<th>Name</th>
+<td><?= $name ?></td>
+</tr>
+<tr>
+<th>Description</th>
+<td><?= $desc ?></td>
+</tr>
+</table>
+
+<table border="0" cellspacing="5" cellpadding="5">
+<?php
+
+
+ foreach ($config_names as $config_item) {
+ $cbag = new jBlog_property_bag;
+ $plugin->introspect_config_item($config_item, $cbag);
+
+ $cname = htmlentities($cbag->get('name'));
+ $cdesc = htmlentities($cbag->get('description'));
+ $value = $plugin->get_config($config_item);
+ $hvalue = htmlentities($value);
+
+ switch ($cbag->get('type')) {
+ case 'string':
+ echo "<tr><td>$cname</td><td><input type=\"text\" name=\"jBlog[plugin][$config_item]\" value=\"$hvalue\"> <font color='#bbbbbb'>//$cdesc</font></td></tr>\n";
+ break;
+ case 'html':
+ jBlog_emit_htmlarea_code();
+ echo "<tr><td colspan=\"2\">$cname <font color='#bbbbbb'>//$cdesc</font></td></tr>\n<tr><td colspan=\"2\"><textarea name=\"jBlog[plugin][$config_item]\" rows=\"20\" cols=\"80\">$hvalue</textarea></td></tr>";
+ break;
+ }
+
+ }
+?>
+</table>
+<input type="submit" name="SAVECONF" value="Save">
+</form>
+<?php
+
+
+} else {
+ /* show general plugin list */
+
if (isset($_POST['SAVE']) && isset($_POST['jBlog']['placement'])) {
foreach ($_POST['jBlog']['placement'] as $plugin_name => $placement) {
jblog_plugin_api::update_plugin_placement(
@@ -60,6 +131,7 @@
<table border="1" cellpadding="5">
<tr>
<th> </th>
+<th>Title</th>
<th>Plugin</th>
<th>Description</th>
<th>Placement</th>
@@ -94,18 +166,31 @@
$name = htmlentities($bag->get('name'));
$desc = htmlentities($bag->get('description'));
$place = placement_box("jBlog[placement][" . $plugin_data['name'] . "]", $plugin_data['placement']);
+
+ $title = "";
+ ob_start();
+ $plugin->generate_content($title);
+ ob_end_clean();
+ if (strlen(trim($title)) == 0) {
+ $title = " ";
+ }
+
if ($bag->is_set('configuration')) {
- $url = "#fixme";
+ $url = "?jBlog[adminModule]=plugins&jBlog[plugin_to_conf]=" . urlencode($plugin_data['name']);
$desc = "<a href=\"$url\">$desc</a>";
$name = "<a href=\"$url\">$name</a>";
+ $title = "<a href=\"$url\">$title</a>";
}
- echo "<tr><td><input type=\"checkbox\" name=\"jBlog[plugin_to_remove][]\" value=\"$plugin_data[name]\"></td><td>$name</td><td>$desc</td><td>$place</td></tr>\n";
+ echo "<tr><td><input type=\"checkbox\" name=\"jBlog[plugin_to_remove][]\" value=\"$plugin_data[name]\"></td><td>$title</td><td>$name</td><td>$desc</td><td>$place</td></tr>\n";
}
?>
</table>
<br />
-<input type="submit" name="REMOVE" value="Remove Ticked Plugins">
-<input type="submit" name="SAVE" value="Save">
+<input type="submit" name="REMOVE" title="Remove Ticked Plugins" value="Delete">
+<input type="submit" name="SAVE" title="Save changes to layout" value="Save">
</form>
+<?php
+}
+?>
Index: jBlog_functions.inc.php
===================================================================
RCS file: /cvsroot/php-blog/jBlog/jBlog_functions.inc.php,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -d -r1.50 -r1.51
--- jBlog_functions.inc.php 11 Mar 2003 01:58:54 -0000 1.50
+++ jBlog_functions.inc.php 11 Mar 2003 03:08:20 -0000 1.51
@@ -1068,6 +1068,8 @@
// Determine whether we should WYSIWYG editor
+ jBlog_emit_htmlarea_code();
+
if ($jBlog["wysiwyg"])
{
?>
@@ -1441,6 +1443,28 @@
$cursor = mysql_db_query($jBlog['dbName'], $query);
$row = mysql_fetch_assoc($cursor);
return $row;
+}
+
+function jBlog_emit_htmlarea_code()
+{
+ static $init = false;
+ global $jBlog;
+
+ if ($init)
+ return;
+
+ if (isset ($jBlog["wysiwyg"]) && $jBlog["wysiwyg"]) {
+?>
+ <script type="text/javascript" src="htmlarea/htmlarea.js"></script>
+ <script type="text/javascript" src="htmlarea/htmlarea-lang-en.js"></script>
+ <script type="text/javascript" src="htmlarea/dialog.js"></script>
+ <style type="text/css">
+ @import url(htmlarea/htmlarea.css);
+ </style>
+ <script defer='defer'>HTMLArea.replaceAll();</script>
+<?php
+ }
+ $init = true;
}
define("JBLOG_FUNCTIONS_LOADED", true);
Index: jBlog_plugin_api.php
===================================================================
RCS file: /cvsroot/php-blog/jBlog/jBlog_plugin_api.php,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- jBlog_plugin_api.php 11 Mar 2003 01:59:23 -0000 1.10
+++ jBlog_plugin_api.php 11 Mar 2003 03:08:20 -0000 1.11
@@ -189,6 +189,9 @@
$v[] = $data['value'];
}
}
+ if (count($v) == 1)
+ return $v[0];
+
return implode(", ", $v);
}
@@ -264,6 +267,12 @@
{
$name = $this->instance . "/" . $name;
return jBlog_get_config_var($name, $defaultvalue);
+ }
+
+ function set_config($name, $value)
+ {
+ $name = $this->instance . "/" . $name;
+ return jBlog_set_config_var($name, $value);
}
}
Index: jBlog_sidebar_items.php
===================================================================
RCS file: /cvsroot/php-blog/jBlog/jBlog_sidebar_items.php,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- jBlog_sidebar_items.php 10 Mar 2003 02:13:38 -0000 1.1
+++ jBlog_sidebar_items.php 11 Mar 2003 03:08:20 -0000 1.2
@@ -144,6 +144,44 @@
}
}
+class jBlog_html_nugget_plugin extends jBlog_plugin {
+ function introspect(&$propbag)
+ {
+ $propbag->add('name', 'HTML Nugget');
+ $propbag->add('description', 'Holds a nugget of HTML in your sidebar');
+ $propbag->add('configuration', array(
+ 'title',
+ 'content',
+ ));
+ }
+
+ function introspect_config_item($name, &$propbag)
+ {
+ switch($name) {
+ case 'title':
+ $propbag->add('type', 'string');
+ $propbag->add('name', 'Title');
+ $propbag->add('description', 'Title for the nugget');
+ break;
+
+ case 'content':
+ $propbag->add('type', 'html');
+ $propbag->add('name', 'Content');
+ $propbag->add('description', 'The Nugget of HTML!');
+ break;
+ default:
+ return false;
+ }
+ return true;
+ }
+
+ function generate_content(&$title)
+ {
+ $title = $this->get_config('title', $title);
+ echo $this->get_config('content');
+ }
+
+}
?>
|