1 elgg.provide(
'elgg.ui');
3 elgg.ui.init =
function () {
6 $(
'.elgg-page').attr(
"onclick",
"return true");
9 elgg.ui.initHoverMenu();
12 $(
'.elgg-system-messages li').live(
'click',
function(e) {
13 if (!$(e.target).is(
'a')) {
14 $(
this).stop().fadeOut(
'fast');
18 $(
'.elgg-system-messages li').animate({opacity: 0.9}, 6000);
19 $(
'.elgg-system-messages li.elgg-state-success').fadeOut(
'slow');
21 $(
'[rel=toggle]').live(
'click',
elgg.ui.toggles);
23 $(
'[rel=popup]').live(
'click',
elgg.ui.popupOpen);
25 $(
'.elgg-menu-page .elgg-menu-parent').live(
'click',
elgg.ui.toggleMenu);
27 $(
'*[data-confirm], .elgg-requires-confirmation').live(
'click',
elgg.ui.requiresConfirmation);
28 if ($(
'.elgg-requires-confirmation').length > 0) {
29 elgg.deprecated_notice(
'Use of .elgg-requires-confirmation is deprecated by data-confirm',
'1.10');
32 $(
'.elgg-autofocus').focus();
33 if ($(
'.elgg-autofocus').length > 0) {
34 elgg.deprecated_notice(
'Use of .elgg-autofocus is deprecated by html5 autofocus', 1.9);
37 elgg.ui.initAccessInputs();
40 var elementId =
elgg.getSelectorFromUrlFragment(document.URL);
41 $(elementId).addClass(
'elgg-state-highlight');
57 elgg.ui.toggles =
function(event) {
58 event.preventDefault();
60 target = $this.data().toggleSelector;
65 target = $this.attr(
'href');
68 $this.toggleClass(
'elgg-state-active');
70 $(target).each(
function(
index, elem) {
72 if ($elem.data().toggleSlide !=
false) {
73 $elem.slideToggle(
'medium');
98 elgg.ui.popupOpen =
function(event) {
99 event.preventDefault();
100 event.stopPropagation();
102 var target =
elgg.getSelectorFromUrlFragment($(
this).toggleClass(
'elgg-state-active').attr(
'href'));
107 targetSelector: target,
119 options =
elgg.trigger_hook(
'getOptions',
'ui.popup', params, options);
127 if ($target.is(
':visible')) {
129 $(
'body').die(
'click',
elgg.ui.popupClose);
133 $target.appendTo(
'body')
138 .die(
'click',
elgg.ui.popupClose)
139 .live(
'click',
elgg.ui.popupClose);
145 elgg.ui.popupClose =
function(event) {
146 $eventTarget = $(
event.target);
147 var inTarget =
false;
148 var $popups = $(
'[rel=popup]');
151 $popups.each(
function(
i, e) {
152 var target =
elgg.getSelectorFromUrlFragment($(e).attr(
'href')) +
':visible';
155 if (!$target.is(
':visible')) {
160 if ($eventTarget.closest(target).length > 0) {
167 $popups.each(
function(
i, e) {
169 var
$target = $(
elgg.getSelectorFromUrlFragment($e.attr(
'href')) +
':visible');
170 if ($target.length > 0) {
172 $e.removeClass(
'elgg-state-active');
176 $(
'body').die(
'click',
elgg.ui.popClose);
186 elgg.ui.toggleMenu =
function(event) {
187 $(
this).siblings().slideToggle(
'medium');
188 $(
this).toggleClass(
'elgg-menu-closed elgg-menu-opened');
189 event.preventDefault();
198 elgg.ui.initHoverMenu =
function(parent) {
205 function loadMenu(mac) {
206 var $all_placeholders = $(
".elgg-menu-hover[rel='" + mac +
"']");
209 var $ul = $all_placeholders.filter(
'[data-elgg-menu-data]');
215 elgg.get(
'ajax/view/navigation/menu/user_hover/contents', {
216 data: $ul.data(
'elggMenuData'),
220 $all_placeholders.removeClass(
'elgg-ajax-loader')
221 .html($(data).children());
232 $(parent).find(
".elgg-avatar").live(
'mouseover',
function() {
233 $(
this).children(
".elgg-icon-hover-menu").show();
235 .live(
'mouseout',
function() {
236 $(
this).children(
".elgg-icon-hover-menu").hide();
241 $(
".elgg-avatar > .elgg-icon-hover-menu").live(
'click',
function(e) {
242 var $placeholder = $(
this).parent().find(
".elgg-menu-hover.elgg-ajax-loader");
244 if ($placeholder.length) {
245 loadMenu($placeholder.attr(
"rel"));
249 var $hovermenu = $(
this).data(
'hovermenu') || null;
252 $hovermenu = $(
this).parent().find(
".elgg-menu-hover");
253 $(
this).data(
'hovermenu', $hovermenu);
257 if ($hovermenu.css(
'display') ==
"block") {
258 $hovermenu.fadeOut();
260 $avatar = $(
this).closest(
".elgg-avatar");
263 var offset = $avatar.offset();
264 var
top = $avatar.height() + offset.top +
'px';
265 var
left = $avatar.width() - 15 + offset.left +
'px';
267 $hovermenu.appendTo(
'body')
268 .css(
'position',
'absolute')
275 $(
".elgg-menu-hover:visible").not($hovermenu).fadeOut();
279 $(document).
click(
function(event) {
280 if ($(event.target).parents(
".elgg-avatar").length === 0) {
281 $(
".elgg-menu-hover").fadeOut();
292 elgg.ui.requiresConfirmation =
function(e) {
293 var confirmText = $(
this).data(
'confirm') ||
elgg.echo(
'question:areyousure');
294 if (!confirm(confirmText)) {
309 elgg.ui.loginHandler =
function(hook,
type, params, options) {
310 if (params.target.attr(
'id') ==
'login-dropdown-box') {
311 options.my =
'right top';
312 options.at =
'right bottom';
330 elgg.ui.initDatePicker =
function() {
331 function loadDatePicker() {
334 dateFormat:
'yy-mm-dd',
335 onSelect:
function(dateText) {
336 if ($(
this).is(
'.elgg-input-timestamp')) {
338 var dateParts = dateText.split(
"-");
339 var timestamp = Date.UTC(dateParts[0], dateParts[1] - 1, dateParts[2]);
340 timestamp = timestamp / 1000;
342 var
id = $(
this).attr(
'id');
343 $(
'input[name="' +
id +
'"]').val(timestamp);
353 if (!$(
'.elgg-input-date').length) {
357 if (
elgg.get_language() ==
'en') {
362 url:
elgg.config.wwwroot +
'vendors/jquery/i18n/jquery.ui.datepicker-'+
elgg.get_language() +
'.js',
366 error: loadDatePicker
378 elgg.ui.registerTogglableMenuItems =
function(menuItemNameA, menuItemNameB) {
380 $(
'.elgg-menu-item-' + menuItemNameA +
' a').live(
'click',
function() {
381 var
$menu = $(
this).closest(
'.elgg-menu');
384 elgg.ui.toggleMenuItems($menu, menuItemNameB, menuItemNameA);
387 elgg.action($(
this).attr(
'href'), {
389 if (json.system_messages.error.length) {
391 elgg.ui.toggleMenuItems($menu, menuItemNameA, menuItemNameB);
396 elgg.ui.toggleMenuItems($menu, menuItemNameA, menuItemNameB);
405 $(
'.elgg-menu-item-' + menuItemNameB +
' a').live(
'click',
function() {
406 var
$menu = $(
this).closest(
'.elgg-menu');
409 elgg.ui.toggleMenuItems($menu, menuItemNameA, menuItemNameB);
412 elgg.action($(
this).attr(
'href'), {
414 if (json.system_messages.error.length) {
416 elgg.ui.toggleMenuItems($menu, menuItemNameB, menuItemNameA);
421 elgg.ui.toggleMenuItems($menu, menuItemNameB, menuItemNameA);
430 elgg.ui.toggleMenuItems =
function(
$menu, nameOfItemToShow, nameOfItemToHide) {
431 $menu.find(
'.elgg-menu-item-' + nameOfItemToShow).removeClass(
'hidden').find(
'a').focus();
432 $menu.find(
'.elgg-menu-item-' + nameOfItemToHide).addClass(
'hidden');
444 elgg.ui.initAccessInputs =
function () {
445 $(
'.elgg-input-access').each(
function () {
446 function updateMembersonlyNote() {
447 var val = $select.val();
448 if (val != acl && val !== 0) {
450 $note.css(
'visibility',
'visible');
452 $note.css(
'visibility',
'hidden');
455 var $select = $(
this),
456 acl = $select.data(
'group-acl'),
457 $note = $(
'.elgg-input-access-membersonly', this.parentNode),
458 commentCount = $select.data(
'comment-count'),
459 originalValue = $select.data(
'original-value');
461 updateMembersonlyNote();
462 $select.change(updateMembersonlyNote);
466 $select.change(
function(e) {
467 if ($(
this).val() != originalValue) {
468 if (!confirm(
elgg.echo(
'access:comments:change', [commentCount]))) {
469 $(
this).val(originalValue);
477 elgg.register_hook_handler(
'init',
'system',
elgg.ui.init);
478 elgg.register_hook_handler(
'init',
'system',
elgg.ui.initDatePicker);
479 elgg.register_hook_handler(
'getOptions',
'ui.popup',
elgg.ui.loginHandler);
480 elgg.ui.registerTogglableMenuItems(
'add-friend',
'remove-friend');
elgg message elgg state success
elgg message elgg state error
function elgg combo checkbox click(function(){if($(this).is(':checked')){$(this).prev().attr('disabled', true);$(this).prev().val('');}else{$(this).prev().attr('disabled', false);}})
if(!$site) if(!($site instanceof ElggSite)) $site url