Добавление функции в JS - Дизайн и модификация Invision Power Board

Перейти к содержимому

 

Правила раздела

Здесь обсуждаются вопросы настройки и администрирования форумов IPB 2.x.
Пожалуйста, не оффтопьте, если зашли сюда случайно, и обратите внимание на соседние разделы.
Установка, настройка и обслуживание форумов IPB 3.x.
Оформление форумов, включая верстку скинов.
Размещение рекламы на форумах.
SEO оптимизация форума.
Техническая поддержка наших скинов и модов.

СвернутьПрикрепленные теги

Теги не найдены

Страница 1 из 1
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в этой теме

Добавление функции в JS

#1 Пользователь не на сайте   terehovskiy ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 20
  • Регистрация: 30-Декабрь 14
  • Репутация: 0
  • IPB version:2.3.x
 

Отправлено 01 Январь 2015 - 05:07

Пожалуйста, помогите добавить функцию, для моего bb кода [youtube]. Есть функция в которой я посмотрел реализацию всплывающего окна, при использовании bb кода [url] в визуальном редакторе. Мне нужно переделать эту функцию под мой код. Ниже сама функция. Не понятные которые части функции, их я отметил комментарием. В моем случае юзеры будут вставлять часть ссылки после "=" с youtube, например aF_GwG4v-sw .

    this.___IPB_FUNCTIONS = function() {};
    this.createlink = function(e) {
        var _text = this.get_selection();
        // _text = _text.replace(/\n|\r|<br \/>/g, '');
        //  if (_text.match(/(<a href|\[url)/ig)) {
            this.format_text(e, "unlink", false);
        } else {
            var _url = prompt(ipb_global_lang['editor_enter_youtube'],
                '');
            if (!_url || _url == null || _url == '') {
                return false;
            }
            _text = _text ? _text : prompt(ipb_global_lang[
                'editor_enter_title'], ipb_global_lang[
                'visit_my_website']);
            if (!_text || _text == null) {
                return false;
            }
            this.wrap_tags('url', _url, _text);
        }
    };

0

#2 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 246
  • Регистрация: 20-Март 09
  • Репутация: 2 062
  • IPB version:3.1.x
 

Отправлено 02 Январь 2015 - 01:45

Через всплывающие окно можно вставлять и прямую ссылку, и парсить из нее нужный параметр.

var match = _text.match(/(?:\?|&)v=(.+?)(&|$)/);
if(match){
    _text = match[1];
}
this.wrap_tags('youtube', false, _text);

0

#3 Пользователь не на сайте   terehovskiy ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 20
  • Регистрация: 30-Декабрь 14
  • Репутация: 0
  • IPB version:2.3.x
 

Отправлено 03 Январь 2015 - 06:37

Простите за мою тупость, но я так и не понял как в итоге должна выглядеть функция.
0

#4 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 246
  • Регистрация: 20-Март 09
  • Репутация: 2 062
  • IPB version:3.1.x
 

Отправлено 03 Январь 2015 - 17:41

Да все также как у вас.
this.wrap_tags - вставляет отформатированный ббкод в редактор. В вашем случае this.wrap_tags('youtube', false, _text);
this.createlink - это функция которая отработает при нажатии кнопки. Если кнопка в редакторе имеет ид "fast-reply_cmd_ipb_youtube", то имя функции будет this.ipb_youtube.
Если хотите дополнительно обработать прямые ссылки ютуба, можете юзать код который я привел выше.

В итоге должно получится нечто похожее на это:

this.ipb_youtube = function(e) {
	var _text = this.get_selection();
	_text = _text ? _text : prompt('Enter youtube url or video id', '');
	if (!_text || _text == null) {
		return false;
	}
	var match = _text.match(/(?:\?|&)v=(.+?)(&|$)/);
	if(match){
		_text = match[1];
	}
	this.wrap_tags('youtube', false, _text);
};

Можно будет вставлять как полною ссылку на ютуб, так и только ид видео.

В \jscripts\ips_text_editor.js (для полного редактора)
Добавить ниже

this.ipb_code=function(){this.wrap_tags_lite('[code]','[/code]',0)};

В \jscripts\ips_text_editor_lite.js (для быстрого редактора)
Добавить ниже

this.ipb_code=function(){var _text=this.get_selection();this.wrap_tags('code',false,_text);};

1

#5 Пользователь не на сайте   terehovskiy ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 20
  • Регистрация: 30-Декабрь 14
  • Репутация: 0
  • IPB version:2.3.x
 

Отправлено 04 Январь 2015 - 00:23

К сожалению функция в итоге не работает, в \jscripts\ips_text_editor.js и \jscripts\ips_text_editor_lite.js она у меня уже добавлена как youtube. Тут "_text = _text ? _text : prompt('Enter youtube url or video id', '');" изменил на "_text = _text ? _text : prompt(ipb_global_lang['editor_enter_youtube'], '');", т.к. в ланг кеше у меня проставлен тег как для url "editor_enter_youtube", но это также ни к чему, не привело. Кеш обновлял.
0

#6 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 246
  • Регистрация: 20-Март 09
  • Репутация: 2 062
  • IPB version:3.1.x
 

Отправлено 04 Январь 2015 - 00:29

Функция рабочая, я ее тестировал на локалхосте. Еще раз внимательно все проверьте, особенно с редактированием файлов, там легко ошибиться. Также обратите внимание где я говорил про имени функции в зависимости от ид кнопки, возможно она просто не срабатывает.
0

#7 Пользователь не на сайте   terehovskiy ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 20
  • Регистрация: 30-Декабрь 14
  • Репутация: 0
  • IPB version:2.3.x
 

Отправлено 04 Январь 2015 - 01:21

Не работает. Кеш обновлял. Как и раньше, просто вставляется bb код в окно редактора.

	this.ipb_youtube = function(e) {
    var _text = this.get_selection();
    _text = _text ? _text : prompt('Enter youtube url or video id', '');
    if (!_text || _text == null) {
        return false;
    }
    var match = _text.match(/(?:\?|&)v=(.+?)(&|$)/);
    if(match){
        _text = match[1];
    }
    this.wrap_tags('youtube', false, _text);
};


    this.ipb_youtube = function() {
        this.wrap_tags_lite('[youtube]', '[/youtube]', 0)
    };


this.ipb_youtube=function(){var _text=this.get_selection();this.wrap_tags('youtube',false,_text);};

Сообщение изменено: terehovskiy (04 Январь 2015 - 01:25)

0

#8 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 246
  • Регистрация: 20-Март 09
  • Репутация: 2 062
  • IPB version:3.1.x
 

Отправлено 04 Январь 2015 - 03:19

Переправеряйте, учитывая все нюансы о которых я говорил выше. Дебажте что у вас там просто "вставляется". Не советую плодить много функций, еще больше в них запутаетесь.
0

Сообщить об этой теме:


Страница 1 из 1
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в этой теме

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2016 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна