');
$breadcrumb[] = l('Administration', 'admin');
$breadcrumb[] = l('Tripal', 'admin/tripal');
$breadcrumb[] = l('Chado', 'admin/tripal/chado');
$breadcrumb[] = l('Analysis', 'admin/tripal/chado/tripal_analysis');
drupal_set_breadcrumb($breadcrumb);
// Add the view
$view = views_embed_view('tripal_analysis_admin_analyses','default');
if (isset($view)) {
$output .= $view;
}
else {
$output .= '
The Analysis module uses primarily views to provide an '
. 'administrative interface. Currently one or more views needed for this '
. 'administrative interface are disabled. Click each of the following links to '
. 'enable the pertinent views:
';
$output .= '';
$output .= '- '.l('Analysis View', 'admin/tripal/chado/tripal_analysis/views/analyses/enable').'
';
$output .= '
';
}
return $output;
}
/**
* Administration page callbacks for the Tripal Analysis module
*
* We have defined a hook_get_settings() function. When a sub-module
* is enabled, we'll look for this function to provide a form for the
* administrative setting.
*
* @return
* A form API array describing an administrative form
*
* @ingroup tripal_analysis
*/
function tripal_analysis_admin() {
// Create a new administrative form. We'll add main functions to the form
// first (Sync, Reindex, Clean, Taxonify). Thereafter, any sub-module that
// has a setting will be added.
$form = array();
// If your module is using the Chado Node: Title & Path API to allow custom titles
// for your node type then you need to add the configuration form for this functionality.
$details = array(
'module' => 'tripal_analysis', // the name of the MODULE implementing the content type
'content_type' => 'chado_analysis', // the name of the content type
// An array of options to use under "Page Titles"
// the key should be the token and the value should be the human-readable option
'options' => array(
'[analysis.name]' => 'Analysis Name Only',
// there should always be one options matching the unique constraint.
'[analysis.name] ([analysis.sourcename]) [analysis.program] version [analysis.programversion]' => 'Unique Contraint: Includes the name, source and program name/version'
),
// the token indicating the unique constraint in the options array
'unique_option' => '[analysis.name] ([analysis.sourcename]) [analysis.program] version [analysis.programversion]'
);
// This call adds the configuration form to your current form
// This sub-form handles it's own validation & submit
chado_add_admin_form_set_title($form, $form_state, $details);
// Add sub-module settings. Pull all sub-module information from
// {tripal_analysis} table
$sql = "SELECT modulename FROM {tripal_analysis}";
$result = db_query($sql);
$counter = 0; //keep track of the number of sub-modules
while ($data = $result->fetchObject()) {
// Check if the hook_get_settings() function is already defined.
$func = $data->modulename . "_get_settings";
$functions = get_defined_functions();
$settings;
foreach ($functions['user'] as $function) {
if ($function == $func) {
$settings = $func();
}
}
// Add sub-module's specific settings to the administrative view
if ($settings) {
// Define a fieldset for the sub-module
$form["field$counter"] = array(
'#type' => 'fieldset',
'#title' => "$settings->title",
'#collapsible' => TRUE
);
$form["field$counter"]["$settings->title"] = $settings->form;
}
$counter++;
}
if($counter == 0) {
$form['nothing'] = array(
'#markup' => t('There are currently no settings to configure. However, analysis extension modules may add items here when they are installed.')
);
}
return system_settings_form($form);
}
/**
* Validate the administrative form
* @todo Stephen: Why is validate used rather then submit?
*
* @param $form
* The form API array of the form to be validated
* @form_state
* The user submitted values
*
* @ingroup tripal_analysis
*/
function tripal_analysis_admin_validate($form, &$form_state) {
}