shogodev / argilla

Argilla is a production CMS based on the Yii Framework. Created by Shogo.RU team.
http://argilla.ru/
29 stars 16 forks source link

В бекенде не работает изменение позиции элемента меню #210

Closed FajeSu closed 8 years ago

FajeSu commented 8 years ago

В файле /protected/extensions/onflyedit/OnFlyEditField.php в строке 128 сейчас указывается поле position, а нужно получать класс элемента меню, как это происходило раньше в файле /protected/modules/menu/components/grid/BFrontendMenuGridPositionColumn.php в строке 39

Может надо так написать?

'attribute' => get_class($data['model']),

И в файле /protected/modules/menu/components/grid/BFrontendMenuGridPositionColumn.php метод prepareFieldData() вообще удалить, раз он не используется?

FajeSu commented 8 years ago

скорее всего вот так

в файле /protected/extensions/onflyedit/OnFlyEditField.php вернуть метод prepareFieldData():

protected function renderDataCellContent($row, $data)
{
  $htmlOptions = CMap::mergeArray(
    array(
      'data-grid-id' => $this->gridId,
      'data-grid-update' => $this->gridUpdate
    ),
    $this->elementOptions
  );

  $primaryKey = $data instanceof BActiveRecord ? $data->getPrimaryKey() : $data['id'];

  Yii::app()->controller->widget('OnFlyWidget', array(
    'type' => empty($this->dropDown) ? OnFlyWidget::TYPE_INPUT : OnFlyWidget::TYPE_DROPDOWN,
    'ajaxUrl' => $this->ajaxUrl,
    'attribute' => $this->prepareFieldData(),   /* <----- */  
    'primaryKey' => $primaryKey,
    'value' => $data[$this->name],
    'items' => $this->dropDown,
    'htmlOptions' => $htmlOptions
  ));
}

/**
 * @param null|string $name
 *
 * @return string
 */
protected function prepareFieldData($name = null)
{
  if( $name === null )
    $name = $this->name;

  return $name;
}

в файле /protected/modules/menu/components/grid/BFrontendMenuGridPositionColumn.php изменить метод:

/**
 * @param null $name
 *
 * @return string
 */
protected function prepareFieldData($name = null)
{
  if( $this->temporaryData instanceof BFrontendMenuGridAdapter )
    $name = $this->temporaryData->getType();

  return parent::prepareFieldData($name);
}
tatarinov commented 8 years ago

Исправлено в https://github.com/shogodev/argilla/commit/0b541d8c2d855b500c70af346282f740bee84d02