[geeklog-devel] PLG_itemDisplay?
Joe Mucchiello
joe at ThrowingDice.com
Mon Oct 8 16:27:51 EDT 2007
There are currently dozens of suggestions regarding this. I'll go
with the ones I feel have the path of least resistance:
STEP 1: Expand the PLG_templateSetVars function so it is more informative.
function PLG_templateSetVars($templateName, $templateclass, $type=
'', $data =Array())
function plugin_templatesetvars_$plugin($templateName,
$templateclass, $type, $data)
This change is the most transparent. The caller of
PLG_templateSetVars tells the plugins who he is ($type) and providing
a database row associated with the object ($data) if there is one. So
existing calls would expand to something like:
PLG_templateSetVars('featuredstory', $T, 'article', $A);
PLG_templateSetVars('header', $header, 'siteHeader'); // leave
the array blank on the header, footer, newuserform, and submitstory
Where $A is the result from the DB_fetchArray() for the story.
There are only 10 calls to PLG_templateSetVars in CVS so it shouldn't
take long to do this. (I've added the call to the calendar plugin as
part of the bounty.)
Line numbers may be off, I haven't refreshed in a week or two:
public_html\lib-common.php(1151): PLG_templateSetVars( 'header',
$header, 'siteHeader' );
public_html\lib-common.php(1320): PLG_templateSetVars( 'footer',
$footer, 'siteFooter' );
public_html\profiles.php(227): PLG_templateSetVars
('contact', $mail_template, 'email');
public_html\profiles.php(401): PLG_templateSetVars ('emailstory',
$mail_template, 'email');
public_html\submit.php(207): PLG_templateSetVars ('story',
$storyform, 'submitform');
public_html\users.php(692): PLG_templateSetVars ('registration',
$user_templates, 'submitform');
system\lib-comment.php(799): PLG_templateSetVars
('comment', $comment_template, 'submitform');
system\lib-story.php(497): PLG_templateSetVars(
'featuredstorytext', $article, 'article', $story );
system\lib-story.php(503): PLG_templateSetVars(
'archivestorytext', $article, 'article', $story );
system\lib-story.php(509): PLG_templateSetVars( 'storytext',
$article, 'article', $story );
Of note here, the PLG_templateSetVars in comments is on the
submission form but not on the display. That needs remedy.
STEP 2: More than just stories needs to call PLG_itemSaved()
Not much to add here. Understood should be that the $type in
PLG_itemSaved($id, $type) needs to be the same a the $type in
PLG_templateSetVars for sanity sake.
STEP 3: This part isn't necessary but it would certainly help plugin
development.
Add an extra variable to any templates expressly for the use of
unknown plugins: {extensions}
Plugins use the append mode of set_var() so they don't overwrite some
other plugin's use of the {extension} variable:
function plugin_templatesetvars_$plugin($templateName, $T, $type, $A)
{
if ($type == 'block' AND $A['name'] = 'user_block') {
$T->set_var('extensions', extendUserBlock($A), true);
}
}
Some templates might include more than one {extensions} variables.
For example, Stories might have an {extend_after} and
{extend_buttons} so you could add button where the edit button goes.
But that is beyond the scope of this task.
At 10:56 AM 10/8/2007, Oliver Spiesshofer wrote:
>I remember now I introduced that function myself but due to the
>upcoming discussion it was never used.
>The reason was that plugins should be able to modify or analyze
>information before display if desired.
>Simply adding a template variable with
>plugin_templatesetvars_xxx would require that the plugin is
>installed together with a template using the variable, and the
>actual content of the item cannot be seen by the plugin then anyhow.
>It would be great if the function could be called in the plugin api
>instead so that the plugin could read the variables of the template
>out, modify them and then send them back for further processing. I
>guess that would cover most of the items needed.
>
>any thoughts on this?
>
>Oliver
>
>> >At 06:50 AM 1/9/2007, Dirk Haun wrote:
>> >Oliver,
>> >
>> >>Ok, rewriting the plugin engine was not the original scope of the
>> >>tagging plugin :), but this can certainly be done.
>> >>A PLG_itemDisplay('story') could call all plugins and see if they have
>> >>anything to add to the story display.
>> >
>> >Could you slow down a bit, please?
>> >
>> >Do we even need such an API? We already have something similar in
>> the form of
>> >plugin_templatesetvars_xxx
>> >
>> >bye, Dirk
>
>_______________________________________________
>geeklog-devel mailing list
>geeklog-devel at lists.geeklog.net
>http://eight.pairlist.net/mailman/listinfo/geeklog-devel
----
Joe Mucchiello
Throwing Dice Games
http://www.throwingdice.com
More information about the geeklog-devel
mailing list