function apachesolr_environment_edit_form in Apache Solr Search 6.3
Same name and namespace in other branches
- 8 apachesolr.admin.inc \apachesolr_environment_edit_form()
- 7 apachesolr.admin.inc \apachesolr_environment_edit_form()
Form builder for adding/editing a Solr environment used as a menu callback.
2 string references to 'apachesolr_environment_edit_form'
- apachesolr_environment_settings_page in ./
apachesolr.admin.inc - apachesolr_menu in ./
apachesolr.module - Implements hook_menu().
File
- ./
apachesolr.admin.inc, line 102 - Administrative pages for the Apache Solr framework.
Code
function apachesolr_environment_edit_form(&$form_state, $environment = NULL) {
if (empty($environment)) {
$environment = array();
}
$environment += array(
'env_id' => '',
'name' => '',
'url' => '',
'service_class' => '',
'conf' => array(
'service_class_conf' => '',
),
);
$form['url'] = array(
'#type' => 'textfield',
'#title' => t('Solr server URL'),
'#default_value' => $environment['url'],
'#description' => t('Example: http://localhost:8983/solr'),
'#required' => TRUE,
);
$is_default = $environment['env_id'] == apachesolr_default_environment();
$form['make_default'] = array(
'#type' => 'checkbox',
'#title' => t('Make this Solr search environment the default'),
'#default_value' => $is_default,
'#disabled' => $is_default,
);
$form['name'] = array(
'#type' => 'textfield',
'#title' => t('Description'),
'#default_value' => $environment['name'],
'#required' => TRUE,
);
if (empty($environment['env_id'])) {
$key = '#default_value';
$disabled = FALSE;
}
else {
$key = '#value';
$disabled = TRUE;
}
$form['env_id'] = array(
'#type' => 'textfield',
'#title' => t('Environment id'),
'#description' => '',
'#required' => TRUE,
'#size' => 30,
'#maxlength' => 32,
'#disabled' => $disabled,
// Cannot change it once set.
$key => $environment['env_id'],
'#description' => t('A unique machine-readable identifier for the search page configuration. It must only contain lowercase letters, numbers, and underscores.'),
);
$form['service_class'] = array(
'#type' => 'value',
'#value' => $environment['service_class'],
);
// D6 needs more info to load the class
$service_class_info = isset($environment['conf']['service_class_info']) ? $environment['conf']['service_class_info'] : NULL;
$form['service_class_info'] = array(
'#type' => 'value',
'#value' => $service_class_info,
);
$form['conf'] = array(
'#tree' => TRUE,
);
$form['conf']['apachesolr_read_only'] = array(
'#type' => 'radios',
'#title' => t('Index write access'),
'#default_value' => isset($environment['conf']['apachesolr_read_only']) ? $environment['conf']['apachesolr_read_only'] : APACHESOLR_READ_WRITE,
'#options' => array(
APACHESOLR_READ_WRITE => t('Read and write (normal)'),
APACHESOLR_READ_ONLY => t('Read only'),
),
'#description' => t('<em>Read only</em> stops this site from sending updates to this search environment. Useful for development sites.'),
);
$form['actions']['save'] = array(
'#type' => 'submit',
'#redirect' => 'admin/settings/apachesolr/settings',
'#validate' => array(
'apachesolr_environment_edit_validate',
),
'#submit' => array(
'apachesolr_environment_edit_submit',
),
'#value' => t('Save'),
);
$form['actions']['save_edit'] = array(
'#type' => 'submit',
'#validate' => array(
'apachesolr_environment_edit_validate',
),
'#submit' => array(
'apachesolr_environment_edit_submit',
),
'#value' => t('Save and edit'),
);
$form['actions']['test'] = array(
'#type' => 'submit',
'#validate' => array(
'apachesolr_environment_edit_validate',
),
'#submit' => array(
'apachesolr_environment_edit_test_submit',
),
'#value' => t('Test connection'),
);
if (!empty($environment['env_id']) && !$is_default) {
$form['actions']['delete'] = array(
'#type' => 'submit',
'#submit' => array(
'apachesolr_environment_edit_delete_submit',
),
'#value' => t('Delete'),
);
}
$referer_uri = referer_uri();
$request_uri = request_uri();
// In case the API did not remove the query params, we remove it forcefully
$request_uri = strtok($request_uri, '?');
// Remove leading slash
$request_uri = ltrim($request_uri, '/');
$request_uri = url($request_uri, array(
'absolute' => 'true',
));
// Redirect cancel link to the search pages if the referer is the same page or
// when there is no referer.
if ($referer_uri == $request_uri || empty($referer_uri)) {
$cancel_link = url('admin/settings/apachesolr/settings', array(
'absolute' => TRUE,
));
}
else {
$cancel_link = $referer_uri;
}
$form['actions']['cancel'] = array(
'#type' => 'markup',
'#value' => l(t('Cancel'), $cancel_link),
);
return $form;
}