21:27
Работа с ЛС
Привет :). Сегодня выкладываю функции для работы с ЛС.
user
{

личные сообщения

}

Функции:
(function(window){
 window.PM = function(theme,message){
 var ready = [], sent = [], that = this;
 this.theme = theme;
 this.message = message;
 this.readyState = 'loading';
 this.ready = function(fn){
 if(this.readyState == 'ready') fn.call(this);
 else ready.push(fn);
 }
 $.get('/index/14-0-0-1', function(data){
 that.ssid = $('[name=ssid]',data).val();
 that.seckey = $('[name=seckey]',data).val();
 that.captcha = $('#secuImg',data).attr('src');
 that.readyState = 'ready';
 for(var i = 0, l = ready.length; i < l; i++){
 ready[i].call(that);
 }
 });
 this.sent = function(fn){
 if(this.readyState == 'sent') fn.call(this);
 else sent.push(fn);
 }
 this.send = function(user,captcha){
 this.ready(function(){
 var obj = {
 _tp:'xml',
 a:18,
 message:this.message,
 s:user,
 ssid:this.ssid,
 subject:this.theme
 };
 if(this.captcha){
 obj.seckey = this.seckey;
 obj.code = captcha;
 }
 $.post('/index/', obj, function(data){
 that.readyState = 'sent';
 that.data = data;
 for(var i = 0, l = sent.length; i < l; i++){
 sent[i].call(that,data);
 }
 });
 });
 }
 this.toString = function(){ return '[object uAdminPM]' }
 }
 window.getInputPM = function(fn){
 $.get('/index/14-0-0', function(data){
 var pm = [];
 data = $(data);
 $('#pmdform tr',data).each(function(){
 var id = $(this).attr('id'), obj = {};
 if(!id) return;
 obj.id = id.substring(3);
 obj.link = $('td:eq(1) a:eq(0)',this);
 obj.theme = obj.link.text();
 obj.link = obj.link.attr('href');
 obj.userpage = $('td:eq(1) a:eq(1)',this);
 obj.username = obj.userpage.text();
 obj.userpage = obj.userpage.attr('href');
 obj.date = $('td:eq(2)',this).text();
 obj.getText = function(fn){
 $.get('/index/14-' + obj.id + '-0', function(data){
 var t = $('#snewmes',data).parent().text();
 fn( t.substring(0, t.length-19) );
 });
 }
 obj.delete = function(fn){
 $.get('/index/16-' + obj.id + '?_tp=xml',fn);
 }
 pm.push(obj);
 });
 fn(pm);
 });
 }
 window.getOutputPM(fn){
 $.get('/index/14-0-1', function(data){
 var pm = [];
 data = $(data);
 $('#pmdform tr',data).each(function(){
 var id = $(this).attr('id'), obj = {};
 if(!id) return;
 obj.id = id.substring(3);
 obj.link = $('td:eq(1) a:eq(0)',this);
 obj.theme = obj.link.text();
 obj.link = obj.link.attr('href');
 obj.userpage = $('td:eq(1) a:eq(1)',this);
 obj.username = obj.userpage.text();
 obj.userpage = obj.userpage.attr('href');
 obj.date = $('td:eq(2)',this).text();
 obj.getText = function(fn){
 $.get('/index/14-' + obj.id + '-0', function(data){
 var t = $('#snewmes',data).parent().text();
 fn( t.substring(0, t.length-19) );
 });
 }
 obj.delete = function(fn){
 $.get('/index/16-' + obj.id + '?_tp=xml',fn);
 }
 pm.push(obj);
 });
 fn(pm);
 });
 }
})(window);

Ну а теперь представим, что у нас есть некий пользователь. Наш скрипт должен отправить от него некоему пользователю Васе сообщение с темой "Ы" и сообщением "Привет". Для начала создадим новое сообщение.
var pm = new PM('Ы', 'Привет');


Затем нам надо показать пользователю капчу, если это надо, и отправить сообщение:
pm.ready(function(){
 if(pm.captcha){
 // создаём картинку с капчей
 var img = $('<img />');
 img.attr('src', pm.captcha);
 img.appendTo('body');
 
 // теперь текстовое поле
 var inp = $('<input />');
 inp.blur(function(){
 pm.send('Вася', inp.val());
 });
 inp.appendTo('body');
 }
 else {
 pm.send('Вася');
 }
});


Вот и всё :). Описывать методы и свойства не буду, итак всё понятно. Добавлю, что есть функция sent(func), которая добавляет обработчик события на отправку сообщения. И свойство readyState, которое может принимать значения "loading", "ready" и "sent".

Кроме этого, мы можем получать все входящие или все исходящие сообщения пользователя. Для этого есть функции getInputPM для входящих и getOutputPM для исходящих. Синтаксис одинаковый, потому покажу только для одной функции:
getInputPM(function(pm){
 // pm - массив
 $.each(pm, function(){
 this.theme; // тема
 this.link; // ссылка на страницу сообщения
 this.username; // имя пользователя, отправившего/принявшего ЛС
 this.userpage; // ссылка на его страницу
 this.date; // дата (в формате строки)
 this.getText(function(text){ // получаем текст сообшения
 // text - это и есть текст сообщения
 });
 this.delete(); // удаляем сообщение (можно передать функцию-обработчик)
 });
});


Вот вроде и всё... С новым годом :).
884, 5, Кейтен, 19.05.2024, 06:39, 3.8
3 Кейтен  
Получаем пользователя: работа с API - 119 просмотров
Работа с репутацией - 82 просмотра
Переводим юзера в другую группу - 70 просмотров
Работаем с наградами - 55 просмотров
Работа с ЛС - 7 просмотров

Грустно... sad

4 TRANE73  
http://clip2net.com/s/1sjln замени) у меня также было после смены дизайна)

5 Кейтен  
Спасибо :).

2 Кейтен  
Скоро будет smile

1 Max  
Интересненько, первый билд пора собирать smile

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Скачать
Партнёры
Комментарии
(26.06.2012)
smile классно, ждем! Оставил сайт в закладках)
Кейтен (13.05.2012)
Если вы знаете JavaScript, то эти функции могут помочь вам писать скрипты для uCoz
Кейтен (12.05.2012)
Сейчас, к сожалению, времени очень не хватает. Как только появится - сразу займусь. Кстати говоря, модуль пользователей уже почти закончен, пара функций осталась.
(19.04.2012)
нового ничего не будет? sad
Статистика