1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-10 16:54:44 +02:00

Fix issue with InputfieldFile non-ajax mode not working for some cases and bump version to 3.0.62

This commit is contained in:
Ryan Cramer
2017-05-05 13:43:17 -04:00
parent be99669203
commit 57b297fd1d
5 changed files with 57 additions and 28 deletions

View File

@@ -763,7 +763,7 @@ class Pagefile extends WireData {
* *
*/ */
public function __toString() { public function __toString() {
return $this->basename; return (string) $this->basename;
} }
/** /**

View File

@@ -45,7 +45,7 @@ class ProcessWire extends Wire {
* Reversion revision number * Reversion revision number
* *
*/ */
const versionRevision = 61; const versionRevision = 62;
/** /**
* Version suffix string (when applicable) * Version suffix string (when applicable)

View File

@@ -112,10 +112,10 @@ $(document).ready(function() {
$("body").addClass("ie-no-drop"); // ?? $("body").addClass("ie-no-drop"); // ??
$(document).on('change', '.InputfieldFileUpload input[type=file]', function() { $(document).on('change', '.InputfieldFileUpload input[type=file]', function() {
var $t = $(this); var $t = $(this);
var $mask = $t.parent(".InputMask"); var $mask = $t.closest(".InputMask");
if($t.val().length > 1) { if($t.val().length > 1) {
$mask.addClass("ui-state-disabled"); $mask.addClass("ui-state-disabled");
} else { } else {
@@ -130,18 +130,22 @@ $(document).ready(function() {
var maxFiles = parseInt($upload.find('.InputfieldFileMaxFiles').val()); var maxFiles = parseInt($upload.find('.InputfieldFileMaxFiles').val());
var numFiles = $list.children('li').length + $upload.find('input[type=file]').length + 1; var numFiles = $list.children('li').length + $upload.find('input[type=file]').length + 1;
if(maxFiles > 0 && numFiles >= maxFiles) return; if(maxFiles > 0 && numFiles >= maxFiles) {
// no more files allowed
} else {
$upload.find(".InputMask").not(":last").each(function() {
var $m = $(this);
if($m.find("input[type=file]").val() < 1) $m.remove();
});
$upload.find(".InputMask").not(":last").each(function() { // add another input
var $m = $(this); var $mask2 = $mask.clone().removeClass("ui-state-disabled");
if($m.find("input[type=file]").val() < 1) $m.remove(); var $input = $mask2.find('input[type=file]');
}); $input.attr('id', $input.attr('id') + '-');
$input.val('');
// add another input $mask2.insertAfter($mask);
var $i = $mask.clone().removeClass("ui-state-disabled"); $mask2.css('margin-left', '0.5em').removeClass('ui-state-active');
$i.children("input[type=file]").val(''); }
$i.insertAfter($mask);
$i.css('margin-left', '0.5em').removeClass('ui-state-active');
// update file input to contain file name // update file input to contain file name
var name = $t.val(); var name = $t.val();

File diff suppressed because one or more lines are too long

View File

@@ -136,17 +136,7 @@ class InputfieldFile extends Inputfield implements InputfieldItemList, Inputfiel
|| $this->wire('input')->get('reloadInputfieldAjax') || $this->wire('input')->get('reloadInputfieldAjax')
|| $this->wire('input')->get('renderInputfieldAjax'); || $this->wire('input')->get('renderInputfieldAjax');
// get the max filesize $this->setMaxFilesize(trim(ini_get('post_max_size')));
$filesize = trim(ini_get('post_max_size'));
$last = strtolower(substr($filesize, -1));
if(ctype_alpha($last)) $filesize = rtrim($filesize, $last);
$filesize = (int) $filesize;
if($last == 'g') $this->maxFilesize = (($filesize*1024)*1024)*1024;
else if($last == 'm') $this->maxFilesize = ($filesize*1024)*1024;
else if($last == 'k') $this->maxFilesize = $filesize*1024;
else if((int) $filesize > 0) $this->maxFilesize = (int) $filesize;
else $this->maxFilesize = (5*1024)*1024;
$this->uploadOnlyMode = (int) $this->wire('input')->get('uploadOnlyMode'); $this->uploadOnlyMode = (int) $this->wire('input')->get('uploadOnlyMode');
$this->addClass('InputfieldItemList', 'wrapClass'); $this->addClass('InputfieldItemList', 'wrapClass');
$this->addClass('InputfieldHasFileList', 'wrapClass'); $this->addClass('InputfieldHasFileList', 'wrapClass');
@@ -166,6 +156,41 @@ class InputfieldFile extends Inputfield implements InputfieldItemList, Inputfiel
if($key == 'deleteLabel') return $this->labels['delete']; if($key == 'deleteLabel') return $this->labels['delete'];
return parent::get($key); return parent::get($key);
} }
public function set($key, $value) {
if($key == 'maxFilesize') return $this->setMaxFilesize($value);
return parent::set($key, $value);
}
/**
* Set the max file size in bytes or use string like "30m", "2g" "500k"
*
* @param int|string $filesize
* @return $this
*
*/
public function setMaxFilesize($filesize) {
if(ctype_digit("$filesize")) {
$this->maxFilesize = (int) $filesize;
} else {
$filesize = rtrim($filesize, 'bB'); // convert mb=>m, gb=>g, kb=>k
$last = strtolower(substr($filesize, -1));
if(ctype_alpha($last)) $filesize = rtrim($filesize, $last);
$filesize = (int) $filesize;
if($last == 'g') {
$this->maxFilesize = (($filesize * 1024) * 1024) * 1024;
} else if($last == 'm') {
$this->maxFilesize = ($filesize * 1024) * 1024;
} else if($last == 'k') {
$this->maxFilesize = $filesize * 1024;
} else if($filesize > 0) {
$this->maxFilesize = $filesize;
} else {
$this->maxFilesize = (5 * 1024) * 1024;
}
}
return $this;
}
/** /**
* Per Inputfield interface, returns true when this field is empty * Per Inputfield interface, returns true when this field is empty