The purpose of this page is to document the features planned for the next release of glFusion, v1.1.0. The goal is to release by the end of October 2008, with a soft code freeze in the 3rd week of September let's shoot for the end of September.
Update: code feature freeze for v1.1.0 will be Oct. 11, 2008, with a beta release planned shortly thereafter. Hopefully a final release will come Oct. 31, 2008.
Improve how JavaScript and CSS are handled by glFusion.
See css_js for a detailed discussion of proposed changes to support better handling and the necessary features for Site Tailor.
Proposed by Mark Evans & Eric Warren
Allow Site Tailor to manage more than one menu. Ability to manage block menus, header menus, even footer menus.
The current database design for Site Tailor does not support the necessary flexibility. The following database table structure is proposed:
menu table
id
menu_name
menu_config table
id
menu_id (maps to gl_menu_table.id)
conf_name
conf_value
menu_elements
id
menu_id
parent_id
element_label
…
While this proposed structure provides a good degree of flexibility, it does not promote efficient calls to retrieve menu details and items. Since glFusion is using ‘instance caching’ for the menu, the queries are actually only run when the menu changes, so efficiency is not as critical since the queries will not be run with each page load. Also, the volume of data will be very small.
Build the menu data structure:
SELECT * from gl_menu_table as menu LEFT JOIN gl_menu_config_table as config on menu.id=config.menu_id;
This will return multiple rows with all the configuration options:
while ($M=DB_fetchArray($result)) {
$menu[$M[‘menu_id’]][$M[‘conf_name’]] = $M[‘conf_value’];
}
Whether or not the menu table is really needed should be evaluated…
Now that the configuration options are built, we need to retrieve the elements.
We want this all to be object oriented, so we’ll need a couple of classes to handle the actual menu and its elements;
class stMenu {
}
for the menu elements;
class stMenuElements {
}
glFusion will detect that Site Tailor is installed and active. If available it will automatically render the menu named header in COM_siteHeader().
A block can display a menu by calling phpblock_getmenu(menuname);
glFusion will automatically render a menu named footer in COM_siteFooter();
Need to determine a method to call other menus in the header and footer if necessary.
We want to build an intelligence engine so you can easily change how the menu renders. What class names to use, what li / ul types, etc. The following attributes should be configurable through Site Tailor:
These elements should be tied to a menu, so each menu can have a unique set of class names.
Should we try to support multi-lingual sites? My initial thought is yes, but I would prefer not to do it the traditional Geeklog way of creating a language table. Instead, I would like to leverage the ability to use $LANG variables in CTL. If a site wants to support multiple languages, they can create a language.php file that contains all the menu labels, then use the $LANG_WHATEVER[‘menu_label_name_here’] in the Site Tailor menu editor. If there is a german.php file, then Site Tailor will use it if the user’s language is set to German. This is not as elegant, but it provides the necessary features without the expense of more database overhead.
Proposed by Mark Evans & Eric Warren
Develop a method to allow the site administrator to manage themes for their site. Enhance Site Tailor with a ‘Theme’ tab that will provide the following options:
Theme Database
To accomplish many of the goals, glFusion must implement a theme table in the database. Proposed structure is:
Id Name Description Enabled Visible To
Several core functions would be modified to pull theme data from the database:
Will leverage existing config.class.php functions to update default theme.
A new tab will be created labeled, Themes. This tab will display a list of existing themes.
The thumbnail view will use some descriptive icons to provide a quick status.
At the bottom of the main theme thumbnail page will also be an upload box to allow the administrator the option to upload new themes. Themes must be in the ‘glfusion’ format (described later).
Edit Settings Screen
Another option to consider is a clone or new option. This would allow the administrator to create a new theme interactively; they would specify the name, description, visible to options and then have the ability to choose a ‘source’ theme as the base. On save, this would add the theme to the database, create the new theme directory and copy over the ‘source’ files. Eric wants to promote the practice he started with Nouveau 1.4.1 where you only need to copy the modified template files over. The remaining templates stay in the base nouveau/ directory. Given this objective, there may not be any source files copied during this operation.
Ultimately, a directory listing to transverse the theme directory files and an online .thtml / .css editor screen would be valuable as well. This would allow an admin to work on a layout live, without having to download local copies of the files, edit, save, re-upload, etc. This is meant more for tweaking, or copying to another theme like mentioned above, it's not intended for creating an entire theme from scratch.
Themes must be packaged with a theme.ini file (we may need a better name) that will contain:
This file will be used to populate the database when a new theme is uploaded.
Themes should use a standard set of CSS class names. This will allow integration with Site Tailor for color customizations, etc. Will need to document this standard.
This should not have a great impact on the core code. Although a new database table will be created, a stock Geeklog install would not require this table and would not conflict with this implementation.
Site Tailor will require some core modifications to become ‘theme aware’. The goal will be to allow different menu colors, images based on the theme.
As glFusion continues to evolve, it will be more difficult to have themes that can work with both Geeklog and glFusion. Since Site Tailor is glFusion only and the themes will become more reliant upon Site Tailor, the themes will not be compatible with Geeklog.
Site Tailor should have the ability to customize various attributes of a theme. These should include:
We need to keep performance in mind, we don’t want to break this down to multiple .css files to minimize the number of calls a browser must make to initially load the page.
A possible solution is to treat the style.css file as a template, build it dynamically from the various attributes defined in Site Tailor and then output to the browser. We can create a ‘serial number’ for the style that can be passed in the <link> statement, so it will look like:
<link rel=“stylesheet” type=“text/css” href=“http://gll.ecsnet.org/layout/nouveau/getstyle.php?ver={serial_number}” title=“nouveau” />
This will allow the browser to recognize that a change has been made to the style sheet and force a reload.
Leveraging instance caching, we can reduce the number of DB calls needed to build the styles.
Need to validate that passing styles via PHP call will cache locally in the browser.
In anticipation of creating a site-wide color picker in Site Tailor (functioning like the Menu Builder color picker), we've consolidated the css color information into one style-colors.css file. The intent in making it a separate css file is that it allows one to easily override the consolidated color for any given element simply by adding !important to the end of their css value in the regular stylesheet (where we've left all the individual color properties in tact).
In addition to the color picker which will provide for a near infinite set of color combinations (and you thought Chameleon's 88 thousand possible combinations were a lot!
) we want to provide a drop down selector box with some pre-defined color styles spanning a wide range of the color gamut.
We could continue to itemize out every available option, (like Chameleon did) but ultimately I (Eric) feel that allowing for complete control of editing files through an online interface to be the most flexible in allowing customizations.
By providing an Edit screen that has a file tree browser, and a text editor window (that automatically styles html or css code for ease of readibility! Visit http://codepress.org for a taste!
) that allows live edits from the site to the .thtml / .css / .js files within the /layout directory, I think that this would help out a lot of admins, and give them a cutting edge interface to customize their site.
Also, by automatically saving their changed files in the appropriate /custom directory, we basically auto-manage their customizations always leaving the base file in tact and just saving over the customized one! …How cool could THAT be! If they go to open a file, the system should be smart enough to detect if they already have a custom version in place and ask to edit that, or the original one.
Proposed by Mark Evans
The installation / upgrade routine will need to support 3 possible situations:
This means we will need to support upgrading from any production version of Geeklog. There is a potential for conflicts in version number variables that must be addressed.
Proposed by Mark Evans
The goal will be to centralize the configuration options of all plugins into the main Configuration GUI. This also resolves some permission issues we've seen on installs and upgrades. No more writing to configuration files, instead use the configuration database / GUI.
Proposed by Trinity Bays
Improvement of the user profile page, user configuration and user control menus to facilitate situations where social networking is desired.
The idea is to make users experience more myspace.com like. These changes will pave the way for a Friends plugin, User Groups plugin, a Messaging plugin, and a User Blog plugin as well as other socially centered plugins not yet conceived.
==== lib-plugins.php ==== 2)
- FIXME
In addition to the reworking of the core to improve social networking capability these plugins interface to this functionality
==== Social Plugin ====3)
This plugin adds friends list and user messaging capabilities to the glfusion platform. The message que will also be used to send friends requests to users for approval
These features can be controlled site wide by the admin to limit what end users can do and not do if need be
Proposed by Mark R. Evans
Currently, the Media Gallery plugin has a well tested and mature multi-media processing library. I propose we move this library into the glFusion core code where it can be leveraged by other plugins and by the core code itself.
This would require the upload.class.php class to be modified to use the new processing routines. Also, both FileMgmt and Forum would be enhanced to use the new core library.
The online configuration section for graphics would be enhanced to support this new functionality.
Proposed by Mark R. Evans & Eric Warren
There are a lot of outdated language files, image files that aren't used, etc. in glFusion that we would like to see cleaned up. Since we don't have dedicated language file maintainers at this point, we would like to move the non-english language files out of the release tarball and make it available as a separate download for those that are interested.
In the future when we do have some updated language files, we can re-visit including them in the default release tarball.
Proposed by Eric Warren & Mark R. Evans
Additional Bookmarks tab that collects all your bookmark starred threads. Sortable by title, date, poster, counts, etc. Also an additional tab called Latest Posts that is a configurable continuation of the forum center block on the home page. The idea is to give you a place to easily see the last n number of posts. More so than just in the homepage centerblock.