Views - Fatal error get_human_name()

Главные вкладки

Аватар пользователя Tesey Tesey 23 июля 2011 в 10:12

Установлены:

  • Drupal 7.4
  • CTools 7.x-1.0-beta1 (из всего набора включен только Chaos tools)
  • Views 7.x-3.0-rc1 (включены Views и Views UI)

При попытке добавить новый view "Image Gallery" из шаблона (Структура -> Views -> Add view from template -> Image Gallery) выдает:

Fatal error: Call to a member function get_human_name() on a non-object in Z:\home\localhost\abdru\sites\all\modules\views\plugins\export_ui\views_ui.class.php on line 387

Есть идеи?

P.S. Гугл отсылает к проблемам с get_human_name(), которые уже пофиксены в версии 7.x-3.0-rc1

Комментарии

Аватар пользователя Tesey Tesey 23 июля 2011 в 10:39

Размышления вслух,
В этой ветке http://drupal.org/node/1180566 два патча:

  • 1180566.patch - не включен в последнюю стабильную версию Views 7.x-3.0-rc1, однако, с ним ошибка не появляется;
  • 1168168.patch - включен в версию 7.x-3.0-rc1, но выдаёт ошибку «Call to...views_ui.class.php on line 387»
Аватар пользователя Tesey Tesey 23 июля 2011 в 13:07

Ответ найден в dev-версии Views от 2011-Jul-21,
Следует позаимствовать несколько строк кода из views-7.x-3.x-dev, а именно из файла views\plugins\export_ui\views_ui.class.php - функция views_ui_clone_form должна выглядеть так:

<?phpfunction views_ui_clone_form($form, &$form_state) {
  $counter = 1;
  
  if (!isset($form_state['item'])) {
    $view = views_get_view($form_state['original name']);
  }
  else {
    $view = $form_state['item'];
  }
  do {
    if (empty($form_state['item']->is_template)) {
      $name = format_plural($counter, 'Clone of', 'Clone count of') . ' ' . $view->get_human_name();
    }
    else {
      $name = $view->get_human_name();
      if ($counter > 1) {
        $name .= ' ' . $counter;
      }
    }
    $counter++;
    $machine_name = preg_replace('/[^a-z0-9_]+/', '_', drupal_strtolower($name));
  } while (ctools_export_crud_load($form_state['plugin']['schema'], $machine_name));?>