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:
@@ -763,7 +763,7 @@ class Pagefile extends WireData {
|
||||
*
|
||||
*/
|
||||
public function __toString() {
|
||||
return $this->basename;
|
||||
return (string) $this->basename;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -45,7 +45,7 @@ class ProcessWire extends Wire {
|
||||
* Reversion revision number
|
||||
*
|
||||
*/
|
||||
const versionRevision = 61;
|
||||
const versionRevision = 62;
|
||||
|
||||
/**
|
||||
* Version suffix string (when applicable)
|
||||
|
@@ -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
@@ -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
|
||||
|
Reference in New Issue
Block a user