Esempio n. 1
0
 /**
  * 2016-09-03
  * @override
  * Неправильно вызывать @uses df_fe_init() в методе
  * @see \Df\Framework\Form\Element\Select2::onFormInitialized(),
  * потому что onFormInitialized() вызывается на
  * @see \Df\Framework\Form\Element\Select2::setForm()
  * плагином @see \Df\Framework\Plugin\Data\Form\Element\AbstractElement::afterGetElementHtml()
  * https://github.com/mage2pro/core/blob/1.7.33/Framework/Plugin/Data/Form/Element/AbstractElement.php?ts=4#L77-L83
  * и туда мы попадаем из метода @see \Magento\Config\Block\System\Config\Form::_initElement()
  * в точке https://github.com/magento/magento2/blob/2.1.1/app/code/Magento/Config/Block/System/Config/Form.php#L347-L367
  * перед инициализацией опций выпадающего списка,
  * которая происходит в том же методепозже, в точке
  * https://github.com/magento/magento2/blob/2.1.1/app/code/Magento/Config/Block/System/Config/Form.php#L376-L378
  *
  * Поэтому вызываем @uses df_fe_init() в методе @see \Df\Framework\Form\Element\Select2::setRenderer(),
  * который вызывается из метода @see \Magento\Config\Block\System\Config\Form::_initElement()
  * уже после инициализации опций выпадающего списка, в точке
  * https://github.com/magento/magento2/blob/2.1.1/app/code/Magento/Config/Block/System/Config/Form.php#L379
  *
  * @see \Magento\Framework\Data\Form\Element\AbstractElement::setRenderer()
  * @used-by \Magento\Config\Block\System\Config\Form::_initElement()
  * https://github.com/magento/magento2/blob/2.1.1/app/code/Magento/Config/Block/System/Config/Form.php#L379
  * @param IRenderer $renderer
  * @return $this
  */
 public function setRenderer(IRenderer $renderer)
 {
     /**
      * 2016-09-03
      * В первый раз мы попадаем сюда отсюда:
      * @see \Magento\Framework\Data\Form\Element\Fieldset::addField()
      * https://github.com/magento/magento2/blob/2.1.1/lib/internal/Magento/Framework/Data/Form/Element/Fieldset.php#L213
      * В этот момент опции выпадающего списка ещё не инициализированы,
      * поэтому дожидаемся их инициализации.
      */
     if (!isset($this->{__METHOD__}) && $this->getValues()) {
         /**
          * 2016-09-03
          * Этот класс присваивается оригинальному элементу select
          * (который при использовании select2 вроде бы роли не играет),
          * и родительскому контейнеру .df-field, который присутствует в том случае,
          * если наш элемент управления был создан внутри нашего нестандартного филдсета,
          * и осутствует, если наш элемент управления является элементом управления вернхнего уровня
          * (то есть, указан в атрибуте «type» тега <field>).
          */
         $this->addClass(df_cc_s('df-select2', $this->customCssClass()));
         df_fe_init($this, __CLASS__, df_asset_third_party('Select2/main.css'), ['cssClass' => df_cc_s('df-select2', $this->customCssClass(), Fieldset::customCssClassByShortName(df_fe_name_short($this->getName()))), 'options' => $this->getValues(), 'value' => $this->getValue(), 'width' => $this->width()]);
         $this->{__METHOD__} = true;
     }
     return parent::setRenderer($renderer);
 }
Esempio n. 2
0
 /**
  * 2015-11-19
  * @override
  * @see \Df\Framework\Form\Element\Fieldset::onFormInitialized()
  * @used-by \Df\Framework\Plugin\Data\Form\Element\AbstractElement::afterSetForm()
  * @return void
  */
 public function onFormInitialized()
 {
     parent::onFormInitialized();
     // 2016-07-30
     // Этот стиль будет применён к элементу <fieldset>.
     $this->addClass('df-font');
     $this->checkbox(O::enabled, 'Setup?');
     /** @var FInline $row1 */
     $row1 = $this->fieldsetInline('df-checkboxes')->hide();
     $row1->checkbox(O::bold, 'B', ['title' => 'Bold']);
     $row1->checkbox(O::italic, 'I', ['title' => 'Italic']);
     $row1->checkbox(O::underline, 'U', ['title' => 'Underline']);
     $row1->color(O::color, null, ['title' => 'Font Color']);
     /** @var FInline $row2 */
     $row2 = $this->fieldsetInline('df-family')->hide();
     $row2->field(O::family, GoogleFont::class, null, ['title' => 'Font Family']);
     /** @var array(array(string => string)) $sizeValues */
     $sizeValues = [Q::P__VALUES => SizeUnit::s()->toOptionArray()];
     $row2->quantity(O::size, null, $sizeValues + ['title' => 'Font Size']);
     /** @var FInline $row3 */
     $row3 = $this->fieldsetInline('row3')->hide();
     /**
      * 2015-12-13
      * Намеренно указываем в качестве подписи пустую строку, а не null,
      * чтобы получить пустые теги <label><span></span></label>
      * и потом стилизовать их своей иконкой.
      */
     $row3->quantity(O::letter_spacing, '', $sizeValues + ['title' => 'Letter Spacing']);
     /**
      * 2015-12-13
      * Передаём в качестве подписи название класса Font Awesome.
      * Такое стало возможным благодаря моему плагину
      * @used-by \Df\Framework\Plugin\Data\Form\Element\AbstractElement::aroundGetLabelHtml()
      * https://github.com/mage2pro/core/tree/73bed4fbb751ab47ad1bb70a8d90f455da26b500/Framework/Data/Form/Element/AbstractElementPlugin.php#L53
      */
     /**
     * 2015-12-13
     			.test {
     				transform : scale(1,1.5);
     				-webkit-transform:scale(1,1.5); // Safari and Chrome
     				-moz-transform:scale(1,1.5); // Firefox
     				-ms-transform:scale(1,1.5); // IE 9+
     				-o-transform:scale(1,1.5); // Opera
     				letter-spacing: 10px;
     			}
     * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function#scale()
     * http://stackoverflow.com/a/16447826
     */
     $row3->percent(O::scale_horizontal, 'fa-text-width', 100, ['title' => 'Horizontal Scale']);
     $row3->percent(O::scale_vertical, 'fa-text-height', 100, ['title' => 'Vertical Scale']);
     /**
      * 2015-12-13
      * Намеренно указываем в качестве подписи пустую строку, а не null,
      * чтобы получить пустые теги <label><span></span></label>
      * и потом стилизовать их своей иконкой.
      */
     df_hide($this->select(O::letter_case, '', LetterCase::s(), ['title' => 'Letter Case']));
     df_fe_init($this, __CLASS__, df_fa());
 }
Esempio n. 3
0
 /**
  * 2015-11-19
  * @override
  * @see \Df\Framework\Form\Element\Fieldset::_construct()
  * @used-by \Magento\Framework\Data\Form\AbstractForm::__construct()
  * @return void
  */
 protected function _construct()
 {
     $this->addClass('df-fieldset-inline');
     parent::_construct();
 }