make browser history buttons work with ajax calls in /display and /hq

This commit is contained in:
Mario Vavti 2017-11-21 10:19:50 +01:00
parent 0325efeb35
commit 159d6469fd
2 changed files with 37 additions and 21 deletions

View File

@ -47,19 +47,24 @@ class Hq extends \Zotlabs\Web\Controller {
$r = q("SELECT mid FROM item
WHERE uid = %d
AND mid = parent_mid
$item_normal
ORDER BY created DESC
limit 1",
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 . '%')
);

View File

@ -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>