Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Balises BBCode non supportées (autre que TABLE) #56

Open
Titou74 opened this issue Aug 31, 2016 · 2 comments
Open

Balises BBCode non supportées (autre que TABLE) #56

Titou74 opened this issue Aug 31, 2016 · 2 comments

Comments

@Titou74
Copy link

Titou74 commented Aug 31, 2016

Bonjour,
Tout d'abord, merci pour ce script qui va me permettre d'ENFIN changer 👍 :-)

J'ai cependant un soucis sur des BBCodes non supportées. Dans le fichier de log (que vous trouverez ci joint), les seules WARNINGS que j'ai portent sur les balises "table" et "hide".

J'ai donc détecté que les balises BBCode suivantes ne sont pas supportées (il n'y a pas de warning, et elles ne sont pas présentent dans les sujets extraits dans le SQL) :

  • Les balises H ( [h2], [h3], [h4] )
  • Les balises vidéos tel ( [youtube], [dailymotion] )

Une solution serait de conserver dans les réponses les balises inconnues. phpBB 3.0.x et 3.1.x permettant tout 2 de gérer ses propres balises, cela permettrait (après ajout) d'appliquer le bon format HTML pour les balises citées ci dessus.

debug.zip

@Titou74 Titou74 changed the title Balises BBCode non supportées (autre que TABLE Balises BBCode non supportées (autre que TABLE) Aug 31, 2016
@Titou74
Copy link
Author

Titou74 commented Aug 31, 2016

En fouillant un peu, je viens de trouver le fichier "phpbb.py" , dans lequel est défini les différents BBCODE supportés (est ensuite utilisé par "htmltobbcode.py").
Je vais ajouter les BBCodes manquant et tester. Je transmettrai le fichier si ça fonctionne !

@Titou74
Copy link
Author

Titou74 commented Sep 11, 2016

fichiers htmltobbcode et phpbb.zip

Le petit bidouillage qui permet d'importer les balises H2, H3 et H4, ainsi que les vidéos Youtube et dailymotion :

NOTE : le formatage du code plante sur github ... les 2 fichiers modifiés sont dans le zip joint.

Pour les H* (H2, H3, H4)

Fichier phpbb.py

{"bbcode_id" : 29,
"bbcode_tag" : 'h2',
"bbcode_helpline" : 'H2',
"display_on_posting" : 0,
"bbcode_match" : '[h2]{TEXT}[/h2]',
"bbcode_tpl" : '<h2 class="post-content">{TEXT}',
"first_pass_match" : '![h2](.?)[/h2]!ies',
"first_pass_replace" : ''[h2:$uid]'.str_replace(array("\r\n", '\"', '\'', '(', ')'), array("\n", '"', ''', '(', ')'), trim('${1}')).'[/h2:$uid]'',
"second_pass_match" : '![h2:$uid](.
?)[/h2:$uid]!s',
"second_pass_replace" : '<h2 class="post-content">${1}'},

{"bbcode_id" : 30,
"bbcode_tag" : 'h3',
"bbcode_helpline" : 'H3',
"display_on_posting" : 0,
"bbcode_match" : '[h3]{TEXT}[/h3]',
"bbcode_tpl" : '<h3 class="post-content">{TEXT}',
"first_pass_match" : '![h3](.?)[/h3]!ies',
"first_pass_replace" : ''[h3:$uid]'.str_replace(array("\r\n", '\"', '\'', '(', ')'), array("\n", '"', ''', '(', ')'), trim('${1}')).'[/h3:$uid]'',
"second_pass_match" : '![h3:$uid](.
?)[/h3:$uid]!s',
"second_pass_replace" : '<h3 class="post-content">${1}'},

{"bbcode_id" : 31,
"bbcode_tag" : 'h4',
"bbcode_helpline" : 'H4',
"display_on_posting" : 0,
"bbcode_match" : '[h4]{TEXT}[/h4]',
"bbcode_tpl" : '<h4 class="post-content">{TEXT}',
"first_pass_match" : '![h4](.?)[/h4]!ies',
"first_pass_replace" : ''[h4:$uid]'.str_replace(array("\r\n", '\"', '\'', '(', ')'), array("\n", '"', ''', '(', ')'), trim('${1}')).'[/h4:$uid]'',
"second_pass_match" : '![h4:$uid](.
?)[/h4:$uid]!s',
"second_pass_replace" : '<h4 class="post-content">${1}'},

Fichier htmltobbcode.py

Ajout des balises "h2", "h3", "h4" dans le _inline_handler

@Parser.handler("i", "u", "strike", "sub", "sup", "hr", "tr", "h2", "h3", "h4")
def _inline_handler(tag, attrs):
return InlineTagNode(tag)

Pour les vidéos youtube et dailymotion

Fichier phpbb.py

{"bbcode_id" : 32,
"bbcode_tag" : 'youtube',
"bbcode_helpline" : 'Youtube',
"display_on_posting" : 0,
"bbcode_match" : '[youtube]{TEXT}[/youtube]',
"bbcode_tpl" : '<iframe src="https://www.youtube.com/embed/{TEXT}\" allowfullscreen frameborder="0" height="315" width="560"></iframe>',
"first_pass_match" : '![youtube](.?)[/youtube]!ies',
"first_pass_replace" : ''[youtube:$uid]${1}[/youtube:$uid]'',
"second_pass_match" : '![youtube:$uid](.
?)[/youtube:$uid]!s',
"second_pass_replace" : '<iframe src="https://www.youtube.com/embed/${1}\" allowfullscreen="" frameborder="0" height="315" width="560"></iframe>'},

{"bbcode_id" : 33,
"bbcode_tag" : 'dailymotion',
"bbcode_helpline" : 'Dailymotion',
"display_on_posting" : 0,
"bbcode_match" : '[dailymotion]{TEXT}[/dailymotion]',
"bbcode_tpl" : '<iframe src="http://www.dailymotion.com/video/embed/{TEXT}\" allowfullscreen="" frameborder="0" height="270" width="480"></iframe>',
"first_pass_match" : '![dailymotion](.?)[/dailymotion]!ies',
"first_pass_replace" : ''[dailymotion:$uid]'.str_replace(array("\r\n", '\"', '\'', '(', ')'), array("\n", '"', ''', '(', ')'), trim('${1}')).'[/dailymotion:$uid]'',
"second_pass_match" : '![dailymotion:$uid](.
?)[/dailymotion:$uid]!s',
"second_pass_replace" : '<iframe src="http://www.dailymotion.com/embed/video/embed/${1}\" allowfullscreen="" frameborder="0" height="270" width="480"></iframe>'},

Fichier htmltobbcode.py

class IframeTagNode(Node):
"""
A node representing an inline element
"""
def init(self, tag, attrs="", closing_tag=None, content=""):
Node.init(self, tag)
self.closing_tag = closing_tag
self.attrs = attrs

    if content:
        self.add_text(content)

def get_bbcode(self, fileobj, bb, uid=""):
    if self.tag not in TAGS:
      logger = logging.getLogger('lalf.htmltobbcode')
        logger.warning("La balise bbcode [%s] n'est pas supportée.", self.tag)

        Node.get_bbcode(self, fileobj, bb, uid)
    else:
        fileobj.write("[{}{}{}]".format(self.tag, self.attrs, uid))
        Node.get_bbcode(self, fileobj, bb, uid)
        if self.closing_tag:
            fileobj.write("[/{}{}]".format(self.closing_tag, uid))
        else:
            fileobj.write("[/{}{}]".format(self.tag.rstrip("="), uid))

@Parser.handler("iframe")
def _iframe_handler(tag, attrs):
logger = logging.getLogger('lalf.htmltobbcode')
if attrs["src"][:30] == "https://www.youtube.com/embed/":
logger.warning(attrs["src"][30:len(attrs["src"])])
return IframeTagNode("youtube", content=attrs["src"][30:len(attrs["src"])])
if attrs["src"][:39] == "http://www.dailymotion.com/embed/video/":
logger.warning(attrs["src"][39:len(attrs["src"])])
return IframeTagNode("dailymotion", content=attrs["src"][39:len(attrs["src"])])
return InlineTagNode(tag)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant