diff options
author | Angie Byron <webchick@24967.no-reply.drupal.org> | 2010-02-11 15:52:13 +0000 |
---|---|---|
committer | Angie Byron <webchick@24967.no-reply.drupal.org> | 2010-02-11 15:52:13 +0000 |
commit | 52195a6b1dd478875a93935df27d7bcacb14f289 (patch) | |
tree | 052233b34e4c6a9a0d6268426e650500817265f6 | |
parent | 30ae1fb5596cc59e27717262a04e6447d27cebb4 (diff) | |
download | brdo-52195a6b1dd478875a93935df27d7bcacb14f289.tar.gz brdo-52195a6b1dd478875a93935df27d7bcacb14f289.tar.bz2 |
#525622 by scor, catch, and yched: Allow Entity path callback to deal with options.
-rw-r--r-- | includes/common.inc | 12 | ||||
-rw-r--r-- | modules/comment/comment.module | 11 | ||||
-rw-r--r-- | modules/image/image.field.inc | 17 | ||||
-rw-r--r-- | modules/node/node.module | 10 | ||||
-rw-r--r-- | modules/system/system.api.php | 5 | ||||
-rw-r--r-- | modules/taxonomy/taxonomy.module | 10 | ||||
-rw-r--r-- | modules/user/user.module | 10 |
7 files changed, 47 insertions, 28 deletions
diff --git a/includes/common.inc b/includes/common.inc index 5285e7311..cea7b037b 100644 --- a/includes/common.inc +++ b/includes/common.inc @@ -6567,19 +6567,21 @@ function entity_prepare_view($entity_type, $entities) { } /** - * Returns the path to an entity. + * Returns the uri elements of an entity. * * @param $entity_type * The entity type; e.g. 'node' or 'user'. * @param $entity * The entity for which to generate a path. * @return - * The path for the entity, or NULL if the entity has no page of its own. + * An array containing the 'path' and 'options' keys used to build the uri of + * the entity, and matching the signature of url(). NULL if the entity has no + * uri of its own. */ -function entity_path($entity_type, $entity) { +function entity_uri($entity_type, $entity) { $info = entity_get_info($entity_type); - if (isset($info['path callback']) && function_exists($info['path callback'])) { - return $info['path callback']($entity); + if (isset($info['uri callback']) && function_exists($info['uri callback'])) { + return $info['uri callback']($entity) + array('options' => array()); } } /** diff --git a/modules/comment/comment.module b/modules/comment/comment.module index 66dec2e7c..ee0f0764f 100644 --- a/modules/comment/comment.module +++ b/modules/comment/comment.module @@ -97,7 +97,7 @@ function comment_entity_info() { 'comment' => array( 'label' => t('Comment'), 'base table' => 'comment', - 'path callback' => 'comment_path', + 'uri callback' => 'comment_uri', 'fieldable' => TRUE, 'controller class' => 'CommentController', 'object keys' => array( @@ -148,10 +148,13 @@ function comment_node_type_load($name) { } /** - * Entity path callback. + * Entity uri callback. */ -function comment_path($comment) { - return 'comment/' . $comment->cid; +function comment_uri($comment) { + return array( + 'path' => 'comment/' . $comment->cid, + 'options' => array('fragment' => 'comment-' . $comment->cid), + ); } /** diff --git a/modules/image/image.field.inc b/modules/image/image.field.inc index 1a9e5b1da..f1fc8993f 100644 --- a/modules/image/image.field.inc +++ b/modules/image/image.field.inc @@ -461,7 +461,7 @@ function image_field_formatter_view($obj_type, $object, $field, $instance, $lang // Check if the formatter involves a link. if (strpos($display['type'], 'image_link_content') === 0) { - $path = entity_path($obj_type, $object); + $uri = entity_uri($obj_type, $object); } elseif (strpos($display['type'], 'image_link_file') === 0) { $link_file = TRUE; @@ -469,17 +469,20 @@ function image_field_formatter_view($obj_type, $object, $field, $instance, $lang foreach ($items as $delta => $item) { if (isset($link_file)) { - $path = file_create_url($item['uri']); + $uri = array( + 'path' => file_create_url($item['uri']), + 'options' => array(), + ); } $element[$delta] = array( '#theme' => 'image_formatter', '#item' => $item, '#image_style' => isset($image_style) ? $image_style : '', - '#path' => isset($path) ? $path : '', + '#path' => isset($uri) ? $uri : '', ); } - return $element; + return $element; } /** @@ -502,7 +505,11 @@ function theme_image_formatter($variables) { } if ($variables['path']) { - $output = l($output, $variables['path'], array('html' => TRUE)); + $path = $variables['path']['path']; + $options = $variables['path']['options']; + // When displaying an image inside a link, the html option must be TRUE. + $options['html'] = TRUE; + $output = l($output, $path, $options); } return $output; diff --git a/modules/node/node.module b/modules/node/node.module index 536b303fb..6b5265b25 100644 --- a/modules/node/node.module +++ b/modules/node/node.module @@ -185,7 +185,7 @@ function node_entity_info() { 'controller class' => 'NodeController', 'base table' => 'node', 'revision table' => 'node_revision', - 'path callback' => 'node_path', + 'uri callback' => 'node_uri', 'fieldable' => TRUE, 'object keys' => array( 'id' => 'nid', @@ -243,10 +243,12 @@ function node_entity_info() { } /** - * Entity path callback. + * Entity uri callback. */ -function node_path($node) { - return 'node/' . $node->nid; +function node_uri($node) { + return array( + 'path' => 'node/' . $node->nid, + ); } /** diff --git a/modules/system/system.api.php b/modules/system/system.api.php index 8ebf9d6c0..2245f4c6b 100644 --- a/modules/system/system.api.php +++ b/modules/system/system.api.php @@ -66,8 +66,9 @@ function hook_hook_info() { * static caching of entities during a page request. Defaults to TRUE. * - load hook: The name of the hook which should be invoked by * DrupalDefaultEntityController:attachLoad(), for example 'node_load'. - * - path callback: A function taking an entity as argument and returning the - * path to the entity. + * - uri callback: A function taking an entity as argument and returning the + * uri elements of the entity, e.g. 'path' and 'options'. The actual entity + * uri can be constructed by passing these elements to url(). * - fieldable: Set to TRUE if you want your entity type to be fieldable. * - object keys: An array describing how the Field API can extract the * information it needs from the objects of the type. Elements: diff --git a/modules/taxonomy/taxonomy.module b/modules/taxonomy/taxonomy.module index 478a3fffe..d976c4982 100644 --- a/modules/taxonomy/taxonomy.module +++ b/modules/taxonomy/taxonomy.module @@ -87,7 +87,7 @@ function taxonomy_entity_info() { 'label' => t('Taxonomy term'), 'controller class' => 'TaxonomyTermController', 'base table' => 'taxonomy_term_data', - 'path callback' => 'taxonomy_term_path', + 'uri callback' => 'taxonomy_term_uri', 'fieldable' => TRUE, 'object keys' => array( 'id' => 'tid', @@ -130,10 +130,12 @@ function taxonomy_entity_info() { } /** - * Entity path callback. + * Entity uri callback. */ -function taxonomy_term_path($term) { - return 'taxonomy/term/' . $term->tid; +function taxonomy_term_uri($term) { + return array( + 'path' => 'taxonomy/term/' . $term->tid, + ); } /** diff --git a/modules/user/user.module b/modules/user/user.module index 97de9a029..87ffe3a77 100644 --- a/modules/user/user.module +++ b/modules/user/user.module @@ -125,7 +125,7 @@ function user_entity_info() { 'label' => t('User'), 'controller class' => 'UserController', 'base table' => 'users', - 'path callback' => 'user_path', + 'uri callback' => 'user_uri', 'fieldable' => TRUE, 'object keys' => array( 'id' => 'uid', @@ -150,10 +150,12 @@ function user_entity_info() { } /** - * Entity path callback. + * Entity uri callback. */ -function user_path($user) { - return 'user/' . $user->uid; +function user_uri($user) { + return array( + 'path' => 'user/' . $user->uid, + ); } /** |