From 607ea81c6b2bc1aa1a7ad0acb81925df8c8093aa Mon Sep 17 00:00:00 2001
From: Jose Torres <jmtorres@238019.no-reply.drupal.org>
Date: Fri, 2 Mar 2012 18:14:04 -0500
Subject: [PATCH] Modified storage_core_bridge to work with all supported
 field types regardless of entity type.

---
 core_bridge/storage_core_bridge.module |   80 ++++++++++++++++---------------
 1 files changed, 41 insertions(+), 39 deletions(-)

diff --git a/core_bridge/storage_core_bridge.module b/core_bridge/storage_core_bridge.module
index a00951a..ddc6289 100755
--- a/core_bridge/storage_core_bridge.module
+++ b/core_bridge/storage_core_bridge.module
@@ -83,48 +83,26 @@ function storage_core_bridge_stream_wrappers() {
   $fields = variable_get('storage_core_bridge_fields');
   $wrappers = array();
 
-  // Work out which selector stream wrapper should be visible.
-  if (strpos($_GET['q'], 'admin/structure/types/manage/') === 0 && arg(5) == 'fields') {
-    $active_field = arg(6);
-  }
-  elseif (strpos($_GET['q'], 'admin/config/people/accounts/fields/') === 0 ||
-    ((strpos($_GET['q'], 'admin/structure/taxonomy/') === 0 ||
-    strpos($_GET['q'], 'admin/structure/field-collections/') === 0) &&
-    arg(4) == 'fields'))
-  {
-    $active_field = arg(5);
-  }
   // If a default image is being uploaded via AJAX then make all selector
   // streamwrappers visible so the form doesn't break.
-  elseif (strpos($_GET['q'], 'file/ajax/field/settings/default_image') === 0) {
-    $active_field = NULL;
-  } else {
-    $active_field = FALSE;
-  }
-
-  // The Media module erroneously lists hidden schemes, so only declare the
-  // active one on field admin pages.
-  if ($active_field) {
-    if (in_array($active_field, $fields)) {
-      $wrappers['storage-' . str_replace('_', '-', $active_field)] = array(
-        'name' => t("Storage class (select below)"),
-        'class' => 'DrupalStorageStreamWrapper',
-        'description' => t("Files managed by Storage API."),
-        'type' => STREAM_WRAPPERS_NORMAL,
-      );
-    }
-  }
-  else {
-    foreach ($fields as $field) {
-      $wrappers['storage-' . str_replace('_', '-', $field)] = array(
-        'name' => t("Storage class (select below)"),
-        'class' => 'DrupalStorageStreamWrapper',
-        'description' => t("Files managed by Storage API."),
-        'type' => is_null($active_field) ? STREAM_WRAPPERS_NORMAL : STREAM_WRAPPERS_HIDDEN,
-      );
-    }
-  }
+  $default_image_upload = (strpos($_GET['q'], 'file/ajax/field/settings/default_image') === 0);
 
+  $wrappers['storage'] = array(
+    'name' => t("Storage class (select below)"),
+    'class' => 'DrupalStorageStreamWrapper',
+    'description' => t("Files managed by Storage API."),
+    'type' => STREAM_WRAPPERS_NORMAL,
+  );
+  
+  foreach ($fields as $field) {
+    $wrappers['storage-' . str_replace('_', '-', $field)] = array(
+      'name' => t("Storage class (select below)"),
+      'class' => 'DrupalStorageStreamWrapper',
+      'description' => t("Files managed by Storage API."),
+      'type' => $default_image_upload ? STREAM_WRAPPERS_NORMAL : STREAM_WRAPPERS_HIDDEN,
+    );
+  }
+  
   return $wrappers;
 }
 
@@ -172,6 +150,10 @@ function storage_core_bridge_form_field_ui_field_settings_form_alter(array &$for
   if (!in_array($form['field']['type']['#value'], storage_core_bridge_field_types())) {
     return;
   }
+  
+if($form['field']['settings']['uri_scheme']['#default_value'] == 'storage-' . str_replace('_', '-', $form['field']['field_name']['#value'])){
+    $form['field']['settings']['uri_scheme']['#default_value'] = 'storage';
+  }
 
   $form['field']['settings']['storage_class'] =
     storage_core_bridge_field_selector($form['field']['field_name']['#value'])->formItem();
@@ -179,10 +161,18 @@ function storage_core_bridge_form_field_ui_field_settings_form_alter(array &$for
   $form['field']['settings']['uri_scheme']['#weight'] = -2;
   $form['field']['settings']['storage_class']['#weight'] = -1;
 
+  $form['#validate'][] = 'storage_core_bridge_field_ui_field_settings_form_validate';
   $form['#submit'][] = 'storage_core_bridge_field_ui_field_settings_form_submit';
 }
 
 
+function storage_core_bridge_field_ui_field_settings_form_validate(array $form, array &$form_state) {
+  if($form_state['values']['field']['settings']['uri_scheme'] == 'storage'){
+    $form_state['values']['field']['settings']['uri_scheme'] = 'storage-' . str_replace('_', '-', $form['field']['field_name']['#value']);
+  }
+}
+
+
 function storage_core_bridge_field_ui_field_settings_form_submit(array $form, array &$form_state) {
 
   storage_core_bridge_field_selector($form['field']['field_name']['#value'])
@@ -199,16 +189,28 @@ function storage_core_bridge_form_field_ui_field_edit_form_alter(array &$form, a
     return;
   }
 
+  if($form['field']['settings']['uri_scheme']['#default_value'] == 'storage-' . str_replace('_', '-', $form['#field']['field_name'])){
+    $form['field']['settings']['uri_scheme']['#default_value'] = 'storage';
+  }
+  
   $form['field']['settings']['storage_class'] =
     storage_core_bridge_field_selector($form['#field']['field_name'])->formItem();
 
   $form['field']['settings']['uri_scheme']['#weight'] = -2;
   $form['field']['settings']['storage_class']['#weight'] = -1;
 
+  $form['#validate'][] = 'storage_core_bridge_field_ui_field_edit_form_validate';
   $form['#submit'][] = 'storage_core_bridge_field_ui_field_edit_form_submit';
 }
 
 
+function storage_core_bridge_field_ui_field_edit_form_validate(array $form, array &$form_state) {
+  if($form_state['values']['field']['settings']['uri_scheme'] == 'storage'){
+    $form_state['values']['field']['settings']['uri_scheme'] = 'storage-' . str_replace('_', '-', $form['#field']['field_name']);
+  }
+}
+
+
 function storage_core_bridge_field_ui_field_edit_form_submit(array $form, array &$form_state) {
 
   storage_core_bridge_field_selector($form['#field']['field_name'])
-- 
1.7.8.msysgit.0

