[HTML + CSS + ASP] forum

0

Hej
Tworzę forum w ASP i mam takie 2 problemy.
Użytkownik może napisać post formatując go za pomocą edytora wysiwyg. Jak go sformatuje to otrzymuję tekst wraz z znacznikami html np.:
<br><br><p>Oto mój pierwszy post</p>
Taki tekst z informacją o formatowaniu przechowuję w bazie.

Problem 1)

Potem jak wyświetlam ten post w niektórych stronach, które mają określony styl css – powiedzmy ustawione, że znacznik

ma margines i padding 20px
Chciałbym aby obszar wyświetlanego postu na tej stronie nie był formatowany jak pozostała cześć strony, tylko tekst wyglądałby tak jakby niebyło ustawione formatowanie w ogóle ( domyślne wartości padding i margin)

Problem 2)

Czasami użytkownik kopiuje swój tekst z Worda lub jakiś innych miejsc, przez co dodawane są jakieś dziwne wordowskie lub inne znaczniki formatowania

Wygląda to tak w przypadku worda:

<!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:HyphenationZone>21</w:HyphenationZone> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>PL</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:DontVertAlignCellWithSp/> […]
To tylko cześć bo tego jest baaaaaaaaardzo dużo. Jak widać jest to za komentowane dla HTML. Ale potem te wszystkie śmieci idą do bazy. Jak chcę wyświetlić skrót postu, np. pierwsze 200 znaków to pobierane są te niepożądane znaczniki po sam tekst jest gdzieś dalej…
Co gorsze, ucinany jest np koniec komentarza dlatego wyswietlane są te smieci bo nie jest to uznanwane za komentarz. Podobnie jest jak ktoś np otworzy znacznik

a po ucięciu nie będzie on zamknięty. Potem taki post może zepsuć całą stronę :-P
Rozwiązaniem problemu 2 było by w bazie przechowywane osobno samej treści skrótu ale to muszę 2 razy przechować cześć informacji

Czy są jakieś pomysły jak można poradzić sobie z tymi problemami?
Pozdrawiam serdecznie!

0

ad 1) wyświetlaj treść z edytora w tagu z klasą css, która będzie przedefiniowywać style dla wszystkich używanych elementów, coś jak

treść z edytora
, a w pliku css .wysiwyg p {margin:0;}
ad 2) przerabiałem ten problem z tinyMCE: przy zapisywaniu śmieci wklejanych z worda do edytora na stronie musisz usuwać wszystkie komentarze (dobrze też usuwać tagi style i script wraz z zawartością oraz wziąć pod uwagę, że edytor potrafi dodać html/body). z kolei przy wyświetlaniu skrótów nie możesz wziąć z html pierwszych n znaków, bo możesz uciąć albo nie zamknąć jednego lub więcej tagów, a cięcie tak, żeby nie rozwalić html zabierze zbyt dużo czasu i nie ma gwarancji, że pozostanie jakiś tekst (pierwsze 200 znaków to mogą być same tagi (wszyscy kochamy worda)). prościej będzie usunąć wszystkie znaczniki (pamiętając o script i style z treścią), usunąć nadmiarowe białe znaki i dopiero wtedy zassać pierwsze n znaków i zapisać je do bazy danych (ewentualnie parsować html z bazy danych przy każdym wyświetlaniu - rozwiązanie sensowne tylko w przypadku silnego buforowania strony).</p>

1 użytkowników online, w tym zalogowanych: 0, gości: 1