'fieldset', '#weight' => -20, '#title' => t('General settings'), '#collapsible' => TRUE, '#collapsed' => TRUE, ); $form['general']['pathauto_verbose'] = array( '#type' => 'checkbox', '#title' => t('Verbose'), '#default_value' => variable_get('pathauto_verbose', FALSE), '#description' => t('Display alias changes (except during bulk updates).'), ); $form['general']['pathauto_separator'] = array( '#type' => 'textfield', '#title' => t('Separator'), '#size' => 1, '#maxlength' => 1, '#default_value' => variable_get('pathauto_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['general']['pathauto_case'] = array( '#type' => 'radios', '#title' => t('Character case'), '#default_value' => variable_get('pathauto_case', 1), '#options' => array(t('Leave case the same as source token values.'), t('Change to lower case')), ); $max_length = _pathauto_get_schema_alias_maxlength(); $form['general']['pathauto_max_length'] = array( '#type' => 'textfield', '#title' => t('Maximum alias length'), '#size' => 3, '#maxlength' => 3, '#default_value' => variable_get('pathauto_max_length', 100), '#min_value' => 1, '#max_value' => $max_length, '#description' => t('Maximum length of aliases to generate. 100 is recommended. See Pathauto help for details.', array('@pathauto-help' => url('admin/help/pathauto'))), '#element_validate' => array('_pathauto_validate_numeric_element'), ); $form['general']['pathauto_max_component_length'] = array( '#type' => 'textfield', '#title' => t('Maximum component length'), '#size' => 3, '#maxlength' => 3, '#default_value' => variable_get('pathauto_max_component_length', 100), '#min_value' => 1, '#max_value' => $max_length, '#description' => t('Maximum text length of any component in the alias (e.g., [title]). 100 is recommended. See Pathauto help for details.', array('@pathauto-help' => url('admin/help/pathauto'))), '#element_validate' => array('_pathauto_validate_numeric_element'), ); $form['general']['pathauto_max_bulk_update'] = array( '#type' => 'textfield', '#title' => t('Maximum number of objects to alias in a bulk update'), '#size' => 4, '#maxlength' => 4, '#default_value' => variable_get('pathauto_max_bulk_update', 50), '#min_value' => 0, '#description' => t('Maximum number of objects of a given type which should be aliased during a bulk update. The default is 50 and the recommended number depends on the speed of your server. If bulk updates "time out" or result in a "white screen" then reduce the number.'), '#element_validate' => array('_pathauto_validate_numeric_element'), ); $actions = array( t('Do nothing. Leave the old alias intact.'), t('Create a new alias. Leave the existing alias functioning.'), t('Create a new alias. Delete the old alias.')); if (function_exists('path_redirect_save')) { $actions[] = t('Create a new alias. Redirect from old alias.'); } elseif (variable_get('pathauto_update_action', 2) == 3) { // the redirect action is selected, but path_redirect is not enabled // let's set the variable back to the default variable_set('pathauto_update_action', 2); } $form['general']['pathauto_update_action'] = array( '#type' => 'radios', '#title' => t('Update action'), '#default_value' => variable_get('pathauto_update_action', 2), '#options' => $actions, '#description' => t('What should pathauto do when updating an existing content item which already has an alias?'), ); $form['general']['pathauto_transliterate'] = array( '#type' => 'checkbox', '#title' => t('Transliterate prior to creating alias'), '#default_value' => variable_get('pathauto_transliterate', FALSE), '#description' => t('When a pattern includes certain characters (such as those with accents) should Pathauto attempt to transliterate them into the ASCII-96 alphabet?'), '#disabled' => !_pathauto_get_i18n_file(), ); $i18n_locations = _pathauto_get_i18n_possible_files(); foreach ($i18n_locations as $key => $file) { $i18n_locations[$key] = check_plain($file); if (file_exists($file)) { $i18n_locations[$key] .= ' - ' . t('File exists') . ''; } else { $i18n_locations[$key] .= ' - ' . t('Does not exist') . ''; } } $form['general']['pathauto_transliterate']['#description'] .= ' ' . t('Transliteration is determined by the i18n-ascii.txt file in the following possible locations, in order of precedence: !locations', array('!locations' => theme('item_list', $i18n_locations))); if ($form['general']['pathauto_transliterate']['#disabled']) { // Perhaps they've removed the file, set the transliterate option to FALSE variable_set('pathauto_transliterate', FALSE); } $form['general']['pathauto_reduce_ascii'] = array( '#type' => 'checkbox', '#title' => t('Reduce strings to letters and numbers from ASCII-96'), '#default_value' => variable_get('pathauto_reduce_ascii', FALSE), '#description' => t('Filters the new alias to only letters and numbers found in the ASCII-96 set.'), ); // Default words to ignore $ignore_words = array( 'a', 'an', 'as', 'at', 'before', 'but', 'by', 'for', 'from', 'is', 'in', 'into', 'like', 'of', 'off', 'on', 'onto', 'per', 'since', 'than', 'the', 'this', 'that', 'to', 'up', 'via', 'with', ); $form['general']['pathauto_ignore_words'] = array( '#type' => 'textarea', '#title' => t('Strings to Remove'), '#default_value' => variable_get('pathauto_ignore_words', implode(',', $ignore_words)), '#description' => t('Words to strip out of the URL alias, separated by commas. Do not place punctuation in here and do not use WYSIWYG editors on this field.'), '#wysiwyg' => FALSE, ); $form['punctuation'] = array( '#type' => 'fieldset', '#weight' => -10, '#title' => t('Punctuation settings'), '#collapsible' => TRUE, '#collapsed' => TRUE, ); $punctuation = pathauto_punctuation_chars(); foreach ($punctuation as $name => $details) { $details['default'] = 0; if ($details['value'] == variable_get('pathauto_separator', '-')) { $details['default'] = 1; } $form['punctuation']['pathauto_punctuation_'. $name] = array( '#type' => 'select', '#title' => $details['name'], '#default_value' => variable_get('pathauto_punctuation_'. $name, $details['default']), '#options' => array( '0' => t('Remove'), '1' => t('Replace by separator'), '2' => t('No action (do not replace)'), ), ); } // Call the hook on all modules - an array of 'settings' objects is returned $all_settings = module_invoke_all('pathauto', 'settings'); foreach ($all_settings as $settings) { $module = $settings->module; $patterndescr = $settings->patterndescr; $patterndefault = $settings->patterndefault; $groupheader = $settings->groupheader; $supportsfeeds = isset($settings->supportsfeeds) ? $settings->supportsfeeds : NULL; variable_set('pathauto_' . $module . '_supportsfeeds', $supportsfeeds); $form[$module] = array( '#type' => 'fieldset', '#title' => $groupheader, '#collapsible' => TRUE, '#collapsed' => TRUE, ); // Prompt for the default pattern for this module $variable = 'pathauto_' . $module . '_pattern'; $form[$module][$variable] = array( '#type' => 'textfield', '#title' => $patterndescr, '#default_value' => variable_get($variable, $patterndefault), '#size' => 65, '#maxlength' => 1280, '#element_validate' => array('_pathauto_validate_pattern_element'), '#after_build' => array('_pathauto_validate_pattern_element'), '#token_types' => array($settings->token_type), '#parents' => array($variable), ); // If the module supports a set of specialized patterns, set // them up here if (isset($settings->patternitems)) { foreach ($settings->patternitems as $itemname => $itemlabel) { $variable = 'pathauto_' . $module . '_' . $itemname . '_pattern'; $form[$module][$variable] = array( '#type' => 'textfield', '#title' => $itemlabel, '#default_value' => variable_get($variable, ''), '#size' => 65, '#maxlength' => 1280, '#element_validate' => array('_pathauto_validate_pattern_element'), '#after_build' => array('_pathauto_validate_pattern_element'), '#token_types' => array($settings->token_type), '#parents' => array($variable), ); } } // Display the user documentation of placeholders supported by // this module, as a description on the last pattern $form[$module]['token_help'] = array( '#title' => t('Replacement patterns'), '#type' => 'fieldset', '#collapsible' => TRUE, '#collapsed' => TRUE, '#description' => t('Use -raw replacements for text to avoid problems with HTML entities.'), ); // Use the token tree if available. $doc = theme('token_tree', array($settings->token_type), FALSE); if (empty($doc)) { $doc = "
' . t('Note: there is no confirmation. Be sure of your action before clicking the "Delete aliases now!" button.
You may want to make a backup of the database and/or the url_alias table prior to using this feature.') . '