-
Development Update, 2008-01
(News)
-
.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
Generated on March 2, 2008.
-
Development Update, December 2006-06
(News)
-
MileStone 3
The Dev Team is proud to conclude that MileStone 3 is quite near for release (check the .8 Development Cycle for details). With an enormous amount of commits from Robert, Oracle, PostGreSQL and MsSQL support are close (but not quite complete). The entire distribution should be tested for support to ensure the functionality. For this testing, there is an additional Theme plugin added for better / additional sql debug tracing output / options (function.sqldebug.php).
Patrick started finalizing the Search module, which involves every module that provides searchable data to have a pnsearchapi.php file and two templates, module_search_options.htm and module_search_results.htm. For better functionality, each searchplugin is given its own "namespace" via the array functionality of html forms. When each module is compliant to this standard, much gain can be achieved because (for example) inactive modules will not be called for a search query. Also, modules do not need to check for formdata themselves. See also Module Programming Part 4.
Drak has worked on an upgrader for 0.76x. This incomplete first version of upgrade76.php prepares the core so the usual upgrade script process can run.
Categories
The Topics module has been discussed within the theme. As most of you already know, the Categories module is much more powerfull for assigning categories (or topics) to various content on a PN site. The Topics module is an old style module, however lots of modules still rely on the presence of the module (or at least its tables), allthough the modules write directly to the code.
The Dev Team is currently looking for a way to import current Topics into the Categories so that, with an upgrade, on does not have to add these manually. It is up to module developers to support the new categories module, and not rely on the deprecated Topics module anymore. The import process of the Topics module will belong to the Categories module init.
We would like to urge all our test users (not necessarily has to be a developer) to take a look at categories, play around with it, test it, use it and come up with a list of bugs and suggestions for improvements. For feedback, one could use the 0.8-MS2 Feedback and (as always) bugs can be reported to the bug tracker.
System
Discussed in the team is the addition of config.php.dist files. In short, PostNuke is supplied with a dist file which will be read and modified by the installer, and then saved as config.php. The advantage is that config files can not be overwritten anymore when one upgrades it's PostNuke version. The disadvantage is that the webserver user (for example apache) will be the owner of the file. No decision about this issue has been taken yet, so for this time the historic way of config files is still active.
Jörg has worked on a basic check for module directory consistancy. This means, if there are duplicate module names (like system/foo and modules/foo, or even modules/FOO and modules/foo), the administrator will be noticed about this issue.
Another change is that module vars are now all serialized in the database and there is no longer any need for module developers to serialize or unserialize data before making the database calls.
The modules and system directories, and their purposes, were discussed. The system directory should only contain modules that are not allowed to be removed (the system wouldn't work without them), and the modules directory should include ValueAddons and 3rd party modules that are not a vital part to the core of the PostNuke framework. When you upgrade a module, it is left in an unactivated state, which isn't desirable to system modules. Therefore, System modules are now allowed to transition directly to active state after an upgrade.
The Error Logging functionality has been extended. If a pnRender template does not exist this will also be logged, which could be quite usefull for module developers.
The LogUtil::registerPermissionError() and LogUtil::registerAuthidError() methods are added. These method calls registerError and then logs the failed permission check and failed AuthID check respectively, so that they can be analyzed later. DB errors are now logged by DBUtil and Log Events can now be viewed in the Security Center.
Added by Frank is the option in the Users module to deactivate a user account untill the user re-accepts the terms of use. If he is logged in when deactivating the account he will be logged out during the next page load.
The returned header for a non existing user page now returns 404 in stead of 200, and the age check has been simplified and harder to get around.
Frank also enabled the addition of a generic object attribution (a very nice feature of the ObjectUtil) for the users table. Using this, one can add any datafield to the users table (as long as it is a string with max. 255 characters ;-) )
E.g. it is possible for pnForum now to store user related data this way, which makes its own user table obsolete. If you, as a module developer, need a new datafield, just add it and it is there.
Example: You have an attribute 'someattribute' with 'somevalue'. The array returned by pnUserGetVars() now contains an item '__ATTRIBUTES__' which is an associative array itself with key 'someattribute' and value 'somevalue'.
More information and code snippets can be found in the Wiki after the coding has completed.
Finally, the functions includeOnce and requireOnce were added to the Loader class, which speeds up require_once and include_once by a factor of up to 9 times.
New and updated pnRender Plugins
All pnRender plugins in the core will be renamed to lower case. The parameters used should also be lowercase. The Dev Team would recommend all module developers to do the same.
The following plugins were added or modified:
add_additional_header plugin is replaced with the pnpageaddvar plugin.
moduleadminlinks plugin is modified to add capability of separate title attribute, and allow links to be 'disabled'
pndebugenvironment and pndebug plugins are extended with more info and multilingual support
makelinks outputfilter (theme) plugin is a replacement for pn_bbclick, to create clickable links from urls
Finally, Jörn is planning to use the ExampleDB module as an example for the use of the pnForm plugins also.
ValueAddons
Some deletions have been applied to the ValueAddons directory, as follows:
TypeTool: This editor hasn't been updated since ages, the corresponding sourceforge project seems to be inactive for a while, and the html code created by typetool is not following current standards.
Replaced by Xinha (download)
Autolinks and Censor
Replaced by MultiHook (Minimum version needed is MultiHook 5.0 alpha)
Downloads: Maintained by cmods-dev.de
Weblinks: Maintained by cmods-dev.de
Messages
Replaced by pnMessages (download)
Polls
Replaced by AdvancedPolls (download)
Translations / Language defines
Another 'standard' that the Dev Team would like to recommend to module developers is the use of a naming scheme for translations, as it would help a lot to create more multilingual modules.
Each module should use module specific prefixes in their constant defines, e.g. _FOR_SOMETHINGISMISSING for Formicula or _PNMSG_INBOXFULL for pnMessages. This makes it easier for pnDefinemachine and can lead to more consistent translations.
This also enables us to implement an updated pnml plugin/function that offers the same kind of possibilities that the MultiHook has. All translated defines (or missing defines) get a little button that allows the admin to work on the translaton online while surfing his site. Changes will be stored directly in the pnDefinemachine tables to create the language files later on. Here the prefix enables us to attach the translation to the correct module.
Of course looking up translations in the database is a performance hog, but this should be used during development or if someone is not satisfied with an existing translation.
The current SVN packages can be more and more used as a basis for the .8 language packs: dutch and german translations have already been updated for use with .8, and can either be checked out through SVN or be downloaded as an alpha package.
.8 Stabilization: We need you!
To finalize and stabilize the last MileStone release (and to offer a first release candidate as soon as possible), we need you (the community) to test the current codebase. Install and uninstall all available modules, create users, play with hooks, create and use themes, develop modules, and so on.
Please download the latest Snapshot and install it on your test system (either a webserver, or your local Xampp installation). Wether you have IIS, Apache, MySQL, PostGreSQL or MSSql, it is interesting for all of us. Please also use the ValueAddons package and do the same. You may notice that no real new features are added to them, but this will come when the core is functional and as bug free as possible. If at all you find unreported bugs or errors, please report them in the bug tracker.
As already said: The Core Dev Team is at first interested in a working bug-free core framework and a functional upgrade path from historic distriutions. After that, new features can be added to several ValueAddons and other content modules. One could also use the current Theme module to generate Xanthia 3.0 themes. A useful help for this can be found on Drak's Theme Generator. Module Developers can find a Module Generator on the OpenStar site.
BTW, the .8 Developer Docs in the Wiki may already be very usefull, allthough the provided information is not as complete as one would wish for. Users may find lots of usefull information in the .8 User Docs.
Reminder: Please do not use .8 on any live production site! With MileStone releases or Release candidates, there is no guarantee whatsoever that the quality and security of your site and the product is assured!
Also (as read from the German Community Site) there are a few modules released in alpha status for users to test in a .8 environment:
Formicula 2.0 alpha: Download (Bug reports)
pnUpper 1.0 alpha: Download (Bug reports)
pnTopList 1.0 beta: Download (Bug reports)
Generated on December 18, 2006.
-
Development Update, October 2006-04
(News)
-
PostNuke and the aim regarding ValueAddons
There have been a lot of discussion about what release structure there will be in any future versions of PostNuke. Let us clarify this a bit.
As soon as the core codebase of PostNuke .8 is stable, it will be released as a core application framework, from which advanced users can create their own custom module set. Also available will be a package containing basic content modules, a simple page manager (Pages) and an News article manager.
Eventually, the aim is to build different distributions for different purposes. A good example of a (very very) extended .76x package is the current OpenStar distribution.
At this moment, there exist a few modules in the ValueAddons repository that have third party equivalents with improvements and better functionality than the historic ones. And even more important, these module developers have taken good thought about importing historic data from the original modules, so this does not mean you lose any when deciding to switch to an other module. Some examples are Downloads 2.0 to replace Downloads, MultiHook to replace AutoLinks, pnMessages to replace Messages and Advanced_Polls to replace Polls.
Maintenance of the 'old' ValueAddons modules is a lot of extra work for the core development team, which will not only delay any future releases of the core framework, but also increases the timeframe for functionality and feature improvements in these modules. So, the less there is to maintain for the core development team, the better they can work on security, stability and finetuning the core framework codebase.
We to make clear that adoption of old-style modules is encouraged! Please remember that there do not (and will not) exist 'official' ValueAddons modules. While we'd urge all third party developers to maintain high standards in their code (pnAPI compliancy, using hooks for better integration of existing functionality), this can't be enforced.
Secunia's vulnerability advisory on the core Downloads module
Secunia anounced a flaw which has status 'less critical'. The ability to exploit this flaw is limited, since it can only be exploited by administrative users: specifically, you need admin permissions to the downloads module . A new release for the 0.7x codebase is planned for next week, together with some other bug fixes. People who want to patch earlier can download modules/Downloads/admin.php from the SubVersion repository and replace their existing file.
Legal module
The German PostNuke community has hired a lawyer to update the German terms of use, because translations into foreign languages of the original legal module only work on a linguistic basis (and if at all they only apply to US-American laws). In some countries, maybe it is even better to not at all use the legals module, than to apply one that doesn't fit your country's laws. Every user should keep this in mind when using or activating this module for his / her site.
Sneak preview: Wendell's Admin theme
Wendell is currently working on a design for the PN Admin area. This is a first setup to make the administration interface much more user friendly and productive.
Code update for .8 Installation
Do you have a personal_config.php included in your installation of .8? That could be the reason for an MS2 installation problem. If you are having problems installing, try removing this file. Furthermore, lots of enhancements have been made to the installer routine. One can test it by pulling the latest nightly builds.
System Changes / Updates
In the Settings module, a link to the w3school page on each allowable HTML tag has been added to inform a user about the available tags.
The Modules module now shows a (more logical) indicator of a module's status: not initialised is red; installed but inactive is yellow; installed and good to go is green.
In the pnRender plugins, some additions and changes have been committed: The pnbutton plugin now utilises the button tag, and a suitable style for the button tag was added. On can add parameters like id, class, name and value. Furthermore, the date input validation was refactured, moving the parser into the DateUtil class. All pnForm* plugins have been reviewed and optimized by Jörn.
More information on the PostNuke Forms Framework can be found in the Wiki.
Miscellanious updates
Within the complete codebase, all occurences of extract($args) will be (or already have been) removed and replaced it with $args['myvar']. The reason for this change is that you should not use variables that are not expected within the function. We encourage module developers to not use extract also.
Error handling and Status reporting has been improved to also display module, file and line information depending on permission l
Generated on October 10, 2006.
-
Moving on: Better PostNuke ShortURLs
(News)
-
PostNuke sites well, while making the URLs hard to post to people in email or in forums. For instance, a news link looks like this:
/index.php?name=News&file=article&sid=123&mode=thread&order=0&thold=0
For some time now, PostNuke users have cried out for better Search-Engine Friendly URLs, and for the past few years, the only thing available has been a theme hack first detailed by Karateka (possibly E. Soysal before that, the links in the article are dead) way back in 2002, since worked on by ColdRolledSteel (Craig Saunders), and consequently me.
The advent of the ShortURL hack has seen sites hosted on Apache servers with the URL Rewriting module (mod_rewrite) enabled get URLs like
/Article123.html
for the above link, where certain assumptions have been made about the default settings for mode, thread and threshhold. A big improvement, but not very descriptive, and it comes at the cost of heavy post-processing of the site's content for links. Also, Search Engines use link keyword relevance in their rankings, and Article123 doesn't say much about the link, except that it's an article with the id 123.
As Karateka pointed out at the time in his article, a problem in implementing friendlier URLs with virtual directories is that all paths in PostNuke are relative, ie relative to the site root folder where index.php is located, and fixing it then would have required extensive changes in the core. That is, a URL like /Example/view.html would result in the browser looking for all links relative to its present location, ie in the nonexistant subfolder called Example, and subsequently it would fail to find the linked stylesheets, images etc, and all links from the page would similarly fail.
Unfortunately this situation has not changed in the intervening years, but as PostNuke modules are becoming API-compliant, they reference the same system function to build their URLs, so fixing this function and other associated functions to use root-relative links(1) will fix all compliant module URLs. But that leaves all other links, like images, Javascript, and stylesheets. The move to templating with Xanthia (for themes) and pnRender (for modules) is also making it easier, since Xanthia templates use a Xanthia variable to reference the theme's image directory path. So fixing Xanthia and pnRender will fix most paths in Xanthia themes. The exception are stylesheet and Javascript link paths and any links in the theme header, for which new path variables need to be introduced, so some updating of Xanthia themes is required. This makes the transition period to PN 0.8 an ideal time to introduced these changes, since few Xanthia themes have been released so far, and core modules are only just being converted to pnRender.
I stopped work on ShortURLs some time ago (before pn0.75) on the advice that a core module was being developed; however I have seen no evidence of this to date, and there is no indication in the upcoming PN 0.76 or CVS that there is anything coming. I got curious a month or so ago, and was somewhat dismayed at what I found.
Since then no progress seems to have been made on PostNuke ShortURLs. In fact, the current Xanthia filter hack has regressed, becoming bloated with complex and wholly unnecessary Regular Expression rules, many badly written with duplication and a number of bugs, especially in the accompanying htaccess file, going from the 15 rules proposed by Karateka to a massive 89. So, I set out to try and fix it, but ended up revisiting the idea of a core implementation using virtual directories to more logically structure the URLs in a way that is not only Search-Engine Friendly, but more User-Friendly.
Along the way, I've also been sidetracked and made a direly-needed new themable tab system for the Administration area based on AlistApart.com's Sliding Doors technique and consequently overhauled most of the Admin templates and a few User templates too, partly out of necessity due to the new Adminpanel, partly because they badly needed it. Those of you who have tried the pn0.76 Release Candidates would know that the templated output in them leaves something to be desired, drab and somewhat unprofessional-looking due to all the styling and CSS-classes having been ripped out, leaving a basic grey and white look with overly large headings and no theme tables for backgrounds. Hardly what you would call of Release Candidate quality. So pnRender and its plugins have been fixed to allow the use of Xanthia-like theme-colour tags as well as a tag for root-relative paths needed for ShortURLs, and the opentable functions have been fixed so that proper themed borders can be used. In fact most of the changes are in fixed templates, plugins, and module files.
My proposed implementation still retain the Xanthia filter for backwards compatibility with older themes, modules and blocks, but has been wholly rewritten and pared down to 24 rules, including a rule to fix all links to be root-relative. As PostNuke is in transition to be fully pnAPI-compliant by PostNuke 0.8, the remaining ones can gradually be removed altogether as themes, modules and blocks are updated. There's also a version for AutoTheme.
This particular scheme is experimental and may be tweaked or improved upon. It seeks to reduce the reliance on the Regular Expression(2) post-processing for links and introduce more user-friendly URLs that have more relevance for people and search engines alike by using virtual directories to visually distinguish sections of the site by module and function, such as
/Example/View.html
and for the News articles introduce Category, Topic, and Title information in the link:
/Category/Topic/ArticleXXX-title-of-story.html
For instance for a news story in the category Computers and the topic Postnuke called "PostNuke Shorturls", you'd have the URL
/Computers/Postnuke/Article123-PostNuke-Shorturls.html
This is a clear, concise and informative link that tells the user and search engine alike something about the link before going there, while retaining backwards compatibility with links of the old ShortURL scheme. It more closely emulates the way we think and organise information, using the folder analogy where we have a clearly-labelled Computer category folder, under which we have the various sub-categories - Topics - with various articles. In this case, we're using a virtual file anchored by the word "Article", clearly identifying it as such, followed by the article number and title. There is backwards compatibility, so that older links for Article123.html will still work.
In this instance I've excluded the News keyword altogether for brevity in favour of the Category and Topic keywords which insinuate News anyway, though there is nothing against being consistent with all the other ShortURLs and having the Module appear first, as in
/News/Computers/Postnuke/Article123:-PostNuke-Shorturls.html
This is for the special case of the core News module though, a more generic method is needed overall for URLs with various unknown parameters passed in the query string. This implementation uses the scheme:
/Module/Function-Param1:Value1-Param2:Value2... -ParamN:ValueN.(p)htm(l)
where the Query string parameters are tagged onto the virtual filename grouped by colons and separated by hyphens, the idea being to use commonly-used characters we might normally use in a list to make it look as natural and readable as possible. It may be a less-commonly used character than the hyphen is needed, like the tilde ~ character, since some parameter values may use a hyphen, in particular usernames. This is not a problem if passed as the last parameter, where it may contain any character. So if the module developer kept this in mind, it might not be an issue. I'm not aware of it being one so far. The PostCalender ShortURL plugin deliberately places uname, if present, last.
The extension is not necessary, but used for convenience. The 3 types used are either one of html, htm, or phtml, the latter useful to distinguish when you want to link to real HTML files on the site. The extensions as well as the option to use ShortURLs or not is set in the Settings panel, though I've only offered the option of html and phtml, since frankly the MS DOS-holdover extension htm annoys me.
Older URLs are marked with a + before the Function name, as in
/PNphpBB2/+profile-mode:editprofile.html
so that the server can translate it correctly. If the directory doesn't actually exist, entering
/Example/
will redirect to the Example module main page (Apache only)
/Example/main.phtml
which in return gets rewritten invisibly to
/index.php?module=Example&func=main
Otherwise, if it does exist, the index file of the relevant directory will be opened.
Similarly, with
/HTML/filename.html
if the file exists, it will be opened, else PN will look for
/index.php?module=HTML&func=filename
It is still possible to tag on query strings like
/ModName/main.phtml?theme=seabreeze
or
/ModName/main-theme:seabreeze.phtml
will both be translated to
/index.php?module=ModName&func=main&theme=seabreeze
There are any number of possible ShortURL systems, the simplest being to simply chop the URL into virtual directories, like /News/123/ from the above News example as some do. Xaraya uses a variant of this for news, though it doesn't use mod_rewrite, so appears like
/index.php/news/123
Again, this is concise, but contains few meaningful keywords other than the module name News. You can combine the two methods for News and have
/News/Category/Topic/123/title-of-article
which works very well, but loses some of the elegance of the above philosophy, since the latter part breaks up the virtual file into 3 with no anchor words, which is not how we organise information.
For generic URLs, there are a number of methods; for instance Mambo, another CMS, use generic ShortURLs like
/component/option,com_newsfeeds/catid,5/Itemid,7/
for a News URL like
/index.php?option=com_newsfeeds&catid=5&Itemid=7
where the querystring values are grouped by commas and separated by forward slashes (virtual directories). It is a ShortURL, though in this case not shorter, and doesn't have any useful keywords, other than "newsfeed", and is not very human-readable. For a generic URL, this is somewhat unavoidable, but can be better than that.
This implementation also contain a way to customise ShortURLs on a per-module basis through a file called shorturls.php placed in the module folder (see the Example module), such as the News URLs, or 3rd party modules like PostCalendar, which instead of the full URL like
/index.php?module=PostCalendar&func=view&tplview=&viewtype=day&Date=20050405&pc_username=&pc_category=&pc_topic=&print=
with the above generic ShortURLs would be rendered as
/PostCalendar/view-viewtype:day-Date:20050405.html
but with customised URLs become
/Calendar/05-04-2005/day.html
The beauty is, though, once we've created the groundwork in the core of PostNuke, any implementation will be fairly easy.
1) Root-relative links: Links relative to the server site root (eg /nuke/filename.html), which stays static, as opposed to relative to the present file (eg filename.html).
2) Regular Expression (RegEx): A complex pattern-matching language that can look a bit like a mathematical formula, used in the Xanthia ShortURL filter at /modules/Xanthia/plugins/outputfilter.shorturls.php.
----------------------------------------------------------------
If this were Mambo, I'd charge you 80 Euros for all this (the price for SEF Advance), but because you're all such nice people (except that guy up the back, you know who you are :) ), I'll let you have it for free.
A PDF of the ReadMe included in the package, but with additional screenshots, is found here (570kb).
I've also written a more technical ReadMe on installing ShortURLs, included in the package under the docs folder, and also found here.
here's a test of the tab system using the Aqua theme. It also comes with an XP-styled theme and the default-CSS-based one. I hope you like it, because it took a lot of work to perfect.
OK, screenshots: Well, no point having screenshots of URLs, so here's some of the tab system and modified SeaBreeze and PostNukeBlue themes' Admin templates instead:
1. The main adminpanel in PostNukeBlue with the Aqua-themed tabs, hovering over the Settings panel.
2. Same as above, but with the Theme Override set under Modify Config and with a tabs.css stylesheets in the theme's style folder. The rounded corners are only visible in Mozilla/FireFox.
3. The Luna tab theme in SeaBreeze, hovering over the 3rd Party tab.
4. The Xanthia Admin tabs using Aqua tabs in PostNukeBlue, hovering on Theme Settings.
And finally, the downloads:
I started out fixing PN0.75, so there are 2 downloads: One for PN0.75, and one for PN0.76rc4. I'll update it once the PN0.76 final is released.
Please backup your site before installing these patches, since a lot of system files are replaced. The PostNuke 0.76rc4 ShortURL package is rather large, consisting of some 400 files in a 1Mb zip file. The PN0.75 package has some 170 files and is around 800kb. Most of the changes are drop-in changes that doesn't necessitate updating of modules, but there are some exceptions in the PN0.76 package, in particular the Settings and Polls modules, where you need to first go to the Module list, regenerate, and update. Specific patches for popular 3rd party templated modules like AutoTheme and PNphpBB2 are included, but only a limited number of 3rd party modules have been tested with this package. No changes are made to the database, but it is still a good idea to back that up as well. You have been warned.
PostNuke 0.75 ShortURL package (833kb)
PostNuke 0.76rc4 ShortURL package (1Mb)
Two of the updated core themes:
PostNukeBlue (249kb)
SeaBreeze (120kb)
Feel free to discuss this proposal in the forums.
Enjoy!
Martin Andersen 8/7/200
Generated on July 9, 2005.
-
Downloads on PostNuke.com Target of Hacker: Immediate Action Required if You've Downloaded PostNuke in the Past Three Days
(News)
-
a different server. Second, in one file there was code allowing a malicious user to execute any shell command on the web server.
As noted before, immediate action is required from everyone who downloaded the .zip package between Sunday (24.Oct) at 23:50 GMT until Tuesday (26.Oct) at 8:30 GMT.
Required Actions
1. Immediately remove the affected file /includes/pnAPI.php and replace it on your server with the original one (either from a fresh download or from http://cvs.postnuke.com/viewcvs.cgi/Historic_PostNuke_Library/postnuke-devel/html/includes/pnAPI.php?rev=1.86&content-type=text/vnd.viewcvs-markup)
2. Check the access-logs for any entry containing 'oops='. If you find any call please contact the PostNuke Security Team via http://forums.postnuke.com/index.php?module=vpContact providing the access log for further investigation.
3. Change your database details, username, password and if possible, database name.
Future Safety Precautions
In the future to avoid downloading tampered files please compare the MD5 checksums with an independent source to ensure legitimacy, such as http://www.post-nuke.net. For those unfamiliar with MD5 it is a check you can use to make sure the download has not been tampered with and can be trusted. In order to compute a checksum you need an MD5 utility and you can find a variety of tools (for windows) here: http://lists.gpick.com/pages/Checksum_Tools.htm and another favorite is the free and platform independent open source project jacksum (http://www.jonelo.de/java/jacksum/) You can also find more information about this topic on Wikipedia at http://en.wikipedia.org/wiki/Md5
Finally, be assured we are working to find the hacker and will take any and all legal action when they are found.
About PostNuke
PostNuke is a community, content, collaborative management system, a C3MS providing webmasters with a set of tools to build a dynamically generated web site within minutes of downloading the software. It's backed by a team of dedicated, talented developers, designers, and volunteers with years of experience.
General Info About PostNuke:
Modular Structure, Customized Functionality through Third-Party Modules, Advanced User Group Permissions System, Multi-language Support (Approximately 36 Language Packs Available), Embedded WYSIWYG HTML Editor Activated on Most Text Entry Areas, Site Search, Advanced API (Application Programming Interface), Focused on High Level of Security, Easy-to-Use Guided Browser Based Installation, Easily Change/Customize Your Site's Look/Feel Through Plug-in Themes, Provides advanced content management features while promoting collaboration, communication and community around the content.
A Short List of Available Modules
News Publishing, Content Management, RSS Feeds, Voting Booth/Polls, Banners Module, Comments Module- allows other modules, including
Generated on October 26, 2004.
-
Brazilian Portuguese for 0.726 with over 60 modules!
(News)
-
supposed to "hit and run", because there might be some files which are heavily hacked -- yes, you can do that to translations, too :-)
That's because I used for quite some time pncUserHack (affecting NS-User, NS-NewUser and NS-Your_Account) and some News hacks. Also, Extended Topics and AT Lite Blocks might have different defines. But, anyway, that won't stop your site from working, of course. And bear with me, as this is a one man job.
But, please, send me your patches, so I can clean it up and release a FULL CORE COMPATIBLE TUpInUKIM, ok?
Here's the listing of modules included:
******************
* Módulos (63) *
******************
advanced_polls
All_Stories
Archive
Autolinks
Blocks
Censor
ChangePassword
ContentExpress
Credits
Downloads
dq_helpdesk
Encyclopedia
FeedBack
feproc
fetax
FormExpress
legal
MailBag
Members_List
Messages
Modules
News
NS-AddStory
NS-Admin
NS-Admin_Messages
NS-Banners
NS-Comments
NS-Ephemerids
NS-Groups
NS-Languages
NS-LostPassword
NS-MailUsers
NS-NewUser
NS-NewUser*
NS-Past_Nuke
NS-Referers
NS-Settings
NS-User*
NS-Your_Account*
pagesetter
Permissions
photoshare
phpBB_14
pn_bbclick
pn_bbcode
pn_bbsmile
pnTresMailer
PostCalendar
Quotes
Ratings
Recommend_Us
Search
seminars
shortnews
Stats
Topics*
UpDownload
Web_Links
xuser
* => modules duplicated in the pack due to hacks:
pncUserHack
ExtendedTopics
******************
* Blocks  (28) *
******************
admin.php
banners.php
big.php
category.php
emldaonline.php
ephem.php
error.php
finclude.php
fxp.php
i-featured_article.php
linklist.php
login.php
menu.php
online.php
past.php
phpBB_14.php
phplive.php
poll.php
progress.php
radio.php
recent_and_top_news.php
rss.php
rss2.php
stories.php
thelang.php
topic.php
user.php
whatsnews.php
Download link: http://prdownloads.sf.net/pnlanguages/pnlanguages-x_brazilian_portuguese-0726-tupinukim-A-beta.zip?download
Release notes (in Portuguese, pretty much the above info): https://sf.net/project/shownotes.php?release_id=239437
Project page: https://sf.net/projects/pnlanguages
Generated on May 20, 2004.
-
Interview: Mark West, Core Developer
(News)
-
Tell me about your postnuke "career".
I was looking for something a bit different to run a website for myself and a group of friends to orngaise our social lives - going to the pub, events, photo galleries etc. This was late in 2001. I installed postnuke, php-nuke and a few other dynamic website engines/content management solutions. At the time PN was on v.70x. Although I wasn't entirely happy with PN at this stage I read much about the direction of the project and the totally modular style proposed by the API and the general nature of where PN was heading. This fitted in with views on the required architecture for a site engine like PN hence I chose to wait for the .71 release and begin my work here.
.71 was released and many of the aims of my (little) project could now start to be realised. One necesssary feature was missing from my requirements. The core polling solution didn't fufill all of my requirements so I began coding. As with any new technology it was slow going at first - the API was brand new at this stage so the amount of people able to aisist wasn't as high as it is now. But I stuck at it and by june 2002 had the first version of my advanced polls module. At this stage I began to think about releasing
the code for the community. This was going to be my first ever code release and contribution to the open source community so it took a few weeks thinking to make sure that I had the time and commitment to support the module once released.
Hindsight says it was a good decision. The code was well recieved (despite some initial early bugs) and no public site. At this time I was asked if I would be interested in joining the core team. Unfortunately events of that summer meant that I never got to accept that offer - envolution and xaraya were born with PN continuing as well. At this stage I took at step back and concentrated on my own code and a full analysis (almost function by function) of the core code.
The new phpbb based forums came up and were a signifcant improvement on the old cyboards based forums, as has been shown by the success of these over the last 15 months. I began helping people out on the forums and with my analysis of the code on going began helping answer development questions. A few hours here and there became a lot more. By late january of this year i'd
reached a point whereby I felt I had a lot the offer the project and the community as a whole as well as having the time and commitment so stepped up again and volunteered to join the core team.
Since then i've been working more hours than i'd like to count helping shape what will be .8. The amount of work involved in the step that is .8 is something that I underestimated when joining the team. Taking that many modules to API compliance and fully templating the output has an proved to be a huge task.
What is your task in within pnCore?
My primary role is that of looking after the modules development. However I help anywhere where I feel I have something to offer. The main areas this doesn't involve are theming and anything requiring anything remotely graphical. I can write entire modules but get stuck with the admin icon ;)
What is your development like?
I'd probably descibe my development style as professional (due to the requirements of my job). Having taught programming; techniques, data strcutures and algorithms to first year undergrads at Kingston I would also say that I have a very strict style of programming - heavy on layout, consistency and style. Those that have taken a look at the .8 CVS should see a level of consistency of approach across all of the code I have written. I believe that the benefits of this strict, consistent and academic approach
to coding is a stronger, more stable and bug free end product.
The modular nature of PN has meant that even in the core team there hasn't been that much need to work very closely on individual code. Generally things revolve around a lot of discussion around the approach, style and form of a problem or solution before a line of code has been written and then one person goes away and produces that bit of code.
Community has a siginificant impact - I wouldn't be here doing this and spending the time I do if it wasn't for the community. I've made many friends across the world during my time on PN. I make a specific effort to be as prominent as I can on the forums. As coders we can often loose focus while our heads are in the code but time on the forums quickly re-focuses the mind. If people can't use or don't understand the product being produced then the development effort has been wasted. Much of the work I have done
has been centered around solving specific problems that i've encountered while helping others.
What is the biggest difficulty in your development?
The biggest difficulty I find is keeping the requirements of PN light due to my experiences with corporate style computing. PN has and always will work with some basic web hosting but this inherently limits the approach that a developer can take to a solution. For example there is always much talk about integrating product x with product y. If asked this question at work I would recommend directory enabling the product or selecting an alternative that already is. Clearly the average web hosting plan doesn't come with an
LDAP compliant directory.
Which route will Postnuke in your opinion go in the future?
I don't know that's really not up to me (well directly at least). The community will shape the direction based on thier feedback and experiences with the work that myself and others produce. The forums will again play a big part here. I'll soon know if something i've written isn't working as it should :)
What is the weakest/strongest point in PostNuke?
The strongest points are the community and the foundation that this provides. The weak point is documentation but then this is the case with 99% of open source projects and I have to admit that i'm as bad here as every developer that's been interviewed thus far.
Anything else you always wanted to say about Postnuke?
Aside from the name which i've always thought was kinda daft the only thing I can think of for the community to keep the suggestions and comments coming in and if anyone is thinking about wanting to help the team then I can always think of plenty of tasks assistence would be welcome on.
Thank you very much for you time.
No problem - happy to be able to answer a few question. I'll be off to the forums again....... Before I go though - if anyone wants to take a look at the advanced polls module look me up at http://www.markwest.me.uk
Generated on October 23, 2003.
-
Interview: Klavs Klavsen
(News)
-
What module(s) are you working on?
I help Øivind out a little with PagEd - he does some great work - and fast too !
I sent a few patches to Jason Judge, the creator of another great module called feproc (FormExpress Processor) - and as he didn't have an itch any more, he asked if I would like to take over maintainership, and so I have done, and released a few new versions with some features/fixes I needed myself :)
Other than that, I have made a small(!) addition to the FAQ module, that I hope will get in the PostNuke core soon - which makes the FAQ module require that you enter en email address, and emails the admin of the site, whenever someone enters a FAQ - they are both downloadable from my site http://VirkPaaNettet.dk. I've been trying to find out if it will be
included in the PostNuke core - cause if it does, I'd gladly add admin-options to the code, so one can select/deselect these additions - but no sense in doing this, if it's just going to be a bigger patch, for me to maintain seperately from the core of the FAQ module.
I also translate (or am working on a translation - delayed due to different reasons :) for PagEd, FormExpress, feproc and pncommerce when I get the time (and PostKart - available at my site, but you all know what happened to PostKart).
Basically, I don't like to re-invent the wheel - I'd rather improve it :) - and I always see if my suggested changes sit well (enough to be included in the main tree) with the maintainers of whatever I want to change/enhance a bit - as I don't want to be stuck maintaining patches that will never get in the real source. If I do make patches, I make them as small as possible, so that it's less of a fuzz to merge, each time the original source gets updated.
What is your real-life job?
I'm an Open Source and Security Consultant, and I have recently started a managed (ie. Only I mess with the source-code, and ensure it actually works - fixing problems, reporting them to the authors and adding features as my customers see fit) PostNuke hosting service, called http://VirkPaaNettet.dk My reasoning for doing this, was that I had used postnuke for more than a year, and was happy with it, so I figured that others could use this too and started it. My hope is that, if this becomes a success, I will contribute a percentage of my profit as donations to the maintainers of the FOSS that I heavily depend on, and if money allows, also sponsor whatever improvements my customers need.
I don't like to spend time, writing html for my site when I don't need to - I'm lazy, which I believe everybody should be. Less wars, better code :)
Tell me about your postnuke "career".
Well, my first real PostNuke site, was http://EnableIT.dk (original design, by a friend of mine, who'se a pro designer :) - and as you may be able to see, the pages are just the usual articles, with a few annoying things hacked away. This way to create pages, isn't very pretty IMHO, but then I found PagEd, which made me realize that with PN and PagEd I had a combination that could be used by everybody, even my own mom (and she does use it, for her up-and-coming company site :) - and started http://VirkPaaNettet.dk
When did you start working on your own module?
Well, I haven't written any modules of my own (only themes, like the one for EnableIT), I don't think I'm going to need to write my own module, anytime soon either, unless a customer wants to pay for it, as this is one of PostNuke's greatest strengths, the wealth of modules.
What is your development like?
I improve/fix where I need to and help out if I can and have the commitment to do so (I have to select my battles, as there are so many).
Do other people help you? How do you work together?
In regards to modules that I work on, I work via Instant-messaging with Øivind on the PagEd module.
I get great help from google, and people on different mailinglists, to which I'd like to extent a big THANK YOU, for lending me some time. I try to give back, by helping back on these lists, and on the lists of my local LUG (SSLUG), of which I'm a boardmember.
How big is the impact of the community on your development?
Well - google and mailinglists (and forums) are a big help. I'm hoping more people realise how great a module feproc is, and start using it :) If anybody is using it - do tell - I'd also like to build up the ToDo list, and people are more than welcome to submit patches ;)
What features should the Postnuke .8 core have to simplify your work?
The main thing I'd like is performance improvements in PostNuke - but until then, I'm going to up the performance with squid-2.5-reverse-proxy-patched.
The biggest issue there, is I can't seem to find anyone who can tell me why the POSTNUKESID is needed for anonymous users (and I haven't prioritized it enought to dig through and find out myself) - as I don't like that every page sends a cookie to my clients. the POSTNUKESID thing, should be deselectable - I can't see it's use for anything but polls, and
the poll module should set that cookie IMHO (by telling PN to do so - which needs to be possible - Xaraya has this feature now).
Which route will Postnuke/your module in your opinion go in the future?
I think PN will stay popular. The smarty templating thing in .8 will be really good - and I see modules like pncommerce and others already making their modules ready to handle this. If PN manages to make it easy for people to change the module templates - or just switch between different output (I mean easy, like my mom can do it via the menus), it will have become truely great.
Anything else you always wanted to say about Postnuke/your module?
Not really, I've said enough :)
Only thing I'll say is a big THANK YOU to all the FOSS developers, thanks to you I may be able to feed my family with the money earned by my virkpaanettet.dk service, and ie. get paid to develop/improve FOSS programs - could life be any better than that (except for kids and a family of course :)
Thank you very much for you time.
You're welcome.
Generated on September 25, 2003.
-
PostNuke CMS Make E-commerce Websites Affordable
(News)
-
e said. “So I started planning my site by analyzing how sites keep me coming back. Good content is the primary draw, but what else?â€
Analyzing Website Assets and Annoyances
After a few days of surfing her favorite haunts and examining sites she’d let fall by the wayside, Christie came up with a laundry list of characteristics that she liked: short, easy to remember and descriptive site name; clear focus and organization; easy navigation; free and meaty content; plus links to additional resources.
She also identified a number of annoyances that sent her running to another site: multiple broken links, signup required to access content, popup ads, outdated content, poor navigation and/or search capability. And her number one complaint—locking you onto the site by disabling the browser back button!
Website Do’s and Don’ts
Then she went one step further and read numerous articles on what other people look for. “These articles strongly influenced not only what features were incorporated, but where they are placed,†Christie said. “For example, privacy and the ability to contact a real person are top priorities for many site visitors. So I placed both in the top navigation bar for easy access.â€
She also discovered that the best sites are designed to involve visitors—to invite them to contribute content, give feedback, voice their opinions, and exchange information with and help each other. “To improve the ‘stickiness’ of the site, we expanded our plan to include a forum, polls, contributing content, free classifieds and a job bank. I also redesigned my e-newsletter tone to make it more personal, as well as to make subscribers come to the site to read the full story or fill out an opinion poll.â€
Custom Development Gone Wrong
After talking to several Web developers, Christie chose a developer offering a custom designed PHP solution using SQL databases to store thousands of stories and favorite links. However, two months into the project, it became evident that the developer didn’t have adequate programming staff to launch the site within the promised three-month schedule. Unfortunately, Christie felt she had few alternatives. “I’d already spent hundreds of hours working on the site design and adding thousands of favorite links and articles to the database—work that would be lost if I changed vendors.â€
Three months later and one week before launch, the site went down. The next day it was still offline, even the backend admin area. Then the dreaded call came: hackers had broken into the server hosting facility. “What about the backup? I asked.â€
“The last backup file was corrupted,†was the answer. A two-month old zip file didn’t match the current software version, making site restoration almost impossible—but they said they would try. “At this point, I lost all confidence in the developer—not to mention over five-thousand records I’d uploaded,†Christie said.
Searching for a New Solution
Christie wasn’t sure what to do. “I couldn’t afford the time or money to start coding the site from scratch. I knew I would be shopping for champagne on a beer pocketbook of $5,000,†Christie said. “But I didn’t want to compromise unless I had to.â€
Christie began searching online for a new developer. Soon, one of the people she contacted emailed her a slew of probing questions.
What kind of site do you need developed?
How did you choose PHP?
Is an admin interface required?
Do you need to manage banner ads?
What are your support requirements after implementation?â€
“I felt like I was taking a test,†Christie said. “But the quality of his inquiries gave me confidence this person wanted to clearly understand the scope of the project, as well as my level of expertise to manage the site.â€
Soon Christie scheduled a meeting with Scott Kroeger, owner of Hudson Avenue Technologies in Omaha NE, to discuss the challenges of launching such a complex site on a limited budget. After Christie reviewed her well-documented site map and specifications with Kroeger, he recommended a proven and supported open source content management system (CMS): PostNuke.
“Many developers start coding right away,†Kroeger said. “Since my background is in integration, I get more excited about finding open source software, figuring out how the code works and then using my technical skills and coding to make the modules work together. This way I don’t have to spend a lot of time programming from scratch and debugging code.â€
Integrating/Customizing Open Source Solutions
The two biggest challenges Kroeger faced with the PostNuke implementation were finding a site search solution and providing unique page layout capabilities for each major category or page.
“Linda wanted the flexibility of using html blocks to handle the bulk of the content,†Kroeger said. “However, PostNuke only searches major modules, not html pages. To resolve this issue, I integrated a PostNuke module called Content Express. This module provides the site with a very friendly admin interface for adding html pages and controlling the site navigation, as well as a search engine for html pages.â€
Unique block/page configuration for additional pages isn’t supported by a single PostNuke install. By examining other PostNuke site installations and reading forum discussions, Kroeger quickly figured out that multiple PostNuke installs would work around the page layout problem and provide complete control over the subsite blocks.
“A PostNuke subsite is an additional installation of PostNuke within the ‘main’ PostNuke installation,†Kroeger said. “For example, if the main PostNuke installation is installed under ‘/htdocs/postnuke’, a subsite would be installed under ‘/htdocs/postnuke/subsite1’. So my challenge was to figure out how to make all 28 installs talk to each other by modifying what database tables each subsite looked at. I configured the subsites to maintain their own block layouts—thus each major topic category or subsite/page can be laid out uniquely. Also, Content Express wasn’t built for multi-site configuration, so I had to figure out what it was doing to know how to integrate it for the multi-site solution.â€
To complete the site, Kroeger integrated free PostNuke modules to provide an ezine, forum, job bank, and banner/ad management. “Within two weeks, I was laying out pages and uploading data.†Christie said. “And by the end of two months the DoctorVAR.com site I’d dreamed about was up—within my $5,000 budget and without sacrificing one feature or requirement. The only software I had to purchase was a classified ads module and shopping cart for $59, plus a $30 theme. The rest of the software was free.â€
Kroeger added, “Because Linda had educated herself on Website design and defined the site specifications so well, I knew clearly from the start what was expected. This made my job much easier, which combined with my open source integration strategy, saved her a lot of time and money.â€
The flexibility, performance, and ease of administration of the DoctorVAR.com implementation is a testament to how robust and cost effective open source content management systems are for supporting robust e-commerce Websites.
For additional information about DoctorVAR.com visit their Web site at http://www.doctorvar.com.
Additional Resources:
DoctorVAR.com Website Content/Stickiness Articles
DoctorVar Web Presence Articles
Web Marketing & E-Commerce http://www.wilsonWeb.com/
Apromotionguide.com - Free Website promotion tutorial http://apromotionguide.com/
Content Express (PostNuke Module)http://pn.arising.net/ce/
WhatsNews (PostNuke ezine module)http://nuke-modules.gading.de/
phpAdsNew (open source ad server)http://www.phpadsnew.com/one/
phpBB (open source bulletin board) http://www.phpbb.com/
phProfession (PostNuke job bank module) http://www.phpsolutions.co.uk/index.php
Linda Freeman is a freelance writer based in Omaha NE.
Generated on March 15, 2003.
-
Brazilian Lang Pack for pn723 (and more)
(News)
-
All (afaik ;-) core files and standard themes and the modules below.
X's,
Murilo
get it at sourceforge
-------------------------
Modis:
advanced_polls
All_Stories
Autolinks
Blocks
Censor
ContentExpress
Credits
Downloads
Encyclopedia
FAQ
Members_List
Messages
Modules
News
NS-AddStory
NS-Admin
NS-Admin_Messages
NS-Comments
NS-Ephemerids
NS-Groups
NS-Languages
NS-LostPassword
NS-MailUsers
NS-NewUser
NS-Past_Nuke
NS-Referers
NS-Settings
NS-User
NS-Your_Account
Permissions
PostCalendar
postMyMail
Quotes
Ratings
Recommend_Us
Reviews
Search
Sections
shortnews
SnakePending
Stats
SteelKB
Submit_News
Top_List
User_Points
WhereBisDu
Wiki
Generated on February 5, 2003.