You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

165 lines
5.1 KiB

(function ($) {
var
sortFriends = function () {
$('.friend-list').each(function () {
$(this).sortList();
});
},
reload = function (control) {
$('.friend-container').each(function () {
var $container = $(this);
var action = $container.data('action');
var controller = $container.data('controller');
var params = $container.data('params') || {};
$container.parent().tikiModal(tr("Loading..."));
$container.parent().load($.service(controller, action, params), function () {
$(this).tikiModal();
sortFriends();
});
});
};
$(document).on('click', '.add-friend', $.clickModal({
open: function () {
$("input[name=username]").tiki("autocomplete", "userrealname", {
select: function (event, data) {
let usernamePattern = jqueryTiki.usernamePattern ?? "/^['\-_a-zA-Z0-9\.]*$/";
usernamePattern = usernamePattern.substring(2, usernamePattern.length - 2); // trim /^ and $/ (TODO refactor with $.userMentions)
let regex = new RegExp("\\((" + usernamePattern + ")\\)$"),
userName = data.item.value.match(regex);
if (userName) {
userName = userName[1];
} else {
userName = data.item.value;
}
$(this).val(userName);
return false;
},
});
},
success: function () {
$.closeModal();
reload(this);
},
}));
$(document).on('click', '.request-list .add-friend, .request-list .approve-friend,' +
' .user-info .add-friend, .user-info .approve-friend', function (e) {
var control = this;
e.preventDefault();
$.post($(control).attr('href'), function () {
reload(control);
});
return false;
});
$(document).on('click', ' .remove-friend', function (e) {
var control = this;
e.preventDefault();
$(this).doConfirm({
success: function () {
reload(control);
}
});
return false;
});
$(sortFriends);
})(jQuery);
(function ($) {
var createReload = function (link) {
var activity = $(link).closest('.activity'), container = activity.parent(), id = activity.data('id');
return function () {
container.load($.service('object', 'infobox', {
type: 'activity',
object: id,
plain: 1,
format: 'default'
}));
};
};
$(document).on('click', '.activity a.comment', function () {
var myReload = createReload(this);
var url = $(this).attr('href');
$.openModal({
remote: url,
open: function () {
var container = this;
$(container).addClass('comment-container');
container.reload = function () {
myReload();
$('.modal-content', container).load(url, function () {
$(container).trigger('tiki.modal.redraw');
});
};
},
close: function () {
var container = this;
$(container).removeClass('comment-container');
container.reload = null;
}
});
return false;
});
$(document).on('click', '.activity a.like', function () {
var myReload = createReload(this);
$.post($(this).attr('href'), function () {
myReload();
});
return false;
});
$(document).on('click', '.stream-container .show-more', function () {
var link = this
, page = $(link).data('page')
, listContainer = $(link).closest('.stream-container').find('ol:first')
;
$(link).hide();
$.post($.service('activitystream', 'render'), {
stream: $(link).data('stream'),
page: page + 1
}, function (data) {
$(link).data('page', page + 1);
var list = $('<div>' + data + '</div>').find('.stream-container > ol > li:not(.invalid)');
list.appendTo(listContainer);
if (list.size() > 0) {
$(link).show();
}
});
});
$(document).on('scroll', function () {
function elementInViewport(el) {
var top = el.offsetTop;
var height = el.offsetHeight;
while(el.offsetParent) {
el = el.offsetParent;
top += el.offsetTop;
}
return top >= window.pageYOffset && (top + height) <= (window.pageYOffset + window.innerHeight);
}
$('.stream-container.auto-scroll .show-more:visible').each(function () {
if (elementInViewport(this)) {
$(this).click();
}
});
});
})(jQuery);