forked from 2amigos/yii2-file-upload-widget
-
Notifications
You must be signed in to change notification settings - Fork 0
/
FileUpload.php
79 lines (67 loc) · 1.84 KB
/
FileUpload.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<?php
/**
* @copyright Copyright (c) 2013 2amigOS! Consulting Group LLC
* @link http://2amigos.us
* @license http://www.opensource.org/licenses/bsd-license.php New BSD License
*/
namespace dosamigos\fileupload;
use yii\helpers\Html;
use yii\helpers\Json;
use yii\helpers\Url;
/**
* FileUpload
*
* Widget to render the jQuery File Upload Basic Uploader
*
* @author Antonio Ramirez <[email protected]>
* @link http://www.ramirezcobos.com/
* @link http://www.2amigos.us/
* @package dosamigos\fileupload
*/
class FileUpload extends BaseUpload
{
/**
* @var bool whether to register the js files for the basic +
*/
public $plus = false;
/**
* @inheritdoc
*/
public function init()
{
parent::init();
$url = Url::to($this->url);
$this->options['data-url'] = $url;
}
/**
* @inheritdoc
*/
public function run()
{
echo $this->hasModel()
? Html::activeFileInput($this->model, $this->attribute, $this->options)
: Html::fileInput($this->name, $this->value, $this->options);
$this->registerClientScript();
}
/**
* Registers required script for the plugin to work as jQuery File Uploader
*/
public function registerClientScript()
{
$view = $this->getView();
if($this->plus) {
FileUploadPlusAsset::register($view);
} else {
FileUploadAsset::register($view);
}
$options = Json::encode($this->clientOptions);
$id = $this->options['id'];
$js[] = ";jQuery('#$id').fileupload($options);";
if (!empty($this->clientEvents)) {
foreach ($this->clientEvents as $event => $handler) {
$js[] = "jQuery('#$id').on('$event', $handler);";
}
}
$view->registerJs(implode("\n", $js));
}
}