1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-07-03 06:55:03 +03:00
ifhub.club/application/frontend/common/js/wall.js
Denis Shakhov d6029b1b12 Доработки и исправления
* Оптимизировано добавление\удаление из избранного
* Документирование
* Мелкие доработки и исправления
2013-08-29 16:30:04 +07:00

246 lines
7 KiB
JavaScript

/**
* Стена пользователя
*
* @module ls/wall
*
* @license GNU General Public License, version 2
* @copyright 2013 OOO "ЛС-СОФТ" {@link http://livestreetcms.com}
* @author Denis Shakhov <denis.shakhov@gmail.com>
*/
var ls = ls || {};
ls.wall = (function ($) {
this.options = {
login: ''
};
this.iIdForReply=null;
/**
* Добавление записи
*/
this.add = function(sText, iPid) {
$('.js-button-wall-submit').attr('disabled',true);
var url = aRouter['profile']+this.options.login+'/wall/add/';
var params = {sText: sText, iPid: iPid};
ls.hook.marker('addBefore');
$('#wall-text').addClass('loader');
ls.ajax(url, params, function(result) {
$('.js-button-wall-submit').attr('disabled',false);
if (result.bStateError) {
ls.msg.error(null, result.sMsg);
} else {
$('.js-wall-reply-parent-text').val('');
$('#wall-note-list-empty').hide();
this.loadNew();
ls.hook.run('ls_wall_add_after',[sText, iPid, result]);
}
$('#wall-text').removeClass('loader');
}.bind(this));
return false;
};
this.addReply = function(sText, iPid) {
$('.js-button-wall-submit').attr('disabled',true);
var url = aRouter['profile']+this.options.login+'/wall/add/';
var params = {sText: sText, iPid: iPid};
ls.hook.marker('addReplyBefore');
$('#wall-reply-text-' + iPid).addClass('loader');
ls.ajax(url, params, function(result) {
$('.js-button-wall-submit').attr('disabled',false);
if (result.bStateError) {
ls.msg.error(null, result.sMsg);
} else {
$('.js-wall-reply-text').val('');
this.loadReplyNew(iPid);
ls.hook.run('ls_wall_addreply_after',[sText, iPid, result]);
}
$('#wall-reply-text-' + iPid).removeClass('loader');
}.bind(this));
return false;
};
this.load = function(iIdLess,iIdMore,callback) {
var url = aRouter['profile']+this.options.login+'/wall/load/';
var params = {iIdLess: iIdLess ? iIdLess : '', iIdMore: iIdMore ? iIdMore : ''};
ls.hook.marker('loadBefore');
ls.ajax(url, params, callback);
return false;
};
this.loadReply = function(iIdLess,iIdMore,iPid,callback) {
var url = aRouter['profile']+this.options.login+'/wall/load-reply/';
var params = {iIdLess: iIdLess ? iIdLess : '', iIdMore: iIdMore ? iIdMore : '', iPid: iPid};
ls.hook.marker('loadReplyBefore');
ls.ajax(url, params, callback);
return false;
};
this.loadNext = function() {
var divLast=$('#wall-container').find('.js-wall-item:last-child');
if (divLast.length) {
var idLess=divLast.attr('id').replace('wall-item-','');
} else {
return false;
}
$('#wall-button-next').addClass('loading');
this.load(idLess,'',function(result) {
if (result.bStateError) {
ls.msg.error(null, result.sMsg);
} else {
if (result.iCountWall) {
$('#wall-container').append(result.sText);
}
var iCount=result.iCountWall-result.iCountWallReturn;
if (iCount) {
$('#wall-count-next').text(iCount);
} else {
$('#wall-button-next').detach();
}
ls.hook.run('ls_wall_loadnext_after',[idLess, result]);
}
$('#wall-button-next').removeClass('loading');
}.bind(this));
return false;
};
this.loadNew = function() {
var divFirst=$('#wall-container').find('.js-wall-item:first-child');
if (divFirst.length) {
var idMore=divFirst.attr('id').replace('wall-item-','');
} else {
var idMore=-1;
}
this.load('',idMore,function(result) {
if (result.bStateError) {
ls.msg.error(null, result.sMsg);
} else {
if (result.iCountWall) {
$('#wall-container').prepend(result.sText);
}
ls.hook.run('ls_wall_loadnew_after',[idMore, result]);
}
}.bind(this));
return false;
};
this.loadReplyNew = function(iPid) {
var divFirst=$('#wall-reply-container-'+iPid).find('.js-wall-reply-item:last-child');
if (divFirst.length) {
var idMore=divFirst.attr('id').replace('wall-reply-item-','');
} else {
var idMore=-1;
}
this.loadReply('',idMore,iPid,function(result) {
if (result.bStateError) {
ls.msg.error(null, result.sMsg);
} else {
if (result.iCountWall) {
$('#wall-reply-container-'+iPid).append(result.sText);
}
ls.hook.run('ls_wall_loadreplynew_after',[iPid, idMore, result]);
}
}.bind(this));
return false;
};
this.loadReplyNext = function(iPid) {
var divLast=$('#wall-reply-container-'+iPid).find('.js-wall-reply-item:first-child');
if (divLast.length) {
var idLess=divLast.attr('id').replace('wall-reply-item-','');
} else {
return false;
}
$('#wall-reply-button-next-' + iPid).addClass('loading');
this.loadReply(idLess,'',iPid,function(result) {
if (result.bStateError) {
ls.msg.error(null, result.sMsg);
} else {
if (result.iCountWall) {
$('#wall-reply-container-'+iPid).prepend(result.sText);
}
var iCount=result.iCountWall-result.iCountWallReturn;
if (iCount) {
$('#wall-reply-count-next-'+iPid).text(iCount);
} else {
$('#wall-reply-button-next-'+iPid).detach();
}
ls.hook.run('ls_wall_loadreplynext_after',[iPid, idLess, result]);
}
$('#wall-reply-button-next-' + iPid).removeClass('loading');
}.bind(this));
return false;
};
this.toggleReply = function(iId) {
$('#wall-item-' + iId + ' .wall-submit-reply').addClass('active').toggle().children('textarea').focus();
return false;
};
this.expandReply = function(iId) {
$('#wall-item-' + iId + ' .wall-submit-reply').addClass('active');
return false;
};
this.init = function(opt) {
if (opt) {
$.extend(true,this.options,opt);
}
jQuery(function($){
$(document).click(function(e) {
if (e.which==1) {
$('.wall-submit-reply.active').each(function(k,v){
if (!$(v).find('.js-wall-reply-text').val()) {
$(v).removeClass('active');
}
});
}
});
$('body').on("click", ".wall-submit-reply, .link-dotted", function(e) {
e.stopPropagation();
});
$('.js-wall-reply-text').bind('keyup', function(e) {
key = e.keyCode || e.which;
if(e.ctrlKey && (key == 13)) {
var id=$(e.target).attr('id').replace('wall-reply-text-','');
this.addReply($(e.target).val(), id);
return false;
}
}.bind(this));
$('.js-wall-reply-parent-text').bind('keyup', function(e) {
key = e.keyCode || e.which;
if(e.ctrlKey && (key == 13)) {
this.add($(e.target).val(), 0);
return false;
}
}.bind(this));
}.bind(this));
};
this.remove = function(iId) {
var url = aRouter['profile']+this.options.login+'/wall/remove/';
var params = {iId: iId};
ls.hook.marker('removeBefore');
ls.ajax(url, params, function(result){
if (result.bStateError) {
ls.msg.error(null, result.sMsg);
} else {
$('#wall-item-'+iId).fadeOut('slow', function() {
ls.hook.run('ls_wall_remove_item_fade',[iId, result],this);
});
$('#wall-reply-item-'+iId).fadeOut('slow', function() {
ls.hook.run('ls_wall_remove_reply_item_fade',[iId, result],this);
});
ls.hook.run('ls_wall_remove_after',[iId, result]);
}
});
return false;
};
return this;
}).call(ls.wall || {},jQuery);