drupal_add_tabledrag проблемы [Была ошибка в коде]

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

Аватар пользователя vitg vitg 2 августа 2011 в 13:07

Доброго времени суток!

Создал форму с изменением веса полей.

Но она не работает так, как надо:
1) Не скрываются поля выбора веса
2) При отправке формы значения веса остаются прежними
3) Криво работает перетаскивание: жму на крестик, отпускаю, сообщение внизу не появлятся.

<?php

/*
 * Hook menu
 */
function views_user_sort_menu() {
  
$items['user/%user/edit/documents_colums_sort'] = array(
    
'title' => 'Сортировка полей в таблице документов',
    
'page callback' => 'drupal_get_form',
    
'page arguments' => array('views_user_sort_form'1),
    
'access arguments' => array('access content'),
    
'type' => MENU_LOCAL_TASK,
    
'weight' => 10,
  );
  return 
$items;
}

/*
 * Implementation of hook_theme
 */
function views_user_sort_theme(){
  return array(
    
'views_user_sort_form' => array(
      
'arguments' => array($form => array()),
    ),
  );
}

/**
 * Page callback
 */
function views_user_sort_form($user) {
  
$form = array('#tree' => TRUE);
  
//Получение параметров view
  
$view_name 'dogovora';
  
$view_display 'page_1';
  
  
//Получение объекта view
  
$view views_get_view($view_name);
  
//Получение дисплея по умолчанию для получения списка полей
  
$view_display $view->display['default'];
  
  foreach (
$view_display->display_options['fields'] as $key => $field) {
    
$form[$key] = array(
      
'name' => array('#value' => $field['label']),
      
'weight' => array('#type' => 'weight')
    );
  }
  
  
$form['submit'] = array(
    
'#type' => 'submit',
    
'#value' => t('Save'),
  );
  
  return 
$form;
}

function 

views_user_sort_form_submit($form, &$form_state) {
  
krumo($form_state);
  
//Запись изменений
  
global $user;

  

drupal_set_message ('Изменения сохранены');
}

/*
 * Темизация формы изменения веса поля
 * Без этого будет стандартный интерфейс выбора веса из комбобокса
 */
function theme_views_user_sort_form($form) {

  

$rows = array();
  foreach(
element_children($form) as $key) {
    if (isset(
$form[$key]['name'])) {
      
$field = &$form[$key];
      
$row = array();
      
      
$row[] = drupal_render($field['name']);
      
      
$field['#attributes']['class'] = 'views-row-weight';
      
$row[] = drupal_render($field['weight']);
      
$rows[] = array('data' => $row'class' => 'draggable');
    }
  }
  
  
drupal_add_tabledrag('views-user-sort''order''sibling''views-row-weight');
  
  
$header = array();
  
  
  return 
theme_table($header$rows, array('id' => 'views-user-sort')) . drupal_render($form);
}

?>

В чем может быть проблема?
Скиршот формы прилагаю.

Заранее спасибо.

ВложениеРазмер
Иконка изображения screen_tabledrag.png88.51 КБ

Комментарии

Аватар пользователя vitg vitg 2 августа 2011 в 13:50

У меня есть view-таблица, нужно позволить пользователям менять порядок столбцов в этой таблице.
Можно ли решить задачу с помощью draggableviews?

Аватар пользователя vitg vitg 2 августа 2011 в 14:27

Скачал, поставил.
Насколько я понял, нужно поменять стиль представления. А я уже использую модуль datatables. Есть выход из положения?

Аватар пользователя vitg vitg 4 августа 2011 в 10:01

"vitg" wrote:

$field['#attributes']['class'] = 'views-row-weight';

В этой строке ошибка. Нужно

 $field['weight']['#attributes']['class'] = 'views-row-weight';

Похоже, что draggableviews не совместимо с datatables.