});
});
+ // Customize some elements when the app is used in standalone mode on Android
+ if (window.matchMedia('(display-mode: standalone)').matches) {
+ // Open links to source outside of the webview
+ $('body').on('click', '.plink', function (e) {
+ $(e.target).attr('target', '_blank');
+ });
+ }
+
+ /*
+ * This event listeners ensures that the textarea size is updated event if the
+ * value is changed externally (textcomplete, insertFormatting, fbrowser...)
+ */
+ $(document).on('change', 'textarea', function(event) {
+ autosize.update(event.target);
+ });
+
+ /*
+ * Sticky aside on page scroll
+ * We enable the sticky aside only when window is wider than
+ * 976px - which is the maximum width where the aside is shown in
+ * mobile style - because on chrome-based browsers (desktop and
+ * android) the sticky plugin in mobile style causes the browser to
+ * scroll back to top the main content, making it impossible
+ * to navigate.
+ * A side effect is that the sitky aside isn't really responsive,
+ * since is enabled or not at page loading time.
+ */
+ if ($(window).width() > 976) {
+ $("aside").stick_in_parent({
+ offset_top: 100, // px, header + tab bar + spacing
+ recalc_every: 10
+ });
+ // recalculate sticky aside on clicks on <a> elements
+ // this handle height changes on expanding submenus
+ $("aside").on("click", "a", function(){
+ $(document.body).trigger("sticky_kit:recalc");
+ });
+ }
+
+ /*
+ * Add or remove "aside-out" class to body tag
+ * when the mobile aside is shown or hidden.
+ * The class is used in css to disable scroll in page when the aside
+ * is shown.
+ */
+ $("aside")
+ .on("shown.bs.offcanvas", function() {
+ $("body").addClass("aside-out");
+ })
+ .on("hidden.bs.offcanvas", function() {
+ $("body").removeClass("aside-out");
+ });
+
+ // Event listener for 'Show & hide event map' button in the network stream.
+ $("body").on("click", ".event-map-btn", function() {
+ showHideEventMap(this);
+ });
+
});
function openClose(theID) {
}
}
-
function showHideComments(id) {
if( $('#collapsed-comments-' + id).is(':visible')) {
$('#collapsed-comments-' + id).slideUp();
}
}
+// Show & hide event map in the network stream by button click.
+function showHideEventMap(elm) {
+ // Get the id of the map element - it should be provided through
+ // the atribute "data-map-id".
+ var mapID = elm.getAttribute('data-map-id');
+
+ // Get translation labels.
+ var mapshow = elm.getAttribute('data-show-label');
+ var maphide = elm.getAttribute('data-hide-label');
+
+ // Change the button labels.
+ if (elm.innerText == mapshow) {
+ $('#' + elm.id).text(maphide);
+ } else {
+ $('#' + elm.id).text(mapshow);
+ }
+ // Because maps are iframe elements, we cant hide it through css (display: none).
+ // We solve this issue by putting the map outside the screen with css.
+ // So the first time the 'Show map' button is pressed we move the map
+ // element into the screen area.
+ var mappos = $('#' + mapID).css('position');
+
+ if (mappos === 'absolute') {
+ $('#' + mapID).hide();
+ $('#' + mapID).css({position: 'relative', left: 'auto', top: 'auto'});
+ openClose(mapID);
+ } else {
+ openClose(mapID);
+ }
+ return false;
+}
function justifyPhotos() {
justifiedGalleryActive = true;
return item.name;
}
-(function( $ ) {
+(function($) {
$.fn.contact_filter = function(backend_url, typ, autosubmit, onselect) {
- if(typeof typ === 'undefined') typ = '';
- if(typeof autosubmit === 'undefined') autosubmit = false;
+ if (typeof typ === 'undefined') {
+ typ = '';
+ }
+
+ if (typeof autosubmit === 'undefined') {
+ autosubmit = false;
+ }
// Autocomplete contacts
contacts = {
match: /(^)([^\n]+)$/,
index: 2,
- search: function(term, callback) { contact_search(term, callback, backend_url, typ); },
+ search: function(term, callback) {contact_search(term, callback, backend_url, typ);},
replace: filter_replace,
- template: contact_filter,
+ template: contact_filter
};
this.attr('autocomplete','off');
var a = this.textcomplete([contacts], {className:'accontacts', appendTo: '#contact-list'});
- a.on('textComplete:select', function(e, value, strategy) { $(".dropdown-menu.textcomplete-dropdown.media-list").show(); });
+ a.on('textComplete:select', function(e, value, strategy) {
+ $(".dropdown-menu.textcomplete-dropdown.media-list").show();
+ });
};
})( jQuery );
-
// current time in milliseconds, to send each request to make sure
// we 're not getting 304 response
function timeNow() {
$.get('like/' + ident.toString() + '?verb=' + verb, NavUpdate );
liking = 1;
force_update = true;
+ update_item = ident.toString();
}
// Decodes a hexadecimally encoded binary string