diff options
Diffstat (limited to 'mod/thewire')
29 files changed, 392 insertions, 269 deletions
diff --git a/mod/thewire/actions/add.php b/mod/thewire/actions/add.php index 97b630678..6b3d8d5ba 100644 --- a/mod/thewire/actions/add.php +++ b/mod/thewire/actions/add.php @@ -17,7 +17,7 @@ if (empty($body)) { forward(REFERER); } -$guid = thewire_save_post($body, get_loggedin_userid(), $access_id, $parent_guid, $method); +$guid = thewire_save_post($body, elgg_get_logged_in_user_guid(), $access_id, $parent_guid, $method); if (!$guid) { register_error(elgg_echo("thewire:error")); forward(REFERER); diff --git a/mod/thewire/actions/delete.php b/mod/thewire/actions/delete.php index 58502a7e7..38355d25e 100644 --- a/mod/thewire/actions/delete.php +++ b/mod/thewire/actions/delete.php @@ -24,7 +24,7 @@ if ($thewire->getSubtype() == "thewire" && $thewire->canEdit()) { } // Get owning user - $owner = get_entity($thewire->getOwner()); + $owner = get_entity($thewire->getOwnerGUID()); // Delete it $rowsaffected = $thewire->delete(); diff --git a/mod/thewire/activate.php b/mod/thewire/activate.php new file mode 100644 index 000000000..1cc64ceb1 --- /dev/null +++ b/mod/thewire/activate.php @@ -0,0 +1,10 @@ +<?php +/** + * Register the ElggWire class for the object/thewire subtype + */ + +if (get_subtype_id('object', 'thewire')) { + update_subtype('object', 'thewire', 'ElggWire'); +} else { + add_subtype('object', 'thewire', 'ElggWire'); +} diff --git a/mod/thewire/classes/ElggWire.php b/mod/thewire/classes/ElggWire.php index 3242dd5cb..9c92dd8f2 100644 --- a/mod/thewire/classes/ElggWire.php +++ b/mod/thewire/classes/ElggWire.php @@ -1,6 +1,10 @@ <?php /** * ElggWire Class + * + * @property string $method The method used to create the wire post (site, sms, api) + * @property bool $reply Whether this wire post was a reply to another post + * @property int $wire_thread The identifier of the thread for this wire post */ class ElggWire extends ElggObject { diff --git a/mod/thewire/deactivate.php b/mod/thewire/deactivate.php new file mode 100644 index 000000000..3e20207a1 --- /dev/null +++ b/mod/thewire/deactivate.php @@ -0,0 +1,6 @@ +<?php +/** + * Deregister the ElggWire class + */ + +update_subtype('object', 'thewire');
\ No newline at end of file diff --git a/mod/thewire/js/thewire.js b/mod/thewire/js/thewire.js deleted file mode 100644 index 61f29db81..000000000 --- a/mod/thewire/js/thewire.js +++ /dev/null @@ -1,28 +0,0 @@ -elgg.provide('elgg.thewire'); - -elgg.thewire.init = function() { - $("#thewire-textarea").live('keydown', function() { - elgg.thewire.textCounter(this, $("#thewire-characters-remaining span"), 140); - }); - $("#thewire-textarea").live('keyup', function() { - elgg.thewire.textCounter(this, $("#thewire-characters-remaining span"), 140); - }); -} - -elgg.thewire.textCounter = function(textarea, status, limit) { - - var remaining_chars = limit - textarea.value.length; - status.html(remaining_chars); - - if (remaining_chars < 0) { - status.parent().css("color", "#D40D12"); - $("#thewire-submit-button").attr('disabled', 'disabled'); - $("#thewire-submit-button").addClass('elgg-state-disabled'); - } else { - status.parent().css("color", ""); - $("#thewire-submit-button").removeAttr('disabled', 'disabled'); - $("#thewire-submit-button").removeClass('elgg-state-disabled'); - } -} - -elgg.register_hook_handler('init', 'system', elgg.thewire.init);
\ No newline at end of file diff --git a/mod/thewire/languages/en.php b/mod/thewire/languages/en.php index 0896ecf14..3c83d145f 100644 --- a/mod/thewire/languages/en.php +++ b/mod/thewire/languages/en.php @@ -13,19 +13,25 @@ $english = array( 'thewire:user' => "%s's wire posts", 'thewire:friends' => "Friends' wire posts", 'thewire:reply' => "Reply", - 'thewire:replying' => "Replying to %s who wrote", + 'thewire:replying' => "Replying to %s (@%s) who wrote", 'thewire:thread' => "Thread", - 'thewire:previous' => "Previous", 'thewire:charleft' => "characters remaining", 'thewire:tags' => "Wire posts tagged with '%s'", 'thewire:noposts' => "No wire posts yet", 'item:object:thewire' => "Wire posts", 'thewire:update' => 'Update', + 'thewire:by' => 'Wire post by %s', + + 'thewire:previous' => "Previous", + 'thewire:hide' => "Hide", + 'thewire:previous:help' => "View previous post", + 'thewire:hide:help' => "Hide previous post", /** * The wire river */ - 'thewire:river:create' => "posted to the wire", + 'river:create:object:thewire' => "%s posted to the %s", + 'thewire:wire' => 'wire', /** * Wire widget @@ -39,10 +45,17 @@ $english = array( */ 'thewire:posted' => "Your message was successfully posted to the wire.", 'thewire:deleted' => "The wire post was successfully deleted.", - 'thewire:blank' => "Sorry, you need to enter come text before we can post this.", + 'thewire:blank' => "Sorry, you need to enter some text before we can post this.", 'thewire:notfound' => "Sorry, we could not find the specified wire post.", 'thewire:notdeleted' => "Sorry. We could not delete this wire post.", + /** + * Notifications + */ + 'thewire:notify:subject' => "New wire post", + 'thewire:notify:reply' => '%s responded to %s on the wire:', + 'thewire:notify:post' => '%s posted on the wire:', + ); add_translation("en", $english); diff --git a/mod/thewire/manifest.xml b/mod/thewire/manifest.xml index 27dd5732d..962ed12f1 100644 --- a/mod/thewire/manifest.xml +++ b/mod/thewire/manifest.xml @@ -8,11 +8,10 @@ <description>Microblogging for Elgg</description> <website>http://www.elgg.org/</website> <copyright>See COPYRIGHT.txt</copyright> - <license>GNU Public License version 2</license> + <license>GNU General Public License version 2</license> <requires> - <type>elgg_version</type> - <version>2010030101</version> + <type>elgg_release</type> + <version>1.8</version> </requires> - <admin_interface>simple</admin_interface> <activate_on_install>true</activate_on_install> </plugin_manifest> diff --git a/mod/thewire/pages/thewire/everyone.php b/mod/thewire/pages/thewire/everyone.php index e3d38ace5..c7438747e 100644 --- a/mod/thewire/pages/thewire/everyone.php +++ b/mod/thewire/pages/thewire/everyone.php @@ -8,22 +8,23 @@ elgg_push_breadcrumb(elgg_echo('thewire')); $title = elgg_echo('thewire:everyone'); +$content = ''; if (elgg_is_logged_in()) { - $content .= elgg_view_form('thewire/add'); + $form_vars = array('class' => 'thewire-form'); + $content .= elgg_view_form('thewire/add', $form_vars); $content .= elgg_view('input/urlshortener'); } $content .= elgg_list_entities(array( 'type' => 'object', 'subtype' => 'thewire', - 'limit' => 15, + 'limit' => get_input('limit', 15), )); $body = elgg_view_layout('content', array( 'filter_context' => 'all', 'content' => $content, 'title' => $title, - 'buttons' => false, 'sidebar' => elgg_view('thewire/sidebar'), )); diff --git a/mod/thewire/pages/thewire/friends.php b/mod/thewire/pages/thewire/friends.php index ab452aa55..efa7e7a56 100644 --- a/mod/thewire/pages/thewire/friends.php +++ b/mod/thewire/pages/thewire/friends.php @@ -4,6 +4,9 @@ */ $owner = elgg_get_page_owner_entity(); +if (!$owner) { + forward('', '404'); +} $title = elgg_echo('thewire:friends'); @@ -11,13 +14,18 @@ elgg_push_breadcrumb(elgg_echo('thewire'), "thewire/all"); elgg_push_breadcrumb($owner->name, "thewire/owner/$owner->username"); elgg_push_breadcrumb(elgg_echo('friends')); -$content = list_user_friends_objects($owner->guid, 'thewire', 15, false); +if (elgg_get_logged_in_user_guid() == $owner->guid) { + $form_vars = array('class' => 'thewire-form'); + $content = elgg_view_form('thewire/add', $form_vars); + $content .= elgg_view('input/urlshortener'); +} + +$content .= list_user_friends_objects($owner->guid, 'thewire', 15, false); $body = elgg_view_layout('content', array( 'filter_context' => 'friends', 'content' => $content, 'title' => $title, - 'buttons' => false, )); echo elgg_view_page($title, $body); diff --git a/mod/thewire/pages/thewire/owner.php b/mod/thewire/pages/thewire/owner.php index d61307990..dc25940e1 100644 --- a/mod/thewire/pages/thewire/owner.php +++ b/mod/thewire/pages/thewire/owner.php @@ -5,29 +5,34 @@ */ $owner = elgg_get_page_owner_entity(); +if (!$owner) { + forward('', '404'); +} $title = elgg_echo('thewire:user', array($owner->name)); elgg_push_breadcrumb(elgg_echo('thewire'), "thewire/all"); elgg_push_breadcrumb($owner->name); -if (get_loggedin_userid() == $owner->guid) { - $content = elgg_view_form('thewire/add'); +$context = ''; +if (elgg_get_logged_in_user_guid() == $owner->guid) { + $form_vars = array('class' => 'thewire-form'); + $content = elgg_view_form('thewire/add', $form_vars); $content .= elgg_view('input/urlshortener'); + $context = 'mine'; } $content .= elgg_list_entities(array( 'type' => 'object', 'subtype' => 'thewire', 'owner_guid' => $owner->guid, - 'limit' => 15, + 'limit' => get_input('limit', 15), )); $body = elgg_view_layout('content', array( - 'filter_context' => 'mine', + 'filter_context' => $context, 'content' => $content, 'title' => $title, - 'buttons' => false, 'sidebar' => elgg_view('thewire/sidebar'), )); diff --git a/mod/thewire/pages/thewire/previous.php b/mod/thewire/pages/thewire/previous.php index 05fc3267e..a3f1cb01c 100644 --- a/mod/thewire/pages/thewire/previous.php +++ b/mod/thewire/pages/thewire/previous.php @@ -1,11 +1,20 @@ <?php /** - * Server up html for a post + * Serve up html for a post's parent */ $guid = (int) get_input('guid'); +$title = elgg_echo('thewire:previous'); $parent = thewire_get_parent($guid); if ($parent) { - echo elgg_view_entity($parent); -}
\ No newline at end of file + $body = elgg_view_entity($parent); +} + +$body = elgg_view_layout('content', array( + 'filter' => false, + 'content' => $body, + 'title' => $title, +)); + +echo elgg_view_page($title, $body);
\ No newline at end of file diff --git a/mod/thewire/pages/thewire/reply.php b/mod/thewire/pages/thewire/reply.php index 826d513b6..df4511c51 100644 --- a/mod/thewire/pages/thewire/reply.php +++ b/mod/thewire/pages/thewire/reply.php @@ -14,7 +14,8 @@ elgg_push_breadcrumb(elgg_echo('thewire'), 'thewire/all'); elgg_push_breadcrumb($title); $content = elgg_view('thewire/reply', array('post' => $post)); -$content .= elgg_view_form('thewire/add', array(), array('post' => $post)); +$form_vars = array('class' => 'thewire-form'); +$content .= elgg_view_form('thewire/add', $form_vars, array('post' => $post)); $content .= elgg_view('input/urlshortener'); @@ -22,7 +23,6 @@ $body = elgg_view_layout('content', array( 'filter' => false, 'content' => $content, 'title' => $title, - 'buttons' => false, )); echo elgg_view_page($title, $body); diff --git a/mod/thewire/pages/thewire/tag.php b/mod/thewire/pages/thewire/tag.php index 53f9e9db9..1c88030ec 100644 --- a/mod/thewire/pages/thewire/tag.php +++ b/mod/thewire/pages/thewire/tag.php @@ -30,7 +30,6 @@ $body = elgg_view_layout('content', array( 'filter' => false, 'content' => $content, 'title' => $title, - 'buttons' => false, )); echo elgg_view_page($title, $body); diff --git a/mod/thewire/pages/thewire/thread.php b/mod/thewire/pages/thewire/thread.php index 5c32a8400..ec2709430 100644 --- a/mod/thewire/pages/thewire/thread.php +++ b/mod/thewire/pages/thewire/thread.php @@ -22,7 +22,6 @@ $body = elgg_view_layout('content', array( 'filter' => false, 'content' => $content, 'title' => $title, - 'buttons' => false, )); echo elgg_view_page($title, $body); diff --git a/mod/thewire/pages/thewire/view.php b/mod/thewire/pages/thewire/view.php new file mode 100644 index 000000000..1709e5e9a --- /dev/null +++ b/mod/thewire/pages/thewire/view.php @@ -0,0 +1,31 @@ +<?php +/** + * View individual wire post + */ + +$post = get_entity(get_input('guid')); +if (!$post) { + register_error(elgg_echo('noaccess')); + $_SESSION['last_forward_from'] = current_page_url(); + forward(''); +} +$owner = $post->getOwnerEntity(); +if (!$owner) { + forward(); +} + +$title = elgg_echo('thewire:by', array($owner->name)); + +elgg_push_breadcrumb(elgg_echo('thewire'), 'thewire/all'); +elgg_push_breadcrumb($owner->name, 'thewire/owner/' . $owner->username); +elgg_push_breadcrumb($title); + +$content = elgg_view_entity($post); + +$body = elgg_view_layout('content', array( + 'filter' => false, + 'content' => $content, + 'title' => $title, +)); + +echo elgg_view_page($title, $body); diff --git a/mod/thewire/start.php b/mod/thewire/start.php index 0c35b0231..8b01cc57a 100644 --- a/mod/thewire/start.php +++ b/mod/thewire/start.php @@ -12,19 +12,19 @@ * Nathan Koterba */ -register_elgg_event_handler('init', 'system', 'thewire_init'); +elgg_register_event_handler('init', 'system', 'thewire_init'); /** * The Wire initialization */ function thewire_init() { - global $CONFIG; - if (!update_subtype('object', 'thewire', 'ElggWire')) { - add_subtype('object', 'thewire', 'ElggWire'); - } - - elgg_register_js('elgg.thewire', 'mod/thewire/js/thewire.js', 'footer'); + // register the wire's JavaScript + $thewire_js = elgg_get_simplecache_url('js', 'thewire'); + elgg_register_simplecache_view('js/thewire'); + elgg_register_js('elgg.thewire', $thewire_js, 'footer'); + + elgg_register_ajax_view('thewire/previous'); // add a site navigation item $item = new ElggMenuItem('thewire', elgg_echo('thewire'), 'thewire/all'); @@ -37,7 +37,7 @@ function thewire_init() { elgg_register_plugin_hook_handler('register', 'menu:entity', 'thewire_setup_entity_menu_items'); // Extend system CSS with our own styles, which are defined in the thewire/css view - elgg_extend_view('css', 'thewire/css'); + elgg_extend_view('css/elgg', 'thewire/css'); //extend views elgg_extend_view('activity/thewire', 'thewire/activity_view'); @@ -50,24 +50,25 @@ function thewire_init() { // Register a URL handler for thewire posts elgg_register_entity_url_handler('object', 'thewire', 'thewire_url'); - // Your thewire widget - add_widget_type('thewire', elgg_echo('thewire'), elgg_echo("thewire:widget:desc")); + elgg_register_widget_type('thewire', elgg_echo('thewire'), elgg_echo("thewire:widget:desc")); - // Register entity type + // Register for search elgg_register_entity_type('object', 'thewire'); // Register granular notification for this type register_notification_object('object', 'thewire', elgg_echo('thewire:notify:subject')); // Listen to notification events and supply a more useful message - register_plugin_hook('notify:entity:message', 'object', 'thewire_notify_message'); + elgg_register_plugin_hook_handler('notify:entity:message', 'object', 'thewire_notify_message'); // Register actions - $action_base = $CONFIG->pluginspath . 'thewire/actions'; - register_action("thewire/add", false, "$action_base/add.php"); - register_action("thewire/delete", false, "$action_base/delete.php"); + $action_base = elgg_get_plugins_path() . 'thewire/actions'; + elgg_register_action("thewire/add", "$action_base/add.php"); + elgg_register_action("thewire/delete", "$action_base/delete.php"); - register_plugin_hook('unit_test', 'system', 'thewire_test'); + elgg_register_plugin_hook_handler('unit_test', 'system', 'thewire_test'); + + elgg_register_event_handler('upgrade', 'system', 'thewire_run_upgrades'); } /** @@ -78,61 +79,72 @@ function thewire_init() { * thewire/owner/<username> View this user's wire posts * thewire/following/<username> View the posts of those this user follows * thewire/reply/<guid> Reply to a post - * thewire/view/<guid> View a conversation thread + * thewire/view/<guid> View a post + * thewire/thread/<id> View a conversation thread * thewire/tag/<tag> View wire posts tagged with <tag> * * @param array $page From the page_handler function - * @return true|false Depending on success + * @return bool */ function thewire_page_handler($page) { $base_dir = elgg_get_plugins_path() . 'thewire/pages/thewire'; - // if just /thewire go to global view in the else statement - if (isset($page[0]) && $page[0]) { - - switch ($page[0]) { - case "all": - include "$base_dir/everyone.php"; - break; - - case "friends": - include "$base_dir/friends.php"; - break; - - case "owner": - include "$base_dir/owner.php"; - break; - - case "thread": - if (isset($page[1])) { - set_input('thread_id', $page[1]); - } - include "$base_dir/thread.php"; - break; - case "reply": - if (isset($page[1])) { - set_input('guid', $page[1]); - } - include "$base_dir/reply.php"; - break; - case "tag": - if (isset($page[1])) { - set_input('tag', $page[1]); - } - include "$base_dir/tag.php"; - break; - case "previous": - if (isset($page[1])) { - set_input('guid', $page[1]); - } - include "$base_dir/previous.php"; - break; - } - } else { - include "$base_dir/everyone.php"; + if (!isset($page[0])) { + $page = array('all'); } + switch ($page[0]) { + case "all": + include "$base_dir/everyone.php"; + break; + + case "friends": + include "$base_dir/friends.php"; + break; + + case "owner": + include "$base_dir/owner.php"; + break; + + case "view": + if (isset($page[1])) { + set_input('guid', $page[1]); + } + include "$base_dir/view.php"; + break; + + case "thread": + if (isset($page[1])) { + set_input('thread_id', $page[1]); + } + include "$base_dir/thread.php"; + break; + + case "reply": + if (isset($page[1])) { + set_input('guid', $page[1]); + } + include "$base_dir/reply.php"; + break; + + case "tag": + if (isset($page[1])) { + set_input('tag', $page[1]); + } + include "$base_dir/tag.php"; + break; + + case "previous": + if (isset($page[1])) { + set_input('guid', $page[1]); + } + include "$base_dir/previous.php"; + break; + + default: + return false; + } return true; } @@ -211,7 +223,7 @@ function thewire_filter($text) { // usernames $text = preg_replace( - '/(^|[^\w])@([\w]+)/', + '/(^|[^\w])@([\p{L}\p{Nd}._]+)/u', '$1<a href="' . $CONFIG->wwwroot . 'thewire/owner/$2">@$2</a>', $text); @@ -277,6 +289,16 @@ function thewire_save_post($text, $userid, $access_id, $parent_guid = 0, $method if ($guid) { add_to_river('river/object/thewire/create', 'create', $post->owner_guid, $post->guid); + + // let other plugins know we are setting a user status + $params = array( + 'entity' => $post, + 'user' => $post->getOwnerEntity(), + 'message' => $post->description, + 'url' => $post->getURL(), + 'origin' => 'thewire', + ); + elgg_trigger_plugin_hook('status', 'user', $params); } return $guid; @@ -292,7 +314,7 @@ function thewire_save_post($text, $userid, $access_id, $parent_guid = 0, $method */ function thewire_send_response_notification($guid, $parent_guid, $user) { $parent_owner = get_entity($parent_guid)->getOwnerEntity(); - $user = get_loggedin_user(); + $user = elgg_get_logged_in_user_entity(); // check to make sure user is not responding to self if ($parent_owner->guid != $user->guid) { @@ -400,6 +422,8 @@ function thewire_setup_entity_menu_items($hook, $type, $value, $params) { 'text' => elgg_echo('thewire:previous'), 'href' => "thewire/previous/$entity->guid", 'priority' => 160, + 'link_class' => 'thewire-previous', + 'title' => elgg_echo('thewire:previous:help'), ); $value[] = ElggMenuItem::factory($options); } @@ -440,3 +464,12 @@ function thewire_test($hook, $type, $value, $params) { $value[] = $CONFIG->pluginspath . 'thewire/tests/regex.php'; return $value; } + +function thewire_run_upgrades() { + $path = dirname(__FILE__) . '/upgrades/'; + $files = elgg_get_upgrade_files($path); + + foreach ($files as $file) { + include $path . $file; + } +}
\ No newline at end of file diff --git a/mod/thewire/tests/regex.php b/mod/thewire/tests/regex.php index f5487a422..c73e06bdc 100644 --- a/mod/thewire/tests/regex.php +++ b/mod/thewire/tests/regex.php @@ -127,6 +127,12 @@ class TheWireRegexTest extends ElggCoreUnitTest { $expected = "test (" . $this->getUserWireLink('user') . ") test"; $result = thewire_filter($text); $this->assertEqual($result, $expected); + + // utf8 characters + $text = "@tyúkanyó"; + $expected = $this->getUserWireLink('tyúkanyó'); + $result = thewire_filter($text); + $this->assertEqual($result, $expected); } /** diff --git a/mod/thewire/upgrades/2012122701-fix_entity_class.php b/mod/thewire/upgrades/2012122701-fix_entity_class.php new file mode 100644 index 000000000..a1f382712 --- /dev/null +++ b/mod/thewire/upgrades/2012122701-fix_entity_class.php @@ -0,0 +1,8 @@ +<?php +/** + * Register thewire objects with the ElggWire class. + */ + +if (get_subtype_id('object', 'thewire')) { + update_subtype('object', 'thewire', 'ElggWire'); +}
\ No newline at end of file diff --git a/mod/thewire/views/default/forms/thewire/add.php b/mod/thewire/views/default/forms/thewire/add.php index 67585b0df..8607b3662 100644 --- a/mod/thewire/views/default/forms/thewire/add.php +++ b/mod/thewire/views/default/forms/thewire/add.php @@ -20,12 +20,17 @@ if ($post) { 'value' => $post->guid, )); } + +echo elgg_view('input/plaintext', array( + 'name' => 'body', + 'class' => 'mtm', + 'id' => 'thewire-textarea', +)); ?> -<textarea id="thewire-textarea" name="body" class="mtm"></textarea> <div id="thewire-characters-remaining"> <span>140</span> <?php echo elgg_echo('thewire:charleft'); ?> </div> -<div class="mts"> +<div class="elgg-foot mts"> <?php echo elgg_view('input/submit', array( diff --git a/mod/thewire/views/default/js/thewire.php b/mod/thewire/views/default/js/thewire.php new file mode 100644 index 000000000..ba8f35050 --- /dev/null +++ b/mod/thewire/views/default/js/thewire.php @@ -0,0 +1,86 @@ +<?php +/** + * The wire's JavaScript + */ + +$site_url = elgg_get_site_url(); + +?> + +elgg.provide('elgg.thewire'); + +elgg.thewire.init = function() { + $("#thewire-textarea").live('keydown', function() { + elgg.thewire.textCounter(this, $("#thewire-characters-remaining span"), 140); + }); + $("#thewire-textarea").live('keyup', function() { + elgg.thewire.textCounter(this, $("#thewire-characters-remaining span"), 140); + }); + + $(".thewire-previous").live('click', elgg.thewire.viewPrevious); +}; + +/** + * Update the number of characters left with every keystroke + * + * @param {Object} textarea + * @param {Object} status + * @param {integer} limit + * @return void + */ +elgg.thewire.textCounter = function(textarea, status, limit) { + + var remaining_chars = limit - $(textarea).val().length; + status.html(remaining_chars); + + if (remaining_chars < 0) { + status.parent().addClass("thewire-characters-remaining-warning"); + $("#thewire-submit-button").attr('disabled', 'disabled'); + $("#thewire-submit-button").addClass('elgg-state-disabled'); + } else { + status.parent().removeClass("thewire-characters-remaining-warning"); + $("#thewire-submit-button").removeAttr('disabled', 'disabled'); + $("#thewire-submit-button").removeClass('elgg-state-disabled'); + } +}; + +/** + * Display the previous wire post + * + * Makes Ajax call to load the html and handles changing the previous link + * + * @param {Object} event + * @return void + */ +elgg.thewire.viewPrevious = function(event) { + var $link = $(this); + var postGuid = $link.attr("href").split("/").pop(); + var $previousDiv = $("#thewire-previous-" + postGuid); + + if ($link.html() == elgg.echo('thewire:hide')) { + $link.html(elgg.echo('thewire:previous')); + $link.attr("title", elgg.echo('thewire:previous:help')); + $previousDiv.slideUp(400); + } else { + $link.html(elgg.echo('thewire:hide')); + $link.attr("title", elgg.echo('thewire:hide:help')); + + $.ajax({type: "GET", + url: elgg.config.wwwroot + "ajax/view/thewire/previous", + dataType: "html", + cache: false, + data: {guid: postGuid}, + success: function(htmlData) { + if (htmlData.length > 0) { + $previousDiv.html(htmlData); + $previousDiv.slideDown(600); + } + } + }); + + } + + event.preventDefault(); +}; + +elgg.register_hook_handler('init', 'system', elgg.thewire.init); diff --git a/mod/thewire/views/default/object/thewire.php b/mod/thewire/views/default/object/thewire.php index ace290589..134c87243 100644 --- a/mod/thewire/views/default/object/thewire.php +++ b/mod/thewire/views/default/object/thewire.php @@ -5,8 +5,9 @@ * @uses $vars['entity'] */ +elgg_load_js('elgg.thewire'); -$full = elgg_extract('full', $vars, FALSE); +$full = elgg_extract('full_view', $vars, FALSE); $post = elgg_extract('entity', $vars, FALSE); if (!$post) { @@ -25,6 +26,7 @@ $owner_icon = elgg_view_entity_icon($owner, 'tiny'); $owner_link = elgg_view('output/url', array( 'href' => "thewire/owner/$owner->username", 'text' => $owner->name, + 'is_trusted' => true, )); $author_text = elgg_echo('byline', array($owner_link)); $date = elgg_view_friendly_time($post->time_created); @@ -50,6 +52,12 @@ $params = array( 'content' => thewire_filter($post->description), 'tags' => false, ); -$list_body = elgg_view('page/components/summary', $params); +$params = $params + $vars; +$list_body = elgg_view('object/elements/summary', $params); echo elgg_view_image_block($owner_icon, $list_body); + +if ($post->reply) { + echo "<div class=\"thewire-parent hidden\" id=\"thewire-previous-{$post->guid}\">"; + echo "</div>"; +} diff --git a/mod/thewire/views/default/river/object/thewire/create.php b/mod/thewire/views/default/river/object/thewire/create.php index d4dac38ee..c75a42b3f 100644 --- a/mod/thewire/views/default/river/object/thewire/create.php +++ b/mod/thewire/views/default/river/object/thewire/create.php @@ -7,18 +7,25 @@ $object = $vars['item']->getObjectEntity(); $excerpt = strip_tags($object->description); $excerpt = thewire_filter($excerpt); -$params = array( - 'href' => $object->getURL(), - 'text' => $object->title, -); -$link = elgg_view('output/url', $params); +$subject = $vars['item']->getSubjectEntity(); +$subject_link = elgg_view('output/url', array( + 'href' => $subject->getURL(), + 'text' => $subject->name, + 'class' => 'elgg-river-subject', + 'is_trusted' => true, +)); -echo elgg_echo('thewire:river:create'); +$object_link = elgg_view('output/url', array( + 'href' => "thewire/owner/$subject->username", + 'text' => elgg_echo('thewire:wire'), + 'class' => 'elgg-river-object', + 'is_trusted' => true, +)); -echo " $link"; +$summary = elgg_echo("river:create:object:thewire", array($subject_link, $object_link)); -if ($excerpt) { - echo '<div class="elgg-river-content">'; - echo $excerpt; - echo '</div>'; -} +echo elgg_view('river/elements/layout', array( + 'item' => $vars['item'], + 'message' => $excerpt, + 'summary' => $summary, +));
\ No newline at end of file diff --git a/mod/thewire/views/default/thewire/css.php b/mod/thewire/views/default/thewire/css.php index afc3a16aa..d11cce74a 100644 --- a/mod/thewire/views/default/thewire/css.php +++ b/mod/thewire/views/default/thewire/css.php @@ -27,100 +27,9 @@ The Wire text-align: right; background: white; } -<?php -return true; -?> - -/* new wire post form */ -.new_wire_post { - margin:10px 0 15px 0; - padding-bottom:15px; - border-bottom: 1px solid #dedede; -} -.new_wire_post input[type="submit"] { - margin:3px 0 0 0; - float:right; -} -.new_wire_post textarea { - width: 719px; - height: 52px; - padding: 2px 5px 5px 5px; - font-size: 120%; - color:#333333; -} -.character_count { - width: 642px; - color:#666666; -} -.character_count input { - color:#666666; - border:none; - font-size: 100%; - font-weight: bold; - padding:0 2px 0 0; - margin:0; - text-align: right; - background: white; -} -.character_count input:focus { - border:none; - background:white; -} - - -/* wire posts listings */ -.wire_post { - padding-bottom:10px; - margin-bottom:5px; - background-image: url(<?php echo elgg_get_site_url(); ?>mod/thewire/graphics/thewire_speech_bubble.gif); - background-repeat: no-repeat; - background-position: right bottom; -} -.members-list .wire_post { /* when displayed in lists of friends */ - margin-top:4px; -} -.wire_post_contents { - background-color: #eee; - margin:0; - padding:5px; - line-height: 1.2em; - min-height: 34px; - position: relative; -} -.wire_post_icon { - float:left; - margin-right:8px; +.thewire-characters-remaining-warning { + color: #D40D12 !important; } -.wire_post_info { - margin-top:-3px; - float:left; - width:620px; - overflow: hidden; -} -.wire_post_options { - float:right; - width:65px; -} -.wire_post_options .elgg-button-action.reply.small { - float:right; -} -.wire_post_options .elgg-button-delete { - position: absolute; - bottom:5px; - right:5px; -} - - -/* latest wire post on profile page */ -.wire_post .elgg-button-action.update.small { - float:right; - padding:4px; - position: absolute; - bottom:5px; - right:5px; -} - -/* river wire entry */ -.river_item .reply_link { - display:block; +.thewire-parent { + margin-left: 40px; } diff --git a/mod/thewire/views/default/thewire/previous.php b/mod/thewire/views/default/thewire/previous.php new file mode 100644 index 000000000..e1ca83e24 --- /dev/null +++ b/mod/thewire/views/default/thewire/previous.php @@ -0,0 +1,11 @@ +<?php +/** + * Serve up html for a post + */ + +$guid = (int) get_input('guid'); + +$parent = thewire_get_parent($guid); +if ($parent) { + echo elgg_view_entity($parent); +} diff --git a/mod/thewire/views/default/thewire/profile_status.php b/mod/thewire/views/default/thewire/profile_status.php index 6ab47bccb..26e1403fe 100644 --- a/mod/thewire/views/default/thewire/profile_status.php +++ b/mod/thewire/views/default/thewire/profile_status.php @@ -9,8 +9,8 @@ $owner = $vars['entity']->guid; //grab the user's latest from the wire $params = array( - 'types' => 'object', - 'subtypes' => 'thewire', + 'type' => 'object', + 'subtype' => 'thewire', 'owner_guid' => $owner, 'limit' => 1, ); @@ -27,7 +27,8 @@ if ($latest_wire && count($latest_wire) > 0) { $button = elgg_view('output/url', array( 'text' => elgg_echo('thewire:update'), 'href' => $url_to_wire, - 'class' => 'elgg-button elgg-button-action right', + 'class' => 'elgg-button elgg-button-action float-alt', + 'is_trusted' => true, )); } diff --git a/mod/thewire/views/default/thewire/reply.php b/mod/thewire/views/default/thewire/reply.php index 3794e1454..341b691b1 100644 --- a/mod/thewire/views/default/thewire/reply.php +++ b/mod/thewire/views/default/thewire/reply.php @@ -5,7 +5,10 @@ $post = $vars['post']; $poster = $post->getOwnerEntity(); - +$poster_details = array( + htmlspecialchars($poster->name, ENT_QUOTES, 'UTF-8'), + htmlspecialchars($poster->username, ENT_QUOTES, 'UTF-8'), +); ?> -<b><?php echo elgg_echo('thewire:replying', array($poster->name)); ?>: </b> +<b><?php echo elgg_echo('thewire:replying', $poster_details); ?>: </b> <?php echo $post->description;
\ No newline at end of file diff --git a/mod/thewire/views/default/widgets/thewire/content.php b/mod/thewire/views/default/widgets/thewire/content.php index 835a328b0..7212d4397 100644 --- a/mod/thewire/views/default/widgets/thewire/content.php +++ b/mod/thewire/views/default/widgets/thewire/content.php @@ -22,6 +22,7 @@ if ($content) { $more_link = elgg_view('output/url', array( 'href' => $owner_url, 'text' => elgg_echo('thewire:moreposts'), + 'is_trusted' => true, )); echo "<span class=\"elgg-widget-more\">$more_link</span>"; } else { diff --git a/mod/thewire/views/rss/object/thewire.php b/mod/thewire/views/rss/object/thewire.php index 8229f46f1..8fddb8aa8 100644 --- a/mod/thewire/views/rss/object/thewire.php +++ b/mod/thewire/views/rss/object/thewire.php @@ -2,46 +2,35 @@ /** * Elgg thewire rss view * - * @package Elgg - * @subpackage Core + * @package ElggTheWire */ $owner = $vars['entity']->getOwnerEntity(); -if ($owner) { - $title = elgg_echo('thewire:by', array($owner->name)); -} else { - $subtitle = strip_tags($vars['entity']->description); - $title = elgg_get_excerpt($subtitle, 32); +if (!$owner) { + return true; } -?> +$title = elgg_echo('thewire:by', array($owner->name)); +$permalink = htmlspecialchars($vars['entity']->getURL(), ENT_NOQUOTES, 'UTF-8'); +$pubdate = date('r', $vars['entity']->getTimeCreated()); + +$description = elgg_autop($vars['entity']->description); + +$creator = elgg_view('page/components/creator', $vars); +$georss = elgg_view('page/components/georss', $vars); +$extension = elgg_view('extensions/item', $vars); + +$item = <<<__HTML <item> -<guid isPermaLink='false'><?php echo $vars['entity']->getGUID(); ?></guid> -<pubDate><?php echo date("r", $vars['entity']->time_created) ?></pubDate> -<link><?php echo htmlspecialchars($vars['entity']->getURL()); ?></link> -<title><![CDATA[<?php echo $title; ?>]]></title> -<description><![CDATA[<?php echo (autop($vars['entity']->description)); ?>]]></description> -<?php -$owner = $vars['entity']->getOwnerEntity(); -if ($owner) { - ?> - <dc:creator><?php echo $owner->name; ?></dc:creator> - <?php -} -?> -<?php -if ( - ($vars['entity'] instanceof Locatable) && - ($vars['entity']->getLongitude()) && - ($vars['entity']->getLatitude()) -) { - ?> - <georss:point> - <?php echo $vars['entity']->getLatitude(); ?> <?php echo $vars['entity']->getLongitude(); ?> - </georss:point> - <?php -} -?> -<?php echo elgg_view('extensions/item'); ?> + <guid isPermaLink="true">$permalink</guid> + <pubDate>$pubdate</pubDate> + <link>$permalink</link> + <title><![CDATA[$title]]></title> + <description><![CDATA[$description]]></description> + $creator$georss$extension </item> + +__HTML; + +echo $item; |
