Jump to content
Matt
 Share


The "all new" Output Engine

Way, way back in the early days when we were planning IP.Board 3, a primary consideration was to completely overhaul the output engine to add several new features and to increase extensibility.

Out with the old...
The system in IP.Board 2.x is really just a perfunctory "engine" build around a few methods in a class. There was no real cohesive structure with many different files and functions accessing 'skin' methods. We decided that a virtual re-write was required.
We didn't want to be tied to a single output format. Back when IP.Board 2 was first written, there were no iPhones and the idea of actually viewing a forum on a cell phone seemed more than a little crazy. Times have changed.

...and in with the new
At first glance, the new system isn't that different from what we had in IP.Board 2. It's when you scratch the surface that its power becomes more obvious.

The first change is that you can have an unlimited depth for child skins. In IP.Board 2 you could only have one level of child skins which was very limiting to some skinners. Also, in IP.Board 2 there was a single master skin from which each skin inherited from.

While there is still a single "master" skin in IP.Board 3.0.0, it's completely transparent and instead you can set up several different "root" skins for which child skins inherit from. This instantly makes for more flexibility.

In IP.Board 3, each skin can have multiple CSS files which can be hard-positioned within the ACP to ensure the correct load order for correct cascading.

Also, each skin allows you to set group-based permissions so that you can determine exactly who can view and select skins.

And finally, guests can select a skin (as long as you give them permission to do so!)

Going Deeper: User Agents
IP.Board has a completely new user-agent system where you can add new user-agents and group together several. This system is now used for the 'search engine spider' settings.

This also means that you can tie a user agent to a specific skin. Do you want your iPod touch and iPhone users to use a specific skin? You can do that very easily within the ACP. Taking it further, you can even designate specific versions for each user agent. Do you want to take advantage of Firefox 3 or IE 8? That's very simple to do now. You can even set a range of versions very simply.

Going Deeper Still: Output Formats

The biggest change is that IP.Board can now handle multiple output formats. By this we mean that IP.Board has a plug-in architecture to allow completely different processing for HTML, XML or even WAP. This system is completely extensible so modification authors can easily write their own engine plug-ins which drop in and are available for use immediately.

Each skin must choose an output format to use which means that you can have completely different skin sets for XML and HTML bringing in even more flexbility.

You can also use a "gateway" file to set the output format. IP.Board 3 ships with two gateway files. "index.php" which is tied to the HTML output format and "xml.php" which is tied to the XML output format. This means that "index.php?showforum=1" and "xml.php?showforum=1" enable the correct output engine instantly.

Putting it Together

Take this scenario: You want to support WAP using XML with XLST templates specifically for Nokia cell phones. Done, done and done. All without having to make a single PHP modification.

Now that's a powerful system!

 Share

Comments

Recommended Comments

WOW! Its sounds amazing, the last sentence - "Take this scenario: You want to support WAP using XML with XLST templates specifically for Nokia cell phones. Done, done and done. All without having to make a single PHP modification" especially left me amazed!

Cant wait for IP.Board3 release date, or at least the beta version.

Link to comment
Share on other sites

I like the idea of choosing skins based on User Agents.
Some designs may work for IE and not work in Firefox, even after breaking through the code.

I would also like to see the ability to change skins based on the user's screen resolution if this could possibly be worked into the system.
I personally use a skin at 970PX and this is where most of my members are comfortable with, however there are still a few (8%) users that are running with 800x600 resolutions that simply can't use the skin as currently set.

One other thing I would like to see is a built in spam filter system that is as powerful if not more powerful than most 3rd party products. Allowing the administrator to setup spam keywords, filter urls from being used, email addresses - etc.

Link to comment
Share on other sites



And there are no language for guests... Or I miss some information? :(

Waiting release to update my mods...

This also means that you can tie a user agent to a specific skin. Do you want your iPod touch and iPhone users to use a specific skin? You can do that very easily within the ACP. Taking it further, you can even designate specific versions for each user agent. Do you want to take advantage of Firefox 3 or IE 8? That's very simple to do now. You can even set a range of versions very simply.

no words about opera :(

Link to comment
Share on other sites

[quote name='andaril' date='Sep 4 2008, 10:29 AM']no words about opera :(

And there are no language for guests... Or I miss some information? :(

Waiting release to update my mods...

You would be able to set it for Opera also, just set it up for an Opera specific User Agent String. Really, you could set it for any browser using that.

Link to comment
Share on other sites



This isn't technically feasible within the system - the user's screen resolution is never sent to the server so PHP has no way of setting a skin based on it (you could, however, make a javascript function in your custom skin and have it redirect to reset the skin if the user's resolution is too low - easy enough to do that on a custom basis)

Spam filtering has nothing to do with skinning - please try to stay on topic. :)

And there are no language for guests... Or I miss some information? sad.gif

Opera has a unique user agent, like every other browser, so yes it's entirely possible. He was just giving examples.

And yes, guests can also choose their language now.

http://forums.invisionpower.com/blog/ips_n...555#comment4124

(We finished that todo)

I would also like to see the ability to change skins based on the user's screen resolution if this could possibly be worked into the system.

no words about opera sad.gif



Link to comment
Share on other sites

Would it be possible to make a root skin select a child skin based on these settings? I'll give you an example of what I mean. You have:

- Root Skin
-- My Skin
----My Skin for FireFox
----My Skin for IE8
-- Other Skin
----Other Skin for FireFox
---- Other Skin for IE8

In this setup you have the boards root skin, then you have My Skin and a FireFox and IE8 version of it. Instead of displaying it in the skin selector like it is above, can you have it display like this:

-- My Skin
-- Other Skin

So when you select "My Skin" it selects either "for FireFox" or "IE8" based on the browser. Also, have the ability to hide the root skin as a selection and only be able to show the children. Currently this is not possible in IPB 2.3. If you hide the root skin, the children are hidden as well. And for the choices, it would be nice for it to "smartly" choose the child while selecting the root that matches the situation.

Link to comment
Share on other sites

I've never liked the way the skin dropdown has worked. It displays skins in the order they show up in the database, and it has the dashes in front of child skins. This is confusing from a user perspective. Please have the skin chooser show all skins at the same 'level' (no dashes in front of child skins) and in alphabetical order.

Link to comment
Share on other sites

[quote name='Μichael' date='Sep 4 2008, 07:44 PM']I've never liked the way the skin dropdown has worked. It displays skins in the order they show up in the database, and it has the dashes in fron tos child skins. This is confusing from a user perspective. Please have the skin chooser show all skins at the same 'level' (no dashes in front of child skins) and in alphabetical order.

I'd like a way to order skins however you want to.

Link to comment
Share on other sites

Great news to auto select skins for the visitor based on the User Agent string.

Considering the amount of new mobile devices (and also web browsers theese days), I imagine it can be difficult to keep up with all the new User Agent strings available. What I am asking for is a list of User Agents not currently associated to any skin, so we don't end up with new visitors unable so see the mobile version of the site. Then it's a lot easier to administrate.

Still, this is a HUGE improvement! Thumbs up!

Link to comment
Share on other sites

Can't wait for IP.Board 3. Also was wondering if it's possible to make a drag-n-drop style editor for the 'Manage Forum section in ACP. Like you see editor how you would normally but you can move blocks around to edit board. Like if you quickly wanted to change category order you click-n-drag up or down instead of re-ordering with the dropdown list. gets a bit confusing sometimes. Not complaining either, I love the IPB, just making a suggestion. Keep up the good work. :thumbsup:

Link to comment
Share on other sites

[quote name='Unexplained Phenomena' date='Sep 4 2008, 10:49 AM']I would also like to see the ability to change skins based on the user's screen resolution if this could possibly be worked into the system.
I personally use a skin at 970PX and this is where most of my members are comfortable with, however there are still a few (8%) users that are running with 800x600 resolutions that simply can't use the skin as currently set.

Similar to how ZetaBoards adjusts space, depending on the monitor resolution --- a fluid skin (as I think they are called). That would be nice. :lol:

Link to comment
Share on other sites



Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...