Доброго времени суток!
Создал форму с изменением веса полей.
Но она не работает так, как надо:
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);
}
?>
В чем может быть проблема?
Скиршот формы прилагаю.
Заранее спасибо.
Вложение | Размер |
---|---|
![]() | 88.51 КБ |
Комментарии
А не проще использовать уже имеющийся модуль draggableviews?
Если есть какая-то специфика, то в draggableviews можно подсмотреть много интересного кода )
У меня есть view-таблица, нужно позволить пользователям менять порядок столбцов в этой таблице.
Можно ли решить задачу с помощью draggableviews?
Да.
Скачал, поставил.
Насколько я понял, нужно поменять стиль представления. А я уже использую модуль datatables. Есть выход из положения?
С datatables не знаком.
http://thedesignspace.net/MT2archives/000666.html#.TjfUQGFkXNg - мануал по настройке.
В этой строке ошибка. Нужно
Похоже, что draggableviews не совместимо с datatables.