From d35a57ea7128529b92d2c8c140795d0b74972152 Mon Sep 17 00:00:00 2001
From: that0n3guy <peter@quadputer>
Date: Thu, 29 Sep 2011 16:58:49 -0500
Subject: [PATCH] added entityreference compatibility

---
 references_dialog.dialog_widgets.inc |   57 +++++++++++++++++++++++++++++++++-
 1 files changed, 56 insertions(+), 1 deletions(-)

diff --git a/references_dialog.dialog_widgets.inc b/references_dialog.dialog_widgets.inc
index fc913ce..2ee7d6b 100644
--- a/references_dialog.dialog_widgets.inc
+++ b/references_dialog.dialog_widgets.inc
@@ -50,6 +50,21 @@ function references_dialog_references_dialog_widgets() {
         ),
       ),
     ),
+    'entityreference_autocomplete' => array(
+      'element_type' => 'textfield',
+      'dialog_form' => 'entityreference_autocomplete_dialog_form',
+      'format' => '$label ($entity_id)',
+      'operations' => array(
+        'edit' => array(
+          'function' => 'references_dialog_entityreference_edit_link',
+          'title' => t('Edit dialog'),
+        ),
+        'add' => array(
+          'function' => 'references_dialog_entityreference_add_link',
+          'title' => t('Add dialog'),
+        ),
+      ),
+    ),
   );
 }
 
@@ -135,4 +150,44 @@ function references_dialog_user_reference_add_link($element, $widget_settings, $
     );
   }
   return $user_links;
-}
\ No newline at end of file
+}
+
+/**
+ * Edit link callback for entity references.
+ */
+function references_dialog_entityreference_edit_link($element, $widget_settings, $field, $instance) {
+  if (isset($element['#default_value'])) {
+    $node = node_load($element['#default_value']);
+    if (node_access('update', $node)) {
+      return array(
+        array(
+          'title' => t('Edit'),
+          'href' => 'node/' . $element['#default_value'] . '/edit'
+        ),
+      );
+    }
+  }
+  return array();
+}
+
+/**
+ * Add link callback for entity references.
+ */
+function references_dialog_entityreference_add_link($element, $widget_settings, $field, $instance) {
+  $add_links = array();
+  //just doing node for now b/c I don't know if all entities have a standard "add/edit" url.
+  if ($field['settings']['target_type'] == 'node') {
+    foreach ($field['settings']['handler_settings']['target_bundles'] as $type => $active) {
+      if ($active !== 0) {
+        $node_type = node_type_load($type);
+        if (node_access('create', $node_type->type)) {
+          $add_links[] = array(
+            'title' => t('Create @type', array('@type' => $node_type->name)),
+            'href' => 'node/add/' . strtr($type, array('_' => '-')),
+          );
+        }
+      }
+    }
+  }
+  return $add_links;
+}
-- 
1.7.0.4

