Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > О форуме и сайтах клуба
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2018, 00:57   #71
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от Alar Посмотреть сообщение
а что как-то сбоку - не айс.
Там не сбоку, а под ником по центру.


Цитата:
Сообщение от Alar Посмотреть сообщение
Что если справа от ника, просто сделать стрелочку =>, кому нужно тот поймёт
ИМХО, это менее понятно... Даже не знаю, не уверен по поводу такого подхода...
Вадим Мошев вне форума Ответить с цитированием
Старый 06.06.2018, 01:12   #72
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

если нужна понятность, то нужно писать, обратиться по нику алигн - лефт, не по центру. и делать пере направление в быстрый ответ со вставкой никак как сейчас сделано
Alar вне форума Ответить с цитированием
Старый 06.06.2018, 09:34   #73
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Вставка сложная какая-то.
Можно так, и заодно скрол:
Код:
    function scrollIntoMiddle(element) {
        var elementRect = element.getBoundingClientRect();
        var absoluteElementTop = elementRect.top + window.pageYOffset;
        var height = elementRect.height ? elementRect.height : 100;
        var middle = absoluteElementTop - (window.innerHeight / 2) + height / 2;
        window.scrollTo(0, middle);
    }

    function appendText(text) {
        if (vB_Editor[QR_EditorID].get_editor_contents().length > 0) {
            text = '\n' + text;
        }
        vB_Editor[QR_EditorID].insert_text(text);
        vB_Editor[QR_EditorID].collapse_selection_end();

        scrollIntoMiddle(vB_Editor[QR_EditorID].textobj);
}
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 06.06.2018, 15:11   #74
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Вставка сложная какая-то.
Изначально эта функция (insertAtCaret) была найдена BDA. Я просто её взял и использовал.

Потом мне нужна была прокрутка к текстовому полю. Я изучал твой код, который вставляет цитаты, но так и не смог найти того места, который выполняет прокрутку.

Спасибо за код, который ты сейчас предоставил.
Есть правда два момента:
1. Вот эту строку
Код:
text = '\n' + text;
уберу, пожалуй. Она вставляет пустую строку, если курсор находится не на первой строке в текстовом поле.
2. Может, функция scrollIntoMiddle не нужна вообще? Ведь фокусировка ( .focus() ) на текстовом поле даёт тот же вроде бы результат? Как считаешь?


Цитата:
Сообщение от Alar Посмотреть сообщение
если нужна понятность, то нужно писать, обратиться по нику алигн - лефт, не по центру. и делать пере направление в быстрый ответ со вставкой никак как сейчас сделано
Да, пожалуй, так и сделаю. Так красивее будет выглядеть.

Последний раз редактировалось Вадим Мошев; 06.06.2018 в 21:00.
Вадим Мошев вне форума Ответить с цитированием
Старый 06.06.2018, 15:13   #75
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Скрол вроде есть по умолчанию при такой вставке, но будет внизу экрана, а не в центре.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 06.06.2018, 15:16   #76
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Скрол вроде есть по умолчанию при такой вставке
Через фокусировку на текстовом поле ты имеешь в виду?

Я проверял, у меня вроде по центру шло.

Обновил скрипт обращения к пользователю по нику. Надпись "[Ник]" заменена надписью "[Обратиться по нику]", изменён цвет на тёмно-серый, а также убрано выравнивание по центру

Последний раз редактировалось Вадим Мошев; 02.09.2018 в 15:20.
Вадим Мошев вне форума Ответить с цитированием
Старый 25.11.2018, 01:24   #77
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Отправка сообщений по Ctrl+Enter.
Работает во всех textarea, которые изначально на странице (быстрый ответ, расширенная форма ответа/правки, ...), и в быстрой правке.

Установить

Код:
// ==UserScript==
// @name         ProgrammersForumHotkey
// @namespace    http://programmersforum.ru/
// @version      0.3
// @description  allows to submit posts with Ctrl+Enter
// @author       Alex P
// @include      *programmersforum.ru/*
// @grant        none
// @downloadURL  https://github.com/AlexP11223/ProgForumRuUserscripts/raw/master/pf_hotkey.user.js
// ==/UserScript==

(function () {
    'use strict';

    function ctrlEnterPressed(keyEcent) {
        return (keyEcent.keyCode === 10 || keyEcent.keyCode === 13) && keyEcent.ctrlKey;
    }

    function isQuickEdit(textarea) {
        return textarea.attr('id').indexOf('_QE_') > 0;
    }

    const textAreaKeyHandler = function (e) {
        if (ctrlEnterPressed(e)) {
            const textarea = $(this);

            if (isQuickEdit(textarea)) {
                textarea.closest('table').find('input[id$="_save"]').click();
            } else {
                textarea.closest('form').submit();
            }

            textarea.blur();
        }
    };

    $('textarea').keydown(textAreaKeyHandler);

    if (typeof MutationObserver !== 'undefined') {
        const posts = $('#posts');
        if (posts.length) {
            new MutationObserver(function (mutations) {
                mutations.forEach(function (mutation) {
                    if (mutation.addedNodes) {
                        $(mutation.addedNodes).find('textarea').keydown(textAreaKeyHandler);
                    }
                });
            }).observe(posts[0], {childList: true, subtree: true});
        }
    }
})();
Добавил Ctrl+Enter в быстрой правке.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Вадим Мошев; 18.12.2018 в 21:54.
Alex11223 вне форума Ответить с цитированием
Старый 28.07.2019, 13:32   #78
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Неактуально

Восстанавливает console.log зачем-то удаленный скриптом вбуллетина (vbulletin_global.js)

Там, кстати, странное условие какое-то. Оно ж по идее не выполнится если в браузере стоит Firebug (по крайней мере на момент написания вбуллетина, сейчас Firebug не особо нужен и я хз создает ли он вообще переменную с таким именем).
Как будто они наоборот пытались создать заглушку чтобы код не падал при вызове console.log если его нет (для каких-то очень древних браузеров?). Но какое им было дело до фаербага непонятно.
Цитата:
Сообщение от vbulletin_global.js
Код:
if (!window.console || !console.firebug) {
    window.console = {};
    var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
    for (var i = 0; i < names.length; ++i) {
        window.console[names[i]] = function() {}
    }
}

Установить


В TamperMonkey можно указать, чтобы он запускался до других юзерскриптов:

Restore Console - Mozilla Firefox 2019-07-28 13.15.19.png

Код:
// ==UserScript==
// @name         Restore Console
// @namespace    programmersforum.ru
// @version      1.0
// @description  Restores console.log deleted by some vBulletin script
// @author       Alex P
// @include      *programmersforum.ru/*
// @grant        none
// @downloadURL  https://raw.githubusercontent.com/AlexP11223/ProgForumRuUserscripts/master/pf_restore_console.user.js
// ==/UserScript==

(function () {
    'use strict';

    const iframe = document.createElement('iframe');
    iframe.style.display = 'none';
    document.body.appendChild(iframe);
    window.console = iframe.contentWindow.console;
})();
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 12.11.2019 в 00:15.
Alex11223 вне форума Ответить с цитированием
Старый 30.07.2019, 12:29   #79
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Убирает огромное лого, сообщения о контактах, рекламе и т.п. из шапки страницы. Многим старожилам они бесполезны и только занимают пол экрана.

Установить


Код:
// ==UserScript==
// @name         ProgrammersForum Hide logo, etc.
// @namespace    programmersforum.ru
// @version      1.5
// @description  hides the huge logo and other useless stuff
// @author       Alex P
// @include      *programmersforum.ru/*
// @grant        none
// @run-at       document-start
// @downloadURL  https://github.com/AlexP11223/ProgForumRuUserscripts/raw/master/pf_declutter.user.js
// ==/UserScript==

(function() {
    'use strict';

    function addStyle(css) {
        const styleSheet = document.createElement("style");
        styleSheet.type = "text/css";
        styleSheet.className = 'declutter';
        styleSheet.innerHTML = css;
        document.head.appendChild(styleSheet);
    }

    addStyle(`img[src="images/1070/misc/logo.gif"],
                   #header_right_cell,
                   div.page > div > b,
                   div.page > div > b + br,
                   div.page > div > b + br + br,
                   div.page > div > center,
                   div.page > div > center + br
        { display: none; }`);

    document.addEventListener("DOMContentLoaded", () => {
        $('img[src="images/1070/misc/logo.gif"]')
            .closest('table')
            .remove();

        const emailRequestBlock = $('a[href^="register.php?do=requestemail"]')
            .parent();
        emailRequestBlock
            .nextAll(':lt(2)')
            .remove();
        emailRequestBlock.remove();

        const buyAdBlock = $('center:contains(alarforum@yandex.ru)');
        buyAdBlock
            .next('br')
            .remove();
        buyAdBlock.remove();

        $('style.declutter').remove();
    });
})();
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 06.11.2019 в 16:15.
Alex11223 вне форума Ответить с цитированием
Старый 12.11.2019, 00:12   #80
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Восстанавливает console.log зачем-то удаленный скриптом вбуллетина (vbulletin_global.js)
Я думаю, этот скрипт больше не нужен, раз всё восстановлено?
Вадим Мошев вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
скрипты для imacros synthex JavaScript, Ajax 0 21.03.2014 17:35
нужно для форума сделать картинку размер 1000х150 {шапка форума} vit111 Фриланс 5 02.03.2014 11:25
Полезные компоненты для Delphi Стертор Компоненты Delphi 13 26.07.2013 17:23
Полезные вещи для новичков... из С++ Chris D Общие вопросы C/C++ 3 09.09.2010 20:34
скрипты для opera Cardinal_ Помощь студентам 0 04.06.2009 13:22