1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-07-05 16:04:24 +03:00
ifhub.club/application/frontend/common/js/user.js

340 lines
11 KiB
JavaScript
Raw Normal View History

2011-05-03 11:22:13 +03:00
/**
2012-06-16 02:43:47 +03:00
* Управление пользователями
*
* @module ls/user
*
* @license GNU General Public License, version 2
* @copyright 2013 OOO "ЛС-СОФТ" {@link http://livestreetcms.com}
* @author Denis Shakhov <denis.shakhov@gmail.com>
2012-06-16 02:43:47 +03:00
*/
var ls = ls || {};
2011-05-03 11:22:13 +03:00
ls.user = (function ($) {
this.jcropImage = null;
/**
* Инициализация
*/
this.init = function() {
var self = this;
/* Авторизация */
ls.ajax.form(aRouter.login + 'ajax-login', '.js-form-login', function (result, status, xhr, form) {
result.sUrlRedirect && (window.location = result.sUrlRedirect);
ls.hook.run('ls_user_login_after', [form, result]);
});
/* Регистрация */
ls.ajax.form(aRouter.registration + 'ajax-registration', '.js-form-registration', function (result, status, xhr, form) {
result.sUrlRedirect && (window.location = result.sUrlRedirect);
ls.hook.run('ls_user_registration_after', [form, result]);
});
/* Регистрация Modal */
ls.ajax.form(aRouter.registration + 'ajax-registration', '.js-form-signup', function (result, status, xhr, form) {
result.sUrlRedirect && (window.location = result.sUrlRedirect);
ls.hook.run('ls_user_registration_after', [form, result]);
});
/* Восстановление пароля */
ls.ajax.form(aRouter.login + 'ajax-reminder', '.js-form-recovery', function (result, status, xhr, form) {
result.sUrlRedirect && (window.location = result.sUrlRedirect);
ls.hook.run('ls_user_recovery_after', [form, result]);
});
/* Повторный запрос на ссылку активации */
ls.ajax.form(aRouter.login + 'ajax-reactivation', '.js-form-reactivation', function (result, status, xhr, form) {
form.find('input').val('');
ls.hook.run('ls_user_reactivation_after', [form, result]);
});
$('.js-modal-toggle-registration').on('click', function (e) {
$('[data-tab-target=tab-pane-registration]').tab('activate');
ls.captcha.update();
$('#modal-login').modal('show');
e.preventDefault();
});
$('.js-modal-toggle-login').on('click', function (e) {
$('[data-tab-target=tab-pane-login]').tab('activate');
$('#modal-login').modal('show');
e.preventDefault();
});
// Добавление пользователя в свою активность
$('.js-user-follow').on('click', function (e) {
var oElement = $(this);
if (oElement.hasClass(ls.options.classes.states.active)) {
// Удаляем
ls.user_list_add.remove('activity', null, oElement.data('user-id'), function (oResponse, iUserId) {
oElement.removeClass(ls.options.classes.states.active).text(ls.lang.get('profile_user_follow'));
});
} else {
// Добавляем
ls.user_list_add.add('activity', null, oElement.data('user-id'), {
add_success: function (oResponse) {
oElement.addClass(ls.options.classes.states.active).text(ls.lang.get('profile_user_unfollow'));
}
});
}
e.preventDefault();
});
// Добавление выбранных пользователей
$(document).on('click', '.js-user-list-select-add', function (e) {
var aCheckboxes = $('.js-user-list-select').find('.js-user-list-small-checkbox:checked'),
oInput = $( $(this).data('target') ),
oInputValue = oInput.val();
// Получаем логины для добавления
var aLoginsAdd = $.map(aCheckboxes, function(oElement, iIndex) {
return $(oElement).data('user-login');
});
// Получаем логины которые уже прописаны
var aLoginsOld = $.map(oInputValue.split(','), function(sLogin, iIndex) {
return $.trim(sLogin) || null;
});
// Мержим логины
oInput.val( $.richArray.unique($.merge(aLoginsOld, aLoginsAdd)).join(', ') );
$('#modal-users-select').modal('hide');
});
// Загрузка фотографии в профиль
$('.js-ajax-user-photo-upload').on('change', function () {
self.uploadProfilePhoto($(this));
});
// Удаление фотографии профиля
$('.js-ajax-user-photo-upload-remove').on('click', function () {
self.removeProfilePhoto($(this).data('userId'));
return false;
});
// Изменения аватара
$('.js-ajax-user-avatar-change').on('click', function () {
self.changeProfileAvatar($(this).data('userId'));
return false;
});
};
2011-05-03 11:22:13 +03:00
/**
2012-06-16 02:43:47 +03:00
* Добавление в друзья
*/
2011-05-03 11:22:13 +03:00
this.addFriend = function(obj, idUser, sAction){
if(sAction != 'link' && sAction != 'accept') {
2012-01-28 17:52:44 +02:00
var sText = $('#add_friend_text').val();
2011-05-03 11:22:13 +03:00
$('#add_friend_form').children().each(function(i, item){$(item).attr('disabled','disabled')});
} else {
2012-01-28 17:52:44 +02:00
var sText='';
2011-04-01 10:49:36 +03:00
}
2011-05-03 11:22:13 +03:00
if(sAction == 'accept') {
2012-01-28 17:52:44 +02:00
var url = aRouter.profile+'ajaxfriendaccept/';
2011-05-03 11:22:13 +03:00
} else {
2012-01-28 17:52:44 +02:00
var url = aRouter.profile+'ajaxfriendadd/';
2011-04-01 10:49:36 +03:00
}
2012-06-13 11:46:40 +03:00
2012-01-28 17:52:44 +02:00
var params = {idUser: idUser, userText: sText};
2012-06-13 11:46:40 +03:00
2012-04-28 18:40:06 +03:00
ls.hook.marker('addFriendBefore');
ls.ajax.load(url, params, function(result){
2011-05-03 11:22:13 +03:00
$('#add_friend_form').children().each(function(i, item){$(item).removeAttr('disabled')});
if (!result) {
ls.msg.error('Error','Please try again later');
}
if (result.bStateError) {
ls.msg.error(null,result.sMsg);
} else {
ls.msg.notice(null,result.sMsg);
$('#add_friend_form').jqmHide();
$('#add_friend_item').remove();
2013-04-12 06:55:43 +03:00
$('#profile_actions').prepend($($.trim(result.sToggleText)));
ls.hook.run('ls_user_add_friend_after', [idUser,sAction,result], obj);
2011-05-03 11:22:13 +03:00
}
});
return false;
};
/**
2012-06-16 02:43:47 +03:00
* Удаление из друзей
*/
2011-05-03 11:22:13 +03:00
this.removeFriend = function(obj,idUser,sAction) {
2012-01-28 17:52:44 +02:00
var url = aRouter.profile+'ajaxfrienddelete/';
var params = {idUser: idUser,sAction: sAction};
2012-06-13 11:46:40 +03:00
2012-04-28 18:40:06 +03:00
ls.hook.marker('removeFriendBefore');
ls.ajax.load(url, params, function(result) {
2011-05-03 11:22:13 +03:00
if (result.bStateError) {
ls.msg.error(null,result.sMsg);
} else {
ls.msg.notice(null,result.sMsg);
$('#delete_friend_item').remove();
$('#profile_actions').prepend($($.trim(result.sToggleText)));
ls.hook.run('ls_user_remove_friend_after', [idUser,sAction,result], obj);
}
});
return false;
};
/**
* Поиск пользователей по началу логина
*/
this.searchUsersByPrefix = function(sPrefix,obj) {
obj=$(obj);
var url = aRouter['people']+'ajax-search/';
var params = {user_login: sPrefix, isPrefix: 1};
$('#search-user-login').addClass('loader');
ls.hook.marker('searchUsersByPrefixBefore');
ls.ajax.load(url, params, function(result){
$('#search-user-login').removeClass('loader');
$('#user-prefix-filter').find('.active').removeClass('active');
obj.parent().addClass('active');
if (result.bStateError) {
$('#users-list-search').hide();
$('#users-list-original').show();
} else {
$('#users-list-original').hide();
$('#users-list-search').html(result.sText).show();
ls.hook.run('ls_user_search_users_by_prefix_after',[sPrefix, obj, result]);
}
});
return false;
};
/**
* Подписка
*/
this.followToggle = function(obj, iUserId) {
if ($(obj).hasClass('followed')) {
ls.stream.unsubscribe(iUserId);
$(obj).toggleClass('followed').text(ls.lang.get('profile_user_follow'));
} else {
ls.stream.subscribe(iUserId);
$(obj).toggleClass('followed').text(ls.lang.get('profile_user_unfollow'));
}
2011-05-03 11:22:13 +03:00
return false;
};
/**
* Поиск пользователей
*/
this.searchUsers = function(sFormSelector) {
var url = aRouter['people']+'ajax-search/',
oInputSearch = $(sFormSelector).find('input'),
oOriginalContainer = $('#users-list-original'),
oSearchContainer = $('#users-list-search');
oInputSearch.addClass(ls.options.classes.states.loading);
ls.hook.marker('searchUsersBefore');
ls.ajax.submit(url, sFormSelector, function(result) {
oInputSearch.removeClass(ls.options.classes.states.loading);
2014-01-28 11:29:59 +02:00
if (result.bShowOriginal) {
oSearchContainer.hide();
oOriginalContainer.show();
} else {
oOriginalContainer.hide();
oSearchContainer.html(result.sText).show();
ls.hook.run('ls_user_search_users_after', [sFormSelector, result]);
}
});
};
this.addComplaint = function(form) {
ls.ajax.submit(aRouter.profile+'ajax-complaint-add/', form, function(result){
$('#modal-complaint-user').modal('hide');
});
};
this.uploadProfilePhoto = function(input) {
var form = $('<form method="post" enctype="multipart/form-data"></form>').hide().appendTo('body');
input.clone(true).insertAfter(input);
input.appendTo(form);
$('<input type="hidden" name="user_id" value="'+input.data('userId')+'" >').appendTo(form);
ls.ajax.submit(aRouter.settings+'ajax-upload-photo/', form, function (data) {
if (data.bStateError) {
ls.msg.error(data.sMsgTitle,data.sMsg);
} else {
$('.js-ajax-user-photo-image').attr('src',data.sFile);
$('.js-ajax-user-photo-upload-choose').html(data.sChooseText);
$('.js-ajax-user-photo-upload-remove').show();
$('.js-ajax-user-avatar-change').show();
}
form.remove();
}.bind(this));
};
this.removeProfilePhoto = function(idUser) {
var params = {user_id: idUser};
ls.ajax.load(aRouter.settings+'ajax-remove-photo/', params, function(result) {
if (result.bStateError) {
ls.msg.error(null,result.sMsg);
} else {
$('.js-ajax-user-photo-image').attr('src',result.sFile);
$('.js-ajax-user-photo-upload-choose').html(result.sChooseText);
$('.js-ajax-user-photo-upload-remove').hide();
$('.js-ajax-user-avatar-change').hide();
}
});
return false;
};
this.changeProfileAvatar = function(idUser) {
var self = this;
ls.modal.load(aRouter.ajax+'modal/image-crop/', {image_src: $('.js-ajax-user-photo-image').attr('src') }, {
aftershow: function() {
this.jcropImage && this.jcropImage.destroy();
$('.js-image-crop').css({
'width': 'auto',
'height': 'auto'
});
$('.js-image-crop').Jcrop({ minSize: [32, 32], aspectRatio: 1 }, function () {
self.jcropImage = this;
var w=$('.js-image-crop').innerWidth();
var h=$('.js-image-crop').innerHeight();
w=w/2-75;
h=h/2-75;
w=w>0 ? Math.round(w) : 0;
h=h>0 ? Math.round(h) : 0;
this.setSelect([w, h, w+150, h+150]);
});
$('.js-ajax-image-crop-submit').on('click',function() {
var params={
user_id: idUser,
size: self.jcropImage.tellSelect(),
canvas_width: $('.js-image-crop').innerWidth()
}
ls.ajax.load(aRouter.settings+'ajax-change-avatar/', params, function(result) {
if (result.bStateError) {
ls.msg.error(null,result.sMsg);
} else {
$('#modal-image-crop').modal('hide');
}
});
});
2012-04-05 11:52:13 +03:00
}
});
return false;
};
2011-05-03 11:22:13 +03:00
return this;
}).call(ls.user || {},jQuery);