108 lines
2.4 KiB
PHP
108 lines
2.4 KiB
PHP
<?php
|
|
namespace nur\v\plugins;
|
|
|
|
use nur\v\BasePlugin;
|
|
use nur\v\v;
|
|
use nur\v\vo;
|
|
|
|
class showmorePlugin extends BasePlugin {
|
|
const HAVE_JQUERY = true;
|
|
|
|
/** @var string classe du conteneur */
|
|
const CONTAINER_CLASS = "showmore-container";
|
|
/** @var string classe de l'invite à en savoir plus */
|
|
const INVITE_CLASS = "showmore-invite";
|
|
/** @var string classe du panneau caché par défaut */
|
|
const INVITE_CONTENT = "En savoir plus...";
|
|
const PANEL_CLASS = "showmore-panel";
|
|
|
|
function __construct(?array $params=null) {
|
|
$this->containerClass = $params["container_class"] ?? static::CONTAINER_CLASS;
|
|
$this->inviteClass = $params["invite_class"] ?? self::INVITE_CLASS;
|
|
$this->inviteContent = $params["invite_content"] ?? self::INVITE_CONTENT;
|
|
$this->panelClass = $params["panel_class"] ?? self::PANEL_CLASS;
|
|
$this->onShow = $params["on_show"] ?? null;
|
|
}
|
|
|
|
protected string $containerClass;
|
|
|
|
protected string $inviteClass, $inviteContent;
|
|
|
|
protected string $panelClass;
|
|
|
|
protected ?string $onShow;
|
|
|
|
function startc(): array {
|
|
return v::sdiv(["class" => $this->containerClass]);
|
|
}
|
|
|
|
function invite($vs=null): array {
|
|
$vs ??= $this->inviteContent;
|
|
return v::a([
|
|
"class" => $this->inviteClass,
|
|
"href" => "#",
|
|
$vs,
|
|
]);
|
|
}
|
|
|
|
function startp(): array {
|
|
return v::sdiv([
|
|
"class" => [$this->panelClass, "hidden"],
|
|
]);
|
|
}
|
|
|
|
function endp(): array {
|
|
return ["</div>"];
|
|
}
|
|
|
|
function endc(): array {
|
|
return ["</div>"];
|
|
}
|
|
|
|
function end(): array {
|
|
return ["</div></div>"];
|
|
}
|
|
|
|
function printStartc(): void {
|
|
vo::print($this->startc());
|
|
}
|
|
|
|
function printInvite($vs=null): void {
|
|
vo::print($this->invite($vs));
|
|
}
|
|
|
|
function printStartp(): void {
|
|
vo::print($this->startp());
|
|
}
|
|
|
|
function printEndp(): void {
|
|
vo::print($this->endp());
|
|
}
|
|
|
|
function printEndc(): void {
|
|
vo::print($this->endc());
|
|
}
|
|
|
|
function printEnd(): void {
|
|
vo::print($this->end());
|
|
}
|
|
|
|
function printJquery(): void {
|
|
?>
|
|
<script type="text/javascript">
|
|
jQuery.noConflict()(function($) {
|
|
$(".<?=self::INVITE_CLASS?>").click(function() {
|
|
let $this = $(this);
|
|
$this.addClass("hidden");
|
|
let $container = $this.closest(".<?=self::CONTAINER_CLASS?>");
|
|
let $panel = $container.find(".<?=self::PANEL_CLASS?>");
|
|
$panel.removeClass("hidden");
|
|
<?=$this->onShow?>
|
|
return false;
|
|
});
|
|
});
|
|
</script>
|
|
<?php
|
|
}
|
|
}
|