brrocks28
5/31/2015 - 8:34 PM

theme table display

theme table display

http://alvinalexander.com/drupal/drupal-7-form-theme-table-module-example
<?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *  form.
 */
function add_notification_features_form($form, &$form_state) {
  $n_fid = arg(3);
  if (arg(2) == 'edit' && is_numeric($n_fid) && ($n_fid > 0)) {
    $query = db_select('notification_features', 'nf');
    $query->fields('nf', array('nf_id', 'nf_name', 'nf_description', 'min_version', 'created'))
        ->condition('nf_id', $n_fid);
    $stored_data = $query->execute()->fetchAll();
    $form['nf_id'] = array(
      '#type' => 'hidden',
      '#default_value' => $stored_data[0]->nf_id,
    );
  }
  $form['nf_name'] = array(
    '#type' => 'textfield',
    '#title' => t('Name'),
    '#size' => 60,
    '#required' => TRUE,
    '#default_value' => isset($stored_data[0]->nf_name) ? $stored_data[0]->nf_name : '',
  );
  $form['nf_description'] = array(
    '#type' => 'textarea',
    '#title' => t('Description'),
    '#attributes' => array('maxlength' => 180),
    '#required' => TRUE,
    '#default_value' => isset($stored_data[0]->nf_description) ? $stored_data[0]->nf_description : '',
  );

  $form['min_version'] = array(
    '#type' => 'textfield',
    '#title' => t('Min Version'),
    '#size' => 6,
    '#element_validate' => array('element_validate_number'),
    '#required' => TRUE,
    '#default_value' => isset($stored_data[0]->min_version) ? $stored_data[0]->min_version : '',
  );

  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => 'Save Feature',
  );

  $form['show_all'] = array(
    '#type' => 'markup',
    '#markup' => list_all_notification_features(),
  );

  return $form;
}

function add_notification_features_form_submit($form, &$form_state) {
  if (isset($form_state['values']['nf_id']) && !empty($form_state['values']['nf_id'])) {
    update_notification_features($form_state['values']['nf_id'], $form_state['values']['nf_name'], $form_state['values']['nf_description'], $form_state['values']['min_version']);
  }
  else {
    insert_notification_features($form_state['values']['nf_name'], $form_state['values']['nf_description'], $form_state['values']['min_version']);
  }
}

function list_all_notification_features() {
  $header = array(
    array('data' => '#', 'field' => 'nf_id','sort' => 'DESC'),
    array('data' => 'Name', 'field' => 'nf_name'),
    array('data' => 'Description', 'field' => 'nf_description'),
    array('data' => 'Min Version', 'field' => 'min_version'),
    array('data' => 'Created', 'field' => 'created'),
  );

  $query = db_select('notification_features', 'nf')->extend('PagerDefault')->extend('TableSort');
  $query->fields('nf', array('nf_id', 'nf_name', 'nf_description', 'min_version', 'created'))
      ->orderByHeader($header)        
      ->limit(3);
  $stored_data = $query->execute();
  $rows = array();
  foreach ($stored_data as $row) {
    $rows[] = array(
      l($row->nf_id, 'admin/add-notification-features/edit/' . $row->nf_id),
      l($row->nf_name, 'admin/add-notification-features/edit/' . $row->nf_id),
      $row->nf_description,
      $row->min_version,
      $row->created
    );
  }
  $output = theme('table', array('header' => $header,
    'rows' => $rows));
  # add the pager
  $output .= theme('pager');

  return $output;
}

function insert_notification_features($nf_name, $nf_description, $min_version) {
  db_insert('notification_features')
      ->fields(array(
        'nf_name' => $nf_name,
        'nf_description' => $nf_description,
        'min_version' => $min_version,
        'created' => time(),
      ))
      ->execute();
}

function update_notification_features($nf_id, $nf_name, $nf_description, $min_version) {
  db_update('notification_features')
      ->fields(array(
        'nf_name' => $nf_name,
        'nf_description' => $nf_description,
        'min_version' => $min_version,
        'created' => time(),
      ))
      ->condition('nf_id', $nf_id, '=')
      ->execute();
}