/** * https://github.com/yiisoft/yii2/issues/1755 */ public function testLayoutAssets() { $view = $this->mockView(); JqueryAsset::register($view); $content = $view->renderFile('@yiiunit/extensions/twig/views/layout.twig'); $this->assertEquals(1, preg_match('#<script src="/assets/[0-9a-z]+/jquery\\.js"></script>\\s*</body>#', $content), 'content does not contain the jquery js:' . $content); }
/** * Registers the js code if necessary */ protected function registerJs() { if (static::$JS_REGISTERED) { return; } JqueryAsset::register($this->getView()); BootstrapAsset::register($this->getView()); $js = new JsExpression("\n\t\t\tvar widgetClass = 'widget-memory-tabs';\n\t\t\tvar storageName = 'widget-memory-tabs';\n\n\t\t\tvar hasStorage = function() {\n\t\t\t\tvar test = 'test';\n\t\t\t\ttry {\n\t\t\t\t\tsessionStorage.setItem(test, test);\n\t\t\t\t\tsessionStorage.removeItem(test);\n\t\t\t\t\treturn true;\n\t\t\t\t} catch(e) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tif (hasStorage) {\n\n\t\t\t\tvar loadData = function() {\n\t\t\t\t\tvar dataStr = sessionStorage.getItem(storageName);\n\t\t\t\t\tif (dataStr == null) return {};\n\t\t\t\t\treturn JSON.parse(dataStr);\n\t\t\t\t};\n\n\t\t\t\tvar saveData = function(dataObj) {\n\t\t\t\t\tdataStr = JSON.stringify(dataObj);\n\t\t\t\t\tsessionStorage.setItem(storageName, dataStr);\n\t\t\t\t};\n\n\t\t\t\tvar activateIndex = function(tabId, index) {\n\t\t\t\t\tvar tab = \$('#' + tabId);\n\t\t\t\t\tvar items = tab.children('li');\n\t\t\t\t\tif (items.length <= index) return;\n\n\t\t\t\t\t\$('#' + tabId + ' li:eq(' + index + ') a').tab('show');\n\t\t\t\t};\n\n\t\t\t\tvar initIndexes = function() {\n\t\t\t\t\tvar data = loadData();\n\t\t\t\t\tvar curUrl = window.location.href;\n\t\t\t\t\tif (data[curUrl] == null) return;\n\n\t\t\t\t\tvar tabs = \$('.' + widgetClass);\n\t\t\t\t\ttabs.each(function(i, el) {\n\t\t\t\t\t\tvar tabId = \$(this).attr('id');\n\t\t\t\t\t\tif (tabId != null) {\n\t\t\t\t\t\t\tvar index = data[curUrl][tabId];\n\t\t\t\t\t\t\tactivateIndex(tabId, index);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t};\n\n\t\t\t\tvar setIndex = function(tabId, index) {\n\t\t\t\t\tvar curUrl = window.location.href;\n\t\t\t\t\tvar data = loadData();\n\t\t\t\t\tif (data[curUrl] == null) data[curUrl] = {};\n\t\t\t\t\tdata[curUrl][tabId] = index;\n\n\t\t\t\t\tsaveData(data);\n\t\t\t\t};\n\n\t\t\t\t\$('.widget-memory-tabs > li > a').mouseup(function(event) {\n\t\t\t\t\tvar tabs = \$(this).closest('.' + widgetClass);\n\t\t\t\t\tvar selectedIndex = \$(this).parent().prevAll().length;\n\n\t\t\t\t\tsetIndex(tabs.attr('id'), selectedIndex);\n\t\t\t\t});\n\n\t\t\t\tinitIndexes();\n\t\t\t}\n\t\t"); $this->view->registerJs($js); static::$JS_REGISTERED = true; }
/** * @return void */ private function registerJs() { $url = \yii\helpers\Url::to($this->url); \yii\web\JqueryAsset::register($this->getView()); $this->getView()->registerJs(<<<JS \$('#{$this->options['id']}').load('{$url}', function (response, textStatus, xhr) { if (textStatus == "error") { \$(this).html('{$this->errorContent}'); \$(this).addCssClass('{$this->errorCssClass}'); } }); JS ); }
/** * @param View $view */ public function registerAutoFillJs($view, $js) { JqueryAsset::register($view); $view->registerJs('window.generatorAutoFill = function(helpers, inputs, isManualChanged) {' . $js . '}', View::POS_END); $view->registerJs(file_get_contents(__DIR__ . '/../assets/generator-auto-fill.js')); }
<?php use yii\helpers\Html; use yii\web\JqueryAsset; use yii\widgets\ActiveForm; $this->title = 'Survey Wizard'; //echo $event->sender->menu->run(); $form = ActiveForm::begin(['options' => ['id' => 'wizard-form']]); echo $form->field($model, 'type')->radiolist(['Cat' => 'Cat', 'Dog' => 'Dog', 'Other' => 'Other']); echo $form->field($model, 'otherType'); echo Html::beginTag('div', ['class' => 'form-group buttons']); echo Html::submitButton('Submit', ['class' => 'button']); echo Html::endTag('div'); ActiveForm::end(); JqueryAsset::register($this); $this->registerCss('#wizard-form .form-group{float:none;margin:0 10%;width:50%}#wizard-form .field-type-othertype{display:none;}'); $this->registerJs('jQuery(".field-type-type input").change(function(){if(jQuery(this).val()==="Other"){jQuery(".field-type-othertype").show();}else{jQuery(".field-type-othertype").hide();}});');
/** * Registers a JS code block. * @param string $js the JS code block to be registered * @param integer $position the position at which the JS script tag should be inserted * in a page. The possible values are: * * - [[POS_HEAD]]: in the head section * - [[POS_BEGIN]]: at the beginning of the body section * - [[POS_END]]: at the end of the body section * - [[POS_LOAD]]: enclosed within jQuery(window).load(). * Note that by using this position, the method will automatically register the jQuery js file. * - [[POS_READY]]: enclosed within jQuery(document).ready(). This is the default value. * Note that by using this position, the method will automatically register the jQuery js file. * * @param string $key the key that identifies the JS code block. If null, it will use * $js as the key. If two JS code blocks are registered with the same key, the latter * will overwrite the former. */ public function registerJs($js, $position = self::POS_READY, $key = null) { $key = $key ?: md5($js); $this->js[$position][$key] = $js; if ($position === self::POS_READY || $position === self::POS_LOAD) { JqueryAsset::register($this); } }
*/ use yii\web\View; use yii\helpers\Html; use m00nk\dynmodel2\models\DynModel; use m00nk\dynmodel2\models\fields\Field; use m00nk\dynmodel2\models\fields\FieldString; use m00nk\dynmodel2\models\fields\FieldText; use m00nk\dynmodel2\models\fields\FieldDropdown; use m00nk\dynmodel2\models\fields\FieldCheckbox; use m00nk\dynmodel2\models\fields\FieldPassword; use m00nk\dynmodel2\models\fields\FieldEmail; use m00nk\dynmodel2\models\fields\FieldCheckboxList; use m00nk\dynmodel2\models\fields\FieldRadioList; use m00nk\dynmodel2\DynModelEditor; /** * @var View $this * @var DynModel $model */ /** @var DynModelEditor $widget */ $widget = $this->context; // загружаем необходимые скрипты \yii\web\JqueryAsset::register($this); \yii\jui\JuiAsset::register($this); $_ = $this->assetManager->publish(__DIR__ . '/../assets'); $this->registerCssFile($_[1] . '/dynModel.css'); $this->registerJsFile($_[1] . '/dynModel.js'); $this->registerJs('dynModel.init(' . \yii\helpers\Json::encode(['model' => $model->schemeToArray(), 'ajaxUrl' => \yii\helpers\Url::to('/dynmodel/ajax'), 'fieldId' => Html::getInputId($widget->model, $widget->attribute), 'messages' => ['titleError' => Yii::t('dynModel', 'Ошибка'), 'btnClose' => Yii::t('dynModel', 'Закрыть'), 'wrongIndex' => Yii::t('dynModel', 'Неверный индекс.'), 'cantMoveUp' => Yii::t('dynModel', 'Не могу сдвинуть выше, поле является первым.'), 'cantMoveDown' => Yii::t('dynModel', 'Не могу сдвинуть ниже, поле является последним.')]]) . ')'); //=============================================== echo Html::activeHiddenInput($widget->model, $widget->attribute); $header = Html::tag('div', \yii\bootstrap\ButtonDropdown::widget(['label' => '<span class="glyphicon glyphicon-plus"></span> ' . Yii::t('dynModel', 'Создать поле'), 'encodeLabel' => false, 'containerOptions' => ['class' => 'pull-right'], 'options' => ['class' => 'btn btn-xs btn-primary'], 'dropdown' => ['items' => [['label' => Field::getTypeName(), 'url' => '#', 'linkOptions' => ['class' => 'js_dynmodel_link_add_field', 'data-id' => Field::className()]], ['label' => FieldString::getTypeName(), 'url' => '#', 'linkOptions' => ['class' => 'js_dynmodel_link_add_field', 'data-id' => FieldString::className()]], ['label' => FieldEmail::getTypeName(), 'url' => '#', 'linkOptions' => ['class' => 'js_dynmodel_link_add_field', 'data-id' => FieldEmail::className()]], ['label' => FieldPassword::getTypeName(), 'url' => '#', 'linkOptions' => ['class' => 'js_dynmodel_link_add_field', 'data-id' => FieldPassword::className()]], ['label' => FieldText::getTypeName(), 'url' => '#', 'linkOptions' => ['class' => 'js_dynmodel_link_add_field', 'data-id' => FieldText::className()]], ['label' => FieldDropdown::getTypeName(), 'url' => '#', 'linkOptions' => ['class' => 'js_dynmodel_link_add_field', 'data-id' => FieldDropdown::className()]], ['label' => FieldRadioList::getTypeName(), 'url' => '#', 'linkOptions' => ['class' => 'js_dynmodel_link_add_field', 'data-id' => FieldRadioList::className()]], ['label' => FieldCheckboxList::getTypeName(), 'url' => '#', 'linkOptions' => ['class' => 'js_dynmodel_link_add_field', 'data-id' => FieldCheckboxList::className()]], ['label' => FieldCheckbox::getTypeName(), 'url' => '#', 'linkOptions' => ['class' => 'js_dynmodel_link_add_field', 'data-id' => FieldCheckbox::className()]]]]]) . '<span class="glyphicon glyphicon-th-list"></span> ' . Yii::t('admin', 'Список полей профилей'), ['class' => 'panel-heading']); echo Html::tag('div', $header . $this->render('_table', ['model' => $model]), ['class' => 'panel panel-default', 'id' => $widget->id]);
public function run() { Assets::register($this->getView()); echo Html::beginTag('div', $this->containerOptions); if ($this->hasModel()) { echo Html::activeTextarea($this->model, $this->attribute, $this->options); } else { echo Html::textarea($this->name, $this->value, $this->options); } echo Html::endTag('div'); $js = ['mihaildev.ckEditor.registerOnChange(' . Json::encode($this->options['id']) . ');']; if (isset($this->editorOptions['filebrowserUploadUrl'])) { $js[] = "mihaildev.ckEditor.registerCsrf();"; } if (!isset($this->editorOptions['on']['instanceReady'])) { $this->editorOptions['on']['instanceReady'] = new JsExpression("function( ev ){" . implode(' ', $js) . "}"); } if ($this->_inline) { $JavaScript = "CKEDITOR.inline("; $JavaScript .= Json::encode($this->options['id']); $JavaScript .= empty($this->editorOptions) ? '' : ', ' . Json::encode($this->editorOptions); $JavaScript .= ");"; $this->getView()->registerCss('#' . $this->containerOptions['id'] . ', #' . $this->containerOptions['id'] . ' .cke_textarea_inline{height: ' . $this->editorOptions['height'] . 'px;}'); } else { $JavaScript = "CKEDITOR.replace("; $JavaScript .= Json::encode($this->options['id']); $JavaScript .= empty($this->editorOptions) ? '' : ', ' . Json::encode($this->editorOptions); $JavaScript .= ");"; } if ($this->initOnEvent) { $JavaScript = 'jQuery("#' . $this->options['id'] . '").one("' . $this->initOnEvent . '", function(){' . $JavaScript . '});'; JqueryAsset::register($this->getView()); } $this->getView()->registerJs($JavaScript, View::POS_END); }
/** * */ function init() { $view = $this->getView(); AppAssets::register($view); JqueryAsset::register($view); }
/** * @inheritdoc */ public function addPageJs($jsCode) { \yii\web\JqueryAsset::register($this); $this->registerJs($jsCode, self::POS_END); }
/** * Registers the needed JavaScript. */ public function registerClientScript() { $id = $this->options['id']; $options = $this->generateClientOptions(); $linkSelector = $this->linkSelector !== null ? $this->linkSelector : '#' . $id . ' *[data-ajax]:not(form)'; $formSelector = $this->formSelector !== null ? $this->formSelector : '#' . $id . ' form[data-ajax]'; $view = $this->getView(); JqueryAsset::register($view); AjaxAsset::register($view); $js = "jQuery('{$linkSelector}').click(function() {jQuery.ajax(ajaxHelper.filter({$options}));return this.tagName.toLowerCase()=='a' ? false : true;});"; $js .= "\njQuery(document).on('submit', '{$formSelector}', function() {jQuery.ajax(ajaxHelper.filter({$options}));return false;});"; $view->registerJs($js); }
public function init() { JqueryAsset::register($this->getView()); }