|
Благодарность и антиблагодарность
|
|
| Кронд | Отредактировал Кронд - Воскресенье, 22 Марта 2009, 10:23 Дата: 22 Марта 2009, 10:22 | Сообщение # 1 | ● ● ● ● ● 329 сообщений Статус: Offline | Решил тут усовершенствовать скрипт репутации, дабы и на замечаниях работало автоматическое проставление варианта изменения и автоматически вписывалось сообщение. В общем, вот что вышло: Code rep = {}; callback.success = function (o) { var blockR = ((document.getElementById('layerContentRh') ? document.getElementById('layerContentRh').getElementsByTagName('TBODY')[0] : false) || document.getElementById('frm981')); var blockB = ((document.getElementById('layerContentBh') ? document.getElementById('layerContentBh').getElementsByTagName('TBODY')[0] : false) || document.getElementById('frm982')); ParseXML(o.responseXML); if (document.getElementById('frm981') && !blockR) { if (rep.type == 'minus') { document.getElementById('a2').disabled = true; document.getElementById('a1').checked = true; document.getElementById('frm981').reason.value = 'Минус за ответ в теме: ' + eval('url' + rep.pid); }; if (rep.type == 'plus') { document.getElementById('a1').disabled = true; document.getElementById('a2').checked = true; document.getElementById('frm981').reason.value = 'Плюс за ответ в теме: ' + eval('url' + rep.pid); } } if (document.getElementById('frm982') && !blockB) { if (rep.type == 'minus') { document.getElementById('a2').disabled = true; document.getElementById('a1').checked = true; document.getElementById('frm982').reason.value = 'Уровень замечаний понижен за ответ в теме: ' + eval('url' + rep.pid); }; if (rep.type == 'plus') { document.getElementById('a1').disabled = true; document.getElementById('a2').checked = true; document.getElementById('frm982').reason.value = 'Уровень замечаний повышен за ответ в теме: ' + eval('url' + rep.pid); } } if (document.getElementById('layerContentRh').getElementsByTagName('TBODY')[0] && !blockR) { var tds = document.getElementById('layerContentRh').getElementsByTagName('td'); for (i = 0; i < tds.length; i++) { if (tds[i].getAttribute('id') && tds[i].getAttribute('colspan') && (tds[i].innerHTML.indexOf('http://') !=- 1)) { tUrl = tds[i].innerHTML.substring(tds[i].innerHTML.indexOf('http://')); tds[i].innerHTML = tds[i].innerHTML.replace(tUrl, '<a href="' + tUrl + '">[ просмотреть тему ]</a>'); } } } if (document.getElementById('layerContentBh').getElementsByTagName('TBODY')[0] && !blockB) { var tds = document.getElementById('layerContentBh').getElementsByTagName('td'); for (i = 0; i < tds.length; i++) { if (tds[i].getAttribute('id') && tds[i].getAttribute('colspan') && (tds[i].innerHTML.indexOf('http://') !=- 1)) { tUrl = tds[i].innerHTML.substring(tds[i].innerHTML.indexOf('http://')); tds[i].innerHTML = tds[i].innerHTML.replace(tUrl, '<a href="' + tUrl + '">[ просмотреть тему ]</a>'); } } } } Проблема в том, что при просмотре истории замечаний ссылки не обрабатываются. Что я делаю не так? P.S. Выложу полностью, когда доделаю, думаю, многим пригодится =) | | |
|
| Бармалей | Дата: 22 Марта 2009, 10:38 | Сообщение # 2 | ● ● ● ● ● Тиран 7772 сообщения Статус: Offline | document.getElementById('layerContentBh').getElementsByTagName('TBODY')[0] А вы уверены что у замечаний структура такая же, как и у репутации?
 | | |
|
| Кронд | Отредактировал Кронд - Воскресенье, 22 Марта 2009, 11:32 Дата: 22 Марта 2009, 11:23 | Сообщение # 3 | ● ● ● ● ● 329 сообщений Статус: Offline | У истории замечаний, вроде, такая же... Сейчас гляну... Добавлено (22 Март 2009, 10:51) --------------------------------------------- Да, структура практически идентичная. Отличия только в id тех DIV'ов, в которых лежат пункты. Ну и так, по мелочи, типа стилизации. Хотя я могу ошибаться, всё-таки ночь не спал, голова начинает варить всё хуже и хуже. А спать нельзя... Добавлено (22 Март 2009, 11:14) --------------------------------------------- Хотя нет, всё-таки разные... Добавлено (22 Март 2009, 11:23) --------------------------------------------- Вот структура, как оказалось, всё же сильно различается... Сразу говорю, $КОДЫ$ подставлял от балды, но так, чтобы было понятно =) Code // Это - репутация <div id="blr$REP_ID$"> <table width="100%" cellspacing="1" cellpadding="1" border="0"> <tbody> <tr> <td width="70%"> <div style="background: transparent url(http://s16.ucoz.net/img/icon/minus.png) no-repeat scroll 0pt 0pt; width: 16px; height: 17px; float: left" title="Уровень понижен"/> <a target="_blank" href="http://site.domain/8-0-$USERNAME$" class="banHUser"> <b> $USERNAME$ </b> </a> </td> <td align="right" style="white-space: nowrap; font-size: 7pt;"> $DATE$ <a onclick="editItem3('$REP_ID$')" href="javascript://"> <img width="15" height="15" border="0" align="absmiddle" title="Изменить" onmouseout="this.src='http://s16.ucoz.net/img/fr/OmnE.gif'" onmouseover="this.src='http://s16.ucoz.net/img/fr/OmnE_.gif'" src="http://s16.ucoz.net/img/fr/OmnE.gif" id="eebt$REP_ID$"/> </a> <a onclick="delItem3('$REP_ID$');return false;" href="javascript://"> <img width="15" height="15" border="0" align="absmiddle" title="Удалить" onmouseout="if (this.src!='http://s16.ucoz.net/img/fr/OmnAjax.gif')this.src='http://s16.ucoz.net/img/fr/OmnD.gif'" onmouseover="if (this.src!='http://s16.ucoz.net/img/fr/OmnAjax.gif')this.src='http://s16.ucoz.net/img/fr/OmnD_.gif'" src="http://s16.ucoz.net/img/fr/OmnD.gif" id="dic$REP_ID$"/> </a> </td> </tr> <tr> <td id="mmtx$REP_ID$" colspan="2"> Минус за ответ в теме: <a href="$POST_LINK$"> [ просмотреть тему ] </a> </td> </tr> </tbody> </table> <hr/> </div>
// А это - замечания <div id="blk$BAN_ID$"> <table width="100%" cellspacing="1" cellpadding="1" border="0"> <tbody> <tr> <td width="70%"> </td> <td align="right" style="white-space: nowrap; font-size: 7pt;"> </td> </tr> <tr> <td id="mtx$BAN_ID$" colspan="2"> Уровень замечаний понижен за ответ в теме: <a href="$POST_LINK$"> [ просмотреть тему ] </a> </td> </tr> </tbody> </table> <hr/> </div> Подскажите, люди добрые, как исправить скрипт? | | |
|
| google08 | Дата: 22 Марта 2009, 11:38 | Сообщение # 4 | ● ● ● ● ● 37 сообщений Статус: Offline | После обновления системы это работать, возможно, не будет. ТыцДобавлено (22 Март 2009, 11:38) --------------------------------------------- Так что пользуемся репутацией целый день  | | |
|
| Кронд | Дата: 22 Марта 2009, 11:46 | Сообщение # 5 | ● ● ● ● ● 329 сообщений Статус: Offline | Блин... Тогда временно оставим эту тему, буду довольствоваться тем, что есть =) А после обновления посмотрим... | | |
|
| Бармалей | Дата: 22 Марта 2009, 12:02 | Сообщение # 6 | ● ● ● ● ● Тиран 7772 сообщения Статус: Offline | Значит будет благодарность и антиблагодарность 3.0 
 | | |
|
| google08 | Дата: 22 Марта 2009, 12:31 | Сообщение # 7 | ● ● ● ● ● 37 сообщений Статус: Offline | Значит будет благодарность и антиблагодарность 3.0 На JQ  | | |
|
| Кронд | Дата: 22 Марта 2009, 12:40 | Сообщение # 8 | ● ● ● ● ● 329 сообщений Статус: Offline | google08, Мне лень было это всё переписывать на jQ =)))) | | |
|
| Бармалей | Дата: 22 Марта 2009, 13:09 | Сообщение # 9 | ● ● ● ● ● Тиран 7772 сообщения Статус: Offline | Quote Значит будет благодарность и антиблагодарность 3.0 На JQ  Я тоже хотел это написать 
 | | |
|
| Кронд | Отредактировал Кронд - Суббота, 04 Апреля 2009, 14:14 Дата: 04 Апреля 2009, 14:08 | Сообщение # 10 | ● ● ● ● ● 329 сообщений Статус: Offline | Эм... И как теперь править скрипт? =) Code reputation = {}; callback = function (u, o) { if (u.name == 'Rd') { if (reputation.type == 'minus') { $('#a0').attr('disabled', true); $('#a1').attr('checked', true); $('#a2').attr('disabled', true); }; if (reputation.type == 'plus') { $('#a0').attr('disabled', true); $('#a1').attr('disabled', true); $('#a2').attr('checked', true); }; if (reputation.type == 'none') { $('#a0').attr('checked', true); $('#a1').attr('disabled', true); $('#a2').attr('disabled', true); }; }; if (u.name == 'Rh') { $('div[id^="mmtx"]', o).each(function () { var a = this.innerHTML.match(/http:\/\/[^\s"]+/); if (a) { this.innerHTML = this.innerHTML.replace(a[0], '<a href="' + a[0] + '">[ просмотреть тему ]</a>'); } }); } if (u.name == 'AJAXLayer') { $(o).addClass('ajaxBlockContent').find('a[href!="javascript://"]:not(.noAjax):not([target="_blank"]),a.pmCatLink').click(function () { new _uWnd('AJAXLayer', ' ', 720, 400, { autosize : 1 }, { url : $(this).attr('href'), type : 'get', dataType : 'text' }); return false; }); } }; Только не выходит ничерта ЗЫ С обновлением надобность в указании линка на тему отпала, так что этот момент в коде я снёс | | |
|
| Бармалей | Дата: 04 Апреля 2009, 14:30 | Сообщение # 11 | ● ● ● ● ● Тиран 7772 сообщения Статус: Offline | С обновлением надобность в указании линка на тему отпала, так что этот момент в коде я снёс Посему я вообще не вижу надобности в этом скрипте.
 | | |
|
| Кронд | Дата: 04 Апреля 2009, 14:46 | Сообщение # 12 | ● ● ● ● ● 329 сообщений Статус: Offline | Бармалей, лень тыкать на нужный radio button =))) | | |
|