mirror of
https://github.com/phpbb/phpbb.git
synced 2025-07-17 23:21:33 +02:00
[ticket/12440] Use a more generic approach for replacing the URL.
PHPBB3-12440
This commit is contained in:
@@ -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
|
* Hide the optgroups that are not the selected timezone
|
||||||
*
|
*
|
||||||
@@ -1425,20 +1493,6 @@ phpbb.getFunctionByName = function (functionName) {
|
|||||||
return context[func];
|
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
|
* Apply code editor to all textarea elements with data-bbcode attribute
|
||||||
*/
|
*/
|
||||||
@@ -1459,7 +1513,9 @@ $(document).ready(function() {
|
|||||||
phpbb.registerPalette($(this));
|
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
|
})(jQuery); // Avoid conflicts with other libraries
|
||||||
|
Reference in New Issue
Block a user