Publizjr 2 Progress Report - ΩJr. Publizjr Creates Web Pages

This information lives on a webpage hosted at the following web address: 'https://omegajunior.globat.com/code/publizjr/'.

Our favourite PHP-based page publication system is getting an overhaul. Read what this means to you.

Migration into Publizjr 2 of a 3rd-party website finished succesfully

March 12, 2015
Our senior software architect A.E.Veltstra succesfully migrated the website for Bauer Realty. The result is available in our private acceptance environment.

We recognised that having too many private functions in our PHP-based Object-Oriented PublizjrPage class prevents other developers from inheriting and overloading them easily. We have adjusted them to be protected, instead, and will adjust our API documentation accordingly.

We also recognised how easy it is to extend the PublizjrPage class with a Domain-Specific class in order to add new functionality. In the case of Bauer Realty, our programmer needed to move a function to display house specifications into a dedicated BauerRealtyPage class that implements PublizjrPage.

And finally: yes, we will be adding the function addNavMenu() to the Publizjr API, to show a site navigation menu on a web page. Updates should land shortly.


Migrating a 3rd-party website to Publizjr2

March 11, 2015
Resident senior PHP developer A.E. Veltstra is in the process of migrating the Bauer Realty website to Publizjr 2. This raises some interesting challenges.

For instance, that web site does have a main menu, and thusfar Publizjr did not have a built-in menu functionality other than a per page link list. If this migration proves succesfull, we might add a function addNavMenu() to the Publizjr API.


Added an addTranslation() function

Feb. 9, 2015
To enable you to add the contents of a translation macro to the page, without having to include the folder path of the translations (because you already provided that folder path when instantiating the PublizjrPage object).
Read our API documentation for details on the addTranslation() function.


Working on Publizjr 2 API documentation

Jan. 25, 2015
Intended for PHP programmers who wish to understand what Publizjr classes do and how to address them. Follow our progress here: Publizjr API Documentation.


VCard replaces contact information

Jan. 20, 2015
We have chosen to omit all other contact information, and show the vCard instead. We hope this works for most sites, but it does require a bit of additional work for those who are performing a migration.


Added a VCard addition function

Jan. 15, 2015
The Publizjr Generator classes now let you add a vCard of your choice. We let you set a default vCard for each Publizjr template, and we allow each child page to sport its own vCard (multi-lingual, of course). If no child page vCard is found, the generator class defaults to the default template vCard. If that one is missing, nothing is added to the page.


Parameter Abstraction of the Publizjr Generator Class

Jan. 14, 2015
For the past 2 weeks during the abstraction cycles we noticed a disadvantage to using an implemented class: every time we want to add a parameter to the class constructor, we have to change all the generator classes (luckily we only have 2 of those), and all the templates that use them. Ridiculous.

So instead, we abstracted the constructor parameters to an array with named keys. That means that as of this change, adding a constructor parameter no longer requires a change everywhere else.

Yes, this seems to fly into the face of API consistency, as the API no longer seems to dictate which arguments to pass to the object constructor. It does, though, and we have to add documentation to explain how and what. We feel that the reduction in maintenance effort outweighs the new documentation effort.


One Abstract Interface to Rule Them All

Jan. 7, 2015
The PHP middleware programming language lets us define an abstract class interface. This allows us to force all implementing classes to use the same base API, which they can extend, but not overrule.

Think of it like a building contract: all partners promise to use the same scaffolding, allowing for variations in the decoration.

This is exactly what we did with our Publizjr Page Publication classes. Both the single-language class and the multi-language class now implement the same abstract interface.


More Object Orientation

Jan. 1, 2015
We abstracted the Publizjr page generator into 2 PHP classes: one for the single-language websites, and one for multi-language websites.

The distinction between an extensible and a non-extensible template has been removed: both new classes include extensibility in the web page head and web page body.

The benefits of this are:
* Less repetition of coding, leading to faster updates and less mistakes;
* Shorter and easier to understand template files, leading to less mistakes;
* All the benefits of OO-design.

Expected drawbacks:
* Documentation effort about the Publizjr class API;
* Change effort to the downloadables;
* Increased dependencies may lead to slightly slower page generation;
* Change effort to existing generator templates.

First implementation, proof of concept:
We have implemented the new programming design into the templates and classes for the latest new section of our own website: ΩJr. Software Consultancy. We will be rolling it out slowly to the rest of our sites, and correcting errors as we encounter them.

As soon as we feel comfortable with the results, we will start updating the downloadables, so you can test it on your own implementations. Mind you that switching existing sites over to the new classes may take quite some effort.

Interested?

Let's meet for coffee or over lunch. Talk to me using this form.