function _typogrify_settings in Typogrify 7
Same name and namespace in other branches
- 5 typogrify.module \_typogrify_settings()
- 6 typogrify.module \_typogrify_settings()
Typogrify filter settings form.
Parameters
array $form: The prepopulated form array of the filter administration form.
array $form_state: The state of the (entire) configuration form.
object $filter: The filter object containing the current settings for the given format, in $filter->settings.
integer $format: ID if the input format to generate a settings form for.
Return value
array Form API array containing our settings form.
1 string reference to '_typogrify_settings'
- typogrify_filter_info in ./
typogrify.module - Implements hook_filter_info().
File
- ./
typogrify.module, line 249 - Typogrify: Brings typographical refinemnts to drupal
Code
function _typogrify_settings($form, &$form_state, $filter, $format, $defaults, $filters) {
module_load_include('class.php', 'typogrify');
module_load_include('php', 'typogrify', 'unicode-conversion');
module_load_include('php', 'typogrify', 'smartypants');
// Add our default settings to the array if they are not present.
$filter->settings += array(
'smartypants_enabled' => 1,
'smartypants_hyphens' => 2,
'space_hyphens' => 0,
'wrap_ampersand' => 1,
'widont_enabled' => 1,
'space_to_nbsp' => 1,
'wrap_abbr' => 0,
'wrap_caps' => 1,
'wrap_initial_quotes' => 1,
'hyphenate_shy' => 0,
'wrap_numbers' => 0,
'ligatures' => array(),
'arrows' => array(),
'fractions' => array(),
'quotes' => array(),
);
$form = array();
$form['help'] = array(
'#type' => 'markup',
'#value' => '<p>' . t("Enable the following typographic refinements:") . '</p>',
);
// Smartypants settings.
$form['smartypants_enabled'] = array(
'#type' => 'checkbox',
'#title' => t('Use typographers quotation marks and dashes (!smartylink)', array(
'!smartylink' => l('SmartyPants', 'http://daringfireball.net/projects/smartypants/'),
)),
'#default_value' => $filter->settings['smartypants_enabled'],
);
// Smartypants hyphenation settings.
// Uses the same values as the parse attributes in the SmartyPants
// function (@see SmartyPants in smartypants.php)
$form['smartypants_hyphens'] = array(
'#type' => 'select',
'#title' => t('Hyphenation settings for SmartyPants'),
'#default_value' => $filter->settings['smartypants_hyphens'],
'#options' => array(
1 => t('“--” for em-dashes; no en-dash support'),
3 => t('“--” for em-dashes; “---” for en-dashes'),
2 => t('“---” for em-dashes; “--” for en-dashes'),
),
);
// Replace space_hyphens with em-dash.
$form['space_hyphens'] = array(
'#type' => 'checkbox',
'#title' => t('Replace stand-alone dashes (normal dashes between whitespace) em-dashes.'),
'#description' => t('" - " will turn into " — ".'),
'#default_value' => $filter->settings['space_hyphens'],
);
// Remove widows settings.
$form['widont_enabled'] = array(
'#type' => 'checkbox',
'#title' => t('Remove widows'),
'#default_value' => $filter->settings['widont_enabled'],
);
// Remove widows settings.
$form['hyphenate_shy'] = array(
'#type' => 'checkbox',
'#title' => t('Replace <code>=</code> with <code>&shy;</code>'),
'#description' => t('Words may be broken at the hyphenation points marked by “=”.'),
'#default_value' => $filter->settings['hyphenate_shy'],
);
// Replace normal spaces with non-breaking spaces before "double punctuation
// marks". This is especially useful in french.
$form['space_to_nbsp'] = array(
'#type' => 'checkbox',
'#title' => t('Replace normal spaces with non-breaking spaces before "double punctuation marks" !marks.', array(
'!marks' => '(<code>!?:;</code>)',
)),
'#description' => t('This is especially useful for french.'),
'#default_value' => $filter->settings['space_to_nbsp'],
);
// Wrap caps settings.
$form['wrap_caps'] = array(
'#type' => 'checkbox',
'#title' => t('Wrap caps'),
'#default_value' => $filter->settings['wrap_caps'],
);
// Wrap ampersand settings.
$form['wrap_ampersand'] = array(
'#type' => 'checkbox',
'#title' => t('Wrap ampersands'),
'#default_value' => $filter->settings['wrap_ampersand'],
);
$form['wrap_abbr'] = array(
'#type' => 'select',
'#title' => t('Thin space in abbreviations'),
'#description' => t('Wraps abbreviations with !span and inserts space after the dots.', array(
'!span' => '<code><span class="abbr">…</span></code>',
)),
'#default_value' => $filter->settings['wrap_abbr'],
'#options' => array(
0 => t('Do nothing'),
4 => t('Insert no space'),
1 => t('“U+202F“ Narrow no-break space'),
2 => t('“U+2009“ Thin space'),
3 => t('span with margin-left: 0.167em'),
),
);
$form['wrap_numbers'] = array(
'#type' => 'select',
'#title' => t('Digit grouping in numbers'),
'#description' => t('Wraps numbers with !span and inserts thin space for digit grouping.', array(
'!span' => '<code><span class="number">…</span></code>',
)),
'#default_value' => $filter->settings['wrap_numbers'],
'#options' => array(
0 => t('Do nothing'),
1 => t('“U+202F“ Narrow no-break space'),
2 => t('“U+2009“ Thin space'),
3 => t('span with margin-left: 0.167em'),
4 => t('just wrap numbers'),
),
);
// Wrap initial quotes settings.
$form['wrap_initial_quotes'] = array(
'#type' => 'checkbox',
'#title' => t('Wrap quotation marks'),
'#default_value' => $filter->settings['wrap_initial_quotes'],
);
// Ligature conversion settings.
$ligature_options = array();
foreach (unicode_conversion_map('ligature') as $ascii => $unicode) {
$ligature_options[$ascii] = t('Convert <code>@ascii</code> to !unicode', array(
'@ascii' => $ascii,
'!unicode' => $unicode,
));
}
$form['ligatures'] = array(
'#type' => 'checkboxes',
'#title' => t('Ligatures'),
'#options' => $ligature_options,
'#default_value' => $filter->settings['ligatures'],
);
// Arrow conversion settings.
$arrow_options = array();
foreach (unicode_conversion_map('arrow') as $ascii => $unicode) {
$arrow_options[$ascii] = t('Convert <code>@ascii</code> to !unicode', array(
'@ascii' => _typogrify_unquote($ascii),
'!unicode' => $unicode,
));
}
$form['arrows'] = array(
'#type' => 'checkboxes',
'#title' => t('Arrows'),
'#options' => $arrow_options,
'#default_value' => $filter->settings['arrows'],
);
// Fraction conversion settings.
$fraction_options = array();
foreach (unicode_conversion_map('fraction') as $ascii => $unicode) {
$fraction_options[$ascii] = t('Convert <code>@ascii</code> to !unicode', array(
'@ascii' => $ascii,
'!unicode' => $unicode,
));
}
$form['fractions'] = array(
'#type' => 'checkboxes',
'#title' => t('Fractions'),
'#options' => $fraction_options,
'#default_value' => $filter->settings['fractions'],
);
// Quotes conversion settings.
$quotes_options = array();
foreach (unicode_conversion_map('quotes') as $quotes => $unicode) {
$quotes_options[$quotes] = t('Convert <code>@ascii</code> to !unicode', array(
'@ascii' => _typogrify_unquote($quotes),
'!unicode' => $unicode,
));
}
$form['quotes'] = array(
'#type' => 'checkboxes',
'#title' => t('Quotes'),
'#options' => $quotes_options,
'#default_value' => $filter->settings['quotes'],
);
// Version Information Settings.
$version_strings = array();
$version_strings[] = t('SmartyPants PHP version: !version', array(
'!version' => l(SMARTYPANTS_PHP_VERSION, 'http://www.michelf.com/projects/php-smartypants/'),
));
$version_strings[] = t('PHP Typogrify Version: !version', array(
'!version' => l(PHP_TYPOGRIFY_VERSION, 'http://blog.hamstu.com/'),
));
$form['info']['typogrify_status'] = array(
'#type' => 'item',
'#title' => t('Versions'),
'#markup' => theme('item_list', array(
'items' => $version_strings,
)),
);
return $form;
}