nur-sery/nur_src/v/plugins/showmorePlugin.php

87 lines
1.8 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 startc(): array {
return v::sdiv(["class" => self::CONTAINER_CLASS]);
}
function invite($vs=null): array {
if ($vs === null) $vs = self::INVITE_CONTENT;
return v::a([
"class" => self::INVITE_CLASS,
"href" => "#",
$vs,
]);
}
function startp(): array {
return v::sdiv(["class" => [self::PANEL_CLASS, "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");
$this.closest(".<?=self::CONTAINER_CLASS?>").find(".<?=self::PANEL_CLASS?>").removeClass("hidden");
return false;
});
});
</script>
<?php
}
}