Имя: Пароль:
LIFE
Жизнь форума
OFF: Предложение по улучшению
0 K-5
 
21.11.12
08:31
1. Иное 50% (2)
2. Надо 25% (1)
3. Не надо 25% (1)
Всего мнений: 4

Бывает так, что в процесе обсуждения, зададут уважаемые ЗУ вопрос а его не видно, например, пошла другая сотка.

В связи с этим предложение добавить панель в которой можно было бы видеть вопросы или реплики которые относятся к пользователю.

Наподобие следующего допустим мой пост 250.
Через некоторое время кто то пишет (250) ......

Так вот чтоб в отдельной панели можно было бы увидеть название ветки, и вопросы которые задали на мои сообщения.

Спасибо
1 Hazer79
 
21.11.12
08:32
ничё не понял

Иное
2 K-5
 
21.11.12
08:33
(1) До Штирлица не дошла шифровка из центра. Он прочитал ее еще раз, все равно - не дошла.
3 Defender aka LINN
 
21.11.12
08:34
(0) У четких потсанов все уже и так есть.

Иное
4 K-5
 
21.11.12
08:36
(3) Поделитесь секретом успеха)))
5 Defender aka LINN
 
21.11.12
08:37
// y88
// tooltip add-on for forum.mista.ru

var msg_hash = new Array();
var last_n_old = 0;
var timeoutNewMessage;
last_n = (typeof last_n=="undefined") ? (1000) : (last_n); // for archived

createToolTips();


function createToolTips() {

var table_messages      = document.getElementById('table_messages');
if (table_messages) {
if (last_n_old!=last_n) { // exist new messages

// read all data and store to array
for (msg_id=last_n_old; msg_id<=last_n; msg_id++) {
//  if (document.getElementById('message_'+msg_id)) {} // row для ajax нет!!!!
 if (document.getElementById('tdmsg'+msg_id)) { // cell
   var obj_tr_msg = document.getElementById('tdmsg'+msg_id).parentNode; // row
//    var msg_author = document.getElementById('tduser'+msg_id).innerHTML;
   var msg_author = obj_tr_msg.cells[0].innerHTML;
   var msg_date   = '';
   var msg_text   = document.getElementById('tdmsg'+msg_id).innerHTML;

   msg_hash[msg_id] = [msg_id,msg_author,msg_date,msg_text];
 }
}

// create tooltip
for (msg_id=last_n_old; msg_id<=last_n; msg_id++) {
 var obj_td_msg = document.getElementById('tdmsg'+msg_id);
 if (obj_td_msg) { // cell
   var obj_tr_msg = obj_td_msg.parentNode; // row
   var msg_text = obj_td_msg.innerHTML;
   // 1. (<a href='#0' style='text-decoration:none'>0</a>)
   //    (<a href='topic.php?id=444509&amp;page=3#261' style='text-decoration:none'>261</a>)
   msg_text = msg_text.replace(/\(<a .*?>(\d+)<\/a>\)/gi, '<span onmouseover="tooltip.scheduleShowTip(this,re_html($1))" onmouseout="tooltip.scheduleHideTip(this)"><a href=#$1 style="text-decoration:none">($1)</a></span>')

   // 2. <a rel="nofollow" href="#2" class="answer-link" title="lxs">2</a>
   msg_text = msg_text.replace(/<noindex><a .*?>(\d+)<\/a><\/noindex>/gi, '<span onmouseover="tooltip.scheduleShowTip(this,re_html($1))" onmouseout="tooltip.scheduleHideTip(this)"><a href=#$1 class="answer-link">($1)</a></span>')

   //obj_td_msg.innerHTML = msg_text; // FF only !!!

   //<td style="padding:10px;" id="tdmsg5" valign="top" bgcolor="#FDFDFD" class="leftbottomgray">
   obj_tr_msg.deleteCell(1);
   var td_m = obj_tr_msg.insertCell(1);
   td_m.id="tdmsg"+msg_id;
   td_m.valign="top";
   //td_m.padding="10px";
   td_m.bgColor="#FDFDFD";

   td_m.style.borderBottomColor="#EEEEEE";
   td_m.style.borderBottomWidth="1px";
   td_m.style.borderBottomStyle="solid";
   td_m.style.borderLeftColor="#EEEEEE";
   td_m.style.borderLeftWidth="1px";
   td_m.style.borderLeftStyle="solid";

   td_m.innerHTML = msg_text;
 }
}

last_n_old = last_n;
}
}
// add shedule for new messages
//if (timeoutNewMessage) timeoutNewMessage=clearTimeout(timeoutNewMessage);
timeoutNewMessage = setTimeout(createToolTips, 3000);
}


function re_html(id) {
 if (msg_hash[id]) {
   return {
     subj: "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"+msg_hash[id][1],
     text: ""+msg_hash[id][3]+""
   }
 }else{
   //ajax load
   getmessage_tooltip(id);
   return {subj:'wait ajax '+id,text:'loading...'}
 }
}



//функция для подгрузки сообщения
function getmessage_tooltip(message_n) {
 var k = 1;
 var topic_id = '' + document.getElementById('topic_id').value;
 var direction = 0;

 var req = new Subsys_JsHttpRequest_Js();
 // Код, АВТОМАТИЧЕСКИ вызываемый при окончании загрузки.
 req.onreadystatechange = function() {
   if (req.readyState == 4) {
     if (req.responseJS){
       if (req.responseJS.client_action==1) { // ok
         var message = req.responseJS.message_html;
         message = message.replace(/<span.*\]<\/span>/gi, ''); // delete top navigations

         //&nbsp;<BR><B>user_name</B>:message text  // to do !!!!
         var author = '';
         if (message.match(/<BR><B>(.+)<\/B>:(.+)/i)) {
           author  = "<b>"+RegExp.$1+"</b>";
           message = RegExp.$2;
         }
         msg_hash[message_n] = [message_n,author,'',message];
         tooltip.divTip.childNodes[0].innerHTML = msg_hash[message_n][1] + tooltip.html_close;
         tooltip.divTip.childNodes[1].innerHTML = msg_hash[message_n][3];

       }else if (req.responseJS.client_action==2) { //error
         msg_hash[message_n] = [message_n,'ajax::&nbsp;&nbsp;ERROR','',req.responseJS.error];
         tooltip.divTip.childNodes[0].innerHTML = msg_hash[message_n][1] + tooltip.html_close;
         tooltip.divTip.childNodes[1].innerHTML = msg_hash[message_n][3];
       }
     }
   }
 }

 req.caching = false; // Запрещаем кэширование
 req.open('POST', 'ajax_getmessage.php', true);

 // Посылаем данные запроса (задаются в виде хэша).
 req.send({ k:k, topic_id:topic_id, message_n:message_n, direction:direction});
}



/*     TOOLTOP     */
tooltip = {
       TIP_TIME:          300,
       OUT_TIME:          300,
       divTip:            null,
       html:
               '<div class="gensmall" style="position:absolute; background:#FFFFE1; border:1px solid #000000; width:630px; font-weight:normal; overflow:hidden">'+
                       '<div style="background:white; padding:4px; border-bottom:1px solid silver"><b>Подождите...</b></div>' +
                       '<div style="padding:4px">Идет ajax загрузка.<br/>Это может занять некоторое время.</div>' +
               '</div>',
       html_close:
               '<span onclick="tooltip.hideTip(this.parentNode.parentNode)" style="POSITION: absolute; RIGHT: 3px; TOP: 3px; cursor:hand; cursor:pointer">'+
                       '<b> x </b>' +
               '</span>',

       scheduleShowTip: function(elt, funk, event) {
               var th = this;
               if (th.timeoutTip) th.timeoutTip=clearTimeout(th.timeoutTip);
               if (th.timeoutMouseOut) th.timeoutMouseOut=clearTimeout(th.timeoutMouseOut);
               if (th.divTip && th.divTip.elt == elt) return; // already shown
               th.timeoutTip = setTimeout(function() { th.timeoutTip=null; th.showTip(elt, funk, event) }, th.TIP_TIME);
       },

       scheduleHideTip: function() {
               var th = this;
               if (th.timeoutTip) th.timeoutTip=clearTimeout(th.timeoutTip);
               if (th.timeoutMouseOut) th.timeoutMouseOut=clearTimeout(th.timeoutMouseOut);
               th.timeoutMouseOut = setTimeout(function() { th.timeoutMouseOut=null; th.hideTip() }, th.OUT_TIME);
       },

       showTip: function(elt, funk, event) {
               var th = this;
               th.locked = false;
               th.hideTip();
               // Create tip.
               var span = document.createElement("div"); span.innerHTML = th.html;
               th.divTip = span.childNodes[0];
               th.divTip.elt = elt;

               // Position tip.
               document.body.appendChild(th.divTip);
               var coord = th.getAbsPos(elt);
               var width = th.divTip.offsetWidth;
               var docWidth = document.body.scrollWidth;
               if (coord.x + width > docWidth) coord.x = docWidth - width - 10;
               if (coord.x < 0) coord.x = 0;
               th.divTip.style.left = coord.x + "px";
               th.divTip.style.top = (coord.y + elt.offsetHeight + 1) + "px";
               // Events for tip.
               addEvent(th.divTip, 'onmouseover', function(e) {
                       th.scheduleShowTip(elt, funk);
                       return true;
               })
               addEvent(th.divTip, 'onmouseout', function() {
                       if (th.inConfirm) return;
                       th.scheduleHideTip();
                       return true;
               })

               // Fill the tip. ++++++
               var divSubj = th.divTip.childNodes[0];
               var divText = th.divTip.childNodes[1];
               var out = funk;
               divSubj.innerHTML = out.subj + th.html_close;
               divText.innerHTML = out.text;
       },

       hideTip: function() {
               var th = this;
               if (th.locked) return;
               if (!th.divTip) return;
               th.divTip.parentNode.removeChild(th.divTip);
               th.divTip = null;
       },
       getAbsPos: function(p) {
               var s = { x:0, y:0 };
               while (p.offsetParent) {
                       s.x += p.offsetLeft;
                       s.y += p.offsetTop;
                       p = p.offsetParent;
               }
               return s;
       },

       end:0
}

// Cross-browser addEventListener()/attachEvent() replacement.
//       addEvent(th.divTip, 'onmouseover', function(e) {
function addEvent(elt, name, handler, atEnd) {
 name = name.replace(/^(on)?/, 'on');
 var prev = elt[name];
 var tmp = '__tmp';
 elt[name] = function(e) {
   if (!e) e = window.event;
   var result;
   if (!atEnd) {
     elt[tmp] = handler; result = elt[tmp](e); elt[tmp] = null; // delete() does not work in IE 5.0 (???!!!)
     if (result === false) return result;
   }
   if (prev) {
     elt[tmp] = prev; result = elt[tmp](e); elt[tmp] = null;
   }
   if (atEnd && result !== false) {
     elt[tmp] = handler; result = elt[tmp](e); elt[tmp] = null;
   }
   return result;
 }
 return handler;
}

// Mista View Image
// Dmitriev Sergey aka sergeante
// sergeante


document.write("<script src='http://code.jquery.com/jquery-latest.js'></script>");
$(function(){
   $('a[href$="jpg"]').each(function(){
     $(this).append('<br><img src='+$(this).attr('href')+'>');
   });
});
6 Defender aka LINN
 
21.11.12
08:38
Велосипед не мой, все копирайты соблюдены и все такое
7 milan
 
21.11.12
08:40
в мистоклиенте для ондроеда есть просмотр ответов на ответ

Не надо
8 K-5
 
21.11.12
08:41
(6) Это нужно добавить в персональный скрипт?
9 Defender aka LINN
 
21.11.12
08:45
(8) Да
10 K-5
 
21.11.12
08:46
(9) А дальше уважаемый что делать?
11 K-5
 
21.11.12
08:46
+(10) вставил перезагрузил.никаких изменение не вижу(((
12 Defender aka LINN
 
21.11.12
08:47
(11) Мышью наведи на число в скобках
13 Прохожий
 
21.11.12
08:47
(5) Этож несколько расходных накладных кода...
14 Defender aka LINN
 
21.11.12
08:49
(13) см (6) :)
15 expertus
 
21.11.12
08:50
(5) ух ты, пасиб!
16 K-5
 
21.11.12
08:51
(12) Спасибо

Типо этого, но чтоб по разным веткам можно было. Это просто показывает содержание ссылки.

А это например приходишь вечером и смотришь кто тебе в каких ветках чего написал
17 Повелитель
 
21.11.12
08:56
Спасибо, прикольно ))
18 Admin_Net_1C
 
21.11.12
09:09
(5) спасибо, нужная вещь )
19 kosts
 
21.11.12
09:09
Отдельной панелью не вижу смысла, а всплывающим окошечком было бы супер, как в приведенном скрипте.
Хочется, что бы из коробки работало (не люблю делать настройки). Развивать сайт нужно.

Иногда хочется посмотреть, что написано по ссылке, но не хочется никуда переходить, и терять текущее положение...

Надо
20 al_zzz
 
21.11.12
09:11
(6) Куда добавить-то? Объясните на пальцах для тех, кто в танке, плиз
21 Скользящий
 
21.11.12
09:15
(20) В личной карточке есть ява скрипт добавить раздел.
22 K-5
 
21.11.12
09:16
(20) См (8) и (12)
23 kosts
 
21.11.12
09:25
+ к (19) Не помешало бы видеть и ответы на последующий ответ (серые ссылки находящиеся справа) в скрипте это не реализовано.
24 y88
 
21.11.12
09:29
(23) в последней версии есть
http://www.forum.mista.ru/users_js/47478.js
25 kosts
 
21.11.12
09:32
(24) Хорошо, но такие вещи хочется "из коробки"...
26 kosts
 
21.11.12
09:34
(24) Рекурсивно показывать, не планируется?
27 y88
 
21.11.12
09:42
(26) не так это просто :)
28 rphosts
 
21.11.12
17:20
почитал... погуглил... ничего не понял, куда втыкать-то если Monobook.js нету!

и самое главное, что получится в итоге? Типа как ветки в ГоломДеде(GoldEd если кто не понял)?
29 kotletka
 
21.11.12
17:22
При разрешении 1920х1080 в опере голосовалка наезжает на поля *сообщение
30 rphosts
 
21.11.12
17:27
(29) только опера и это весь бонус?
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший