diff --git a/field_collection.info b/field_collection.info
index 05b9c28..775addd 100644
--- a/field_collection.info
+++ b/field_collection.info
@@ -4,6 +4,7 @@ core = 7.x
 dependencies[] = entity
 files[] = field_collection.test
 files[] = field_collection.info.inc
+files[] = views/field_collections_handler_field_links.inc
 configure = admin/structure/field-collections
 package = Fields
 
diff --git a/field_collection.module b/field_collection.module
index ce62a05..6b858bf 100644
--- a/field_collection.module
+++ b/field_collection.module
@@ -740,15 +740,7 @@ function field_collection_field_formatter_view($entity_type, $entity, $field, $i
       foreach ($items as $delta => $item) {
         if ($field_collection = field_collection_field_get_entity($item)) {
           $output = l($field_collection->label(), $field_collection->path());
-          $links = array();
-          foreach (array('edit', 'delete') as $op) {
-            if ($settings[$op] && field_collection_item_access($op == 'edit' ? 'update' : $op, $field_collection)) {
-              $links[] = l($settings[$op], $field_collection->path() . '/' . $op, array('query' => drupal_get_destination()));
-            }
-          }
-          if ($links) {
-            $output .= ' (' . implode('|', $links) . ')';
-          }
+          $output .= field_collection_links($field_collection);
           $element[$delta] = array('#markup' => $output);
         }
       }
@@ -823,6 +815,38 @@ function field_collection_field_formatter_links(&$element, $entity_type, $entity
 }
 
 /**
+ * Helper function to build operational links.
+ */
+function field_collection_links($field_collection) {
+ 
+  $ops = array(
+    'edit' => t('Edit'),
+    'delete' => t('Delete'),
+  );
+  
+  $output = $links = array();
+  foreach ($ops as $op => $title) {
+    if (field_collection_item_access($op, $field_collection)) {
+      $link = array(
+        '#theme' => 'link',
+        '#text' => $title,
+        '#path' => $field_collection->path() . '/' . $op,
+        '#options' => array(
+          'attributes' => array('class' => array('field-collection-links')),
+          'query' => drupal_get_destination(),
+          'html' => FALSE,
+         ),
+      );
+      $link += module_invoke_all('field_collection_links_alter', $link);
+      $output[$op] = render($link);
+    }
+  }
+  if (!empty($output)) {
+    return ' (' . implode(' | ', $output) . ')';
+  }
+}
+
+/**
  * Themes field collection items printed using the field_collection_view formatter.
  */
 function theme_field_collection_view($variables) {
diff --git a/views/field_collection.views.inc b/views/field_collection.views.inc
index 0cf190d..e5c981c 100644
--- a/views/field_collection.views.inc
+++ b/views/field_collection.views.inc
@@ -28,6 +28,23 @@ function field_collection_field_views_data($field) {
 }
 
 /**
+ * Implements hook_views_data_alter().
+ */
+function field_collection_views_data_alter(&$data) {
+  $data['field_collection_item']['field_collections_links'] = array(
+    'group' => t('Field-collection item'),
+    'title' => t('Operational links'),
+    'help' => t('Display edit/delete links for all eligible field-collection items.'),
+    'real field' => 'item_id',
+    'field' => array(
+      'handler' => 'field_collections_handler_field_links',
+    ),
+  );
+  
+  return $data;
+}
+
+/**
  * Implements hook_field_views_data_views_data_alter().
  */
 function field_collection_field_views_data_views_data_alter(&$data, $field) {
diff --git a/views/field_collections_handler_field_links.inc b/views/field_collections_handler_field_links.inc
new file mode 100644
index 0000000..08aec33
--- /dev/null
+++ b/views/field_collections_handler_field_links.inc
@@ -0,0 +1,12 @@
+<?php 
+
+/**
+ * @file
+ * Views field handler for the field collection item links
+ */
+class field_collections_handler_field_links extends views_handler_field {
+  function render($values) {
+    $field_collection = field_collection_item_load($values->{$this->field_alias});
+    return field_collection_links($field_collection);
+  }
+}
\ No newline at end of file
