<font face="Verdana" size="3" color="#990000">What is a template
rendering engine?</font><font face="Verdana" size=2>
A template rendering engine is the total separation (abstraction) of an
application business logic and rules from the content layer (output HTML, XHTML,
XML, PDF, etc.). </font>
<font face="Verdana" size=2>It includes dynamic variable substitutions (replaces keywords or place holders with content), dynamic block substitutions (for example the result of a record set from a query, for instance the number of available news topics on the news index), amazing capabilities to process unlimited nested loops among many others. </font>
<font face="Verdana" size=2>Conditional statements ( [if/elsif/else] which allow you to make decisions based on user interaction in a easy to understand way - optional). </font>
<font face="Verdana" size=2>The problem here is many template solutions for PHP are based on regular expressions replacements, which highly complicated the code and added an immense overhead into the application, this regular expressions metaphor where hard to extend (and to adjust to taste), and did not quite provided the complete separation of presentation and logic (for example, to make rows of a table alternate colors, PHP code had to be adjusted).</font>
<font face="Verdana" size=2>Instead of following this route and live with this and many other drawbacks, Phoenix takes advantage of a revolutionary concept in template rendering engines, provided by the underlying architecture of Smarty. The compilation of templates, which combines the speed of execution of pure PHP code with the ease and simplicity of template syntax.</font>
<font face="Verdana" size=2>By using this approach template files are first converted into PHP scripts before they are executed. This may sound costly in terms of performance until you consider that this need only be done when the template file is changed! Once a template file is compiled, they are stored for later use (and re-use) using a caching mechanism, the end result being a reduced overall server load. Which can be greatly enhanced (up to 500%) by the use of PHP optimizing technologies like php-accelerator or the zend optimizer.</font>
<font face="Verdana" size=2>The second biggest advantage is extensibility, this is what really makes it invaluable for programmers and designers a like.</font>
<font face="Verdana" size=2><font size="3" color="#990000">How
does it work?
</font><font size="3"> </font> Basically templates work quite similar to
any ordinary HTML page, it uses template "tags" to distinguish dynamic content
(data provided from the DB for example), from the rest of the template which
is pure HTML. This tags are then automatically replaced with the result of the
requested data set. All template functions are loaded on demand this means that
even though the rendering engine is extensive in its core it will only load
the required code to perform each task.</font>
<font face="Verdana" size=2>While working with templates you have access to a wealth of resources, among them are:</font>
<font face="Verdana" size=2>Variable modifiers (allows you to transform on the fly the properties of your content, i.e. Caps, indentation, upper, lower, etc) </font>
<font face="Verdana" size=2>Configurations files, this allow you to define settings for colors, width and practically every aspect of the HTML properties.</font>
<font face="Verdana" size=2>A wealth of Built-in functions which you can extend, like free block/module positioning, forms, automatic clocking and encoding of email addresses, and many more.</font>
<font face="Verdana" size=2>You can easily add and extend with your own functions the engine by taking advantage of the plugin architecture.</font>
<font face="Verdana" size=2>Many new possibilities arise with the capability of automatic inclusion of static content either local or remote on the fly.</font>
<font face="Verdana" size=2>Caching Mechanisms designed with great granularity allows you to specify how, when and how often cached content is to be updated (turning your site as fast as static HTML) and under which conditions.</font>
<font face="Verdana" size=2><font size="3" color="#990000">Advanced Features:</font></font>
<font face="Verdana" size=2>Prefilters
Are
a set of functions that are run on the templates prior to them being compiled
with the engine. (i.e. removing unwanted comments form them)</font>
<font face="Verdana" size=2>PostFilters
This are functions that are executed after the templates have been compiled.
And
could help add valuable data to the whole of your templates if needed on the
fly.</font>
<font face="Verdana" size=2>Output Filters
This
feature allows you to apply settings to content while being executed as opposed
to the postfilters which are applied just before saving the compiled template.</font>
<font face="Verdana" size=2>Multiple Template sources
Templates
may come from a variety of sources, like file system or the database.</font>
<font face="Verdana" size=2>Debugging Tools
Intelligent
debugging console which allows one to trace all items related to any and all
templates used diring the course of a page rendering.</font>
<font face="Verdana" size=2>The pnTemplate API
This
(Template Application Programming Interface) provides a set of tools that allow
programmers to harness the full set of combined resources that PostNuke and
Smarty provide.</font>
<font face="Verdana" size=2>It follows the pnAPI naming conventions and style and will become easy to understand and apply for module/block programming, taking current modules and block to the next level of usability, flexibility and power.</font>
<font face="Verdana" size=2>The Phoenix Administration (system)
Module
Its the front end for all
this power and flexibility, it manages Themes, which are composed of templates,
that in turn have interesting properties like content type (html, xhtml, csv,
rss, pdf), they also belong to a layout, each template in a theme can belong
to a different layout, lets say you create a "dual column" layout and an "art
deco", layout for theme "Postnuke", then you can switch among this with the
click of a mouse, and then apply this system wide, templates also belonge to
specific zones (header, footer, module content, block etc.)</font>
<font face="Verdana" size=2>Templates install them selfs similar to how modules do now, you just drop in the theme, initialize and activate it and you are done. Same goes for upgrades or removal.</font>
<font face="Verdana" size=2>In the Phoenix administration module you can manage all aspects of the rendering engine, including but not limiting to all properties that control the behavior of smarty, as well as create, edit, delete templates and its related itmes online, since you can choose to use file system templates or db templates or a combination of both, you can directly upload new sets of templates from your computer.</font>
<font face="Verdana" size=2>You have access to CSS and many more properties and features, the best part of it all is, that you can have the old themes right along with the next generation and also switch back and forth among them with ease.</font>
<font face="Verdana" size=2>Templates Programming Language
and Active Zones
While working with templates
as mentioned before you can either use the basic template "tags" and normal
HTML or go beyond the choice is yours, the rendering engine provides enough
resources to make your templates intuitive and intelligent accomplishing quite
complex task with great ease, this is done by the use of what we call the "active
zones". Active zones are special place holder areas in your templates that allow
execution of commands from the template rendering language or invocation of
plugins, filters, variable substitution, etc.</font>
<font face="Verdana" size=2>This, active zones, are easy to use and apply and will make your life very simple and productive while customizing and designing the site of your dreams.</font>
<font face="Verdana" size=2>In conclusion the Phoenix Template Rendering Engine can answer the needs and requirements of both novices and seasoned developers or graphics designer. And it supports popular HTML editors like DreamWeaver among others allowing you to use visual tools to enhance your experience and over-all productivity harnessing all this power in one simple place.</font>
<font face="Verdana" size=2><font size="3" color="#990000">Introduction</font>
PN has grown both in core logic and in modules/blocks available, the lines
between the core logic and the modules and/or extensions have blurred at times,
forcing 3rd party developers to impose upon the core, creating incompatibilities,
delaying upgrades, and slowing response times from the system (pnCore).</font>
<font face="Verdana" size=2>So we'll get to the point in the beginning, what can you look forward to in the next release of PN? A modularized core, plug and play architecture, short URL's, admin redesign, a templating engine (get more info here), better security, caching, and a visual editor. Some may be asking, "How is this going to be accomplished?" and "Who is going to do it?" Read on and you'll discover who has volunteered their time, how it is organized and how you can contribute.</font>
<font face="Verdana" size=2>Modularizing the core is key to separating core logic and presentation layers. And the work on modularizing pnAPI, and key core components is well under way and means you will see this change in the next release 0.8 (code named: adam_baum). As a result of this modularization future PN releases will include the following packages, (i.e. Core, Modules, Languages, Docs, & Themes) and are reflected in the current CVS as main categories which in turn hold the components belonging to it, (i.e. Modules: Content, Legacy, Miscellaneous, ResourcePack and Utility).</font>
<font face="Verdana" size=2>Some of you may be asking yourself, "How do these changes help me as a module dev, webmaster, or user?" First for module devs, the categorization of data provides you with the ability to group your module in a logical way within the current module structure already available in PN. It will also provide a webmaster with the ability to better use and manage their site, targeting their site to specific use or tastes. For example, you can create and tailor your installations based on your personal tastes, needs, or target audiences, i.e., site focusing on community, content, e-commerce, or education. For users this won't make much difference to you other than the site you are using will provide you with a richer user experience.</font>
<font face="Verdana" size=2>Also, webmaster/admin's can look forward to new and enhanced core functionality. PN will now be able to categorize modules, blocks, and content. Furthermore it will be able to resolve module dependencies; for example, if you want to install the "News" module it would require the installation of dependent modules that provide additional functionality. The new installer will detect those dependencies and guide you in the set-up process of customizing and installing PN. For example, a request for the "News" module, requires the following additional modules: Submit_News, Topics and NS-AddStory, so the installer will prompt the user to install these dependent modules at the time of installation. Once all the demands are met the Wizard will continue with the installation.</font>
<font face="Verdana" size=2>Of course in order to accomplish the above successfully, another technology is needed that we will call the "Custom-Wizard". The "Custom-Wizard" is a low level tool with the ability to handle the dreaded Unix permissions, create, delete, set permissions and ownership among many other things and will even work under "SAFE MODE" installations. So where ever PHP runs the "Custom-Wizard" will work regardless of the ownership and host system restrictions. This extended functionality will cut down almost 98% of the installation/customization issues present today in support requests.</font>
<font face="Verdana" size=2>The new and improved core will also cater a solution for 3rd party developers who wish to hook directly into the pnCore, to extend it in a safe and efficient way. This new plug & play architecture will also be made available allowing module devs to tap into the resources without the need of modifying core files. These changes alone will provide certainty and unparalleled power and flexibility to all devs. Also, new CMS importers will be available in order to convert from other systems (i.e., PHPNuke, Xoops, Envolution) with as much accuracy as possible.</font>
<font face="Verdana" size=2>Also, another valuable tool, the pnAntiCracker will become a module that will allow greater flexibility. By doing this webmasters will be able to finer control its operation and general properties.</font>
<font face="Verdana" size=2>The visual editor will also become a module with cross browser/platform capabilities in the latest generation browsers. Along with this last point PN will be able to automatically detect browser type versions and current rendering capabilities aiding in the creation of themes and templates, which will be possible to enable in a per module setting.</font>
<font face="Verdana" size=2>Last but not least, this brings us to templates. Yes, finally the 0.8 version of PN on top of the previous points will bring you the Phoenix template-rendering engine. The work in the global implementation of the Phoenix rendering engine will engage in parallel tasks associated with it, as the complete compliance of all system and core modules with the pnAPI. With the templating system short URL's are implemented and all modules will be fully template based. The administration module will have a new and improved design and new database back ends (i.e. postgreSQL) with enhanced caching technologies for queries and content will be added as well, a new logging mechanism will track trends and use of your site in a friendly and powerful new ways.</font>
<font face="Verdana" size=2>This will be a next generation CMS that includes a slim core, is extensible, modular and smart. And will support several backend database servers taking full advantage of ADODB and will finally provide a complete separation of core logic and presentation layers, becoming an N-Tier application. (For those non-developers an N-Tier application architecture is a model for developers to create a flexible and reusable application. By breaking the application into tiers, developers only have to modify or add to specific layers to change or scale up a tool.) </font><font face="Verdana" size=2>http://www.webopedia.com/quick_ref/app.arch.asp</font>
<font face="Verdana" size=2>The benefits will be astounding. Developers can
focus on code; designers can work on layout and presentation; and writers
can focus on content.</font>
<font face="Verdana" size=2>This provides a solid foundation to extend the users management area, abstraction of reusable code and much, much more.</font>
<font face="Verdana" size=2>You may ask who will do this and
how?
It is with great pleasure that I introduce you to, the newly elected Task
Force Team Leaders and Members along with its responsibilities and Tasks definitions.</font>
<font face="Verdana" size=2>In order to streamline our efforts and efficiently organize the work we are dividing the development into different teams. Each team in addition to the responsibilities listed below will also be responsible for keeping their specific tasks up to date in the NOC and maintain any team related</font>
<font face="Verdana" size=2>The security task team will primarily be responsible for overall security of the PN core as well as responding to the security mailing list. They will be the front line for all security concern with PostNuke. They will also be responsible for the permissions system found in PostNuke.</font>
<font face="Verdana" size=2>Team Leader: Tanis
Team Members: larsneo, markwest</font>
<font face="Verdana" size=2>The research task team will primarily be responsible exploring and testing new and fresh ideas and technologies that could possibly be used in PostNuke. As new technologies are identified they will be slated for inclusion in a future PostNuke release. Analyzing the current needs of admins and conducting suability research to improve the current state of PN</font>
<font face="Verdana" size=2>Team Leader: bharvey42
Team Members: Tanis, elgranazul, <a href="http://developers.postnuke.com/modules.php?op=modload&name=phpWiki&file=index&pagename=vworld%2Fvanessa"target="_blank">vworld, class007, <a href="http://developers.postnuke.com/modules.php?op=modload&name=phpWiki&file=index&pagename=Spliffster"target="_blank">spliffster, <a href="http://developers.postnuke.com/modules.php?op=modload&name=phpWiki&file=index&pagename=Neo"target="_blank">Neo, pnCorps</font>
<font face="Verdana" size=2>The module task team will primarily be responsible for the non-core (with the exception of 3rd party modules) modules and blocks found in a PostNuke release.</font>
<font face="Verdana" size=2>Team Leader: <a href="http://developers.postnuke.com/modules.php?op=modload&name=phpWiki&file=index&pagename=MagicX"target="_blank">magicx
Team Members: <a href="http://developers.postnuke.com/modules.php?op=modload&name=phpWiki&file=index&pagename=skooter"target="_blank">skooter, <a href="http://developers.postnuke.com/modules.php?op=modload&name=phpWiki&file=index&pagename=nunizgb"target="_blank">nunizgb, class007, markwest, spliffster</font>
<font face="Verdana" size=2>The themes task team will primarily be responsible for the core themes as well as the Phoenix rendering engine.</font>
<font face="Verdana" size=2>Team Leader: Neo
</font><font face="Verdana" size=2>Team Members: magicx, vworld, bharvey42</font>
<font face="Verdana" size=2>The core task team will primarily be responsible for the PostNuke API, the Install/Upgrade scripts and other core logic of the PostNuke.</font>
<font face="Verdana" size=2>Team Leader: larsneo
</font><font face="Verdana" size=2>Team Members: Neo, <a href="http://developers.postnuke.com/modules.php?op=modload&name=phpWiki&file=index&pagename=MagicX"target="_blank">magicx, nunizgb, skooter, lcabrera, spliffster, cybersliver</font>
<font face="Verdana" size=2>The language task team will primarily be responsible for all things related to language within the structure of PostNuke.</font>
<font face="Verdana" size=2>Team Leader: nunizgb
</font><font face="Verdana" size=2>Team Members: elgranazul, class007</font>
<font face="Verdana" size=2>The database task team will primarily be responsible for the main database access found within PostNuke. Currently that will be with the pnADODB logic, as well as moving the code forward to be used with any database engine.</font>
<font face="Verdana" size=2>Team Leader: <a href="http://developers.postnuke.com/modules.php?op=modload&name=phpWiki&file=index&pagename=lcabrera"target="_blank">lcabrera
Team Members: skooter, Tanis, xaplo, cybersliver</font>
<font face="Verdana" size=2>The releases task team will primarily be responsible for the versioning, packaging, and posting new releases to the appropriate locations. They will be the packaging experts and will provide many various packages, including but not limited to *.tar, *.zip, *.deb and possibly others like *.rpm.</font>
<font face="Verdana" size=2>Team Leader: magicx
</font><font face="Verdana" size=2>Team Members: larsneo, nunizgb, class007, bharvey42</font>
<font face="Verdana" size=2>The docs task team will primarily be responsible for documentation found within the released PostNuke package. That could be their own developed documentation or documentation from 3rd parties.</font>
<font face="Verdana" size=2>Team Leader: infopro
Team Members: jim
hadfield, pnCorps, class007</font>
<font face="Verdana" size=2>All Task Force Team leaders where elected among their peers in an open vote in the IRC meeting. After these elections a final vote was taken for the following: Lead Developer and Communications Officer.</font>
<font face="Verdana" size="2">The elected individuals where:
Lead Developer: <a href="http://developers.postnuke.com/modules.php?op=modload&name=phpWiki&file=index&pagename=Neo"target="_blank">Neo
Communications Officer: vworld</font>
<font face="Verdana" size=2>Last but not least, project manager is HZink</font>
<font face="Verdana" size="3" color="#990000">Conclusion</font><font face="Verdana" size=2>
This summarizes the results of the meeting, presents us with the goals and
objectives for this 1st quarter and allows us to see clearly into the future.
All of these new developments and implementations will, be performed in
such a way that existing modules, themes and blocks will work flawlessly
while new generations of them will be able to do as much and more. These
new developments will also allow you to leverage your current and future
faith in PostNuke to be safeguarded and extended exponentially.</font>
<font face="Verdana" size=2>We invite you all to help us, because together go even farther than we could if we worked alone. And we'd like to thank everyone involved in the community for your support you are the reason this project is unique and different from every other CMS out there!</font>
<font face="Verdana" size=2>This is the road, this is the vision, and future of PostNuke. </font>
<font face="Verdana" size=2>The PostNuke development team</font>
<font face="Verdana" size=2><font size="3" color="#990000">Related
Links:<font size="2">
</font></font>IRC meeting log
</font><font face="Verdana" size=2>http://noc.postnuke.com/docman/?group_id=5
</font><font face="Verdana" size=2>(Look under IRC Meeting logs document
category)</font>
<font face="Verdana" size=2>Organizational chart:
</font><font face="Verdana" size=2>http://noc.postnuke.com/docman/view.php/5/31/pnOrgChart-2003b.png</font>
<font face="Verdana, Arial, Helvetica, sans-serif" size="2">pnDev
Profiles</font><font face="Verdana, Arial, Helvetica, sans-serif" size="2">
http://developers.postnuke.com/modules.php?op=modload&name=phpWiki&file=index&pagename=bio</font>
<font face="Verdana, Arial, Helvetica, sans-serif" size="2">Phoenix
Rendering Engine Info
http://news.postnuke.com/modules.php?op=modload&name=News&file=article&sid=2358&mode=thread&order=0&thold=0</font>
<a href="http://www.issho.org/modules.php?op=modload&name=phpWiki&file=index&pagename=LaszloBlog"target=blank">Tony Laszlo, Tokyo