# This patch file was generated by NetBeans IDE
# It uses platform neutral UTF-8 encoding and \n newlines.
--- lightbox2.admin.inc
+++ lightbox2.admin.inc
@@ -18,7 +18,10 @@
  * General configuration form for controlling the lightbox behaviour.
  */
 function lightbox2_general_settings_form() {
+  $form = array();
 
+  $form['#submit'][] = 'lightbox2_general_settings_form_submit';
+
   // Add the javascript which disables / enables form elements.
   drupal_add_js(drupal_get_path('module', 'lightbox2') .'/js/lightbox2.js', 'module');
 
@@ -525,6 +528,46 @@
     '#default_value' => variable_get('lightbox2_slidedown_speed', 0.6),
   );
 
+  // Define theme registry settings fieldset.
+  /* ----------------------------------- */
+  $form['advanced_options']['theme_registry_settings'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Theme registry settings'),
+    '#collapsible' => TRUE,
+    '#collapsed' => TRUE,
+  );
+
+  $form['advanced_options']['theme_registry_settings']['lightbox2_theme_lightshow'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Create Lightshow formatters'),
+    '#default_value' => variable_get('lightbox2_theme_lightshow', TRUE),
+  );
+
+  $form['advanced_options']['theme_registry_settings']['lightbox2_theme_lightframe'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Create Lightframe formatters'),
+    '#default_value' => variable_get('lightbox2_theme_lightframe', TRUE),
+  );
+
+  $form['advanced_options']['theme_registry_settings']['lightbox2_theme_compact'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Create Compact formatters'),
+    '#default_value' => variable_get('lightbox2_theme_compact', TRUE),
+  );
+
+  if (module_exists('imagecache')) {
+    $presets = array();
+    foreach(imagecache_presets() as $key => $preset) {
+      $presets[$key] = $preset['presetname'];
+    }
+    $form['advanced_options']['theme_registry_settings']['lightbox2_theme_fullsize_formats'] = array(
+      '#type' => 'checkboxes',
+      '#title' => t('Fullsize presets'),
+      '#default_value' => variable_get('lightbox2_theme_fullsize_formats', array_keys($presets)),
+      '#options' => $presets
+    );
+  }
+
   return system_settings_form($form);
 }
 
@@ -595,6 +638,10 @@
  * Submit function for the general configuration form.
  */
 function lightbox2_general_settings_form_submit($form, &$form_state) {
+  // clear preset cache
+  cache_clear_all('content_type_info', content_cache_tablename(), TRUE);
+  // rebuild theme registry
+  drupal_rebuild_theme_registry();
   cache_clear_all();
 }
 

 # This patch file was generated by NetBeans IDE
# It uses platform neutral UTF-8 encoding and \n newlines.
--- lightbox2.module
+++ lightbox2.module
@@ -730,6 +730,7 @@
  * formatters if emfield, emimage and/or emvideo modules exist.
  */
 function lightbox2_field_formatter_info() {
+  $settings = lightbox2_theme_registry_settings();
   $formatters = array();
   $lightbox = $slideshow = $iframe = array();
   // Handle imagefield and filefield images.
@@ -744,6 +745,7 @@
     else {
       $rules = _imagecache_get_presets();
     }
+    if ($settings['allow_lightframe']) {
     $iframe['imagefield__lightframe2__original__node'] = array(
       'label' => 'Lightbox2 iframe: original->node page',
       'field types' => array('image', 'filefield'),
@@ -752,70 +754,91 @@
       'label' => 'Lightbox2 iframe: link->node page',
       'field types' => array('image', 'filefield'),
     );
+    }
     foreach ($rules as $ruleid => $view_rule) {
       $lightbox['imagefield__lightbox2__original__'. $view_rule] = array(
         'label' => 'Lightbox2: original->'. $view_rule,
         'field types' => array('image', 'filefield'),
       );
+      if ($settings['allow_compact']) {
       $lightbox['imagefield__lightbox2_compact__original__'. $view_rule] = array(
         'label' => 'Lightbox2: original->'. $view_rule . ' compact',
         'field types' => array('image', 'filefield'),
       );
+      }
       $lightbox['imagefield__lightbox2__'. $view_rule .'__original'] = array(
         'label' => 'Lightbox2: '. $view_rule .'->original',
         'field types' => array('image', 'filefield'),
       );
+      if ($settings['allow_compact']) {
       $lightbox['imagefield__lightbox2_compact__'. $view_rule .'__original'] = array(
         'label' => 'Lightbox2: '. $view_rule .'->original compact',
         'field types' => array('image', 'filefield'),
       );
+      }
       $lightbox['imagefield__lightbox2__link__'. $view_rule] = array(
         'label' => 'Lightbox2: link->'. $view_rule,
         'field types' => array('image', 'filefield'),
       );
+      if ($settings['allow_lightshow']) {
       $slideshow['imagefield__lightshow2__original__'. $view_rule] = array(
         'label' => 'Lightbox2 slideshow: original->'. $view_rule,
         'field types' => array('image', 'filefield'),
       );
+        if ($settings['allow_compact']) {
       $slideshow['imagefield__lightshow2_compact__original__'. $view_rule] = array(
         'label' => 'Lightbox2 slideshow: original->'. $view_rule . ' compact',
         'field types' => array('image', 'filefield'),
       );
+        }
       $slideshow['imagefield__lightshow2__'. $view_rule .'__original'] = array(
         'label' => 'Lightbox2 slideshow: '. $view_rule .'->original',
         'field types' => array('image', 'filefield'),
       );
+        if ($settings['allow_compact']) {
       $slideshow['imagefield__lightshow2_compact__'. $view_rule .'__original'] = array(
         'label' => 'Lightbox2 slideshow: '. $view_rule .'->original compact',
         'field types' => array('image', 'filefield'),
       );
+        }
       $slideshow['imagefield__lightshow2__link__'. $view_rule] = array(
         'label' => 'Lightbox2 slideshow: link->'. $view_rule,
         'field types' => array('image', 'filefield'),
       );
+      }
+      if ($settings['allow_lightframe']) {
       $iframe['imagefield__lightframe2__'. $view_rule .'__node'] = array(
         'label' => 'Lightbox2 iframe: '. $view_rule .'->node page',
         'field types' => array('image', 'filefield'),
       );
-      foreach ($rules as $rid => $lightbox_rule) {
+      }
+      $fullsize_format = array_filter($settings['fullsize_formats']);
+      foreach ($fullsize_format as $preset_id) {
+        $lightbox_rule = $presets[$preset_id]['presetname'];
         $lightbox['imagefield__lightbox2__'. $view_rule .'__'. $lightbox_rule] = array(
           'label' => 'Lightbox2: '. $view_rule .'->'. $lightbox_rule,
           'field types' => array('image', 'filefield'),
         );
+        if ($settings['allow_compact']) {
         $lightbox['imagefield__lightbox2_compact__'. $view_rule .'__'. $lightbox_rule] = array(
           'label' => 'Lightbox2: '. $view_rule .'->'. $lightbox_rule . ' compact',
           'field types' => array('image', 'filefield'),
         );
+        }
+        if ($settings['allow_lightshow']) {
         $slideshow['imagefield__lightshow2__'. $view_rule .'__'. $lightbox_rule] = array(
           'label' => 'Lightbox2 slideshow: '. $view_rule .'->'. $lightbox_rule,
           'field types' => array('image', 'filefield'),
         );
+          if ($settings['allow_compact']) {
         $slideshow['imagefield__lightshow2_compact__'. $view_rule .'__'. $lightbox_rule] = array(
           'label' => 'Lightbox2 slideshow: '. $view_rule .'->'. $lightbox_rule . ' compact',
           'field types' => array('image', 'filefield'),
         );
       }
     }
+      }
+    }
     // Adding them now so they are in some sort of sensible order.
     $formatters = array_merge($lightbox, $slideshow, $iframe);
   }
@@ -824,15 +847,19 @@
       'label' => t('Lightbox2: Image Thumbnail -> Original'),
       'field types' => array('emimage'),
     );
+    if ($settings['allow_lightshow']) {
     $formatters['emimage_lightshow2'] = array(
       'label' => t('Lightbox2 slideshow: Image Thumbnail -> Original'),
       'field types' => array('emimage'),
     );
+    }
+    if ($settings['allow_lightframe']) {
     $formatters['emimage_lightframe2'] = array(
       'label' => t('Lightbox2 iframe: Image Thumbnail -> Content'),
       'field types' => array('emimage'),
     );
   }
+  }
   if (variable_get('lightbox2_enable_video', FALSE) && module_exists('emfield') && module_exists('emvideo')) {
     $formatters['emvideo_lightvideo'] = array(
       'label' => t('Lightbox2: Image Thumbnail -> Full Size Video'),
@@ -840,11 +867,13 @@
     );
   }
   if (module_exists('filefield')) {
+    if ($settings['allow_lightframe']) {
     $formatters['filefield_lightframe'] = array(
       'label' => t('Lightbox2 iframe'),
       'field types' => array('filefield'),
     );
   }
+  }
 
   return $formatters;
 }
@@ -854,6 +883,7 @@
  * Implementation of hook_theme().
  */
 function lightbox2_theme() {
+  $settings = lightbox2_theme_registry_settings();
   $theme = array(
     'lightbox2_image' => array(
       'arguments' => array('path' => NULL, 'alt' => '', 'title' => '', 'attributes' => array()),
@@ -912,8 +942,14 @@
   );
 
   // Additional imagecache + imagefield theme functions, by preset.
-  if (module_exists("imagecache")) {
+  if (module_exists('imagecache')) {
 
+    $presets = array();
+    foreach(imagecache_presets() as $key => $preset) {
+      $presets[$key] = $preset['presetname'];
+    }
+    
+    if ($settings['allow_lightframe']) {
     $theme['lightbox2_formatter_imagefield__lightframe2__original__node'] = array(
       'arguments' => array('element' => NULL),
       'function' => 'theme_lightbox2_formatter_imagefield',
@@ -924,80 +960,105 @@
       'function' => 'theme_lightbox2_formatter_imagefield',
       'file' => 'lightbox2.formatter.inc',
     );
+    }
 
-    foreach (imagecache_presets() as $src) {
+    $fullsize_format = array_filter($settings['fullsize_formats']);
+    foreach ($fullsize_format as $preset_id) {
+      $src['presetname'] = $presets[$preset_id];
       $theme['lightbox2_formatter_imagefield__lightbox2__'. $src['presetname'] .'__original'] = array(
         'arguments' => array('element' => NULL),
         'function' => 'theme_lightbox2_formatter_imagefield',
         'file' => 'lightbox2.formatter.inc',
       );
+      if ($settings['allow_compact']) {
       $theme['lightbox2_formatter_imagefield__lightbox2_compact__'. $src['presetname'] .'__original'] = array(
         'arguments' => array('element' => NULL),
         'function' => 'theme_lightbox2_formatter_imagefield',
         'file' => 'lightbox2.formatter.inc',
       );
+      }
+      if ($settings['allow_lightshow']) {
       $theme['lightbox2_formatter_imagefield__lightshow2__'. $src['presetname'] .'__original'] = array(
         'arguments' => array('element' => NULL),
         'function' => 'theme_lightbox2_formatter_imagefield',
         'file' => 'lightbox2.formatter.inc',
       );
+        if ($settings['allow_compact']) {
       $theme['lightbox2_formatter_imagefield__lightshow2_compact__'. $src['presetname'] .'__original'] = array(
         'arguments' => array('element' => NULL),
         'function' => 'theme_lightbox2_formatter_imagefield',
         'file' => 'lightbox2.formatter.inc',
       );
+        }
+      }
       $theme['lightbox2_formatter_imagefield__lightbox2__original__'. $src['presetname']] = array(
         'arguments' => array('element' => NULL),
         'function' => 'theme_lightbox2_formatter_imagefield',
         'file' => 'lightbox2.formatter.inc',
       );
+      if ($settings['allow_compact']) {
       $theme['lightbox2_formatter_imagefield__lightbox2_compact__original__'. $src['presetname']] = array(
         'arguments' => array('element' => NULL),
         'function' => 'theme_lightbox2_formatter_imagefield',
         'file' => 'lightbox2.formatter.inc',
       );
+      }
+      if ($settings['allow_lightshow']) {
       $theme['lightbox2_formatter_imagefield__lightshow2__original__'. $src['presetname']] = array(
         'arguments' => array('element' => NULL),
         'function' => 'theme_lightbox2_formatter_imagefield',
         'file' => 'lightbox2.formatter.inc',
       );
+        if ($settings['allow_compact']) {
       $theme['lightbox2_formatter_imagefield__lightshow2_compact__original__'. $src['presetname']] = array(
         'arguments' => array('element' => NULL),
         'function' => 'theme_lightbox2_formatter_imagefield',
         'file' => 'lightbox2.formatter.inc',
       );
+        }
+      }
+      if ($settings['allow_lightframe']) {
       $theme['lightbox2_formatter_imagefield__lightframe2__'. $src['presetname'] .'__node'] = array(
         'arguments' => array('element' => NULL),
         'function' => 'theme_lightbox2_formatter_imagefield',
         'file' => 'lightbox2.formatter.inc',
       );
+      }
       $theme['lightbox2_formatter_imagefield__lightbox2__link__'. $src['presetname']] = array(
         'arguments' => array('element' => NULL),
         'function' => 'theme_lightbox2_formatter_imagefield',
         'file' => 'lightbox2.formatter.inc',
       );
+      if ($settings['allow_lightshow']) {
       $theme['lightbox2_formatter_imagefield__lightshow2__link__'. $src['presetname']] = array(
         'arguments' => array('element' => NULL),
         'function' => 'theme_lightbox2_formatter_imagefield',
         'file' => 'lightbox2.formatter.inc',
       );
+      }
 
-      foreach (imagecache_presets() as $dest) {
+      $fullsize_format = array_filter($settings['fullsize_formats']);
+      foreach ($fullsize_format as $preset_id) {
+        $dest['presetname'] = $presets[$preset_id];
         $theme['lightbox2_formatter_imagefield__lightbox2__'. $src['presetname'] .'__'. $dest['presetname']] = array(
           'arguments' => array('element' => NULL),
           'function' => 'theme_lightbox2_formatter_imagefield',
           'file' => 'lightbox2.formatter.inc',
         );
+        if ($settings['allow_compact']) {
         $theme['lightbox2_formatter_imagefield__lightbox2_compact__'. $src['presetname'] .'__'. $dest['presetname']] = array(
           'arguments' => array('element' => NULL),
           'function' => 'theme_lightbox2_formatter_imagefield',
           'file' => 'lightbox2.formatter.inc',
         );
+        }
+        if ($settings['allow_lightshow']) {
         $theme['lightbox2_formatter_imagefield__lightshow2__'. $src['presetname'] .'__'. $dest['presetname']] = array(
           'arguments' => array('element' => NULL),
           'function' => 'theme_lightbox2_formatter_imagefield',
           'file' => 'lightbox2.formatter.inc',
         );
+          if ($settings['allow_compact']) {
         $theme['lightbox2_formatter_imagefield__lightshow2_compact__'. $src['presetname'] .'__'. $dest['presetname']] = array(
           'arguments' => array('element' => NULL),
           'function' => 'theme_lightbox2_formatter_imagefield',
@@ -1006,6 +1067,8 @@
       }
     }
   }
+    }
+  }
 
   // Additional Insert theme functions.
   if (module_exists('insert')) {
@@ -1019,6 +1082,17 @@
   return $theme;
 }
 
+function lightbox2_theme_registry_settings() {
+  $settings = array();
+  $settings['allow_lightshow'] = variable_get('lightbox2_theme_lightshow', FALSE);
+  $settings['allow_lightframe'] = variable_get('lightbox2_theme_lightframe', FALSE);
+  $settings['allow_compact'] = variable_get('lightbox2_theme_compact', FALSE);
+  if (module_exists('imagecache')) {
+    $settings['fullsize_formats'] = variable_get('lightbox2_theme_fullsize_formats', array_keys(imagecache_presets()));
+  }
+  return $settings;
+}
+
 /**
  * Configures settings and outputs the video.
  *

 