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 --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---