Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
terehovskiy

Добавление функции в 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);};

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение
01/03/15 22:22 (изменено)

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

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение

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

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...