Mercurial > zeropaste
view app/assets/javascripts/init.tabs.js @ 141:2104f0c477c0
Use replaceState afterall for browsers supporting it.
Reduces history clutter.
author | Edho Arief <edho@myconan.net> |
---|---|
date | Mon, 12 Nov 2012 17:54:59 +0700 |
parents | 13ada93ad6a2 |
children | b56ad3caed6d |
line wrap: on
line source
$(document).ready(function() { if ($('#paste-show').length !== 1) { return; } var update_state = function() { var paste = $('#paste'), mode = paste.data('mode'), width = paste.data('width'), qstring = '#!' + mode + '.' + width; if (width == 'auto') { qstring = '#!'; if (mode != 'plain') { qstring += mode; } } if (history.replaceState) { history.replaceState(null, '', qstring); } else { window.location = qstring; } return false; }, paste_resize = function(size) { var paste = $('#paste'), title = $('#paste-resize a.btn'); title.html(title.html().replace(/(auto|\d+px)/, size)); if (size == 'auto') { paste.css('width', ''); paste.data('width', size); } else { paste.css('width', size); paste.data('width', size); } update_state(); }, paste_resize_menu_handler = function() { paste_resize($(this).data('size')); $('.open').removeClass('open'); return false; }, paste_mode_state_handler = function() { $('#paste').data('mode', $(this).prop('href').split('#')[1]); update_state(); }, init_state = function() { mode = window.location.hash.substr(2).split('.'); if (mode[0] == 'highlight') { $('#paste-mode a:eq(1)').click(); } else if (mode[0] == 'markdown') { $('#paste-mode a:eq(2)').click(); }; if (mode[1] && mode[1].match(/^\d+px$/)) { paste_resize(mode[1]); } }, init_tabs_base = function() { var raw = $('#plain pre').text(), markdown = $('#markdown div'); markdown.html(marked(raw)); $('#highlight pre').text(raw); markdown.find('pre').addClass('prettyprint'); markdown.find('a').prop('rel', 'nofollow'); prettyPrint(); }, init_tabs_menu = function() { $('#paste-mode a').click(paste_mode_state_handler); $('#paste-resize ul a').click(paste_resize_menu_handler); }; init_tabs_base(); init_tabs_menu(); init_state(); update_state(); });