UserJS или обустроим форум сами?! - страница 4

 

в общем нашол я скрипт Отображающий смайлики в текстах

почемуто форум стал отображать только рисунки загруженные в // https://c.mql4.com/forum/2012/08/

поэтому отображаются пока только те что выше мессагой

я их в 2 ряда покажу - с подчёркиванием и без (без, с вкл скриптом будут только рисунками а знаки их не покажутся...)


:)_ ;)_ :-p_ :-|_ :D_ :(_ ^_^_ :*_


:) ;) :-p :-| :D :( ^_^ :* - пока только такие будут отображаться

вот сам скрипт:

// ==UserScript==
// @name smileys
// @namespace vkontakte
// @include https://forum.mql4.com/*
// @version 1.1

(function() {

if (window.location.hostname.match(/forum.mql4.com/)) {   

var map = [
  ['biggrinf1y',       /:D|:\)\)+|=\)\)+/gi],
  ['biggrinf1y',       /\)\)\)+/gi],
  ['smiley1o',     /:\)+|:-\)+|=\)+|:-\]|:\]|=\]/gi],
  ['winkt1k',       /;\)+|;-\)+/gi],
  ['tonguem1w',    /:-[pр]|:[pр]|:-[PР]|:[PР]/gi],
  ['melloww1b',      /:-\||:\||=\|/gi],
  ['sadv1x',        /:\(+|:-\(+|=\(+|:-\[|:\[|=\[/gi],
  ['blush2h1v',       /^_^/gi],
  ['kiss2i1o',       /[:;]-\*|[:;]\*/gi]
];

// https://c.mql4.com/forum/2012/08/

map = [
  ['biggrinf1y',    /:D|:\)\)+|=\)\)+/gi],
  ['biggrinf1y',    /\)\)\)+/gi],
  ['smiley1o',     /:\)+|:-\)+|=\)+|:-\]|:\]|=\]/gi],
  ['winkt1k',       /;\)+|;-\)+/gi],
  ['tonguem1w',     /:-[pр]|:[pр]|:-[PР]|:[PР]/gi],
  ['melloww1b',     /:-\||:\||=\|/gi],
  ['sadv1x',        /:\(+|:-\(+|=\(+|:-\[|:\[|=\[/gi],
  ['blush2h1v',     /\^_\^/gi],
  ['kiss2i1o',      /[:;]-\*|[:;]\*/gi]
]

//var substRegex = /([\u0410-\u042f\u0430-\u044f]\s*)([.,?!\)]+)/gi;

function replacer (m, m1, m2) {
  //if (Math.random() > 0.5) {
//  return m1 + pickRandomWord() + m2;
//  } else return m;
} 

function xform(s) { 
  //return s.replace(substRegex, replacer); 
  s = s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;")
  for (var i = 0; i < map.length; i++) 
  {
  
    s = s.replace(map[i][1], ' <img ' +
               'style="margin-bottom:-0.3em;"  ' +
               'src="https://c.mql4.com/forum/2012/08/' + 
               map[i][0] +'.gif" alt="" />')
                                        
  }
  return s;
} 

function smilize_node(text_node, p) {
  var s = text_node.data;
  
  var parent = p;
  if (!p) parent = text_node.parentNode;
  
  if (s.match(/\.write/)) {
    //alert(s);
    return;
  }
  
  try {
    // we need this 'cos node is text node.
    //var parent = text_node.parentNode;
    var new_node = document.createElement("span");
    var new_content = xform(s);
    if (new_content != s) {
      new_node.innerHTML = new_content;
      parent.replaceChild(new_node, text_node);
    }
  }catch(e) {    
    //alert(e);
  }
}

// replace in body text 
if (document.evaluate) { 
  //with XPath support
  var textnodes = document.evaluate( "//body//text()", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); 
  for (var i = 0; i < textnodes.snapshotLength; i++) { 
     node = textnodes.snapshotItem(i); 
     //node.data = xform(node.data);
     smilize_node(node, null);
  }
} else {
  // no XPath -- do recursive
  function processNode(node, parent) {
      // is this a text node?
      if (node.nodeType == 3) {
          //node.data = xform(node.data);
          smilize_node(node, parent);
      } else  if (node.nodeType == 1) {
        var i;                   
        for (i = 0; i < node.childNodes.length; i++) {
            processNode(node.childNodes[i], node);
        }
    }
  }
  processNode(document.body, document.body);
}

} // if (window.location.hostname.match(...))

})();

 

был ещё скрипт добавляющий в линейку редактора

"кнопочку" с табличкой смайлов - но он на php ещё не разобрался как его в монкей скрипт перевести :-) возможно и получится добавить табличку...

 

Работает :) четко.

Оказываеться XPath можно юзать, а я вчера CSS селекторы осваивал. Кидай скрипт, если не получиться прикрутить табличку. Сам вечерком повожусь с новой версией игнор листа, как Zhunko посоветовал (с кнопочками добавления).

 
GaryKa:

Работает :) четко.

Оказываеться XPath можно юзать, а я вчера CSS селекторы осваивал. Кидай скрипт, если не получиться прикрутить табличку. Сам вечерком повожусь с новой версией игнор листа, как Zhunko посоветовал (с кнопочками добавления).

Супер! Не забудь проверку на повтор ника сделать.

Aleksander:

в общем нашол я скрипт Отображающий смайлики в текстах

почемуто форум стал отображать только рисунки загруженные в // https://c.mql4.com/forum/2012/08/

Интересный скрипт. Нужный. Но смайлы видны будут только у пользователя, который поставил этот скрипт. Неправильно это как-то.

Надо сделать так, чтобы прикреплялась картинка GIF вместо символов. Вот это было бы классно.

Жаль времени мало. Интересно повозиться с этим.


 
В курсе, что в Опере есть полноценный редактор и отладчик HTML и JS?
 

анти спамер :-)

идейка простая - но со скриптами не знаком - посему помогите доделать немного

---

возле каждого ника появится кнопочка Спам - при нажатии на которую БЫ - открывалась новая страничка по ссылке https://www.mql5.com/ru/forum/120169/page999

там БЫ в текстовое поле вносилась строчка -

Модераторы - подозрение на спам - https://www.mql5.com/ru/forum/120169/page999 - с указанием странички и Номера спам сообщения, возможно что автоматом БЫ нажималась кнопка [Добавить комментарий]

методом тыка :-) я кнопочку возле каждого ника заделал - осталось начинку добавить БЫ - сам пока не очень в этом разбираюсь = на скрипты второй день смотрю....

// ==UserScript==
// @name           spamagent1
// @namespace      pr
// @include https://forum.mql4.com/*
// ==/UserScript==

(function() {

function pressAnyKey() {
  alert("Нажата Кнопка")
// тут запомнить Адрес странички и Номер поста 
// - создать новую страницу - перейти по адресу https://forum.mql4.com/ru/25583/page999
// создать Сообщение - Отметка о Спаме

}
//
    var arr=document.getElementsByTagName("div")
    i=0
    while(arr[i] ){
       if(arr[i].className=="private_messages"){
         name=arr[i].innerHTML
         name=name.substring(0)
arr[i].innerHTML="" + name + "  <p><form> <input type=button name=anykey value='SPAM' onClick='pressAnyKey()'</form></p> "
       }
       i++
    }

})();
 

вот скрин с кнопками - как бы выглядело :-) заодно смайлики видно что отображаются


 
mql4.spamReport - сообщить о спаме (сохранять в utf-8, иначе будут кракозяблы вместо русских букв)
(function()
{
    var spam_topic_id=25583, // id топика "СПАМ, СПАМЕРЫ и их ПОСОБНИКИ..."
        spam_post_uri='/ru/edit',
        spam_report=function(a){
            var u=a.getAttribute('href'),
                c=prompt('СОБЩЕНИЕ О СПАМЕ:\n\n'+u);
            if(c!==null){
                var s='<a href="'+u+'" target="_blank">'+u+'</a><br>'+c,
                    d='parent_id='+spam_topic_id+'&content='+encodeURIComponent(s)+'&a[savecomment]=1';
                with(new XMLHttpRequest()){
                    open('POST', spam_post_uri, true);
                    setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
                    setRequestHeader('Content-length', d.length);
                    send(d);
                }
            }
        };
    document.addEventListener('DOMContentLoaded', function(e)
    {
        var d = document.querySelectorAll('td>div>a[name]');
        if(!d.length) return;
        var l = document.querySelectorAll('a[href*="subscribe"]');
        l = l.length ? l[0].href.replace('?a[subscribe]', '') : '';
        for(var i=0; i<d.length; i++)
        {
            var a = document.createElement('a');
            a.setAttribute('href', l + '#' + d[i].name);
            a.setAttribute('onclick', 'return false');
            a.addEventListener('click', function(e){ spam_report(e.target); }, false);
            a.innerHTML = 'это спам';
            with(d[i].parentNode.parentNode.querySelectorAll('a[href="#edit_form"]')[0].parentNode)
            {
                appendChild(document.createTextNode(' | '));
                appendChild(a);
            }
        }
    }
    , false)
})()
// ==UserScript==
// @version 12081602
// @name mql4.spamReport
// @author DVZ aka Majestic
// @copyright https://www.mql5.com/en/users/majestic
// @namespace https://forum.mql4.com/ru/36815
// @include https://forum.mql4.com/*
// ==/UserScript==

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

после подтверждения, прямая ссылка на сообщение и комментарий добавляется в нужную ветку

как-то так
 
мажестик - у тебя на скрине возле кнопки Видео - вроде уже есть кнопка со смайликами? - покажи скриптик егонный? :-) смайлов добавить....
 

гммм... в мозиле вроде НЕ работает спамРепорт - кнопочка рядом с ответом появилась - но не русском - видимо кодировка не та - и при нажатии окошко отправки НЕ появляется

только в Адресной строке появляется ссылка на эту страницу с № сообщения :-(

Причина обращения: