Доброго времени суток!)
Пытаюсь сделать вставку ббкода для видео на форум
На форуме блоки с постами создаются в цикле
вот класс, переделывающий тег в шаблон:
class VideoTag(TagBase):
def __init__(self, name, **kwargs):
super(VideoTag, self).__init__(name, inline=True)
def open(self, parser, params, *args):
if params.strip():
self.auto_close = True
super(VideoTag, self).open(parser, params, *args)
def render_open(self, parser, node_index):
contents = self.get_contents(parser)
self.skip_contents(parser)
# Validate url to avoid any XSS attacks
if self.params:
url = self.params.strip()
else:
url = strip_bbcode(contents)
url = url.replace(u'"', u"%22").strip()
if not url:
return u''
try:
scheme, netloc, path, params, query, fragment = urlparse(url)
if not scheme:
url = u'http://' + url
scheme, netloc, path, params, query, fragment = urlparse(url)
except ValueError:
return u''
if scheme.lower() not in (u'http', u'https', u'ftp'):
return u''
template=u"""
<script type="text/javascript">
</script>
<div class ="video" id="video" data="URL">
<script type="text/javascript" src ="/static/djangobb_forum/js/markitup/videotag.js">
</script>
</div>
"""
return template.replace(u'URL', PostMarkup.standard_replace_no_break(url))
Вот скрипт для парсинга видео( в данном примере только с youtube)
myUrl = $('.video').attr("data");var u if (u=myUrl.match(/^https?:\/\/(?:www\.)?(?:youtu\.be\/|(?:m\.)?youtube(?:-nocookie)?\.com\/(?:(?:watch|movie)\?(?:.*&)?v=|embed\/|v\/|attribution_link.*watch%3Fv%3D))([-_\w\d]+)(?:.*(?:[&?]start|[?]t)=(?:(\d+)h)?(?:(\d+)m)?(\d+)?)?/i)) document.write('<iframe width="560" height="315" frameborder="0" allowfullscreen src="'+url+'"></iframe>');
Когда нажимаю предпросмотр на форуме при создании тега, все прекрасно работает, но когда отправляю сообщение, в нем такое же видео, как в первом посте, то есть скрипт обработки видео берёт первый элемент на странице с class="video". Как передать по-другому, не через класс? Поскольку это не событие onclick, то атрибут this использовать не получится.