Tabla de Contenidos

Changelog Plugin

Compatible con DokuWiki

No hay compatibilidad sobre la información dada!

plugin Allows you to show the changelog in a page.

actualizado por última vez en
2005-08-12
Proporciona
Syntax

El hecho de que falte la URL de descarga, significa que esta extensión no se puede instalar mediante el Gestor de Extensiones. Consulta Publicar un plugin en Dokuwiki.org. Se recomienda el uso de hosts de repositorios públicos como GitHub, GitLab o Bitbucket.

La extensión no ha sido actualizada en al menos 2 años. Puede que ya no tenga soporte o no sea mantenida y tenga problemas de compatibilidad.

Similar a changes, querychangelog

Etiquetado con !broken, changelog, include, listing, recent

How to use

Simply write {{changelog}} in the source page.

How to install

First, Create a folder named 'recent' in 'lib/plugins' then create a file named 'syntax.php' in this folder and copy/paste this code :

<?php
 
if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
require_once(DOKU_PLUGIN.'syntax.php');
 
/**
 * All DokuWiki plugins to extend the parser/rendering mechanism
 * need to inherit from this class
 */
class syntax_plugin_recent extends DokuWiki_Syntax_Plugin {
 
    /**
     * return some info
     */
    function getInfo(){
        return array(
            'author' => 'iDo',
            'email'  => 'iDo@woow-fr.com',
            'date'   => '12/08/2005',
            'name'   => 'Recent Plugin',
            'desc'   => 'Affiche les recents d\'un wiki',
            'url'    => 'http://www.dokuwiki.org/plugin:recent',
        );
    }
    /**
     * What kind of syntax are we?
     */
    function getType(){
        return 'substition';
    }
    /**
     * Where to sort in?
     */
    function getSort(){
        return 105;
    }
    /**
     * Connect pattern to lexer
     */
    function connectTo($mode) {
      $this->Lexer->addSpecialPattern("{{changelog}}",$mode,'plugin_recent');
    }
    /**
     * Handle the match
     */
    function handle($match, $state, $pos, &$handler){
        return true;
    }    
 
    /**
     * Create output
     */
    function render($mode, &$renderer, $data) {
        if($mode == 'xhtml'){	
            $renderer->doc .= '<div class="recents">';
            $renderer->doc .= $this->_Rethtml_recent();
            $renderer->doc .= '</div>';
            return true;
        }
        return false;
    }
 
    function _Rethtml_recent($first=0) {
       ob_start();
       html_recent($first);
       return ob_get_clean();
    }    
 
}
 
//Setup VIM: ex: et ts=4 enc=utf-8 :
?>

Contact

This my first plugin. i hope you'll like it ;)
ido [at] woow-fr [dot] com

Comments

Looks good :-), a couple of comments ;-)
Why create a separate file for your Rethtml_recent() function? Define it as a function within your plugin class and call it using $this->Rethtml_recent(). Note, per the syntax plugin guidelines, its good policy to prefix your own functions with an underscore. I see you have reworked the html_recent()1) function to output to a string. You could future proof your plugin by using PHP output buffering functions and calling html_recent() directly. All of which would make your code go something like this …
// at the top
require_once(DOKU_PLUGIN.'syntax.php');
// require_once('shorct.php'); -- remove this line
require_once(DOKU_INC.'inc/html.php');
 
// at the bottom
 
    function render($mode, &$renderer, $data) {
        if($mode == 'xhtml'){       		
//          $renderer->info['cache'] = FALSE;     // is this necessary? 
                                                  // a new revision, will automatically mean a fresh copy in the cache
            $renderer->doc .= '<div class="recents">';
            $renderer->doc .= $this->_Rethtml_recent();
            $renderer->doc .= '</div>';
            return true;
        }
        return false;
    }   
 
    function _Rethtml_recent($first=0) {
       ob_start();
       html_recent($first);
       return ob_get_clean();
    } 

I haven't tested the above, but you get the general idea. — Christopher Smith 2005-08-16 11:53

I will try this and update the code asap :) Ty ! iDo 2005-08-16 20:00 GMT +1
That's OK ! i have updated the code ! Thanks very much ! i did not know ob_start function. It's a very very good fonction !!! iDo 2005-08-17 09:27 GMT +1
Current version of code breaks XHTML conformity. This is the error: document type does not allow element “div” here; missing one of “object”, “applet”, “map”, “iframe”, “button”, “ins”, “del” start-tag. div class=“recents” couldnt locate the problem yet — Dirk Haage
“Parfait!” Thank you.
I changed the _Rethtml_recent() to NOT return the heading and the introduction line. It now looks like this:
    function _Rethtml_recent($first=0) {
       ob_start();
       html_recent($first);
       $html = ob_get_clean();
       $html = substr($html, strpos($html, '<ul'));
       return $html;
    }

Markus Birth

Here's a quick hack to display the latest 10 changes
No hack required, just change the recent config #~.~# — MF Low
Change the given method to get more control about recently changed pages. So i can list new pages the way i want ;) See live demo at the bottom of this page www.umingo.de
function _Rethtml_recent() {
	global $conf;
	global $ID;
	$startAt = 0;
	$numberOfEntries = 10;
 
        $recents = getRecents($startAt,$numberOfEntries ,'',RECENTS_SKIP_DELETED);
 
	//store output and return if method is finished
        ob_start();
	echo "<ul>";
	foreach($recents as $recent){
	  $date = date("d.m.y", $recent['date']);
	  echo "<li>";
	  echo "<span class='date'>".$date."</span> - ";
	  echo html_wikilink(':'.$recent['id'], useHeading('navigation')?null:$recent['id']);
	  echo "</li>";
        }
	echo "</ul>";
         return ob_get_clean();
 }   
1)
inc/html.php