iframe in Feed defekt

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
bernd_d
Regular
Posts: 468
Joined: Thu Jun 03, 2010 9:28 am
Contact:

iframe in Feed defekt

Post by bernd_d » Fri Aug 02, 2013 11:38 am

Ich habe irgendwie das Problem mit meinen Beiträgen, dass der YouTube-Iframe im Feed falsch formatiert wird.

Im Beitrag/Quellcode steht

Code: Select all

<iframe src="//www.youtube-nocookie.com/embed/yJ5TozbK8so?rel=0" frameborder="0" allowfullscreen="" id="fitvid857174"></iframe>
Im Feed wird daraus dann

Code: Select all

<iframe width="560" height="315" src="https://bernd.distler.ws//www.youtube-nocookie.com/embed/yJ5TozbK8so?rel=0" frameborder="0" allowfullscreen></iframe>
Da das Problem trotz deaktiviertem serendipity_syndication_plugin zu bestehen scheint, vermute ich einen Fehler im Core.

Ein Beispielartikel mit Video wäre z. B. hier zu sehen.

User avatar
yellowled
Regular
Posts: 7111
Joined: Fri Jan 13, 2006 11:46 am
Location: Eutin, Germany
Contact:

Re: iframe in Feed defekt

Post by yellowled » Fri Aug 02, 2013 11:46 am

bernd_d wrote:Ich habe irgendwie das Problem mit meinen Beiträgen, dass der YouTube-Iframe im Feed falsch formatiert wird.
Offenbar funktioniert die protokollfreie Verlinkung nicht überall, zumindest in diesem iframe nimmt der Browser dann an, es handele sich um eine relative URL. Wenn Du mit http: verlinkst, sollte es doch klappen?

YL
amazon Wishlist - Serendipity-Podcast (German only, sorry)

bernd_d
Regular
Posts: 468
Joined: Thu Jun 03, 2010 9:28 am
Contact:

Re: iframe in Feed defekt

Post by bernd_d » Fri Aug 02, 2013 11:50 am

Das dürfte nix mit dem Browser zu tun haben, denn der Code steht ja so schon im Feed von s9y.

Man könnte natürlich s9y aushebeln und das http setzen, Hauptgrund warum ich darüber aber überhaupt gestolpert bin ist, dass YouTube den embed-Code so vorgibt ohne Protokollangabe.

User avatar
yellowled
Regular
Posts: 7111
Joined: Fri Jan 13, 2006 11:46 am
Location: Eutin, Germany
Contact:

Re: iframe in Feed defekt

Post by yellowled » Fri Aug 02, 2013 12:08 pm

Oh, ach so: Das ist nur im Feed problematisch? Hm.

Okay, ich kann das in meinem Devblog reproduzieren. (Nebenbei bemerkt killt das fehlende ="true" bei allowfullscreen auch den Atom-Feed.) Eine Lösung habe ich spontan leider nicht. Scheint mir aber in der Tat eher ein Problem der Feed-Templates (in default) als sonstiger Faktoren zu sein.

YL
amazon Wishlist - Serendipity-Podcast (German only, sorry)

mattsches
Regular
Posts: 440
Joined: Sat Nov 05, 2005 9:35 pm
Location: Wiesbaden, Germany
Contact:

Re: iframe in Feed defekt

Post by mattsches » Fri Aug 02, 2013 12:13 pm

@bernd_d Du hast recht, in der functions_rss.inc.php gibt es einen regulären Ausdruck, der in diesem Fall die falsche Ersetzung vornimmt. Wie das mit RegExps so ist, kann es etwas dauern, bis ich da eine funktionierende Lösung präsentieren kann :roll:

Good catch auf jeden Fall!

mattsches
Regular
Posts: 440
Joined: Sat Nov 05, 2005 9:35 pm
Location: Wiesbaden, Germany
Contact:

Re: iframe in Feed defekt

Post by mattsches » Fri Aug 02, 2013 2:06 pm

Ich habe hier mal einen Lösungvorschlag geschrieben, da wären jetzt Unit Tests wirklich eine praktische Sache.

Ich bin mir allerdings nicht sicher, ob sich damit alle Fälle von serendipityHTTPPath und Entry-Bodies vertragen. Sieht aber imho gut aus. Vielleicht könnte da trotzdem bitte noch ein anderer Entwickler drüberschauen?

Das Problem mit dem Atom-Feed kann ich bestätigen, der mag das Attribut nicht. Da meckert auch der W3C-Validator, aber die meisten Feedreader schlucken das vermutlich? Wie auch immer, das ist ein anderes Thema.

@bernd_d

User avatar
onli
Regular
Posts: 2388
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: iframe in Feed defekt

Post by onli » Fri Aug 02, 2013 3:29 pm

Dein Ansatz müsste funktionieren - testen, ob dem relativen Pfad ein / folgt. Aber: Wir sollten sicherstellen, dass ein '/~john/serendipity//'... nicht nicht ersetzt wird. Solche URLs passieren relativ häufig und sollten normalerweise problemlos aufgelöst werden.

Im Grunde können wir das alles vereinfachen, oder?

Wir wollen, dass relative Pfade mit absoluten ersetzt werden, nur dann nicht, wenn der relative Pfad / ist und ihm ein / folgt. Dafür brauchen wir zwei verschiedene Pattern.

Also:

Code: Select all

if ($serendipityHttpPath == /) {
    pattern = 'href|src=["\'](/)([^/][^"\']*)'
} else {
   pattern = "href|src=[\"']($serendipityHttpPath)[^\"']*)"
}
Bei der Gelegenheit hab ich die regexp soweit mir möglich vereinfach. Wobei man das wohl wieder erweitern muss, um das wirklich nur in Links zu machen und den Rest des Links einzusetzen.

Meine Testfälle:
1, 2, 3, 4

Zu dem Attributfehler: Wenn da der Atomparser sich beschwert machen wir wahrscheinlich das escapen falsch. Das HTML des Eintrags ist ja kein valides xhtml und sollte daher mit <![CDATA[ ... ]] maskiert werden.

bernd_d
Regular
Posts: 468
Joined: Thu Jun 03, 2010 9:28 am
Contact:

Re: iframe in Feed defekt

Post by bernd_d » Fri Aug 30, 2013 10:54 am

Wie sieht es denn mit dem Problem aus, macht da noch jemand was dran? Ich würde das gerne mal irgendwie beheben (lassen).

User avatar
onli
Regular
Posts: 2388
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: iframe in Feed defekt

Post by onli » Fri Aug 30, 2013 10:58 am

Ich würde mich freuen, wenn noch ein Entwickler (mattsches?) über meinen Regex geht und das am besten direkt implementiert, mindestens in 2.0. Dann könntest du den Code kopieren und bei dir einfügen und das nochmal testen.

mattsches
Regular
Posts: 440
Joined: Sat Nov 05, 2005 9:35 pm
Location: Wiesbaden, Germany
Contact:

Re: iframe in Feed defekt

Post by mattsches » Mon Sep 02, 2013 11:39 am

Dein zweiter Testcase matcht nicht, soll das so sein?

Ich habe meine Version noch etwas erweitert, um Pfade mit zwei Slashes am Ende zu bereinigen. Natürlich lässt sich das noch refactoren, aber es muss ja erstmal funktionieren.

PS: Falls ich das mit der PHPUnit-Integration in Metatron hinbekommen sollte, gibt's vielleicht irgendwann auch mal "richtige" Unit Tests dafür :wink:

User avatar
onli
Regular
Posts: 2388
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: iframe in Feed defekt

Post by onli » Mon Sep 02, 2013 11:43 am

mattsches wrote:Dein zweiter Testcase matcht nicht, soll das so sein?
Ja, weil das ja der Fall ist, bei dem der führende / nicht durch den Pfad zum Blog ersetzt werden soll.

mattsches
Regular
Posts: 440
Joined: Sat Nov 05, 2005 9:35 pm
Location: Wiesbaden, Germany
Contact:

Re: iframe in Feed defekt

Post by mattsches » Mon Sep 02, 2013 12:02 pm

Ok, verstehe.

Könntest du bitte noch den kompletten preg_replace() Aufruf posten, also mit angepasstem replacement? Das match-Pattern ist ja nur die halbe Miete, und ich bin gerade zu faul ;)

Und klappt dein Regex auch mit dem oben genannten

Code: Select all

<iframe src="//www.youtube-nocookie.com/embed/yJ5TozbK8so?rel=0" frameborder="0" allowfullscreen="" id="fitvid857174"></iframe>
Oder müsste man das vorher auch bereinigen, ähnlich wie '/~john/serendipity//'?

bernd_d
Regular
Posts: 468
Joined: Thu Jun 03, 2010 9:28 am
Contact:

Re: iframe in Feed defekt

Post by bernd_d » Thu Sep 19, 2013 2:23 pm

Seid ihr zufällig im Hintergrund an dem Thema dran? Nicht, dass mir das hier wieder in Vergessenheit gerät ;)

User avatar
onli
Regular
Posts: 2388
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: iframe in Feed defekt

Post by onli » Thu Sep 19, 2013 2:50 pm

Danke bernd. Ne, ich bin zurzeit beschäftigt und vergaß tatsächlich, hier zu antworten.

mattsches, ich habe keinen kompletten Aufruf. Das müsste jemand noch coden. Wenn ich das richtig sehe, sollte der Regex auch mit dem von dir zuletzt geposteten Testfall funktionieren - dann würde ja aus meinem Beispielcode das erste pattern genommen werden, das diese url ignoriert.

User avatar
onli
Regular
Posts: 2388
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: iframe in Feed defekt

Post by onli » Tue Oct 01, 2013 1:18 am

Falls jemand meinen Fix testen will: https://github.com/s9y/Serendipity/comm ... d3a5590889

Ist bisher nur in 2.0, die Datei sollte aber keinen Unterschied haben. Also auch mit 1.x testbar.

Post Reply