elgg_make_sticky_form('bookmarks');
-$normalized = elgg_normalize_url($address);
-
-// slight hack. If the original link wasn't to this site, they probably didn't mean to post
-// a relative link. deny the action.
-$site_url = elgg_get_site_entity()->url;
-$test = str_replace($site_url, '', $normalized);
-
-if (trim($address, '/') == trim($test, '/')) {
- $address = '';
-} else {
- $address = $normalized;
+// don't use elgg_normalize_url() because we don't want
+// relative links resolved to this site.
+if ($address && !preg_match("#^((ht|f)tps?:)?//#i", $address)) {
+ $address = "http://$address";
}
if (!$title || !$address || !filter_var($address, FILTER_VALIDATE_URL)) {
if ($result) {
system_message(elgg_echo("messageboard:posted"));
- // push the newest content out if using ajax
- $is_ajax = array_key_exists('HTTP_X_REQUESTED_WITH', $_SERVER) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest';
- if ($is_ajax) {
- // always return the entity with the full ul and li
- // this is parsed out as needed by js.
- // if this is the only post we need to return the entire ul
- $options = array(
- 'annotations_name' => 'messageboard',
- 'guid' => $owner->getGUID(),
- 'limit' => $num_display,
- 'pagination' => false,
- 'reverse_order_by' => true,
- 'limit' => 1
- );
-
- $output = elgg_list_annotations($options);
- echo json_encode(array('post' => $output));
- }
+ $options = array(
+ 'annotations_name' => 'messageboard',
+ 'guid' => $owner->getGUID(),
+ 'limit' => $num_display,
+ 'pagination' => false,
+ 'reverse_order_by' => true,
+ 'limit' => 1
+ );
+
+ $output = elgg_list_annotations($options);
+ echo $output;
} else {
register_error(elgg_echo("messageboard:failure"));
var ul = form.next('ul.elgg-annotation-list');
if (ul.length < 1) {
- form.parent().append(json.output.post);
+ form.parent().append(json.output);
} else {
- ul.prepend($(json.output.post).find('li:first'));
+ ul.prepend($(json.output).find('li:first'));
};
form.find('textarea').val('');
}