MediaAttach RC 1 released
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.
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.
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.
An import from the file system is possible.
Moreover import options for Downloads 2, Mediashare, PhotoGallery and pnUpper are ready.
Direct support for Categories.
Images can be scaled down.
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.
Have fun with testing and giving feedback :)
Generated on March 7, 2008.
Development Update, 2008-01
.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.
- 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
Generated on March 2, 2008.
(if you already know OpenID then jump directly to the last section about
OpenID in PostNuke)
OpenID - a Free, Decentralized Online Identity
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.
Your OpenID consists of a URL, e.g., http://jornwildt.myopenid.com, and the OpenID technology makes it possible for you to prove that you own this URL. So, when you want to log in to a website supporting OpenID, you type this URL and then the website takes care of the rest (almost). EnThinnai Blog compares OpenIDs to credit cards: credit cards are issued by someone, it proves your identity at the issuer, you can have as many cards as you want, and in OpenID's case you can even use them to get access to places.
You can also use your OpenID to sign a weblog comment without the need to register as a user on that website. No one else can do that with your URL so your comments cannot be spoofed by anyone.
Take a look at these demos of how it works in some applications: OpenID for WordPress.
OpenID on blogger.com.
On Simon Willison's website you can also see some good examples of what OpenID can be used for.
One very interesting thing is that OpenID has just been adopted by Yahoo! So now each and every one of the 250 million Yahoo! users have their own OpenID identity. Even Google, IBM, Microsoft, and VeriSign have signed up to support the new technology. With that kind of backing OpenID is no more a kids toy.
OpenID is of course not the perfect solution for everything
(see for instance idcorner.org) but I would say it is close to perfect for Single Sign On and signing comments in the web/PostNuke world I live in.
If you want to start using your own OpenID then get one at
myopenid.com - it's free and it's all you need.
OpenID in a PostNuke world
PostNuke should of course also have such a thing as OpenID for Single Sign On, user registration, signing comments and so on. So a new OpenID module for Single Sign On and user registration is on it's way (expected release in March or April). Have fun with it.
An OpenID implementation with PostNuke should also enable you to use your PostNuke installation as an Identity Provider, meaning that your OpenID could be YourName.YourSite.com. Hopefully the OpenID module will support this.
Other uses for OpenID in PostNuke could be to sign comments using the ezComments module or pre-allow access to certain Mediashare photo albums through your friends OpenIDs. Only the sky is the limit and OpenID is free for you to use and invent with.
Regards, Jørn Wildt
Generated on February 29, 2008.
SEO for postnuke
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
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.
HTML for Module Developers
If you're using pnForum, it will give you title like this
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 :
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.
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")
To avoid this, you can use a robots.txt at the root of the CMS
An other tip, "/index.php", "/index.html" and "/" redirect to the same page so you can add this rule in you .htaccess
RewriteRule ^index\.html$ http://postnuke.com [NC,R=301]
RewriteRule ^index\.php$ http://postnuke.com [NC,R=301]
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
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.
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.
This article is a translation from this "how to" released on Postnuke-France
Generated on January 31, 2008.
Developers Love Feedback
good. And it's not even only good feedback they love! As long as the criticism is based on fact, well argumented and constructive.
Developers can't read you minds and [b]they[/b] know their work, [b]they[/b] can use it. Once in a while I read comments about modules like "Nice start, but there is still a lot of work in it and it's a bit buggy." Well?? If you don't report bugs and if you don't make suggestions on how to improve a module, you can't expect that things will change to your taste.
You are not a programmer? Okay: There are new module releases in the module database now and then - download every module and test them!! That is the least you can do for the community.
Certainly developers won't answer every single PM or feature request you write - but be sure: They will see and appreciate your work.
This is what YOU can do for Postnuke ;-
Generated on January 11, 2008.
How to build a distribution
You are able to point and click your own package - select some modules, chose a theme and there you have your very own package.
The easy distribution system will become part of pn.com and directly access the module database here. So that you are always up-to-date when you download your package. (BTW: They are not up-to-date now - it's only a beta!)
That is pretty cool, if you know what you need and if you know how to tie these modules together properly.
Become a Distributor
If you want to build a package that contains preconfigured modules with custom templates aso you should look into the wiki. There you find a description of a file that contains 2 functions. One function defines the modules that are to be installed and the other function can be used to call modules API function or any PHP function you like.
I this manner you can install your modules, configure them and fill them with demo content.
Finally you can replace the standard themes with some nice custom themes.
These distributions can then be included in Easydist as "Scenarios" or be distributed via your homepage or whatever you like.
Any questions? Comments? Critique
Generated on September 23, 2007.
New Shop, New Calendar - Postnuke Community gains speed again
New Community Modules
Have you seen Florian Schliessl's modules? The central module is pnProfile - an alternative profile module similar to the new core module or AdvProfile (which actually has become the new core profile module ;-) ). pnProfile offers dropdowns, textfields aso.
Another nice community module is Florian's UserPictures. It allows users to keep their own personal gallery.
I personally very much like Florian's ClickedMe which displays all the people who checked out you profile. Every user can choose for himself if he wants to be seen or not.
To cut a long story short: Florian has released a bunch other modules. A list can be found in his NOC profile.
PostBuddy is a module that copies a very popular function of mySpace aso - you can make people your friend and display a list of your friends in your profile. Cool, eh?
Has anybody tried pnConnections? It sounds like a cool module.
Did you see that Bernd Plagge adopted pnCommerce and released a working version? Contact him, if you are interested in cooperating with him! pnCommerce could use some cool new templates.
And pnCommerce has a young competitor! The development team has released a first beta of ShoppingKart. They are very active and keen on making ShoppingKart a cool module. IMHO their templates also lack beauty - but it's a first beta. ;-)
Robert Gasch and a user named "bones" announced to start working on a successor for PostCalendar - I'm really looking forward for that one.
But the grandmother of all calendar modules also has a competitor: crpCalendar. A neat little modules that's made to display a list of event dates - if you don't have too many of them it could fit your needs.
Did you see that Treverj is working on a cool Postnuke based Web 2.0 community site? Read: Project Updates.
The Spanish community released a Karma Addon for pnForum. You only need dpGraph for it.
Mark West released a new version of EZComments and added Akismet support. Akismet is the spam detection API of Wordpress. So EZComments sends all comments and trackbacks through Akismet to find out if it's spam or not. If you are working on any module that's been spammed - check out the Akismet module API and integrate its features into you module.
InvalidResponse released a first final version of his ElementBB forum. It's a nice and slim forum with great templates. Check it out at his homepage.
JÃ¸rn Wildt released a new content module that keeps content in a book like way and is made for team work. It's called CoType and should also serve as an example for a .8 implementation.
Hilope's Scribite is not only a module that adds the WYSIWYG editor of your choice to Postnuke modules. If you look deeper into the possibilities of for examples Xinha you will certainly never work on any site without this module. BTW: The initial development of Scribite was sponsored by the German Postnuke foundation. ;-)
Forgive me if I forgot your cool new module - this article wasn't meant to be complete. I wanted to give a little overview o
Generated on June 7, 2007.
Recovery Console for PostNuke .8+ - Now Available
Configuration OverviewDisplays many site config settings including module, block and theme detection.
Database Access RecoveryRe-encodes database credentials for the config.php file.
Theme RecoveryResets default site theme and/or resets user-applied themes.
Disabled Site RecoveryYou wondered what turning your site off would do...now you know! This utility restores the site to the "on" state.
Modules Module RecoveryDeletes any Modules modules entries found in the database and freshly installs the Modules module to the System category.
Blocks RecoveryA chart displays important block data and allows for disabling and/or deleting any content blocks. Changing the state of multiple blocks at a time is supported.
PostNuke Site SearchA built-in search bar searches the PostNuke site for content by keywords. Searches for matches in the following modules at this time: pagesetter, users, downloads, weblinks, comments, ezcomments, all news stories/topics, and all forums.
PHP InformationPHP info is displayed by section via a tidy menu.
About The ApplicationA dedicated page that displays licensing, credit and other general information.
Cross-browser-compatible CSS layout.
Highly accessible onscreen display.
Visual, interactive, informative navigation.
Various (but few) core images used for aesthetic lists.
Succinct onscreen instructions for each utility.
All actions require confirmation and provide error/status messages.
All forms re-populate themselves upon error.
Applicable current settings are displayed on every page, before and after recovery.
Utilities that are not needed intelligently disable themselves.
User input cleansing.
Filename can be changed without breaking the application.
Time-sensitive application lockdown.
Gracefully Degrades When
PostNuke version is less than .8x.
PostNuke initialization fails.
Application is under lockdown.
Application is uploaded to incorrect location.
Of Other Interest
Written as a PHP class.
Extremely commented code.
Output source is XHTML 1.0 Strict; tidy and skimmable.
Quietly runs with E_ALL enabled.
A big thanks to all who contributed to the original PSAK, which was the strongest inspiration behind this Recovery Console, and to those who contributed with ideas, feedback and testing of the PNRC, thanks for your time and effort!
Download the PostNuke Recovery Console now!
Generated on May 10, 2007.
Development Update, March 2007
Dot 8 evolving: language files progression and legacy functionality
Thanks to the testing of the community users (yes, YOU!), some legacy functions (residing in /includes/legacy/ have been updated by Simon to solve some bugs. This is another proof that we do need everyone to test the releases and help not only yourself to make this release a success! The following files have also been marked 'deprecated', with an accompanying comment in the DocBlock: admin.php, backend.php, banners.php, error.php, modules.php, print.php and user.php. These files shall be removed in the next (post-dot8) major release.
The overhaul of language files has also applied to the Groups, Theme, Users and Profile modules. These modules now have better multilingual options and (by using the pnML function), making it a lot easier to translate the package and showing better logic in grammar for localisations. Furthermore, lots of open bugs have been solved and the templates have been revised also. For example, the emails sent by the Users module can now be adjusted by just editing a template!
David Nelson has offered to completely review the language files for dot8, and we all have to thank Olaf Fichtner for helping revamp the current language constants. The PostNuke Languages Project is actively following the development!
Important change in the language strings is the use of the _CREATEDBY / _CREATEDON and the _UPDATEDBY / _UPDATEDON constants. For better support in other languages, these are replaced by the following:
'_CREATEDBY', 'Created by %username%'
'_CREATEDON', 'Created on %date%'
'_CREATEDBYON', 'Created by %username% on %date%'
'_UPDATEDBY', 'Last updated by %username%'
'_UPDATEDON', 'Updated on %date%'
'_UPDATEDBYON', 'Last updated by %username% on %date%'
and can now be accessed through the normal pnml plugin in the templates.
System modules: pnForm and PageLock
Also introduced by Jørn is a new system module. The PageLock module is a module that helps enforcing single user access to a specific page, by blocking access to other users when one has it open.
Example: User A opens article X for editing. This is registered on the server. User B tries to open article X for editing too. But as soon as the article editing window is opened, it is overlayed with a transparent dark film and a box in the middle tells the user "Sorry this page has been locked by user A - please wait or come back later".
Functionality: The lock is maintained by an Ajax plugin that keeps pinging the server as long as user A keeps the editing page open. When user A closes the window then the pinging stops and the lock times out. If user B chooses to wait then his page keeps pinging the server for the release of the lock (also Ajax) - and when that happens he gains access to the page. The module can be used on all pages that edites a single item - articles, user data, news items, book pages, permissions settings - you name it.
To use this system, a module author has to use API calls in their own code for adding or releasing a block: pnModAPIFunc('PageLock', 'user', 'pageLock', ...) and pnModAPIFunc('PageLock', 'user', 'releaseLock', ...). To see al this in action, grab the latest nightly snapshot and play around with the HowtoPnForm module: edit a recipe in one browser, and try to edit the same in another browser.
ValueAddons modules: Members_List and EZComments
The Members_List module has been revised by Mark West, with some added configuration options. It is now possible to set the number of (allowed) registered users, and some new blocks (featured user last seen and last x users) have been added. Check out the latest nightly build to see the functionality and options.
Mark has now finished the integration of categories into the user side of the Reviews, Pages, FAQ and News modules. This way, migration of .7x categories into the new Categories module is now supported and can be tested by our users who want to upgrade their .7 site to .8.
Finally, there have been added configuration options for categorization and category titles in the permalinks with these modules.
One hot issue at the moment is the increasing amount of spam that is on lots of websites at this moment. More and more features are to be found on the internet to prevent spam showing on your site. Akismet / Bad Behaviour are one of these. As some already know, Akismet has been applied in EZCommnents for a while. For testing purposes, Mark has implemented a bad behaviour (http://www.bad-behavior.ioerror.us/) function also for testing purposes (as Steffen has found that this could also be a good application). It does need some code hacking to pnApi.php at this moment, so only advanmced users willing to help integreating this feature are invited to test this and report any iussues to the EZComments tracker at the EZComments NOC project page.
Core and API: ThemeUtil and Categories
The pnTheme system has now been converted to the ThemeUtil class. With this conversion, all occurences in the core were updated too. Both the old and the new file are loaded in pnInit for backwards compatibility, but the old file (onTheme) and its functions are now marked as 'deprecated' and will be removed in the next major release.
Also added to the new ThemeUtil is a getModuleStylesheet method which contains the logic from the modulestylesheet plugin. You can do PageUtil::addVar('stylesheet', ThemeUtil::getModuleStylesheet('modulename')) to include the value of pnModGetVar('modulename', 'modulestylesheet') or style.css (in this order) or PageUtil::addVar('stylesheet', ThemeUtil::getModuleStylesheet('modulename', 'special.css)) to include the special.css file in your rendered page.
While unnecessary for correct functioning of the website, one is now allowed to turn off session regeneration completely. This is added because it may be helpful with a couple of undecided bugs in the tracker at the moment.
Module Development: information for 3rd party Devs!
Axel introduced a very nice application called EasyDist. This allows you to create your own PostNuke package easily. You can find it at modulestudio.de. It is still in a very early stage, but you should get the idea. This is all still in development fase and is just for testing purposes at this moment.
A preliminary for the (automatic) creation of packages using EasyDist is that module authors package their modules in a standard way. Right now, there are different file structures in the ZIPs or TGZs the authors distribute. We came to the conclusion that the preferred file structure inside the archive should be - modules - MyModule - pnuser.php etc so that an unpacked archive could be copied inside the pnroot. More information is in t
Generated on March 21, 2007.
it has now become a module of its own. It's not yet ready, but I hope it will be soon available for inclusion into guestbooks, comments, forums aso.
A module that Mark West released yesterday is "Bad Behaviour". "Bad Behavior is a PHP-based solution for blocking link spam and the robots which deliver it.
Bad Behavior complements other link spam solutions by acting as a gatekeeper, preventing spammers from ever delivering their junk, and in many cases, from ever reading your site in the first place. This keeps your siteâ€™s load down, makes your site logs cleaner, and can help prevent denial of service conditions caused by spammers." -- Bad Behaviour Homepage
As you include it into the pnAPI.php at earliest possible position, it stops Postnuke loading its higher functions when it detects a spam bot access. This means that all detected access cause only little traffic.
IMHO a combination of Akismet and Bad Behaviour will reduce the amout of spam on our sites without building barriers also for normal users. But we will have to live with spam, if we want to keep up our sites.
Bad Behaviour Homepage
Bad Behaviour Download
Support for both Bad Behaviour and Akismet modules.
Generated on March 8, 2007.