PostNuke

Flexible Content Management System

Site search

Search results

hard to maintain. We're hoping you'll find the trac installation easy to use and navigate, and an improved NOC in all respects.

From the perspective of third party developers, trac provides a useful administration interface from which you can administrate all aspects of your project, from it's description to SVN commits list and file downloads. Trac also has much better milestone and target tracking for bugs and releases.

As a user, you can search the available projects, and use the clean navigation to find your way around. There's also an online SVN browser where you'll be able to look at a project's source code.

Chris is looking to begin converting projects over from the NOC as soon as possible. On request, he can import tracker and SVN history, or alternatively you can start afresh. He'd like to talk to people as he makes the conversion so that if anyone's missing something useful, or has suggestions he can improve the Trac installation for everyone.

Looking to the future, we'll convert the core PostNuke project over to Trac. We'll also try to get single sign on between community.postnuke.com and Trac working if possible.

If you are a third party developer, be aware that we are planning to close the NOC in the future. If you have active projects

Calendars! Calendars! Calendars!
A long time we all lived with PostCalendar - a complex and powerful modules that included Smarty before it was included as templating engine into the core. But the complexity was also the reason why the original maintainers gave up their work and nobody really picked it up again. Robert Gasch attempted to dissolve the code jungle and turned to other projects. Other modules like Zerocal, cal-zone or the pgCalendar addon for Pagesetter never really took off in the shadow of the huge PostCalendar. For a long time nothing much happened until recently several new calendar modules started to grow:

1. Daniele Conca's crpCalendar started off as a simple list of events but it is slowly turning into a full fletched Calendar with day-, week- and month-views. Moreover it supports hCalendar microformats and Content via plugin so you can integrate calendar events into your Content articles.
Download: http://noc.postnuke.com/projects/crpcalendar/

2. TimeIt is attempt to clone PostCalendar with .8 technology. In the meantime version 1.1 RC1 is released which not only offers all the features postCalendar has but also event registration and user events.
Download: http://www.assembla.com/spaces/files/cxTPX-9PKr3lxaabIlDkbG

3. Eventliner is a new Calendar which also imports PostCalendar data and offers day-, week- and month-views.
Download: http://noc.postnuke.com/projects/eventliner/

Good News for Communities
Florian Schliessl released a new, cool community module called ContacList which handles lists of friends. Your user will be able to ask other others for friendship and see their friends birthdays. The module can also be used in other modules to make user profiles aso only visible for friends. TimeIt already supports ContactList so your users can add their events or register and make this information visible to their friends.
Download: http://noc.postnuke.com/projects/contactlist/

Totally Web 2.0
Mark West released a little plugin that allows you to include these little buttons for all kinds of link services like del.icio.us, mr. wong aso. into your modules.
Download: http://noc.postnuke.com/projects/pnwebservices/

Pagesetter Successor
Marco Kundert is still working on his Pagesetter clone. The module will have all the features that Pagesetter has but replace all the stuff that JÃ¸rn first implemented in Pagesetter which now has been included into the core by the core features. Guppy will be repleaced by pnForm, the workflows will be replaces by the core workflows aso. Moreover he aims at making Pagemaster easier to use for beginners. Gabriel Freinbichler is already running a test version on one of his sites and he seems to be quite satisfied with it.

Shops
There are at least 3 forks of pnCommerce out there, maintained by RÃ¼diger Hahn, Jim Hatfield and others the problem now is that they all are very busy with their system and that they need to integrate all forks again to have a common code base again. There were several attempts to reunite the code but AFAIK the project lacks somebody who is really willing and able to put some time into it - who works self-motivated and needs the shop for his own sites.

Robert Gasch is working on a commercial shop. I had the priviliedge to take a look at it and it seems to offer a lot of very advanced features. If you need a shop and you are willing to invest some money into it, you should contact Robert.

Media
Axel Guckelsberger seems to have 50 hour days. His latest project is MediaAttach - finally a real solution for a central media repository. It still has some legacy from it's predecessor pnUpper but it already offers a lot of great features for the handling of media and it is included in Scribite and Content.
Download: http://noc.postnuke.com/projects/mediaattach/

Certainly there is a lot more going on - so if you are working on a project, please leave a comment.

If you haven't read that yet and is interested in OpenID then please read it here - it will explain the whole OpenID background.

For those of you that haven't heard about OpenID yet, here is the very short explanation: OpenID is a relatively new web-technology for managing your online identity. It's primary purpose is to facilitate Single Sign On across independent websites. This means you can create yourself an OpenID identity and use that for login in to different websites without having to retype your password over and over again.

When I wrote the last article I promissed to deliver an OpenID implementation for PostNuke, and, well, here it is! You can now download OpenID from the NOC OpenID project page.

By installing this module you enable your users to:

Register an OpenID with their PostNuke account and login with this OpenID. The OpenID manager page can be found in the user account panel (Profile).

Create an account on your website using OpenID's registration process.

The OpenID module requires PostNuke version .8 from SVN (april 15th) - and probably also PHP 5.x since a required extension "domxml" is not delivered with PHP 4.x.

Intra-web usage
You can use OpenID for Single Sign On between closed "intra-webs". For this
you must have a trusted OpenID Identity Provider (IP) - either your own or an
external one. Then you add a filter on the OpenID admin pages - this filter
should allow access from your trusted IP and deny access from any other
provider. In this way only users from your trusted IP will be allowed to access
your website.

Read more

You can find lots of information about OpenID around the web. The most obvious place to start is of course openid.net. But at openidbook.com you can get a free copy of the 200+ pages OpenID book from Rafeeq Ur Rehman. This should satisfy even the most curious people

With the display and delete hooks file uploads become possible in all hook-capable modules.
Many different file types are supported (images, music, videos, archives, documents, ...)
The most formats can be displayed embedded.
Enhanced file information like for example ID3 tags are read and cached with pnRender.
Also emedding external videos (e.g. YouTube, Google or Dailymotion) is possible.
Users can send files to themselves in mails.

Security

Files can be stored outside the web root, which is advisable absolutely.
If this is not possible, a .htaccess file can be created automatically for protecting direct access.
Therefore all access is handled by module functions and permissions.
A quota support cares for bounded storage limits.

Integration

Users can manage their own files in the profile.
With a Scribite plugin for Xinha media can be inserted in the editor easily.
A support for needles in the MultiHook also provides possibilities to include files in other content.
A Guppy plugin for Pagesetter is enclosed as well to be able to define MediaAttach fields.
Also the Content module is being supported by a flexible plugin.
More profound integration possibilities for special modules exist with create and update hooks.

Migration

An import from the file system is possible.
Moreover import options for Downloads 2, Mediashare, PhotoGallery and pnUpper are ready.

Comfort

Direct support for Categories.
Images can be scaled down.
Space-saving multi uploader if JavaScript is available.
Thumbnails can be cut out individually if desired.
The new search functionality is being supported.
The creation of bit torrents for files is possible.
Comprehensive PDF manual.

MediaAttach can be used as easy as every other display hook module (for example EZComments). But if one engages in it, he quickly perceives that the strengths of this module are it's flexibility and it's adaptability. It not only unifies file management and media integration, but can also be used as a gallery for example. Different annexed template sets illustrate several possible applications.
Also interesting is that one can activate MediaAttach also for MediaAttach itself which leads amongst others to the possibility to attach media to other media items.
The module offers concluding dozens possibilities which can all be used, but may not. For this reason it is excellently suited for being employed in project-specific areas and is furthermore in line with our framework idea why it is going to constitute an enrichment certainly.

.8 Final: the next step after RC3
Since the release of RC3, already a lot of bugfixes have been committed to the repository. The developers have agreed to address all new features to the .9 tree, where the two major changes (UTF-8 and gettext, see below) are already in active development. This should result in much shorter release cycles (and earlier release dates) also, and give module developers much more clarification on what to change in order to make their module work under the new major release. If needed, an final bugfizing weekend may still be organised for .8 final.
The upgrade from .764 installations on certain systems has been improved, by increasing the memory_limit to 64M. However, this only works for php version 5.2.1 and above.
Upgrading to .8 together with some 3rd party modules may raise problems when the modules upgrade process is not failsafe for .8 or if the upgrade function uses core functions of modules that are not available yet. Therefore the upgrade of 3rd party modules in general is avoided by following a white list of core modules.
Most site-specific data can already be easily overridden using the /config and /themes directories. The Multisites module however still needs some futher thought on the best way of running multiple sites from a single install. One method having multiple unrelated (i.e. non table sharing) sites of a single install would be to have config/site1, config/site2 etc., this will be postponed to a next release.
The Tour module is now in a state where it can be translated to other languages as well. Just translate the templates and put them in a subdir with the appropriate language abbrevation, all within the pntemplates directory.

MultiCategorization introduction and issues since
As earlier announced, a last fix for supporting MultiCategorization has been added to the core just before the release of RC3. Since those changes, another small fix was then required to be fully backwards compatible. On the module-devs list, the devs have discussed a lot on how to solve these issues. Chances are great that if the new (already committed) patches do not solve the problems, MultiCategorization might be postponed to later versions in order to fully test the new features.
For more information on MultiCategorization, visit this thread in the forum.

DOM extension to use correct paths in JavaScript
Some javascripts, eg. the lightbox, need to know the path to the system and the entrypoint as well (which can be configured in the settings), otherwise they may fail in case of short urls being enabled. Since dynamic javascript creation might be a performance problem, some inline javascript is added to the pagevars to extend the DOM:
- document.location.entrypoint: will be set to what is configured to be the entrypoint
- document.location.pnbaseURL: will point to the result of pnGetBaseURL();
Any ideas on how to make his more unobtrusive are very welcome!

PostNuke Upgrade Distribution
In previous articles and posts, the term '.8 upgrade pack' was used to represent a full .8 package, including 3rd party modules, to upgrade to .8 from an existing .764 installation. However, the term 'upgrade pack' is not quite correct and misleading, because it implies to be an upgrade package with changed files only, while the main parts remain as-is. The transition between .764 and .8 requires a complete exchange of all files, so the so called upgrade package is a complete distribution.
Now it remains what modules should be in an upgrade distribution, to be able to fully upgrade an existing .764 installation, including new versions of 3rd party modules. These include Downloads 2.2, pnMessages, Polls 2.0, bbcode / bbsmile, Weblinks, EZComments and MultiHook at least. This might need some additional testing with certain versions also.

Core changes and additions in the .9 tree
Mark has already overhauled some core API methods and calls. All systems modules are now using the Renderer Class instead of pnRender. Also, a first pass has been committed in changing all pn* function calls to new object method calls. For example, pnModGetInfo is replaced with ModuleUtil::getInfo and pnSecGenAuthKey is replaced with SecurityUtil::generateAuthKey.
For those who did not know: A class pnCompat.php still includes most oldstyle API calls for backwards compatibility.

GetText and Default DB Charset
Bernd is progressing rapidly on integrating gettext in de development tree, and has added po-files for all core modules. The required PHP version for .9 has already been set to a minimum of 5.1.6, and since version 5.0, MySql supports different character sets and corresponding collating orders. To run an application in UTF-8 (unicode) it is not sufficient to change the character set for PN; we needed to set the database encoding (actually server and client) to UTF-8 as well.
A user who wishes to run his site in multiple languages, needs to decide the database encoding at installation time. The default is UTF-8, because the current iso-8859-1 is restricted to too few language combinations. UTF-8 is a 'no-worry' setting because it will work with any language (as long as it is UTF-8 encoded.
This change is $PNConfig['DBInfo']['default']['dbcharset'] = 'utf-8';

To cache or not to cache, that's the question
Also discussed on the devs-list is the current (and future) state of output caching within PostNuke. Why should any application repeat the same processing tasks on a item that hasn't changed?
Not caching anything is fine if one has got infinite resources to throw at a site (and even then there are limits). But in reality there are finite resources and you need to take steps to ensure that those resources are effectively used. One method for that is not wasting precious resources repeating the same tasks time after time.
The key is effective cache management. Currently we put too much load onto the module to handle it's own caching. Once you then

For information, the URL rewriting is a module that you can activated in your apache to rewrite the links of a site in order to simplify their reading.

The idea is that the Pn Team also thought that the mod rewrite was not necessarily available / activated on all types of servers (particularly on Windows servers). Indeed, the Postnuke team offers rewritings based on tips already heavily used in management systems like blogs.

This rewriting reproduced a "virtual" Folders system on your site, links look like this

URL rewriting without mod rewrite
index.php/Users/logout

In terms of mechanism, it is very simple, when your Web server receives a request for a link, it loads instinctively page "index.html". In this index.php, the parameters of the request are recovered via the header (you can look in "phpInfo" there is a field $ _SERVER [ 'REQUEST_URI'] which corresponds to this information).Then these parameters are interpreted , between the first two "/" is the name of the module, between the two others, the function name. Now Postnuke know the name of the module and function to launch.

You can pass parameters too, for instance, if you want to load a forum with id=2, the links will look like this

URL rewriting without mod rewrite
index.php/Forum/viewforum/forum:2

Note that the url rewriting uses ":" to represent the parameters in a url. So you can't pass variables like this "index.php?variable=filter:3". (be carefull if you are using Pagesetter and his filters system).

URL rewriting with mod rewrite

Optimizing the previous version

In the previous example, all links contained index.php ... but it's ugly, and functionally this file contains no
information useful to load the asked module.This trick is useful when you have no mod rewrite, but if one has an "mod rewrite enabled" server,you can use a "lighter" version of the previous rewriting without an "index.html"

Here is an example

URL rewriting with mod rewrite :Optimizing the previous version
/Users/logout

Be careful, if one of your pictures is written this way and you load the page /MyModule/main/. "/MyModule/main/test.png" which will be searched. Note that you can make a rewriting that redirect all links of the form "/*/*/*.(jpg | png | gif)" to "$ 3. (Jpg | png | gif)." (but it's ugly).

Mode file

This url rewriting is the classical version already used in previous versions of the cms, The rewrited links are lists of words (module name, the name of function) separated by dashes. Note that this version uses a large number of regular expressions rules to do the rewriting compared to the other one, which may increase the load of your server Web.

Note that the "module" which one would have thought there's no point in it, is made for the support of the "old style" loading of modules.

URL rewriting customized

So here is the coolest feature, which allows you to customize the URL rewriting depending on the module you want to load. Just create a "encodeurl" function in your API module (pnuserapi) that takes as parameters, the information needed to create for output a fully customized rewrited link.

After, the loading of each page of the CMS, a "decodeurl" function in the API part of the module takes care to reformat the encoded url in a form understandable by the CMS.

You can find an example of the use of this method in the module "Pages" of values addons

This feature is interesting because it allows us to have the hands on your url, not only before loading the page, but after loading this page, allowing you post-processing actions rather interessant.

This method allow you to

- put keywords in the url: (see Pages module)
- have a single version of your rewrited url : Indeed, through the post treatment you can recalculate the url and it does not conform to your requirements, you can redirect to the good link via a redirect 301 "Moved Permanently headers.

Use case of a url rewriting "no duplicate"

Notes: A small problem nevertheless for the use of this rewriting, which is limited to the type url "user". (more details here)

This article is a translation from this "how to" released on Postnuke-France

Release Highlights
There are a number of improvements in RC3 over RC2, these include an enhanced upgrade script, the new Tour module and some last minute categories module improvements.

New Upgrade Script
The two upgrade scripts, upgrade76.php and upgrade.php have now been combined into a single file. In addition to this, a number of interface improvements have been made to make the process of upgrading your .7x series websites simpler and more reliable. The new script also solves some long standing bugs with the update proceedure, so we invite anyone who had problems with the upgrade proceedure previously to try again with this new version.

Tour Module
In an attempt to reduce the learning curve when first starting with PostNuke, a new module has been developed to introduce you to this new release of PostNuke. It provides a first time tour of PostNuke, introducing you to common terms like block, module and theme with which new users may not be familiar and also gives some basic hints and tips on where to start.

For more experienced users, there is a 'New In PostNuke 0.8' section, where you can discover more about this release of PostNuke, and a distribution tour, where authors of distributions can describe the purpose of their package and how it benefits you as a site administrator. The distribution tour page is stored in docs/distribution/tour_page1.htm, and an example is included in this release. This file is not intended to be viewed outside the Tour module, as the Tour module adds navigational elements around the page.

Finally, module and theme developers can include tours for their module, to introduce users to key features, or help them familiarise themselves with the basics. It is intended to serve as a crash course for all modules - be they complicated (such as pagesetter) or more simple (such as the Pages module). Certain modules have hidden features about which a user may not necessarily be aware, and we hope that the tour module will allow module developers to better promote the features their modules contain.

The tour module supports multipage tours for all modules - simply store tour_page1.htm and any subseqeuent pages in modules/yourmodule/pndocs/, or themes/yourtheme/docs.

Categories Improvements
The categories module received a few last minute improvements in SVN just before the release of RC3. These improvements are

Customize title
You can customize the general title of your postnuke, by filling in the correspondant fields in the module "settings". The problem is that, you will have only one title for the whole website ... and that's ugly (and bad for SEO).
A solution was offered by Markwest, in order to personnalize this title, on every pages.the title tag plugin

This plugin allow you to format titles like this
Classic titles
HTML for Module Developers - A Discussion :: pnCommunity :: Support at your fingertips

if you want to have shorter titles like this, you can use the other unofficial version in the comments.

Improved titles
HTML for Module Developers

If you're using pnForum, it will give you title like this

PnForum title

Customize meta "descriptions" and "keywords"
You can customize the meta "descriptions" and "Keywords" of you CMS, by filling in the correspondant field in the "settings" module, but with this customisation, you will have only one "description" and "keywords" fields for all the site.
In order to improve this, there are two plugin on the community repository, one for fixing the descriptions and the other one for the keywords tags.

Notes : As the Search engine were spammed by overloaded keywords tags, for most of them , they don't consider this tags anymore.
If you're using pnForum, it will give you this :

PnForum metas

Activate url rewriting
You can activate the url rewriting in Xanthia, go to the Xanthia module, then check the options "use short urls", and copy paste the .htaccess file from the "doc" folder to the root of you CMS.

/!\ Be careful, live search doesn't url with more than two dashes

Notes : an improved version of the current url rewriting is available in postnuke 0.8.

Duplicate content

Don't duplicate links in your portal, two differents links must not point to the same content. Indeed, some search engine don't like to see multiples versions of the same page on a website (that's called "duplicate content")

An other tip, "/index.php", "/index.html" and "/" redirect to the same page so you can add this rule in you .htaccess
.htaccess
RewriteRule ^index\.html$ http://postnuke.com [NC,R=301]
RewriteRule ^index\.php$ http://postnuke.com [NC,R=301]

Text formating

In your articles or templates, try to have a structured layout with H1, H2, H3 tags.

Autolink and intern link
The module "autolink" is interesting, because he allows you to create a large amount of intern links with the same source anchor, this will help to increase your rank on the given word

404 error

When you've got an important portal with a large number of pages , it may be possible some of you ranked pages doesn't exist anymore. When search engine bots come to look for this "ghost" pages, you can redirect them to the home of your website, with an "Error 404" header.

.htaccess
ErrorDocument 404 /index.html

Take off unused metas tags

For most of them, search engine bots don't read some meta like "revist-after", so you can take them of your head tags. It will not help you, but you will have a cleaner header.
xxx.html

This article is a translation from this "how to" released on Postnuke-France

Welcome Mateo, tell us a little about yourself. Who are you,
where are you from, and what do you do?
My complete name is Néstor Mateo Tibaquirá Palacios, but I prefer to be called Mateo. I'm from Colombia, a very beautiful country with some horrible problems; balanced, eh? I live in Popayán, where I'm finishing Electronic & Telecommunications Engineer Studies with an emphasis in Telematics (Information and Communications Technology). I chose Telematics because I like to program. Growing up, I did not have a computer, and from the distance I hated the idea of using a command line console. Now, it's different; I love my Ubuntu with the Yakuake console; and Eclipse PDT rocks!
At the University, I discovered that I had sufficient skills to write software. I began programming in C++ and Java some time ag