? flexifilter-admin-list.tpl.php
? flexifilter_ui.patch
Index: flexifilter.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/flexifilter/flexifilter.admin.inc,v
retrieving revision 1.13
diff -u -p -r1.13 flexifilter.admin.inc
--- flexifilter.admin.inc 24 Jan 2008 01:57:10 -0000 1.13
+++ flexifilter.admin.inc 29 Jan 2008 01:05:20 -0000
@@ -4,10 +4,24 @@
/**
* Generates the form for the admin overview page
*/
-function flexifilter_filter_list_form() {
+function flexifilter_admin_list_form($form_state) {
drupal_set_title("Flexifilters overview");
$path = drupal_get_path('module', 'flexifilter') .'/flexifilter.css';
drupal_add_css($path, 'module', 'all', FALSE);
+ if (isset($form_state['values']['enabled'])) {
+ foreach ($form_state['values']['enabled']['statuses'] as $fid => $value) {
+ if ($value == 'disabled') {
+ db_query('UPDATE {flexifilters} SET enabled = 0 WHERE fid = %d', $fid);
+ }
+ }
+ }
+ if (isset($form_state['values']['disabled'])) {
+ foreach ($form_state['values']['disabled']['statuses'] as $fid => $value) {
+ if ($value == 'enabled') {
+ db_query('UPDATE {flexifilters} SET enabled = 1 WHERE fid = %d', $fid);
+ }
+ }
+ }
$form = array();
$form['enabled_header'] = array(
@@ -21,7 +35,23 @@ function flexifilter_filter_list_form()
'#suffix' => t('If a flexifilter is disabled, then it cannot be used within input formats, although it can be used within other flexifilters.') .'
',
);
$form['disabled'] = flexifilter_filter_list_form_table(FALSE);
-
+
+ $form['submit'] = array(
+ '#type' => 'submit',
+ '#value' => t('Save'),
+ '#ahah' => array(
+ 'path' => 'admin/build/flexifilters/js/list_form',
+ 'selector' => '.flexifilter-status',
+ 'wrapper' => 'flexifilter-admin-list-form',
+ 'event' => 'change',
+ 'effect' => 'none',
+ 'method' => 'replace',
+ ),
+ );
+ if (!isset($form_state['values'])) {
+ $form['#theme'] = 'flexifilter_filter_admin_form';
+ }
+
return $form;
}
@@ -29,39 +59,63 @@ function flexifilter_filter_list_form()
* Helper function for flexifilter_filter_list_form. Returns the table for the overview page.
*
* @param $enabled
- * Is TRUE if we're theming the currently enabled filters.s
+ * Is TRUE if we're theming the currently enabled filters.
*/
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'));
- $rows = array();
- $filters = flexifilter_get_filters();
+ $options = array();
+ if (flexifilter_get_number_enabled_filters() < FLEXIFILTER_MAX_FILTERS) {
+ $options['enabled'] = t('Enabled');
+ }
+ $options['disabled'] = t('Disabled');
+ $rowinfo = array();
+ $statuses = array();
+ $filters = flexifilter_get_filters();
foreach ($filters as $id => $filter) {
if ($filter['enabled'] == $enabled) {
- $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());
- if ($show_disable_link) {
- $row[] = l(t('Disable'), 'admin/build/flexifilters/'. $id .'/disable', array(), drupal_get_destination());
- }
- else if ($show_enable_link) {
- $row[] = l(t('Enable'), 'admin/build/flexifilters/'. $id .'/enable', array(), drupal_get_destination());
- }
- else {
- $row[] = '';
- }
- $rows[] = $row;
+ $rowinfo[] = array(
+ 'label' => $filter['label'],
+ 'description' => $filter['description'],
+ 'edit' => l(t('Edit'), 'admin/build/flexifilters/'. $id .'/edit', array(), drupal_get_destination()),
+ );
+ $statuses[$filter['id']] = array(
+ '#type' => 'select',
+ '#title' => t('Status'),
+ '#options' => $options,
+ '#default_value' => ($enabled? 'enabled' : 'disabled'),
+ '#attributes' => array('class' => 'flexifilter-status'),
+ );
}
}
- if (count($rows)) {
- return array('#value' => theme('table', $header, $rows, array('class' => 'flexifilters-list')));
+ if (count($rowinfo)) {
+ return array('#theme' => 'flexifilter_admin_list', '#rowinfo' => $rowinfo, 'statuses' => $statuses, '#tree' => TRUE);
}
else {
- return array('#value' => t('None.'));
+ return array('#value' => ''. t('There are no @status filters at this moment.', array('@status' => ($enabled? t('enabled') : t('disabled')))) .'
');
}
}
+function template_preprocess_flexifilter_admin_list(&$variables) {
+ $variables['table'] = array();
+ foreach ($variables['form']['#rowinfo'] as $index => $rowinfo) {
+ $variables['table'][$index] = $rowinfo;
+ }
+ $count = 0;
+ foreach (element_children($variables['form']['statuses']) as $key) {
+ unset($variables['form']['statuses'][$key]['#title']);
+ $variables['table'][$count]['status'] = drupal_render($variables['form']['statuses'][$key]);
+ $count++;
+ }
+ $variables['label'] = t('Label');
+ $variables['description'] = t('Description');
+ $variables['status'] = t('Status');
+}
+
+function theme_flexifilter_filter_admin_form($form) {
+ unset($form['submit']);
+ return '