Index: lightbox2.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/lightbox2/Attic/lightbox2.admin.inc,v
retrieving revision 1.1.2.38
diff -u -p -r1.1.2.38 lightbox2.admin.inc
--- lightbox2.admin.inc	24 Sep 2010 08:41:02 -0000	1.1.2.38
+++ lightbox2.admin.inc	31 Dec 2010 03:34:06 -0000
@@ -18,6 +18,9 @@ function lightbox2_settings_page($op = N
  * 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 @@ function lightbox2_general_settings_form
     '#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,8 @@ function lightbox2_general_settings_form
  * Submit function for the general configuration form.
  */
 function lightbox2_general_settings_form_submit($form, &$form_state) {
+  // rebuild theme registry
+  drupal_rebuild_theme_registry();
   cache_clear_all();
 }
 
Index: lightbox2.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/lightbox2/lightbox2.module,v
retrieving revision 1.16.2.16.2.171
diff -u -p -r1.16.2.16.2.171 lightbox2.module
--- lightbox2.module	24 Sep 2010 08:33:00 -0000	1.16.2.16.2.171
+++ lightbox2.module	31 Dec 2010 03:34:06 -0000
@@ -730,6 +730,7 @@ function lightbox2_add_files() {
  * 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,76 +745,96 @@ function lightbox2_field_formatter_info(
     else {
       $rules = _imagecache_get_presets();
     }
-    $iframe['imagefield__lightframe2__original__node'] = array(
-      'label' => 'Lightbox2 iframe: original->node page',
-      'field types' => array('image', 'filefield'),
-    );
-    $iframe['imagefield__lightframe2__link__node'] = array(
-      'label' => 'Lightbox2 iframe: link->node page',
-      'field types' => array('image', 'filefield'),
-    );
+    if ($settings['allow_lightframe']) {
+      $iframe['imagefield__lightframe2__original__node'] = array(
+        'label' => 'Lightbox2 iframe: original->node page',
+        'field types' => array('image', 'filefield'),
+      );
+      $iframe['imagefield__lightframe2__link__node'] = array(
+        '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'),
       );
-      $lightbox['imagefield__lightbox2_compact__original__'. $view_rule] = array(
-        'label' => 'Lightbox2: original->'. $view_rule . ' compact',
-        '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'),
       );
-      $lightbox['imagefield__lightbox2_compact__'. $view_rule .'__original'] = array(
-        'label' => 'Lightbox2: '. $view_rule .'->original compact',
-        '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'),
       );
-      $slideshow['imagefield__lightshow2__original__'. $view_rule] = array(
-        'label' => 'Lightbox2 slideshow: original->'. $view_rule,
-        'field types' => array('image', 'filefield'),
-      );
-      $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'),
-      );
-      $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'),
-      );
-      $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) {
-        $lightbox['imagefield__lightbox2__'. $view_rule .'__'. $lightbox_rule] = array(
-          'label' => 'Lightbox2: '. $view_rule .'->'. $lightbox_rule,
+      if ($settings['allow_lightshow']) {
+        $slideshow['imagefield__lightshow2__original__'. $view_rule] = array(
+          'label' => 'Lightbox2 slideshow: original->'. $view_rule,
           'field types' => array('image', 'filefield'),
         );
-        $lightbox['imagefield__lightbox2_compact__'. $view_rule .'__'. $lightbox_rule] = array(
-          'label' => 'Lightbox2: '. $view_rule .'->'. $lightbox_rule . ' compact',
+        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'),
         );
-        $slideshow['imagefield__lightshow2__'. $view_rule .'__'. $lightbox_rule] = array(
-          'label' => 'Lightbox2 slideshow: '. $view_rule .'->'. $lightbox_rule,
+        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'),
         );
-        $slideshow['imagefield__lightshow2_compact__'. $view_rule .'__'. $lightbox_rule] = array(
-          'label' => 'Lightbox2 slideshow: '. $view_rule .'->'. $lightbox_rule . ' compact',
+      }
+      if ($settings['allow_lightframe']) {
+        $iframe['imagefield__lightframe2__'. $view_rule .'__node'] = array(
+          'label' => 'Lightbox2 iframe: '. $view_rule .'->node page',
+          'field types' => array('image', 'filefield'),
+        );
+      }
+      foreach ($settings['fullsize_formats'] as $src) {
+        $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.
@@ -824,14 +845,18 @@ function lightbox2_field_formatter_info(
       'label' => t('Lightbox2: Image Thumbnail -> Original'),
       'field types' => array('emimage'),
     );
-    $formatters['emimage_lightshow2'] = array(
-      'label' => t('Lightbox2 slideshow: Image Thumbnail -> Original'),
-      'field types' => array('emimage'),
-    );
-    $formatters['emimage_lightframe2'] = array(
-      'label' => t('Lightbox2 iframe: Image Thumbnail -> Content'),
-      '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(
@@ -840,10 +865,12 @@ function lightbox2_field_formatter_info(
     );
   }
   if (module_exists('filefield')) {
-    $formatters['filefield_lightframe'] = array(
-      'label' => t('Lightbox2 iframe'),
-      'field types' => array('filefield'),
-    );
+    if ($settings['allow_lightframe']) {
+      $formatters['filefield_lightframe'] = array(
+        'label' => t('Lightbox2 iframe'),
+        'field types' => array('filefield'),
+      );
+    }
   }
 
   return $formatters;
@@ -854,6 +881,7 @@ function lightbox2_field_formatter_info(
  * 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,97 +940,118 @@ function lightbox2_theme() {
   );
 
   // Additional imagecache + imagefield theme functions, by preset.
-  if (module_exists("imagecache")) {
-
-    $theme['lightbox2_formatter_imagefield__lightframe2__original__node'] = array(
-      'arguments' => array('element' => NULL),
-      'function' => 'theme_lightbox2_formatter_imagefield',
-      'file' => 'lightbox2.formatter.inc',
-    );
-    $theme['lightbox2_formatter_imagefield__lightframe2__link__node'] = array(
-      'arguments' => array('element' => NULL),
-      'function' => 'theme_lightbox2_formatter_imagefield',
-      'file' => 'lightbox2.formatter.inc',
-    );
-
-    foreach (imagecache_presets() as $src) {
-      $theme['lightbox2_formatter_imagefield__lightbox2__'. $src['presetname'] .'__original'] = array(
-        'arguments' => array('element' => NULL),
-        'function' => 'theme_lightbox2_formatter_imagefield',
-        'file' => 'lightbox2.formatter.inc',
-      );
-      $theme['lightbox2_formatter_imagefield__lightbox2_compact__'. $src['presetname'] .'__original'] = array(
+  if (module_exists('imagecache')) {
+    if ($settings['allow_lightframe']) {
+      $theme['lightbox2_formatter_imagefield__lightframe2__original__node'] = array(
         'arguments' => array('element' => NULL),
         'function' => 'theme_lightbox2_formatter_imagefield',
         'file' => 'lightbox2.formatter.inc',
       );
-      $theme['lightbox2_formatter_imagefield__lightshow2__'. $src['presetname'] .'__original'] = array(
+      $theme['lightbox2_formatter_imagefield__lightframe2__link__node'] = array(
         'arguments' => array('element' => NULL),
         'function' => 'theme_lightbox2_formatter_imagefield',
         'file' => 'lightbox2.formatter.inc',
       );
-      $theme['lightbox2_formatter_imagefield__lightshow2_compact__'. $src['presetname'] .'__original'] = array(
+    }
+
+    foreach ($settings['fullsize_formats'] as $src) {
+      $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',
       );
-      $theme['lightbox2_formatter_imagefield__lightbox2_compact__original__'. $src['presetname']] = array(
-        'arguments' => array('element' => NULL),
-        'function' => 'theme_lightbox2_formatter_imagefield',
-        'file' => 'lightbox2.formatter.inc',
-      );
-      $theme['lightbox2_formatter_imagefield__lightshow2__original__'. $src['presetname']] = array(
-        'arguments' => array('element' => NULL),
-        'function' => 'theme_lightbox2_formatter_imagefield',
-        'file' => 'lightbox2.formatter.inc',
-      );
-      $theme['lightbox2_formatter_imagefield__lightshow2_compact__original__'. $src['presetname']] = array(
-        'arguments' => array('element' => NULL),
-        'function' => 'theme_lightbox2_formatter_imagefield',
-        'file' => 'lightbox2.formatter.inc',
-      );
-      $theme['lightbox2_formatter_imagefield__lightframe2__'. $src['presetname'] .'__node'] = 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',
       );
-      $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) {
-        $theme['lightbox2_formatter_imagefield__lightbox2__'. $src['presetname'] .'__'. $dest['presetname']] = array(
+      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',
         );
-        $theme['lightbox2_formatter_imagefield__lightbox2_compact__'. $src['presetname'] .'__'. $dest['presetname']] = array(
+      }
+
+      foreach ($settings['fullsize_formats'] as $dest) {
+        $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',
+          );
+        }
         $theme['lightbox2_formatter_imagefield__lightshow2__'. $src['presetname'] .'__'. $dest['presetname']] = array(
           'arguments' => array('element' => NULL),
           'function' => 'theme_lightbox2_formatter_imagefield',
           'file' => 'lightbox2.formatter.inc',
         );
-        $theme['lightbox2_formatter_imagefield__lightshow2_compact__'. $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',
+            'file' => 'lightbox2.formatter.inc',
+          );
+        }
       }
     }
   }
@@ -1019,6 +1068,17 @@ function lightbox2_theme() {
   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.
  *
