aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Zotlabs/Module/Hq.php22
-rw-r--r--view/js/mod_hq.js4
-rw-r--r--view/tpl/notifications_widget.tpl42
3 files changed, 42 insertions, 26 deletions
diff --git a/Zotlabs/Module/Hq.php b/Zotlabs/Module/Hq.php
index 92dfc8587..78087c0f9 100644
--- a/Zotlabs/Module/Hq.php
+++ b/Zotlabs/Module/Hq.php
@@ -45,21 +45,26 @@ class Hq extends \Zotlabs\Web\Controller {
if(! $item_hash) {
$r = q("SELECT mid FROM item
- WHERE uid = %d
- AND mid = parent_mid
- $item_normal
+ WHERE uid = %d
+ AND item_thread_top = 1
ORDER BY created DESC
limit 1",
- local_channel()
+ intval(local_channel())
);
- $item_hash = 'b64.' . base64url_encode($r[0]['mid']);
- if(!$item_hash) {
+ if(!$r[0]['mid']) {
\App::$error = 404;
notice( t('Item not found.') . EOL);
return;
}
+
+ $item_hash = 'b64.' . base64url_encode($r[0]['mid']);
}
+
+ if(strpos($item_hash,'b64.') === 0)
+ $decoded = @base64url_decode(substr($item_hash,4));
+ if($decoded)
+ $item_hash = $decoded;
$updateable = false;
@@ -101,11 +106,6 @@ class Hq extends \Zotlabs\Web\Controller {
$target_item = null;
- if(strpos($item_hash,'b64.') === 0)
- $decoded = @base64url_decode(substr($item_hash,4));
- if($decoded)
- $item_hash = $decoded;
-
$r = q("select id, uid, mid, parent_mid, thr_parent, verb, item_type, item_deleted, item_blocked from item where mid like '%s' limit 1",
dbesc($item_hash . '%')
);
diff --git a/view/js/mod_hq.js b/view/js/mod_hq.js
index cf7ec941c..8bbd5e3ad 100644
--- a/view/js/mod_hq.js
+++ b/view/js/mod_hq.js
@@ -1,4 +1,4 @@
-function hqLiveUpdate(notify_id, b64mid) {
+function hqLiveUpdate(notify_id) {
if(typeof profile_uid === 'undefined') profile_uid = false; /* Should probably be unified with channelId defined in head.tpl */
if((src === null) || (stopped) || (! profile_uid)) { $('.like-rotator').hide(); return; }
@@ -65,7 +65,7 @@ function hqLiveUpdate(notify_id, b64mid) {
// else data was valid - reset the recursion counter
liveRecurse = 0;
- if(notify_id !== 'undefined') {
+ if(notify_id !== 'undefined') {
$.post(
"hq",
{
diff --git a/view/tpl/notifications_widget.tpl b/view/tpl/notifications_widget.tpl
index 8168866ad..8ab9a79a0 100644
--- a/view/tpl/notifications_widget.tpl
+++ b/view/tpl/notifications_widget.tpl
@@ -1,5 +1,6 @@
<script>
var notifications_parent;
+
$(document).ready(function() {
notifications_parent = $('#notifications_wrapper')[0].parentElement.id;
$('.notifications-btn').click(function() {
@@ -13,6 +14,11 @@
$('#navbar-collapse-2').removeClass('show');
}
});
+
+ window.onpopstate = function(e) {
+ if(e.state !== null)
+ getData(e.state.b64mid, '');
+ };
});
{{if $module == 'display' || $module == 'hq'}}
@@ -20,8 +26,14 @@
var b64mid = $(this).data('b64mid');
var notify_id = $(this).data('notify_id');
var path = $(this)[0].pathname.substr(1,7);
+ var stateObj = { b64mid: b64mid };
- console.log(path);
+ {{if $module == 'display'}}
+ history.pushState(stateObj, '', 'display/' + b64mid);
+ {{/if}}
+ {{if $module == 'hq'}}
+ history.pushState(stateObj, '', 'hq/' + b64mid);
+ {{/if}}
{{if $module == 'hq'}}
if(b64mid !== 'undefined' && path !== 'pubstre') {
@@ -31,25 +43,29 @@
e.preventDefault();
e.stopPropagation();
- $('.thread-wrapper').remove();
-
- if(! page_load)
+ if(! page_load) {
$(this).fadeOut();
-
- bParam_mid = b64mid;
- mode = 'replace';
- page_load = true;
- {{if $module == 'hq'}}
- hqLiveUpdate(notify_id);
- {{else}}
- liveUpdate();
- {{/if}}
+ getData(b64mid, notify_id);
+ }
if($('#notifications_wrapper').hasClass('fs'))
$('#notifications_wrapper').prependTo('#' + notifications_parent).removeClass('fs');
}
});
{{/if}}
+
+ function getData(b64mid, notify_id) {
+ $('.thread-wrapper').remove();
+ bParam_mid = b64mid;
+ mode = 'replace';
+ page_load = true;
+ {{if $module == 'hq'}}
+ hqLiveUpdate(notify_id);
+ {{/if}}
+ {{if $module == 'display'}}
+ liveUpdate();
+ {{/if}}
+ }
</script>