Commit b9bc5c09 authored by Michael Schreiber's avatar Michael Schreiber
Browse files

refactoring, printed in black

parent da8b9899
passwordgrey Plugin for DokuWiki
display passwords in grey
All documentation for this plugin can be found at
https://www.dokuwiki.org/plugin:passwordgrey
If you install this plugin manually, make sure it is installed in
lib/plugins/passwordgrey/ - if the folder is called different it
will not work!
Please refer to http://www.dokuwiki.org/plugins for additional info
on how to install plugins in DokuWiki.
----
Copyright (C) Michael Schreiber <m.schreiber@creatronics.de>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
See the LICENSING file for details
base passwordgrey
author Michael Schreiber
email passwordgrey@creatronics.de
date 2019-10-31
name display passwords in grey
desc display passwords in lightgrey.
email m.schreiber@creatronics.de
date 2020-01-09
name passwordgrey plugin
desc display passwords in grey
url https://www.dokuwiki.org/plugin:passwordgrey
......@@ -25,7 +25,7 @@ function copyClip(id){
document.body.removeChild(el);
el = document.createElement("div");
el.setAttribute("style","font-size: 2em;text-align:center;vertical-alignment:middle;position:absolute;top:10%;left:10%;width:80%;height:80%;background-color:white;");
el.setAttribute("style","font-size: 2em;text-align:center;vertical-alignment:middle;position:absolute;top:40px;left: 50%;transform: translate(-50%, 0);background-color:lightgrey;");
el.innerHTML = "Copied to clipboard!";
setTimeout(function(){
el.parentNode.removeChild(el);
......
.passwordgrey{
color:lightgray;
}
<?php
/**
* Plugin passwordgrey: displays Passwords in light grey
*
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
* @author Michael Schreiber <passwordgrey@creatronics.de>
* @based on color plugin by Christopher Smith
*/
// 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_passwordgrey extends DokuWiki_Syntax_Plugin {
function getType(){ return 'formatting'; }
function getAllowedTypes() { return array('formatting', 'substition', 'disabled'); }
function getSort(){ return 158; }
function connectTo($mode) { $this->Lexer->addEntryPattern('<pwd>(?=.*?</pwd>)',$mode,'plugin_passwordgrey'); }
function postConnect() { $this->Lexer->addExitPattern('</pwd>','plugin_passwordgrey'); }
/**
* Handle the match
*/
function handle($match, $state, $pos, Doku_Handler $handler){
switch ($state) {
case DOKU_LEXER_ENTER :
return array($state, array('color:lightgrey', ''));
case DOKU_LEXER_UNMATCHED : return array($state, $match);
case DOKU_LEXER_EXIT : return array($state, '');
}
return array();
}
/**
* Create output
*/
function render($mode, Doku_Renderer $renderer, $data) {
if($mode == 'xhtml'){
$r = rand(0,100000);
list($state, $match) = $data;
switch ($state) {
case DOKU_LEXER_ENTER :
list($color, $background) = $match;
$renderer->doc .= "<span id='clipID_$r' onclick=\"javaScript:copyClip('clipID_".$r."');\" style='$color $background'>";
break;
case DOKU_LEXER_UNMATCHED : $renderer->doc .= $renderer->_xmlEntities($match); break;
case DOKU_LEXER_EXIT : $renderer->doc .= "</span>"; break;
}
return true;
}
if($mode == 'odt'){
list($state, $match) = $data;
switch ($state) {
case DOKU_LEXER_ENTER :
list($color, $background) = $match;
if (class_exists('ODTDocument')) {
$renderer->_odtSpanOpenUseCSS (NULL, 'style="'.$color.' '.$background.'"');
}
break;
case DOKU_LEXER_UNMATCHED :
$renderer->cdata($match);
break;
case DOKU_LEXER_EXIT :
if (class_exists('ODTDocument')) {
$renderer->_odtSpanClose();
}
break;
}
return true;
}
return false;
}
}
<?php
/**
* DokuWiki Plugin passwordgrey (Syntax Component)
*
* @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
* @author Michael Schreiber <m.schreiber@creatronics.de>
*/
// must be run within Dokuwiki
if (!defined('DOKU_INC')) {
die();
}
class syntax_plugin_passwordgrey_passwordgrey extends DokuWiki_Syntax_Plugin {
/**
* @return string Syntax mode type
*/
public function getType() {
return 'formatting';
}
/**
* @return string Paragraph type
*/
public function getPType() {
return 'normal';
}
/**
* @return int Sort order - Low numbers go before high numbers
*/
public function getSort() {
return 158;
}
/**
* Connect lookup pattern to lexer.
*
* @param string $mode Parser mode
*/
public function connectTo($mode) {
$this->Lexer->addEntryPattern('<pwd>(?=.*?</pwd>)', $mode, 'plugin_passwordgrey_passwordgrey');
}
public function postConnect() {
$this->Lexer->addExitPattern('</pwd>', 'plugin_passwordgrey_passwordgrey');
}
/**
* Handle matches of the passwordgrey syntax
*
* @param string $match The match of the syntax
* @param int $state The state of the handler
* @param int $pos The position in the document
* @param Doku_Handler $handler The handler
*
* @return array Data for the renderer
*/
public function handle($match, $state, $pos, Doku_Handler $handler) {
switch ($state) {
case DOKU_LEXER_ENTER :
{
return array($state, array('color:lightgrey', ''));
}
case DOKU_LEXER_UNMATCHED :
return array($state, $match);
case DOKU_LEXER_EXIT :
return array($state, '');
}
return array();
}
/**
* Render xhtml output or metadata
*
* @param string $mode Renderer mode (supported modes: xhtml)
* @param Doku_Renderer $renderer The renderer
* @param array $data The data from the handler() function
*
* @return bool If rendering was successful.
*/
public function render($mode, Doku_Renderer $renderer, $data) {
if ($mode == 'xhtml') {
$r = rand(0, 100000);
list($state, $match) = $data;
switch ($state) {
case DOKU_LEXER_ENTER :
list($color, $background) = $match;
$renderer->doc .= "<span id='clipID_$r' onclick=\"javaScript:copyClip('clipID_" . $r . "');\" style=\"font-weight: bold;\" class=\"passwordgrey\">";
break;
case DOKU_LEXER_UNMATCHED :
$renderer->doc .= $renderer->_xmlEntities($match);
break;
case DOKU_LEXER_EXIT :
{
$renderer->doc .= "</span>";
break;
}
}
return true;
}
if ($mode == 'odt') {
list($state, $match) = $data;
switch ($state) {
case DOKU_LEXER_ENTER :
list($color, $background) = $match;
if (class_exists('ODTDocument')) {
$renderer->_odtSpanOpenUseCSS(NULL, 'style="' . $color . ' ' . $background . '"');
}
break;
case DOKU_LEXER_UNMATCHED :
$renderer->cdata($match);
break;
case DOKU_LEXER_EXIT :
if (class_exists('ODTDocument')) {
$renderer->_odtSpanClose();
}
break;
}
return true;
}
return false;
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment