1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-10 08:44:46 +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() {
return $this->basename;
return (string) $this->basename;
}
/**

View File

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

View File

@@ -112,10 +112,10 @@ $(document).ready(function() {
$("body").addClass("ie-no-drop"); // ??
$(document).on('change', '.InputfieldFileUpload input[type=file]', function() {
var $t = $(this);
var $mask = $t.parent(".InputMask");
var $mask = $t.closest(".InputMask");
if($t.val().length > 1) {
$mask.addClass("ui-state-disabled");
} else {
@@ -130,18 +130,22 @@ $(document).ready(function() {
var maxFiles = parseInt($upload.find('.InputfieldFileMaxFiles').val());
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() {
var $m = $(this);
if($m.find("input[type=file]").val() < 1) $m.remove();
});
// add another input
var $i = $mask.clone().removeClass("ui-state-disabled");
$i.children("input[type=file]").val('');
$i.insertAfter($mask);
$i.css('margin-left', '0.5em').removeClass('ui-state-active');
// add another input
var $mask2 = $mask.clone().removeClass("ui-state-disabled");
var $input = $mask2.find('input[type=file]');
$input.attr('id', $input.attr('id') + '-');
$input.val('');
$mask2.insertAfter($mask);
$mask2.css('margin-left', '0.5em').removeClass('ui-state-active');
}
// update file input to contain file name
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('renderInputfieldAjax');
// get the max filesize
$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->setMaxFilesize(trim(ini_get('post_max_size')));
$this->uploadOnlyMode = (int) $this->wire('input')->get('uploadOnlyMode');
$this->addClass('InputfieldItemList', 'wrapClass');
$this->addClass('InputfieldHasFileList', 'wrapClass');
@@ -166,6 +156,41 @@ class InputfieldFile extends Inputfield implements InputfieldItemList, Inputfiel
if($key == 'deleteLabel') return $this->labels['delete'];
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