User Tools

Site Tools


s5:dwplugins

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
s5:dwplugins [2016/10/26 14:10] – [Development Setup] andis5:dwplugins [2016/10/31 12:50] (current) – [Git & GitHub] andi
Line 10: Line 10:
  
   * Andreas Gohr   * Andreas Gohr
-  * 2004 Diplom an der FHTW in Angewandte Informatik+  * 2004 Diplom an der FHTW Berlin in Angewandte Informatik
   * DokuWiki lead developer   * DokuWiki lead developer
-  * Twitter: @splitbrain +  * splitbrain.org 
-  * www.splitbrain.org+  * twitter.com/splitbrain 
 +  * github.com/splitbrain
  
 ===== Agenda ===== ===== Agenda =====
Line 36: Line 37:
  
  
-===== Features =====+===== DokuWiki Features =====
  
-  * Syntax -> HTML+  * Syntax nach HTML rendern
   * Medieninhalte   * Medieninhalte
   * Organisation in Namensräumen   * Organisation in Namensräumen
Line 48: Line 49:
  
   * Features nebenbei auf dokuwiki.org zeigen   * Features nebenbei auf dokuwiki.org zeigen
-===== Features =====+===== DokuWiki Features =====
  
   * Nutzerverwaltung und Gruppen   * Nutzerverwaltung und Gruppen
Line 164: Line 165:
   * jede signifikante Änderung pushen   * jede signifikante Änderung pushen
   * Angebot: wenn ihr eure Projekte rechtzeitig pusht, schau ich drüber und geb Feedback   * Angebot: wenn ihr eure Projekte rechtzeitig pusht, schau ich drüber und geb Feedback
 +  * https://try.github.io -- git in 15 minutes
  
 ---- ----
  
   * repo aufmachen und init commit machen   * repo aufmachen und init commit machen
 +    * git init 
 +    * git add . 
 +    * git commit 
 +    * github kram
 ===== Intermission - DokuWiki Parser ===== ===== Intermission - DokuWiki Parser =====
  
Line 187: Line 192:
     * Syntax Plugins haben direkten Zugriff auf den Renderer     * Syntax Plugins haben direkten Zugriff auf den Renderer
     * Syntax Plugins können verschiedene Renderer unterstützen     * Syntax Plugins können verschiedene Renderer unterstützen
 +    * Syntax nutzt Regular Expressions (keine capture groups!)
 +    * http://www.regular-expressions.info/
  
 ---- ----
Line 192: Line 199:
   * simples substition plugin   * simples substition plugin
   * block mode   * block mode
 +  * sortmode 155 - good middle ground, before most of the other syntax
 +  * %%\{\{kitty \d \d\}\}%%
   * placekitten.com bild ausgeben   * placekitten.com bild ausgeben
  
Line 215: Line 224:
  
   * Option zum Umschalten zwischen grayscale und farbe implementieren   * Option zum Umschalten zwischen grayscale und farbe implementieren
 +  * placekitten.com/g/20/20
 ===== Adding Styles ===== ===== Adding Styles =====
  
Line 246: Line 255:
     * phpunit.phar von https://phpunit.de/     * phpunit.phar von https://phpunit.de/
     * Unit Tests in in ''_test''     * Unit Tests in in ''_test''
-    * ''./phpunit.phar --group plugin_kitty'' um nur Plugin zu testen+    * ''%%./phpunit.phar --group plugin_kitty%%'' um nur Plugin zu testen
     * https://travis-ci.org/ für automatisierte tests on commit     * https://travis-ci.org/ für automatisierte tests on commit
  
Line 290: Line 299:
   * Anpassung der Syntax - keine unterstützung der alten syntax, ''.+?''   * Anpassung der Syntax - keine unterstützung der alten syntax, ''.+?''
   * simples schema (name,width,height) und insertion von einigen Katzennamen   * simples schema (name,width,height) und insertion von einigen Katzennamen
-  * sqlite direkt im handler initialisieren+  * <code sql>CREATE TABLE kittens ( 
 +    name PRIMARY KEY, 
 +    width  INT, 
 +    height INT 
 +);</code> 
 +  * <code php>public static function getDB() { 
 +        /** @var helper_plugin_sqlite $sqlite */ 
 +        $sqlite = plugin_load('helper', 'sqlite'); 
 +        $sqlite->init('kitty', __DIR__.'/db/'); 
 +        return $sqlite; 
 +    }</code>
   * übergeben der gefundenen width,height an den bisherigen renderer   * übergeben der gefundenen width,height an den bisherigen renderer
  
Line 305: Line 324:
   * Nutzereingaben kommen von: URL-Parametern, Wiki-Syntax, DB-Einträgen, etc.   * Nutzereingaben kommen von: URL-Parametern, Wiki-Syntax, DB-Einträgen, etc.
   * ''htmlspecialchars()'' steht in DokuWiki unter ''hsc()'' zur Verfügung   * ''htmlspecialchars()'' steht in DokuWiki unter ''hsc()'' zur Verfügung
-  * ``$renderer->doc .= hsc($data);``+  * ''%%$renderer->doc .= hsc($data);%%''
  
 ===== Security: SQL-Injection ===== ===== Security: SQL-Injection =====
Line 324: Line 343:
   * PHP's Duck-Typing ermöglicht Angriffe die ihr nicht vorhergesehen habt   * PHP's Duck-Typing ermöglicht Angriffe die ihr nicht vorhergesehen habt
     * ihr erwartet ein Array, aber bekommt einen String oder umgekehrt     * ihr erwartet ein Array, aber bekommt einen String oder umgekehrt
-  * DokuWiki hat eine globales ''$INPUT'' object für den Zugriff auf request Variablen+  * DokuWiki hat ein globales ''$INPUT'' object für den Zugriff auf request Variablen
   * ''%%$INPUT->post->str('foo');%%'' gibt **immer** einen String zurück   * ''%%$INPUT->post->str('foo');%%'' gibt **immer** einen String zurück
   * https://www.dokuwiki.org/devel:request_vars   * https://www.dokuwiki.org/devel:request_vars
Line 346: Line 365:
   * msg("Inserting $name")   * msg("Inserting $name")
   * kein CSRF token check   * kein CSRF token check
-  * vulnerabilities zeigen+  * vulnerabilities zeigen (XSS wird von chrome abgefangen)
   * fixen   * fixen
  
Line 357: Line 376:
 ===== Learn more ===== ===== Learn more =====
  
-  * https://www.dokuwiki.org/development +  * https://www.dokuwiki.org/development -- Development Manual 
-  * https://www.dokuwiki.org/mailinglist +  * https://www.dokuwiki.org/mailinglist -- Mailingliste hilft bei Fragen 
-  * http://php.net/manual/en/index.php+  * https://xref.dokuwiki.org/ -- DokuWiki source code cross-reference 
 +  * http://stackoverflow.com/questions/tagged/dokuwiki -- StackOverflow 
 +  * http://php.net/manual/en/index.php -- PHP Dokumentation 
 +  * http://notes.splitbrain.org/s5:dwplugins -- Folien
  
  
s5/dwplugins.1477491019.txt.gz · Last modified: 2016/10/26 14:10 by andi