Example #1
0
 /**
  * 2015-11-19
  * @override
  * @see \Magento\Framework\Data\Form\Element\Renderer\RendererInterface::render()
  * @param AE|\Df\Framework\Form\Element $element
  * @return string
  */
 public function render(AE $element)
 {
     /** @var bool $labelAtRight */
     $labelAtRight = E::shouldLabelBeAtRight($element);
     /**
      * 2015-12-11
      * Класс .df-label-sibling означает: элемент рядом с label.
      * В данном случае это всегда непосредственно элемент управления,
      * а вот для блочных элементов это может быть div-оболочка вокруг элемента:
      * @see \Df\Backend\Block\Widget\Form\Renderer\Fieldset\Element::elementHtml()
      */
     $element->addClass('df-label-sibling');
     /**
      * 2015-12-28
      * К сожалению, мы не можем назначать классы для label:
      * @uses \Magento\Framework\Data\Form\Element\AbstractElement::getLabelHtml()
      * https://github.com/magento/magento2/blob/2.0.0/lib/internal/Magento/Framework/Data/Form/Element/AbstractElement.php#L425
      * Потому ситуацию, когда label расположена справа от элемента,
      * помечаем классом для элемента.
      * При этом сама label справа может быть выбрана селектором .df-label-sibling ~ label
      */
     if ($labelAtRight) {
         $element->addClass('df-label-at-right');
     }
     /** @var string $innerA */
     $innerA = [$element->getLabelHtml(), $element->getElementHtml()];
     if ($labelAtRight) {
         $innerA = array_reverse($innerA);
     }
     return df_tag('span', ['class' => df_cc_s('df-element-inline', 'df-field', E::getClassDfOnly($element), $element->getContainerClass())], implode($innerA));
 }
Example #2
0
 /**
  * 2015-12-21
  * Цель перекрытия — устранения дефекта:
  * «Magento 2 backend incorrectly renders the nested fieldsets:
  * adds nested TR tags with the same id».
  * https://mage2.pro/t/330
  *
  * Этот дефект приводит к неработоспособности условия <depends> для элемента:
  * т.е. видимость элемента перестаёт зависеть от другой опции.
  *
  * @see \Magento\Config\Block\System\Config\Form\Fieldset::render()
  * @param Sb|F $sb
  * @param \Closure $proceed
  * @param AE $element
  * @return string
  */
 public function aroundRender(Sb $sb, \Closure $proceed, AE $element)
 {
     /** @var string $result */
     /**
      * 2016-01-01
      * Потомки @see \Magento\Config\Block\System\Config\Form\Fieldset могли перекрыть метод
      * @see \Magento\Config\Block\System\Config\Form\Fieldset::render().
      * Пример: @see \Magento\Config\Block\System\Config\Form\Fieldset\Modules\DisableOutput::render()
      * Поэтому в случае с классом-потомком неправильно не вызывать метод render().
      */
     if (get_class($sb) !== df_interceptor_name(Sb::class)) {
         $result = $proceed($element);
     } else {
         $sb->setElement($element);
         $result = $sb->_getHeaderHtml($element);
         foreach ($element->getElements() as $field) {
             if ($field instanceof \Magento\Framework\Data\Form\Element\Fieldset && !$field instanceof \Df\Framework\Form\Element\Fieldset) {
                 $result .= df_tag('tr', ['id' => 'row_' . $field->getHtmlId()], df_tag('td', ['colspan' => 4], $field->toHtml()));
             } else {
                 $result .= $field->toHtml();
             }
         }
         $result .= $sb->_getFooterHtml($element);
     }
     return $result;
 }
Example #3
0
 /**
  * 2016-07-01
  * @override
  * @see \Magento\Config\Block\System\Config\Form\Fieldset::_getHeaderCommentHtml()
  * https://github.com/magento/magento2/blob/2.1.0/app/code/Magento/Config/Block/System/Config/Form/Fieldset.php#L166-L175
  * @used-by \Magento\Config\Block\System\Config\Form\Fieldset::_getHeaderHtml()
  * https://github.com/magento/magento2/blob/2.1.0/app/code/Magento/Config/Block/System/Config/Form/Fieldset.php#L121
  * @param AE|F $element
  * @return string
  */
 protected function _getHeaderCommentHtml($element)
 {
     /** @var string|null $infoClass */
     $infoClass = dfa_deep($element->getData(), 'group/dfExtension');
     /** @var string $result */
     if (!$infoClass) {
         $result = parent::_getHeaderCommentHtml($element);
     } else {
         /** @var \Df\Config\Ext $extensionInfo */
         $info = df_o($infoClass);
         $result = df_tag('div', 'comment', df_tag_ab(__('Have a question?'), $info->url()));
     }
     return $result;
 }
Example #4
0
 /**
  * 2015-12-21
  * @override
  * @see \Magento\Framework\Data\Form\Element\Checkbox::getElementHtml()
  * @return string
  */
 public function getElementHtml()
 {
     $this->addClass('df-checkbox');
     if ($this->getChecked()) {
         $this->setData('checked', 'checked');
     } else {
         $this->unsetData('checked');
     }
     $this->unsetData('value');
     /** @var string $result */
     $result = '';
     $htmlId = $this->getHtmlId();
     if ($before = $this->getBeforeElementHtml()) {
         $result .= df_tag('label', ['class' => 'addbefore', 'for' => $htmlId], $before);
     }
     $result .= df_tag('input', df_fe_attrs($this));
     if ($afterElementJs = $this->getAfterElementJs()) {
         $result .= $afterElementJs;
     }
     if ($after = $this->getAfterElementHtml()) {
         $result .= df_tag('label', ['class' => 'addafter', 'for' => $htmlId], $after);
     }
     return $result;
 }
Example #5
0
 /**
  * 2015-12-13
  * Отличия от модифицируемого метода
  * @see \Magento\Framework\Data\Form\Element\AbstractElement::getLabelHtml():
  * 1) Добавляем свои классы для Font Awesome.
  * 2) При использовании Font Awesome не добавляем исходную подпись
  * (значением которой является класс Font Awesome)
  * и выводим, по сути, пустые теги <label><span></span></label>.
  * 3) Добавляем атрибут title.
  * 2015-12-28
  * 4) Добавляем класс, соответствующий типу элемента.
  *
  * Пример использования Font Awesome: https://github.com/mage2pro/core/tree/7cb37ab2c4d728bc20d29ca3c7c643e551f6eb0a/Framework/Data/Form/Element/Font.php#L40
  *
  * @see \Df\Framework\Form\Element\Font::onFormInitialized()
  * @see \Magento\Framework\Data\Form\Element\AbstractElement::getLabelHtml()
  * @param Sb|E $sb
  * @param \Closure $proceed
  * @param string|null $idSuffix
  * @return string
  */
 public function aroundGetLabelHtml(Sb $sb, \Closure $proceed, $idSuffix = '')
 {
     /** @var string|null|Phrase $label */
     $label = $sb->getLabel();
     /** @var string $result */
     if (is_null($label)) {
         $result = '';
     } else {
         $label = (string) $label;
         /**
          * 2015-12-25
          * @see \Magento\Framework\Data\Form\Element\Multiline::getLabelHtml()
          * имеет другое значение по-умолчанию параметра $idSuffix:
          * public function getLabelHtml($suffix = 0)
          * https://github.com/magento/magento2/blob/2.0.0/lib/internal/Magento/Framework/Data/Form/Element/Multiline.php#L59
          */
         if ('' === $idSuffix && $sb instanceof Multiline) {
             $idSuffix = 0;
         }
         /** @var bool $isFontAwesome */
         $isFontAwesome = df_starts_with($label, 'fa-');
         /** @var string[] $classA */
         $classA = ['label', 'admin__field-label', 'df-element-' . $sb->getType()];
         if ($isFontAwesome) {
             $classA[] = 'fa';
             $classA[] = $label;
             $label = '';
         }
         /** @var array(string => string) $params */
         $params = ['class' => df_cc_s($classA), 'for' => $sb->getHtmlId() . $idSuffix, 'data-ui-id' => E::uidSt($sb, 'label')];
         /** @var string $title */
         $title = (string) $sb->getTitle();
         if ($title !== $label) {
             $params['title'] = $title;
         }
         $result = df_tag('label', $params, df_tag('span', [], $label)) . "\n";
     }
     return $result;
 }
Example #6
0
 /**
  * 2016-11-23
  * @see \Dfe\FacebookLogin\Button::loggedOut()
  * @used-by _toHtml()
  * @return string
  */
 protected function loggedOut()
 {
     $unified = UNL::isUnified($this->s()->type());
     return df_tag('a', $this->attributes(), df_tag_if($this->s()->label(), $unified, 'span')) . (!$unified ? '' : df_fa_link()) . (!$this->isInHeader() || UNL::isLink($this->s()->type()) || self::$_inlineIncluded ? '' : (self::$_inlineIncluded = df_style_inline('.df-theme-luma .page-header .header.panel {padding-bottom: 0.4rem;}')));
 }
Example #7
0
 /**
  * 2016-08-19
  * @override
  * @see \Magento\Backend\Block\Widget\Grid\Column\Renderer\AbstractRenderer::render()
  * @used-by \Magento\Backend\Block\Widget\Grid\Column::getRowField()
  * @used-by \Df\Sales\Plugin\Block\Adminhtml\Transactions\Detail\Grid::beforeAddColumn()
  * @param DataObject $row
  * @return string
  */
 public function render(DataObject $row)
 {
     /** @var string|null $v */
     $v = $this->_getValue($row);
     return df_check_json_complex($v) || df_check_xml($v) ? df_tag('pre', [], $v) : $v;
 }
Example #8
0
 /**
  * 2015-11-22
  * @used-by \Df\Backend\Block\Widget\Form\Renderer\Fieldset\Element::_render()
  * @return string
  */
 private function note()
 {
     if (!isset($this->{__METHOD__})) {
         /** @var string|null $note */
         $note = $this->e()->getNote();
         $this->{__METHOD__} = $note ? df_tag('p', ['class' => 'note'], df_tag('span', [], $note)) : '';
     }
     return $this->{__METHOD__};
 }
Example #9
0
/**
 * 2016-10-24
 * @param string $content
 * @param bool $condition
 * @param string $tag
 * @param string|array(string => string|string[]|int|null) $attributes [optional]
 * @param bool $multiline [optional]
 * @return string
 */
function df_tag_if($content, $condition, $tag, $attributes = [], $multiline = null)
{
    return !$condition ? $content : df_tag($tag, $attributes, $content, $multiline);
}
Example #10
0
 /**
  * @param int|string $value
  * @param string $label
  * @return string
  */
 private function renderOptionTag($value, $label)
 {
     /** @var array(string => string) $attributes */
     $attributes = ['value' => $value, 'label' => $label];
     if ($value === $this->getSelected()) {
         $attributes['selected'] = 'selected';
     }
     return df_tag('option', $attributes, $label);
 }
Example #11
0
 /**
  * @param string $item
  * @return string
  */
 private function renderItem($item)
 {
     return df_tag('li', $this->getAttributesForItem(), $item);
 }
Example #12
0
 /**
  * 2016-05-30
  * 2016-06-07
  * 'id' => $this->getId() нужно для совместимости с 2.0.6,
  * иначе там сбой в выражении inputs = $(idTo).up(this._config.levels_up)
  * https://mail.google.com/mail/u/0/#search/maged%40wrapco.com.au/15510135c446afdb
  * @override
  * @see \Magento\Framework\Data\Form\Element\AbstractElement::getElementHtml()
  * @return string
  */
 public function getElementHtml()
 {
     return df_tag('div', ['class' => 'df-url', 'id' => $this->getId()], $this->thirdPartyLocalhost() ? $this->messageForThirdPartyLocalhost() : $this->messageForOthers());
 }
Example #13
0
File: js.php Project: mage2pro/core
/**
 * 2015-10-26
 * https://mage2.pro/t/145
 * 2016-11-28
 * Пример: https://github.com/magento/magento2/blob/2.1.2/app/code/Magento/Theme/view/frontend/templates/js/cookie.phtml#L16-L26
 * Такой синтаксис, в отличие от @see df_x_magento_init_att(),
 * не позволяет нам иметь в JavaScript объект-элемент DOM вторым параметром:
 * https://github.com/magento/magento2/blob/2.1.2/lib/web/mage/apply/main.js#L69-L70
 * @used-by df_fe_init()
 * @param string|object $module
 * @param string $script
 * @param array(string => mixed) $params
 * @return string
 */
function df_x_magento_init($module, $script, array $params = [])
{
    return df_tag('script', ['type' => 'text/x-magento-init'], df_json_encode(['*' => [df_cc_path(df_module_name($module), $script) => $params]]));
}
Example #14
0
/**
 * 2016-08-29
 * @return string
 */
function df_caller_mh()
{
    return df_tag('b', [], df_caller_ml(1));
}