webworld888/app/UIObjects/Form/FormFile.php
2021-10-26 19:14:12 +09:00

135 lines
4.1 KiB
PHP

<?php
/**
* FormFile.php
*
* PHP version 7
*
* @category UIObjects
* @package App\UIObjects\Form
* @author XE Developers <developers@xpressengine.com>
* @copyright 2020 Copyright XEHub Corp. <https://www.xehub.io>
* @license http://www.gnu.org/licenses/lgpl-3.0-standalone.html LGPL
* @link https://xpressengine.io
*/
namespace App\UIObjects\Form;
use XeFrontend;
use XeStorage;
use Xpressengine\Storage\File;
use Xpressengine\UIObject\AbstractUIObject;
/**
* Class FormFile
*
* @category UIObjects
* @package App\UIObjects\Form
* @author XE Developers <developers@xpressengine.com>
* @copyright 2020 Copyright XEHub Corp. <https://www.xehub.io>
* @license http://www.gnu.org/licenses/lgpl-3.0-standalone.html LGPL
* @link https://xpressengine.io
*/
class FormFile extends AbstractUIObject
{
/**
* The component id
*
* @var string
*/
protected static $id = 'uiobject/xpressengine@formFile';
/**
* The view name
*
* @var string
*/
protected $view = 'uiobjects.form.formFile';
/**
* Get the evaluated contents of the object.
*
* @return string
*/
public function render()
{
$this->loadFiles();
$args = $this->arguments;
$seq = $this->seq();
// set default file upload options
$fileuploadOptions = [
'previewMaxWidth' => 280,
'previewMaxHeight' => 120,
'previewCrop' => false,
'autoUpload' => false,
'acceptFileTypes' => "(\\.|\\/)(.*)$",
'maxFileSize' => 5000000,
'replaceFileInput' => false,
'disableImageResize' => true,
'imageCrop' => false,
'imageMaxWidth' => 480,
'imageMaxHeight' => 240,
];
// set file
if (isset($args['file'])) {
$file = XeStorage::find($args['file']);
if ($file === null) {
unset($args['file']);
} else {
$filename = $file->clientname;
$args['file'] = $filename;
}
}
// resolve arguments
$fileuploadOptions = array_merge($fileuploadOptions, array_get($args, 'fileuploadOptions', []));
$args = array_add($args, 'width', 420);
$args = array_add($args, 'height', 240);
array_set($fileuploadOptions, 'previewMaxWidth', $args['width']);
array_set($fileuploadOptions, 'previewMaxHeight', $args['height']);
$types = array_get($args, 'types');
if ($types !== null) {
array_set($fileuploadOptions, 'acceptFileTypes', '(\\.|\\/)('.implode('|', (array)$types).')$');
}
array_set($args, 'fileuploadOptions', $fileuploadOptions);
// render template
$this->template = \View::make($this->view, ['args' => $args, 'seq' => $seq])->render();
return parent::render();
}
/**
* Load assets
*
* @return void
*/
protected function loadFiles()
{
XeFrontend::js([
'assets/vendor/jQuery-File-Upload/js/canvas-to-blob.min.js',
'assets/vendor/jQuery-File-Upload/js/load-image.all.min.js',
'assets/vendor/jQuery-File-Upload/js/vendor/jquery.ui.widget.js',
'assets/vendor/jQuery-File-Upload/js/jquery.iframe-transport.js',
'assets/vendor/jQuery-File-Upload/js/jquery.fileupload.js',
'assets/vendor/jQuery-File-Upload/js/jquery.fileupload-ui.js',
'assets/vendor/jQuery-File-Upload/js/jquery.fileupload-process.js',
'assets/vendor/jQuery-File-Upload/js/jquery.fileupload-image.js',
'assets/vendor/jQuery-File-Upload/js/jquery.fileupload-audio.js',
'assets/vendor/jQuery-File-Upload/js/jquery.fileupload-video.js',
'assets/vendor/jQuery-File-Upload/js/jquery.fileupload-validate.js',
])->load();
XeFrontend::css([
'assets/vendor/jQuery-File-Upload/css/jquery.fileupload.css',
'assets/vendor/jQuery-File-Upload/css/jquery.fileupload-ui.css',
])->load();
}
}