mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-10 13:28:55 +00:00
[ticket/12440] Use a more generic approach for replacing the URL.
PHPBB3-12440
This commit is contained in:
parent
7475e05f99
commit
ed14d12d14
1 changed files with 71 additions and 15 deletions
|
@ -694,6 +694,74 @@ $('#phpbb').click(function(e) {
|
|||
}
|
||||
});
|
||||
|
||||
phpbb.history = {};
|
||||
|
||||
/**
|
||||
* Check whether a method in the native history object is supported.
|
||||
*
|
||||
* @param string fn Method name.
|
||||
* @return bool Returns true if the method is supported.
|
||||
*/
|
||||
phpbb.history.isSupported = function(fn) {
|
||||
if (typeof history === 'undefined' || typeof history[fn] === 'undefined') {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
* Wrapper for the pushState and replaceState methods of the
|
||||
* native history object.
|
||||
*
|
||||
* @param string mode Mode. Either push or replace.
|
||||
* @param string url New URL.
|
||||
* @param string title Optional page title.
|
||||
* @patam object obj Optional state object.
|
||||
*
|
||||
* @return undefined
|
||||
*/
|
||||
phpbb.history.alterUrl = function(mode, url, title, obj) {
|
||||
var fn = mode + 'State';
|
||||
|
||||
if (!url || !phpbb.history.isSupported(fn)) {
|
||||
return;
|
||||
}
|
||||
if (!title) {
|
||||
title = document.title;
|
||||
}
|
||||
if (!obj) {
|
||||
obj = null;
|
||||
}
|
||||
|
||||
history[fn](obj, title, url);
|
||||
};
|
||||
|
||||
/**
|
||||
* Wrapper for the native history.replaceState method.
|
||||
*
|
||||
* @param string url New URL.
|
||||
* @param string title Optional page title.
|
||||
* @patam object obj Optional state object.
|
||||
*
|
||||
* @return undefined
|
||||
*/
|
||||
phpbb.history.replaceUrl = function(url, title, obj) {
|
||||
phpbb.history.alterUrl('replace', url, title, obj);
|
||||
};
|
||||
|
||||
/**
|
||||
* Wrapper for the native history.pushState method.
|
||||
*
|
||||
* @param string url New URL.
|
||||
* @param string title Optional page title.
|
||||
* @patam object obj Optional state object.
|
||||
*
|
||||
* @return undefined
|
||||
*/
|
||||
phpbb.history.pushUrl = function(url, title, obj) {
|
||||
phpbb.history.alterUrl('push', url, title, obj);
|
||||
};
|
||||
|
||||
/**
|
||||
* Hide the optgroups that are not the selected timezone
|
||||
*
|
||||
|
@ -1425,20 +1493,6 @@ phpbb.getFunctionByName = function (functionName) {
|
|||
return context[func];
|
||||
};
|
||||
|
||||
/**
|
||||
* Update browser history URL to point to specific post in viewtopic.php
|
||||
* when using view=unread#unread link.
|
||||
*
|
||||
* @return undefined
|
||||
*/
|
||||
phpbb.setUnreadUrl = function() {
|
||||
var url = $('#unread[data-url]').data('url');
|
||||
|
||||
if (url && typeof history !== 'undefined' && typeof history.replaceState !== 'undefined') {
|
||||
history.replaceState(null, document.title, url);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Apply code editor to all textarea elements with data-bbcode attribute
|
||||
*/
|
||||
|
@ -1459,7 +1513,9 @@ $(document).ready(function() {
|
|||
phpbb.registerPalette($(this));
|
||||
});
|
||||
|
||||
phpbb.setUnreadUrl();
|
||||
// Update browser history URL to point to specific post in viewtopic.php
|
||||
// when using view=unread#unread link.
|
||||
phpbb.history.replaceUrl($('#unread[data-url]').data('url'));
|
||||
});
|
||||
|
||||
})(jQuery); // Avoid conflicts with other libraries
|
||||
|
|
Loading…
Add table
Reference in a new issue