-
About
(Content)
-
web site and provides the webmaster with a site they can administer with a minimal amount of HTML knowledge through a web browser.
But, PostNuke's functionality can be increased by installing modules, blocks and themes. For example, you can add a forum, a gallery and contact form. You can also change how your entire site looks by changing themes. All of this can be done with just a few clicks in the administration panel saving you hours of time, both in the initial creation of the website and in its day to day maintenance.
PostNuke can do anything from traditional blog websites, to a community members' only website with hundreds of users. PostNuke
Generated on January 30, 2009.
-
Welcome to Zikula
(Admin_Messages)
-
system (CMS). It is far more secure and stable than competing products, and is able to work in high-volume environments with ease.
Some of the key features of Zikula are:
customization of all aspects of the web site's appearance through themes, with support for CSS stylesheets
the ability to specify items as being suitable for either a single language or for all languages
the best guarantee of properly displaying your web pages in all browsers, thanks to full compliance with W3C HTML standards
a standard API (application programming interface) and extensive documentation to allow for easy extension of your web site's functionality through modules and blocks.
Zikula has a very active developer and support community at zikula.org.
We hope you will enjoy using Zikula.The Zikula development team
Note: you can edit or remove this message by going to the Administration page and clicking on the 'Administration messages' entry
Generated on December 20, 2008.
-
HTML for Module Developers - A Discussion
(News)
-
ideas about good HTML. I haven't seen any layout tables for months. Many module devs even try to put semantics into their work.
No matter there are some things, I'd like to point out and discuss with you.
"Divitis" is the name of a HTML coding style that puts every possible Tag into div-Tags. I personally only use divs for the general positioning of my layout: header, content, left block, right blocks, footer. Anything else doesn't need divs around it. You can position every other tag in any way you can position and style divs.
Some of you use a separate class or ID for every single piece of content. This makes the code seems bloated and hard to maintain. Please use only as few classes as possible.
Some modules have a very great design but it doesn't really adjust to my own themes. Please don't define the style of h-tags, p, ul, ol aso. in terms of color, line-height or font-size and style. I think most webmasters already have a site wide definition for these tags and want all h2-tags look the same all over the site.
Use the CSS inheritence system for a slim style sheet: In .8 everything your module produces is put into a div:
[code][/code]
So if you want to style you module use e.g.:
[code]#pn-maincontent.pn-module-YOUMODULE * h2 {}[/code]
to make every h2 look the same in your module.
Please don't use h1 - h1 is the site's name.
These are no official guidelines - only my personal opinion which I wanted to discuss, in order to develop a list of tips for
Generated on November 21, 2007.
-
What's going on?
(News)
-
holidays there was not much acitivty in the SVN but now that both Mark and SVN are back we are fixing the remaining bugs for the RC2.
2. A name for the rebranding has been chosen. The Postnuke Foundation is currently in the process of trademark- and domain registration. The legal stuff seems to take some time. It won't contain a P or a N - so if you plan any new modules you shouldn't call them pnThisAndThat.
3. Speaking of module development:
a) Axel Guckelsberger of the Steering Committee just presented his diploma thesis: Modulestudio will not only revolutionize the way of programming Postnuke modules. It is way ahead of other similar systems. There will be a free version available but this will be a limited version.
Modulestudio, Google Video
b) Jørn Wildt started the work on the content module we discussed some months ago here and at the pnMeeting. This module is simply called "Content" and it uses all the new stuff in .8. The principle behind "Content" is that you first choose the layout of the article you want to write (1 column, 2 colums, whatever you like) and then you place blocks of content inside this layout with a smooth javascript interface. These blocks can contain text, images, videos, Google Maps aso. More blocks can be included as plugins.
http://noc.postnuke.com/projects/content/
c) As Jørn Wildt ceased work on Pagesetter ("I does all I need and it runs with .8") German programmer "Kundi" has picked up this work. He completely rewrites Pagesetter in order to remove Jørn's Guppy form framework and to include .8's Form framework, workflows aso. His first release will do everything that Pagesetter 6.3 does and it will be able to import from Pagesetter. Kundi is currently looking for a nice new module name. Any suggestions?
d) Robert Gasch works on a shopping module which won't be GPL - I was able to take a preview and it looks very adult and I think it will be worth it's money.
e) The last time I looked at pnUpper it was kind of a niche module that I never really had any use for. Axel Guckelsberger is currently turning it into a full fletched media library for the central storage of any kind of media to be used in other modules. Thus he renamed it to MediaAttach.
MediaAttach
4. Now that the NOC seems to be kind of stable again we hope to have time to replace it with a less complicated software. We ar
Generated on November 20, 2007.
-
pnMeeting 2007: Mark West talks about .8/.9
(News)
-
system information module will make it easier for webmasters to collect the needed information in case they seek help in the forums.
The use of Ajax makes the handling of various modules far easier. You can drag and drop permissions or user information fields. And on the user side you can for example rate a content item using the Ratings hook using an Ajax function and not having to reload the whole page after rating it.
The new URL system add permalinks to .8 and make URLs nice and readable as you can already find them in other systems like Wordpress. The permalinks can be defined by the administrator and can be included into other modules. It already works for example with the News module and the Pages module. The Pages module in the Value Addons package is the successor of Mark's htmlpages.
Included into the new Theme module is a Theme generator that creates all the basic files and file entries you need to start working on a new layout.
A real enhancement compared to .7 can be found in the block control - Blocks can be dragged and dropped into place and various block setups can be set not only for modules but for single content items.
There are still 2 or 3 major bugs in the bugtracker that are already partly fixed but which must be fixed before RC2 can be releast. That shouldn't take too much time.
In his outlook on .9 Mark explained that all Postnuke releases after Feburary next year will at least require PHP 5.2 - so ask your hosting providers early enough for updates. The background of this decision is the move towards object orientation in the Postnuke codebase and the fact that PHP 5 is around long enough now to become standard.
The language system is the last big project on the roadmap towards Postnuke 1.0 - other PHP projects will be evaluated to find the best solution. In the same move the internationalisation of content will be improved. Direct translations for content must be possible - News articles with the same ID in different languages are the result. Again getText was discussed as a possible solution and the move to UTF-8.
One of the most complex parts of Postnuke today is the Permission system. It is powerful yet often to complicated. So soultions have to be found to solve standard permissions requirements.
Axel Guckelsberger requested an addition to the hooks system - hooks don't know the permissions a user has for the item they are hooked into. So if you want to download a files that is attached to a forum post the permissions to download would result from the a) the permission of the user to view the thread and b) the permission of the user to download files. Hooks are today blind for this. Mark agreed that this had to be changed for future releases.
While talking about hooks Frank Schummertz requested more hook types. Currently we have display, transform, create, update and delete hooks. A required new type is the init or pageload hook that hooks into the start of the system like the spam prevention system BadBehaviour for example that stops the loading of the page if it detects a spam bot.
Mark Ronchera asked for the use of OpenID in future releases which Mark West answered by explaining the flexibility of the .8
Generated on September 9, 2007.
-
Recovery Console for PostNuke .8+ - Now Available
(News)
-
Onboard Tools
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.
Additional Features
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.
Security
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
(News)
-
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
Jørn has moved the pnForm framework to it's own module location within the system directory. Major reason for this is to properly save some pnForm specific javascript and style files. Usage of the module should be quite the same. In addition, some new context menu plugins have been added. These plugins create a popup menu to be used as a right-click context menu. More information can be found in the added files in the pnForm plugin directory, and at the pnForm Wiki Pages.
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.
-
Stop overwriting my work!
(News)
-
one user at a time has access to it. This can be used to avoid our classic concurrency problem:User A starts editing an article.
User B edits the same article.
User A saves his work.
User B saves his work and thereby overwrites user A's work without knowing it. If we add a page locking feature to the editing page then this would happen instead:User A starts editing an article.
User B edits the same article. But the page is overlaid with a dark transparent skin that blocks the interface. In the middle there's a message "This page is locked by another user" plus some more detailed information about the lock.
User B waits until A is finished editing.
After some time user A commits his work and user B's window automatically reloads with the new data ready to edit.
This is what the PageLock module will do for you. When user A opens his window it will register it and start pinging the server
Generated on March 19, 2007.
-
Did you know: Implement your own Admin-Theme
(News)
-
I always a very simple theme for the backend. I don't need any blocks there at all. And I don't even need a header or and other of this fancy corporate design stuff. I want space for my work. Thus the admin.htm is very short:
[code]
[ Home | Administration | Statistics ]
[/code]
That's it.
Save this as admin.htm to /themes/yourTheme/templates/modules
Add a new Theme Template: Administration/Xanthia/Edit Theme/Theme Template/New Module Template
Name: admin.htm
You have to enter something to the text area. Just one letter is suffcient. It only can't be empty.
Save that.
Add a new Theme Zone: Administration/Xanthia/Edit Theme/Theme Zone/Add New Zone
Name: Admin
Zone Label: *admin
Save that.
Now configure the new zone and choose admin.htm from the drop-down
Activate the new zone.
Done - Your new lean backend layout will always appear when functions are called via admin.php (old-style) or with type=admin within the URL.
We will have a small problem with pagesetter. As it doesn't have a clearly defined backend there's no type=admin in the URL. I always use a small "Pagesetter fix" in my master.htm:
[code]
[ Frontpage | Administration |Statistics ]
normal body
[/code]
I hope this article helps you implement a better backend with much space.
Generated on March 15, 2007.
-
Development Update, February 2007-02
(News)
-
release, and some is part of the current nightly build from SVN. The items that are part of the MS3 package are indicated with a (*).
Installer and upgrade path
The installer for .8 now also checks for a web-user writable pnTemp directory. Before, only it's subdirectories had to be writable. However, more and more modules need a (temporary) writable directory of their own (for example cache directories for image creation or rss feeds). With a writable pnTemp, these modules are now easily allowed to create that directory themselves if it does not exist. (*)
The upgrade path from the historic .7 family has been updated: Some code has been added to migrate blocks placements into the new block_placements table. (*)
Furthermore, old style (legacy) blocks can now be stored in the /config/blocks directory. The specific files do need to be copied manually from the old /includes/blocks directory to it's new location. (*)
Core (API) and environment variables
In the core pnAPI, get_magic_quotes_runtime() was called lots of times for different purposes. With an internal caching method, the result is stored in the global PNRuntime array. Big advantage is that the site's speed has been significantly improved. (*)
Robert has added an enhancement to allow the pnSessionGet/Set/DelVar functions to accept an (optional) path argument (arguments 'autocreate' and 'overwriteExistingVar'). This will allow for easy setting of complex array structures. The change only adds extra arguments to the existing functions and are backwards compatible. At this moment, no direct usage has been committed yet.
PostNuke Object library
At this stage of development, a lot of changes are (and have been) made to the object library. Most of them are 'simple' bug fixes, but some changes are worth mentioning here (additional functionality or changed methods).
In the DBUtil class, there now exists a new method to increment a field with the function incrementObjectFieldByID. This can be used by module authors for updating read counts of content items for example. (*)
Additionally, the function selectScalar has been added (which takes a SQL quesry as argument). This is mostly useful for places where you want to do a "select count(*)" or similar scalar selection.
The utf8 conversion functions (convertFromUTF8 and convertToUTF8) have moved from AjaxUtil to DataUtil when solving a bug to keep the users input in Ajax driven fields as they are intended.
While solving a Google AdSense script bug, where the script tags were automatically cleaned by the safeHTL output filter, a new feature has been added to FormUtil: Before cleaning posted input on an already installed site, the FormUtil now checks if the current user has overall admin permissions. This allows site admins to input potentially harmful tags (javascript for example), but it's their site after all!
Jörn has improved CSS style handling in pnForm plugins, as he has changed some pnForm classes to be derived from pnFormStyledPlugin, which in itself is derived from the original pnFormPlugin.
Because it's better to read the languages directory first for available languages and compare that result against the full list of languages in stead of the other way around, the LanguageUtil has a new function getInstalledLanguages. This now significantly reduces the number of directory checks.
To ensure that most commonly used plugins are found as early as possible, the order in the pnRender class, where the system is searching for plugins, has been modified. The current correct order for the 0.8 distribution is:
system/pnRender/plugins
system/Theme/plugins
config/plugins
current theme-directory/templates/modules/$module/plugins
current theme-directory/plugins
current module-directory/pntemplates/plugins
Furthermore, two new variables can be added to the rendered output page using the PageUtil class. First is 'description', which is default set to the current site slogan. Second is 'footer', with the ability to add custom content just prior to the closing body tag. The latter function is applied as an outputfilter.
Finally, an additional parameter 'display' is added to the pager plugin, which can be set to either 'page' or 'offset'. This is (why am I explaning, isn't this rather self-explanatory?) to allow paging by pages, rather than offsets. It also mirrors the 'show' parameter that exists in many templates (based on the example module) but was never actually implemented.
Last but not least, the Theme class has now added support for a filters section in a page configuration file. This allows for loading of, in the first instance, custom output filters. Note there is no user interface to the functionality the moment.And, why not, the Atom theme has been updated to Atom 1.0
Module modifications
The following modules have been updated for improved .8 compatibility, or just to make administering those modules easier.
The User module now has the long awaited alpha pager for browsing users. (*)
All occurences of the block rendering APIs (read by the Blocks module) have changed from the old style call "return themesideblock" to "return pnBlockThemeBlock". (*)
To the Settings module there has been added a configurable separator for permalinks (*)Furthermore, a switch to globally disable JS Quicktags (which adds a set of buttons for common html tags to enabled textareas) is now part of the Settings module. (*)
Both the Ratings and the Multisites module are modified to meet the new standards of coding and templating. Work still needs to be done to both modules, so testing functionality for these modules may not be that worthwhile as yet. (*)
The Theme module takes over from the Xanthia module in an upgrade. This doesn't mean that it is not Xanthia anymore: it still is actually the Xanthia 3.0 engine (*).
To the Recommend_Us module a display hook has been added. This will add a list of social bookmark links, like the Diggers plugin also does.
Language files overhaul
The language defines in some modules have been reviewed and adjusted to the naming conventions of .8 (see also Dev Update 2006-06). This means that module-specific language defines start with a module-name specific prefix. Additionally, some new general language strings (using the pnML function) have been added to the core language file. The major effect this will have is to subtantially reduce the number of strings that need translating.These changes are applied to the following system modules: Admin, Admin_Messages, AuthPN, Blocks, Mailer, legal, Settings and SysInfo. ValueAddons modules will follow later.
PostgreSQL DBMS testers wanted
The .8 DBUtil class, as mentioned many times before, makes it possible to run PostNuke on different DBMS platforms, like PostgreSQL,
Generated on February 20, 2007.