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; } /**