Example #1
0
 /**
  * Widget's initialization method
  */
 public function init()
 {
     $this->attachBehavior('ywplugin', array('class' => 'yiiwheels.behaviors.WhPlugin'));
     $this->htmlOptions['id'] = WhHtml::getOption('id', $this->htmlOptions, $this->getId());
     if (!$this->selector) {
         $this->selector = '#' . WhHtml::getOption('id', $this->htmlOptions);
     }
 }
Example #2
0
 /**
  * Registers required client script for bootstrap multiselect. It is not used through bootstrap->registerPlugin
  * in order to attach events if any
  */
 public function registerClientScript()
 {
     /* publish assets dir */
     $path = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'assets';
     $assetsUrl = $this->getAssetsUrl($path);
     /* @var $cs CClientScript */
     $cs = Yii::app()->getClientScript();
     $cs->registerScriptFile($assetsUrl . '/js/jquery.maskmoney.js');
     /* initialize plugin */
     $selector = '#' . WhHtml::getOption('id', $this->htmlOptions, $this->getId());
     $this->getApi()->registerPlugin('maskMoney', $selector, $this->pluginOptions);
 }
Example #3
0
 /**
  * Registers required client script for bootstrap typeahead. It is not used through bootstrap->registerPlugin
  * in order to attach events if any
  */
 public function registerClientScript()
 {
     /* publish assets dir */
     $path = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'assets';
     $assetsUrl = $this->getAssetsUrl($path);
     /* @var $cs CClientScript */
     $cs = Yii::app()->getClientScript();
     $min = $this->debugMode ? '.min' : '';
     $cs->registerCssFile($assetsUrl . '/css/typeahead' . $min . '.css');
     $cs->registerScriptFile($assetsUrl . '/js/typeahead' . $min . '.js');
     /* initialize plugin */
     $selector = '#' . WhHtml::getOption('id', $this->htmlOptions, $this->getId());
     $this->getApi()->registerPlugin('typeahead', $selector, $this->pluginOptions);
 }
Example #4
0
 /**
  * Registers required client script for bootstrap multiselect. It is not used through bootstrap->registerPlugin
  * in order to attach events if any
  */
 public function registerClientScript()
 {
     /* publish assets dir */
     $path = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'assets';
     $assetsUrl = $this->getAssetsUrl($path);
     /* @var $cs CClientScript */
     $cs = Yii::app()->getClientScript();
     $cs->registerCssFile($assetsUrl . '/css/bootstrap-multiselect.css');
     $cs->registerScriptFile($assetsUrl . '/js/bootstrap-multiselect.js');
     /* initialize plugin */
     $selector = '#' . WhHtml::getOption('id', $this->htmlOptions, $this->getId());
     $this->getApi()->registerPlugin('multiselect', $selector, $this->pluginOptions);
     $this->getApi()->registerEvents($selector, $this->events);
 }
Example #5
0
 /**
  * Registers client script
  */
 public function registerClientScript()
 {
     /* publish assets dir */
     $path = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'assets';
     $assetsUrl = $this->getAssetsUrl($path);
     /* @var $cs CClientScript */
     $cs = Yii::app()->getClientScript();
     $cs->registerCssFile($assetsUrl . '/css/jquery.fileupload-ui.css');
     $cs->registerScriptFile($assetsUrl . '/js/vendor/jquery.ui.widget.js');
     $cs->registerScriptFile($assetsUrl . '/js/jquery.iframe-transport.js');
     $cs->registerScriptFile($assetsUrl . '/js/jquery.fileupload.js');
     /* initialize plugin */
     $selector = '#' . WhHtml::getOption('id', $this->htmlOptions, $this->getId());
     $this->getApi()->registerPlugin('fileupload', $selector, $this->pluginOptions);
 }
Example #6
0
 /**
  * Registers required client script for sparklines
  */
 public function registerClientScript()
 {
     /* publish assets dir */
     $path = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'assets';
     $assetsUrl = $this->getAssetsUrl($path);
     /* @var $cs CClientScript */
     $cs = Yii::app()->getClientScript();
     $script = $this->debugMode ? 'jquery.sparkline.js' : 'jquery.sparkline.min.js';
     $cs->registerScriptFile($assetsUrl . '/js/' . $script);
     /* initialize plugin */
     $selector = '#' . WhHtml::getOption('id', $this->htmlOptions, $this->getId());
     $data = CJavaScript::encode($this->data);
     $options = CJavaScript::encode($this->pluginOptions);
     $cs->registerScript(__CLASS__ . '#' . $selector, "jQuery('{$selector}').sparkline({$data}, {$options});");
 }
Example #7
0
 /**
  * Registers required client script for bootstrap datepicker.
  */
 public function registerClientScript()
 {
     /* publish assets dir */
     $path = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'assets';
     $assetsUrl = $this->getAssetsUrl($path);
     /* @var $cs CClientScript */
     $cs = Yii::app()->getClientScript();
     $cs->registerCssFile($assetsUrl . '/css/datepicker.css');
     $cs->registerScriptFile($assetsUrl . '/js/bootstrap-datepicker.js');
     if ($language = WhHtml::getOption('language', $this->pluginOptions)) {
         $cs->registerScriptFile($assetsUrl . '/js/locales/bootstrap-datepicker.' . $language . '.js', CClientScript::POS_END);
     }
     /* initialize plugin */
     $selector = '#' . WhHtml::getOption('id', $this->htmlOptions, $this->getId());
     $this->getApi()->registerPlugin('datepicker', $selector, $this->pluginOptions);
     $this->getApi()->registerEvents($selector, $this->events);
 }
Example #8
0
 /**
  * Registers required client script for bootstrap select2. It is not used through bootstrap->registerPlugin
  * in order to attach events if any
  */
 public function registerClientScript()
 {
     /* publish assets dir */
     $path = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'assets';
     $assetsUrl = $this->getAssetsUrl($path);
     /* @var $cs CClientScript */
     $cs = Yii::app()->getClientScript();
     $script = $this->debugMode ? 'redactor.js' : 'redactor.min.js';
     $cs->registerCssFile($assetsUrl . '/css/redactor.css');
     $cs->registerScriptFile($assetsUrl . '/js/' . $script);
     /* register language */
     $language = WhHtml::getOption('lang', $this->pluginOptions);
     if (!empty($language) && $language != 'en') {
         $cs->registerScriptFile($assetsUrl . '/js/langs/' . $language . '.js', CClientScript::POS_END);
     }
     /* register plugins (if any) */
     $this->registerPlugins($assetsUrl);
     /* initialize plugin */
     $selector = '#' . WhHtml::getOption('id', $this->htmlOptions, $this->getId());
     $this->getApi()->registerPlugin('redactor', $selector, $this->pluginOptions);
 }
Example #9
0
 /**
  * Sets up default options for the plugin
  * - thanks https://github.com/anggiaj
  */
 protected function initDefaultOptions()
 {
     list($name, $id) = $this->resolveNameID();
     $this->htmlOptions = WhHtml::defaultOption('id', $id, $this->htmlOptions);
     $this->htmlOptions = WhHtml::defaultOption('name', $name, $this->htmlOptions);
     $this->defaultOptions = array('request' => array('endpoint' => $this->uploadAction, 'inputName' => $name), 'validation' => $this->getValidator(), 'messages' => array('typeError' => Yii::t('zii', '{file} has an invalid extension. Valid extension(s): {extensions}.'), 'sizeError' => Yii::t('zii', '{file} is too large, maximum file size is {sizeLimit}.'), 'minSizeError' => Yii::t('zii', '{file} is too small, minimum file size is {minSizeLimit}.'), 'emptyError:' => Yii::t('zii', '{file} is empty, please select files again without it.'), 'noFilesError' => Yii::t('zii', 'No files to upload.'), 'onLeave' => Yii::t('zii', 'The files are being uploaded, if you leave now the upload will be cancelled.')));
 }
Example #10
0
 /**
  * Registers required files and initialization script
  */
 public function registerClientScript()
 {
     /* publish assets dir */
     $path = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'assets';
     $assetsUrl = $this->getAssetsUrl($path);
     $id = WhHtml::getOption('id', $this->htmlOptions, $this->getId());
     $jsFile = !empty($this->scales) ? 'JQAllRangeSliders-withRuler-min.js' : 'JQAllRangeSliders-min.js';
     /* @var $cs CClientScript */
     $cs = Yii::app()->getClientScript();
     $cs->registerCoreScript('jquery');
     $cs->registerCoreScript('jquery.ui');
     $this->getYiiWheels()->registerAssetJs('jquery.mousewheel.min.js');
     $cs->registerCssFile($assetsUrl . '/css/' . $this->theme . '.css');
     $cs->registerScriptFile($assetsUrl . '/js/' . $jsFile);
     $options = !empty($this->options) ? CJavaScript::encode($this->options) : '';
     $inputValSet = "\$('#{$id}').val(data.values.min+','+data.values.max);";
     //inserting trigger
     if (isset($this->events['valuesChanged'])) {
         $orig = $this->events['valuesChanged'];
         if (strpos($orig, 'js:') === 0) {
             $orig = substr($orig, 3);
         }
         $orig = "\n({$orig}).apply(this, arguments);";
     } else {
         $orig = '';
     }
     $this->events['valuesChanged'] = "js: function(id, data) {\r\n\t\t\t{$inputValSet} {$orig}\r\n\t\t}";
     ob_start();
     echo "jQuery('#slider_{$id}').{$this->type}Slider({$options})";
     foreach ($this->events as $event => $handler) {
         echo ".on('{$event}', " . CJavaScript::encode($handler) . ")";
     }
     $cs->registerScript(__CLASS__ . '#' . $this->getId(), ob_get_clean() . ';');
 }
Example #11
0
 /**
  * Publishes and registers the necessary script files.
  */
 protected function registerClientScript()
 {
     /* publish assets dir */
     $path = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'assets';
     $assetsUrl = $this->getAssetsUrl($path);
     /* @var $cs CClientScript */
     $cs = Yii::app()->getClientScript();
     $cs->registerScriptFile($assetsUrl . '/js/highcharts.js');
     /* register required files */
     $defaultOptions = array('exporting' => array('enabled' => true));
     $this->pluginOptions = CMap::mergeArray($defaultOptions, $this->pluginOptions);
     if (isset($this->options['exporting']) && @$this->options['exporting']['enabled']) {
         $cs->registerScriptFile($assetsUrl . '/js/modules/exporting.js');
     }
     if ($theme = WhHtml::getOption('theme', $this->pluginOptions)) {
         $cs->registerScriptFile($assetsUrl . '/js/themes/' . $theme . '.js');
     }
     $options = CJavaScript::encode($this->pluginOptions);
     $cs->registerScript(__CLASS__ . '#' . $this->getId(), "var highchart{$this->getId()} = new Highcharts.Chart({$options});");
 }
Example #12
0
 /**
  * Registers client scripts
  */
 protected function registerClientScript()
 {
     $path = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'assets';
     $assetsUrl = $this->getAssetsUrl($path);
     /* @var $cs CClientScript */
     $cs = Yii::app()->clientScript;
     $cs->registerCoreScript('jquery');
     $cs->registerCssFile($assetsUrl . '/css/bootstrap-toggle-buttons.css');
     $cs->registerScriptFile($assetsUrl . '/js/jquery.toggle.buttons.js');
     /* initialize plugin */
     $selector = '#wrapper-' . WhHtml::getOption('id', $this->htmlOptions, $this->getId());
     $this->getApi()->registerPlugin('toggleButtons', $selector, $this->getConfiguration(), CClientScript::POS_READY);
 }
Example #13
0
 /**
  * Registers required client script for bootstrap ace editor.
  */
 public function registerClientScript()
 {
     /* publish assets dir */
     $path = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'assets';
     $assetsUrl = $this->getAssetsUrl($path);
     /* @var $cs CClientScript */
     $cs = Yii::app()->getClientScript();
     $cs->registerScriptFile($assetsUrl . '/js/ace.js');
     $id = WhHtml::getOption('id', $this->htmlOptions, $this->getId());
     /* Global value that will hold the editor */
     $cs->registerScript(uniqid(__CLASS__ . '#' . $id, true), 'var ' . $id . ';', CClientScript::POS_HEAD);
     ob_start();
     /* initialize plugin */
     $selector = WhHtml::getOption('id', $this->htmlOptions, $this->getId());
     echo $selector . '= ace.edit("' . $id . '");' . PHP_EOL;
     echo $selector . '.setTheme("ace/theme/' . $this->theme . '");' . PHP_EOL;
     echo $selector . '.getSession().setMode("ace/mode/' . $this->mode . '");' . PHP_EOL;
     if (!empty($this->events) && is_array($this->events)) {
         foreach ($this->events as $name => $handler) {
             $handler = $handler instanceof CJavaScriptExpression ? $handler : new CJavaScriptExpression($handler);
             echo $id . ".getSession().on('{$name}', {$handler});" . PHP_EOL;
         }
     }
     $cs->registerScript(uniqid(__CLASS__ . '#ReadyJS' . $id, true), ob_get_clean());
 }
Example #14
0
 /**
  * Helper method to display different input types for the different complain bootstrap forms wrapped with their
  * labels, help and error messages. This method is a replacement of the old 'typeRow' methods from Yii-Bootstrap
  * extension. Example:
  * <pre>
  *     $form->row(WhHtml::INPUT_TEXT, $model, 'attribute', array('style'=>'width:125px'));
  *    $form->row(WhHtml::INPUT_DROPDOWN, $model, 'attribute', array('a'=>'A','b'=>'B'), array());
  * </pre>
  * @param $type
  * @param $model
  * @param $attribute
  * @param $data
  * @param array $htmlOptions
  * @return string
  * @throws CException
  */
 public function row($type, $model, $attribute, $data = array(), $htmlOptions = array())
 {
     if (!in_array($type, WhHtml::validInputs())) {
         throw new CException(Yii::t('tb', 'Unrecognized input type'));
     }
     $labelOptions = WhHtml::popOption('labelOptions', $htmlOptions, array());
     $errorOptions = WhHtml::popOption('errorOptions', $htmlOptions, array());
     $containerOptions = WhHtml::popOption('containerOptions', $htmlOptions, array());
     $labelOptions = WhHtml::defaultOption('formType', $this->type, $labelOptions);
     ob_start();
     // make sure it holds the class control-label
     if ($this->type === WhHtml::FORM_HORIZONTAL) {
         echo CHtml::openTag('div', WhHtml::addClassName('control-group', $containerOptions));
     }
     // form's inline do not render labels and radio|checkbox input types render label's differently
     if ($this->type !== WhHtml::FORM_INLINE && !preg_match('/radio|checkbox/i', $type) && WhHtml::popOption('label', $htmlOptions, true)) {
         echo CHtml::activeLabel($model, $attribute, $labelOptions);
     } elseif (preg_match('/radio|checkbox/i', $type)) {
         $htmlOptions['labelOptions'] = $labelOptions;
     }
     if (WhHtml::popOption('block', $htmlOptions, false)) {
         $htmlOptions = WhHtml::addClassName('input-block-level', $htmlOptions);
     }
     $params = in_array($type, WhHtml::$dataInputs) ? array($model, $attribute, $data, $htmlOptions) : array($model, $attribute, $htmlOptions);
     $errorSpan = $this->error($model, $attribute, $errorOptions);
     echo $this->wrapControl(call_user_func_array('WhHtml::active' . ucfirst($type), $params), $errorSpan);
     /* since PHP 5.3 */
     if ($this->type == WhHtml::FORM_VERTICAL && WhHtml::popOption('error', $htmlOptions, true)) {
         echo $errorSpan;
     }
     if ($this->type == WhHtml::FORM_HORIZONTAL) {
         echo '</div>';
     }
     return ob_get_clean();
 }
Example #15
0
 /**
  * Registers and publishes required scripts
  */
 public function registerClientScript()
 {
     /* publish assets dir */
     $path = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'assets';
     $assetsUrl = $this->getAssetsUrl($path);
     /* @var $cs CClientScript */
     $cs = Yii::app()->getClientScript();
     $cs->registerCssFile($assetsUrl . '/css/jquery.fileupload-ui.css');
     // Upgrade widget factory
     // @todo remove when jquery.ui 1.9+ is fully integrated into stable Yii versions
     $cs->registerScriptFile($assetsUrl . '/js/vendor/jquery.ui.widget.js');
     //The Templates plugin is included to render the upload/download listings
     $cs->registerScriptFile($assetsUrl . '/js/tmpl.min.js', CClientScript::POS_END);
     if ($this->previewImages || $this->imageProcessing) {
         $cs->registerScriptFile($assetsUrl . '/js/load-image.min.js', CClientScript::POS_END);
         $cs->registerScriptFile($assetsUrl . '/js/canvas-to-blob.min.js', CClientScript::POS_END);
         // gallery :)
         $this->getApi()->registerAssetCss("bootstrap-image-gallery.min.css");
         $this->getApi()->registerAssetJs("bootstrap-image-gallery.min.js", CClientScript::POS_END);
     }
     //The Iframe Transport is required for browsers without support for XHR file uploads
     Yii::app()->bootstrap->registerAssetJs('fileupload/jquery.iframe-transport.js');
     Yii::app()->bootstrap->registerAssetJs('fileupload/jquery.fileupload.js');
     // The File Upload image processing plugin
     if ($this->imageProcessing) {
         $cs->registerScriptFile($assetsUrl . '/js/jquery.fileupload-ip.js');
     }
     // The File Upload file processing plugin
     if ($this->previewImages) {
         $cs->registerScriptFile($assetsUrl . '/js/jquery.fileupload-fp.js');
     }
     // locale
     $cs->registerScriptFile($assetsUrl . '/js/jquery.fileupload-locale.js');
     //The File Upload user interface plugin
     $cs->registerScriptFile($assetsUrl . '/js/jquery.fileupload-ui.js');
     /* initialize plugin */
     $selector = '#' . WhHtml::getOption('id', $this->htmlOptions, $this->getId());
     $this->getYiiWheels()->registerPlugin('fileupload', $selector, $this->options);
 }
Example #16
0
 /**
  *
  * Registers required css js files
  */
 public function registerClientScript()
 {
     /* publish assets dir */
     $path = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'assets';
     $assetsUrl = $this->getAssetsUrl($path);
     /* register required moment.js */
     $this->getYiiWheels()->registerAssetJs('moment.min.js');
     /* @var $cs CClientScript */
     $cs = Yii::app()->getClientScript();
     $cs->registerCssFile($assetsUrl . '/css/daterangepicker.css');
     $cs->registerScriptFile($assetsUrl . '/js/daterangepicker.js', CClientScript::POS_END);
     /* initialize plugin */
     $selector = null === $this->selector ? '#' . WhHtml::getOption('id', $this->htmlOptions, $this->getId()) : $this->selector;
     $callback = $this->callback instanceof CJavaScriptExpression ? $this->callback : ($this->callback === null ? '' : new CJavaScriptExpression($this->callback));
     $cs->registerScript(__CLASS__ . '#' . $this->getId(), '$("' . $selector . '").daterangepicker(' . CJavaScript::encode($this->pluginOptions) . ($callback ? ', ' . CJavaScript::encode($callback) : '') . ');');
 }
Example #17
0
 /**
  * Registers the client scripts for the button column.
  */
 protected function registerClientScript()
 {
     $js = array();
     $function = CJavaScript::encode(WhHtml::popOption('click', $this->toggleOptions, ''));
     $class = preg_replace('/\\s+/', '.', $this->toggleOptions['htmlOptions']['class']);
     $js[] = "\$(document).on('click','#{$this->grid->id} a.{$class}',{$function});";
     Yii::app()->getClientScript()->registerScript(__CLASS__ . '#ReadyJS', implode("\n", $js));
 }