Имя: Пароль:
IT
Жизнь форума
Скрипт для мисты
0 Вафель
 
01.06.17
10:52
Хочу поделиться с сообществом своим скриптом для мисты.
Данный скрипт основан на скрипте от y88 (tooltip add-on for forum.mista.ru).
Основная проблема данного скрипта была в том, что он не поддерживал вложенные тултипы. И нельзя было делать и сохранять настройки.
Ну и конечно же фатальный недостаток (то бишь для изучения js)

Возможности скрипта можно увидеть по настройкам
http://ximage.ru/index.php?id=1496240587

Вложенные тултипы
http://ximage.ru/index.php?id=1496238956

Скрипт можно использовать как персональный скрипт мисты (через личные настройки), так и через tapermonkey (что бывает удобно, когда у тебя куча твинков)
https://github.com/a-sitnikov/mista.js

Для подключения скрипта, напрямую через git
(function(){
    $.getScript('https://cdn.jsdelivr.net/gh/a-sitnikov/mista.js@latest/user.js');
})();
1 Адинэснег
 
01.06.17
10:53
прощайте пароли )
2 Вафель
 
01.06.17
10:59
Можно скрипт отдельно скачать. и провести анализ безопасности
3 Ц_У
 
01.06.17
11:31
(0) я добавил в настройках и.. ничего не произошло, нет красивостей как в картинках
4 Ёпрст
 
01.06.17
11:35
(3) Ctrl+F5
5 Ц_У
 
01.06.17
11:41
(4) о как.. работает
6 Храбрый
 
01.06.17
11:43
(0) Просто в настройки записать:

(function(){
    $.getScript('https://cdn.jsdelivr.net/gh/a-sitnikov/mista.js@latest/user.js');
})();

?
7 Вафель
 
01.06.17
11:44
(6) да
8 Лефмихалыч
 
01.06.17
11:44
(0) а как в настройки скрипта попасть?
9 Лефмихалыч
 
01.06.17
11:46
а, нашел <li class="nav-item"><a href="#"
10 Вафель
 
01.06.17
11:46
(8) После загрузки скрипта должен появиться пункт меню
http://ximage.ru/index.php?id=1496306786
11 Лефмихалыч
 
01.06.17
11:47
Спасибо, прикольная штука
12 Храбрый
 
01.06.17
11:47
(7) Так, а потом  если по адресу ('https://cdn.jsdelivr.net/gh/a-sitnikov/mista.js@latest/user.js') ты код поменяешь?

Это же опасно.

Можно куда-то статчино вбить?
13 Лефмихалыч
 
01.06.17
11:48
(12) Ctrl+C Ctrl+V
14 Вафель
 
01.06.17
11:48
(12) Можно конкретный релиз указать, ну или сам файл скачать
15 Вафель
 
01.06.17
11:49
16 Вафель
 
01.06.17
11:50
В ближайших планах для ютюб видео подтягивать заголовок
17 Храбрый
 
01.06.17
11:51
(13) Попробовал. Не работает.


(function(){
    $.getScript(// ==UserScript==
// @name         mista.ru
// @namespace    http://tampermonkey.net/
// @version      0.5.1
// @description  try to take over the world!
// @author       You
// match        *.mista.ru/*
// @grant        none
// @require      https://code.jquery.com/jquery-3.2.1.min.js
// @require      https://code.jquery.com/ui/1.12.1/jquery-ui.min.js
// @downloadURL  https://gist.githubusercontent.com/a-sitnikov/bc1886671da01b43f43a10748e1e92dc/raw/
// @updateURL    https://gist.githubusercontent.com/a-sitnikov/bc1886671da01b43f43a10748e1e92dc/raw/
// ==/UserScript==

var tooltipsOrder = [];
var tooltipsMap = {};
var tooltipDelay = 0;
var maxImgWidth = 0;

var defaultOptions = {
    "show-tooltips":         "true",
    "tooltip-delay":         "500",
    "replace-catalog-to-is": "true",
    "mark-author":           "true",
    "author-color":          "#ffd784",
    "show-userpics":         "onMouseOver",
    "show-imgs":             "onMouseOver",
    "max-img-width":         "500"
};

function tooltipHtml(msgId) {
    return '<div id=tooltip' + msgId+ ' msg-id=' + msgId + ' class="gensmall" style="position:absolute; background:#FFFFE1; border:1px solid #000000; width:630px; font-weight:normal;">'+
        '<div id=tooltip-author' + msgId+ ' msg-id=' + msgId + '  style="cursor: move; background:white; padding:4px; border-bottom:1px solid silver"><span><b>Подождите...</b></span></div>' +
        '<div id=tooltip-text' + msgId+ ' msg-id=' + msgId + '  style="padding:4px"><span>Идет ajax загрузка.<br/>Это может занять некоторое время.</span></div>' +
        '<span id=tooltip-close' + msgId + ' msg-id=' + msgId + '  style="POSITION: absolute; RIGHT: 6px; TOP: 3px; cursor:hand; cursor:pointer">'+
            '<b> x </b>' +
        '</span>' +
    '</div>';
}

function removeTooltip() {
    // remove all subsequent tooltips
    var msgId = $(this).attr("msg-id");
    var ind = tooltipsOrder.indexOf(msgId);
    for (var i = ind; i < tooltipsOrder.length; i++) {
        var tempMsgId = tooltipsOrder[i];
        tooltipsMap[tempMsgId].remove();
        tooltipsMap[tempMsgId] = null;
    }
    tooltipsOrder.splice(ind);
}

function removeAllTooltips() {
    // remove all subsequent tooltips
    for (var i = 0; i < tooltipsOrder.length; i++) {
        var tempMsgId = tooltipsOrder[i];
        tooltipsMap[tempMsgId].remove();
        tooltipsMap[tempMsgId] = null;
    }
    tooltipsOrder = [];
}

function getMsgId(elem){
    var url = $(elem).attr("href");
    try {
        return url.match(/#[0-9]+/)[0].substring(1);
    } catch(error) {
    }
    return null;
}

function setMsgText(msgId, elemAuthor, elemText){
    var author = $('#tduser' + msgId).html();
    var text = $('#' + msgId).html();
    if (text) {
        elemAuthor.html(author);
        elemText.html(text);
        addTooltips(elemText);
    } else {
        setMsgTextAjax(msgId, elemAuthor, elemText);
    }

}

function utimeToDate(utime) {
    var a = new Date(utime*1000);

    var year  = a.getYear();
    var month = a.getMonth();
    var date  = a.getDate();
    var hours = a.getHours();
    var minutes = "0" + a.getMinutes();

    return date + '.' + month + '.' + year + ' - ' + hours + ':' + minutes.substr(-2);
}

function normalizeJSON(text) {
    text = text.replace(/\\r\\/g, "");
    text = text.replace(/\\>/g, ">");
    text = text.replace(/\\</g, "<");
    text = text.replace(/\\\//g, "/");
    text = text.replace(/\\"/g, "'");
    text = text.replace(/\\&/g, '&');
    return text;
}

function setMsgTextAjax(msgId, elemAuthor, elemText){
    var currentUrl = window.location.href;
    var topicId = currentUrl.match(/id=([0-9]+)/)[1];
    var url = "ajax_topic.php?id=" + topicId + "&from=" + msgId + "&to=" + (parseInt(msgId) + 1);

    $.ajax({
        url: url
    }).done(function(data) {

        data = normalizeJSON(data);
        var dataObj = null;
        try {
            dataObj = JSON.parse(data);
        } catch(e) {
            console.log(data);
            return;
        }

        if (!dataObj) {
            elemText.text('Сообщение не найдено');
            return;
        }
        var msgArr = dataObj.filter(function(a){ return a.n === msgId; });
        if (msgArr.length === 1) {
            var msg = msgArr[0];
            var text = msg.text.replace(/\(([0-9]+)\)/g, "<a href='#$1'>($1)</a>");
            var user = "<b>" + msg.user + "</b><br>"+
                "<span class='message-info'>" + msg.n + " - " + utimeToDate(msg.utime) + "</span>";
            elemText.html(text);
            elemAuthor.html(user);
            addTooltips(elemText);
        }
    });
}

function createTooltip(link, msgId) {
    if ($('#tooltip' + msgId).length > 0) return;
    $(tooltipHtml(msgId)).appendTo('#body');
    var loc = $(link).offset();
    var left = loc.left;
    if ($(window).width() - loc.left < 100) {
        left = left - 630;
    }

    var elem = $("#tooltip" + msgId)
        .draggable()
        .css({
            "top": loc.top + "px",
            "left": left + "px"
            //"z-index": "999"
         })
        .click(removeTooltip);

    $("#tooltip-close" + msgId).click(removeTooltip);
    tooltipsMap[msgId] = elem;
    tooltipsOrder.push(msgId);

    return elem;
}

function showTooltip(link){
    var msgId = getMsgId(link);
    createTooltip(link, msgId);

    setMsgText(msgId, $("#tooltip-author" + msgId), $("#tooltip-text" + msgId));
}

function addTooltips(parentElem) {

    if (!parentElem) parentElem = $(document);

    parentElem.find('a[href^="#"], a[href^="topic.php?id="]')
       .filter(function(index){
           var href = $(this).attr("href");
           return href.search(/#[0-9]+/) !== -1;
        })
       .each(function(){
            var timer;
            var link = this;
            $(this).hover(function(){
                timer = setTimeout(function(){
                    showTooltip(link);
                }, +tooltipDelay);
            },
            function() {
                // on mouse out, cancel the timer
                clearTimeout(timer);
            });
       });
}

function saveOption(name, value) {
    window.localStorage.setItem(name, String(value));
}

function readOption(name) {
    var value = window.localStorage.getItem(name);
    if (!value) value = defaultOptions[name];
    return value;
}

function openMistaScriptOptions(){
    var html =
        '<div id="mista-script-overlay" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: #000; z-index:1000; opacity: 0.85"; pointer-events: none;></div>' +
        '<div id="mista-script" style="position:fixed; left: 25%; top: 25%; background:#FFFFE1; border:1px solid #000000; width:630px; font-weight:normal; z-index: 1001">' +
            '<div style="cursor: move; background:white; padding:4px; border-bottom:1px solid silver">' +
                 '<b>Настройки Mista.Script</b>' +
             '</div>' +
            '<div style="padding:5px">' +
                '<div style="margin-bottom:5px">' +
                    '<input id="showTooltips" type="checkbox" name="showTooltips" value="showTooltips">' +
                    '<label for="showTooltips">Показывать тултипы, задержка</label>' +
                    '<input id="tooltipDelay" name="tooltipDelay" style="margin-left:5px; width: 50px" value="tooltipDelay"> мс' +
                '</div>' +
                '<div style="margin-bottom:5px">' +
                    '<input id="replaceCatalogToIS" type="checkbox" name="replaceCatalogToIS" value="replaceCatalogToIS">' +
                    '<label for="replaceCatalogToIS">Обратно заменять catalog.mista.ru на infostart.ru</label>' +
                '</div>' +
                '<div style="margin-bottom:5px">' +
                    '<input id="markAuthor" type="checkbox" name="markAuthor" value="markAuthor">' +
                    '<label for="markAuthor">Подсвечивать автора цветом</label>' +
                    '<input id="authorColor" type="color" name="authorColor" style="margin-left:5px; width: 100px" value="authorColor">' +
                '</div>' +
                '<div style="margin-bottom:5px">' +
                    '<label for="showUserpics">Показывать фото пользователей</label><br>' +
                    '<input type="radio" name="showUserpics" value="showAlways" checked> Показывать всегда' +
                    '<input type="radio" name="showUserpics" value="onMouseOver"> При наведении' +
                    '<input type="radio" name="showUserpics" value="no"> Не показывать' +
                '</div>' +
                '<div style="margin-bottom:5px">' +
                    '<label for="showImgs">Показывать картинки</label><br>' +
                    '<input type="radio" name="showImgs" value="showAlways" checked> Показывать всегда' +
                    '<input type="radio" name="showImgs" value="onMouseOver"> При наведении' +
                    '<input type="radio" name="showImgs" value="no"> Не показывать' +
                '</div>' +
                '<div style="margin-bottom:5px">' +
                    '<label for="maxImgWidth">Макс. ширина картинки</label>' +
                    '<input id="maxImgWidth" name="maxImgWidth" style="margin-left:5px; width: 50px;" value="maxImgWidth"> px' +
                '</div>' +
                '<div>После применения настроек страницу нужно перезагрузить</div>' +
                '<div>' +
                    '<button id="applyOptions" class="sendbutton" style="margin: 5px">OK</button>' +
                    '<button id="cancelOptions" class="sendbutton" style="margin: 5px; float: left;">Отмена</button>' +
                '</div>' +
            '</div>' +
         '</div>';

    $(html).appendTo('#body');
    $('#mista-script').draggable();

    $('body').css({"overflow-y": "hidden"});

    if (readOption("show-tooltips") === 'true')         $('#showTooltips').attr("checked", "checked");
    $("#tooltipDelay").val(readOption("tooltip-delay"));

    if (readOption("replace-catalog-to-is") === 'true') $('#replaceCatalogToIS').attr("checked", "checked");
    if (readOption("mark-author") === 'true')           $('#markAuthor').attr("checked", "checked");
    $("#authorColor").val(readOption("author-color"));
    $('input:radio[name=showUserpics]').val([readOption("show-userpics")]);
    $('input:radio[name=showImgs]').val([readOption("show-imgs")]);
    $("#maxImgWidth").val(readOption("max-img-width"));

    $('#applyOptions').click(function(){

        saveOption("show-tooltips",         $('#showTooltips').is(':checked'));
        saveOption("tooltip-delay",         $('#tooltipDelay').val());
        saveOption("replace-catalog-to-is", $('#replaceCatalogToIS').is(':checked'));
        saveOption("mark-author",           $('#markAuthor').is(':checked'));
        saveOption("author-color",          $('#authorColor').val());
        saveOption("show-userpics",         $('input:radio[name=showUserpics]:checked').val());
        saveOption("show-imgs",             $('input:radio[name=showImgs]:checked').val());
        saveOption("max-img-width",         $('#maxImgWidth').val());

        $('#mista-script').remove();
        $('#mista-script-overlay').remove();
        $('body').css({"overflow-y": "auto"});
    });

    $('#cancelOptions').click(function(){
        $('#mista-script').remove();
        $('#mista-script-overlay').remove();
        $('body').css({"overflow-y": "auto"});
    });
}

function showImgTooltip(link, url, headerText) {
    var timer;
    $(link).hover(function(){
        timer = setTimeout(function() {
            createTooltip(link, '_p');
            $('#tooltip-author_p').html('<b>' + headerText + '</b>');
            $('#tooltip-text_p').html('<img src="' + url + '">');
            $('#tooltip-text_p img').on('load', function(){
                if ($(this).height() === 1) {
                    $('#tooltip-text_p').text('Картинка отсутствует');
                } else {
                    $('#tooltip_p').width($(this).width() + 8);
                }
            });
        }, +tooltipDelay);
    },
    function() {
        // on mouse out, cancel the timer
        clearTimeout(timer);
    });
}

function run(){
    tooltipDelay = readOption('tooltip-delay');
    maxImgWidth = readOption('max-img-width');

    if (readOption('show-tooltips') === 'true') {
        addTooltips();
        $('body').click(removeAllTooltips);
    }

    if (readOption("replace-catalog-to-is") === 'true') {
        // change catalog.mista.ru to infostart
        $('a:contains("catalog.mista.ru")').each(function(){
            var url  = $(this).attr("href");
            var text = $(this).text();
            var newUrl   = url.replace(/catalog.mista/i, "infostart");
            var newTrext = text.replace(/catalog.mista/i, "infostart");
            $(this).attr("href", newUrl);
            $(this).text(newTrext);
        });
    }

    if (readOption("mark-author") === 'true') {
        // a - if logged in, span - otherwise
        var user = $("span, a",  "#tduser0").text();
        if (user) {
            var authorColor = readOption("author-color");
            $('a:contains("' + user + '")', "td[id^=tduser]").css({"background": authorColor});
            $('span:contains("' + user + '")', "td[id^=tduser]").css({"background": authorColor});
        }
    }

    var showUserpics = readOption('show-userpics');
    if (showUserpics === 'showAlways') {

        var userPostMap = {};
        $('a[href*="users.php?id"]', "td[id^=tduser]").each(function(){
            var userId = $(this).attr('data-user_id');
            var url = "/users_photo/mid/" + userId + ".jpg";
            var msgId = +$(this).parent().attr('id').replace('tduser', '');

            if (userPostMap[msgId - 1] !== userId) {
                var img = $('<img src="' + url + '" style="max-width: 100px;"><br>').insertBefore($(this));
                img.on('load', function(){
                    // Delete empty image to remove empty space
                    if ($(this).height() === 1) {
                        img.remove();
                    }
                });
            }
            userPostMap[msgId] = userId;
        });

    } else if (showUserpics === 'onMouseOver') {

        $('a[href*="users.php?id"]', "td[id^=tduser]").each(function(){

            var userId = $(this).attr('data-user_id');
            var user = $(this).text();
            var url = "/users_photo/mid/" + userId + ".jpg";

            showImgTooltip(this, url, user);

        });
    }

    var showImgs = readOption('show-imgs');
    var regFilter = /.+\.(jpg|jpeg|png)$/;
    if (showImgs === 'showAlways'){

        $('a').filter(function(i){
            return $(this).attr('href').search(regFilter) !== -1;
        }).each(function(a){

            var url = $(this).attr("href");
            $(this).text("");
            $('<img src="' + url + '" style="max-width: ' + maxImgWidth + 'px"/>').appendTo($(this));

        });

    } else if (showImgs === 'onMouseOver') {

        $('a').filter(function(i){
            return $(this).attr('href').search(regFilter) !== -1;
        }).each(function(a){
            //console.log(a);
            var link = $('<span class="agh" style="cursor: pointer">[?]</span>').insertAfter($(this));
            showImgTooltip(link, $(this).attr("href"), "Картинка");

        });
    }

    $('<li class="nav-item"><a href="#">Настройки Mista.Script</a></li>')
        .appendTo("ul.nav-bar")
        .click(openMistaScriptOptions);
}

(function() {
    if (typeof $.ui == 'undefined') {
        $.getScript('https://code.jquery.com/ui/1.12.1/jquery-ui.min.js', run);
    } else {
        run();
    }
})();
);
})();
18 Вафель
 
01.06.17
11:52
Исходный текст нужно вставлять полностью, без творческого осмысления
19 Ц_У
 
01.06.17
11:52
(0) а можно добавить спойлеры для таких как (17) что бы соообщение было свернуто?
20 Вафель
 
01.06.17
11:55
Товарищи админы, сверните, пожалуйста (17)
21 Fish
 
01.06.17
11:55
(20) Свернул
22 vis_tmp
 
01.06.17
11:56
(10)А что в том меню?
23 Вафель
 
01.06.17
11:57
(22) в (0) есть настройки
24 Fish
 
01.06.17
11:58
(22) Судя по названию, настройки скрипта :))
25 Храбрый
 
01.06.17
12:01
(18) Вставил. Ничего не происходит.

Запись экрана:
https://yadi.sk/i/ZSradaI93JioVm

Что я делаю не так?
26 Храбрый
 
01.06.17
12:01
(25) Ctrl+F5 нажимал
27 Fish
 
01.06.17
12:02
(26) +100. Что-то не работает
28 Ц_У
 
01.06.17
12:03
(25) разминку сделал?
29 Храбрый
 
01.06.17
12:03
(28) Не, программа для глаз стоит уже года 3. Разминку делал наверно первый месяц только :(
30 Лефмихалыч
 
01.06.17
12:05
(27) (25) проблема на вашей стороне
https://i.imgur.com/40sMOZT.png
31 Ц_У
 
01.06.17
12:07
(30) а где мои флажки у пользователей?
32 Ц_У
 
01.06.17
12:08
(0) хочу подсветку себя любимого :)
33 Ц_У
 
01.06.17
12:12
(0) не пугай так, я думал банан выхватил :)
34 Вафель
 
01.06.17
12:12
После изменения скрипта нужно жать ctrl+f5
Иногда несколько раз
35 Храбрый
 
01.06.17
12:44
(34) Спасибо ctrl+f5  несколько раз помогло.
Работает!
36 Храбрый
 
01.06.17
12:46
Тест отображения картинки.
http://i96.fastpic.ru/big/2017/0601/0a/c5e8153c75b9bb48f052c46bc83bfb0a.jpg
37 Храбрый
 
01.06.17
12:48
38 Храбрый
 
01.06.17
12:49
(0) А сможешь с яндекс-диска картинки отображать тоже?
39 Вафель
 
01.06.17
12:49
(37) Картинки определяются по расширению: jpg, jpeg, png
40 Храбрый
 
01.06.17
12:49
(0) Пример тут (37)
42 Храбрый
 
01.06.17
12:50
(39) Жаль, а то надоели сторонние хостинги картинок.
43 Вафель
 
01.06.17
12:51
с яндекс диском все сложнее. Они не отдают картинку просто так
44 Вафель
 
01.06.17
12:51
Но теоретически можно конечно
45 Ц_У
 
01.06.17
12:54
(36) тест показа картинки во вложенном сообщении :)
46 Ц_У
 
01.06.17
12:57
(0) вот тут картинки нет
Работа с таблицей значением
47 Fish
 
01.06.17
12:59
(46) Потому что правильная ссылка будет такой: http://i12.pixs.ru/storage/6/0/9/filejpeg_6709329_26377609.jpg
48 Fish
 
01.06.17
12:59
+(47) Кстати, с масштабированием картинок косяк.
49 Asmody
 
01.06.17
13:00
(38) Яндекс.Диск не отдает картинки просто так.
50 Вафель
 
01.06.17
13:01
(49) и страничку пропарсить тоже нельзя ибо крос-запрос
51 y88
 
01.06.17
13:07
(0) молодец! Давай зачетку :)
52 azt-yur
 
01.06.17
13:07
При попытке закрыть вложенный тултип по крестику закрывает все открытые, а в общем мне нравится, спасибо.
53 Вафель
 
01.06.17
13:08
(52) По идее должен закрывать все нижеоткрытые.
54 Ц_У
 
01.06.17
13:09
(0) в (46) не показывает вложенную картинку
из хотелок, когда навожусь на ссылку на другую тему хочу видеть первое сообщение
55 Ц_У
 
01.06.17
13:10
(54) ошибся, в (45)
56 Храбрый
 
01.06.17
13:13
(0) Интересный момент до (49) до этого поста показывает вложения, после нет. F5 нажимаешь показывать начинает.

То есть если не обновлять страницу, все новые сообщение не показывают вложения постов. Стоил другой скрипт, там работало.
57 Вафель
 
01.06.17
13:13
Исправил ошибку с масштабированием
58 Вафель
 
01.06.17
13:14
(56) А можешь мне скрипт тот кинуть
59 Вафель
 
01.06.17
13:14
60 Храбрый
 
01.06.17
13:18
(58) Скинул
61 Ислам
 
01.06.17
13:18
(56) Дай мне свой скрипт который отображал картинки в новых сообщениях. А лучше сюда для всех выложи. Моей благодарности не будет предела
62 azt-yur
 
01.06.17
13:19
(53) у меня все закрывает, причем даже не важно куда щелкнешь, даже если в текст сообщения
63 Asmody
 
01.06.17
13:33
(56) У меня всё работает
64 1Снеговик
 
гуру
01.06.17
13:49
(0) нафига подсвечивать автора? А как подсвечивать себя самого? Обычно свои сообщения теряются.
65 1Снеговик
 
гуру
01.06.17
13:52
Все, нашел как свои сообщения подсветить в настройках)
66 Храбрый
 
01.06.17
13:56
(61)
// 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&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: "      "+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

         // <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::  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')+'>');
   });
});
67 Вафель
 
01.06.17
14:06
(66) Это же тот самый скрипт, который меня вдохновил
68 Вафель
 
01.06.17
14:48
Добавил подсветку себя и поддержку картинок с моего любимого ximage
69 Ц_У
 
01.06.17
17:20
(68) ну спасибо, ну красавчик
тест ютуба
https://www.youtube.com/watch?v=y5Mu05dqqaQ
70 Ц_У
 
01.06.17
17:22
(68) А можно префикс поставить например YTB: или целиком YOUTUBE: ?
71 Asmody
 
01.06.17
17:46
(68) Подсветка себя — штатная функция. В настройках закладка Сообщения темы
72 Asmody
 
01.06.17
17:56
А еще — при подгрузке новых сообщений кидается событие mista.load. Поймать его можно так: $('#table_messages').on('mista.load', 'tr', callBack)
73 Asmody
 
01.06.17
18:17
Инфа для оптимизации:
1) все линки пользователей имеют касс registered-user
2) кроме /users_photo/mid/ есть еще /users-photo/thumb/, которые отресайзены 80x80px
74 Ислам
 
01.06.17
20:23
(66) Спасибо! Самый лучший скрипт из всех которые я видел
75 vis_tmp
 
01.06.17
20:29
(74)Скрипт (66) отличается от (0)?
76 Neg
 
01.06.17
20:50
(30) а почему у меня флажка не видно? как чтобы он появился?
77 oslokot
 
01.06.17
20:58
(76) Это доступно только модераторам
78 Волшебник
 
модератор
01.06.17
21:35
Что вам ещё нужно от разработчиков сервера?
79 Волшебник
 
модератор
01.06.17
21:37
Мы готовы отдать всё, кроме паролей.
80 Волшебник
 
модератор
01.06.17
21:39
Лучшие скрипты будут встраиваться в движок мисты.
81 Asmody
 
01.06.17
22:09
(78) ключи от квартиры,где деньги лежат
82 Asmody
 
01.06.17
22:11
миста совершенна! на телефоне/планшете от этих тултипов всё равно толку нет
83 Ислам
 
02.06.17
09:14
(75) Это разные скрипты.
в (66) более чистый.
84 Вафель
 
02.06.17
10:29
(83) там не используется jquery  и очень зря. Столько лишнего кода.
85 Вафель
 
02.06.17
11:17
Тест
86 Feunoir
 
02.06.17
11:41
Хороший скрипт, спасибо автору. Только я когда его копировал немного поторопился и перезаписал свои строки из старого скрипта. Придётся восстанавливать.
87 Волшебник
 
модератор
02.06.17
11:42
плохой скрипт
88 Asmody
 
02.06.17
11:49
Вот этот скрипт надо творчески переработать: http://www.forum.mista.ru/js/topic.js
89 arsik
 
гуру
02.06.17
13:34
(0) Попробовал. Вернул старый.
90 Вафель
 
02.06.17
16:07
Доработал скрипт. Теперь подгружаемые сообщения нормально обрабатываются. Также для все тултипов отрабатывают все правила.
Ну и внутри конечно провел большой рефакторинг (теперь настройки рисуются динамически).
Ну и самих настроек немного увеличилось
http://ximage.ru/index.php?id=1496408751.

Брать там же
91 Ц_У
 
02.06.17
16:32
(90) перестало работать, подключение как в (0), показывает только картинку пользователя при наведении, ктрл+ф5 жал, ктл+шифт+р жал, много раз, не помогло.
92 Ц_У
 
02.06.17
16:33
(90) но... работает на последнем моем сообщении, перегружаю страницу - снова не работает
93 Вафель
 
02.06.17
16:47
jsDeliver кэширует скрипты. и сейчас у него не самая последняя версия
$.getScript('https://cdn.jsdelivr.net/gh/a-sitnikov/[email protected]/user.js');
94 Ц_У
 
02.06.17
16:51
(93) все еще не работает, может номер версии другой?
95 Вафель
 
02.06.17
17:27
Выложи скриншот настроек. А также если не сложно открой тулзы по F12 и посмотри есть ли какие ошибки в консоли
96 Ц_У
 
02.06.17
17:37
97 Вафель
 
02.06.17
21:53
Исправил ошибку, версия 1.0.2
$.getScript('https://cdn.jsdelivr.net/gh/a-sitnikov/[email protected]/user.js');
98 Ислам
 
03.06.17
08:30
(84) >> там не используется jquery  и очень зря. Столько быстрого кода.

Я не люблю и стараюсь не использовать глючный и распухший jquery, поэтому для меня скрипт (66) гораздо лучше.
99 Cyberhawk
 
03.06.17
09:32
Зачет, Вафель, благо дарю тебе!
Фичреквест: рядом с ником добавить кнопочку, по нажатию на которую в текстовое поле (туда, где сейчас каретка, или в конец текста) будет вставляться ник с собакой впереди (для жирности)
100 Ислам
 
03.06.17
09:49
(99) Это легко. Только подскажи, как делать жирным ник если он состоит из двух слов?
101 Cyberhawk
 
03.06.17
10:20
(100) Для этого достаточно вставлять не "собака + ник", а ссылку на профиль (http://...).
Тест: Маленький Мук
102 Asmody
 
03.06.17
11:04
(100) для этого ник надо взять в фигурные скобки. И перед скобками посадить собаку
103 Asmody
 
03.06.17
11:07
(99) это фигня! Вот сделать автоподбор Ника в тексте после ввода собаки - вот это фича!
104 Ислам
 
03.06.17
11:11
(102) Так {Маленький Мук} или так Маленький Мук?
105 Ислам
 
03.06.17
11:12
О, супер! Спасибо, дружище
106 Храбрый
 
05.06.17
06:52
(0) Скрипт перестал отображать картинки, при наведении или нажатии на знак вопроса.
107 Храбрый
 
05.06.17
06:53
(106) А нет все работает.
Спасибо.
108 Ц_У
 
05.06.17
10:44
(97) после обновления страницы не обрабатывает ссылки на ютуб, остальное вроде работате, спасибо.
109 Вафель
 
05.06.17
10:47
(103) А список всех ников можно получить7
110 Вафель
 
05.06.17
10:47
(106) Изменил немножко, нужно наводить на ссылку. А вопрос чисто для информирования, что ссылка обработалась
111 Asmody
 
05.06.17
10:51
(109) Я могу прикрутить такую "ручку". Только скажите, как лучше ваш его отдать. Зареганых ников сейчас более 114 тыс.
112 trdm
 
05.06.17
10:53
(111) По списку активных.
113 Asmody
 
05.06.17
10:53
(112) У нас нет деления на "активных" и "пассивных"
114 Fish
 
05.06.17
10:54
(112) Так вот же 300 самых активных: http://www.forum.mista.ru/rating.php
115 Вафель
 
05.06.17
10:55
(111) Может тогда по фильтру?
users.php?name=ваф
116 Вафель
 
05.06.17
11:42
117 Asmody
 
05.06.17
11:45
Вот такая ручка http://forum-mista.pro/api/users.php?name=ваф
118 Fish
 
05.06.17
11:49
(116) А что такое выдаёт твой скрипт при наведении на ник в сообщении? "Сообщение не найдено". Что это означает?
119 Вафель
 
05.06.17
11:55
(119) Это ошибка, остатки от функции, которая показывает текст 0 поста других веток. Исправлю в ближайшем релизе
120 Вафель
 
05.06.17
15:26
Добавил автокомплит имен
http://ximage.ru/index.php?id=1496665478
Версия 1.1.0

оказывается столько имен левых. нужно как-то топовых вначале выдавать, а потом всех остальных
121 Вафель
 
05.06.17
15:29
+ пожелание отдавать не всех пользователей, а по параметру, допустим 20
122 Ц_У
 
05.06.17
16:03
Вафель для кириллицы автокомплит не работает?
123 Вафель
 
05.06.17
16:04
(122) да
124 Asmody
 
05.06.17
16:23
(121) Добавил параметр count. По-умолчанию 20.
125 Asmody
 
05.06.17
16:26
ну и до кучи, параметр from. По-умолчанию 0.
126 ildary
 
05.06.17
17:21
Научите пожалуйста, как себе скрипт поставить, пробовал себе вписать:

(function(){
    $.getScript('https://cdn.jsdelivr.net/gh/a-sitnikov/mista.js@latest/user.js');
})();

не помогло.

Пробовал копипастить код из (66) - тишина. CTRL+F5 добросовестно нажал раз 5.
127 Вафель
 
05.06.17
17:27
(126) пункт настроек появился?
128 Ц_У
 
05.06.17
18:37
129 Cyberhawk
 
05.06.17
20:53
За кнопку, вставляющую ник, респект, только можно ее чуток побольше сделать? А то целиться неудобно (напрягает, что нажму на сам ник и все затрется, т.к. выполнится переход по гиперссылке).
А еще лучше опционально сделать расположение волшебной кнопки: нид ником, под ником, справа от ника, слева от ника, и подлиннее бы на пару символов хотя бы
130 Asmody
 
05.06.17
21:10
(129) так скопируй себе код и поправь! что за потреблядство? вы ж программисты, какие-никакие
131 Волшебник
 
модератор
05.06.17
22:13
(130) Зря ты их поддерживаешь. Они нас ограничивают.
132 Волшебник
 
модератор
05.06.17
22:15
Конкретно, Вафель вообще в бане по своим основным никам. Он просто выкачает инфу из базы мисты, соберёт пароли активных юзеров.
133 Волшебник
 
модератор
05.06.17
22:16
Просто предупреждаю, ввод логина и пароля на мисту перехватывается вашим личным java-скриптом.
134 Asmody
 
05.06.17
23:38
(131) Это ж клиентская часть. Пусть стараются.
Тем более, что прекратить это всё можно быстро и просто на нашей стороне.
135 Asmody
 
05.06.17
23:40
(133) В момент ввода логина/пароля пользовательский скрипт еще не загружен. Но вот куки с его помощью утащить можно, факт.
136 Ислам
 
06.06.17
14:53
просто не используйте $.getScript
Это же Вафель навязал такую схему, для каких-то его тайных нужд.
Странно что многие на это клюнули. Только подтвердили что 1С-ники - не программисты.
137 Cyberhawk
 
06.06.17
14:53
(136) Что плохого может случиться?
138 Feunoir
 
06.06.17
15:18
(137) "Куки утащит" (с) Asmody
139 vis_tmp
 
06.06.17
15:25
(136)А как использовать?
140 Вафель
 
06.06.17
15:38
(136) Наваял - ибо фичи прибавляются, ошибки правятся.
Можно и напрямую с гита брать
142 Вафель
 
06.06.17
15:44
(129) Добавил к кнопке возможность указания собственного стиля
http://ximage.ru/index.php?id=1496753016
Версия 1.1.5
143 Вафель
 
06.06.17
15:44
(141) acsent
И он кстати не в бане
145 Вафель
 
06.06.17
15:47
(144) Я им более 7 лет пользовался
147 Cyberhawk
 
06.06.17
15:58
(142) А откуда брать свежую версию? Мне по https://cdn.jsdelivr.net/gh/a-sitnikov/mista.js@latest/user.js возвращается 1.1.1
148 Вафель
 
06.06.17
15:59
(147) Бери с гита
149 Вафель
 
06.06.17
16:00
150 Вафель
 
06.06.17
16:00
На jsdeliver будет через 1-2 дня
151 Cyberhawk
 
06.06.17
16:06
(149) Чо-то не прокатывает.
Прописал вот так:
http://imagizer.imageshack.com/img922/2849/JkCTIa.jpg
152 Вафель
 
06.06.17
16:15
(151) нет-нет-нет. С гита нельзя так брать.
Либо оттуда копировать весь текст. Либо
https://cdn.jsdelivr.net/gh/a-sitnikov/[email protected]/user.js
153 Вафель
 
06.06.17
16:16
Но еще и миста чего-то там кэширует, так что не всегда сразу обновляется
154 GedKo
 
06.06.17
16:24
(153) при копировании текста и нажатии применить - скрипт на 142 строке отрезается :(
155 Cyberhawk
 
06.06.17
16:26
(152) Поставил font-size 200% (вместо 100%) и скрипт теперь вообще исчез из верхнего меню
156 Вафель
 
06.06.17
16:27
(155) нужно в кавычках
157 Вафель
 
06.06.17
16:27
{"font-size": "200%"}
158 Вафель
 
06.06.17
16:29
Должно стать так
159 Вафель
 
06.06.17
16:29
160 Cyberhawk
 
06.06.17
17:20
(157) Благодарю, заработало!
161 Asmody
 
07.06.17
10:03
(159) Я смотрю, у тебя там активно стрелочные функции используются. Оно же не всеми браузерами поддерживается.
162 Вафель
 
07.06.17
10:08
(161) 1 раз всего. Ну и вообще скрипт написан на ES6. так что нужно браузер обновлять )))
163 Asmody
 
07.06.17
11:51
(162) можно babel прикрутить
164 Ц_У
 
07.06.17
12:35
(163) и blackjack :D
165 Вафель
 
07.06.17
12:45
166 Вафель
 
07.06.17
17:29
167 Asmody
 
07.06.17
18:10
(166) У меня когда-то была такая фишка: в "плюсик" добавлялась форма отправки сообщения в ветку.
168 Ц_У
 
07.06.17
19:08
(166) при наведении на номер сообщения в колонке Re: а при наведении на тему можно что бы показывал первое сообщение, лучше отключаемым параметром, а то вдруг не понравится.
Спасибо
169 1Снеговик
 
гуру
08.06.17
09:09
Сегодня без предупреждения темы стали открываться в новом окне) Не сразу понял, что настройка такая появилась)
170 sFAQer
 
08.06.17
09:20
(166) А вот это: $.getScript('https://cdn.jsdelivr.net/gh/a-sitnikov/mista.js@latest/user.js');
171 sFAQer
 
08.06.17
09:21
+ (170) Более обновляться не будет? Чому там 1.0.2? если это латест...
172 Вафель
 
08.06.17
12:55
(171) Вроде как обновляется.
Сейчас там 1.2.1
173 sFAQer
 
09.06.17
09:27
(172) Ну я перехожу по ссылке, он показывает var mistaScriptVersion = '1.0.2';
174 iolxrfsf
 
10.06.17
16:20
Тултипы закрываются только кликом?
Планируется ли сделать автозакрытие тултипов при выводе курсора за пределы тултипа или соответствующей ссылки, как сделано на популярных имиджбордах?
175 Asmody
 
10.06.17
18:33
(174) допиши, это не сложно. потом пуллреквест пришли
176 oslokot
 
10.06.17
18:36
(0) Скажите, а чем отличается ваш скрипт от этого старинного скрипта, который я давно уже пользую: http://www.forum.mista.ru/users_js/47478.js
177 oslokot
 
10.06.17
18:37
(176) + в нем вроде все есть
178 mehfk
 
10.06.17
18:42
(176) Не осилил стартовый пост?
>> Данный скрипт основан на скрипте от y88 (tooltip add-on for forum.mista.ru).
>> Основная проблема данного скрипта была в том, что он не поддерживал вложенные тултипы. И нельзя было делать и сохранять настройки.
>> Ну и конечно же фатальный недостаток (то бишь для изучения js)"
179 oslokot
 
10.06.17
18:46
(178) а, значит это и есть скрипт от от y88. не знал
180 Ц_У
 
14.06.17
10:37
Вафель ошибку нашел, если ник длинный, на две строки то имя пользователя вставляется с пробелом
пример тут
Подписка на сопровождение.
НачинающийВосьмерочн
181 Вафель
 
14.06.17
10:39
(180) Ты имеешь ввиду пробел перед именем? Если так, то есть такая особенность компоненты автодополнения. Пока как победить не думал
182 Ц_У
 
14.06.17
11:22
(181) нет ник НачинающийВосьмерочн справа выглядит как две строки, при нажатии на стрелку добавления в чат вставляется как @{Начинающий Восьмерочн} пробел там или перенос строки я не знаю.
183 Ц_У
 
14.06.17
11:22
(182) справа - слева
184 Вафель
 
14.06.17
11:23
185 Вафель
 
14.06.17
11:25
(183) Реально с пробелом ник выводится
186 Ц_У
 
14.06.17
11:26
187 Вафель
 
14.06.17
11:28
188 Asmody
 
14.06.17
11:30
(185) Это двиг пытается длинные ники разбивать. Чтобы они не вылезали из колонки.
189 Вафель
 
14.06.17
11:38
Придется тогда ссылку на users.php вставлять для ников с пробелами
190 Вафель
 
14.06.17
11:40
(188) Может лучше использовать
word-break: break-all;
191 Asmody
 
14.06.17
11:41
(190) Не лучше. Пробовали.
192 Вафель
 
14.06.17
11:48
(191) А можно тогда реальное имя в атрибут запихать?
193 Asmody
 
14.06.17
11:57
(192) готово. data-user_name
194 Вафель
 
15.06.17
10:18
Версия 1.4.0
Поправил ошибку с пробелами в именах
Новая функцию: Скрывать тултип при уходе мыши
Новая функция: Чинить поломанные ссылки
пример ссылок
http://курсы-по-1с.рф/articles/режим-разделения-итогов
195 aka AMIGO
 
15.06.17
11:34
(0) Скопипастил код себе в перс-скрипт.
У меня получилось вот что:
196 Asmody
 
15.06.17
11:52
(195) Редактор персонального скрипта не поддерживает версию ES6.
197 Asmody
 
15.06.17
11:53
198 Maniac
 
15.06.17
11:54
Вы когда на https перейдете.
199 aka AMIGO
 
15.06.17
11:57
(197) Спасибо!
200 aka AMIGO
 
15.06.17
12:03
+199 Копипаст из (197) дает в Настройках 830 строк кода скрипта.
После нажатия "Применить" остается 151 строка!
и 2 квадрата с крестами в конце. Это ошибка..



Да что-ж такое! :(
201 aka AMIGO
 
15.06.17
12:06
пропала фигурная скобка.. вот она:
202 aka AMIGO
 
15.06.17
12:11
Проверяю скрипт в NotePad++, вроде всё нормально со скобками..
203 Ц_У
 
15.06.17
18:42
тест @{жирная_строка}
204 Ц_У
 
15.06.17
18:43
(203) а как жирьненьким сделать?
205 Asmody
 
15.06.17
20:14
(204) вот так
206 oslokot
 
15.06.17
21:53
(205)  читер!
207 Asmody
 
15.06.17
22:14
(206) root
208 Ц_У
 
16.06.17
10:13
(205) аплодирую, стоя :) научи!
209 Fish
 
16.06.17
10:15
(208) Эта возможность доступна не всем. :)
210 Вафель
 
16.06.17
10:16
(207) Это же тема для монетизации:
Писать жирненьким 100р в месяц.
вставлять картинки: 150р в месяц
211 Asmody
 
16.06.17
10:22
(210) Родина не продается
212 aka AMIGO
 
19.06.17
14:50
Вафель, давай тут побеседуем немного, а там -ОФФтопик получился, я сейчас потру посты
213 aka AMIGO
 
19.06.17
14:51
В общем, я его и использую, результат - не работает
214 aka AMIGO
 
19.06.17
14:52
Вот у тебя в (0) написано:

(function(){
    $.getScript('https://cdn.jsdelivr.net/gh/a-sitnikov/mista.js@latest/user.js');
})();

не вижу результата ну никак.. всё равно, как если-б поле настроийки скрипта было пустым.. :(
215 Вафель
 
19.06.17
14:55
ctrl+f5 много раз. + перезапуск браузера.
Как то там кэшируется непонятно
216 Вафель
 
19.06.17
14:56
скрипт заработал - если ты увидешь в меню новый пункт
217 aka AMIGO
 
19.06.17
14:56
10 раз хватит?
И еще почищу ФФ.. минуточку..
218 aka AMIGO
 
19.06.17
14:56
(216) это я понял!
добавки-то и нет..
219 aka AMIGO
 
19.06.17
15:01
Удалил журналы, куки, кэш, перезагрузил ФФ, перелогинился, 20 раз Ctrl+F5 - увы...
220 Fish
 
19.06.17
15:10
(219) ФФ гад памятливый. Я, когда скрипт удалил совсем, ещё где-то день видел его результат, несмотря на перезапуски, Ctrl+F5 и прочее. Потом перестал :)
221 aka AMIGO
 
19.06.17
15:11
(220) Ну, ладно тогда :)
Подожду до завтра
222 Лефмихалыч
 
19.06.17
15:20
(214) а ты чего ожидаешь-то? Чуда опять, поди, ждешь?
Кода скрипта у тебя и не будет, если ты этого ждешь. Код браузер получает по вот этой ссылке автоматически при загрузке страницы.
223 aka AMIGO
 
19.06.17
15:33
Чуда не ждал, но таки оно произошло!

Всё, больше не трогаю :)
На-До-Е-Ло :)
224 Cyberhawk
 
20.06.17
14:56
http://2.bp.blogspot.com/-I2gZxkEPt8o/VnwGuVPBkzI/AAAAAAAAHvk/TDiPZFeNY-o/s1600/%25D0%259E%25D0%25B1%25D0%25BC%25D0%25B5%25D0%25BD02.JPG

Почему такие прямые ссылки на картинку скрипт не "хавает"? С этим можно что-нибудь поделать?
225 Вафель
 
20.06.17
15:01
(224) Забыл поставить чтоб без учета регистра искал
226 Cyberhawk
 
20.06.17
15:05
(225) Ты про код или про настройки? Ну т.е. это ты забыл или это мне надо в настройках что-то поставить?
227 Вафель
 
20.06.17
15:20
Это у меня в коде.
Готово исправление
https://cdn.jsdelivr.net/gh/a-sitnikov/[email protected]/user.js
Ну или ждать когда само обновится
228 DmitriyDI
 
23.06.17
10:01
(function(){
    $.getScript('https://cdn.jsdelivr.net/gh/a-sitnikov/mista.js@latest/user.js');
})();

написано, у меня но не работает. а раньше работало, все нормально со скриптом?
229 Вафель
 
23.06.17
10:11
(228) посмотри какая версия. и какие ошибки по f12 в консоли
230 Cyberhawk
 
10.07.17
19:49
Багрепорт (наверное - может и фича =) по окошку, которое появляется при наведении на ник (с аватаркой пользователя, либо текстом "Картинка отсутствует").
Так вот:
1. Навести на любой ник и дождаться появления этого окошка
2. Никуда не нажимая мышкой, пролистать страницу вниз или вверх. Плавающее окошко остается там, где оно появилось, ну т.е. уходит за границы экрана.
3. Навести на какой-нибудь другой ник - информация об его аватарке появится в том же самом окошке, которое находится за границей экрана. А Я жду, чего это оно у меня перестало появляться ))
231 Cyberhawk
 
06.08.17
09:49
Фичреквест: при наведении на ники в строке под заголовком темы (кто присутствует в ветке) чтобы тоже работало всплывающее окошко.
232 Веселый собака
 
06.08.17
16:48
(78) Хочу видеть, почему иногда писать сообщения не дает.
Вот эту мелкую шавку хочу опознать, которая иногда шалит.
233 Злопчинский
 
06.08.17
16:50
(232) точно! Причём недавно стаоо
234 Cyberhawk
 
06.08.17
17:28
(233) Нет, так было всегда на моей памяти. Если сообщение не отправляется, то нажимаю F5 и тогда под полем ввода сообщения появлется красным текстом описание, почему не отправляется (анти-мат или бан, например)
235 Веселый собака
 
06.08.17
17:32
(234) не. это было бы слишком просто. ctrl+f5 и т.п.
Просто фиг отправишь.
236 Cyberhawk
 
06.08.17
17:51
(235) Покажи на видео где "писать сообщения не дает" // "фиг отправишь"
237 Cyberhawk
 
06.08.17
17:52
Описанное мною в (234) проявляется так: при нажатии на "Отправить" ничего не происходит, если после этого обновить страницу, то в обновленной странице уже пишется причина
238 Веселый собака
 
06.08.17
19:32
(236) А вопрос не к тебе.

Кому надо: посмотрите логи (если ведутся) моей попытки написать за посл 3 минуты.
239 Asmody
 
06.08.17
20:04
(238) А оно мне надо?
240 Ц_У
 
08.08.17
17:45
Вафель
запили черный лист, что бы не показывать сообщения.
241 Вафель
 
09.08.17
11:40
(231) Реализовано. Версия 1.5.6
242 Cyberhawk
 
11.08.17
07:04
(241) Заработало, благодарю! И заодно (230) исправилось.
243 Вафель
 
12.11.18
12:09
Исправил отображение кнопки "Код 1С", версия 1.9.3
244 Hans
 
12.11.18
12:46
не работают эти ваши скрипты. 2 раза копировал ставил - что то в конце со скобками.
245 Вафель
 
12.11.18
12:50
(244) полностью скрипт нельзя вставить, только ссылку
246 Cyberhawk
 
20.11.18
10:56
Фичреквест: чтобы в разделе "Темы с моим участием" номер последнего сообщени тоже подчеркивался и при наведении оно открывалось (и скроллом с колесиком листалось туда-сюда) по аналогии с главной страницей
247 Вафель
 
20.11.18
10:58
(246) Это невозмозжно, тк нет ссылки на номер поста, а только на абстрактный mylast
248 DTX 4th
 
20.11.18
11:00
У меня какой-то скрипт от Asmody:

var asmodify = new Asmodify();
asmodify.go();


Чем отличается от y88?
249 Вафель
 
20.11.18
11:01
(248) А что он умеет?
250 Cyberhawk
 
20.11.18
11:06
(247) А это что?
https://i.imgur.com/veiT018.png
251 Вафель
 
20.11.18
11:08
(250) хз о чем ты
252 Cyberhawk
 
20.11.18
11:16
(251) Зная ссылку на тему и номер сообщения можно получить ссылку на любое сообщение
253 DTX 4th
 
20.11.18
11:21
(249) Тултипы, аватарки
Написано "Mista.Script version 1.9.3"
254 Asmody
 
20.11.18
11:30
(246) Там всю страницу переписывать надо. Руки не доходят.
255 Asmody
 
20.11.18
11:30
(249) Аватарки рисует :)
256 Вафель
 
20.11.18
11:33
исправил. Версия 1.9.4
257 Вафель
 
20.11.18
11:33
(253) Но причем здесь y88 ?
258 DTX 4th
 
20.11.18
11:34
(255) А тултипы там откуда?

(257) Выглядит точь-в-точь как в (0)
259 Вафель
 
20.11.18
11:36
(258) за идею ему спасибо конечно
260 Asmody
 
20.11.18
11:57
(258) У меня не было тултипов.
261 odines
 
20.11.18
12:07
(0) Игнорировать следующих пользователей (имена через запятую)

а добавь еще "Читать только следующих пользователей"
262 Вафель
 
20.11.18
12:15
(261) это не имеет смысла
263 odines
 
20.11.18
12:19
(262) почему? хочу видеть в топике сообщения только 3 юзеров, если они не написали ничего - значит только первое сообщение вижу от тс...или нельзя так сделать?
264 odines
 
20.11.18
12:21
(263) + переключалку - "видеть всех"
265 Cyberhawk
 
22.11.18
14:22
(256) Что исправил?
266 Вафель
 
22.11.18
14:36
(265) про то что ты говорил. ссылки на странице
267 Вафель
 
22.11.18
14:36
(263) сделать можно что угодно )))
268 Cyberhawk
 
22.11.18
14:39
(266) У меня в настройках 1.9.4 отображается, а тултипы-ссылки у номера сообщений в разделе "Темы с моим участием" не появились. Это механизм скриптов мисты тупит?
269 Вафель
 
22.11.18
14:50
(268) переходи на тамперманки
270 Вафель
 
22.11.18
14:51
271 Cyberhawk
 
22.11.18
14:52
Что-то у тебя без подчеркивания
272 Вафель
 
22.11.18
14:53
(271) не люблю когда ссылки подчеркиваются
273 Cyberhawk
 
10.02.19
09:32
А чо через https://cdn.jsdelivr.net/gh/a-sitnikov/mista.js@latest/user.js версия 1.9.4 до сих пор? У меня поэтому новая и не встает ))
275 Вафель
 
13.02.19
11:57
(273) она и есть последняя
https://github.com/a-sitnikov/mista.js/blob/master/user.js
276 Вафель
 
14.02.19
12:21
Починил вывод тултипов на главной.
Добавил перенос колонке Re в начало
версия 1.9.5
277 ptiz
 
14.02.19
12:53
(276) У меня не работает "подсветка себя цветом".
278 Вафель
 
14.02.19
12:54
точно, не работает
279 Вафель
 
14.02.19
13:17
Исправил.
Релиз 1.9.6
280 arsik
 
гуру
14.02.19
13:25
(277) Так это уже встроено в основной движек.
281 ptiz
 
14.02.19
13:27
(280) Там сообщения целиком - это перебор :)
(279) Что-то не хочет.(удалял, добавлял заново)
Скрипт вставлен так:
(function(){
    $.getScript('https://cdn.jsdelivr.net/gh/a-sitnikov/mista.js@latest/user.js');
})();
282 Cyberhawk
 
14.02.19
19:21
А чо https://cdn.jsdelivr.net/gh/a-sitnikov/mista.js@latest/user.js версия 1.9.4? Оно не работает так больше в скрипте?
283 Ёпрст
 
14.02.19
19:31
тоже 1.9.4
хотя тока была другая версия с "Re" в настройках :(
284 Asmody
 
14.02.19
19:32
Предупреждаю: я буду курочить разметку топика без оглядки на ваши скрипты.
Если что сломается – я не виноват
285 Волшебник
 
14.02.19
19:35
(284)+1 И я тоже.
286 Cyberhawk
 
15.02.19
09:22
1.9.6, эх, а в разделе "Темы со мной" при наведении на номер поста так и не появляется тултип
287 Вафель
 
15.02.19
10:11
версия на цдне обновляется не так сразу. где-то за неделю
288 Вафель
 
15.02.19
10:12
(286) в темах со мной разметка не совпадает с основной. Подождем когда асмодей выровняет
289 Cyberhawk
 
15.02.19
10:54
(288) Так оно и раньше там не работало. Однако ты показывал скриншот, где у тебя оно работало. Мистика )
290 Вафель
 
15.02.19
10:58
(289) я поправлял, там просто к body через id обращался, а можно было и без.
а сейчас нельзя. Колонка Re в "темах со мной" никак не выделется (раньше просто 2 бралась, а теперь так нельзя)
291 Cyberhawk
 
16.02.19
09:13
Сегодня проверил - в темах со мной теперь тултип работает, благодарю!
292 Kigo_Kigo
 
16.02.19
13:01
(290) Могли бы определится и постоянно выкладывать скрипты в одно место и под одним именем, что бы каждый раз его не прописывать и они обновлялись автоматически?
а то было https://github.com/a-sitnikov/mista.js/blob/master/user.js
стало
'https://cdn.jsdelivr.net/gh/a-sitnikov/mista.js@latest/user.js'
и так еще несколько раз прыгали
293 Asmody
 
16.02.19
13:18
(292) А может вам еще попу подтирать?
294 ДенисЧ
 
16.02.19
14:24
(293) А что, так можно было?
295 Cyberhawk
 
16.02.19
14:46
(292) Так оно и так, и так работает же
296 Cyberhawk
 
17.02.19
15:00
Фич-реквест: чтобы в "Темах со мной" показывался ник последнего ответившего для прошлодневных тем, а не только для тем сегодняшнего дня
297 vis_tmp
 
17.02.19
15:16
Скажите, что означает подчерк цифры в колонке "Re" ?
298 pablo_escobar
 
04.03.19
12:32
Вафель, подскажите пожалуйста. Поменял в вашем скрипте цвет фона тултипа. Ссылки в нем синего цвета, их теперь плохо видно. Хочу поменять цвет ссылок, это class="interlink" и class="extralink". Потыркался в разных местах, но так как в вебе не силен, не получается. Подскажите как переназначить эти классы для тултипа.
299 Вафель
 
04.03.19
12:55
$('.interlink').css({'color':'white'})
300 pablo_escobar
 
04.03.19
13:15
(299) А куда вставить нужно? Вставил в function createTooltip, в тултипе цвет изменился, но он также изменился и на самой странице мисты. А  я хотел чтобы только в тултипе был другой.
301 Вафель
 
04.03.19
13:26
$('.tooltip-text >.interlink').css({'color':'white'})
302 pablo_escobar
 
04.03.19
13:33
(301) все равно, после открытия тултипа, на странице ссылки тоже меняют цвет.
303 pablo_escobar
 
04.03.19
13:38
(302) хотя нет, это я прошлый вариант не удалил. $('.tooltip-text >.interlink').css({'color':'white'}) не меняет цвет.
304 pablo_escobar
 
04.03.19
13:39
$('.tooltip-text >.interlink').css({'color':'white'}) срабатывает если открыть 2 тултипа одновременно
305 Вафель
 
04.03.19
14:58
без знака больше нужно
$('.tooltip-text .extralink').css({'color':'white'})
306 pablo_escobar
 
04.03.19
15:46
(305) Меняет цвет у предыдущего тултипа, если его не закрывать. Я вставил в function createTooltip в самом конце  
$('.tooltip-text .interlink').css({'color':'#ff00b8'});
    return elem;
правильно?
307 trdm
 
04.03.19
17:15
Квесчион у меня назрел.
Каким инструментом на веб страничке вытащить из страницы http://joxi.ru/Vrw5c18nlA HTML текст ?
Что-бы добраться до
<meta property="og:image" content="http://dl4.joxi.net/drive/2019/03/04/0022/3790/1482446/46/bf135295d3.jpg">;

Аякс использовать?
308 trdm
 
04.03.19
17:16
+(307) само собой не для мисты.
309 Вафель
 
04.03.19
17:16
(307) так ты уже нашел имедж, зачем тебе еще раз?
310 Вафель
 
04.03.19
17:17
на жс такого не сделаешь, только если cors разрешен, а он обычно запрещен
311 trdm
 
04.03.19
17:22
(309) Да я только в HTML заглянул.
Мне пишут что-нить типа:
"Вот тут не работает URLКартинкиНаjoxiRu http://joxi.ru/Vrw5c18nlA";
а Сама картинка: http://dl4.joxi.net/drive/2019/03/04/0022/3790/1482446/46/bf135295d3.jpg

Само собой, по ссылкам лазить влом, хочу сразу на странице невидимый img прихреначить, что-бы она под текстом разворачивалась.
312 Вафель
 
04.03.19
17:23
(311) в чем задача то состоит?
313 trdm
 
04.03.19
17:25
(312) раскрывать картинки прямо на странице просмотра в багтрекере.
https://prnt.sc/mt28ml
314 Вафель
 
04.03.19
17:26
(313) только через сервер-прокладку
315 trdm
 
04.03.19
17:34
(314) свой сервак подойдет?
316 Вафель
 
04.03.19
17:38
(315) конечно
317 trdm
 
04.03.19
17:39
т.е. я должен аяксануть на свой сервер с передачей ему юрла страницы, а вызываемый скрипт должен содрать и распарсить ответ и передать мне валидный юрл картинки.
А содрать сервак может например курлом.
Так?
318 Вафель
 
04.03.19
17:40
типо того
319 trdm
 
04.03.19
17:40
Все, понял. Мерси!
320 Asmody
 
04.03.19
17:44
(307) document.querySelector("meta[property='og:image']").getAttribute("content")
321 trdm
 
04.03.19
17:47
(320) не, страничка на которой имажи хочу видеть принадлежит другому домену (http://bugtrack.enterprise.ru/view.php?id=5521), нежели  http://joxi.ru.