-
Notifications
You must be signed in to change notification settings - Fork 0
/
ClndrJsWidget.php
72 lines (53 loc) · 1.67 KB
/
ClndrJsWidget.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
<?php
namespace mhunesi\clndrjs;
use mhunesi\clndrjs\assets\ClndrJsAssets;
use Yii;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;
use yii\helpers\Json;
use yii\web\JsExpression;
/**
* This is just an example.
*/
class ClndrJsWidget extends \yii\base\Widget
{
public $options = [];
public $clientOptions = [];
public $templateView = '@vendor/mhunesi/yii2-clndrjs/views/_template';
public function init()
{
parent::init();
$this->options['id'] = $this->id;
$this->clientOptions = ArrayHelper::merge([
'template' => new JsExpression("$('#clndr-template').html()")
],$this->clientOptions);
$this->registerAssets();
$this->registerTranslations();
}
public function run()
{
echo $this->view->render($this->templateView);
echo Html::tag('div','', $this->options);
}
public function registerAssets()
{
ClndrJsAssets::register($this->view);
$language = substr(Yii::$app->language,0,2);
$this->view->registerJs("moment.locale('{$language}');");
$jsonClientOptions = Json::encode($this->clientOptions);
$this->view->registerJs("$('#{$this->id}').clndr($jsonClientOptions)");
}
public function registerTranslations()
{
$i18n = Yii::$app->i18n;
$i18n->translations['clndrjs'] = [
'class' => 'yii\i18n\PhpMessageSource',
'sourceLanguage' => 'en-US',
'basePath' => '@vendor/mhunesi/yii2-clndrjs/messages',
];
}
public static function t($message, $params = [], $language = null)
{
return Yii::t('clndrjs', $message, $params, $language);
}
}