(Deutsche Übersetzung gibt es auf meinem privaten Blog)
A huge issue of Serendipity's Static Page-Plugin has always been its visual presentation of the editing screen:
Voices have been raised in the past to dust up this interface, which is why I worked on it at the beginning of this week, and committed my changes already to the official plugin repository (staticpage.zip).
Technically, the changes are quite minimalistic und quick to implement (2 hours of my life time). But the impact is huge:
Starting as of now, static pages can be created and edited using a customized smarty template, plus a static page can now have custom properties, similar to blog entries.
By default, a template file saved as backend_templates/default_staticpage_backend.tpl is shipped with the plugin, in which the distribution of the input fields is contained. There is a new smarty helper function ({staticpage_input}) that takes care of accessing the usual introspection methods for emitting the default list of data fields.
Own templates can override this template file by putting it in their template subdirectory, so that you can now have your own editing masks depending on the currently used template. This should be a blessing for magazine-like templates such as Mimbo or Hemmingway.
You can also store multiple template files inside this backend_templates directory, so that they all will be available from within the selection dropdown of the interface. For our veterans, the old list-style view is still available, of course.
An example for saving custom fields for static pages is also contained within the default template, but is commented out so that you must manually enable it. All custom fields need to be implemented through usual HTML form elements, and need to save their values inside a serendipity[plugin][custom][XXX][ fieldname. Once entered, the data will be automatically saved inside the serendipity_staticpage_custom database table, and will be available through {$staticpage_custom.XXX} when later being displayed in the frontend.
This way, you can easily add new custom fields for a staticpage which could decide, which CSS-Body-ID to use for rendering the page. Or you could specify, which sidebars you want to see when a certain staticpage is rendered. Or specify a custom header image for each staticpage. Sky's the limit!
This all vastly improves Serendipity's CMS-abilities and even more pushes it into a custom CMS-Framework, where you can manage any kind of customized content.
I hope you like it. :-)
As of today, the netmirror.org server seems to be having a hiccup. The serendipity Plugin Spartacus by default requires this server to provide automatic plugin and theme updates and downloads. The inavailibility of this server can lead to timeouts and not being able to install new plugins.
The issue should resolve itself once netmirror.org is up again. Temporarily you can either reconfigure your Spartacus-plugin to use the SourceForge-Mirrors, or completely disable the Spartacus plugin. Using the s9y.org mirror will not help you, as this server is currently not hosting any files.
I will post an update once the server is up again. Sorry for the inconvenience.
The Serendipity Anti-Spam plugin allows to utilize the blogg.de IP blacklist service to block spam. Their service seems to have ceased existence, or at least is rejecting connections. This can lead to comments to your serendipity blog to be rejected. You can easily disable the blogg.de blacklist service in your Anti-Spam plugin configuration.
Note that this option is by default disabled in Serendipity since blogg.de announced that they are no longer actively maintaining the blacklist. A well fit alternative to this service is the Akismet API, which the spamblock plugin also supports.
Like announced earlier on the serendipity blog, fellow usability expert Joachim Harloff is currently trying to improve the listing of Serendipity Plugins so that they are more accessible to users.
He needs your help to fulfill them. Initially he planned to personally meet with serendipity users, but this proved more complex than initially hoped. Thus he has created a smaller, text-based version of it.
You can download the file at http://www.softuse.com/serendipity_sorting.zip. It contains detailed instructions. You can also feel free to personally contact Joachim about any questions you have.
Joachim estimates this questionnaire to take you about 1,5 hours of your time. You could greatly help to improve the serendipity usability, so please participate! Joachim wants to evaluate your responses starting on September the 8th.
Development
plugins
infrastructure
Announcements
serendipity
Thanks to Erich Schubert, we were made aware of a bug and security issue in the Plugin Extended properties for entries. Since this plugin is delivered with the core release, we have created a new Serendipity release for both the current stable 1.1 version tree, as well as a new 1.2 beta version.
Serendipity Users that are using the mentioned plugin do not need to upgrade the full release, they can just fetch the updated version of the plugin through this direct link. Put that updated file into your plugins/ serendipity_event_entryproperties/ serendipity_event_entryproperties.php file.
The actual bug was, that people were able to deliver custom entryproperties settings to the Serendipity Frontend via a HTTP-Request, which made them able to bypass a possibly used passwort protection. Any other restriction of viewability of entries done via category read-privileges were not affected, though.
Bottom line is: If you are using password protection for entries, this security update is mandatory for you. Also if you were generally using the entryproperties plugin (which is not installed by default in Serendipity), you are urged to update your plugin. Only people not using this plugin need not care about this issue.
You can download the new full releases as always on the Serendipity download page.
I upgraded the staticpage plugin in CVS to version 3.50 yesterday (which should be available via Spartacus now already).
It now supports to use a custom smarty function to show static pages. This can be used in your custom template files (like the userprofile .tpls) to emit specific staticpages depending on variables.
Go ahead and play with it. The API is quite basic and described in the new 'smarty.inc.php' file. It basically works like this:
{staticpage_display template="$TEMPLATE" pagevar="$PAGEVAR" id="$ID" permalink="$PERMALINK" pagetitle="$PAGETITLE" authorid="$AUTHORID" query="$QUERY"}
The API is quite fundamanetal right now. If you want to access more properties/parameters, please let me know, and I'll implement them. Please discuss this feature on our forums in this thread.
rrichards from the forums published his first public OpenID-Plugin results. Check out this thread on the forums. If you're interested in testing the plugin or are interested in OpenID, please give it a look and report about it.
Many thanks to rrichards and all volunteers!
This new Serendipity release addresses a local file inclusion security issue discovered yesterday. It was possible to give a special parameter to a serendipity file to include a file on your own web-tree (or other files the webserver has read access to). If used on clear-text files, this could be used to disclose information like the apache logfiles on your website.
This error can only happen in a scenario with two prerequisites: Register_Globals needs to be turned on in your PHP configuration AND your webserver must ignore the default Serendipity .htaccess file. This .htaccess file usually prevents to directly call Serendipity's include files via HTTP. Thus we feel that only a very low percentage of installations should be affected by this bug.
However, Serendipity 1.0.4 is a recommended upgrade for everyone taking security responsibly, like we do. We are thankful to the community for inspecting Serendipity, searching for bugs and security issues and reporting them to us. In this case, many thanks to Majestic from the forums for notifying us.
Most of the plugins (both bundled and available via spartacus) were upgraded to also circumvent that bug, so you should upgrade all of your active plugins to the recent versions as well.
The Serendipity 1.1 release tree was also modified with a patch for this issue. It will be contained in todays snapshot, and the 1.1-beta6 release file. The easy steps to perform an upgrade are documented in our FAQ on http://www.s9y.org/.
Thanks to Robert from the forums he convinced me to implement a feature for him. Well, actually he bribed me to do it. ;-)
Nevertheless, now that I implemented the feature, I kinda like it. The enhancement to the Freetag plugin (version 2.7, should be available via Spartacus now) allows you to enter a list of comma seperated keywords for each tag you have available on your blog.
Whenever you save an article now, the plugin will analyze the content of your entry. For each keyword that you entered and that is found in the article, the corresponding tag will be auotmatically assigned to your entry (taking care that no duplicate tags happen).
So, if you have the Tag "PHP" you could enter keywords like "Serendipity,php,s9y,phpbb,xss,sesser". When you now create an entry where you use the keyword "Serendipity", the freetag plugin will automatically assign the tag "PHP" to this entry.
Thus, especially if you have a low count of tags you can save a lot of time by assigning meaningful keywords to your tags. Beware that if you enter a lot of keywords for a lot of tags, that this might slow down saving an entry. This happens because a list of EVERY available keyword needs to be compiled and matched against your saved article to be able to see which keywords were used.
Have fun!
Google seems to have changed their URLs where pings to the sitemap webmaster helper tool are sent to.
Thus, the Serendipity Google Sitemap plugin requires you to either manually update to the right URL. The updated plugin in Spartacus has been committed today and should be available tomorrow.
The new URL to use is: http://www.google.com/webmasters/tools/ping?sitemap=%s (see this thread)
I've committed a new plugin to Spartacus that allows users to use a very simply Notification System.
Users can create text (HTML formatting configurable) that will appear on the Admin Backend. A small goodie is a feature that notifications are subject to specific usergroups - only the usergroups for which the creator intentionally posted the message will see it.
The plugin also allows to configure whether normal users are allowed to use the messaging system. In the future this could be enhanced for more granular control, but for the time being it should proove a nice tool. The display of the messages can be controlled via a bundled notes.css CSS file.
CSS formatting also allows to format new incoming messages differently. Now try it out and have fun
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.
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. :-)
For anyone that does not know what "Cronjobs" are: This is a service, one of the UNIX/LINUX server oldies, that permanently runs on a webserver and executes scheduled scripts at a given time/period. With this you can setup repetitive tasks, like to purge all your SPAM E-Mails every day.
Now, such cronjobs usually require you to have administrative privileges on the server where it is operated on. The Cron Daemon needs to run all the time, because only then it can execute a job at the exact configured time. Now a common use some people want is: "Fetch my E-Mail account every day to see if there are mails that shall get blogged!".
If you only own a usual PHP webspace, this will get problematic. You cannot create cronjobs there, and since PHP only gets activated when someone visits your blog, you can't really say "Execute this script at 00:00", because you don't know if your script is called at that time. This is the reason, why "cronjobs" are usually not encouraged to use on a PHP-basis.
The best way it can be emulated is like this: Every page call to your serendipity Blog can contain an invisible image that your visitors call again and again, and each time the script is called, it calculates the difference between the last script call and will then check which cronjobs need to be executed.
If your blog is low on visitors, this means that maybe a cronjob that is scheduled every 5 minutes would only get executed once an hour. There's nothing you can really do about that, unless you own a server were you can create a remote cronjob that calls WGET or similars on your URL, to fake regular visits to your blog.
Now that the principle bheind this is clear, here's what the cronjob plugin does: It emits exactly the invisible picture, and servers up multiple plugin API hooks that other plugins can use. Currently, only the popfetcher (1.13) and aggregator (0.7) plugins support cronjobs. Once you have the cronjob plugin installed you can configure these plugins inseid their own configuration to be executed on the available cronjobs.
Feedback about this functionality is appreciated. Be warned that this script of course creates extra requests to your blog. So if there's any way for you to setup "real" cronjobs, you are advised to do so.
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.
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:
I am pretty sure the nice people of Flock will report to popular demand - I'd really like to see progress in this issue :)
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:
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. :-)
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.
Reports of the past improvements to the spamblock plugin have been very positive. On top of that, I got aware that the WordPress Akismet.com Antispam Service is available for other systems of that. So I sat down and implemented their pretty easy API into Serendipity's Spamblock plugin.
For Akismet to work, you need a Wordpress.com user account, with which you get a "API Key". You must enter this API key into the s9y spamblock plugin configuration screen, and then also set the option on how to treat Akismet marked spam (either reject or moderate).
Please try out this plugin and give us feedback. You can download the updated version here:
serendipity_event_spamblock.php and lang_en.inc.php. Put those two files into your plugins/serendipity_event_spamblock/ directory. The plugin should be compatible with Serendipity 0.9.1, 1.0-beta and 1.1-alpha.
Thanks to the guys from Akismet for offering a freely available API to check Spam against! Letting the development community fight spam with bundled efforts is the only way we might get rid of the annoying destroyers of the Web.
As some of you might have noticed, the comment/trackback spam is currently improving again. The spamblock plugin currently can catch a lot of spam, but had a slight weakness in terms of processing the ruleset.
Usually, the spamblock plugin walks all MODERATE/REJECT rules, and aborts that checking once the first rule hits on a mail. Recently it showed up that most spam is set to "MODERATE" even before some more aggressive spam detection rules were executed, so you might have received Moderation-Emails quite often for emails that would have been marked as spam later in the ruleset execution flow.
The latest version 1.40 of the spamblock plugin (Download here) will now also perform any other rule checks on a comment/trackback, even if it already had been marked as Moderate. This way, you will have the chance that another rule marks the comment as spam, and then will not infiltrate your mailbox.
Please give us feedback to tell us if this works for you, or if that new behaviour introdues any problems for you!
In the past few days, several people asked for the possibility to quicksearch not only serendipity entries but also static pages and multilingual entries.
I was overwhelmed to see how easy adding support for both was possibly, and did so within the past 30 minutes. I guess this once again proves how flexible the plugin architecture of Serendipity is... :-)
To get quicksearch possibilites in the Static pages, just fetch version 3.30 of the staticpage plugin via Spartacus. It will be online within the next 48 hours. As soon as you've upgraded, the quicksearch will show the results of found staticpages below the usual search results. You can customize the output of course, via the plugin_staticpage_searchresults.tpl template file.
Support for multilingual entries has one caveat: It requires an updated serendipity core file, which I just committed to our SVN 1.1-alpha1 and 1.0 release branch: Patch. This allows version 2.0 of the multilingual plugin (also available on Spartacus the next 48 hours) to fully interoperate with the search facility. It will search all entries in the language you are currently reading in and display the entries completely interface with the usual search results.
Please let me know, if it works out fine for you. Note that fulltext search requires MySQL 4.0 and above - SQLite and postgresql emulate the search with a LIKE search. Expect some performance decrease in that matter.
Jay Bertrandt has created a very helpful plugin called Autosave. It helps you to make your browser auto-save entries you are creating to save you some trouble when the browser or your system crashes - which happens to the best of us. :-)
The plugin works with a lot of AJAX magic, and Jay would appreciate some feedback. Detailed descriptions and the plugin itself can be found on Jay's blog. Please test it - if it works as intended, he will shortly commit it to our Spartacus repository!
Joomla: Del.icio.us bookmarks tagged Joomla
CMS
drupal
plugins
Mambo
Wordpress
podcast
Joomla
serendipity
loudblog