diff options
| author | Joas Schilling <nickvergessen@gmx.de> | 2014-05-08 13:23:36 +0200 |
|---|---|---|
| committer | Joas Schilling <nickvergessen@gmx.de> | 2014-05-08 13:23:36 +0200 |
| commit | 4affb33396c594d49df0a86395dc9edefd52401d (patch) | |
| tree | 4c00bd36ffb10cf7b9831fcd45ed9ea0249b9f3b /phpBB/assets/javascript/core.js | |
| parent | 15c08989119877a10305af4599b5c878a2df8aa2 (diff) | |
| parent | e976f7908a85623a7f7ce30f1366d0b52957f8b5 (diff) | |
| download | forums-4affb33396c594d49df0a86395dc9edefd52401d.tar forums-4affb33396c594d49df0a86395dc9edefd52401d.tar.gz forums-4affb33396c594d49df0a86395dc9edefd52401d.tar.bz2 forums-4affb33396c594d49df0a86395dc9edefd52401d.tar.xz forums-4affb33396c594d49df0a86395dc9edefd52401d.zip | |
Merge branch 'develop-ascraeus' into develop
* develop-ascraeus:
[ticket/12440] Use a more generic approach for replacing the URL.
[ticket/12440] Set browser URL to point to specific post when using view=unread
Diffstat (limited to 'phpBB/assets/javascript/core.js')
| -rw-r--r-- | phpBB/assets/javascript/core.js | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/phpBB/assets/javascript/core.js b/phpBB/assets/javascript/core.js index f461d5a175..ae8583ddbf 100644 --- a/phpBB/assets/javascript/core.js +++ b/phpBB/assets/javascript/core.js @@ -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 * @@ -1444,6 +1512,10 @@ $(document).ready(function() { $('#color_palette_placeholder').each(function() { phpbb.registerPalette($(this)); }); + + // 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 |
