Keresés

Új hozzászólás Aktív témák

  • Panther

    HÁZIGAZDA

    válasz WonderCSabo #2118 üzenetére

    (B)Ez(/B) azért lett így, mert nem igazán láttam jobb megoldást az egymásba ágyazott ugyanolyan kódokra, amikor megcsináltam a fórum-kódok rendes parsolását, ami lehetővé tette, hogy egy [B]...[/B] (vagy más hasonló) tag átívelhessen több bekezdésen.

    Bővebben:
    HTML-ben egy <b> (félkövér) tagben például nem lehet <p> (bekezdés) tag. Ergo a több-bekezdéses formázások csak úgy validak, hogy <p>...<b>...</b></p><p><b>...</b>...</p>, magyarán úgy, hogy a <b>-t megszakítom a bekezdések (<p>...</p>) határán. Folyomány: az átalakításkor nyitó- és zárótagek keletkeznek olyan helyeken, ahova a user nem írta be őket. Visszaalakításkor (ami a MOD-hoz kell) ezt nem lehet detektálni, hogy ezek a tagek odagenerálódtak, vagy a user tette őket oda, és mivel a kód nem tudja eldönteni melyik eset áll fent, ezért mindig ugyanúgy reagál: mintha a user már eredetileg is helyes HTML-t írt volna. Ez azért jó, mert ha végül strukturális módosítás nélkül jön vissza a hsz, akkor a HTML struktúra is ugyanolyan maradhat mint volt. Ezzel azonban van némi nehézség, ha pl 2db [B] van egymásban, valahogy így:
    [P]Egy[B]Ketto[B]Harom[/P]
    [P]EgyKettoHarom[/P]
    [P]Egy[/B]Ketto[/B]Harom[/P]

    Mert akkor ebből ez generálódna, feltéve hogy a belső [B]-t egyszerűen nem értelmezem, hanem megjelenítem szövegként:
    <p>Egy<b>Ketto[B]Harom</b></p>
    <p><b>EgyKettoHarom</b></p>
    <p><b>Egy[/B]Ketto</b>Harom</p>

    Amiből meg visszaalakításkor ez lenne:
    [P]Egy[B]Ketto[B]Harom[/B][/P]
    [P][B]EgyKettoHarom[/B][/P]
    [P][B]Egy[/B]Ketto[/B]Harom[/P]

    Ha most ezt változtatás nélkül beküldi a user, akkor az első bekezdésben a második nyitó [B]-nek már meg is van a záró párja, ami a beágyazás miatt a nyitóval együtt "érvénytelen", tehát megintcsak generálni kell egy zárótaget (ami már érvényes). Azt ráadásul újra is kell nyitni a második bekezdésben, így ott is "érvénytelenné" válik a már ott levő páros, mert az is be lesz ágyazva, stb. A vége ez lesz:
    <p>Egy<b>Ketto[B]Harom[/B]</b></p>
    <p><b>[B]EgyKettoHarom[/B]</b></p>
    <p><b>[B]Egy[/B]Ketto</b>Harom</p>

    Magyarán más lesz a hsz szövege egy semmit-sem-csináltam "módosítás" után, mint előtte. Ami nagyon nem jó. Mit lehet tenni?
    [1.] Értelmezem a beágyazott [B]-ket is, amiből pl. egymásba rakott linkek esetén érvénytelen HTML keletkezne. Ergo ez általánosságban nem jó megoldás.
    [2.] Nem értelmezem a beágyazott [B]-ket, sőt, kitörlöm őket mintha ott se lettek volna. Ezzel az a baj, hogy a user által beírtakból csak úgy lenyelni dolgokat nem felhasználóbarát dolog. (Például ez esetben előfordulhat az, hogy a user szépen félkövérítette a szövegének a kiemelendő szavait, majd a végén véletlenül, ahelyett hogy egy "monospace"-t tenne az egész köré, megint a "félkövér"-t sikerül neki megnyomni; az átalakításkor ez esetben elveszne az összes szavankénti formázó kódja (beágyazottság okán), és csak egy nagy, egész hsz-t körülölelő [B]-t kapna vissza a MOD-kor.)
    [3.] Valamire ki kell cserélni az "érvénytelen" tageket, hogy legalább jelzésként megmaradjanak, de ne zavarajank bele a konvertálási folyamatba. Ez az amit a legkevésbé veszélyesnek/problémásnak ítéltem, így ez lett.

    [ RIOS Release 5 – multiportal engine by Panther ]

Új hozzászólás Aktív témák