DokuWiki

It's better when it's simple

User Tools

Site Tools


plugin:drop_all

Drop All Plugin

Compatible with DokuWiki

No compatibility info given!

plugin Extends the Drop me plugin with a button for Drop all

Last updated on
2007-07-11
Provides
Syntax
Conflicts with
drop_me

This extension has not been updated in over 2 years. It may no longer be maintained or supported and may have compatibility issues.

Extension name contains underscore, will not generate popularity points.

Tagged with collapsible, menu, navigation

Syntax

[drop]

Quellcode

save in /lib/plugin/drop_all/syntax.php

PHP

<?php
 
/**
 * Plugin Now: Inserts a timestamp.
 * 
 * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
 * @author     Christopher Smith <chris@jalakai.co.uk>
 */
 
// must be run within DokuWiki
if(!defined('DOKU_INC')) die();
 
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_drop_all extends DokuWiki_Syntax_Plugin {
 
    function getInfo(){
      return array(
        'author' => 'Jan-Philipp Warmers',
        'email'  => 'proGamler@freakz-at-work.de',
        'date'   => '2007-07-11',
        'name'   => 'Drop all button',
        'desc'   => 'use [drop]',
        'url'    => 'http://www.dokuwiki.org/plugin:drop_all',
      );
    }
 
    function getType() { return 'substition'; }
    function getSort() { return 158; }
    function connectTo($mode) { $this->Lexer->addSpecialPattern('\[drop\]',$mode,'plugin_drop_all'); }
    function handle($match, $state, $pos, &$handler){ return array($match, $state, $pos); }
    function render($mode, &$renderer, $data) {
 
      if($mode == 'xhtml'){
          $renderer->doc .= "<a href=\"javascript:drop_all()\">Alles ein-/ausklappen</a>";
          return true;
      }
      return false;
    }
}
?>

JAVAScript

add to /lib/scripts/script.js

//dropt die inhalte
function drop_all_text(){
// getElementsByName funktioniert nicht im IE da div kein name="" kennt. 
//sommit musste ich erst alle auslesen und dann geziehlt nach der classe gucken
	var d = document.getElementsByTagName('div');
	var k = d.length;
	for(i=0;i<k;i++){
		var classname = d[i].className;
 
  		if (classname == 'd'){
 
			d[i].style.display='block';
			d[i].className='drop';
		}else if (classname == 'drop') {
			d[i].style.display='none';
			d[i].className = 'd';
  		}
	}
}
//dropt die images und führt die Funktion zum Dropen der inhalte aus
function drop_all() {
 
	var d = document.getElementsByName('drop_me_img');
 
	var classname;
 
	var i;
	for(i=0;i<d.length;i++){
		img = null;
 
		classname = d[i].className;
 
 
  		if (classname != 'drop'){
 
  				d[i].src='minus.gif';
				d[i].className = 'drop';
 
		}else {
		d[i].src = 'plus.gif';
		d[i].className = 'd';
  		}
	}
	//aufruf des Drops der inhalte
	drop_all_text()
}
plugin/drop_all.txt · Last modified: 2011-06-18 17:04 by ach