diff options
Diffstat (limited to 'mod/search')
-rw-r--r-- | mod/search/languages/en.php | 1 | ||||
-rw-r--r-- | mod/search/search_hooks.php | 2 | ||||
-rw-r--r-- | mod/search/views/default/search/css.php | 11 | ||||
-rw-r--r-- | mod/search/views/default/search/entity.php | 79 | ||||
-rw-r--r-- | mod/search/views/rss/search/comments/entity.php | 53 |
5 files changed, 113 insertions, 33 deletions
diff --git a/mod/search/languages/en.php b/mod/search/languages/en.php index 546a428a2..e3899500f 100644 --- a/mod/search/languages/en.php +++ b/mod/search/languages/en.php @@ -14,6 +14,7 @@ $english = array( 'search_types:comments' => 'Comments', 'search:comment_on' => 'Comment on "%s"', + 'search:comment_by' => 'by', 'search:unavailable_entity' => 'Unavailable Entity', ); diff --git a/mod/search/search_hooks.php b/mod/search/search_hooks.php index 0b606ac66..1af208d6e 100644 --- a/mod/search/search_hooks.php +++ b/mod/search/search_hooks.php @@ -257,7 +257,7 @@ function search_tags_hook($hook, $type, $value, $params) { $tags_str = implode('. ', $matched_tags_strs); $tags_str = search_get_highlighted_relevant_substrings($tags_str, $params['query']); - $tags_str = "($tags_str)"; + //$tags_str = "($tags_str)"; $entity->setVolatileData('search_matched_title', $title_str); $entity->setVolatileData('search_matched_description', $desc_str); diff --git a/mod/search/views/default/search/css.php b/mod/search/views/default/search/css.php index 4eb07d323..72b696059 100644 --- a/mod/search/views/default/search/css.php +++ b/mod/search/views/default/search/css.php @@ -76,3 +76,14 @@ .searchMatchColor5 { background-color: #4690d6; } + +/* formatting for the search results */ +.search_listing .item_extra { + border: 1px solid #cccccc; + margin: 2px; + padding: 3px; +} + +.search_listing .item_timestamp { + font-style: italic; +}
\ No newline at end of file diff --git a/mod/search/views/default/search/entity.php b/mod/search/views/default/search/entity.php index 2b08384d5..b65bad888 100644 --- a/mod/search/views/default/search/entity.php +++ b/mod/search/views/default/search/entity.php @@ -2,6 +2,14 @@ /** * Elgg search entity * + * Display largely controlled by a set of overrideable volatile data: + * - search_icon (defaults to entity icon) + * - search_matched_title + * - search_matched_description + * - search_matched_extra + * - search_url (defaults to entity->getURL()) + * - search_time (defaults to entity->time_updated or entity->time_created) + * * @package Elgg * @subpackage Core * @author Curverider Ltd @@ -10,46 +18,53 @@ $entity = $vars['entity']; -// display the entity's owner by default if available. -// @todo allow an option to switch to displaying the entity's icon instead. -$type = $entity->getType(); -if ($type == 'user' || $type == 'group') { - $icon = elgg_view('profile/icon', array('entity' => $entity, 'size' => 'tiny')); -} elseif ($owner = $entity->getOwnerEntity()) { - $icon = elgg_view('profile/icon', array('entity' => $owner, 'size' => 'tiny')); -} else { - // display a generic icon if no owner, though there will probably be - // other problems if the owner can't be found. - $icon = elgg_view( - 'graphics/icon', array( - 'entity' => $entity, - 'size' => 'tiny', - )); +$icon = $entity->getVolatileData('search_icon'); +if (!$icon) { + // display the entity's owner by default if available. + // @todo allow an option to switch to displaying the entity's icon instead. + $type = $entity->getType(); + if ($type == 'user' || $type == 'group') { + $icon = elgg_view('profile/icon', array('entity' => $entity, 'size' => 'small')); + } elseif ($owner = $entity->getOwnerEntity()) { + $icon = elgg_view('profile/icon', array('entity' => $owner, 'size' => 'small')); + } else { + // display a generic icon if no owner, though there will probably be + // other problems if the owner can't be found. + $icon = elgg_view( + 'graphics/icon', array( + 'entity' => $entity, + 'size' => 'small', + )); + } } $title = $entity->getVolatileData('search_matched_title'); $description = $entity->getVolatileData('search_matched_description'); $extra_info = $entity->getVolatileData('search_matched_extra'); -$url = $entity->getURL(); - -if (!$title) { - $title = elgg_echo('untitled'); +$url = $entity->getVolatileData('search_url'); +if (!$url) { + $url = $entity->getURL(); } - $title = "<a href=\"$url\">$title</a>"; -$tc = $entity->time_created; -$tu = $entity->time_updated; -$time = friendly_time(($tu > $tc) ? $tu : $tc); - -echo <<<___END +$time = $entity->getVolatileData('search_time'); +if (!$time) { + $tc = $entity->time_created; + $tu = $entity->time_updated; + $time = friendly_time(($tu > $tc) ? $tu : $tc); +} +?> <div class="search_listing clearfloat"> - <div class="search_listing_icon">$icon</div> + <div class="search_listing_icon"><?php echo $icon; ?></div> <div class="search_listing_info"> - <p class="entity_title">$title</p>$description - <p class="entity_subtext">$time $extra_info</p> + <p class="item_title"><?php echo $title; ?></p> + <p class="item_description"><?php echo $description; ?></p> +<?php +if ($extra_info) { +?> + <p class="item_extra"><?php echo $extra_info; ?></p> +<?php +} +?> + <p class="item_timestamp"><?php echo $time; ?></p> </div> </div> -___END; - -// php bug. must have close tag after heredocs -?>
\ No newline at end of file diff --git a/mod/search/views/rss/search/comments/entity.php b/mod/search/views/rss/search/comments/entity.php new file mode 100644 index 000000000..1b788fbae --- /dev/null +++ b/mod/search/views/rss/search/comments/entity.php @@ -0,0 +1,53 @@ +<?php +/** + * Elgg search comment view + * + * @package Elgg + * @subpackage Core + * @author Curverider Ltd + * @link http://elgg.org/ + */ +$entity = $vars['entity']; + +$author_name = ''; +$comment_author_guid = $entity->getVolatileData('search_matched_comment_owner_guid'); +$author = get_user($comment_author_guid); +if ($author) { + $author_name = $author->name; +} + +// @todo Sometimes we find comments on entities we can't display... +if ($entity->getVolatileData('search_unavailable_entity')) { + $title = sprintf(elgg_echo('search:comment_on'), elgg_echo('search:unavailable_entity')); +} else { + if ($entity->getType() == 'object') { + $title = $entity->title; + } else { + $title = $entity->name; + } + + if (!$title) { + $title = elgg_echo('item:' . $entity->getType() . ':' . $entity->getSubtype()); + } + + if (!$title) { + $title = elgg_echo('item:' . $entity->getType()); + } + + $title = sprintf(elgg_echo('search:comment_on'), $title); + $title .= ' ' . elgg_echo('search:comment_by') . ' ' . $author_name; + $url = $entity->getURL() . '#annotation-' . $entity->getVolatileData('search_match_annotation_id'); +} + +$description = $entity->getVolatileData('search_matched_comment'); +$tc = $entity->getVolatileData('search_matched_comment_time_created');; + +?> + +<item> + <guid isPermaLink='true'><?php echo htmlspecialchars($url); ?></guid> + <pubDate><?php echo date("r", $tc) ?></pubDate> + <link><?php echo htmlspecialchars($url); ?></link> + <title><![CDATA[<?php echo $title; ?>]]></title> + <description><![CDATA[<?php echo $description; ?>]]></description> +</item> |