Great plugin! Thank you ... I am using it on my project :D On Tue, Sep 15, 2009 at 1:59 AM, Tom Boutell <t...@punkave.com> wrote: > > Unlike most of our plugins, pkToolkitPlugin is a bit of a kitchen > sink. It contains a lot of utility classes, some more experimental > things, and not a lot of documentation. So it's easy to miss the great > stuff that lives there. > > Better documentation is coming as various items in that plugin mature. > But I'd like to share two particularly useful and stable features that > folks probably don't realize are there: > > * The pkToolkit:ssh task. This is a convenient way to open up an > interactive ssh connection to any staging or production server > configured in properties.ini. Just type: > > ./symfony pkToolkit:ssh staging > > You'll be prompted for the password of the staging site. When the > connection is made, the script automatically changes directory to the > project's directory, which is almost always the next thing you'd do > anyway. And then it becomes a normal interactive shell. > > Note that the 'expect' utility must be installed on your computer for > this to work, and it probably won't work on a Windows host. Macs come > with expect, and it is an easily installed package on Linux. > > * The pkHtml class. Many projects allow users to edit content via a > rich text editor. And we all know what happens if the user pastes a > Word document in there: the styles of the page wind up hopelessly > munged. You can use striptags(), but that doesn't clean up the CSS, so > your page is still a mess. > > A common workaround is to use FCK's "paste as plaintext" mode, which > thwarts attempts to paste rich text from another program. That works, > after a fashion, but it's frustrating for users. And none of the > workarounds help if the user is actively trying to enter inappropriate > HTML in a misguided attempt to re-style their site... then calling you > to fix it for the 500th time. > > HTML Tidy can do the job, but it has a reputation for being heavy and slow. > > Or... you can just use pkHtml::simplify(): > > pkHtml::simplify($richTextHTML, > "<h3><h4><h5><h6><blockquote><p><a><ul><ol><nl><li><b><i><strong><em><strike><code><hr><br><div><table><thead><caption><tbody><tr><th><td>"); > > If that looks a lot like the arguments to striptags(), you're right. > But pkHtml::simplify() follows up striptags() with a DOMDocument-based > filter that removes attributes too, except for the attributes that > actually make sense to permit for certain tags. Currently this is: > > A tag -> href and name attributes > img tag -> src attribute > > You don't have to use pkHtml::simplify() manually, either. Instead, > you can use the sfValidatorHtml validator, also found in pkToolkit, > which allows the above list of tags by default because they are > well-suited to user-entered content (you can change that). > > pkHtml is much more lightweight than Tidy. On one project we needed to > separately clean hundreds of potential HTML containers in a single XML > document, in real time, before presenting some of that information to > the user. pkHtml::simplify turns that around very quickly indeed. > > Our pkContextCMSPlugin takes advantage of pkHtml::simplify() to allow > rich text editing without the constant "oops I screwed up my site" > issues that come up without a robust server-side filter. > > For convenience we also package Dominic Schierlinck's > sfWidgetFormRichTextarea widget. It's meant to be compatible with both > MCE and FCK, although we always use FCK. > > -- > Tom Boutell > P'unk Avenue > 215 755 1330 > punkave.com > window.punkave.com > > > >
-- Blue Horn Ltd - System Development http://bluehorn.co.nz --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "symfony users" group. To post to this group, send email to symfony-users@googlegroups.com To unsubscribe from this group, send email to symfony-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/symfony-users?hl=en -~----------~----~----~----~------~----~------~--~---