Модераторы: 2man
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Таблица с изменением веса записей 
V
    Опции темы
oriGN
  Дата 27.1.2010, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 27.1.2010

Репутация: нет
Всего: нет



 smile Бьюсь уже полдня, хочу сделать таблицу с возможностью изменения последовательностей записей. Т.е. хочется получить аналог списка пунктов меню, только без подпунктов, т.е. все записи находятся в одной группе, смена последовательности записей делается перетаскиванием строк таблицы.

Нашел описание данной системы api.drupal.ru, просмотрел различные модули, где использована эта функция drupal_add_tabledrag().
По примеру функции одного модуля сделал для своих данных, все проверил, данные выдаются функциями однотипные, но у моей таблицы так и не появляется этого крестика за который можно перетащить запись. 
Кто делал подобные вещи, подскажите, мож там какая особенность.

формирование формы с данными
Код

function provider_list() {

  $result = db_query("SELECT * FROM {provider} ORDER BY ordering ASC");
  while ($row = db_fetch_object($result)) {
    $form[$row->prid]['title'] = array('#value' => $row->title);
    $form[$row->prid]['prid'] = array('#value' => $row->prid);
    $form[$row->prid]['edit'] = array('#value' => l(t('edit'),'admin/settings/provider/edit/'.$row->prid));
    $form[$row->prid]['delete'] = array('#value' => l(t('delete'),'admin/settings/provider/delete/'.$row->prid));
    $form[$row->prid]['published'] = array('#type' => 'checkbox',  '#default_value' => $row->published);
    $form[$row->prid]['weight'] = array('#type' => 'weight', '#delta' => 10, '#default_value' => $row->ordering);
  }
  $form['submit'] = array('#type' => 'submit', '#value' => t('Save'));

}


темизация 
Код

function theme_provider_list($form) {
  $header = array(t('Title'), t('Id'), t('weight'), t('published'), t('Operations'));
  drupal_add_tabledrag('provider-list', 'order', 'sibling', 'prov-weight');
  $rows = array();
  foreach (element_children($form) as $key) {

    if (isset($form[$key]['title'])) {
     $provider = &$form[$key];

        $provider['#attributes']['class'] = 'prov-weight';

        $row = array();
        $row[] = drupal_render($provider['title']);
        $row[] = drupal_render($provider['prid']);
        $row[] = drupal_render($provider['weight']);
        $row[] = drupal_render($provider['published']);
        $row[] = drupal_render($provider['edit']) .' ' . drupal_render($form[$key]['delete']);
        $rows[] = array('data' => $row, 'class' => 'draggable');
    }
  }

  $output = theme('table', $header, $rows, array('id' => 'provider-list')) . drupal_render($form);
  return $output;
}


PM MAIL   Вверх
KuZyagroup
Дата 28.1.2010, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


magento solution
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 16.4.2007
Где: Kiev

Репутация: 1
Всего: 4



1. Проверьте подгружен ли block.js если нет drupal_add_js(drupal_get_path('module', 'block') .'/block.js');
2. Проверьте подгружен ли tabledrag.js если нет drupal_add_js('misc/tabledrag.js');
3. provider-list должен быть id таблицы, так ли это.
4. prov-weight должен быть классом select'a

П.С. Дайте ссылку на страницу с выводом страницы
PM MAIL   Вверх
oriGN
Дата 28.1.2010, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 27.1.2010

Репутация: нет
Всего: нет



Цитата

4. prov-weight должен быть классом select'a


Проблема была здесь, не туда присваивал класс.
Но и это не не помогло, я не знаю с чем это связано, но Drupal по каким-то причинам не делал этот список для функции с _list smile, может это только у меня, но стоило сделать копию функции и привязать к другому пункту меню, как все сразу заработало  smile . 

Цитата

1. Проверьте подгружен ли block.js если нет drupal_add_js(drupal_get_path('module', 'block') .'/block.js');

Скрипт не понадобился, все заработало без него.

Спасибо.

Это сообщение отредактировал(а) oriGN - 28.1.2010, 17:50
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Drupal | Следующая тема »


 




[ Время генерации скрипта: 0.0417 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.