[pLog-svn] r2628 - in plog/trunk/class: plugin view

Oscar Renalias oscar at renalias.net
Thu Nov 24 21:05:04 GMT 2005


A non-text attachment was scrubbed...
Name: test.zip
Type: application/zip
Size: 813 bytes
Desc: not available
Url : http://www.plogworld.net/pipermail/plog-svn/attachments/20051124/fd51421f/test.zip
-------------- next part --------------

A dirty example of a plugin to use this feature attached. Install it,  
make sure it shows in the plugin centre, reload one of the blog pages  
and look at the title. It's dynamically changed! :)

Oscar

On 24 Nov 2005, at 22:26, oscar at devel.lifetype.net wrote:

> Author: oscar
> Date: 2005-11-24 20:26:42 +0000 (Thu, 24 Nov 2005)
> New Revision: 2628
>
> Modified:
>    plog/trunk/class/plugin/eventlist.properties.php
>    plog/trunk/class/view/blogview.class.php
>    plog/trunk/class/view/smartyview.class.php
> Log:
> Added a new event, EVENT_PROCESS_BLOG_TEMPLATE_OUTPUT that allows  
> plugins to catch the content that will be sent to the client right  
> before it is actually send so that it can be modified. This makes  
> it much easier to develop plugins that for example add banner or  
> ads to certain places of the template (like the hacks we've seen  
> around the forums)
>
> Modified: plog/trunk/class/plugin/eventlist.properties.php
> ===================================================================
> --- plog/trunk/class/plugin/eventlist.properties.php	2005-11-24  
> 20:25:36 UTC (rev 2627)
> +++ plog/trunk/class/plugin/eventlist.properties.php	2005-11-24  
> 20:26:42 UTC (rev 2628)
> @@ -172,4 +172,6 @@
>  	define( "EVENT_PRE_DELETE_GLOBAL_CATEGORY", 123 );
>  	define( "EVENT_POST_UPDATE_GLOBAL_CATEGORY", 124 );
>  	define( "EVENT_GLOBAL_CATEGORIES_LOADED", 125 );	
> +	// post-processing of templates
> +	define( "EVENT_PROCESS_BLOG_TEMPLATE_OUTPUT", 126 );
>  ?>
> \ No newline at end of file
>
> Modified: plog/trunk/class/view/blogview.class.php
> ===================================================================
> --- plog/trunk/class/view/blogview.class.php	2005-11-24 20:25:36  
> UTC (rev 2627)
> +++ plog/trunk/class/view/blogview.class.php	2005-11-24 20:26:42  
> UTC (rev 2628)
> @@ -189,6 +189,24 @@
>          }
>  		
>  		/**
> +		 * @see Smartyview::preProcessViewContents()
> +		 *
> +		 * This reimplementation of this method adds support for events  
> that can be caught in a plugin. This can be used
> +		 * for for example in a plugin that processes the output of a  
> template in order to add ads or do some other
> +		 * dynamic operation with the content.
> +		 *
> +		 * @param content
> +		 * @return The content
> +		 */
> +		function preProcessViewContents( $content )
> +		{			
> +			// pass the content and the name of the template file as a  
> parameter to the event
> +			$this->notifyEvent( EVENT_PROCESS_BLOG_TEMPLATE_OUTPUT, Array 
> ( 'content' => &$content, 'template' => $this->_templateName ));
> +			
> +			return( $content );
> +		}		
> +		
> +		/**
>  		 * Sets some  in this case, we leave it all up to the child  
> classes to reimplement
>  		 * this and by default call View::render()
>  		 *
>
> Modified: plog/trunk/class/view/smartyview.class.php
> ===================================================================
> --- plog/trunk/class/view/smartyview.class.php	2005-11-24 20:25:36  
> UTC (rev 2627)
> +++ plog/trunk/class/view/smartyview.class.php	2005-11-24 20:26:42  
> UTC (rev 2628)
> @@ -165,6 +165,23 @@
>
>  			return( $cacheTime );
>  		}
> +		
> +		/**
> +		 * Public method that allows view classes to do something to the  
> content right before it is
> +		 * sent to the client. It takes the content itself as a string  
> as the first parameter and is
> +		 * expected to return the final version of the content.
> +		 *
> +		 * This method is only called in case content needs to be  
> returned. If HTTP caching is enabled and
> +		 * the caching logic determines that no new data needs to be  
> sent (only a Last-Modified header in that case)
> +		 * then this method will <b>not</b> called.
> +		 *
> +		 * @param content the content generated after rendering the  
> template but before being sent to the client
> +		 * @return The final version of the content
> +		 */
> +		function preProcessViewContents( $content )
> +		{
> +			return( $content );
> +		}
>
>          /**
>  		 * Renders the view using the Smarty template object that we  
> created in the constructor. This method
> @@ -203,8 +220,12 @@
>  				// pass all the values to the template object
>  				$this->_template->assign( $this->_params->getAsArray());			
>  			
> -				// and finally send the contents of the template
> -				print( $this->_template->fetch( $this->getSmartyViewId()));			
> +				// generate the contents
> +				$content =
> +				
> +				// and finally send them after calling the pre-processing method
> +				$content = $this->preProcessViewContents( $this->_template- 
> >fetch( $this->getSmartyViewId()));				
> +				print( $content );
>  			}
>          }
>       }
>
> _______________________________________________
> pLog-svn mailing list
> pLog-svn at devel.lifetype.net
> http://devel.plogworld.net/mailman/listinfo/plog-svn
>



More information about the pLog-svn mailing list