|
@@ -76,13 +76,6 @@ function tripal_fields_layout_form_field_ui_display_overview_form_alter(&$form,
|
|
|
'#description' => t('Please provide a human readable label for this
|
|
|
panel. This is the name that will appear to site visitors.')
|
|
|
);
|
|
|
- $form['te_add_panels']['message'] = array(
|
|
|
- '#type' => 'textarea',
|
|
|
- '#title' => 'Empty Message',
|
|
|
- '#rows' => 2,
|
|
|
- '#description' => t('When the panel has no fields the following
|
|
|
- message will be shown in the form above.')
|
|
|
- );
|
|
|
$form['te_add_panels']['add_button'] = array(
|
|
|
'#type' => 'submit',
|
|
|
'#value' => 'Add Panel',
|
|
@@ -92,7 +85,7 @@ function tripal_fields_layout_form_field_ui_display_overview_form_alter(&$form,
|
|
|
// Layout Panels
|
|
|
$form['te_layout_panels'] = array(
|
|
|
'#type' => 'fieldset',
|
|
|
- '#title' => 'Order Panels',
|
|
|
+ '#title' => 'Arrange Panels',
|
|
|
'#collapsible' => TRUE,
|
|
|
'#collapsed' => TRUE,
|
|
|
'#group' => 'overview_vert_tabs'
|
|
@@ -103,12 +96,15 @@ function tripal_fields_layout_form_field_ui_display_overview_form_alter(&$form,
|
|
|
);
|
|
|
$form['te_layout_panels']['panel_items']['#tree'] = TRUE;
|
|
|
// Get available panels
|
|
|
- $result = db_query('SELECT panel_id, name, label, weight FROM {tripal_panels} ORDER BY weight ASC');
|
|
|
+ $result = db_select('tripal_panels', 'tp')
|
|
|
+ ->fields('tp', array('panel_id', 'name', 'label', 'weight'))
|
|
|
+ ->condition('name', 'te_base', '<>')
|
|
|
+ ->condition('name', 'te_disabled', '<>')
|
|
|
+ ->orderby('weight', 'asc')
|
|
|
+ ->execute();
|
|
|
+ $has_panel = FALSE;
|
|
|
foreach ($result as $item) {
|
|
|
$form['te_layout_panels']['panel_items'][$item->panel_id] = array(
|
|
|
- 'name' => array(
|
|
|
- '#markup' => check_plain($item->name),
|
|
|
- ),
|
|
|
'label' => array(
|
|
|
'#markup' => check_plain($item->label),
|
|
|
),
|
|
@@ -119,18 +115,29 @@ function tripal_fields_layout_form_field_ui_display_overview_form_alter(&$form,
|
|
|
'#delta' => 50,
|
|
|
'#title_display' => 'invisible',
|
|
|
),
|
|
|
+ 'remove' => array(
|
|
|
+ '#type' => 'button',
|
|
|
+ '#value' => 'Remove',
|
|
|
+ '#name' => "arrange-panel-remove-$item->panel_id",
|
|
|
+ )
|
|
|
);
|
|
|
+ $has_panel = TRUE;
|
|
|
+ }
|
|
|
+ if ($has_panel) {
|
|
|
+ $form['te_layout_panels']['panel_items']['#theme_wrappers'] = array('tripal_fields_layout_form_draggable_panel_table');
|
|
|
+ // Now we add our submit button, for submitting the form results.
|
|
|
+ //
|
|
|
+ // The 'actions' wrapper used here isn't strictly necessary for tabledrag,
|
|
|
+ // but is included as a Form API recommended practice.
|
|
|
+ $form['te_layout_panels']['add_button'] = array(
|
|
|
+ '#type' => 'submit',
|
|
|
+ '#value' => 'Save Panel Order',
|
|
|
+ '#name' => 'order-panel-submit'
|
|
|
+ );
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ $form['te_layout_panels']['instructions']['#markup'] = t('You need to add some panel first.');
|
|
|
}
|
|
|
- $form['te_layout_panels']['panel_items']['#theme_wrappers'] = array('tripal_fields_layout_form_draggable_panel_table');
|
|
|
- // Now we add our submit button, for submitting the form results.
|
|
|
- //
|
|
|
- // The 'actions' wrapper used here isn't strictly necessary for tabledrag,
|
|
|
- // but is included as a Form API recommended practice.
|
|
|
- $form['te_layout_panels']['add_button'] = array(
|
|
|
- '#type' => 'submit',
|
|
|
- '#value' => 'Save Panel Order',
|
|
|
- '#name' => 'order-panel-submit'
|
|
|
- );
|
|
|
|
|
|
// Configure Panels
|
|
|
$form['te_configure_panels'] = array(
|
|
@@ -223,6 +230,7 @@ function _tripal_fields_layout_check_default_field_panels($bundle) {
|
|
|
$te_base = db_select('tripal_panels', 'tp')
|
|
|
->fields('tp')
|
|
|
->condition('name', 'te_base')
|
|
|
+ ->condition('bundle_id', $bundle->id)
|
|
|
->execute()
|
|
|
->fetchObject();
|
|
|
if (!$te_base) {
|
|
@@ -243,6 +251,7 @@ function _tripal_fields_layout_check_default_field_panels($bundle) {
|
|
|
$te_base = db_select('tripal_panels', 'tp')
|
|
|
->fields('tp')
|
|
|
->condition('name', 'te_disabled')
|
|
|
+ ->condition('bundle_id', $bundle->id)
|
|
|
->execute()
|
|
|
->fetchObject();
|
|
|
if (!$te_base) {
|
|
@@ -293,9 +302,7 @@ function tripal_fields_layout_field_ui_row_region($row) {
|
|
|
if (!$panel) {
|
|
|
$panel = $default_panel;
|
|
|
}
|
|
|
-
|
|
|
- // See if there is a record in the tripal_panel_fields for this field.
|
|
|
-
|
|
|
+ dpm(array($row['human_name']['#markup'] => $row,$panel => 'panel'));
|
|
|
return $panel;
|
|
|
|
|
|
}
|
|
@@ -332,6 +339,17 @@ function tripal_fields_layout_field_ui_validate($form, &$form_state) {
|
|
|
else if ($form_state ['clicked_button'] ['#name'] == 'op') {
|
|
|
|
|
|
}
|
|
|
+ else if (preg_match('/^arrange-panel-remove-/', $form_state ['clicked_button'] ['#name'])) {
|
|
|
+ $table = $form['te_layout_panels']['panel_items'];
|
|
|
+ $button = $form_state ['triggering_element'] ['#name'];
|
|
|
+ $panel_id = str_replace ('arrange-panel-remove-', '', $button);
|
|
|
+ db_delete('tripal_panels')
|
|
|
+ ->condition ('panel_id', $panel_id)
|
|
|
+ ->execute();
|
|
|
+ db_delete('tripal_panel_fields')
|
|
|
+ ->condition ('panel_id', $panel_id)
|
|
|
+ ->execute();
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
/**
|
|
@@ -346,9 +364,8 @@ function tripal_fields_layout_field_ui_submit($form, &$form_state) {
|
|
|
$bundle_id = $form_state['build_info']['args'][1]->id;
|
|
|
$name = $form_state['values']['panel_name'];
|
|
|
$label = $form_state['values']['panel_label'];
|
|
|
- $message = $form_state['values']['message'];
|
|
|
$settings = array(
|
|
|
- 'message' => $message,
|
|
|
+ 'message' => 'Place field in this panel.',
|
|
|
);
|
|
|
db_insert('tripal_panels')
|
|
|
->fields(array(
|
|
@@ -436,23 +453,23 @@ function theme_tripal_fields_layout_form_draggable_panel_table ($variables) {
|
|
|
// This could also have been done during the form declaration by adding
|
|
|
// '#attributes' => array('class' => 'example-item-weight'),
|
|
|
// directy to the 'weight' element in tabledrag_example_simple_form().
|
|
|
- $element[$id]['weight']['#attributes']['class'] = array('panel-item-weight');
|
|
|
+ $element[$id]['weight']['#attributes']['class'] = array('tripal_panel-item-weight');
|
|
|
|
|
|
- $element[$id]['name']['#printed'] = FALSE;
|
|
|
$element[$id]['label']['#printed'] = FALSE;
|
|
|
$element[$id]['weight']['#printed'] = FALSE;
|
|
|
+ $element[$id]['remove']['#printed'] = FALSE;
|
|
|
// We are now ready to add each element of our $form data to the $rows
|
|
|
// array, so that they end up as individual table cells when rendered
|
|
|
// in the final table. We run each element through the drupal_render()
|
|
|
// function to generate the final html markup for that element.
|
|
|
$rows[] = array(
|
|
|
'data' => array(
|
|
|
- // Add our 'name' column.
|
|
|
- drupal_render($element[$id]['name']),
|
|
|
// Add our 'description' column.
|
|
|
drupal_render($element[$id]['label']),
|
|
|
// Add our 'weight' column.
|
|
|
drupal_render($element[$id]['weight']),
|
|
|
+ // Add remove column
|
|
|
+ drupal_render($element[$id]['remove'])
|
|
|
),
|
|
|
// To support the tabledrag behaviour, we need to assign each row of the
|
|
|
// table a class attribute of 'draggable'. This will add the 'draggable'
|
|
@@ -464,20 +481,23 @@ function theme_tripal_fields_layout_form_draggable_panel_table ($variables) {
|
|
|
|
|
|
// We now define the table header values. Ensure that the 'header' count
|
|
|
// matches the final column count for your table.
|
|
|
- $header = array(t('Name'), t('Label'), t('Weight'));
|
|
|
+ $header = array(t('Label'), t('Weight'), t('Action'));
|
|
|
|
|
|
// We also need to pass the drupal_add_tabledrag() function an id which will
|
|
|
// be used to identify the <table> element containing our tabledrag form.
|
|
|
// Because an element's 'id' should be unique on a page, make sure the value
|
|
|
// you select is NOT the same as the form ID used in your form declaration.
|
|
|
- $table_id = 'panel-items-table';
|
|
|
+ $table_id = 'tripal_panel-arrange_panel_table';
|
|
|
|
|
|
// We can render our tabledrag table for output.
|
|
|
- $output = theme('table', array(
|
|
|
- 'header' => $header,
|
|
|
- 'rows' => $rows,
|
|
|
- 'attributes' => array('id' => $table_id),
|
|
|
- ));
|
|
|
+ $output = '';
|
|
|
+ if (count($rows) > 0) {
|
|
|
+ $output = theme('table', array(
|
|
|
+ 'header' => $header,
|
|
|
+ 'rows' => $rows,
|
|
|
+ 'attributes' => array('id' => $table_id),
|
|
|
+ ));
|
|
|
+ }
|
|
|
|
|
|
// And then render any remaining form elements (such as our submit button).
|
|
|
//$output .= drupal_render_children($element);
|
|
@@ -490,7 +510,7 @@ function theme_tripal_fields_layout_form_draggable_panel_table ($variables) {
|
|
|
// - the $action to be performed on our form items ('order'),
|
|
|
// - a string describing where $action should be applied ('siblings'),
|
|
|
// - and the class of the element containing our 'weight' element.
|
|
|
- drupal_add_tabledrag($table_id, 'order', 'sibling', 'panel-item-weight');
|
|
|
+ drupal_add_tabledrag($table_id, 'order', 'sibling', 'tripal_panel-item-weight');
|
|
|
|
|
|
return $output;
|
|
|
}
|