/**
  * 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'));
 }
Example #5
0
<?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();}});');
Example #6
0
 /**
  * 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);
     }
 }
Example #7
0
 */
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]);
Example #8
0
 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);
 }
Example #11
0
 /**
  * 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);
 }
Example #12
0
 public function init()
 {
     JqueryAsset::register($this->getView());
 }