diff --git a/field_collection.module b/field_collection.module index 30f175e..bb4969a 100644 --- a/field_collection.module +++ b/field_collection.module @@ -140,20 +140,34 @@ class FieldCollectionItemEntity extends Entity { } /** + * Returns the field instance label translated to interface language. + */ + public function translatedInstanceLabel($langcode = NULL) { + if ($info = $this->instanceInfo()) { + if (module_exists('i18n_field')) { + return i18n_string("field:{$this->field_name}:{$info['bundle']}:label", $info['label'], array('langcode' => $langcode)); + } + return $info['label']; + } + } + + /** * Specifies the default label, which is picked up by label() by default. */ public function defaultLabel() { // @todo make configurable. - if ($instance = $this->instanceInfo()) { + if ($this->fetchHostDetails()) { $field = $this->fieldInfo(); + $label = $this->translatedInstanceLabel(); + if ($field['cardinality'] == 1) { - return $instance['label']; + return $label; } elseif ($this->item_id) { - return t('!instance_label @count', array('!instance_label' => $instance['label'], '@count' => $this->delta() + 1)); + return t('!instance_label @count', array('!instance_label' => $label, '@count' => $this->delta() + 1)); } else { - return t('New !instance_label', array('!instance_label' => $instance['label'])); + return t('New !instance_label', array('!instance_label' => $label)); } } return t('Unconnected field collection item'); @@ -728,7 +742,7 @@ function field_collection_field_formatter_settings_form($field, $instance, $view $settings = $display['settings']; $elements = array(); - if ($display['type'] !== 'field_collection_fields') { + if ($display['type'] != 'field_collection_fields') { $elements['edit'] = array( '#type' => 'textfield', '#title' => t('Edit link title'), @@ -820,7 +834,8 @@ function field_collection_field_formatter_view($entity_type, $entity, $field, $i $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())); + $title = entity_i18n_string("field:{$field['field_name']}:{$instance['bundle']}:setting_$op", $settings[$op]); + $links[] = l($title, $field_collection->path() . '/' . $op, array('query' => drupal_get_destination())); } } if ($links) { @@ -851,7 +866,7 @@ function field_collection_field_formatter_view($entity_type, $entity, $field, $i foreach (array('edit', 'delete') as $op) { if ($settings[$op] && field_collection_item_access($op == 'edit' ? 'update' : $op, $field_collection)) { $links['#links'][$op] = array( - 'title' => $settings[$op], + 'title' => entity_i18n_string("field:{$field['field_name']}:{$instance['bundle']}:setting_$op", $settings[$op]), 'href' => $field_collection->path() . '/' . $op, 'query' => drupal_get_destination(), ); @@ -887,6 +902,7 @@ function field_collection_field_formatter_links(&$element, $entity_type, $entity // Check whether the current is allowed to create a new item. $field_collection_item = entity_create('field_collection_item', array('field_name' => $field['field_name'])); $field_collection_item->setHostEntity($entity_type, $entity, LANGUAGE_NONE, FALSE); + if (field_collection_item_access('create', $field_collection_item)) { $path = field_collection_field_get_path($field); list($id) = entity_extract_ids($entity_type, $entity); @@ -894,8 +910,11 @@ function field_collection_field_formatter_links(&$element, $entity_type, $entity if (!empty($settings['description'])) { $element['#suffix'] .= '