Index: wysiwyg.admin.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/wysiwyg/wysiwyg.admin.inc,v retrieving revision 1.29 diff -u -p -r1.29 wysiwyg.admin.inc --- wysiwyg.admin.inc 6 Jan 2011 00:03:13 -0000 1.29 +++ wysiwyg.admin.inc 14 Jan 2011 20:02:45 -0000 @@ -333,8 +333,14 @@ function wysiwyg_profile_form_submit($fo unset($values['submit'], $values['form_id'], $values['op'], $values['form_token'], $values['form_build_id']); // Insert new profile data. - db_query("UPDATE {wysiwyg} SET settings = :settings WHERE format = :format", array(':settings' => serialize($values), ':format' => $format)); - cache_clear_all('wysiwyg_profiles', 'cache'); + db_merge('wysiwyg') + ->key(array('format' => $format)) + ->fields(array( + 'editor' => $editor, + 'settings' => serialize($values), + )) + ->execute(); + ctools_export_load_object_reset('wysiwyg'); drupal_set_message(t('Wysiwyg profile for %format has been saved.', array('%format' => $input_format))); @@ -468,9 +474,13 @@ function wysiwyg_profile_overview($form, $form['formats'][$id]['edit'] = array( '#markup' => l(t('Edit'), "admin/config/content/wysiwyg/profile/$id/edit"), ); - $form['formats'][$id]['delete'] = array( - '#markup' => l(t('Delete'), "admin/config/content/wysiwyg/profile/$id/delete"), - ); + + if ($profiles[$id]->type != t('Default')) { + $overridden = $profiles[$id]->type == t('Overridden'); + $form['formats'][$id]['delete'] = array( + '#markup' => l($overridden ? t('Revert') : t('Delete'), "admin/config/content/wysiwyg/profile/$id/delete"), + ); + } } } @@ -518,7 +528,7 @@ function wysiwyg_profile_overview_submit )) ->execute(); } - cache_clear_all('wysiwyg_profiles', 'cache'); + ctools_export_load_object_reset('wysiwyg'); } /** @@ -544,7 +554,7 @@ function wysiwyg_profile_delete_confirm( function wysiwyg_profile_delete_confirm_submit($form, &$form_state) { $format = $form_state['values']['format']; wysiwyg_profile_delete($format->format); - cache_clear_all('wysiwyg_profiles', 'cache'); + ctools_export_load_object_reset('wysiwyg'); drupal_set_message(t('Wysiwyg profile for %name has been deleted.', array('%name' => $format->name))); $form_state['redirect'] = 'admin/config/content/wysiwyg'; Index: wysiwyg.info =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/wysiwyg/wysiwyg.info,v retrieving revision 1.6 diff -u -p -r1.6 wysiwyg.info --- wysiwyg.info 6 Jan 2011 00:06:18 -0000 1.6 +++ wysiwyg.info 14 Jan 2011 20:02:45 -0000 @@ -3,7 +3,7 @@ name = Wysiwyg description = Allows users to edit contents with client-side editors. package = User interface ;dependencies[] = libraries -;dependencies[] = ctools +dependencies[] = ctools ;dependencies[] = popups ;dependencies[] = debug core = 7.x Index: wysiwyg.install =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/wysiwyg/wysiwyg.install,v retrieving revision 1.12 diff -u -p -r1.12 wysiwyg.install --- wysiwyg.install 6 Jan 2011 01:49:52 -0000 1.12 +++ wysiwyg.install 14 Jan 2011 20:02:45 -0000 @@ -35,6 +35,19 @@ function wysiwyg_schema() { 'columns' => array('format' => 'format'), ), ), + 'export' => array( + 'key' => 'format', + 'key name' => 'Format', + 'primary key' => 'format', + 'identifier' => 'profile', + 'default hook' => 'default_wysiwyg_profile', + 'api' => array( + 'owner' => 'wysiwyg', + 'api' => 'default_wysiwyg_profiles', + 'minimum_version' => 1, + 'current_version' => 1, + ), + ), ); $schema['wysiwyg_user'] = array( 'description' => 'Stores user preferences for wysiwyg profiles.', Index: wysiwyg.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/wysiwyg/wysiwyg.module,v retrieving revision 1.51 diff -u -p -r1.51 wysiwyg.module --- wysiwyg.module 6 Jan 2011 01:43:26 -0000 1.51 +++ wysiwyg.module 14 Jan 2011 20:02:45 -0000 @@ -590,18 +590,13 @@ function wysiwyg_get_css() { * Load profile for a given input format. */ function wysiwyg_profile_load($format) { - static $profiles; + ctools_include('export'); - if ($cached = cache_get('wysiwyg_profiles')) { - $profiles = $cached->data; - } - else { - $result = db_query('SELECT format, editor, settings FROM {wysiwyg}'); - foreach ($result as $profile) { - $profile->settings = unserialize($profile->settings); - $profiles[$profile->format] = $profile; - } - cache_set('wysiwyg_profiles', $profiles); + $result = ctools_export_load_object('wysiwyg', 'names', array($format)); + foreach ($result as $profile) { + $profile = clone $profile; // lest we unserialize ctools' cache + $profile->settings = unserialize($profile->settings); + $profiles[$profile->format] = $profile; } return (isset($profiles[$format]) ? $profiles[$format] : FALSE); @@ -611,16 +606,14 @@ function wysiwyg_profile_load($format) { * Load all profiles. */ function wysiwyg_profile_load_all() { - static $profiles; + ctools_include('export'); - if (!isset($profiles)) { - $profiles = array(); - $result = db_query('SELECT format, editor, settings FROM {wysiwyg}'); - foreach ($result as $profile) { - $profile->settings = unserialize($profile->settings); - $profiles[$profile->format] = $profile; - } - } + $result = ctools_export_load_object('wysiwyg'); + foreach ($result as $profile) { + $profile = clone $profile; // lest we unserialize ctools' cache + $profile->settings = unserialize($profile->settings); + $profiles[$profile->format] = $profile; + } return $profiles; }