1.20.x path.admin.inc | path_patterns_settings_form($form) |
Form builder; Configure the URL alias pattern settings.
See also
path_patterns_settings_form_validate()
path_patterns_settings_form_submit()
Related topics
File
- modules/
path/ path.admin.inc, line 461 - Admin page callbacks for the Path module.
Code
function path_patterns_settings_form($form) {
module_load_include('inc', 'path');
$config = config('path.settings');
$form['#config'] = 'path.settings';
$form['verbose'] = array(
'#type' => 'checkbox',
'#title' => t('Verbose'),
'#default_value' => $config->get('verbose'),
'#description' => t('Display URL alias pattern changes (except during bulk updates).'),
);
$form['separator'] = array(
'#type' => 'textfield',
'#title' => t('Separator'),
'#size' => 1,
'#maxlength' => 1,
'#default_value' => $config->get('separator'),
'#description' => t('Character used to separate words in titles. This will replace any spaces and punctuation characters. Using a space or + character can cause unexpected results.'),
);
$form['case'] = array(
'#type' => 'radios',
'#title' => t('Character case'),
'#default_value' => $config->get('case'),
'#options' => array(
PATH_CASE_LEAVE_ASIS => t('Leave case the same as source token values.'),
PATH_CASE_LOWER => t('Change to lower case'),
),
);
$max_length = _path_get_schema_alias_maxlength();
$form['max_length'] = array(
'#type' => 'number',
'#title' => t('Maximum URL alias length'),
'#default_value' => $config->get('max_length'),
'#step' => 1,
'#min' => 1,
'#max' => $max_length,
'#description' => t('Maximum length of URL aliases to generate. 100 is the recommended length. @max is the maximum possible length.', array('@max' => $max_length)),
);
$form['max_component_length'] = array(
'#type' => 'number',
'#title' => t('Maximum component length'),
'#default_value' => $config->get('max_component_length'),
'#step' => 1,
'#min' => 1,
'#max' => $max_length,
'#description' => t('Maximum text length of any component in the URL alias (e.g., <code>[title]</code>). 100 is the recommended length. @max is the maximum possible length.', array('@max' => $max_length)),
);
$description = t('The action taken when an item already has a URL alias.');
$delete_label = t('Create a new URL alias. Delete the old URL alias.');
if (module_exists('redirect')) {
$auto_redirect = config_get('redirect.settings', 'auto_redirect');
$description .= ' ' . t('The <a href="!url">Redirect module settings</a> affect whether a redirect is created when a URL alias is deleted.', array('!url' => url('admin/config/urls/redirect/settings')));
if ($auto_redirect) {
$delete_label = t('Create a new URL alias. Replace the old URL alias with a redirect.');
}
}
else {
$description .= ' ' . t('Considering enabling the Redirect module on the <a href="!url">modules page</a> to create redirects when your aliases change.', array('!url' => url('admin/modules')));
}
$form['update_action'] = array(
'#type' => 'radios',
'#title' => t('Update action'),
'#default_value' => $config->get('update_action'),
'#options' => array(
PATH_UPDATE_ACTION_DELETE => $delete_label,
PATH_UPDATE_ACTION_LEAVE => t('Create a new URL alias. Leave the existing URL alias functioning.'),
PATH_UPDATE_ACTION_NO_NEW => t('Do nothing. Leave the old URL alias intact.'),
),
'#description' => $description,
);
$form['transliterate'] = array(
'#type' => 'checkbox',
'#title' => t('Transliterate prior to creating URL aliases'),
'#default_value' => $config->get('transliterate'),
'#description' => t('When the new URL alias includes certain characters (such as those with accents) should these characters be converted into the US-ASCII alphabet?'),
);
$form['reduce_ascii'] = array(
'#type' => 'checkbox',
'#title' => t('Reduce URL alias characters to letters and numbers'),
'#default_value' => $config->get('reduce_ascii'),
'#description' => t('Filters the new URL alias to only letters and numbers found in the ASCII-96 set.'),
);
$form['ignore_words'] = array(
'#type' => 'textarea',
'#title' => t('Strings to Remove'),
'#default_value' => $config->get('ignore_words'),
'#description' => t('Words to strip out of the URL alias, separated by commas. Do not use this to remove punctuation - use the punctuation section below.'),
'#wysiwyg' => FALSE,
);
$form['punctuation'] = array(
'#type' => 'fieldset',
'#title' => t('Punctuation'),
'#collapsible' => TRUE,
'#collapsed' => TRUE,
);
$punctuation = path_punctuation_chars();
foreach ($punctuation as $name => $details) {
$details['default'] = PATH_PUNCTUATION_REMOVE;
if ($details['value'] == $config->get('separator')) {
$details['default'] = PATH_PUNCTUATION_REPLACE;
}
$form['punctuation']['punctuation_' . $name] = array(
'#type' => 'select',
'#title' => $details['name'] . ' (<code>' . check_plain($details['value']) . '</code>)',
'#default_value' => ($config->get('punctuation_' . $name)) ? $config->get('punctuation_' . $name) : $details['default'],
'#options' => array(
PATH_PUNCTUATION_REMOVE => t('Remove'),
PATH_PUNCTUATION_REPLACE => t('Replace by separator'),
PATH_PUNCTUATION_DO_NOTHING => t('No action (do not replace)'),
),
);
}
return system_settings_form($form);
}