From 0ea89852d20e3bc99433c8d1392bf552269f6755 Mon Sep 17 00:00:00 2001 From: Zach Prezkuta <fermion@gmx.com> Date: Tue, 9 Oct 2012 09:41:33 -0600 Subject: [PATCH] allow themes to decide where live updates appear --- include/conversation.php | 67 ++++++++++++++++--- mod/community.php | 2 - mod/display.php | 6 +- mod/network.php | 25 ------- mod/notes.php | 4 -- mod/profile.php | 13 +--- mod/search.php | 4 +- view/conversation.tpl | 2 + view/theme/dispy/conversation.tpl | 2 + view/theme/dispy/threaded_conversation.tpl | 15 +++++ view/theme/facepark/conversation.tpl | 2 + view/theme/frost-mobile/conversation.tpl | 2 + .../frost-mobile/threaded_conversation.tpl | 2 + view/theme/quattro/conversation.tpl | 2 + view/theme/vier/threaded_conversation.tpl | 2 + view/threaded_conversation.tpl | 2 + 16 files changed, 93 insertions(+), 59 deletions(-) create mode 100644 view/theme/dispy/threaded_conversation.tpl diff --git a/include/conversation.php b/include/conversation.php index b41f3f0b76..6b7c3afb03 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -374,33 +374,79 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $ssl_state = ((local_user()) ? true : false); $profile_owner = 0; - $page_writeable = false; + $page_writeable = false; + $live_update_div = ''; $previewing = (($preview) ? ' preview ' : ''); if($mode === 'network') { $profile_owner = local_user(); $page_writeable = true; - } + if(!$update) { + // The special div is needed for liveUpdate to kick in for this page. + // We only launch liveUpdate if you aren't filtering in some incompatible + // way and also you aren't writing a comment (discovered in javascript). - if($mode === 'profile') { + $live_update_div = '<div id="live-network"></div>' . "\r\n" + . "<script> var profile_uid = " . $_SESSION['uid'] + . "; var netargs = '" . substr($a->cmd,8) + . '?f=' + . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '') + . ((x($_GET,'search')) ? '&search=' . $_GET['search'] : '') + . ((x($_GET,'star')) ? '&star=' . $_GET['star'] : '') + . ((x($_GET,'order')) ? '&order=' . $_GET['order'] : '') + . ((x($_GET,'bmark')) ? '&bmark=' . $_GET['bmark'] : '') + . ((x($_GET,'liked')) ? '&liked=' . $_GET['liked'] : '') + . ((x($_GET,'conv')) ? '&conv=' . $_GET['conv'] : '') + . ((x($_GET,'spam')) ? '&spam=' . $_GET['spam'] : '') + . ((x($_GET,'nets')) ? '&nets=' . $_GET['nets'] : '') + . ((x($_GET,'cmin')) ? '&cmin=' . $_GET['cmin'] : '') + . ((x($_GET,'cmax')) ? '&cmax=' . $_GET['cmax'] : '') + . ((x($_GET,'file')) ? '&file=' . $_GET['file'] : '') + + . "'; var profile_page = " . $a->pager['page'] . "; </script>\r\n"; + } + } + else if($mode === 'profile') { $profile_owner = $a->profile['profile_uid']; $page_writeable = can_write_wall($a,$profile_owner); - } - if($mode === 'notes') { + if(!$update) { + $tab = notags(trim($_GET['tab'])); + if($tab === 'posts') { + // This is ugly, but we can't pass the profile_uid through the session to the ajax updater, + // because browser prefetching might change it on us. We have to deliver it with the page. + + $live_update_div = '<div id="live-profile"></div>' . "\r\n" + . "<script> var profile_uid = " . $a->profile['profile_uid'] + . "; var netargs = '?f='; var profile_page = " . $a->pager['page'] . "; </script>\r\n"; + } + } + } + else if($mode === 'notes') { $profile_owner = local_user(); $page_writeable = true; + if(!$update) { + $live_update_div = '<div id="live-notes"></div>' . "\r\n" + . "<script> var profile_uid = " . local_user() + . "; var netargs = '/?f='; var profile_page = " . $a->pager['page'] . "; </script>\r\n"; + } } - - if($mode === 'display') { + else if($mode === 'display') { $profile_owner = $a->profile['uid']; $page_writeable = can_write_wall($a,$profile_owner); + $live_update_div = '<div id="live-display"></div>' . "\r\n"; } - - if($mode === 'community') { + else if($mode === 'community') { $profile_owner = 0; $page_writeable = false; + if(!$update) { + $live_update_div = '<div id="live-community"></div>' . "\r\n" + . "<script> var profile_uid = -1; var netargs = '/?f='; var profile_page = " . $a->pager['page'] . "; </script>\r\n"; + } + } + else if($mode === 'search') { + $live_update_div = '<div id="live-search"></div>' . "\r\n"; } $page_dropping = ((local_user() && local_user() == $profile_owner) ? true : false); @@ -630,7 +676,8 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $o = replace_macros($page_template, array( '$baseurl' => $a->get_baseurl($ssl_state), - '$remove' => t('remove'), + '$live_update' => $live_update_div, + '$remove' => t('remove'), '$mode' => $mode, '$user' => $a->user, '$threads' => $threads, diff --git a/mod/community.php b/mod/community.php index 4f6c3d3c94..defc873b0a 100644 --- a/mod/community.php +++ b/mod/community.php @@ -32,8 +32,6 @@ function community_content(&$a, $update = 0) { $o .= '<h3>' . t('Community') . '</h3>'; if(! $update) { nav_set_selected('community'); - $o .= '<div id="live-community"></div>' . "\r\n"; - $o .= "<script> var profile_uid = -1; var netargs = '/?f='; var profile_page = " . $a->pager['page'] . "; </script>\r\n"; } if(x($a->data,'search')) diff --git a/mod/display.php b/mod/display.php index 64df4cc6a9..be4a0ab9f9 100644 --- a/mod/display.php +++ b/mod/display.php @@ -14,7 +14,7 @@ function display_content(&$a) { require_once('include/acl_selectors.php'); - $o = '<div id="live-display"></div>' . "\r\n"; + $o = ''; $a->page['htmlhead'] .= get_markup_template('display-head.tpl'); @@ -78,7 +78,7 @@ function display_content(&$a) { return; } - if ($is_owner) + if ($is_owner) { $celeb = ((($a->user['page-flags'] == PAGE_SOAPBOX) || ($a->user['page-flags'] == PAGE_COMMUNITY)) ? true : false); $x = array( @@ -93,7 +93,7 @@ function display_content(&$a) { 'profile_uid' => local_user() ); $o .= status_editor($a,$x,0,true); - + } $sql_extra = item_permissions_sql($a->profile['uid'],$remote_contact,$groups); diff --git a/mod/network.php b/mod/network.php index ef1fd877b1..4d3603843e 100644 --- a/mod/network.php +++ b/mod/network.php @@ -584,31 +584,6 @@ function network_content(&$a, $update = 0) { $o .= get_events(); } - if(! $update) { - // The special div is needed for liveUpdate to kick in for this page. - // We only launch liveUpdate if you aren't filtering in some incompatible - // way and also you aren't writing a comment (discovered in javascript). - - $o .= '<div id="live-network"></div>' . "\r\n"; - $o .= "<script> var profile_uid = " . $_SESSION['uid'] - . "; var netargs = '" . substr($a->cmd,8) - . '?f=' - . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '') - . ((x($_GET,'search')) ? '&search=' . $_GET['search'] : '') - . ((x($_GET,'star')) ? '&star=' . $_GET['star'] : '') - . ((x($_GET,'order')) ? '&order=' . $_GET['order'] : '') - . ((x($_GET,'bmark')) ? '&bmark=' . $_GET['bmark'] : '') - . ((x($_GET,'liked')) ? '&liked=' . $_GET['liked'] : '') - . ((x($_GET,'conv')) ? '&conv=' . $_GET['conv'] : '') - . ((x($_GET,'spam')) ? '&spam=' . $_GET['spam'] : '') - . ((x($_GET,'nets')) ? '&nets=' . $_GET['nets'] : '') - . ((x($_GET,'cmin')) ? '&cmin=' . $_GET['cmin'] : '') - . ((x($_GET,'cmax')) ? '&cmax=' . $_GET['cmax'] : '') - . ((x($_GET,'file')) ? '&file=' . $_GET['file'] : '') - - . "'; var profile_page = " . $a->pager['page'] . "; </script>\r\n"; - } - $sql_extra3 = ''; if($datequery) { diff --git a/mod/notes.php b/mod/notes.php index afaa60f701..62796ed13f 100644 --- a/mod/notes.php +++ b/mod/notes.php @@ -66,10 +66,6 @@ function notes_content(&$a,$update = false) { $o .= status_editor($a,$x,$a->contact['id']); - $o .= '<div id="live-notes"></div>' . "\r\n"; - $o .= "<script> var profile_uid = " . local_user() - . "; var netargs = '/?f='; var profile_page = " . $a->pager['page'] . "; </script>\r\n"; - } // Construct permissions diff --git a/mod/profile.php b/mod/profile.php index b33b181de1..e7135515ff 100644 --- a/mod/profile.php +++ b/mod/profile.php @@ -8,8 +8,6 @@ function profile_init(&$a) { if(! x($a->page,'aside')) $a->page['aside'] = ''; - $blocked = (((get_config('system','block_public')) && (! local_user()) && (! remote_user())) ? true : false); - if($a->argc > 1) $which = $a->argv[1]; else { @@ -33,6 +31,7 @@ function profile_init(&$a) { profile_load($a,$which,$profile); + $blocked = (((get_config('system','block_public')) && (! local_user()) && (! remote_user())) ? true : false); $userblock = (($a->profile['hidewall'] && (! local_user()) && (! remote_user())) ? true : false); if((x($a->profile,'page-flags')) && ($a->profile['page-flags'] == PAGE_COMMUNITY)) { @@ -309,16 +308,6 @@ function profile_content(&$a, $update = 0) { $o .= get_events(); } - if((! $update) && ($tab === 'posts')) { - - // This is ugly, but we can't pass the profile_uid through the session to the ajax updater, - // because browser prefetching might change it on us. We have to deliver it with the page. - - $o .= '<div id="live-profile"></div>' . "\r\n"; - $o .= "<script> var profile_uid = " . $a->profile['profile_uid'] - . "; var netargs = '?f='; var profile_page = " . $a->pager['page'] . "; </script>\r\n"; - } - if($is_owner) { $r = q("UPDATE `item` SET `unseen` = 0 diff --git a/mod/search.php b/mod/search.php index 87c72367e8..ac848a0cec 100644 --- a/mod/search.php +++ b/mod/search.php @@ -93,9 +93,7 @@ function search_content(&$a) { require_once('include/security.php'); require_once('include/conversation.php'); - $o = '<div id="live-search"></div>' . "\r\n"; - - $o .= '<h3>' . t('Search') . '</h3>'; + $o = '<h3>' . t('Search') . '</h3>'; if(x($a->data,'search')) $search = notags(trim($a->data['search'])); diff --git a/view/conversation.tpl b/view/conversation.tpl index fccd9a8bb0..0e14646219 100644 --- a/view/conversation.tpl +++ b/view/conversation.tpl @@ -1,3 +1,5 @@ +$live_update + {{ for $threads as $thread }} <div id="tread-wrapper-$thread.id" class="tread-wrapper"> {{ for $thread.items as $item }} diff --git a/view/theme/dispy/conversation.tpl b/view/theme/dispy/conversation.tpl index 4a93dacf37..8eae2d6d1c 100644 --- a/view/theme/dispy/conversation.tpl +++ b/view/theme/dispy/conversation.tpl @@ -1,3 +1,5 @@ +$live_update + {{ for $threads as $thread }} <div id="tread-wrapper-$thread.id" class="tread-wrapper"> {{ for $thread.items as $item }} diff --git a/view/theme/dispy/threaded_conversation.tpl b/view/theme/dispy/threaded_conversation.tpl new file mode 100644 index 0000000000..3afb02c6ad --- /dev/null +++ b/view/theme/dispy/threaded_conversation.tpl @@ -0,0 +1,15 @@ +$live_update + +{{ for $threads as $item }} +{{ inc $item.template }}{{ endinc }} +{{ endfor }} + +<div id="conversation-end"></div> + +{{ if $dropping }} +<div id="item-delete-selected" class="fakelink" onclick="deleteCheckedItems(); return false;"> + <div id="item-delete-selected-icon" class="icon drophide" title="$dropping" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></div> + <div id="item-delete-selected-desc" >$dropping</div> +</div> +<div id="item-delete-selected-end"></div> +{{ endif }} diff --git a/view/theme/facepark/conversation.tpl b/view/theme/facepark/conversation.tpl index fccd9a8bb0..0e14646219 100644 --- a/view/theme/facepark/conversation.tpl +++ b/view/theme/facepark/conversation.tpl @@ -1,3 +1,5 @@ +$live_update + {{ for $threads as $thread }} <div id="tread-wrapper-$thread.id" class="tread-wrapper"> {{ for $thread.items as $item }} diff --git a/view/theme/frost-mobile/conversation.tpl b/view/theme/frost-mobile/conversation.tpl index 43b4d63ff0..54ddafbb1d 100644 --- a/view/theme/frost-mobile/conversation.tpl +++ b/view/theme/frost-mobile/conversation.tpl @@ -1,3 +1,5 @@ +$live_update + {{ for $threads as $thread }} <div id="tread-wrapper-$thread.id" class="tread-wrapper"> {{ for $thread.items as $item }} diff --git a/view/theme/frost-mobile/threaded_conversation.tpl b/view/theme/frost-mobile/threaded_conversation.tpl index 6e017ac29b..26ff683f26 100644 --- a/view/theme/frost-mobile/threaded_conversation.tpl +++ b/view/theme/frost-mobile/threaded_conversation.tpl @@ -1,3 +1,5 @@ +$live_update + {{ for $threads as $item }} {{ inc $item.template }}{{ endinc }} {{ endfor }} diff --git a/view/theme/quattro/conversation.tpl b/view/theme/quattro/conversation.tpl index 0d0faac373..36afc392eb 100644 --- a/view/theme/quattro/conversation.tpl +++ b/view/theme/quattro/conversation.tpl @@ -1,3 +1,5 @@ +$live_update + {{ for $threads as $thread }} <div id="tread-wrapper-$thread.id" class="tread-wrapper"> {{ for $thread.items as $item }} diff --git a/view/theme/vier/threaded_conversation.tpl b/view/theme/vier/threaded_conversation.tpl index 13c38acb2b..ad510185ee 100644 --- a/view/theme/vier/threaded_conversation.tpl +++ b/view/theme/vier/threaded_conversation.tpl @@ -1,3 +1,5 @@ +$live_update + {{ for $threads as $item }} <div id="tread-wrapper-$item.id" class="tread-wrapper {{ if $item.threaded }}threaded{{ endif }}"> diff --git a/view/threaded_conversation.tpl b/view/threaded_conversation.tpl index f60839e495..56adc8c969 100644 --- a/view/threaded_conversation.tpl +++ b/view/threaded_conversation.tpl @@ -1,3 +1,5 @@ +$live_update + {{ for $threads as $item }} {{ inc $item.template }}{{ endinc }} {{ endfor }}