19:57
Работаем с наградами
Привет))). У меня ещё пара функций для работы с наградами. Причём кроме функций добавления наград пользователю и показа окошек, есть также функции получения, плюс функции администрирования.
user
{

awards

}

(function(window){
 window.showAwards = function(user){
 return new _uWnd('AwL','Список наград',380,200,{autosize:1,maxh:300,minh:100,closeonesc:1},{url:'/index/54-' + user});
 };
 window.showAward = function(user,id){
 return new _uWnd('AwL','Список наград',380,200,{autosize:1,maxh:300,minh:100,closeonesc:1},{url:'/index/54-' + user + '-' + id});
 };
 window.changeAwards = function(user){
 return new _uWnd('AwD','Вручить награду',380,200,{autosize:1,maxh:300,minh:100,closeonesc:1},{url:'/index/55-' + user});
 };
 window.addAward = function(user,obj,fn){
 $.post('/index/', {
 a:55,
 c:obj.id,
 comment:obj.comment,
 s:user,
 t:1
 }, fn);
 };
 window.getAllAwards = function(user,fn){
 $.get('/index/54-' + user, function(data){
 var arr = [];
 var code = $('cmd[p=content]', data).text();
 code = $(code);
 
 $('fieldset', code).each(function(){
 var header = $('legend', this).text();
 $('td', this).each(function(){
 var obj = {};
 obj.group = header;
 obj.id = parseInt($(this).attr('onclick').split('url:\'/index/54-' + user + '-')[1].split('\'')[0]);
 obj.img = $('img', this).attr('src');
 obj.count = parseInt($('img', this).next().text());
 obj.getInfo = function(func){
 $.get('/index/54-' + user + '-' + obj.id, function(data){
 var code = $('cmd[p=content]', data).text();
 code = $(code);
 var predmets = [];
 $('fieldset', code).each(function(){
 var info = {};
 info.username = $('legend b',this).text();
 info.usergroup = $('legend',this).text();
 info.usergroup = info.usergroup.substring(info.username.length+2, info.usergroup.length-1);
 info.userpage = $('legend a',this).attr('href');
 info.user = info.userpage.split('-');
 info.user = info.user[info.user.length-1];
 info.comment = $('legend',this).next().text();
 info.date = $('legend',this).next().next().text();
 info.identifier = $('legend',this).next().attr('id').substring(3);
 info.change = function(text){
 $.post('/index/', {
 a:56,
 c:info.identifier,
 comment:text,
 p:2,
 s:2,
 ssid:$('cmd[p=js]',data).text().split(' name="ssid" value="')[1].split('"')[0]
 });
 }
 info.delete = function(){
 $.get('/index/56-' + user + '-' + info.identifier + '-1');
 }
 predmets.push(info);
 });
 func(predmets);
 });
 }
 arr.push(obj);
 });
 });
 fn(arr);
 });
 }
 };
})(window);


Итак, показываем окошко наград пользователя с id = 2:
showAwards(2);


Окошко награды. Id юзера = 2. Id награды = 10:
showAward(2, 10);


Показываем окошко добавления юзеру награды. Id юзера:
changeAwards(2);

Добавляем юзеру награду:
addAward(2, {id:10, comment:'Вот тебе награда...'}, function(){
 // функция исполнится после
});

Id юзера - 2. Id награды - 10 (смотреть в панели управления). Ну и комментарий.

Ну и функция getAllAwards. Про неё надо поподробнее.
getAllAwards(2,function(awards){
 // awards - массив наград
});

Первый параметр - id юзера. Второй - функция. Она принимает параметром массив awards - это награды. Каждая награда имеет след. параметры:

  • group - группа (например "Знаки отличия").
  • id - id награды.
  • img - адрес картинки.
  • count - количество наград.
  • getInfo - получение более подробной информации + функций администрирования.


Теперь чуть поподробнее про функцию award.getInfo. Мы можем её вызвать для получения более подробной информации. Передаём функцию:
getAllAwards(2,function(awards){
 awards[0].getInfo(function(info){
 // используем объект info
 });
});


Ну а теперь последнее - про объект info. Следующие свойства:

  • username - имя пользователя, подарившего подарок. Пардон, награду.
  • usergroup - его группа.
  • userpage - его персональная страница.
  • user - его id.
  • comment - комментарий.
  • date - дата (в формате uCoz).
  • identifier - другой идентификатор.

Кроме того, у объекта info есть две функции для администрирования:

  • change(text) - изменяет комментарий награды на text.
  • delete() - удаляет награду.
993, 5, Кейтен, 19.05.2024, 05:13, 5.0
3 Кейтен  
UPD. Оба бага исправлены.

2 Кейтен  
P.P.S. Ещё: в функции changeAwards остался адрес тестового сайта. Его надо заменить на относительный.

1 Кейтен  
P.S. Код не рабочий, подсветка кода съела экранирующие символы. Сейчас исправлять времени нету, чуточку попозже.
Пока: все проблемы в функции getAllAwards, строчка 31. Ну и ещё 35 может быть, хотя слыши вроде можно не экранировать.

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