From a928be44a5aadf8f55ded02554949c61b995335b Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Thu, 7 Jul 2016 17:41:17 +0300 Subject: fix project structure --- juick-www/src/webapp/scripts.js | 684 ---------------------------------------- 1 file changed, 684 deletions(-) delete mode 100644 juick-www/src/webapp/scripts.js (limited to 'juick-www/src/webapp/scripts.js') diff --git a/juick-www/src/webapp/scripts.js b/juick-www/src/webapp/scripts.js deleted file mode 100644 index 93594f71..00000000 --- a/juick-www/src/webapp/scripts.js +++ /dev/null @@ -1,684 +0,0 @@ -var ws=null; -var pageTitle; - -function initWS() { - if(typeof(pageMID)!="undefined" && pageMID>0) { - var url; - var protocolPrefix = (window.location.protocol === 'https:') ? 'wss:' : 'ws:'; - if(typeof(juickDebug)!="undefined") { - url= protocolPrefix + "//ws.juick.com/_replies"; - } else { - url= protocolPrefix + "//ws.juick.com/"+pageMID; - } - if(typeof(hash)!="undefined" && hash) { - url+="?hash="+hash; - } - - ws = new WebSocket(url); - ws.onopen = function() { - console.log('online'); - if($('#wsthread').length==0) { - var d=$('
'); - d.on('click',onclickNextReply); - d.appendTo("body"); - pageTitle=document.title; - } - }; - ws.onclose = function() { - console.log('offline'); - ws=null; - setTimeout(function() { - initWS(); - },2000); - }; - ws.onmessage = function(msg) { - if(msg.data==' ') { - ws.send(' '); - } else { - try { - var jsonMsg=$.parseJSON(msg.data); - console.log('data: '+msg.data); - wsIncomingReply(jsonMsg); - } catch(err) { - console.log(err); - } - } - }; - setInterval(wsSendKeepAlive, 90000); - } -} - -function wsSendKeepAlive() { - if(ws) { - ws.send(' '); - } -} - -function wsShutdown() { - if(ws) { - ws.onclose=function(){}; - ws.close(); - } -} - -function wsIncomingReply(msg) { - var p; - if(msg.replyto>0) { - p=$('#'+msg.replyto); - if(p.length==0) { - p=null; - } - } - - var li=$('
  • '); - li.html('
    '+ - '
    '+ - '
    '+ - ''+ - ''+ - '
    '+ - ''+ - ''+ - '
    '); - $(li).find('.msg-txt').text(msg.body); - if(p) { - li.css('margin-left',parseInt(p.css('margin-left'))+20+'px'); - p.after(li); - } else { - $('#replies').append(li); - } - - updateRepliesCounter(); -} - -function onclickNewReply(e) { - var li=$(e); - li.removeClass('reply-new'); - li.off('click'); - li.off('mouseover'); - updateRepliesCounter(); -} - -function onclickNextReply() { - var li=$('#replies>li.reply-new:first'); - if(li.length) { - li.removeClass('reply-new'); - li.off('click'); - li.get(0).scrollIntoView(); - updateRepliesCounter(); - } -} - -function updateRepliesCounter() { - var replies=$('#replies>li.reply-new').length; - if(replies>0) { - $('#wsthread').text(replies).css('display','block'); - document.title='['+replies+'] '+pageTitle; - } else { - $('#wsthread').css('display','none'); - document.title=pageTitle; - } -} - -/******************************************************************************/ -/******************************************************************************/ -/******************************************************************************/ - -function postformListener(formEl,ev) { - if(ev.ctrlKey && (ev.keyCode==10 || ev.keyCode==13)) { - if(!formEl.onsubmit || formEl.onsubmit()) { - formEl.submit(); - } - } -} - -function unfoldPostForm() { - if(window.location.pathname==="/" && window.location.hash==="#post") { - $('#newmessage>div').css('display','block'); - $('#newmessage textarea').css('min-height','70px'); - $('#newmessage textarea')[0].focus(); - } -} - -function onsubmitNewMessage() { - if($('#newmessage textarea').val().length==0) { - openDialog('

    Пожалуйста, введите текст сообщения

    '); - return false; - } - return true; -} - -function showMoreReplies(id) { - $('#'+id+' .msg-comments').hide(); - - var replies=$('#replies>li'); - var flagshow=0; - for(var i=0; i'); - c.before(''); - c.append('
    '); - } - // $('#replies #'+rid+' .msg-links').hide(); - $('#replies #'+rid+' .msg-comment').show(); - $('#replies #'+rid+' textarea')[0].focus(); - $('#replies #'+rid+' textarea').autoResize({ - extraSpace: 0, - minHeight: 1 - }); - return false; -} - -function showCommentFooter(e) { - var a=$(e).closest("article"); - if(a.find("footer.comm").length==0) { - a.append('
    '); - a.find('textarea').autoResize({ - extraSpace: 0, - minHeight: 1 - }); - } - a.find('textarea')[0].focus(); - return false; -} - -function attachCommentPhoto(div) { - if($(div).children().length===0) { - var inp=$(''); - inp.on('change',function() { - $(this).parent().attr('class','attach-photo-active'); - }); - inp.trigger('click'); - $(div).append(inp); - } else { - $(div).empty(); - $(div).attr('class','attach-photo'); - } -} - -function attachMessagePhoto(div) { - var f=$(div).closest('form'); - if(f.find('input:file').length===0) { - var inp=$(''); - inp.on('change',function() { - $(div).text("загрузить (✓)"); - }); - f.append(inp); - inp.trigger('click'); - } else { - f.find('input:file').remove(); - $(div).text("загрузить"); - } -} - -function unfoldReply() { - if((0+window.location.hash.substring(1))>0) { - var el=$(window.location.hash); - while(el.is(":hidden")) { - el=el.prev(); - } - showMoreReplies(el.attr('id')); - window.location.replace(window.location.hash); - } -} - -function showMessageLinksDialog(mid,rid) { - var hlink=window.location.protocol+"//juick.com/"+mid; - var mlink="#"+mid; - if(rid>0) { - hlink+="#"+rid; - mlink+="/"+rid; - } - var hlinkenc=encodeURIComponent(hlink); - - var html="
    Ссылка на сообщение:"; - html+="
    "+hlink+"
    "; - html+="Номер сообщения:"; - html+="
    "+mlink+"
    "; - html+="Поделиться:
      "; - html+="
    • "; - html+="
    • "; - html+="
    • "; - html+="
    • "; - html+="
    "; - - openDialog(html); -} - -function showPhotoDialog(fname) { - var width=$(window).width(); - var height=$(window).height()*0.9; - if(width<640) { - return true; - } else if(width<1280) { - openDialog(""); - $('#dialogw img').css('max-height',height+'px'); - return false; - } else { - openDialog(""); - $('#dialogw img').css('max-height',height+'px'); - return false; - } -} - -function openDialog(html) { - var dhtml="
    "; - dhtml+=html; - dhtml+="
    "; - $('body').append(dhtml); -} - -function closeDialog() { - $('#dialogb').remove(); - $('#dialogt').remove(); -} - -function openSocialWindow(a) { - var w=window.open(a.href,'juickshare','width=640,height=400'); - if(window.focus) w.focus(); - return false; -} - -function checkUsername() { - var uname=$('#username').val(); - $.ajax('//api.juick.com/users?uname='+uname).done(function() { - $('#username').css('background','#FFCCCC'); - }).fail(function() { - $('#username').css('background','#CCFFCC'); - }); -} - -/******************************************************************************/ - -function openDialogLogin() { - var html='

    Пожалуйста, представьтесь:' - +'Facebook ' - +'ВКонтакте

    ' - +'

    Уже зарегистрированы?

    ' - +'
    ' - +'
    ' - +'
    ' - +'' - +'
    '; - openDialog(html); - return false; -} - -/******************************************************************************/ - -function likeMessage(e,mid) { - if (confirm("Are you sure?")) { - $.ajax({ - url: '//juick.com/like?mid='+mid, - type: 'POST' - }).done(function() { - $(e).closest("article").append("

    OK!

    "); - }).fail(function() { - $(e).closest("article").append("

    Ошибка

    "); - }); - } - return false; -} - -/******************************************************************************/ - -function setPopular(e,mid,popular) { - $.ajax('//api.juick.com/messages/set_popular?mid='+mid+'&popular='+popular+'&hash='+hash).done(function() { - var a=$(e).closest("article"); - a.append("

    OK!

    "); - }); - return false; -} - -function setPrivacy(e,mid) { - $.ajax('//api.juick.com/messages/set_privacy?mid='+mid+'&hash='+hash).done(function() { - var a=$(e).closest("article"); - a.append("

    OK!

    "); - }); - return false; -} - -/******************************************************************************/ - -function readerLinkReplace(e) { - var a=$(e); - a.attr('href','/_out?lid='+a.data('lid')); -} - -/******************************************************************************/ - -jQuery.fn.selectText = function(){ - var d = document; - if (d.body.createTextRange) { - var range = d.body.createTextRange(); - range.moveToElementText(this[0]); - range.select(); - } else if (window.getSelection) { - var selection = window.getSelection(); - var range = d.createRange(); - range.selectNodeContents(this[0]); - selection.removeAllRanges(); - selection.addRange(range); - } -}; - -/* - * jQuery.fn.autoResize 1.14 - */ - -(function($){ - - var uid = 'ar' + +new Date, - - defaults = autoResize.defaults = { - onResize: function(){}, - onBeforeResize: function(){ - return 123 - }, - onAfterResize: function(){ - return 555 - }, - animate: { - duration: 200, - complete: function(){} - }, - extraSpace: 50, - minHeight: 'original', - maxHeight: 500, - minWidth: 'original', - maxWidth: 500 - }; - - autoResize.cloneCSSProperties = [ - 'lineHeight', 'textDecoration', 'letterSpacing', - 'fontSize', 'fontFamily', 'fontStyle', 'fontWeight', - 'textTransform', 'textAlign', 'direction', 'wordSpacing', 'fontSizeAdjust', - 'paddingTop', 'paddingLeft', 'paddingBottom', 'paddingRight', 'width' - ]; - - autoResize.cloneCSSValues = { - position: 'absolute', - top: -9999, - left: -9999, - opacity: 0, - overflow: 'hidden' - }; - - autoResize.resizableFilterSelector = [ - 'textarea:not(textarea.' + uid + ')', - 'input:not(input[type])', - 'input[type=text]', - 'input[type=password]', - 'input[type=email]', - 'input[type=url]' - ].join(','); - - autoResize.AutoResizer = AutoResizer; - - $.fn.autoResize = autoResize; - - function autoResize(config) { - this.filter(autoResize.resizableFilterSelector).each(function(){ - new AutoResizer( $(this), config ); - }); - return this; - } - - function AutoResizer(el, config) { - - if (el.data('AutoResizer')) { - el.data('AutoResizer').destroy(); - } - - config = this.config = $.extend({}, autoResize.defaults, config); - this.el = el; - - this.nodeName = el[0].nodeName.toLowerCase(); - - this.originalHeight = el.height(); - this.previousScrollTop = null; - - this.value = el.val(); - - if (config.maxWidth === 'original') config.maxWidth = el.width(); - if (config.minWidth === 'original') config.minWidth = el.width(); - if (config.maxHeight === 'original') config.maxHeight = el.height(); - if (config.minHeight === 'original') config.minHeight = el.height(); - - if (this.nodeName === 'textarea') { - el.css({ - resize: 'none', - overflowY: 'hidden' - }); - } - - el.data('AutoResizer', this); - - // Make sure onAfterResize is called upon animation completion - config.animate.complete = (function(f){ - return function() { - config.onAfterResize.call(el); - return f.apply(this, arguments); - }; - }(config.animate.complete)); - - this.bind(); - - } - - AutoResizer.prototype = { - - bind: function() { - - var check = $.proxy(function(){ - this.check(); - return true; - }, this); - - this.unbind(); - - this.el - .bind('keyup.autoResize', check) - //.bind('keydown.autoResize', check) - .bind('change.autoResize', check) - .bind('paste.autoResize', function() { - setTimeout(function() { - check(); - }, 0); - }); - - if (!this.el.is(':hidden')) { - this.check(null, true); - } - - }, - - unbind: function() { - this.el.unbind('.autoResize'); - }, - - createClone: function() { - - var el = this.el, - clone = this.nodeName === 'textarea' ? el.clone() : $(''); - - this.clone = clone; - - $.each(autoResize.cloneCSSProperties, function(i, p){ - clone[0].style[p] = el.css(p); - }); - - clone - .removeAttr('name') - .removeAttr('id') - .addClass(uid) - .attr('tabIndex', -1) - .css(autoResize.cloneCSSValues); - - if (this.nodeName === 'textarea') { - clone.height('auto'); - } else { - clone.width('auto').css({ - whiteSpace: 'nowrap' - }); - } - - }, - - check: function(e, immediate) { - - if (!this.clone) { - this.createClone(); - this.injectClone(); - } - - var config = this.config, - clone = this.clone, - el = this.el, - value = el.val(); - - // Do nothing if value hasn't changed - if (value === this.prevValue) { - return true; - } - this.prevValue = value; - - if (this.nodeName === 'input') { - - clone.text(value); - - // Calculate new width + whether to change - var cloneWidth = clone.width(), - newWidth = (cloneWidth + config.extraSpace) >= config.minWidth ? - cloneWidth + config.extraSpace : config.minWidth, - currentWidth = el.width(); - - newWidth = Math.min(newWidth, config.maxWidth); - - if ( - (newWidth < currentWidth && newWidth >= config.minWidth) || - (newWidth >= config.minWidth && newWidth <= config.maxWidth) - ) { - - config.onBeforeResize.call(el); - config.onResize.call(el); - - el.scrollLeft(0); - - if (config.animate && !immediate) { - el.stop(1,1).animate({ - width: newWidth - }, config.animate); - } else { - el.width(newWidth); - config.onAfterResize.call(el); - } - - } - - return; - - } - - // TEXTAREA - - clone.width(el.width()).height(0).val(value).scrollTop(10000); - - var scrollTop = clone[0].scrollTop; - - // Don't do anything if scrollTop hasen't changed: - if (this.previousScrollTop === scrollTop) { - return; - } - - this.previousScrollTop = scrollTop; - - if (scrollTop + config.extraSpace >= config.maxHeight) { - el.css('overflowY', ''); - scrollTop = config.maxHeight; - immediate = true; - } else if (scrollTop <= config.minHeight) { - scrollTop = config.minHeight; - } else { - el.css('overflowY', 'hidden'); - scrollTop += config.extraSpace; - } - - config.onBeforeResize.call(el); - config.onResize.call(el); - - // Either animate or directly apply height: - if (config.animate && !immediate) { - el.stop(1,1).animate({ - height: scrollTop - }, config.animate); - } else { - el.height(scrollTop); - config.onAfterResize.call(el); - } - - }, - - destroy: function() { - this.unbind(); - this.el.removeData('AutoResizer'); - this.clone.remove(); - delete this.el; - delete this.clone; - }, - - injectClone: function() { - ( - autoResize.cloneContainer || - (autoResize.cloneContainer = $('').appendTo('body')) - ).append(this.clone); - } - - }; - -})(jQuery); - -/******************************************************************************/ - -$(document).ready(function() { - $('textarea').autoResize({ - extraSpace: 0, - minHeight: 1 - }); - - $('textarea.reply').click(function () { - $(this).addClass("narrow"); - $(this).after('
    '); - $(this).parent().after(''); - $(this).off('click'); - }); - - $('textarea.replypm').click(function () { - $(this).addClass("narrowpm"); - $(this).parent().after(''); - $(this).off('click'); - }); - - unfoldPostForm(); - unfoldReply(); - $(window).bind('hashchange',unfoldPostForm); - $(window).bind('hashchange',unfoldReply); - - $(window).on('pagehide',wsShutdown); -}); -- cgit v1.2.3