Index: flexifilter.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/flexifilter/flexifilter.admin.inc,v
retrieving revision 1.13
diff -u -r1.13 flexifilter.admin.inc
--- flexifilter.admin.inc 24 Jan 2008 01:57:10 -0000 1.13
+++ flexifilter.admin.inc 25 Jan 2008 04:50:31 -0000
@@ -34,7 +34,7 @@
function flexifilter_filter_list_form_table($enabled) {
$show_disable_link = $enabled;
$show_enable_link = !$enabled && flexifilter_get_number_enabled_filters() < FLEXIFILTER_MAX_FILTERS;
- $header = array(t('Label'), t('Description'), t('Edit'), t('Delete'), t($enabled ? 'Disable' : 'Enable'));
+ $header = array(t('Label'), t('Description'), t('Edit'), t('Delete'), t('Preview'), t($enabled ? 'Disable' : 'Enable'));
$rows = array();
$filters = flexifilter_get_filters();
foreach ($filters as $id => $filter) {
@@ -42,6 +42,7 @@
$row = array($filter['label'], $filter['description']);
$row[] = l(t('Edit'), 'admin/build/flexifilters/'. $id .'/edit', array(), drupal_get_destination());
$row[] = l(t('Delete'), 'admin/build/flexifilters/'. $id .'/delete', array(), drupal_get_destination());
+ $row[] = l(t('Preview'), 'admin/build/flexifilters/'. $id .'/preview', array(), drupal_get_destination());
if ($show_disable_link) {
$row[] = l(t('Disable'), 'admin/build/flexifilters/'. $id .'/disable', array(), drupal_get_destination());
}
@@ -847,4 +848,73 @@
}
flexifilter_install_flexifilters('flexifilter', $to_be_saved);
$form_state['redirect'] = 'admin/build/flexifilters';
+}
+
+function flexifilter_filter_preview_form($form_state, $flexifilter) {
+ if (!isset($form_state['storage']['preview'])) {
+ $form['input'] = array(
+ '#type' => 'textarea',
+ '#title' => t('Text to test'),
+ '#default_value' => '',
+ );
+ $form['flexifilter'] = array(
+ '#type' => 'value',
+ '#value' => $flexifilter,
+ );
+ $form['submit'] = array(
+ '#type' => 'submit',
+ '#value' => t('Preview'),
+ );
+ }
+ else {
+ $form['input'] = array(
+ '#type' => 'textarea',
+ '#title' => t('Original text'),
+ '#default_value' => $form_state['storage']['input'],
+ );
+ $form['submit'] = array(
+ '#type' => 'submit',
+ '#value' => t('Preview'),
+ );
+ $form['prepare'] = array(
+ '#type' => 'fieldset',
+ '#title' => t('Prepare step'),
+ '#collapsible' => TRUE,
+ );
+ $form['process'] = array(
+ '#type' => 'fieldset',
+ '#title' => t('Process step'),
+ '#collapsible' => TRUE,
+ );
+ $form['flexifilter'] = array(
+ '#type' => 'value',
+ '#value' => $flexifilter,
+ );
+ foreach ($form_state['storage']['data'] as $key => $data) {
+ $settings = '';
+ foreach ($data['settings'] as $key => $value) {
+ $settings .= ''. check_plain($key) .': '. check_plain(''. $value) ."
";
+ }
+ $form[$data['step']][$key . uniqid()] = array(
+ '#type' => 'textarea',
+ '#title' => ucfirst($data['type']) .': '. $data['class'],
+ '#description' => t('Settings:
!settings', array('!settings' => $settings)),
+ '#default_value' => $data['value'],
+ '#attributes' => array('readonly' => 'readonly'),
+ );
+ }
+ }
+ return $form;
+}
+
+function flexifilter_filter_preview_form_submit($form, &$form_state) {
+ variable_set('flexifilter_preview', TRUE);
+ variable_set('flexifilter_preview_text', array());
+ $form_state['storage']['input'] = $form_state['values']['input'];
+ $text = flexifilter_invoke_components($form_state['values']['flexifilter']['components'], 'prepare', $form_state['values']['input']);
+ flexifilter_invoke_components($form_state['values']['flexifilter']['components'], 'process', $text);
+ $form_state['storage']['preview'] = TRUE;
+ $form_state['storage']['data'] = (variable_get('flexifilter_preview_text', array()));
+ variable_del('flexifilter_preview');
+ variable_del('flexifilter_preview_text');
}
\ No newline at end of file
Index: flexifilter.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/flexifilter/flexifilter.module,v
retrieving revision 1.14
diff -u -r1.14 flexifilter.module
--- flexifilter.module 23 Jan 2008 22:43:16 -0000 1.14
+++ flexifilter.module 25 Jan 2008 04:49:49 -0000
@@ -71,6 +71,13 @@
'page arguments' => array('flexifilter_filter_export_form', 3),
'file' => 'flexifilter.admin.inc',
);
+ $items['admin/build/flexifilters/%flexifilter/preview'] = array(
+ 'title' => t('Preview'),
+ 'type' => MENU_LOCAL_TASK,
+ 'page callback' => 'drupal_get_form',
+ 'page arguments' => array('flexifilter_filter_preview_form', 3),
+ 'file' => 'flexifilter.admin.inc',
+ );
$items['admin/build/flexifilters/%flexifilter/delete'] = array(
'title' => t('Delete'),
'type' => MENU_CALLBACK,
@@ -215,7 +222,14 @@
* operations that the component doesn't support, it will return $text.
*/
function flexifilter_invoke_component($component, $op, $settings = array(), $text = '') {
- return call_user_func_array($component['callback'], array_merge($component['callback_arguments'], array($op, $settings, $text)));
+ $text = call_user_func_array($component['callback'], array_merge($component['callback_arguments'], array($op, $settings, $text)));
+ $_flexifilter_preview = variable_get('flexifilter_preview', FALSE);
+ if ($_flexifilter_preview) {
+ $_flexifilter_preview_text = variable_get('flexifilter_preview_text', array());
+ $_flexifilter_preview_text[] = array('value' => $text, 'type' => 'component', 'step' => $op, 'class' => $component['label'], 'settings' => $settings);
+ variable_set('flexifilter_preview_text', $_flexifilter_preview_text);
+ }
+ return $text;
}
/**