diff --git wysiwyg.module wysiwyg.module index 18d1f27..ce73758 100644 --- wysiwyg.module +++ wysiwyg.module @@ -628,42 +628,41 @@ function wysiwyg_profile_load_all() { */ function wysiwyg_user($type, &$edit, &$user, $category = NULL) { if ($type == 'form' && $category == 'account') { - // @todo http://drupal.org/node/322433 - $profile = new stdClass; - if (isset($profile->settings['user_choose']) && $profile->settings['user_choose']) { - $form['wysiwyg'] = array( - '#type' => 'fieldset', - '#title' => t('Wysiwyg Editor settings'), - '#weight' => 10, - '#collapsible' => TRUE, - '#collapsed' => TRUE, - ); - $form['wysiwyg']['wysiwyg_status'] = array( - '#type' => 'checkbox', - '#title' => t('Enable editor by default'), - '#default_value' => isset($user->wysiwyg_status) ? $user->wysiwyg_status : (isset($profile->settings['default']) ? $profile->settings['default'] : FALSE), - '#return_value' => 1, - '#description' => t('If enabled, rich-text editing is enabled by default in textarea fields.'), + $user_formats = filter_formats(); + $options = array(); + $options_default = array(); + foreach ($wysiwyg_profile_load_all() as $format => $profile) { + // Only show formats a user has access to use that allow user_choose. + if (!empty($profile->settings['user_choose']) && isset($user_formats[$format])) { + $options[$format] = $user_formats[$format]->name; + if (wysiwyg_user_get_status($profile)) { + $options_default[] = $format; + } + } + } + if (!empty($options)) { + $form['wysiwyg_status'] = array( + '#type' => 'checkboxes', + '#title' => t('Input formats enabled for rich-text editing'), + '#default_value' => $options_default, + '#options' => $options, ); return array('wysiwyg' => $form); } } - elseif ($type == 'validate' && isset($edit['wysiwyg_status'])) { - return array('wysiwyg_status' => $edit['wysiwyg_status']); - } } function wysiwyg_user_get_status($profile) { global $user; - if (!empty($profile->settings['user_choose']) && isset($user->wysiwyg_status)) { - $status = $user->wysiwyg_status; + if (!empty($profile->settings['user_choose']) && isset($user->wysiwyg_status[$profile->format])) { + $status = $user->wysiwyg_status[$profile->format]; } else { $status = isset($profile->settings['default']) ? $profile->settings['default'] : TRUE; } - return $status; + return (bool) $status; } /**