78 lines
2.1 KiB
PHP
78 lines
2.1 KiB
PHP
|
<?php
|
||
|
namespace nur\v\bs3\plugins;
|
||
|
|
||
|
use nur\v\BasePlugin;
|
||
|
use nur\v\js;
|
||
|
|
||
|
class formfilePlugin extends BasePlugin {
|
||
|
function __construct(?string $readyLabelPrefix=null, ?string $readyLabelSuffix=null) {
|
||
|
$this->readyLabelPrefix = $readyLabelPrefix;
|
||
|
$this->readyLabelSuffix = $readyLabelSuffix;
|
||
|
}
|
||
|
|
||
|
/** @var bool */
|
||
|
private $enabled = true;
|
||
|
|
||
|
function setEnabled(bool $enabled=true): void {
|
||
|
$this->enabled = $enabled;
|
||
|
}
|
||
|
|
||
|
/** @var string */
|
||
|
private $readyLabelPrefix;
|
||
|
|
||
|
function setReadyLabelPrefix(string $readyLabelPrefix): void {
|
||
|
$this->readyLabelPrefix = $readyLabelPrefix;
|
||
|
}
|
||
|
|
||
|
/** @var string */
|
||
|
private $readyLabelSuffix;
|
||
|
|
||
|
function setReadyLabelSuffix(string $readyLabelSuffix): void {
|
||
|
$this->readyLabelSuffix = $readyLabelSuffix;
|
||
|
}
|
||
|
|
||
|
private $readyLabelClass = "btn-success";
|
||
|
|
||
|
function setReadyLabelClass(string $readyLabelClass): void {
|
||
|
$this->readyLabelClass = $readyLabelClass;
|
||
|
}
|
||
|
|
||
|
private $afterModified_js;
|
||
|
|
||
|
function setAfterModified_js(string $afterModified_js): void {
|
||
|
$this->afterModified_js = $afterModified_js;
|
||
|
}
|
||
|
|
||
|
const HAVE_JQUERY = true;
|
||
|
function printJquery(): void {
|
||
|
if (!$this->enabled) return;
|
||
|
?>
|
||
|
<script type="text/javascript">
|
||
|
jQuery.noConflict()(function($) {
|
||
|
$("input[type='file']").change(function() {
|
||
|
var $this = $(this);
|
||
|
var filename = $this.prop("value");
|
||
|
var posas = filename.lastIndexOf("\\");
|
||
|
var posfs = filename.lastIndexOf("/");
|
||
|
if (posas !== -1) filename = filename.substr(posas + 1);
|
||
|
else if (posfs !== -1) filename = filename.substr(posfs + 1);
|
||
|
var $label = $this.parent("label");
|
||
|
$label.addClass(<?=js::qv($this->readyLabelClass)?>);
|
||
|
var prefix = <?=js::qv($this->readyLabelPrefix)?>;
|
||
|
var suffix = <?=js::qv($this->readyLabelSuffix)?>;
|
||
|
$label.find(".file-label").html(prefix + filename + suffix);
|
||
|
<?=$this->afterModified_js?>
|
||
|
});
|
||
|
});
|
||
|
</script>
|
||
|
<?php
|
||
|
}
|
||
|
|
||
|
function print($setModified=null, $prefix=null, $cond=true) {
|
||
|
$this->enabled = $cond;
|
||
|
$this->readyLabelPrefix = $prefix;
|
||
|
$this->afterModified_js = $setModified;
|
||
|
$this->printJquery();
|
||
|
}
|
||
|
}
|