Plugin Execution Permissions

Despite my downtime, I was able to find the time to commit some changes I was having up my sleeve to the 1.1 beta version.

It involves, what many people have asked for: Specify, which user/usergroups are able to have access to certain plugins. My standpoint until now was, that plugins should implement the versatile permission management of Serendipity, available since version 0.9.

However, reality got me when I saw that no plugin was really ported yet to use that permission management setup to provide custom permission sets. But people wanted to have the ability to say "The staticpage plugin is only available to user XY".

Thus, I implemented a rather hackish way into the groupmanagement: You can now specify complete plugins, or specific event hooks which are forbidden for a usergroup. This way, you can say that group X is not allowed to execute a 'Staticpage' plugin.

This approach should work quite well for many usage scenarios - the upside is, that all old plugins are supported instantly. However, the neater approach of course is to modify plugins so that they provide their own permissions for more granulate control of what you want to achieve.

To enable this functionality you must first enable the option "Enable Plugin ACL for usergroups" in the serendipity configuration. The reason why you must explicitly enable this is, because those plugin checks decrease the performance of the plugin API. Every executed plugin hook must be checked against the blacklist, and those checks would hurt bloggers that do not intent to use this feature. To satisfy everyone, you have an option for this.

You can try the feature in the nightly builds created today, or using an SVN checkout. The feature is contained in 1.1-beta4.

Cronjob functionality

Two new plugins have been added to CVS by me:

serendipity_event_metadesc / "HTML META-Tags" allows you to define meta-description and meta-keywords per entry. Those will then be shown on the detailed entry page within the HTML head. As a nice bonus, if you leave the fields empty, the plugin tries to auto-detect keywords and description based on your text. For that it evaluates Bold/Strong tags in HTML to auto-guess your content.

serendipity_event_cronjob / "Cronjob scheduler" finally offers some cronjob functionality that people have sometimes requested. A lengthy explaination of this plugin follows. :-)

"Cronjob functionality" vollständig lesen

Lightbox, Thickbox, Lightbox2

Yesterday, Andyman77 from the forums brought the Thickbox project to my attention. Using his plugin, I intermingled that with the existing lightbox plugin so that you can now choose which JS library to use to format your links. Plus, lightbox2 got also added to the plugin.

What, you don't know what Lightbox is? It's a nifty javascript that will transform links to images into small "popup" links. When you thus link to a thumbnail images (<a href="large.jpg"><img src="thumb.jpg" />), lightbox will take on that image link, and once clicked on it, the large image will be shown on your page instead in a separate browser window. It sounds boring when explained, so just go to the lightbox pages and look at their installations.

The plugin installation is seamless, as all image links in serendipity will get automatically rewritten so that links from thumbnails will show up as lightbox links.

Thickbox brings fun into this thing by offering to also popup HTML links inside neat popups. Just add a 'class="thickbox"' attribute to your HTML links in your entries, and that's it.

Using Serendipity with Flock

Basically, Serendipity should support the Flock browser.

Sadly, due to a bug in their parsing/sending routine, applications that rely on PEARs XML-RPC extension won't work with flock. Serendipity falls under that category. It would work without flock auto-detecting a blog, but because flock's autodetection is blocking to successfully add Serendipity, this is a devil's circle.

This flock bug had been reported in February, but sadly no progress has yet been made. All the people who'd might like to use their Serendipity Blog and the XML-RPC posting plugin with Flock, please raise your kind voice here:

Flock Bugtracker.

I am pretty sure the nice people of Flock will report to popular demand - I'd really like to see progress in this issue :)

New Serendipity 1.1 Features

The Serendipity 1.0 release progress is advancing - currently we have created new page layouts for the blog, wiki and spartacus pages that acommodate the new logo and our new default theme by contest winner Carl Galloway.

A major new documentation contribution, documenting all Smarty variables has been made by me: CSS classes / Variable Documentation on the Wiki. We are getting things together and finalizing the designs - the Serendipity 1.0 release version can hopefully be uploaded at the end of next week, if everything goes according to plan. Plus, the Serendipity Installation Documentation has been greatly improved and now contains screenshot-guided instructions.

Parallely, work on Serendipity 1.1 is evolving very well. Here are a few new key features:

  • Completely overhauled Media Gallery. Serendipity has always been a major player in providing easy media database access, and is now enhancing it for even more usability and flexibility. You can now assign privileges for every media directory. You can now retrieve and store meta properties like descriptions, EXIF-Data, keywords - and filter/search for them easily. Plus, the media gallery is now Smarty Template-driven, so you can customize it to your needs. You can now move images/whole directories within the filestructure, and existing entries will be edited to suit that new location. The media database can now be synchronized on-the-fly with contents on the webspace - means you can upload files via FTP and they will automagically be imported. A explorer-like view on the directories completes the featureset.
    Watch this video:
  • You can enable/disable certain markup plugins per-entry. Ever wanted to create a Full HTML posting, but were annoyed by automatic nl2br conversion? Now you can turn it off for specific entries.
  • Support for Template Options. All Themes can now offer specific configuration options for using a theme, like specifying which colorset you want to use, which navigational items you'd like to see and even fine-control banner options. See Carl Galloways Page for some sneak previews on the functionality to come!
  • Finally, you can now use Drag And Drop to re-order your sidebar/event plugins much more intuitively than in the past. It uses enhanced JavaScripts (from Cyberdummy.co.uk / tool-man - great script!), that works on all major browsers. For those browsers that don't offer support for that, or for users without JavaScript, the old method is still working seamlessly. This means, that Serendipity continually strifes to both deliver top-usability to our users, as well as satisfy people who are paying close attention to security issues.
    Watch this video:

So, if those features ring any bells inside your bellies, go to the Serendipity Site and try out 1.1 Snapshots. And stay close for the never-ending story of the Serendipity 1.0 release in the next days. :-)

SourceForge CVS / Spartacus functional again

The last month has been a hard time for developers on SourceForge.net, because their CVS service went down for good also for developers, and anonymous access was not updated for the time being.

The Serendipity Spartacus plugin by default uses the SourceForge Servers for downloading plugins and files, and thus this had not worked properly the past month. The first way to fix that problem was to use the "Netmirror.org" file mirror.

Because of the changes made by the SourceForge team to CVS, their new infrastructure will no longer work with the Spartacus plugin, because they changed Domain and URL locations. Users should either use the Netmirror.org file mirror, or use the latest version of the Spartacus plugin with the new path location: serendipity_event_spartacus.php + lang_en.inc.php. The patch is fairly easy and just replaces the URL of the server.

Attention for Plugin Developers using CVS access: SourceForge.net has changed the CVS server from "cvs.sourceforge.net" to "php-blog.cvs.sourceforge.net". You will either need to check out that new repository, or else use this bash command to search+replace all the old paths to the new paths:

find -name "Root" -exec sed -e "s:@cvs:@php-blog.cvs:g" -i {} \;

(Many thanks to lars for pointing this out to me)

Read the Sf.Net docs for details on the new CVS project service. Other good news is that anonymous CVS access will no only lag 2 hours, not 24 hours.

Let's see how this will work out, and my thanks to the SourceForge.Net team who has surely not an easy job providing free access for thousands of projects.