First
This commit is contained in:
parent
e2fe022601
commit
697d24ab9a
@ -1,2 +1,5 @@
|
||||
# showsamples
|
||||
|
||||
DokuWiki Extensions : https://www.dokuwiki.org/plugin:showsamples
|
||||
|
||||
Installs a carousel that contains topic snippets.
|
||||
|
25
action.php
Normal file
25
action.php
Normal file
@ -0,0 +1,25 @@
|
||||
<?php
|
||||
/**
|
||||
* @license http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.html
|
||||
* @author Francois Merciol <webmestre@fsl56.org>
|
||||
*
|
||||
* Plugin showSamples: display sample from plugins
|
||||
*/
|
||||
|
||||
if (!defined ('DOKU_INC'))
|
||||
die ();
|
||||
if (!defined ('DOKU_PLUGIN'))
|
||||
define ('DOKU_PLUGIN', DOKU_INC.'lib/plugins/');
|
||||
require_once (DOKU_PLUGIN.'action.php');
|
||||
|
||||
class action_plugin_showsamples extends DokuWiki_Action_Plugin {
|
||||
|
||||
function register (Doku_Event_Handler $controller) {
|
||||
$controller->register_hook ('DOKUWIKI_STARTED', 'AFTER', $this, '_defconf');
|
||||
}
|
||||
|
||||
function _defconf (&$event, $param) {
|
||||
global $JSINFO;
|
||||
$JSINFO ['carousel'] = array ('delai' => ($this->getConf ('carouselDelai')*1000));
|
||||
}
|
||||
}
|
8
conf/default.php
Normal file
8
conf/default.php
Normal file
@ -0,0 +1,8 @@
|
||||
<?php
|
||||
/**
|
||||
* @license http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.html
|
||||
* @author Francois Merciol <dokuplugin@merciol.fr>
|
||||
*
|
||||
* Options for the showSamples Plugin
|
||||
*/
|
||||
$conf['carouselDelai'] = 10;
|
9
conf/metadata.php
Normal file
9
conf/metadata.php
Normal file
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
/**
|
||||
* @license http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.html
|
||||
* @author Francois Merciol <dokuplugin@merciol.fr>
|
||||
*
|
||||
* Metadata for configuration manager plugin
|
||||
* Additions for the schedule plugin
|
||||
*/
|
||||
$meta['carouselDelai'] = array('numeric');
|
BIN
images/left.png
Normal file
BIN
images/left.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 531 B |
BIN
images/right.png
Normal file
BIN
images/right.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 534 B |
7
jquery.scrollTo.min.js
vendored
Normal file
7
jquery.scrollTo.min.js
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2007-2015 Ariel Flesler - aflesler<a>gmail<d>com | http://flesler.blogspot.com
|
||||
* Licensed under MIT
|
||||
* @author Ariel Flesler
|
||||
* @version 2.1.2
|
||||
*/
|
||||
;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1<b.axis.length;u&&(d/=2);b.offset=h(b.offset);b.over=h(b.over);return this.each(function(){function k(a){var k=$.extend({},b,{queue:!0,duration:d,complete:a&&function(){a.call(q,e,b)}});r.animate(f,k)}if(null!==a){var l=n(this),q=l?this.contentWindow||window:this,r=$(q),e=a,f={},t;switch(typeof e){case "number":case "string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(e)){e= h(e);break}e=l?$(e):$(e,q);case "object":if(e.length===0)return;if(e.is||e.style)t=(e=$(e)).offset()}var v=$.isFunction(b.offset)&&b.offset(q,e)||b.offset;$.each(b.axis.split(""),function(a,c){var d="x"===c?"Left":"Top",m=d.toLowerCase(),g="scroll"+d,h=r[g](),n=p.max(q,c);t?(f[g]=t[m]+(l?0:h-r.offset()[m]),b.margin&&(f[g]-=parseInt(e.css("margin"+d),10)||0,f[g]-=parseInt(e.css("border"+d+"Width"),10)||0),f[g]+=v[m]||0,b.over[m]&&(f[g]+=e["x"===c?"width":"height"]()*b.over[m])):(d=e[m],f[g]=d.slice&& "%"===d.slice(-1)?parseFloat(d)/100*n:d);b.limit&&/^\d+$/.test(f[g])&&(f[g]=0>=f[g]?0:Math.min(f[g],n));!a&&1<b.axis.length&&(h===f[g]?f={}:u&&(k(b.onAfterFirst),f={}))});k(b.onAfter)}})};p.max=function(a,d){var b="x"===d?"Width":"Height",h="scroll"+b;if(!n(a))return a[h]-$(a)[b.toLowerCase()]();var b="client"+b,k=a.ownerDocument||a.document,l=k.documentElement,k=k.body;return Math.max(l[h],k[h])-Math.min(l[b],k[b])};$.Tween.propHooks.scrollLeft=$.Tween.propHooks.scrollTop={get:function(a){return $(a.elem)[a.prop]()}, set:function(a){var d=this.get(a);if(a.options.interrupt&&a._last&&a._last!==d)return $(a.elem).stop();var b=Math.round(a.now);d!==b&&($(a.elem)[a.prop](b),a._last=this.get(a))}};return p});
|
10
lang/en/settings.php
Normal file
10
lang/en/settings.php
Normal file
@ -0,0 +1,10 @@
|
||||
<?php
|
||||
/**
|
||||
* @license http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.html
|
||||
* @author Francois Merciol <dokuplugin@merciol.fr>
|
||||
*
|
||||
* English language file
|
||||
*/
|
||||
|
||||
// for the configuration manager
|
||||
$lang['carouselDelai'] = 'Carousel turn delai (sec)';
|
10
lang/fr/settings.php
Normal file
10
lang/fr/settings.php
Normal file
@ -0,0 +1,10 @@
|
||||
<?php
|
||||
/**
|
||||
* @license http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.html
|
||||
* @author Francois Merciol <dokuplugin@merciol.fr>
|
||||
*
|
||||
* French language file
|
||||
*/
|
||||
|
||||
// for the configuration manager
|
||||
$lang['carouselDelai'] = 'Délai de rotation du carrousel (en secondes)';
|
7
plugin.info.txt
Normal file
7
plugin.info.txt
Normal file
@ -0,0 +1,7 @@
|
||||
base showsamples
|
||||
author Francois Merciol
|
||||
email dokuplugin@merciol.fr
|
||||
date 2021-03-31
|
||||
name showSamples Plugin
|
||||
desc Show samples from plugins
|
||||
url http://www.dokuwiki.org/plugin:showsamples
|
47
script.js
Normal file
47
script.js
Normal file
@ -0,0 +1,47 @@
|
||||
/* DOKUWIKI:include_once jquery.scrollTo.min.js */
|
||||
|
||||
var showCarouselItem = 0;
|
||||
var showCarouselDelai = JSINFO['carousel']['delai'];
|
||||
var showCarouselMax = jQuery ('div.showSamples div.slide ul li').length;
|
||||
var showCarouselTimeout;
|
||||
|
||||
function showCarouselLeft () {
|
||||
if (showCarouselItem < 1)
|
||||
return;
|
||||
showCarouselItem--;
|
||||
showCarouselMove ();
|
||||
}
|
||||
|
||||
function showCarouselRight () {
|
||||
if (showCarouselItem >= showCarouselMax)
|
||||
return;
|
||||
showCarouselItem++;
|
||||
showCarouselMove ();
|
||||
}
|
||||
|
||||
function showCarouselMove () {
|
||||
jQuery ("div.showSamples div.navi a img.leftside").each (function () {
|
||||
this.style.display = (showCarouselItem > 0) ? "" : "none";
|
||||
});
|
||||
var showCarouselMax = jQuery ('div.showSamples div.slide ul li').length;
|
||||
jQuery ("div.showSamples div.navi a img.rightside").each (function () {
|
||||
this.style.display = (showCarouselItem < (showCarouselMax-1)) ? "" : "none";
|
||||
});
|
||||
jQuery ("div.showSamples div.slide").scrollTo ('li:eq('+showCarouselItem+')', 1000);
|
||||
}
|
||||
|
||||
function showCarousel () {
|
||||
showCarouselItem = 0;
|
||||
showCarouselMove ();
|
||||
showCarouselTimeout = setTimeout ("showCarouselNext ()", showCarouselDelai);
|
||||
}
|
||||
|
||||
function showCarouselNext () {
|
||||
clearTimeout (showCarouselTimeout);
|
||||
if (showCarouselMax)
|
||||
showCarouselItem = (showCarouselItem+1) % (jQuery ('div.showSamples div.slide ul li').length);
|
||||
showCarouselMove ();
|
||||
showCarouselTimeout = setTimeout ("showCarouselNext ()", showCarouselDelai);
|
||||
}
|
||||
|
||||
jQuery (showCarousel ());
|
57
style.css
Normal file
57
style.css
Normal file
@ -0,0 +1,57 @@
|
||||
div.showSamples div.navi {
|
||||
z-index: 2;
|
||||
position: absolute;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
div.showSamples div.navi img.leftside {
|
||||
float: left;
|
||||
}
|
||||
|
||||
div.showSamples div.navi img.rightside {
|
||||
float: right;
|
||||
}
|
||||
|
||||
div.showSamples div.slide {
|
||||
z-index: 1;
|
||||
position: relative;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
height: 200px;
|
||||
width: 200px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
div.showSamples div.slide ul {
|
||||
position: absolute;
|
||||
list-style: none outside none;
|
||||
width: 20000px;
|
||||
}
|
||||
|
||||
div.showSamples div.slide ul li {
|
||||
float: left;
|
||||
font-size: 80%;
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
div.showSamples div.slide ul li div.li {
|
||||
background: none !important;
|
||||
margin: 0 auto !important;
|
||||
padding: 0 !important;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
div.showSamples div.slide ul li div.highlightMenu {
|
||||
border: none;
|
||||
}
|
||||
|
||||
div.showSamples div.slide ul li div div.tileBlog {
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
div.showSamples div.slide ul li div div.glossary div {
|
||||
margin: 1em auto;
|
||||
width: 180px;
|
||||
}
|
94
syntax.php
Normal file
94
syntax.php
Normal file
@ -0,0 +1,94 @@
|
||||
<?php
|
||||
/**
|
||||
* @license http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.html
|
||||
* @author Francois <webmestre@fsl56.org>
|
||||
*
|
||||
* Plugin showSamples: display sample from plugins
|
||||
*/
|
||||
|
||||
if (!defined ('DOKU_INC'))
|
||||
die ();
|
||||
if (!defined ('DOKU_PLUGIN'))
|
||||
define ('DOKU_PLUGIN', DOKU_INC.'lib/plugins/');
|
||||
require_once (DOKU_PLUGIN.'syntax.php');
|
||||
|
||||
class syntax_plugin_showSamples extends DokuWiki_Syntax_Plugin {
|
||||
|
||||
// ============================================================
|
||||
// function getInfo () {
|
||||
// return confToHash (dirname (__FILE__).'/INFO.txt');
|
||||
// }
|
||||
function getType () { return 'substition'; }
|
||||
function getPType () { return 'block'; }
|
||||
function getSort () { return 299; }
|
||||
function getAllowedTypes() { return array ('container', 'baseonly', 'formatting', 'substition', 'protected', 'disabled', 'paragraphs'); }
|
||||
function connectTo ($mode) {
|
||||
$this->Lexer->addEntryPattern ('<showSamples[^>]*>', $mode, 'plugin_showsamples');
|
||||
}
|
||||
function postConnect() {
|
||||
$this->Lexer->addExitPattern ('</showSamples>', 'plugin_showsamples');
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
function handle ($match, $state, $pos, Doku_Handler $handler){
|
||||
switch ($state) {
|
||||
case DOKU_LEXER_ENTER:
|
||||
return array($state, trim (substr ($match, 12, -1))); // "<showSamples" => 12 ">" => 1
|
||||
case DOKU_LEXER_UNMATCHED:
|
||||
return array($state, $match);
|
||||
case DOKU_LEXER_EXIT:
|
||||
return array($state);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
function render ($mode, Doku_Renderer $renderer, $indata) {
|
||||
if ($mode != 'xhtml')
|
||||
return false;
|
||||
if (empty ($indata))
|
||||
return false;
|
||||
list ($instr, $data) = $indata;
|
||||
//$data = " ".$data." ";
|
||||
$renderer->info['cache'] = FALSE;
|
||||
switch ($instr) {
|
||||
case DOKU_LEXER_ENTER :
|
||||
if (preg_match_all ("#(\"[^\"]*\")*help(\"[^\"]*\")*#", strtolower ($data), $dumy) > 0) {
|
||||
$this->help ($renderer);
|
||||
return true;
|
||||
}
|
||||
$imgDir = DOKU_REL.'lib/plugins/showsamples/images/';
|
||||
$renderer->doc .=
|
||||
'<div class="showSamples">'.NL.
|
||||
' <div class="navi">'.NL.
|
||||
' <a onClick="showCarouselLeft()"><img src="'.$imgDir.'left.png" style="display:none;" class="leftside"/></a>'.NL.
|
||||
' <a onClick="showCarouselRight()"><img src="'.$imgDir.'right.png" class="rightside"/></a>'.NL.
|
||||
' </div>'.NL.
|
||||
' <div class="slide">';
|
||||
break;
|
||||
case DOKU_LEXER_EXIT :
|
||||
$renderer->doc .=
|
||||
' </div>'.NL.
|
||||
'</div>';
|
||||
break;
|
||||
case DOKU_LEXER_UNMATCHED:
|
||||
$renderer->doc .= $renderer->_xmlEntities($data);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
function help (&$renderer) {
|
||||
$url = "http://fsl56.org/admin/plugins/showSamples/";
|
||||
$renderer->doc .=
|
||||
' <h1>Help showSamples V1.0</h1>'.NL.
|
||||
' <ul>'.NL.
|
||||
' <li><b>{{showSamples [help] <b>}}</b></li>'.NL.
|
||||
' </ul>'.NL.
|
||||
' <p><a class="urlextern" rel="nofollow" title="'.$url.'" href="'.$url.'">'.$url.'</a></p>'.NL;
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
} // syntax_plugin_showSamples
|
||||
?>
|
Loading…
Reference in New Issue
Block a user