Page 1 of 1

CMSMS 1.11 Update - Beta delayed

Posted: Sat Apr 21, 2012 2:10 am
by calguy1000
Hi everybody, it has been a while since we let you know about what we’re working on and what is happening with CMSMS 1.11, so we thought we would drop you a line.

CMSMS 1.11 has been progressing steadily. It will be perhaps the biggest single functionality release in CMSMS history. We are also tackling some internals, and doing a lot of cleanup. There is new functionality, and some “under the hood” work. There should be a little bit for everybody in this release. So let’s get started.

Features and Changes:

1. New Admin Theme
Goran Ilic, a valued member of the CMSMS Dev team, has created a new, HTML5, responsive admin theme for CMSMS that is completely Smarty controlled, and extendable. This will be the new admin theme for all fresh CMSMS installs, and the old ‘default’ admin theme has been removed. This leaves the NCleanGrey and OneEleven admin themes.

2. Drag and Drop Upload
Along with the new admin theme, we’ve upgraded the jquery and jquery.ui that is shipped with CMSMS and have added support for uploading files via drag and drop (for most non-IE browsers). This will make the file upload capabilities in wysiwyg editors all but redundant, and solves a long standing difficulty with CMSMS. The OneEleven admin theme has a dropzone in its main area, allowing you to drag files from your desktop into CMSMS, then select the file from within the wysiwyg editor. Additionally, you can change working directories from within the admin theme.

3. Smarty 3
Perhaps the biggest change in CMSMS will be using Smarty3. Smarty3 brings some new functionality for Smarty templates, such as improved parsing, which should help with embedded javascript; smarty functions; and advanced cache control.

The CMSMS Dev Team worked extensively in conjunction with the developers of Smarty to implement an unmodified version Smarty 3.1.8 (as of the time of this writing) into CMSMS. The important part of this transition was to retain the power of the variable scoping we have become accustomed to in CMSMS. For example, being able to set a variable in a module template that is called from the body, and to use that variable in the page head.

In CMSMS 1.11 we will be enabling Smarty caching in a very flexible way to give the the power of caching all or parts of individual pages. This is almost as good as full page caching, but retains the dynamic power of CMSMS.

In 1.11, most plugins in the plugins folder will be ‘cachable’, i.e., the output of those plugins can be cached on the page and not re-executed. The obvious exception to this will be the {content} plugins which will not cache.

We are also modifying the News and Search modules to take better advantage of Smarty3’s caching capabilities, and to serve as an example for module developers.

There are some detriments to the adoption of Smarty3 however. We have noticed that the initial compilation (converting Smarty templates into PHP code) of a stock CMSMS page is noticeably slower. This performance degradation is due to the complexity of the lexer and parser in Smarty3 and is a known limitation in the library.

However, once template compilation has completed, we are noticing a significant performance improvement; even on pages that are not ‘cachable’. We feel that this trade-off will be beneficial in the long run to all users of CMSMS.

We will be providing more information as to how the caching in CMSMS 1.11 will work in the coming days.

4. CSS Improvements
We are working on adding the ability to specify a media query string for each stylesheet. This will allow you to better make responsive websites, or webpages for mobile devices. As well, some new config variables will allow you to control the output directory for generated stylesheets.

5. Better Module Lazy Loading
Continuing with what was started in the 1.10 series, we will be improving the module lazy loading capabilities to improve performance on your websites. To that end we are also re-working the routing functionality.

6. Improved auditing
Audit trails are becoming more and more important in our websites (who did what, and when). For that reason, we are going through all of the important pieces of functionality and ensuring that there is a line placed in the audit log for each of them.

7. An improved MenuManager
MenuManager will be getting a new breadcrumbs action (and we will be deprecating the breadcrumbs tag). The new breadcrumbs action will allow for template customization of the appearance of breadcrumbs, and even its behavior.

Additionally, MenuManager has a new “items” action to replace the “items=” method that currently exists. This will allow naming specific page aliases and having them, and their children, in your navigation.

8. A System maintenance page
A new system maintenance page in the admin interface will allow you to perform maintenance tasks like database repairs or optimizations, clearing the cache, etc.

9. Language and locale improvements.
We have rewritten the language detection and selection mechanisms into a class to allow for more flexibility. The NLS data set now contain locale and encoding information so that the $config[‘locale’] and $config[‘encoding’] information will be optional even for non-English sites.

We have reorganized some of the language detection mechanisms so that it is called AFTER modules (the ones that can’t lazy load) are initialized. This, in conjunction with the new CmsNlsOperations::set_language_detector() method, will allow third party modules to specify how the current frontend language should be detected. Modules can then use session variables, cookies, a variable on the URL, or user or module preferences to determine what language to use for that frontend request.

The importance of this cannot be understated. This allows third party modules to create proper multi-language capabilities within CMSMS and we are sure that there are many module developers, and thousands of website developers, that will be extremely happy.

10. Improved Content class
a. We have re-organized the Content class yet again in attempt to improve performance, and to lay the foundation for some work planned in the future. To that end we have reworked the property classes in the base content object (the methods that retrieve the content blocks, etc). We have also marked all of the content object methods and members as public, protected, or private, as appropriate.

These may have minor effects on some modules that implement custom content types. Therefore, developers of modules that export custom content types should participate in the beta process so that we can ensure new releases of the module are available at the time when CMSMS 1.11 is released.

b. In the past, the editcontent form used regular expressions to parse the page template in order to detect the content blocks. This has changed, and we are actually now using Smarty. This improves the flexibility, and reduces the possibility for error when editing page templates. Additionally, it is now possible for content block definitions to be inserted into sub templates (i.e: via {include} or via global content blocks) which gives us much more flexibility for re-use of templates.

c. It is now possible, when editing content blocks, to specify a tab within the edit content form that should contain the content block text area.

11. An improved news module
The news module has gone through extensive “under the hood” modifications:

a: The news module now uses Smarty caching so that on cached pages no database queries are necessary (for summary views).
b: The news module now preloads field information for all articles displayed in a summary view to reduce the number of queries required and improve performance.
c: Category information is now preloaded and cached and can be shared between summary and detail views.

12. Bits and pieces
- XML Module export will only export the English version of the help and about.
- A new bulk action in listcontent for changing page ownership.
- Improved user settings pages.
- Adding a new user allows you to specify the default wysiwyg for that user.
- Custom page URLs can now include an extension.
- Remove the ‘output_compression’ config option.
- Remove the ‘process_whole_template’ config option.
- Remove the ‘use_adodb_lite’ config option.
- Remove support for Postgres.
- Remove the ‘max_upload_size’ config option.
- Remove the google_search plugin.
- Moved the {menu}, {news,} {search}, and other plugins to their respective modules.
- Some general re-organization of various admin pages.
- Dozens of bug fixes.
- Lots more.

What We’ve Broken:
Other than the aforementioned problems with modules that export content page types (which should be a simple problem to solve) there may be a few remaining items related to the adoption of Smarty3.

Smarty plugin caching:
Smarty plugins (the ones in the plugins directory) will be cachable. This means that the output from these plugins may be cached and re-used on cachable pages. This may cause some difficulty in some installs. The fix to this is to add the nocache attribute to the plugin, or to wrap the plugin in {nocache} tags, e.g.:

Code: Select all

{mydbqueryplugin nocache}
or

Code: Select all

{nocache}{mydbqueryplugin}{/nocache}
Schedule:
Our goal is to have the beta process start by approximately mid June 2012. To that end, we set feature cut-off at the first of June. No features will be committed past that date. We have already trimmed our to-do list down, cleaned out or assigned bug tasks, and there may be more trimming in order to meet our goals.

Conclusion:
CMSMS 1.11 is coming together to solve a number of past issues, move forward with new technology, improve performance, and to make it even more simple for our end users to use. We look forward to hearing from you during the beta process to make sure that this release is the smoothest ever.

Re: CMSMS 1.11 Update

Posted: Wed May 09, 2012 5:36 pm
by calguy1000
Follow up #1:

We are now down to the tail end of our 'todo' list for 1.11. There are seriously less than a dozen items on it (and most of those are done). So far it looks like we're on schedule for beta to start in mid June.

Some of the things that have changed (or are changing) in recent days:
a: A new html 5 sample frontend template (developed by uniqu3) will be included in CMSMS 1.11
b: The News module template editors now have an apply button
c: MicroTiny is getting upgraded to tinymce 3.5
d: The TemplatePrecompile and TemplatePostCompile events got some minor tweaks
e: The parent dropdown in add/edit content (and any page selector) will now obey the admin preference to display either the menu text or the page title.

Additionally... along with the release CMSMS 1.11 we will be simultaneously releasing a new documentation website to assist the professional developer in issues related to the CMSMS core. This is a long needed addition to CMSMS. Many thanks to Rolf for his extensive efforts on this task.

Here are some of the facts about the docs site:
a: It will be maintained by the CMSMS development team
b: It will be English only so that there is no possibility of incorrect information being spread due to out of date translations
c: The content will be targeted at the experienced professional web developer, not the amateur or end user.
d: It uses CMSMS, with a few addon modules, We'll tell you about which.
e: It will be related to the CMSMS core only (other than the occasional link to a module). i.e: We won't be documenting how to add slide shows, or twitter feeds or videos using this or that third party module.
e: It will take alot of the information from the wiki for our initial release
f: We won't be documenting smarty syntax or techniques, but there is a link to the smarty docs.
g: There are some general 'how stuff works' and 'how to' guides there for our user base to understand some of the inner workings of CMSMS.
h: The wiki will still be available for user contributed documentation

This documentation site, with its reduced scope and a commitment to keep it up to date should reduce some of the repeated questions and confusion that our user community gets until they've gotten off of the ground with CMSMS.

I hope this makes your day... Stay tuned for more updates as we get closer to the beta release.

Re: CMSMS 1.11 Update

Posted: Sat Jun 09, 2012 4:41 pm
by calguy1000
Follow up #2:

We've reached and passed our 'feature cut off' date, which resulted in us having to drop a few things off of the list.. and required some other dev team members to step up and fix some of the tasks that were incomplete.... but we got it.

FileManager got a big overhaul ... it uses alot of jquery/javascript and now functions alot more like you would think a file manager should. We'll be continuing to enhance this module and phase out ImageManager in subsequent versions.

We're in the middle of our pre-beta testing cycle. This includes testing the new functionality, and making sure that the install and upgrade procedures work, or will work for most sites.

Smarty was another stumbling block. We noticed some more compatibility problems with Smarty that would cause problems with alot of sites It almost got in the way of our beta schedule. We immediately contacted the smarty team with our issues, and that was a great success. We are now using an un-modified version of the latest and greatest SVN version of smarty as of today.

However, there is a minor compatibility problem with some compiler plugins that some module developers (probably only me) will have to address.

As of right now we're still hoping to begin the beta process a week from today.

The beta will be an open beta. We will have a dedicated, and heavily moderated forum, and an IRC channel for beta users to communicate about difficulties, and if necessary, a new beta version will be released weekly. We intend for the beta to run for four or five weeks.

We are hoping that there will be alot of beta testers who are willing to test upgrading some production sites (by copying them to a different subdirectory or domain first). Test out various modules in the beta and make sure that 1.11 will be a long term stable release.

See you next week!

Re: CMSMS 1.11 Update

Posted: Wed Jun 13, 2012 8:06 pm
by calguy1000
Follow up #3

As we're getting closer to beta we're test-upgrading a bunch of sites:
a: copying the site to a subdirectory, or to a local server
b: applying the 1.11 alpha (sorry, for internal use only for a few more days).
c: running the upgrade
and seeing what breaks.

So far we've noticed that
a: some modules rely on some of the old mechanisms of smarty (like adding directories to the plugins_dir variable, which no longer exists).
b: Smarty3 is WAY more picky about syntax... and can throw some very strange errors.

For example, a few man-hours of effort was spent diagnosing a problem with a site that had a missing closing " in a CGBlog summary template.

Admittedly this template was a pretty funky one that used supersizer and a few smarty modifiers etc.

But it goes to show that the upgrade path may not be all that smooth for some people. But before you report a problem on the forum, or file a bug on the tracker you will need to diagnose and isolate the problem.

What I did:

Because smarty was throwing some unknown tag errors about a comment (i.e: {* some text *}). I started throwing more smarty comments into the template, like: {* test1 *} and {* test2 *}, pressing apply and seeing what passed and what failed.

Doing that I was soon able to isolate the problem down to one tag, after which compilation of the template failed. About 10 minutes later I noticed that there was a missing " in the tag call... i.e: something like: {mytag param1="something}

So take notice:
a: we are aware smarty 3 is more strict about syntax than smarty2 ever was.
b: please attempt to use your skills as a developer to isolate the problem before reporting a serious issue with upgrades.

CMSMS 1.11 Update - Beta delayed

Posted: Sat Jun 16, 2012 2:07 am
by calguy1000
In our testing in the past few days we've found a rather critical problem with Smarty 3.1.10 that has caused us to delay the beta.

Specifically speaking, the variable scope stuff that was added to Smarty 3.x causes serious problems with the way most people work with CMSMS. The Smarty guys did give us a workaround to this problem in the earlier days of 1.11 development and we thought that we had it licked... but recently found that the problem was only about half solved.

We have posted a message on the smarty forum with isolated test cases to allow the smarty guys to reproduce the issue and hope that they will respond to us soon. Until they get back to us with a solution that we can implement and test in CMSMS we have no choice but to delay the start of the beta.

Thanks for your cooperation, and stay tuned... we will keep you posted.