Yii Framework Forum: FCKeditor i demo blog - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

FCKeditor i demo blog Rate Topic: -----

#1 User is offline   robikon 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 17-October 11

Posted 21 October 2011 - 07:17 AM

Witam ponownie.
Zintegrowałem ze stroną ten edytor i wszystko gra oprócz jednej rzeczy, po dodaniu posta (pole 'cocntent') do bazy (tekst zapisywany do bazy wraz z tagami html) ale podczas wyświetlania strona nie ukrywa tych tagów tylko traktuje je jak normalnie znaki i je wyświetla. Trochę to dziwnie wygląda "<p> coś tam </p>".
Ustawiłem opcję 'FCKConfig.FullPage = true ;' która to powinna cały tekst oblać znacznikami <html></html> ale to niestety nie działa.
Stosowałem ten edytor na innej stronie i tam jest OK, a to nie mam pojęcia.
0

#2 User is offline   robikon 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 17-October 11

Posted 23 October 2011 - 10:50 AM

No dobra, poszukałem i znalazłem rozwiązanie, może komuś się przyda.
Na stronie Larrego Ullman'a tutaj przedstawiony jest sposób integracji FCKeditor'a ze stroną. Jest także uwaga:
"Finally, consider that the Views, by default, echo out Model data using the CHtml::encode() method. This is a logical and necessary security feature, as it prevents cross-site scripting attacks (XSS). However, it also makes the FCKEditor-generated HTML completely useless (it’s the equivalent of PHP’s htmlspecialchars() function)."
W skrócie Yii przyjęło metodę wyświetlana danych wyjściowych poprzez funkcję CHtml::encode(), która z jednej strony zabezpiecza przed atakami XSS, ale powoduje że kod wygenerowany przez edytor zawierający tagi html będzie bezużyteczny ponieważ nie będzie parsowany przed wyświetleniem czego objawem na ekranie jest tekst wraz z tagami html. Kupa.
Larry podał metodę której można użyć do aby to poprawić:
"A logical work-around is to use PHP’s strip_tags() instead, providing it with the optional second argument of allowable tags:"
echo strip_tags($model->content, '<p><a><div><ul><ol><li><span>');

No, ok działa ale jak zauważyliście drugim parametrem funkcji jest zestaw tagów html, więc aby wyświetlić np. obrazek to tag <img> musi się tam znaleźć. Ile may tagów -> "dużo". Można co prawda do zmiennej globalnej przypisać tablicę z wymienionymi tagami i do niej się odwoływać.
Stwierdziłem, że to nie dla mnie, więc zrobiłem tak:
1. W pliku _view.php zamieniłem funkcję:
<?php echo CHtml::encode($data->content); ?>

na
<?php echo CHtml::decode($data->content); ?>

można też
<?php echo strip_tags($data->content, '<p><img><b><br><a><div><ul><ol><li><span>'); ?>

2. W plikach view.php i admin.php w widgetach "zii.widgets.CDetailView" i "zii.widgets.grid.CGridView" zamieniłem atrybut:
'content'

na
'content:html'

Ta ostatnia zmiana powoduje, że atrybuty będą wyświetlane jako "purified HTML".
Tyle, dział jak trzeba.
0

#3 User is offline   mbtron 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 3
  • Joined: 28-December 11
  • Location:Slovakia

Posted 29 December 2011 - 04:51 AM

Pozdravujem robikon,
dobra praca, veľmi mi to pomohlo, ďakujem
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users