Перейти к содержимому
Открыть в приложении

Удобный способ просмотра. Узнать больше.

Дизайн и модификация Invision Community

Полноэкранное приложение на главном экране с push-уведомлениями, медалями и многим другим.

Чтобы установить это приложение на iOS и iPadOS
  1. Нажмите иконку «Поделиться» в Safari
  2. Прокрутите меню и нажмите На экран «Домой».
  3. Нажмите Добавить в правом верхнем углу.
Чтобы установить это приложение на Android
  1. Нажмите меню из трёх точек (⋮) в правом верхнем углу браузера.
  2. Нажмите Добавить на главный экран или Установить приложение.
  3. Подтвердите, нажав Установить.
Русский язык для Invision Community 5

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

Пожалуйста, помогите добавить функцию, для моего bb кода . Есть функция в которой я посмотрел реализацию всплывающего окна, при использовании bb кода в визуальном редакторе. Мне нужно переделать эту функцию под мой код. Ниже сама функция. Не понятные которые части функции, их я отметил комментарием. В моем случае юзеры будут вставлять часть ссылки после "=" с 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);
       }
   };

Рекомендованные сообщения

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

 

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

  • Автор

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

Да все также как у вас.

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]','
',0)};[/code]

В \jscripts\ips_text_editor_lite.js (для быстрого редактора)

Добавить ниже

 

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

  • Автор

К сожалению функция в итоге не работает, в \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", но это также ни к чему, не привело. Кеш обновлял.

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

  • Автор

Не работает. Кеш обновлял. Как и раньше, просто вставляется 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

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

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.