diff --git a/js/interface_common.js b/js/interface_common.js index ba93950..8edbcba 100644 --- a/js/interface_common.js +++ b/js/interface_common.js @@ -30,7 +30,7 @@ function openModal( modalClass ) //fecha o modal removendo o conteúdo por detach function closeModal($this) -{ +{ var $body = $( "body" ); var $modalWindows = $( "body" ).children( ".modal-blackout" ); @@ -103,7 +103,12 @@ function openProfileModal(e) var $this = $( this ); var username = $.MAL.urlToUser( $this.attr("href") ); - + openProfileModalWithUsername(username); +} + + +function openProfileModalWithUsername(username) +{ if(!username) { alert(polyglot.t("You don't have any profile because you are not logged in.")); @@ -118,16 +123,17 @@ function openProfileModal(e) //título do modal $( "."+profileModalClass + " h3" ).text( polyglot.t("users_profile", { username: username }) ); - + //hed//add dinamic follow button in profile modal window if(followingUsers.indexOf(username) != -1){ $('.profile-card button.followButton').first().removeClass('follow').addClass('profileUnfollow').text(polyglot.t('Unfollow')).on('click', function(){ unfollow(username); }); }; - + $(".tox-ctc").attr("title", polyglot.t("Copy to clipboard")); $(".bitmessage-ctc").attr("title", polyglot.t("Copy to clipboard")); + window.location.hash = '#profile?user=' + username; } function newHashtagModal(hashtag) { @@ -150,16 +156,7 @@ function openHashtagModal(e) var $this = $( this ); var hashtag = $this.text().substring(1).toLowerCase(); - - var hashtagModalClass = "hashtag-modal"; - openModal( hashtagModalClass ); - $( "."+hashtagModalClass ).attr("data-resource","hashtag"); - - var hashtagModalContent = newHashtagModal( hashtag ); - hashtagModalContent.appendTo("." +hashtagModalClass + " .modal-content"); - - //título do modal - $( "."+hashtagModalClass + " h3" ).text( "#" + hashtag ); + openHashtagModalFromSearch(hashtag); } function openHashtagModalFromSearch(hashtag) @@ -173,6 +170,7 @@ function openHashtagModalFromSearch(hashtag) //título do modal $( "."+hashtagModalClass + " h3" ).text( "#" + hashtag ); + window.location.hash = '#hashtag?hashtag=' + hashtag; } function updateHashtagModal(postboard,hashtag) { @@ -354,6 +352,42 @@ function openConversationModal(e) $( "." + conversationModalClass + " h3" ).text( polyglot.t('conversation_title', {'username': postLi.find('.post-data').attr('data-screen-name')}) ); } + +function watchHashChange(e) +{ + var hashstring = window.location.hash + hashstring = decodeURIComponent(hashstring); + + var hashdata = hashstring.split(':'); + if (hashdata[0] != '#web+twister') { + hashdata = hashstring.match(/(hashtag|profile)\?(?:user|hashtag)=(.+)/); + } + + if (hashdata && hashdata[1] != undefined && hashdata[2] != undefined) + { + if(hashdata[1] == 'profile') { + openProfileModalWithUsername(hashdata[2]); + }else if (hashdata[1] == 'hashtag') { + openHashtagModalFromSearch(hashdata[2]); + } + } +} + + +function initHashWatching() +{ + // Register custom protocol handler + if (window.navigator && window.navigator.registerProtocolHandler){ + var local_twister_url = window.location.protocol + '//' + window.location.host + '/home.html#%s'; + window.navigator.registerProtocolHandler('web+twister', local_twister_url, 'Twister'); + } + + // Register hash spy and launch it once + window.addEventListener('hashchange', watchHashChange, false); + watchHashChange(null); +} + + // // Post actions, submit, count characters // -------------------------------------- @@ -366,7 +400,7 @@ var reTwistPopup = function( e ) alert(polyglot.t("You have to log in to retransmit messages.")); return; } - + var reTwistClass = "reTwist"; openModal( reTwistClass ); @@ -439,7 +473,7 @@ var postExpandFunction = function( e, postLi ) var $postsRelated = postLi.find(".related"); var openClass = "open"; - + if( !postLi.hasClass( openClass ) ) { originalPost.detach(); postLi.empty(); @@ -451,7 +485,7 @@ var postExpandFunction = function( e, postLi ) originalLi.append(originalPost); $postExpandedContent.slideDown( "fast" ); - + if ($.Options.getShowPreviewOpt() == 'enable'){ var previewContainer=$postExpandedContent.find(".preview-container")[0]; /* was the preview added before... */ @@ -683,7 +717,7 @@ function replyTextKeypress(e) { } }else if( !$.Options.keyEnterToSend() ){ if (e.keyCode === 13 && (e.metaKey || e.ctrlKey)) { - + $this.val($this.val().trim()); if( !tweetAction.hasClass("disabled") ) { tweetAction.click(); @@ -960,15 +994,15 @@ var unicodeConversionList = { function getRangesForUnicodeConversion(msg) { if(!msg) return; - + var tempMsg = msg; var results = []; var regexHttpStart = /http[s]?:\/\//; var regexHttpEnd = /[ \n\t]/; var start=0, end, position, rep = true; - + position = tempMsg.search(regexHttpStart); - + while(position!=-1) { end = start + position; @@ -979,7 +1013,7 @@ function getRangesForUnicodeConversion(msg) rep = !rep; start = end; tempMsg = tempMsg.substring(position, tempMsg.length); - + if(rep == true) position = tempMsg.search(regexHttpStart); else @@ -988,15 +1022,15 @@ function getRangesForUnicodeConversion(msg) end = msg.length; if(end > start) results.push({start: start, end: end, replace: rep}); - - return results; + + return results; } function getUnicodeReplacement(msg, list, ranges, ta) { if(!msg || !list || !ranges) return; if(ranges.length===0) return ""; - + var position, substrings = []; for (var j=0; j 0) { var ub = ta.closest(".post-area-new").find(".undo-unicode"); @@ -1083,7 +1117,7 @@ function undoLastUnicode(e) { var uc = $ta.data("unicodeConversionStack").shift(); var pt = $ta.val(); - + // If the text was shifted, and character is no longer at the saved position, this function // searches for it to the right. If it is not there, it searches in the oposite direction. // if it's not there either, it means it was deleted, so it is skipped. @@ -1282,7 +1316,7 @@ function replaceDashboards() { } function initInterfaceCommon() { - $( "body" ).on( "click", function(event) { + $( "body" ).on( "click", function(event) { if($(event.target).hasClass('cancel')) closeModal($(this)); }); $(".cancel").on('click', function(event){ diff --git a/js/interface_home.js b/js/interface_home.js index 5c930d6..4297f6e 100644 --- a/js/interface_home.js +++ b/js/interface_home.js @@ -31,7 +31,7 @@ var InterfaceFunctions = function() requestTimelineUpdate("latest",postsPerRefresh,followingUsers,promotedPostsOnly);}); // modified the way promoted posts are shown - $( ".promoted-posts-only").click(function() { + $( ".promoted-posts-only").click(function() { promotedPostsOnly = !promotedPostsOnly; //active promoted posts tab $(this).children('.promoted-posts').addClass(promotedPostsOnly ? "active" : "disabled"); @@ -52,6 +52,7 @@ var InterfaceFunctions = function() initInterfaceDirectMsg(); initUser(initHome); + initHashWatching(); }; function initHome(cbFunc, cbArg) { @@ -168,10 +169,9 @@ $( window ).resize(replaceDashboards); function fixDiv() { var $cache = $('.postboard h2'); - if ($(window).scrollTop() > 26) - $cache.addClass( "fixed" ); + if ($(window).scrollTop() > 26) + $cache.addClass( "fixed" ); else $cache.removeClass( "fixed" ); } $(window).scroll(fixDiv); -