65 lines
1.6 KiB
PHP
65 lines
1.6 KiB
PHP
<?php
|
|
namespace nur\v\plugins;
|
|
|
|
use nur\v\BasePlugin;
|
|
|
|
class autorefreshPlugin extends BasePlugin {
|
|
const HAVE_JQUERY = true;
|
|
|
|
const CHECKED = true;
|
|
|
|
const TEXT = "Rafraîchir cette page automatiquement";
|
|
|
|
/** @var int délai en secondes avant le rafraichissement */
|
|
const DELAY = 15;
|
|
|
|
function __construct(?array $params=null) {
|
|
$this->checked = $params["checked"] ?? static::CHECKED;
|
|
$this->text = $params["text"] ?? static::TEXT;
|
|
$this->delay = intval($params["delay"] ?? static::DELAY) * 1000;
|
|
}
|
|
|
|
protected bool $checked;
|
|
|
|
protected string $text;
|
|
|
|
protected int $delay;
|
|
|
|
function printJquery(): void {
|
|
?>
|
|
<script type="text/javascript">
|
|
jQuery.noConflict()(function($) {
|
|
var autorefreshTimeout = null;
|
|
function autorefreshEnabled() {
|
|
return $("#autorefresh").is(":checked");
|
|
}
|
|
function autorefreshUpdate(enabled) {
|
|
if (typeof(enabled) === 'undefined') enabled = autorefreshEnabled();
|
|
if (enabled && autorefreshTimeout == null) {
|
|
autorefreshTimeout = setTimeout(function() { location.reload(); }, <?=$this->delay?>);
|
|
} else if (!enabled && autorefreshTimeout != null) {
|
|
clearTimeout(autorefreshTimeout);
|
|
autorefreshTimeout = null;
|
|
}
|
|
}
|
|
if ($("#autorefresh").length > 0) {
|
|
$("#autorefresh").click(function() {
|
|
autorefreshUpdate($(this).is(":checked"));
|
|
});
|
|
autorefreshUpdate();
|
|
}
|
|
});
|
|
</script>
|
|
<?php
|
|
}
|
|
|
|
function print(): void {
|
|
?>
|
|
<label>
|
|
<input type="checkbox" id="autorefresh"<?=$this->checked? " checked": false?>/>
|
|
<?=htmlspecialchars($this->text)?>
|
|
</label>
|
|
<?php
|
|
}
|
|
}
|