diff --git a/frost-mobile/js/main.js b/frost-mobile/js/main.js index 3ec2421..5a88419 100644 --- a/frost-mobile/js/main.js +++ b/frost-mobile/js/main.js @@ -1,10 +1,10 @@ function openClose(listID) { -/* if(document.getElementById(theID).style.display == "block") { - document.getElementById(theID).style.display = "none" +/* if(document.getElementById(theID).style.display == "block") { + document.getElementById(theID).style.display = "none" } - else { - document.getElementById(theID).style.display = "block" + else { + document.getElementById(theID).style.display = "block" }*/ listID = "#" + listID.replace(/:/g, "\\:"); listID = listID.replace(/\./g, "\\."); @@ -21,11 +21,11 @@ } function openMenu(theID) { - document.getElementById(theID).style.display = "block" + document.getElementById(theID).style.display = "block" } function closeMenu(theID) { - document.getElementById(theID).style.display = "none" + document.getElementById(theID).style.display = "none" } @@ -47,41 +47,22 @@ $(function() { $.ajaxSetup({cache: false}); - //collapseHeight(); - - /* setup tooltips *//* - $("a,.tt").each(function(){ - var e = $(this); - var pos="bottom"; - if (e.hasClass("tttop")) pos="top"; - if (e.hasClass("ttbottom")) pos="bottom"; - if (e.hasClass("ttleft")) pos="left"; - if (e.hasClass("ttright")) pos="right"; - e.tipTip({defaultPosition: pos, edgeOffset: 8}); - });*/ - - - /* setup onoff widgets */ $(".onoff input").each(function(){ val = $(this).val(); id = $(this).attr("id"); $("#"+id+"_onoff ."+ (val==0?"on":"off")).addClass("hidden"); - + }); $(".onoff > a").click(function(event){ - event.preventDefault(); + event.preventDefault(); var input = $(this).siblings("input"); var val = 1-input.val(); var id = input.attr("id"); $("#"+id+"_onoff ."+ (val==0?"on":"off")).addClass("hidden"); $("#"+id+"_onoff ."+ (val==1?"on":"off")).removeClass("hidden"); input.val(val); - //console.log(id); }); - - /* setup field_richtext */ - /*setupFieldRichtext();*/ /* popup menus */ function close_last_popup_menu(e) { @@ -126,20 +107,20 @@ $('html').click(function(e) { close_last_popup_menu(e); }); - + // fancyboxes /*$("a.popupbox").colorbox({ 'inline' : true, 'transition' : 'none' });*/ - + /* notifications template */ var notifications_tpl= unescape($("#nav-notifications-template[rel=template]").html()); var notifications_all = unescape($('
').append( $("#nav-notifications-see-all").clone() ).html()); //outerHtml hack var notifications_mark = unescape($('
').append( $("#nav-notifications-mark-all").clone() ).html()); //outerHtml hack var notifications_empty = unescape($("#nav-notifications-menu").html()); - + /* nav update event */ $('nav').bind('nav-update', function(e,data){; var invalid = $(data).find('invalid').text(); @@ -152,7 +133,7 @@ var home = $(data).find('home').text(); if(home == 0) { home = ''; $('#home-update').removeClass('show') } else { $('#home-update').addClass('show') } $('#home-update').html(home); - + var intro = $(data).find('intro').text(); if(intro == 0) { intro = ''; $('#intro-update').removeClass('show') } else { $('#intro-update').addClass('show') } $('#intro-update').html(intro); @@ -160,7 +141,7 @@ var mail = $(data).find('mail').text(); if(mail == 0) { mail = ''; $('#mail-update').removeClass('show') } else { $('#mail-update').addClass('show') } $('#mail-update').html(mail); - + var intro = $(data).find('intro').text(); if(intro == 0) { intro = ''; $('#intro-update-li').removeClass('show') } else { $('#intro-update-li').addClass('show') } $('#intro-update-li').html(intro); @@ -170,7 +151,7 @@ $('#mail-update-li').html(mail); var eNotif = $(data).find('notif') - + if (eNotif.children("note").length==0){ $("#nav-notifications-menu").html(notifications_empty); } else { @@ -201,7 +182,7 @@ } if(notif == 0) { notif = ''; $('#notify-update').removeClass('show') } else { $('#notify-update').addClass('show') } $('#notify-update').html(notif); - + var eSysmsg = $(data).find('sysmsgs'); eSysmsg.children("notice").each(function(){ text = $(this).text(); @@ -211,11 +192,11 @@ text = $(this).text(); $.jGrowl(text, { sticky: false, theme: 'info', life: 1000 }); }); - + }); - - - NavUpdate(); + + + NavUpdate(); // Allow folks to stop the ajax page updates with the pause/break key /* $(document).keydown(function(event) { if(event.keyCode == '8') { @@ -241,8 +222,8 @@ } } });*/ - - + + }); function NavUpdate() { @@ -253,11 +234,11 @@ $(data).find('result').each(function() { // send nav-update event $('nav').trigger('nav-update', this); - - + + // start live update - + if($('#live-network').length) { src = 'network'; liveUpdate(); } if($('#live-profile').length) { src = 'profile'; liveUpdate(); } @@ -267,19 +248,19 @@ /*if($('#live-display').length) { if(liking) { liking = 0; - window.location.href=window.location.href + window.location.href=window.location.href } }*/ if($('#live-photos').length) { if(liking) { liking = 0; - window.location.href=window.location.href + window.location.href=window.location.href } } - - - + + + }); }) ; } @@ -368,8 +349,8 @@ }); $('#' + prev).after($(this)); } - else { - $('#' + ident + ' ' + '.wall-item-ago').replaceWith($(this).find('.wall-item-ago')); + else { + $('#' + ident + ' ' + '.wall-item-ago').replaceWith($(this).find('.wall-item-ago')); if($('#' + ident + ' ' + '.comment-edit-text-empty').length) $('#' + ident + ' ' + '.wall-item-comment-wrapper').replaceWith($(this).find('.wall-item-comment-wrapper')); $('#' + ident + ' ' + '.hide-comments-total').replaceWith($(this).find('.hide-comments-total')); @@ -379,9 +360,9 @@ $(this).attr('src',$(this).attr('dst')); }); } - prev = ident; + prev = ident; });*/ - + $('.like-rotator').hide(); if(commentBusy) { commentBusy = false; @@ -416,10 +397,10 @@ $(node).removeClass("drop").addClass("drophide"); }*/ - // Since our ajax calls are asynchronous, we will give a few - // seconds for the first ajax call (setting like/dislike), then + // Since our ajax calls are asynchronous, we will give a few + // seconds for the first ajax call (setting like/dislike), then // run the updater to pick up any changes and display on the page. - // The updater will turn any rotators off when it's done. + // The updater will turn any rotators off when it's done. // This function will have returned long before any of these // events have completed and therefore there won't be any // visible feedback that anything changed without all this @@ -445,13 +426,13 @@ $('#star-' + ident).addClass('hidden'); $('#unstar-' + ident).removeClass('hidden'); } - else { + else { $('#starred-' + ident).addClass('unstarred'); $('#starred-' + ident).removeClass('starred'); $('#star-' + ident).removeClass('hidden'); $('#unstar-' + ident).addClass('hidden'); } - //$('#like-rotator-' + ident).hide(); + //$('#like-rotator-' + ident).hide(); }); } @@ -504,8 +485,8 @@ commentBusy = true; $('body').css('cursor', 'wait'); $("#comment-preview-inp-" + id).val("0"); - $.post( - "item", + $.post( + "item", $("#comment-edit-form-" + id).serialize(), function(data) { if(data.success) { @@ -521,28 +502,28 @@ window.location.href=data.reload; } }, - "json" - ); - return false; + "json" + ); + return false; } function preview_comment(id) { $("#comment-preview-inp-" + id).val("1"); $("#comment-edit-preview-" + id).show(); - $.post( - "item", + $.post( + "item", $("#comment-edit-form-" + id).serialize(), function(data) { if(data.preview) { - + $("#comment-edit-preview-" + id).html(data.preview); $("#comment-edit-preview-" + id + " a").click(function() { return false; }); } }, - "json" - ); - return true; + "json" + ); + return true; } @@ -562,20 +543,19 @@ function preview_post() { $("#jot-preview").val("1"); $("#jot-preview-content").show(); - tinyMCE.triggerSave(); - $.post( - "item", + $.post( + "item", $("#profile-jot-form").serialize(), function(data) { - if(data.preview) { + if(data.preview) { $("#jot-preview-content").html(data.preview); $("#jot-preview-content" + " a").click(function() { return false; }); } }, - "json" - ); + "json" + ); $("#jot-preview").val("0"); - return true; + return true; } @@ -585,36 +565,36 @@ stopped = false; $('#pause').html(''); } - - function bin2hex(s){ - // Converts the binary representation of data to hex - // - // version: 812.316 - // discuss at: http://phpjs.org/functions/bin2hex - // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) - // + bugfixed by: Onno Marsman - // + bugfixed by: Linuxworld - // * example 1: bin2hex('Kev'); - // * returns 1: '4b6576' - // * example 2: bin2hex(String.fromCharCode(0x00)); - // * returns 2: '00' - var v,i, f = 0, a = []; - s += ''; - f = s.length; - - for (i = 0; i{1} : {2}".format( event.item['author-avatar'], event.item['author-name'], @@ -180,7 +131,7 @@ $(document).ready(function() { )); break; case "agendaWeek": - element.find(".fc-event-title").html( + element.find(".fc-title").html( "{1}

{2}

{3}

".format( event.item['author-avatar'], event.item['author-name'], @@ -189,7 +140,7 @@ $(document).ready(function() { )); break; case "agendaDay": - element.find(".fc-event-title").html( + element.find(".fc-title").html( "{1}

{2}

{3}

".format( event.item['author-avatar'], event.item['author-name'], @@ -199,9 +150,9 @@ $(document).ready(function() { break; } } - + }); - + // center on date var args=location.href.replace(baseurl,"").split("/"); if (args.length>=5 && window.eventModeParams == 2) { @@ -209,18 +160,18 @@ $(document).ready(function() { } else if (args.length>=4 && window.eventModeParams == 1) { $("#events-calendar").fullCalendar('gotoDate',args[2] , args[3]-1); } - + // show event popup var hash = location.hash.split("-") if (hash.length==2 && hash[0]=="#link") showEvent(hash[1]); - } + } }); // update pending count // -$(function(){ +$(function() { - $("nav").bind('nav-update', function(e,data){ + $("nav").bind('nav-update', function(e,data) { var elm = $('#pending-update'); var register = $(data).find('register').text(); if (register=="0") { register=""; elm.hide();} else { elm.show(); } @@ -231,7 +182,7 @@ $(function(){ function homeRedirect() { - $('html').fadeOut('slow', function(){ + $('html').fadeOut('slow', function() { window.location = baseurl + "/login"; }); } @@ -265,219 +216,63 @@ function initCrop() { function showEvent(eventid) { -/* $.get( - baseurl + window.eventModuleUrl + '/?id=' + eventid, - function(data){ - $.colorbox({html:data}); - } - );*/ } - - /* - * TinyMCE/Editor + * Editor */ - -var editor=false; +var editor = false; var textlen = 0; -var plaintext = 'none';//window.editSelect; -//var ispublic = window.isPublic; - -function initEditor(cb){ - if (editor==false){ -// $("#profile-jot-text-loading").show(); - if(plaintext == 'none') { -// $("#profile-jot-text-loading").hide(); - $("#profile-jot-text").css({ 'height': 200, 'color': '#000' }); - $("#profile-jot-text").editor_autocomplete(baseurl+"/acl"); - editor = true; -/* $("a#jot-perms-icon").colorbox({ - 'inline' : true, - 'transition' : 'elastic' - });*/ - $("a#jot-perms-icon, a#settings-default-perms-menu").click(function () { - var parent = $("#profile-jot-acl-wrapper").parent(); - if (parent.css('display') == 'none') { - parent.show(); - } else { - parent.hide(); - } -// $("#profile-jot-acl-wrapper").parent().toggle(); - return false; - }); - $(".jothidden").show(); - if (typeof cb!="undefined") cb(); - return; - } -/* tinyMCE.init({ - theme : "advanced", - mode : "specific_textareas", - editor_selector: window.editSelect, - auto_focus: "profile-jot-text", - plugins : "bbcode,paste,autoresize, inlinepopups", - theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor,formatselect,code", - theme_advanced_buttons2 : "", - theme_advanced_buttons3 : "", - theme_advanced_toolbar_location : "top", - theme_advanced_toolbar_align : "center", - theme_advanced_blockformats : "blockquote,code", - gecko_spellcheck : true, - paste_text_sticky : true, - entity_encoding : "raw", - add_unload_trigger : false, - remove_linebreaks : false, - //force_p_newlines : false, - //force_br_newlines : true, - forced_root_block : 'div', - convert_urls: false, - content_css: "$baseurl/view/custom_tinymce.css", - theme_advanced_path : false, - file_browser_callback : "fcFileBrowser", - setup : function(ed) { - cPopup = null; - ed.onKeyDown.add(function(ed,e) { - if(cPopup !== null) - cPopup.onkey(e); - }); - - ed.onKeyUp.add(function(ed, e) { - var txt = tinyMCE.activeEditor.getContent(); - match = txt.match(/@([^ \n]+)$/); - if(match!==null) { - if(cPopup === null) { - cPopup = new ACPopup(this,baseurl+"/acl"); - } - if(cPopup.ready && match[1]!==cPopup.searchText) cPopup.search(match[1]); - if(! cPopup.ready) cPopup = null; - } - else { - if(cPopup !== null) { cPopup.close(); cPopup = null; } - } - - textlen = txt.length; - if(textlen != 0 && $('#jot-perms-icon').is('.unlock')) { - $('#profile-jot-desc').html(ispublic); - } - else { - $('#profile-jot-desc').html(' '); - } - - //Character count - - if(textlen <= 140) { - $('#character-counter').removeClass('red'); - $('#character-counter').removeClass('orange'); - $('#character-counter').addClass('grey'); - } - if((textlen > 140) && (textlen <= 420)) { - $('#character-counter').removeClass('grey'); - $('#character-counter').removeClass('red'); - $('#character-counter').addClass('orange'); - } - if(textlen > 420) { - $('#character-counter').removeClass('grey'); - $('#character-counter').removeClass('orange'); - $('#character-counter').addClass('red'); - } - $('#character-counter').text(textlen); - }); - - ed.onInit.add(function(ed) { - ed.pasteAsPlainText = true; - $("#profile-jot-text-loading").hide(); - $(".jothidden").show(); - if (typeof cb!="undefined") cb(); - }); +function initEditor(callback){ + if (editor == false) { + $("#profile-jot-text").css({ 'height': 200, 'color': '#000' }); + $("#profile-jot-text").editor_autocomplete(baseurl+"/acl"); + $("a#jot-perms-icon, a#settings-default-perms-menu").click(function () { + var parent = $("#profile-jot-acl-wrapper").parent(); + if (parent.css('display') == 'none') { + parent.show(); + } else { + parent.hide(); } + return false; }); + $(".jothidden").show(); + editor = true; - // setup acl popup - $("a#jot-perms-icon").colorbox({ - 'inline' : true, - 'transition' : 'elastic' - }); */ - } else { - if (typeof cb!="undefined") cb(); + } + if (typeof callback != "undefined") { + callback(); } } function enableOnUser(){ - if (editor) return; + if (editor) { + return; + } $(this).val(""); initEditor(); } -/*function wallInitEditor() { - var plaintext = window.editSelect; - - if(plaintext != 'none') { - tinyMCE.init({ - theme : "advanced", - mode : "specific_textareas", - editor_selector: /(profile-jot-text|prvmail-text)/, - plugins : "bbcode,paste", - theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor", - theme_advanced_buttons2 : "", - theme_advanced_buttons3 : "", - theme_advanced_toolbar_location : "top", - theme_advanced_toolbar_align : "center", - theme_advanced_blockformats : "blockquote,code", - gecko_spellcheck : true, - paste_text_sticky : true, - entity_encoding : "raw", - add_unload_trigger : false, - remove_linebreaks : false, - //force_p_newlines : false, - //force_br_newlines : true, - forced_root_block : 'div', - convert_urls: false, - content_css: baseurl + "/view/custom_tinymce.css", - //Character count - theme_advanced_path : false, - setup : function(ed) { - ed.onInit.add(function(ed) { - ed.pasteAsPlainText = true; - var editorId = ed.editorId; - var textarea = $('#'+editorId); - if (typeof(textarea.attr('tabindex')) != "undefined") { - $('#'+editorId+'_ifr').attr('tabindex', textarea.attr('tabindex')); - textarea.attr('tabindex', null); - } - }); - } - }); - } - else - $("#prvmail-text").contact_autocomplete(baseurl+"/acl"); -}*/ - - - /* * Jot */ function addeditortext(textElem, data) { - if(window.editSelect == 'none') { - var currentText = $(textElem).val(); - $(textElem).val(currentText + data); - } -/* else - tinyMCE.execCommand('mceInsertRawHTML',false,data);*/ + var currentText = $(textElem).val(); + $(textElem).val(currentText + data); } function jotVideoURL() { reply = prompt(window.vidURL); - if(reply && reply.length) { + if (reply && reply.length) { addeditortext("#profile-jot-text", '[video]' + reply + '[/video]'); } } function jotAudioURL() { reply = prompt(window.audURL); - if(reply && reply.length) { + if (reply && reply.length) { addeditortext("#profile-jot-text", '[audio]' + reply + '[/audio]'); } } @@ -485,7 +280,7 @@ function jotAudioURL() { function jotGetLocation() { reply = prompt(window.whereAreU, $('#jot-location').val()); - if(reply && reply.length) { + if (reply && reply.length) { $('#jot-location').val(reply); } } @@ -496,7 +291,7 @@ function jotShare(id) { $('#like-rotator-' + id).show(); $.get('share/' + id, function(data) { if (!editor) $("#profile-jot-text").val(""); - initEditor(function(){ + initEditor(function() { addeditortext("#profile-jot-text", data); $('#like-rotator-' + id).hide(); $(window).scrollTop(0); @@ -507,7 +302,7 @@ function jotShare(id) { function jotGetLink() { reply = prompt(window.linkURL); - if(reply && reply.length) { + if (reply && reply.length) { reply = bin2hex(reply); $('#profile-rotator').show(); $.get('parse_url?binurl=' + reply, function(data) { @@ -517,35 +312,12 @@ function jotGetLink() { } } -/*function linkdropper(event) { - var linkFound = event.dataTransfer.types.contains("text/uri-list"); - if(linkFound) - event.preventDefault(); -} - -function linkdrop(event) { - var reply = event.dataTransfer.getData("text/uri-list"); - event.target.textContent = reply; - event.preventDefault(); - if(reply && reply.length) { - reply = bin2hex(reply); - $('#profile-rotator').show(); - $.get('parse_url?binurl=' + reply, function(data) { - //if (!editor) $("#profile-jot-text").val(""); - //initEditor(function(){ - addeditortext(window.jotId, data); - $('#profile-rotator').hide(); - //}); - }); - } -}*/ - function jotClearLocation() { $('#jot-coord').val(''); $('#profile-nolocation-wrapper').hide(); } -if(typeof window.geoTag === 'function') window.geoTag(); +if (typeof window.geoTag === 'function') window.geoTag(); @@ -555,35 +327,17 @@ if(typeof window.geoTag === 'function') window.geoTag(); function confirmDelete() { return confirm(window.delItem); } -/*function deleteCheckedItems() { - var checkedstr = ''; - - $('.item-select').each( function() { - if($(this).is(':checked')) { - if(checkedstr.length != 0) { - checkedstr = checkedstr + ',' + $(this).val(); - } - else { - checkedstr = $(this).val(); - } - } - }); - $.post('item', { dropitems: checkedstr }, function(data) { - window.location.reload(); - }); -}*/ - function itemTag(id) { reply = prompt(window.term); - if(reply && reply.length) { + if (reply && reply.length) { reply = reply.replace('#',''); - if(reply.length) { + if (reply.length) { commentBusy = true; $('body').css('cursor', 'wait'); $.get('tagger/' + id + '?term=' + reply, NavUpdate); - /*if(timer) clearTimeout(timer); + /*if (timer) clearTimeout(timer); timer = setTimeout(NavUpdate,3000);*/ liking = 1; } @@ -591,64 +345,25 @@ function itemTag(id) { } function itemFiler(id) { - - $.get('filer/', function(data){ + $.get('filer/', function(data) { var promptText = $('#id_term_label', data).text(); reply = prompt(promptText); - if(reply && reply.length) { + if (reply && reply.length) { commentBusy = true; $('body').css('cursor', 'wait'); $.get('filer/' + id + '?term=' + reply, NavUpdate); -/* if(timer) clearTimeout(timer); - timer = setTimeout(NavUpdate,3000);*/ liking = 1; -/* $.colorbox.close();*/ } }); - -/* var bordercolor = $("input").css("border-color"); - - $.get('filer/', function(data){ - $.colorbox({html:data}); - $("#id_term").keypress(function(){ - $(this).css("border-color",bordercolor); - }) - $("#select_term").change(function(){ - $("#id_term").css("border-color",bordercolor); - }) - - $("#filer_save").click(function(e){ - e.preventDefault(); - reply = $("#id_term").val(); - if(reply && reply.length) { - commentBusy = true; - $('body').css('cursor', 'wait'); - $.get('filer/' + id + '?term=' + reply); - if(timer) clearTimeout(timer); - timer = setTimeout(NavUpdate,3000); - liking = 1; - $.colorbox.close(); - } else { - $("#id_term").css("border-color","#FF0000"); - } - return false; - }); - }); -*/ } - - /* * Comments */ - - function commentOpen(obj,id) { - if(obj.value == window.commentEmptyText) { - obj.value = ""; + if (obj.value == "") { $("#comment-edit-text-" + id).addClass("comment-edit-text-full"); $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty"); $("#mod-cmnt-wrap-" + id).show(); @@ -656,8 +371,7 @@ function commentOpen(obj,id) { } } function commentClose(obj,id) { - if(obj.value == "") { - obj.value = window.commentEmptyText; + if (obj.value == "") { $("#comment-edit-text-" + id).removeClass("comment-edit-text-full"); $("#comment-edit-text-" + id).addClass("comment-edit-text-empty"); $("#mod-cmnt-wrap-" + id).hide(); @@ -668,8 +382,7 @@ function commentClose(obj,id) { function commentInsert(obj,id) { var tmpStr = $("#comment-edit-text-" + id).val(); - if(tmpStr == window.commentEmptyText) { - tmpStr = ""; + if (tmpStr == "") { $("#comment-edit-text-" + id).addClass("comment-edit-text-full"); $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty"); openMenu("comment-edit-submit-wrapper-" + id); @@ -684,8 +397,7 @@ function commentInsert(obj,id) { function qCommentInsert(obj,id) { var tmpStr = $("#comment-edit-text-" + id).val(); - if(tmpStr == window.commentEmptyText) { - tmpStr = ""; + if (tmpStr == "") { $("#comment-edit-text-" + id).addClass("comment-edit-text-full"); $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty"); openMenu("comment-edit-submit-wrapper-" + id); @@ -699,43 +411,25 @@ function qCommentInsert(obj,id) { $(obj).val(""); } -/*function showHideCommentBox(id) { - if( $('#comment-edit-form-' + id).is(':visible')) { - $('#comment-edit-form-' + id).hide(); - } - else { - $('#comment-edit-form-' + id).show(); - } -}*/ - - -function insertFormatting(comment,BBcode,id) { - +function insertFormatting(BBcode, id) { var tmpStr = $("#comment-edit-text-" + id).val(); - if(tmpStr == comment) { - tmpStr = ""; + if (tmpStr == "") { $("#comment-edit-text-" + id).addClass("comment-edit-text-full"); $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty"); openMenu("comment-edit-submit-wrapper-" + id); - $("#comment-edit-text-" + id).val(tmpStr); } textarea = document.getElementById("comment-edit-text-" +id); if (document.selection) { textarea.focus(); selected = document.selection.createRange(); - if (BBcode == "url"){ - selected.text = "["+BBcode+"=http://]" + selected.text + "[/"+BBcode+"]"; - } else selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]"; } else if (textarea.selectionStart || textarea.selectionStart == "0") { var start = textarea.selectionStart; var end = textarea.selectionEnd; - if (BBcode == "url"){ - textarea.value = textarea.value.substring(0, start) + "["+BBcode+"=http://]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length); - } else textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length); } + return true; } @@ -745,5 +439,3 @@ function cmtBbOpen(id) { function cmtBbClose(id) { $(".comment-edit-bb-" + id).hide(); } - - diff --git a/frost-mobile/php/default.php b/frost-mobile/php/default.php index 332291c..72135fd 100644 --- a/frost-mobile/php/default.php +++ b/frost-mobile/php/default.php @@ -1,45 +1,45 @@ - - - - <?php if(x($page,'title')) echo $page['title'] ?> - - - -module === 'home') echo 'onLoad="setTimeout(\'homeRedirect()\', 1500)"'?>> - - - module === 'home' ) { ?> -
- -
- - module === 'login' || $a->module === 'register' || $a->module === 'lostpass' ) { - ?> -
-
-
-
-
- - -
- -
- module === 'settings' || $a->module === 'message' || $a->module === 'profile') && x($page,'aside')) echo $page['aside']; ?> -
- -
- -
-
- - module === 'contacts') && x($page,'aside')) echo $page['aside']; ?> -
- -
- - - - + + + + <?php if(x($page,'title')) echo $page['title'] ?> + + + +module === 'home') echo 'onLoad="setTimeout(\'homeRedirect()\', 1500)"'?>> + + + module === 'home' ) { ?> +
+ +
+ + module === 'login' || $a->module === 'register' || $a->module === 'lostpass' ) { + ?> +
+
+
+
+
+ + +
+ +
+ module === 'settings' || $a->module === 'message' || $a->module === 'profile') && x($page,'aside')) echo $page['aside']; ?> +
+ +
+ +
+
+ + module === 'contacts') && x($page,'aside')) echo $page['aside']; ?> +
+ +
+ + + + diff --git a/frost-mobile/style.css b/frost-mobile/style.css index 36b621b..632e44b 100644 --- a/frost-mobile/style.css +++ b/frost-mobile/style.css @@ -1385,7 +1385,7 @@ input#dfrn-url { /* add ellipsis on text overflow */ /* this work on safari, opera, ie, chrome. */ /* firefox users have to wait support or we */ - /* can use a jquery plugin http://bit.ly/zJskg */ + /* can use a jquery addon http://bit.ly/zJskg */ text-overflow: ellipsis; -o-text-overflow: ellipsis; width: 100%; @@ -1549,8 +1549,16 @@ input#dfrn-url { background-repeat: repeat-x;*/ padding: 5px 5px 0px; height: 32px; - } +.wall-item-tools a { + border-radius: 8px; + padding: 2px; + background-position: center; +} +.wall-item-tools a.active { + background-color: rgba(59, 101, 164, 0.5); +} + .wall-item-author { /* margin-top: 10px;*/ margin-top: 0px; @@ -1901,6 +1909,9 @@ input#profile-jot-email { -webkit-border-radius: 10px; } +.pager .disabled { + display: none; +} .pager_first, .pager_last, @@ -3151,7 +3162,7 @@ aside input[type='text'] { } -#plugin-settings-link, #account-settings-link { +#addon-settings-link, #account-settings-link { margin-bottom: 10px; } @@ -3765,10 +3776,10 @@ aside input[type='text'] { text-align: right; } -#adminpage #pluginslist { +#adminpage #addonslist { margin: 0px; padding: 0px; } -#adminpage .plugin { +#adminpage .addon { list-style: none; display: block; border: 1px solid #888888; @@ -3776,8 +3787,8 @@ aside input[type='text'] { margin-bottom: 5px; clear: left; } -#adminpage .plugin .desc { margin-left: 2.5em;} -#adminpage .toggleplugin { +#adminpage .addon .desc { margin-left: 2.5em;} +#adminpage .toggleaddon { float:left; margin-right: 1em; } @@ -3896,7 +3907,7 @@ aside input[type='text'] { .icon.like { display: block; width: 26px; height: 28px;/*31 33*/ margin-right: 7px; - background-size: 100% 100%; + background-size: 26px 28px; background-image: url('images/approve.png'); background-repeat: no-repeat; opacity: 0.5; @@ -3904,7 +3915,7 @@ aside input[type='text'] { .icon.link { display: block; width: 22px; height: 24px; - background-size: 100% 100%; + background-size: 22px 24px; background-image: url('images/link.png'); background-repeat: no-repeat; @@ -3913,14 +3924,14 @@ aside input[type='text'] { /*.globe { background-position: 0px -16px;}*/ .icon.globe { display: block; width: 28px; height: 28px; - background-size: 100% 100%; + background-size: 28px 28px; background-image: url('images/globe.png'); background-repeat: no-repeat; } /*.noglobe { background-position: -16px -16px;}*/ .icon.noglobe { display: block; width: 24px; height: 24px; - background-size: 100% 100%; + background-size: 24px 24px; background-image: url('images/noglobe.png'); background-repeat: no-repeat; } @@ -3931,14 +3942,14 @@ aside input[type='text'] { .small-pencil { background-position: -96px -16px;}*/ .icon.pencil { display: block; width: 28px; height: 28px; - background-size: 100% 100%; + background-size: 28px 28px; background-image: url('images/pencil.png'); background-repeat: no-repeat; opacity: 0.5; } .icon.small-pencil { display: block; width: 28px; height: 28px; - background-size: 100% 100%; + background-size: 28px 28px; background-image: url('images/pencil.png'); background-repeat: no-repeat; opacity: 0.5; @@ -3947,7 +3958,7 @@ aside input[type='text'] { .icon.recycle { display: block; width: 28px; height: 27px;/*33 32*/ - background-size: 100% 100%; + background-size: 28px 27px; background-image: url('images/recycle.png'); background-repeat: no-repeat; opacity: 0.5; @@ -3957,7 +3968,7 @@ aside input[type='text'] { /* display: block;*/ display: none; width: 28px; height: 28px; - background-size: 100% 100%; + background-size: 28px 28px; background-image: url('images/remote-link.png'); background-repeat: no-repeat; opacity: 0.5; @@ -3969,7 +3980,7 @@ aside input[type='text'] { .icon.lock { display: block; width: 17px; height: 25px; margin-top: 1px; - background-size: 100% 100%; + background-size: 17px 25px; background-image: url('images/lock.png'); background-repeat: no-repeat; } @@ -3977,7 +3988,7 @@ aside input[type='text'] { .icon.unlock { display: block; width: 17px; height: 28px; margin-top: -2px; - background-size: 100% 100%; + background-size: 17px 28px; background-image: url('images/unlock.png'); background-repeat: no-repeat; } @@ -3987,7 +3998,7 @@ aside input[type='text'] { /*.attach { background-position: -80px -32px; }*/ .icon.attach { display: block; width: 28px; height: 28px; - background-size: 100% 100%; + background-size: 28px 28px; background-image: url('images/paperclip.png'); background-repeat: no-repeat; } @@ -4000,14 +4011,14 @@ aside input[type='text'] { /*.starred { background-position: -16px -48px; }*/ .icon.starred { display: block; width: 28px; height: 28px; - background-size: 100% 100%; + background-size: 28px 28px; background-image: url('images/star-yellow.png'); background-repeat: no-repeat; } /*.unstarred { background-position: -32px -48px; }*/ .icon.unstarred { display: block; width: 28px; height: 28px; - background-size: 100% 100%; + background-size: 28px 28px; background-image: url('images/star.png'); background-repeat: no-repeat; @@ -4016,7 +4027,7 @@ aside input[type='text'] { /*.tagged { background-position: -48px -48px; }*/ .icon.tagged { display: block; width: 28px; height: 28px; - background-size: 100% 100%; + background-size: 28px 28px; background-image: url('images/tag.png'); background-repeat: no-repeat; opacity: 0.5; @@ -4026,7 +4037,7 @@ aside input[type='text'] { .filer-icon { display: block; width: 24px; height: 24px; - background-size: 100% 100%; + background-size: 24px 24px; background-image: url('images/folder.png'); background-repeat: no-repeat; opacity: 0.5; @@ -4034,7 +4045,7 @@ aside input[type='text'] { .event-icon { display: block; width: 33px; height: 33px; - background-size: 100% 100%; + background-size: 33px 33px; background-repeat: no-repeat; opacity: 0.5; } diff --git a/frost-mobile/templates/comment_item.tpl b/frost-mobile/templates/comment_item.tpl index 11aa311..ba68b46 100644 --- a/frost-mobile/templates/comment_item.tpl +++ b/frost-mobile/templates/comment_item.tpl @@ -1,79 +1,44 @@ - -{{**}} - -
-
-{{**}} +
+ - {{**}} - {{**}} {{$mytitle}} - {{**}} - {{**}}
  • + data-role="insert-formatting" data-bbcode="b" data-id="{{$id}}">
  • + data-role="insert-formatting" data-bbcode="i" data-id="{{$id}}">
  • + data-role="insert-formatting" data-bbcode="u" data-id="{{$id}}">
  • + data-role="insert-formatting" data-bbcode="quote" data-id="{{$id}}">
  • -{{**}} -
- {{**}} -{{**}} - + data-role="insert-formatting" data-bbcode="code" data-id="{{$id}}"> + + {{if $qcomment}} - {{foreach $qcomment as $qc}} - + {{/foreach}} {{/if}}
- diff --git a/frost-mobile/templates/contact_edit.tpl b/frost-mobile/templates/contact_edit.tpl index 3766fb2..e07f1d0 100644 --- a/frost-mobile/templates/contact_edit.tpl +++ b/frost-mobile/templates/contact_edit.tpl @@ -81,6 +81,15 @@

{{$lbl_vis1}}

{{$lbl_vis2}}

+ +{{if $reason}} +
+

{{$lbl_info2}}

+

{{$reason}}

+
+
+{{/if}} + {{$profile_select}}
diff --git a/frost-mobile/templates/cropend.tpl b/frost-mobile/templates/cropend.tpl index a56c71d..a26100e 100644 --- a/frost-mobile/templates/cropend.tpl +++ b/frost-mobile/templates/cropend.tpl @@ -1,4 +1,4 @@ - - - + + + diff --git a/frost-mobile/templates/crophead.tpl b/frost-mobile/templates/crophead.tpl index 56e941e..cbfce8d 100644 --- a/frost-mobile/templates/crophead.tpl +++ b/frost-mobile/templates/crophead.tpl @@ -1 +1 @@ - + diff --git a/frost-mobile/templates/end.tpl b/frost-mobile/templates/end.tpl index 04416ad..a37ae7b 100644 --- a/frost-mobile/templates/end.tpl +++ b/frost-mobile/templates/end.tpl @@ -1,16 +1,16 @@ - + - - - + + + - - + + - + diff --git a/frost-mobile/templates/event_end.tpl b/frost-mobile/templates/event_end.tpl index aad3e5a..8641b7c 100644 --- a/frost-mobile/templates/event_end.tpl +++ b/frost-mobile/templates/event_end.tpl @@ -1,5 +1,3 @@ - - - + + diff --git a/frost-mobile/templates/event_head.tpl b/frost-mobile/templates/event_head.tpl index ccd88f6..e4abc17 100644 --- a/frost-mobile/templates/event_head.tpl +++ b/frost-mobile/templates/event_head.tpl @@ -1,9 +1,10 @@ - + + diff --git a/frost-mobile/templates/field_checkbox.tpl b/frost-mobile/templates/field_checkbox.tpl index ddcc05a..4f094e0 100644 --- a/frost-mobile/templates/field_checkbox.tpl +++ b/frost-mobile/templates/field_checkbox.tpl @@ -1,7 +1,8 @@ - -
- -
- {{$field.3}} + +
+ + +
+ {{$field.3}}
diff --git a/frost-mobile/templates/field_openid.tpl b/frost-mobile/templates/field_openid.tpl index 69319b0..5c68f24 100644 --- a/frost-mobile/templates/field_openid.tpl +++ b/frost-mobile/templates/field_openid.tpl @@ -1,6 +1,6 @@

- + {{$field.3}}
diff --git a/frost-mobile/templates/head.tpl b/frost-mobile/templates/head.tpl index 5684ca7..0d4d468 100644 --- a/frost-mobile/templates/head.tpl +++ b/frost-mobile/templates/head.tpl @@ -3,21 +3,20 @@ - - - + + + - - - - + diff --git a/frost-mobile/templates/jot-header.tpl b/frost-mobile/templates/jot-header.tpl index 1ba0ef8..18e7f00 100644 --- a/frost-mobile/templates/jot-header.tpl +++ b/frost-mobile/templates/jot-header.tpl @@ -1,8 +1,6 @@ + diff --git a/frost-mobile/templates/msg-header.tpl b/frost-mobile/templates/msg-header.tpl index fc23dcc..5c920f7 100644 --- a/frost-mobile/templates/msg-header.tpl +++ b/frost-mobile/templates/msg-header.tpl @@ -1,9 +1,7 @@ - + - diff --git a/frost-mobile/templates/wall_thread.tpl b/frost-mobile/templates/wall_thread.tpl index 1223919..be8d00d 100644 --- a/frost-mobile/templates/wall_thread.tpl +++ b/frost-mobile/templates/wall_thread.tpl @@ -18,7 +18,7 @@
{{$item.wall}}
{{/if}} - {{**}} {{**}} @@ -38,7 +38,7 @@ {{**}}
{{if $item.lock}}{{**}}{{$item.lock}}{{**}} - {{else}}
{{/if}} + {{else}}
{{/if}}
{{$item.location}}
@@ -52,11 +52,13 @@
{{$item.title}}
{{**}}
{{$item.body}} - {{**}} - {{foreach $item.tags as $tag}} - {{$tag}} - {{/foreach}} - {{**}} + {{**}} + {{if !$item.suppress_tags}} + {{foreach $item.tags as $tag}} + {{$tag}} + {{/foreach}} + {{/if}} + {{**}} {{if $item.has_cats}}
{{$item.txt_cats}} {{foreach $item.categories as $cat}}{{$cat.name}} [{{$remove}}] {{if $cat.last}}{{else}}, {{/if}}{{/foreach}}
@@ -71,9 +73,9 @@
{{if $item.vote}} -
+
{{**}} {{if $item.responses}} {{foreach $item.responses as $verb=>$response}} diff --git a/frost-mobile/templates/wallmsg-end.tpl b/frost-mobile/templates/wallmsg-end.tpl index fe59efd..18aec4e 100644 --- a/frost-mobile/templates/wallmsg-end.tpl +++ b/frost-mobile/templates/wallmsg-end.tpl @@ -1,3 +1,3 @@ - + diff --git a/frost-mobile/templates/wallmsg-header.tpl b/frost-mobile/templates/wallmsg-header.tpl index 5d28b8e..752085d 100644 --- a/frost-mobile/templates/wallmsg-header.tpl +++ b/frost-mobile/templates/wallmsg-header.tpl @@ -1,8 +1,5 @@ - - diff --git a/frost-mobile/theme.php b/frost-mobile/theme.php index 29a990f..68b3ad7 100644 --- a/frost-mobile/theme.php +++ b/frost-mobile/theme.php @@ -9,24 +9,28 @@ * Maintainer: Zach P */ -function frost_mobile_init(&$a) { +use Friendica\App; +use Friendica\Core\System; + +function frost_mobile_init(App $a) { $a->sourcename = 'Friendica mobile web'; $a->videowidth = 250; $a->videoheight = 200; - $a->theme_thread_allow = false; $a->force_max_items = 10; - set_template_engine($a, 'smarty3'); + $a->set_template_engine('smarty3'); } -function frost_mobile_content_loaded(&$a) { +function frost_mobile_content_loaded(App $a) { // I could do this in style.php, but by having the CSS in a file the browser will cache it, // making pages load faster - if( $a->module === 'home' || $a->module === 'login' || $a->module === 'register' || $a->module === 'lostpass' ) { -// $a->page['htmlhead'] = str_replace('$stylesheet', $a->get_baseurl() . '/view/theme/frost-mobile/login-style.css', $a->page['htmlhead']); - $a->theme['stylesheet'] = $a->get_baseurl() . '/view/theme/frost-mobile/login-style.css'; + if ( $a->module === 'home' || $a->module === 'login' || $a->module === 'register' || $a->module === 'lostpass' ) { +// $a->page['htmlhead'] = str_replace('$stylesheet', System::baseUrl() . '/view/theme/frost-mobile/login-style.css', $a->page['htmlhead']); + $a->theme['stylesheet'] = System::baseUrl() . '/view/theme/frost-mobile/login-style.css'; } - if( $a->module === 'login' ) + + if ( $a->module === 'login' ) { $a->page['end'] .= ''; + } } diff --git a/frost/TODO b/frost/TODO index 1378e5d..9c8908b 100644 --- a/frost/TODO +++ b/frost/TODO @@ -2,7 +2,6 @@ Home page edit pencil Preview spacing Photo album display -Check TinyMCE optimization "Profiles" page is wonky Settings, admin, photos upload don't look beautiful diff --git a/frost/js/main.js b/frost/js/main.js index 733064b..0afdf68 100644 --- a/frost/js/main.js +++ b/frost/js/main.js @@ -1,10 +1,10 @@ function openClose(listID) { -/* if(document.getElementById(theID).style.display == "block") { - document.getElementById(theID).style.display = "none" +/* if(document.getElementById(theID).style.display == "block") { + document.getElementById(theID).style.display = "none" } - else { - document.getElementById(theID).style.display = "block" + else { + document.getElementById(theID).style.display = "block" }*/ listID = "#" + listID.replace(/:/g, "\\:"); listID = listID.replace(/\./g, "\\."); @@ -21,11 +21,11 @@ } function openMenu(theID) { - document.getElementById(theID).style.display = "block" + document.getElementById(theID).style.display = "block" } function closeMenu(theID) { - document.getElementById(theID).style.display = "none" + document.getElementById(theID).style.display = "none" } @@ -48,29 +48,16 @@ $.ajaxSetup({cache: false}); collapseHeight(); - - /* setup tooltips *//* - $("a,.tt").each(function(){ - var e = $(this); - var pos="bottom"; - if (e.hasClass("tttop")) pos="top"; - if (e.hasClass("ttbottom")) pos="bottom"; - if (e.hasClass("ttleft")) pos="left"; - if (e.hasClass("ttright")) pos="right"; - e.tipTip({defaultPosition: pos, edgeOffset: 8}); - });*/ - - - + /* setup onoff widgets */ $(".onoff input").each(function(){ val = $(this).val(); id = $(this).attr("id"); $("#"+id+"_onoff ."+ (val==0?"on":"off")).addClass("hidden"); - + }); $(".onoff > a").click(function(event){ - event.preventDefault(); + event.preventDefault(); var input = $(this).siblings("input"); var val = 1-input.val(); var id = input.attr("id"); @@ -79,9 +66,6 @@ input.val(val); //console.log(id); }); - - /* setup field_richtext */ - //setupFieldRichtext(); /* popup menus */ function close_last_popup_menu(e) { @@ -119,20 +103,20 @@ $('html').click(function(e) { close_last_popup_menu(e); }); - + // fancyboxes $("a.popupbox").colorbox({ 'inline' : true, 'transition' : 'elastic' }); - + /* notifications template */ var notifications_tpl= unescape($("#nav-notifications-template[rel=template]").html()); var notifications_all = unescape($('
').append( $("#nav-notifications-see-all").clone() ).html()); //outerHtml hack var notifications_mark = unescape($('
').append( $("#nav-notifications-mark-all").clone() ).html()); //outerHtml hack var notifications_empty = unescape($("#nav-notifications-menu").html()); - + /* nav update event */ $('nav').bind('nav-update', function(e,data){; var invalid = $(data).find('invalid').text(); @@ -145,7 +129,7 @@ var home = $(data).find('home').text(); if(home == 0) { home = ''; $('#home-update').removeClass('show') } else { $('#home-update').addClass('show') } $('#home-update').html(home); - + var intro = $(data).find('intro').text(); if(intro == 0) { intro = ''; $('#intro-update').removeClass('show') } else { $('#intro-update').addClass('show') } $('#intro-update').html(intro); @@ -153,7 +137,7 @@ var mail = $(data).find('mail').text(); if(mail == 0) { mail = ''; $('#mail-update').removeClass('show') } else { $('#mail-update').addClass('show') } $('#mail-update').html(mail); - + var intro = $(data).find('intro').text(); if(intro == 0) { intro = ''; $('#intro-update-li').removeClass('show') } else { $('#intro-update-li').addClass('show') } $('#intro-update-li').html(intro); @@ -163,7 +147,7 @@ $('#mail-update-li').html(mail); var eNotif = $(data).find('notif') - + if (eNotif.children("note").length==0){ $("#nav-notifications-menu").html(notifications_empty); } else { @@ -194,7 +178,7 @@ } if(notif == 0) { notif = ''; $('#notify-update').removeClass('show') } else { $('#notify-update').addClass('show') } $('#notify-update').html(notif); - + var eSysmsg = $(data).find('sysmsgs'); eSysmsg.children("notice").each(function(){ text = $(this).text(); @@ -204,11 +188,11 @@ text = $(this).text(); $.jGrowl(text, { sticky: false, theme: 'info', life: 1000 }); }); - + }); - - - NavUpdate(); + + + NavUpdate(); // Allow folks to stop the ajax page updates with the pause/break key $(document).keydown(function(event) { if(event.keyCode == '8') { @@ -234,8 +218,8 @@ } } }); - - + + }); function NavUpdate() { @@ -246,11 +230,11 @@ $(data).find('result').each(function() { // send nav-update event $('nav').trigger('nav-update', this); - - + + // start live update - + if($('#live-network').length) { src = 'network'; liveUpdate(); } if($('#live-profile').length) { src = 'profile'; liveUpdate(); } @@ -260,19 +244,19 @@ /*if($('#live-display').length) { if(liking) { liking = 0; - window.location.href=window.location.href + window.location.href=window.location.href } }*/ if($('#live-photos').length) { if(liking) { liking = 0; - window.location.href=window.location.href + window.location.href=window.location.href } } - - - + + + }); }) ; } @@ -382,8 +366,8 @@ }); $('#' + prev).after($(this)); } - else { - $('#' + ident + ' ' + '.wall-item-ago').replaceWith($(this).find('.wall-item-ago')); + else { + $('#' + ident + ' ' + '.wall-item-ago').replaceWith($(this).find('.wall-item-ago')); if($('#' + ident + ' ' + '.comment-edit-text-empty').length) $('#' + ident + ' ' + '.wall-item-comment-wrapper').replaceWith($(this).find('.wall-item-comment-wrapper')); $('#' + ident + ' ' + '.hide-comments-total').replaceWith($(this).find('.hide-comments-total')); @@ -393,9 +377,9 @@ $(this).attr('src',$(this).attr('dst')); }); } - prev = ident; + prev = ident; });*/ - + $('.like-rotator').hide(); if(commentBusy) { commentBusy = false; @@ -403,7 +387,7 @@ } /* autocomplete @nicknames */ $(".comment-edit-form textarea").editor_autocomplete(baseurl+"/acl"); - + collapseHeight(); // setup videos, since VideoJS won't take care of any loaded via AJAX @@ -422,7 +406,7 @@ $(this).divgrow({ initialHeight: 400, showBrackets: false, speed: 0 }); $(this).addClass('divmore'); $('html').height('auto'); - } + } }); } @@ -434,10 +418,10 @@ $(node).removeClass("drop").addClass("drophide"); }*/ - // Since our ajax calls are asynchronous, we will give a few - // seconds for the first ajax call (setting like/dislike), then + // Since our ajax calls are asynchronous, we will give a few + // seconds for the first ajax call (setting like/dislike), then // run the updater to pick up any changes and display on the page. - // The updater will turn any rotators off when it's done. + // The updater will turn any rotators off when it's done. // This function will have returned long before any of these // events have completed and therefore there won't be any // visible feedback that anything changed without all this @@ -461,13 +445,13 @@ $('#star-' + ident).addClass('hidden'); $('#unstar-' + ident).removeClass('hidden'); } - else { + else { $('#starred-' + ident).addClass('unstarred'); $('#starred-' + ident).removeClass('starred'); $('#star-' + ident).removeClass('hidden'); $('#unstar-' + ident).addClass('hidden'); } -// $('#like-rotator-' + ident).hide(); +// $('#like-rotator-' + ident).hide(); }); } @@ -520,8 +504,8 @@ commentBusy = true; $('body').css('cursor', 'wait'); $("#comment-preview-inp-" + id).val("0"); - $.post( - "item", + $.post( + "item", $("#comment-edit-form-" + id).serialize(), function(data) { if(data.success) { @@ -537,28 +521,28 @@ window.location.href=data.reload; } }, - "json" - ); - return false; + "json" + ); + return false; } function preview_comment(id) { $("#comment-preview-inp-" + id).val("1"); $("#comment-edit-preview-" + id).show(); - $.post( - "item", + $.post( + "item", $("#comment-edit-form-" + id).serialize(), function(data) { if(data.preview) { - + $("#comment-edit-preview-" + id).html(data.preview); $("#comment-edit-preview-" + id + " a").click(function() { return false; }); } }, - "json" - ); - return true; + "json" + ); + return true; } @@ -578,20 +562,19 @@ function preview_post() { $("#jot-preview").val("1"); $("#jot-preview-content").show(); - tinyMCE.triggerSave(); - $.post( - "item", + $.post( + "item", $("#profile-jot-form").serialize(), function(data) { - if(data.preview) { + if(data.preview) { $("#jot-preview-content").html(data.preview); $("#jot-preview-content" + " a").click(function() { return false; }); } }, - "json" - ); + "json" + ); $("#jot-preview").val("0"); - return true; + return true; } @@ -630,7 +613,7 @@ $('body .fakelink').css('cursor', 'wait'); $.get('group/' + gid + '/' + cid + "?t=" + sec_token, function(data) { $('#group-update-wrapper').html(data); - $('body .fakelink').css('cursor', 'auto'); + $('body .fakelink').css('cursor', 'auto'); }); } @@ -638,7 +621,7 @@ $('body .fakelink').css('cursor', 'wait'); $.get('profperm/' + gid + '/' + cid, function(data) { $('#prof-update-wrapper').html(data); - $('body .fakelink').css('cursor', 'auto'); + $('body .fakelink').css('cursor', 'auto'); }); } @@ -666,61 +649,9 @@ function notifyMarkAll() { }); } - -// code from http://www.tinymce.com/wiki.php/How-to_implement_a_custom_file_browser -function fcFileBrowser (field_name, url, type, win) { - /* TODO: If you work with sessions in PHP and your client doesn't accept cookies you might need to carry - the session name and session ID in the request string (can look like this: "?PHPSESSID=88p0n70s9dsknra96qhuk6etm5"). - These lines of code extract the necessary parameters and add them back to the filebrowser URL again. */ - - - var cmsURL = baseurl+"/fbrowser/"+type+"/"; - - tinyMCE.activeEditor.windowManager.open({ - file : cmsURL, - title : 'File Browser', - width : 420, // Your dimensions may differ - toy around with them! - height : 400, - resizable : "yes", - inline : "yes", // This parameter only has an effect if you use the inlinepopups plugin! - close_previous : "no" - }, { - window : win, - input : field_name - }); - return false; - } - -/*function setupFieldRichtext(){ - tinyMCE.init({ - theme : "advanced", - mode : "specific_textareas", - editor_selector: "fieldRichtext", - plugins : "bbcode,paste, inlinepopups", - theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor,formatselect,code", - theme_advanced_buttons2 : "", - theme_advanced_buttons3 : "", - theme_advanced_toolbar_location : "top", - theme_advanced_toolbar_align : "center", - theme_advanced_blockformats : "blockquote,code", - paste_text_sticky : true, - entity_encoding : "raw", - add_unload_trigger : false, - remove_linebreaks : false, - //force_p_newlines : false, - //force_br_newlines : true, - forced_root_block : 'div', - convert_urls: false, - content_css: baseurl+"/view/custom_tinymce.css", - theme_advanced_path : false, - file_browser_callback : "fcFileBrowser", - }); -}*/ - - -/** - * sprintf in javascript - * "{0} and {1}".format('zero','uno'); +/** + * sprintf in javascript + * "{0} and {1}".format('zero','uno'); **/ String.prototype.format = function() { var formatted = this; diff --git a/frost/js/theme.js b/frost/js/theme.js index eb8bb51..bf7bdd5 100644 --- a/frost/js/theme.js +++ b/frost/js/theme.js @@ -12,12 +12,7 @@ $(document).ready(function() { '#system-menu-list-closing': false }; -/* $.ajaxSetup({ - cache: false - });*/ - - - /* enable tinymce on focus and click */ + /* enable editor on focus and click */ $("#profile-jot-text").focus(enableOnUser); $("#profile-jot-text").click(enableOnUser); @@ -27,8 +22,6 @@ $(document).ready(function() { hideNavMenu($(this).attr('point')); }); -/* $('html').click(function() { $("#nav-notifications-menu" ).hide(); });*/ - $('.group-edit-icon').hover( function() { $(this).addClass('icon'); $(this).removeClass('iconspacer');}, @@ -64,37 +57,16 @@ $(document).ready(function() { $('#drop-' + id).removeClass('icon');$('#drop-' + id).removeClass('drophide'); $('#drop-' + id).addClass('iconspacer');} ); -/* $('.nav-load-page-link').click(function() { - getPageContent( $(this).attr('href') ); - hideNavMenu( '#' + $(this).closest('ul').attr('id') ); - return false; - });*/ - $('#id_share').change(function() { - if ($('#id_share').is(':checked')) { + if ($('#id_share').is(':checked')) { $('#acl-wrapper').show(); - } - else { + } else { $('#acl-wrapper').hide(); } }).trigger('change'); -// For event_end.tpl -/* $('#contact_allow, #contact_deny, #group_allow, #group_deny').change(function() { - var selstr; - $('#contact_allow option:selected, #contact_deny option:selected, #group_allow option:selected, #group_deny option:selected').each( function() { - selstr = $(this).text(); - $('#jot-public').hide(); - }); - if(selstr == null) { - $('#jot-public').show(); - } - - }).trigger('change');*/ - - - if(typeof window.AjaxUpload != "undefined") { + if (typeof window.AjaxUpload != "undefined") { var uploader = new window.AjaxUpload( window.imageUploadButton, { action: 'wall_upload/'+window.nickname, @@ -103,11 +75,11 @@ $(document).ready(function() { onComplete: function(file,response) { addeditortext(window.jotId, response); $('#profile-rotator').hide(); - } + } } ); - if($('#wall-file-upload').length) { + if ($('#wall-file-upload').length) { var file_uploader = new window.AjaxUpload( 'wall-file-upload', { action: 'wall_attach/'+window.nickname, @@ -116,14 +88,14 @@ $(document).ready(function() { onComplete: function(file,response) { addeditortext(window.jotId, response); $('#profile-rotator').hide(); - } + } } ); } } - if(typeof window.aclInit !="undefined" && typeof acl=="undefined"){ + if (typeof window.aclInit !="undefined" && typeof acl=="undefined") { acl = new ACL( baseurl+"/acl", [ window.allowCID,window.allowGID,window.denyCID,window.denyGID ] @@ -131,7 +103,7 @@ $(document).ready(function() { } - if(window.aclType == "settings-head" || window.aclType == "photos_head" || window.aclType == "event_head") { + if (window.aclType == "settings-head" || window.aclType == "photos_head" || window.aclType == "event_head") { $('#contact_allow, #contact_deny, #group_allow, #group_deny').change(function() { var selstr; $('#contact_allow option:selected, #contact_deny option:selected, #group_allow option:selected, #group_deny option:selected').each( function() { @@ -139,7 +111,7 @@ $(document).ready(function() { $('#jot-perms-icon').removeClass('unlock').addClass('lock'); $('#jot-public').hide(); }); - if(selstr == null) { + if (selstr == null) { $('#jot-perms-icon').removeClass('lock').addClass('unlock'); $('#jot-public').show(); } @@ -147,30 +119,30 @@ $(document).ready(function() { }).trigger('change'); } - if(window.aclType == "event_head") { + if (window.aclType == "event_head") { $('#events-calendar').fullCalendar({ events: baseurl + window.eventModuleUrl +'/json/', header: { left: 'prev,next today', center: 'title', right: 'month,agendaWeek,agendaDay' - }, + }, timeFormat: 'H(:mm)', eventClick: function(calEvent, jsEvent, view) { showEvent(calEvent.id); }, - loading: function(isLoading, view) { - if(!isLoading) { + loading: function(isLoading, view) { + if (!isLoading) { $('td.fc-day').dblclick(function() { window.location.href='/events/new?start='+$(this).data('date'); }); } }, - + eventRender: function(event, element, view) { //console.log(view.name); if (event.item['author-name']==null) return; - switch(view.name){ + switch(view.name) { case "month": - element.find(".fc-event-title").html( + element.find(".fc-title").html( "{1} : {2}".format( event.item['author-avatar'], event.item['author-name'], @@ -178,7 +150,7 @@ $(document).ready(function() { )); break; case "agendaWeek": - element.find(".fc-event-title").html( + element.find(".fc-title").html( "{1}

{2}

{3}

".format( event.item['author-avatar'], event.item['author-name'], @@ -187,7 +159,7 @@ $(document).ready(function() { )); break; case "agendaDay": - element.find(".fc-event-title").html( + element.find(".fc-title").html( "{1}

{2}

{3}

".format( event.item['author-avatar'], event.item['author-name'], @@ -197,9 +169,9 @@ $(document).ready(function() { break; } } - + }); - + // center on date var args=location.href.replace(baseurl,"").split("/"); if (args.length>=5 && window.eventModeParams == 2) { @@ -211,7 +183,7 @@ $(document).ready(function() { // show event popup var hash = location.hash.split("-") if (hash.length==2 && hash[0]=="#link") showEvent(hash[1]); - } + } switch(window.autocompleteType) { @@ -224,13 +196,13 @@ $(document).ready(function() { $("#contacts-search").contact_autocomplete(baseurl + '/acl', 'a', true); - $("#contacts-search").keyup(function(event){ - if(event.keyCode == 13){ + $("#contacts-search").keyup(function(event) { + if (event.keyCode == 13) { $("#contacts-search").click(); } }); - $(".autocomplete-w1 .selected").keyup(function(event){ - if(event.keyCode == 13){ + $(".autocomplete-w1 .selected").keyup(function(event) { + if (event.keyCode == 13) { $("#contacts-search").click(); } }); @@ -242,16 +214,9 @@ $(document).ready(function() { break; } -/* if(window.autoCompleteType == "display-head") { - //$(".comment-edit-wrapper textarea").contact_autocomplete(baseurl+"/acl"); - // make auto-complete work in more places - //$(".wall-item-comment-wrapper textarea").contact_autocomplete(baseurl+"/acl"); - $(".comment-wwedit-wrapper textarea").contact_autocomplete(baseurl+"/acl"); - }*/ - // Add Colorbox for viewing Network page images //var cBoxClasses = new Array(); - $(".wall-item-body a img").each(function(){ + $(".wall-item-body a img").each(function() { var aElem = $(this).parent(); var imgHref = aElem.attr("href"); @@ -259,16 +224,12 @@ $(document).ready(function() { // We'll try to do this by looking for links of the form // .../photo/ab803d8eg08daf85023adfec08 (with nothing more following), in hopes // that that will be unique enough - if(imgHref.match(/\/photo\/[a-fA-F0-9]+(-[0-9]\.[\w]+?)?$/)) { + if (imgHref.match(/\/photo\/[a-fA-F0-9]+(-[0-9]\.[\w]+?)?$/)) { // Add a unique class to all the images of a certain post, to allow scrolling through var cBoxClass = $(this).closest(".wall-item-body").attr("id") + "-lightbox"; $(this).addClass(cBoxClass); -// if( $.inArray(cBoxClass, cBoxClasses) < 0 ) { -// cBoxClasses.push(cBoxClass); -// } - aElem.colorbox({ maxHeight: '90%', photo: true, // Colorbox doesn't recognize a URL that don't end in .jpg, etc. as a photo @@ -276,21 +237,13 @@ $(document).ready(function() { }); } }); - /*$.each(cBoxClasses, function(){ - $('.'+this).colorbox({ - maxHeight: '90%', - photo: true, - rel: this - }); - });*/ - }); // update pending count // -$(function(){ +$(function() { - $("nav").bind('nav-update', function(e,data){ + $("nav").bind('nav-update', function(e,data) { var elm = $('#pending-update'); var register = $(data).find('register').text(); if (register=="0") { register=""; elm.hide();} else { elm.show(); } @@ -299,35 +252,37 @@ $(function(){ }); -$(function(){ - - $("#cnftheme").click(function(){ +$(function() { + + $("#cnftheme").click(function() { $.colorbox({ width: 800, height: '90%', href: baseurl + "/admin/themes/" + $("#id_theme :selected").val(), - onComplete: function(){ - $("div#fancybox-content form").submit(function(e){ + onComplete: function() { + $("div#fancybox-content form").submit(function(e) { var url = $(this).attr('action'); // can't get .serialize() to work... var data={}; - $(this).find("input").each(function(){ + $(this).find("input").each(function() { data[$(this).attr('name')] = $(this).val(); }); - $(this).find("select").each(function(){ + $(this).find("select").each(function() { data[$(this).attr('name')] = $(this).children(":selected").val(); }); console.log(":)", url, data); - + $.post(url, data, function(data) { - if(timer) clearTimeout(timer); + if (timer) { + clearTimeout(timer); + } NavUpdate(); $.colorbox.close(); }) - + return false; }); - + } }); return false; @@ -336,18 +291,18 @@ $(function(){ function homeRedirect() { - $('html').fadeOut('slow', function(){ + $('html').fadeOut('slow', function() { window.location = baseurl + "/login"; }); } -if(typeof window.photoEdit != 'undefined') { +if (typeof window.photoEdit != 'undefined') { $(document).keydown(function(event) { - if(window.prevLink != '') { if(event.ctrlKey && event.keyCode == 37) { event.preventDefault(); window.location.href = window.prevLink; }} - if(window.nextLink != '') { if(event.ctrlKey && event.keyCode == 39) { event.preventDefault(); window.location.href = window.nextLink; }} + if (window.prevLink != '') { if (event.ctrlKey && event.keyCode == 37) { event.preventDefault(); window.location.href = window.prevLink; }} + if (window.nextLink != '') { if (event.ctrlKey && event.keyCode == 39) { event.preventDefault(); window.location.href = window.nextLink; }} }); } @@ -355,11 +310,11 @@ if(typeof window.photoEdit != 'undefined') { function showEvent(eventid) { $.get( baseurl + window.eventModuleUrl + '/?id=' + eventid, - function(data){ + function(data) { $.colorbox({html:data}); $.colorbox.resize(); } - ); + ); } function doEventPreview() { @@ -396,60 +351,14 @@ function initCrop() { }); } - -/* -$(document).mouseup(function (clickPos) { - - var sysMenu = $("#system-menu-list"); - var sysMenuLink = $(".system-menu-link"); - var contactsMenu = $("#contacts-menu-list"); - var contactsMenuLink = $(".contacts-menu-link"); - var networkMenu = $("#network-menu-list"); - var networkMenuLink = $(".network-menu-link"); - - if( !sysMenu.is(clickPos.target) && !sysMenuLink.is(clickPos.target) && sysMenu.has(clickPos.target).length === 0) { - hideNavMenu("#system-menu-list"); - } - if( !contactsMenu.is(clickPos.target) && !contactsMenuLink.is(clickPos.target) && contactsMenu.has(clickPos.target).length === 0) { - hideNavMenu("#contacts-menu-list"); - } - if( !networkMenu.is(clickPos.target) && !networkMenuLink.is(clickPos.target) && networkMenu.has(clickPos.target).length === 0) { - hideNavMenu("#network-menu-list"); - } -}); - - -function getPageContent(url) { - - var pos = $('.main-container').position(); - - $('.main-container').css('margin-left', pos.left); - $('.main-content-container').hide(0, function () { - $('.main-content-loading').show(0); - }); - - $.get(url, function(html) { - console.log($('.main-content-container').html()); - $('.main-content-container').html( $('.main-content-container', html).html() ); - console.log($('.main-content-container').html()); - $('.main-content-loading').hide(function() { - $('.main-content-container').fadeIn(800,function() { - $('.main-container').css('margin-left', 'auto'); // This sucks -- if the CSS specification changes, this will be wrong - }); - }); - }); -} -*/ - function showNavMenu(menuID) { - if(window.navMenuTimeout[menuID + '-closing']) { + if (window.navMenuTimeout[menuID + '-closing']) { window.navMenuTimeout[menuID + '-closing'] = false; clearTimeout(window.navMenuTimeout[menuID + '-timeout']); - } - else { + } else { window.navMenuTimeout[menuID + '-opening'] = true; - + window.navMenuTimeout[menuID + '-timeout'] = setTimeout( function () { $(menuID).slideDown('fast').show(); window.navMenuTimeout[menuID + '-opening'] = false; @@ -459,13 +368,12 @@ function showNavMenu(menuID) { function hideNavMenu(menuID) { - if(window.navMenuTimeout[menuID + '-opening']) { + if (window.navMenuTimeout[menuID + '-opening']) { window.navMenuTimeout[menuID + '-opening'] = false; clearTimeout(window.navMenuTimeout[menuID + '-timeout']); - } - else { + } else { window.navMenuTimeout[menuID + '-closing'] = true; - + window.navMenuTimeout[menuID + '-timeout'] = setTimeout( function () { $(menuID).slideUp('fast'); window.navMenuTimeout[menuID + '-closing'] = false; @@ -476,305 +384,72 @@ function hideNavMenu(menuID) { /* - * TinyMCE/Editor + * Editor */ -function InitMCEEditor(editorData) { - var tinyMCEInitConfig = { - theme : "advanced", - //mode : // SPECIFIC - //editor_selector: // SPECIFIC - //elements: // SPECIFIC - plugins : "bbcode,paste,autoresize,inlinepopups", - theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor,formatselect,code", - theme_advanced_buttons2 : "", - theme_advanced_buttons3 : "", - theme_advanced_toolbar_location : "top", - theme_advanced_toolbar_align : "center", - theme_advanced_blockformats : "blockquote,code", - gecko_spellcheck : true, - paste_text_sticky : true, // COUPLED WITH paste PLUGIN - entity_encoding : "raw", - add_unload_trigger : false, - remove_linebreaks : false, - //force_p_newlines : false, - //force_br_newlines : true, - forced_root_block : 'div', - //convert_urls: false, //SPECIFIC? - content_css: baseurl + "/view/custom_tinymce.css", - theme_advanced_path : false, - file_browser_callback : "fcFileBrowser", - //setup : // SPECIFIC - }; - - if(window.editSelect != 'none') { - $.extend(tinyMCEInitConfig, editorData); - tinyMCE.init(tinyMCEInitConfig); - } - else if(typeof editorData.plaintextFn == 'function') { - (editorData.plaintextFn)(); - } -} - var editor = false; var textlen = 0; -function initEditor(cb){ - if(editor==false) { - editor = true; +function initEditor(callback) { + if(editor == false) { $("#profile-jot-text-loading").show(); - var editorData = { - mode : "specific_textareas", - editor_selector : "profile-jot-text", - auto_focus : "profile-jot-text", - //plugins : "bbcode,paste,autoresize,inlinepopups", - //paste_text_sticky : true, - convert_urls : false, - setup : function(ed) { - cPopup = null; - ed.onKeyDown.add(function(ed,e) { - if(cPopup !== null) - cPopup.onkey(e); - }); - - ed.onKeyUp.add(function(ed, e) { - var txt = tinyMCE.activeEditor.getContent(); - match = txt.match(/@([^ \n]+)$/); - if(match!==null) { - if(cPopup === null) { - cPopup = new ACPopup(this,baseurl+"/acl"); - } - if(cPopup.ready && match[1]!==cPopup.searchText) cPopup.search(match[1]); - if(! cPopup.ready) cPopup = null; - } - else { - if(cPopup !== null) { cPopup.close(); cPopup = null; } - } - - textlen = txt.length; - if(textlen != 0 && $('#jot-perms-icon').is('.unlock')) { - $('#profile-jot-desc').html(window.isPublic); - } - else { - $('#profile-jot-desc').html(' '); - } - - //Character count - - if(textlen <= 140) { - $('#character-counter').removeClass('red'); - $('#character-counter').removeClass('orange'); - $('#character-counter').addClass('grey'); - } - if((textlen > 140) && (textlen <= 420)) { - $('#character-counter').removeClass('grey'); - $('#character-counter').removeClass('red'); - $('#character-counter').addClass('orange'); - } - if(textlen > 420) { - $('#character-counter').removeClass('grey'); - $('#character-counter').removeClass('orange'); - $('#character-counter').addClass('red'); - } - $('#character-counter').text(textlen); - }); - - ed.onInit.add(function(ed) { - ed.pasteAsPlainText = true; - $("#profile-jot-text-loading").hide(); - $(".jothidden").show(); - if (typeof cb!="undefined") cb(); - }); - - }, - plaintextFn : function() { - $("#profile-jot-text-loading").hide(); - $("#profile-jot-text").css({ 'height': 200, 'color': '#000' }); - $("#profile-jot-text").editor_autocomplete(baseurl+"/acl"); - $(".jothidden").show(); - if (typeof cb!="undefined") cb(); - } - }; - InitMCEEditor(editorData); - + $("#profile-jot-text-loading").hide(); + $("#profile-jot-text").css({ 'height': 200, 'color': '#000' }); + $("#profile-jot-text").editor_autocomplete(baseurl+"/acl"); + $(".jothidden").show(); // setup acl popup $("a#jot-perms-icon").colorbox({ 'inline' : true, 'transition' : 'elastic' - }); - } else { - if (typeof cb!="undefined") cb(); + }); + + editor = true; + } + if (typeof callback != "undefined") { + callback(); } } -function enableOnUser(){ - if (editor) return; +function enableOnUser() { + if (editor) { + return; + } $(this).val(""); initEditor(); } - function msgInitEditor() { - var editorData = { - mode : "specific_textareas", - editor_selector : "prvmail-text", - //plugins : "bbcode,paste", - //paste_text_sticky : true, - convert_urls : false, - //theme_advanced_path : false, - setup : function(ed) { - cPopup = null; - ed.onKeyDown.add(function(ed,e) { - if(cPopup !== null) - cPopup.onkey(e); - }); - - ed.onKeyUp.add(function(ed, e) { - var txt = tinyMCE.activeEditor.getContent(); - match = txt.match(/@([^ \n]+)$/); - if(match!==null) { - if(cPopup === null) { - cPopup = new ACPopup(this,baseurl+"/acl"); - } - if(cPopup.ready && match[1]!==cPopup.searchText) cPopup.search(match[1]); - if(! cPopup.ready) cPopup = null; - } - else { - if(cPopup !== null) { cPopup.close(); cPopup = null; } - } - - textlen = txt.length; - if(textlen != 0 && $('#jot-perms-icon').is('.unlock')) { - $('#profile-jot-desc').html(window.isPublic); - } - else { - $('#profile-jot-desc').html(' '); - } - }); - - ed.onInit.add(function(ed) { - ed.pasteAsPlainText = true; - var editorId = ed.editorId; - var textarea = $('#'+editorId); - if (typeof(textarea.attr('tabindex')) != "undefined") { - $('#'+editorId+'_ifr').attr('tabindex', textarea.attr('tabindex')); - textarea.attr('tabindex', null); - } - }); - }, - plaintextFn : function() { - $("#prvmail-text").editor_autocomplete(baseurl+"/acl"); - } - } - InitMCEEditor(editorData); + $("#prvmail-text").editor_autocomplete(baseurl+"/acl"); } - -function contactInitEditor() { - var editorData = { - mode : "exact", - elements : "contact-edit-info", - //plugins : "bbcode" - } - InitMCEEditor(editorData); -} - - -function eventInitEditor() { - var editorData = { - mode : "textareas", - //plugins : "bbcode,paste", - //paste_text_sticky : true, - //theme_advanced_path : false, - setup : function(ed) { - ed.onInit.add(function(ed) { - ed.pasteAsPlainText = true; - }); - } - } - InitMCEEditor(editorData); -} - - -function profInitEditor() { - var editorData = { - mode : "textareas", - //plugins : "bbcode,paste", - //paste_text_sticky : true, - //theme_advanced_path : false, - setup : function(ed) { - ed.onInit.add(function(ed) { - ed.pasteAsPlainText = true; - }); - } - } - InitMCEEditor(editorData); -} - - /* * Jot */ function addeditortext(textElem, data) { - if(window.editSelect == 'none') { - var currentText = $(textElem).val(); - $(textElem).val(currentText + data); - } - else - tinyMCE.execCommand('mceInsertRawHTML',false,data); + var currentText = $(textElem).val(); + $(textElem).val(currentText + data); } function jotVideoURL() { reply = prompt(window.vidURL); - if(reply && reply.length) { + if (reply && reply.length) { addeditortext("#profile-jot-text", '[video]' + reply + '[/video]'); } } function jotAudioURL() { reply = prompt(window.audURL); - if(reply && reply.length) { + if (reply && reply.length) { addeditortext("#profile-jot-text", '[audio]' + reply + '[/audio]'); } } function jotGetLocation() { - -/* if(navigator.geolocation) { - - navigator.geolocation.getCurrentPosition(function(position) { - var lat = position.coords.latitude; - var lng = position.coords.longitude; - - $.ajax({ - type: 'GET', - url: 'http://nominatim.openstreetmap.org/reverse?format=json&lat='+lat+'&lon='+lng, - jsonp: 'json_callback', - contentType: 'application/json', - dataType: 'jsonp', - success: function(json) { - console.log(json); - var locationDisplay = json.address.building+', '+json.address.city+', '+json.address.state; - $('#jot-location').val(locationDisplay); - $('#jot-display-location').html('Location: '+locationDisplay); - $('#jot-display-location').show(); - } - }); - }); - - } - else { - reply = prompt(window.whereAreU, $('#jot-location').val()); - if(reply && reply.length) { - $('#jot-location').val(reply); - } - }*/ - reply = prompt(window.whereAreU, $('#jot-location').val()); - if(reply && reply.length) { + if (reply && reply.length) { $('#jot-location').val(reply); } } @@ -785,7 +460,7 @@ function jotShare(id) { $('#like-rotator-' + id).show(); $.get('share/' + id, function(data) { if (!editor) $("#profile-jot-text").val(""); - initEditor(function(){ + initEditor(function() { addeditortext("#profile-jot-text", data); $('#like-rotator-' + id).hide(); $(window).scrollTop(0); @@ -802,7 +477,7 @@ function jotClearLocation() { function jotGetLink() { reply = prompt(window.linkURL); - if(reply && reply.length) { + if (reply && reply.length) { reply = bin2hex(reply); $('#profile-rotator').show(); $.get('parse_url?binurl=' + reply, function(data) { @@ -815,36 +490,26 @@ function jotGetLink() { function linkdropper(event) { var linkFound = event.dataTransfer.types.contains("text/uri-list"); - if(linkFound) + if (linkFound) event.preventDefault(); } function linkdrop(event) { var reply = event.dataTransfer.getData("text/uri-list"); - //event.target.textContent = reply; event.preventDefault(); - if(reply && reply.length) { + if (reply && reply.length) { reply = bin2hex(reply); $('#profile-rotator').show(); $.get('parse_url?binurl=' + reply, function(data) { -/* if(window.jotId == "#profile-jot-text") { - if (!editor) $("#profile-jot-text").val(""); - initEditor(function(){ - addeditortext(window.jotId, data); - $('#profile-rotator').hide(); - }); - } - else {*/ addeditortext(window.jotId, data); $('#profile-rotator').hide(); -// } }); } } -if(typeof window.geoTag === 'function') window.geoTag(); +if (typeof window.geoTag === 'function') window.geoTag(); /* @@ -854,20 +519,19 @@ if(typeof window.geoTag === 'function') window.geoTag(); function confirmDelete() { return confirm(window.delItem); } function deleteCheckedItems(delID) { - if(confirm(window.delItems)) { + if (confirm(window.delItems)) { var checkedstr = ''; $(delID).hide(); $(delID + '-rotator').show(); $('.item-select').each( function() { - if($(this).is(':checked')) { - if(checkedstr.length != 0) { + if ($(this).is(':checked')) { + if (checkedstr.length != 0) { checkedstr = checkedstr + ',' + $(this).val(); - } - else { + } else { checkedstr = $(this).val(); } - } + } }); $.post('item', { dropitems: checkedstr }, function(data) { window.location.reload(); @@ -877,44 +541,40 @@ function deleteCheckedItems(delID) { function itemTag(id) { reply = prompt(window.term); - if(reply && reply.length) { + if (reply && reply.length) { reply = reply.replace('#',''); - if(reply.length) { + if (reply.length) { commentBusy = true; $('body').css('cursor', 'wait'); $.get('tagger/' + id + '?term=' + reply, NavUpdate); - /*if(timer) clearTimeout(timer); - timer = setTimeout(NavUpdate,3000);*/ liking = 1; } } } function itemFiler(id) { - + var bordercolor = $("input").css("border-color"); - - $.get('filer/', function(data){ + + $.get('filer/', function(data) { $.colorbox({html:data}); $.colorbox.resize(); - $("#id_term").keypress(function(){ + $("#id_term").keypress(function() { $(this).css("border-color",bordercolor); }) - $("#select_term").change(function(){ + $("#select_term").change(function() { $("#id_term").css("border-color",bordercolor); }) - - $("#filer_save").click(function(e){ + + $("#filer_save").click(function(e) { e.preventDefault(); reply = $("#id_term").val(); - if(reply && reply.length) { + if (reply && reply.length) { commentBusy = true; $('body').css('cursor', 'wait'); $.get('filer/' + id + '?term=' + reply, NavUpdate); -/* if(timer) clearTimeout(timer); - timer = setTimeout(NavUpdate,3000);*/ liking = 1; $.colorbox.close(); } else { @@ -923,7 +583,7 @@ function itemFiler(id) { return false; }); }); - + } @@ -931,33 +591,25 @@ function itemFiler(id) { * Comments */ -function insertFormatting(comment,BBcode,id) { - +function insertFormatting(BBcode, id) { var tmpStr = $("#comment-edit-text-" + id).val(); - if(tmpStr == comment) { - tmpStr = ""; + if (tmpStr == "") { $("#comment-edit-text-" + id).addClass("comment-edit-text-full"); $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty"); openMenu("comment-edit-submit-wrapper-" + id); - $("#comment-edit-text-" + id).val(tmpStr); } textarea = document.getElementById("comment-edit-text-" +id); if (document.selection) { textarea.focus(); selected = document.selection.createRange(); - if (BBcode == "url"){ - selected.text = "["+BBcode+"=http://]" + selected.text + "[/"+BBcode+"]"; - } else selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]"; } else if (textarea.selectionStart || textarea.selectionStart == "0") { var start = textarea.selectionStart; var end = textarea.selectionEnd; - if (BBcode == "url"){ - textarea.value = textarea.value.substring(0, start) + "["+BBcode+"=http://]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length); - } else textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length); } + return true; } @@ -969,8 +621,7 @@ function cmtBbClose(id) { } function commentOpen(obj,id) { - if(obj.value == window.commentEmptyText) { - obj.value = ""; + if (obj.value == "") { $("#comment-edit-text-" + id).addClass("comment-edit-text-full"); $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty"); $("#mod-cmnt-wrap-" + id).show(); @@ -978,8 +629,7 @@ function commentOpen(obj,id) { } } function commentClose(obj,id) { - if(obj.value == "") { - obj.value = window.commentEmptyText; + if (obj.value == "") { $("#comment-edit-text-" + id).removeClass("comment-edit-text-full"); $("#comment-edit-text-" + id).addClass("comment-edit-text-empty"); $("#mod-cmnt-wrap-" + id).hide(); @@ -990,8 +640,7 @@ function commentClose(obj,id) { function commentInsert(obj,id) { var tmpStr = $("#comment-edit-text-" + id).val(); - if(tmpStr == window.commentEmptyText) { - tmpStr = ""; + if (tmpStr == "") { $("#comment-edit-text-" + id).addClass("comment-edit-text-full"); $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty"); openMenu("comment-edit-submit-wrapper-" + id); @@ -1006,8 +655,7 @@ function commentInsert(obj,id) { function qCommentInsert(obj,id) { var tmpStr = $("#comment-edit-text-" + id).val(); - if(tmpStr == window.commentEmptyText) { - tmpStr = ""; + if (tmpStr == "") { $("#comment-edit-text-" + id).addClass("comment-edit-text-full"); $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty"); openMenu("comment-edit-submit-wrapper-" + id); @@ -1020,13 +668,3 @@ function qCommentInsert(obj,id) { $("#comment-edit-text-" + id).val(tmpStr + ins); $(obj).val(""); } - -/*function showHideCommentBox(id) { - if( $('#comment-edit-form-' + id).is(':visible')) { - $('#comment-edit-form-' + id).hide(); - } - else { - $('#comment-edit-form-' + id).show(); - } -}*/ - diff --git a/frost/php/default.php b/frost/php/default.php index c67bdcf..e58fd2c 100644 --- a/frost/php/default.php +++ b/frost/php/default.php @@ -1,43 +1,43 @@ - - - - <?php if(x($page,'title')) echo $page['title'] ?> - - - -module === 'home') echo 'onLoad="setTimeout(\'homeRedirect()\', 1500)"'?>> - - - module === 'home' ) { ?> -
- -
- - module === 'login' || $a->module === 'register' || $a->module === 'lostpass' ) { - ?> -
-
-
-
-
- - -
- -
- -
- -
- -
- -
-
-
- - - - + + + + <?php if(x($page,'title')) echo $page['title'] ?> + + + +module === 'home') echo 'onLoad="setTimeout(\'homeRedirect()\', 1500)"'?>> + + + module === 'home' ) { ?> +
+ +
+ + module === 'login' || $a->module === 'register' || $a->module === 'lostpass' ) { + ?> +
+
+
+
+
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ + + + diff --git a/frost/style.css b/frost/style.css index 82a89f9..3ed83e2 100644 --- a/frost/style.css +++ b/frost/style.css @@ -918,6 +918,7 @@ input#dfrn-url { #profile-edit-religion-label, #profile-edit-pubkeywords-label, #profile-edit-prvkeywords-label, +#profile-edit-xmpp-label, #profile-edit-homepage-label, #profile-edit-hometown-label { font-weight: 700; @@ -939,6 +940,7 @@ input#dfrn-url { #sexual-select, #profile-edit-politic, #profile-edit-religion, +#profile-edit-xmpp, #profile-edit-pubkeywords, #profile-edit-prvkeywords, #profile-in-dir-yes, @@ -952,6 +954,7 @@ input#dfrn-url { float: left; margin-bottom: 20px; } +#profile-edit-xmpp, #profile-edit-pubkeywords, #profile-edit-prvkeywords { margin-bottom: 5px; @@ -1024,6 +1027,7 @@ input#dfrn-url { #profile-edit-pdesc-desc, +#profile-edit-xmpp-desc, #profile-edit-pubkeywords-desc, #profile-edit-prvkeywords-desc { float: left; @@ -1039,7 +1043,8 @@ input#dfrn-url { float: left; margin-bottom: 35px; }*/ -#profile-edit-homepage, #profile-edit-hometown { +#profile-edit-homepage, +#profile-edit-hometown { float: left; margin-bottom: 25px; } @@ -1082,6 +1087,7 @@ input#dfrn-url { #profile-edit-pubkeywords-end, #profile-edit-prvkeywords-end, #profile-edit-homepage-end, +#profile-edit-xmpp-end, #profile-edit-hometown-end, #profile-in-dir-break, #profile-in-dir-end, @@ -1359,7 +1365,7 @@ input#dfrn-url { /* add ellipsis on text overflow */ /* this work on safari, opera, ie, chrome. */ /* firefox users have to wait support or we */ - /* can use a jquery plugin http://bit.ly/zJskg */ + /* can use a jquery addon http://bit.ly/zJskg */ text-overflow: ellipsis; -o-text-overflow: ellipsis; width: 100%; @@ -1385,6 +1391,17 @@ input#dfrn-url { cursor: pointer; } +.wall-item-tools a { + border-radius: 4px; + padding: 2px; + background-position: center; + background-size: initial !important; +} + +.wall-item-tools a.active { + background-color: rgba(59, 101, 164, 0.5); +} + .wall-item-share-buttons { margin-left: 10px; margin-right: 10px; @@ -1849,6 +1866,9 @@ input#dfrn-url { -webkit-border-radius: 10px; } +.pager .disabled { + display: none; +} .pager_first, .pager_last, @@ -1897,6 +1917,7 @@ input#dfrn-url { #advanced-profile-marital-wrapper, #advanced-profile-sexual-wrapper, #advanced-profile-homepage-wrapper, +#advanced-profile-xmpp-wrapper, #advanced-profile-politic-wrapper, #advanced-profile-religion-wrapper, #advanced-profile-about-wrapper, @@ -1919,6 +1940,7 @@ input#dfrn-url { #advanced-profile-marital-text, #advanced-profile-sexual-text, #advanced-profile-homepage-text, +#advanced-profile-xmpp-text, #advanced-profile-politic-text, #advanced-profile-religion-text, #advanced-profile-about-text, @@ -1942,6 +1964,7 @@ input#dfrn-url { #advanced-profile-marital-end, #advanced-profile-sexual-end, #advanced-profile-homepage-end, +#advanced-profile-xmpp-end, #advanced-profile-politic-end, #advanced-profile-religion-end { height: 10px; @@ -1968,6 +1991,7 @@ input#dfrn-url { #advanced-profile-marital, #advanced-profile-sexual, #advanced-profile-homepage, +#advanced-profile-xmpp, #advanced-profile-politic, #advanced-profile-religion { float: left; @@ -2912,14 +2936,14 @@ aside input[type='text'] { margin-bottom: 25px; } -.location-label, .gender-label, .marital-label, .homepage-label, .network-label { +.location-label, .gender-label, .marital-label, .homepage-label, .ympp-label, .network-label, .xmpp-label { float: left; text-align: right; display: block; width: 65px; } -.adr, .x-gender, .marital-text, .homepage-url, .x-network { +.adr, .x-gender, .marital-text, .homepage-url, .x-network, .xmpp-data { float: left; display: block; margin-left: 8px; @@ -2940,7 +2964,7 @@ aside input[type='text'] { } -#plugin-settings-link, #account-settings-link { +#addon-settings-link, #account-settings-link { margin-bottom: 10px; } @@ -3560,10 +3584,10 @@ aside input[type='text'] { text-align: right; } -#adminpage #pluginslist { +#adminpage #addonslist { margin: 0px; padding: 0px; } -#adminpage .plugin { +#adminpage .addon { list-style: none; display: block; border: 1px solid #888888; @@ -3571,8 +3595,8 @@ aside input[type='text'] { margin-bottom: 5px; clear: left; } -#adminpage .plugin .desc { margin-left: 2.5em;} -#adminpage .toggleplugin { +#adminpage .addon .desc { margin-left: 2.5em;} +#adminpage .toggleaddon { float:left; margin-right: 1em; } @@ -3886,7 +3910,7 @@ aside input[type='text'] { .event-maybeattend-icon { background-image: url('images/event-maybeattend-16.png'); } .event-dontattend-icon { background-image: url('images/event-dontattend-16.png'); } -.filer-icon:hover { +.event-icon:hover { opacity: 1.0; } diff --git a/frost/templates/comment_item.tpl b/frost/templates/comment_item.tpl index 56adbb1..4de33ca 100644 --- a/frost/templates/comment_item.tpl +++ b/frost/templates/comment_item.tpl @@ -1,20 +1,5 @@ - -{{**}} -
-{{**}} @@ -23,56 +8,48 @@ -{{**}} {{$mytitle}} -{{**}} - {{**}}
  • + data-role="insert-formatting" data-bbcode="b" data-id="{{$id}}">
  • + data-role="insert-formatting" data-bbcode="i" data-id="{{$id}}">
  • + data-role="insert-formatting" data-bbcode="u" data-id="{{$id}}">
  • + data-role="insert-formatting" data-bbcode="quote" data-id="{{$id}}">
  • + data-role="insert-formatting" data-bbcode="code" data-id="{{$id}}">
  • + data-role="insert-formatting" data-bbcode="img" data-id="{{$id}}">
  • + data-role="insert-formatting" data-bbcode="url" data-id="{{$id}}">
  • -
-{{**}} -{{**}} - + data-role="insert-formatting" data-bbcode="video" data-id="{{$id}}"> + + {{if $qcomment}} - {{foreach $qcomment as $qc}} - + {{/foreach}} {{/if}}
-
diff --git a/frost/templates/contact_edit.tpl b/frost/templates/contact_edit.tpl index 636ebf5..621ca64 100644 --- a/frost/templates/contact_edit.tpl +++ b/frost/templates/contact_edit.tpl @@ -75,6 +75,15 @@

{{$lbl_vis1}}

{{$lbl_vis2}}

+ +{{if $reason}} +
+

{{$lbl_info2}}

+

{{$reason}}

+
+
+{{/if}} + {{$profile_select}}
diff --git a/frost/templates/contact_end.tpl b/frost/templates/contact_end.tpl index 03cef4b..e69de29 100644 --- a/frost/templates/contact_end.tpl +++ b/frost/templates/contact_end.tpl @@ -1,3 +0,0 @@ - - - diff --git a/frost/templates/contact_head.tpl b/frost/templates/contact_head.tpl index 7741143..e69de29 100644 --- a/frost/templates/contact_head.tpl +++ b/frost/templates/contact_head.tpl @@ -1,5 +0,0 @@ - - - diff --git a/frost/templates/cropend.tpl b/frost/templates/cropend.tpl index a56c71d..a26100e 100644 --- a/frost/templates/cropend.tpl +++ b/frost/templates/cropend.tpl @@ -1,4 +1,4 @@ - - - + + + diff --git a/frost/templates/crophead.tpl b/frost/templates/crophead.tpl index 56e941e..cbfce8d 100644 --- a/frost/templates/crophead.tpl +++ b/frost/templates/crophead.tpl @@ -1 +1 @@ - + diff --git a/frost/templates/end.tpl b/frost/templates/end.tpl index 991ae75..b8a598d 100644 --- a/frost/templates/end.tpl +++ b/frost/templates/end.tpl @@ -2,25 +2,18 @@ -{{**}} -{{**}} - - - + - - -{{**}} - - + + + + - - - + + + diff --git a/frost/templates/event_end.tpl b/frost/templates/event_end.tpl index 44830f4..8641b7c 100644 --- a/frost/templates/event_end.tpl +++ b/frost/templates/event_end.tpl @@ -1,6 +1,3 @@ - - - - + + diff --git a/frost/templates/event_head.tpl b/frost/templates/event_head.tpl index 47efb56..e4abc17 100644 --- a/frost/templates/event_head.tpl +++ b/frost/templates/event_head.tpl @@ -1,10 +1,10 @@ - + + diff --git a/frost/templates/head.tpl b/frost/templates/head.tpl index fc56c24..0a710c5 100644 --- a/frost/templates/head.tpl +++ b/frost/templates/head.tpl @@ -2,24 +2,22 @@ - -{{**}} - - + + + - + + diff --git a/frost/templates/jot-header.tpl b/frost/templates/jot-header.tpl index 2615ceb..db8b08a 100644 --- a/frost/templates/jot-header.tpl +++ b/frost/templates/jot-header.tpl @@ -1,7 +1,6 @@ + diff --git a/frost/templates/msg-header.tpl b/frost/templates/msg-header.tpl index 64bfa66..5de1a45 100644 --- a/frost/templates/msg-header.tpl +++ b/frost/templates/msg-header.tpl @@ -3,7 +3,6 @@ + diff --git a/frost/templates/profed_head.tpl b/frost/templates/profed_head.tpl index 4c7b6c8..e69de29 100644 --- a/frost/templates/profed_head.tpl +++ b/frost/templates/profed_head.tpl @@ -1,6 +0,0 @@ - - - - diff --git a/frost/templates/profile_edit.tpl b/frost/templates/profile_edit.tpl index 40a3c86..6ccc138 100644 --- a/frost/templates/profile_edit.tpl +++ b/frost/templates/profile_edit.tpl @@ -131,6 +131,12 @@
+
+ + +
{{$xmpp.3}}
+
+
diff --git a/frost/templates/profile_vcard.tpl b/frost/templates/profile_vcard.tpl index 4d5a40b..dc2de8c 100644 --- a/frost/templates/profile_vcard.tpl +++ b/frost/templates/profile_vcard.tpl @@ -26,6 +26,13 @@ {{/if}} + {{if $profile.xmpp}} +
+
{{$xmpp}}
+
{{$profile.xmpp}}
+
+ {{/if}} + {{if $gender}}
{{$gender}}
{{$profile.gender}}
{{/if}} {{if $profile.pubkey}}{{/if}} diff --git a/frost/templates/wall_thread.tpl b/frost/templates/wall_thread.tpl index ef18d47..c88e800 100644 --- a/frost/templates/wall_thread.tpl +++ b/frost/templates/wall_thread.tpl @@ -18,7 +18,7 @@
{{$item.wall}}
{{/if}} - @@ -47,11 +47,13 @@
{{$item.title}}
{{**}}
{{$item.body}} - {{**}} - {{foreach $item.tags as $tag}} - {{$tag}} - {{/foreach}} - {{**}} + {{**}} + {{if !$item.suppress_tags}} + {{foreach $item.tags as $tag}} + {{$tag}} + {{/foreach}} + {{/if}} + {{**}} {{if $item.has_cats}} @@ -66,9 +68,9 @@
{{if $item.vote}} -
+
{{**}} {{if $item.responses}} {{foreach $item.responses as $verb=>$response}} diff --git a/frost/templates/wallmsg-end.tpl b/frost/templates/wallmsg-end.tpl index 9f7a0f8..90f4ed1 100644 --- a/frost/templates/wallmsg-end.tpl +++ b/frost/templates/wallmsg-end.tpl @@ -1,5 +1,5 @@ - + diff --git a/frost/templates/wallmsg-header.tpl b/frost/templates/wallmsg-header.tpl index 0949c3d..3fbb568 100644 --- a/frost/templates/wallmsg-header.tpl +++ b/frost/templates/wallmsg-header.tpl @@ -1,7 +1,6 @@ diff --git a/frost/theme.php b/frost/theme.php index 1093a04..dd1a0ce 100644 --- a/frost/theme.php +++ b/frost/theme.php @@ -9,48 +9,52 @@ * Maintainer: Zach P */ -function frost_init(&$a) { +use Friendica\App; +use Friendica\Content\Text\Plaintext; +use Friendica\Core\Addon; +use Friendica\Core\System; + +function frost_init(App $a) { $a->videowidth = 400; $a->videoheight = 330; - $a->theme_thread_allow = false; - set_template_engine($a, 'smarty3'); + $a->set_template_engine('smarty3'); } -function frost_content_loaded(&$a) { +function frost_content_loaded(App $a) { // I could do this in style.php, but by having the CSS in a file the browser will cache it, // making pages load faster if( $a->module === 'home' || $a->module === 'login' || $a->module === 'register' || $a->module === 'lostpass' ) { - //$a->page['htmlhead'] = str_replace('$stylesheet', $a->get_baseurl() . '/view/theme/frost/login-style.css', $a->page['htmlhead']); - $a->theme['stylesheet'] = $a->get_baseurl() . '/view/theme/frost/login-style.css'; + //$a->page['htmlhead'] = str_replace('$stylesheet', System::baseUrl() . '/view/theme/frost/login-style.css', $a->page['htmlhead']); + $a->theme['stylesheet'] = System::baseUrl() . '/view/theme/frost/login-style.css'; } - if( $a->module === 'login' ) + + if ( $a->module === 'login' ) { $a->page['end'] .= ''; + } } function frost_install() { - register_hook('prepare_body_final', 'view/theme/frost/theme.php', 'frost_item_photo_links'); + Addon::registerHook('prepare_body_final', 'view/theme/frost/theme.php', 'frost_item_photo_links'); logger("installed theme frost"); } function frost_uninstall() { - unregister_hook('bbcode', 'view/theme/frost/theme.php', 'frost_bbcode'); + Addon::unregisterHook('bbcode', 'view/theme/frost/theme.php', 'frost_bbcode'); logger("uninstalled theme frost"); } -function frost_item_photo_links(&$a, &$body_info) { - require_once('include/Photo.php'); - $phototypes = Photo::supportedTypes(); - - $occurence = 1; - $p = bb_find_open_close($body_info['html'], ""); +function frost_item_photo_links(App $a, &$body_info) +{ + $occurence = 0; + $p = Plaintext::getBoundariesPosition($body_info['html'], ''); while($p !== false && ($occurence++ < 500)) { $link = substr($body_info['html'], $p['start'], $p['end'] - $p['start']); - $matches = array(); + $matches = []; preg_match("/\/photos\/[\w]+\/image\/([\w]+)/", $link, $matches); if($matches) { @@ -66,8 +70,8 @@ function frost_item_photo_links(&$a, &$body_info) { $body_info['html'] = str_replace($link, $newlink, $body_info['html']); } - - $p = bb_find_open_close($body_info['html'], "", $occurence); + + $p = Plaintext::getBoundariesPosition($body_info['html'], '', $occurence); } }