On 17.12.2011 6:01, Philip Neustrom wrote:
>>> Page-content plugins will need editor plugins, yeah (like our "include
>>> page" plugin).  But I think that's a good thing.
>>>
>> How do these plugin work when there is no XML "injection" into page
>> content? How the final layout is being build?
> We take the HTML5 that's stored and, before rendering it, transform
> certain bits into functions.  Right now we go HTML5 ->  Django
> template, and turn certain specially-registered HTML bits into Django
> template tags (functions).  We can then cache the Django template.
> We're going to make registering a new page plugin easier (no HTML
> traversal) soon.
>
> Here's the docstring describing how we've got inside-page plugins working:
>
> Conversion of HTML into template with dynamic parts.
>
> We want to allow some dynamic content that gets inserted as the HTML is
> rendered. This is done by converting certain HTML tags into template tags.
> There are two mechanisms to do this: plugin handlers and tag handlers.
>
> Plugins are meant for inserting bits of dynamic content at specific places on
> the final rendered page marked by a placeholder element. The output can be
> whatever you like: widgets, bits of JavaScript, anything. Tag handlers, on the
> other hand, are meant for fixing up the HTML slightly and transparently, i.e.,
> fixing links and adding helpful visual styles and the like. When in doubt, use
> plugins.
>
> Plugin handlers work with HTML elements that have the class "plugin". When
> an element has the class "plugin", it will be passed to registered handlers
> based on the other classes it has.
>
> For example, the following element will be passed to the handler registered 
> for
> the "includepage" class:
>
> <a href="Navigation" class="plugin includepage">Include Navigation</a>
>
> which will convert it to this:
>
> {% include_page "Navigation %}
>
> to be rendered by the include_page template tag.
>
> Tag handlers work similarly, but they are applied by element tag instead of by
> class. They are best used for routine processing of content, such as styling.
>
> For example, to mark links to non-existant pages with a different style, this:
> <a href="My Page">My Page</a>
> gets converted to this:
> {% link "My Page" %}My Page{% endlink %}
> and rendered as appropriate by the LinkNode class.
>
>
{%%} syntax looks really "wiki-like". That's a kind of reverse logic, 
comparing to MediaWiki, where parser functions are converted to HTML 
output, not opposite. What's really important, parser functions can be 
nested (and by using proper parser frame parser tags probably can be 
nested as well - I haven't tried that yet but might try soon). Can 
LocalWiki template tags be nested as well?
Dmitriy


_______________________________________________
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to