Blog items tagged with "preview"

Plans for v2.7.1patch3/v3.0.1patch3

Giving you a summer forecast...the main things we'll be working on this summer should include the following of  which several will manifest itself as a patch #3:

  • Multi-column form controls - this will only be available for Bootstrap 4 & 5 and then only with standard labels (not side labels). This feature is mostly completed, but needs some testing in all scenarios before release.
  • Cleaner checkbox and radio controls - again only for Bootstrap 4 & 5, but should benefit Bootstrap 3 and maybe Traditional or YUI controls. This will include an attempt to correctly display the label on the requested side of the control. We will also attempt to implement organic 'inline' controls instead of using tables and columns. Additionally an attempt to implement a 'required' option for a radio group. P.S. we added a 'required' checkbox option in v2.7.1/v3.0.1 patch #2.
  • TinyMCE v6 - perhaps we'll upgrade our v5 support with the latest v6 release. Though it doesn't have as many features as v5. A reminder we added the TinyMCE v5 option in the last version.
  • CKEditor v5 - now that CKEditor v4 is 'End or Life' we should do the heavy lifting required to implement v5? Though it's a different paradigm with seemingly fewer features, it is the future. Must come up with a method to include our custom 'Insert Field' plugin!
  • Bootstrap v5.3 - though just released as final and working locally, our swatches haven't been updated to add the new 'dark' mode feature yet.

EXPONENT IN 2023

Exponent is still hanging on with at least one update and a new major version planned for 2023! Some features you can expect within v2.7.1 in addition to rolling up the previous patch to 2.7.0 include:

  • PHP v8.2 support
  • activate file manager trash feature
  • allow file manager theme selection from file manager preferences
  • add tinymce v5 editor (functional with new tinymce v4/v5 file manager implementation)
  • add optional selection of store home page, or page after adding item to cart
  • update non-bs datatables views to use standard styling instead of jqueryui
  • add object type name to db manager unserialized info
  • update control types for better styling, includes upgrade script
  • add/fix maintenance view countdown clock (never worked), use proper theme framework view
  • add asc/desc to sort forms records after grouping
  • add forms portfolio view user dropdown filter option
  • add option to export all form columns in CSV instead of only those selected for display
  • add smtp option to only use the smtp username as 'from' address for very strict smtp servers

Some fixes in this patch will include:

  • regression fix (v270p1) calendar month selector popup
  • fix tinymce5 support in bs4/5 broken & had no file manager support
  • fix multiple issues with tinymce/tinymce5 custom configurations
  • fix editing existing blog, filedownload, or news item (view) may crash on php v8 
  • clean form control styling and processing, esp. bs5
  • update expUnserialize function to include 'message' in countdownController
  • fix multiple errors in countdownController default view and with newer smarty/php versions
  • fix file manger root files and folders were locked for super-admins and coundn't be removed
  • remove links from Workflow Revisions list to prevent issues
  • (v270) regression fix Forms search cumulating records issue
  • fix bootstrap.js v5 cdn wrong version
  • fix extraneous datatables styles were being loaded
  • fix turning off antispam causes views with antipam to crash (reset password, etc...)

Additionally, many 3rd party libraries will be updated.

Furthermore, there will be a new major version 3.0.0alpha1 released as unstable which completely removes support for obsolete PHP versions (5.6, 7.0, 7.1, 7.2 & 7.3). This deprecation will also take with it some double-versioned libraries required to support those obsolete PHP versions. Otherwise, they'll be no code changes from the 2.7.1 release except a firm requirement to run on PHP version 7.4, 8.0, 8.1, or 8.2 and a slight reduction is size.

Exponent in 2022

Exponent will see at least one update in 2022! Some features you can expect within v2.6.1 include direct integration of Twitter Bootstrap v5 and Twitter Bootstrap Icon support. PHP v8.1 support will be improved and support for obsolete PHP versions (5.6, 7.0, 71, & 7.2) will likely be removed along with the extra libraries only included to support those older versions (Smarty & Switftmailer).

Exponent in 2021

Exponent will be updated in 2021, however support may come to an end in early 2022. The use of Exponent as a CMS seems to be waning as many site providers and previous users now opt for a proprietary or commercial applications. However some features you can expect to be integrated in v2.6.1 will include Twitter Bootstrap v5 and Twitter Bootstrap Icon support included in the main package instead of as an optional addon.

Exponent in 2020

2020Yes, Exponent CMS is still alive and being updated. Though development has taken a much slower pace, bugs are still being squashed and new features are being added. You can expect v2.5.1 to be released by the end of winter 2020 (March). This is actually a minor patch update to v2.5.0patch2, but due to the copyright being updated to 2020 it affects almost every file and would be a very large patch, therefore it'll be a full version release.

What are some changes can you expect from Exponent CMS in 2020?

  • Become PHP v7.4 compliant...Exponent v2.5.1 will not be fully PHP v7.4 compliant and may not even run under a server using that version of PHP
  • Attempt to integrate Twitter Bootstrap 5 when released. There is no date set for its release, but when integrated will likely move the Exponent version to 3.0.x.
  • Remove PHP v5.6, v7.0 and v7.1 compatibility. Many 3rd party libraries no longer work under these obsolete (unsupported and no longer updated) PHP versions.
  • Become MySQL v5.7 'Strict' Mode compliant. Exponent currently requires turning the default 'strict' mode of MySQL v5.7.x off or Exponent will NOT be able to create ANY new objects such as modules, items, or users. Some web providers will not modify their MySQL settings to allow this. This will be a pretty labor intensive code update and may require overhauling much of the code. Therefore it may be as easy to move to a PDO database interface.

Exponent in 2018

New Year 2018As we wind down 2017 and move into 2018, Exponent version 2.4.2 is being polished for release. What does the future of Exponent CMS hold in store? If you've read recent posts (here and here), you'll get a feel for what you can expect in the next version. So how can you prepare for the next version of Exponent?

  • Ensure your web server is running at least PHP version 5.5 (though v7.x is highly recommended for speed) since the next version of Exponent will NOT run/upgrade on older versions of PHP since they are so obsolete. Therefore, if your web server is ancient and running a long-ago version of PHP, do NOT attempt to update/upgrade your site since it will come to a screeching halt!
  • Decide if you still want to support obsolete browsers. We will still include the 'shims' used to support very old browsers, but that feature must be turned on, but you'll have that opportunity during the upgrade process. An additional factor is that we've moved to jQuery v3. If you still need support for older versions of jQuery, you'll also want to turn on the obsolete browser support.
  • And though Bootstrap v4 and FontAwesome v5 won't be fully integrated, nor included with the next release (since Bootstrap v4 hasn't been release yet itself), we have most of the underpinnings in place. Nonetheless, we'll have a special Christmas gift of a 'preview addon' which will give you a feel for what a Bootstrap v4 theme will look like. This MAY give you a head start into designing or converting some existing themes.

As a note for which supported theme frameworks align with which library versions:

  • Bootstrap v2 is tied to FontAwesome v3 and autoloads Normalize.css v7
  • Bootstrap v3 is tied to FontAwesome v4 and Normalize.css v3.0.3 is integrated into Bootstrap v3
  • Bootstrap v4 will be tied to FontAwesome v5 and an enhanced variation of Normalize.css (Reboot) in integrated into Bootstrap v4 (all this is based on Bootstrap v4 stable not greatly changing from its beta2 release)

We wish you a Blessed 2018 and still strive to keep your Exponent web site in the modern age.

Integrating Bootstrap 4 into Exponent

TBootstraphe primary theme framework for Exponent CMS is Twitter Bootstrap, currently at version 3 (actually 3.3.7). The next Bootstrap release, version 4 should be available in the near future and is currently in the beta 2 stage. It would be good to integrate support for the Bootstrap 4 framework, but there are several obstacles:

  • Bootstrap 4 requires SASS/SCSS stylesheet compilation, where previous versions were based on LESS...and there is only one PHP based SCSS compiler available which chokes on some of our needed stylesheets. However, we've developed a 'hack' to compile them on the fly.
  • Bootstrap 4 also leans toward needing 'autoprefixer' support to add additional 'browser-specific' styles into the compiled stylesheets. There is currently no PHP based autoprefixer (except for some which require node.js be running on the server). This may not be an issue since most modern browsers are supposed to be moving away from vendor specific style properties.
  • Bootstrap 4 is a much greater departure (change) from the previous version (3) than in the past (e.g., v2 to v3). While not insurmountable, it will require updating a lot of Exponent code to produce compatible output for auto-generated form controls and menus, etc...

Now having said that, preliminary support for Bootstrap 4 (beta 2) is already being integrated into Exponent, which in turn also requires a new theme. Though the initial integration at this point is limited to functional navbars/menus and chrome, it is usable (if you can get past some of the odd styling on the page). It is expected this initial integration will be included in the next release of Exponent.

Once Bootstrap 4 is released as final AND we have fully integrated it with a functional theme, it will be released...most likely as Exponent v3. The roadmap to Exponent v3 will also throw off the shackles created by a need to support obsolete browsers and ancient PHP versions, both of which should not be used if security is of any importance. You can expect to see the next release of Exponent (either v2.4.1patch7, v2.4.2, or v3.0.0) around the end of the year.

Offline Blog Post Editing

Writing Blog ArticlesExponent provides an excellent environment for writing and sharing articles or 'blogs'.  A site where the 'back-end' is on the front-end and a variety of what-you-see-is-what-you-get WYSIWYG editors take away some of the creative hassles with writing.  Another nice convenience for writing articles which is found on other blog applications (like WP), is editing the articles offline by using an application to manage and edit multiple blog articles.  Though there was preliminary support for this feature in the v0.99beta1 release (before v2.x), it has not been available to the v2.x code line...until now.  

Why would you want to use a desktop application to edit articles instead of simply using the browser?

  • Submitting the same or similar articles to multiple blogs or sites
  • Simultaneously working on many draft articles (beginning a new article while have several unfinished articles)
  • Not having immediate, unrestricted access to a reliable high-speed internet connection, but you have your PC

The new offline blog editing feature will be available in the next release (currently at v2.3.4patch1).  It will be turned OFF by default, but can be turned on using 'Site Configuration' under the 'Security' tab.  It has been tested with several offline blog applications (mostly Windows based) such as Windows Live Writer, Zoundry Raven, Blog2Post, Windows 2007+, and ScrybeFire running in the Chrome browser.  Most of these interface with the blog site by adding an account.  This account creation process attempts to determine the type of blog, but all require the following information.

  • user logon name (with create/edit permission to a blog module)
  • user password
  • url to the blog web page - www.mysite.org/my-blog
  • url to the blog xmlrpc interface (blog post url) - www.mysite.org/xmlrpc.php
  • type of blog - Metaweblog API (NOT WordPress, nor Blogger, etc...)
  • image/picture uploading handled by - the blog provider

During the process, the offline application attempt to determine the type of blog, but will likely need some assistance in completing the process.  You should be shown the list of all the blog modules on the site.  Most applications will require a separate account be created for each blog module on the site, where others may only display the first blog module listed from the site.

Many of these applications provide support for publishing the article or posting it as a draft, tags (adding new tags or selecting from existing tags), categories (adding new categories or selecting from existing ones), setting the article publish date, inserting graphics, boilerplate templates, downloading the site 'theme' for better offline previews, and turning off user comments.  Some of these features require they be turned on within that blog module.  You may even be able to pull down recent or all blog posts from that blog to edit or archive.

All-in-all, another tool in the Exponent CMS arsenal to assist you in maintaining and managing your web site.

Windows Live Writer

More About Less

less cssCSS3Back in version 2.0.8 we added the LESS ​stylesheet compiler to Exponent.  LESS is a dynamic stylesheet language which extends CSS with dynamic behavior such as variables, ​mixins, operations and functions.  This functionality makes it much easier to create flexible stylesheets since redundant styles and style variations can be handled by the compiler/server instead of the designer.  Though this addition to Exponent was primarily to support Twitter-Bootstrap, its use is increasing especially beginning with v2.2.3.

In this article our focus is on creating or updating .less stylesheets.  For information on how to incorporate .less style sheets into your custom theme, module, or view, please see this help doc.  The use of .less stylesheets in place of .css stylesheets is transparent within Exponent.  

In version 2.2.3 we convert all our core css stylesheets to .less, since we now also have custom 'mixins' to do some of the heavy lifting.  Mixins allow you to tie a bunch of properties and customizable values all into one nice little package.  Here’s an example:

/* Mixin */
.box-shadow (@x: 0px, @y: 3px, @blur: 5px, @color: #333) {
  -webkit-box-shadow: @x @y @blur rgba(0, 0, 0, @color);
  -moz-box-shadow: @x @y @blur rgba(0, 0, 0, @color);
  box-shadow: @x @y @blur rgba(0, 0, 0, @color);
}

This takes all of the box-shadow code needed for display on multiple browsers and wraps it up nicely into a single mixin that can be implemented with custom values (or the defaults that we used above). Now, instead of writing a huge chunk of code every time you want a box-shadow, this is all you need:

/* Implementation */
.somediv {
  .box-shadow(5px, 5px, 6px, #eee);
}

Pretty awesome right? When this code is compiled automatically by Exponent, it’ll create a the appropriate CSS stylesheet. You get a much more readable code without sacrificing browser compatibility.

In v2.2.3 we include a custom 'mixins' file which is located in /framework/core/assets/less/exponent.less.  This mixn may be included in your .less file by adding the following line to the top.

 @import '/framework/core/assets/less/exponent.less'

Here are some of the mixins found in exponent.less:

  • .border-radius and .border-radius-custom
  • .box-shadow and .drop-shadow
  • .gradient and .quick-gradient
  • .reflect
  • .opacity

Take a look at exponent.less to see all the included mixins, plus some implementation samples.

I think you'll appreciate how LESS can make your work 'more' productive and will consider using it in your next project.

Permit me to tell you a little about the next version

While v2.2.3 (when released) will focus on addressing issues in v2.2.2 and removing all the deprecated features and 0.9x compatibility, there will be a few minor new features and changes to the permissions system (final implementation will be based on your feedback to this article!).

New features include adding a 'copy' item command to the portfolio module, adding an optional 'force image resize' during a quick upload, and better theme support for mobile devices by use of optional 'touch' icons and the 'meta viewport' tag.  We may also be able to squeeze in a 'multi-day' feature to the event module along with external calendar (ical & google xml) feed caching.

However, the bigger changes will be to user/group permissions.  This will be accomplished by the addition of group global permissions (restrictions) and changing the way we deal with the 'create' permission.

Group Global Permissions - This new feature provides greater control over what basic users are allowed to do (or more accurately 'are prevented from doing').  These restrictions will be implemented within a 'User Group', therefore the 'user' must be assigned to a 'group' in order to enforce these 'global permissions'.  However, this method will ensure that upgrading from a previous version will continue to operate transparently the same as before.  But if you want to apply them to all basic users, you can set the group as a 'default group' to be assigned to all new users.  Based on user requests, Global Permissions/Restrictions already include:

  • Prevent File Uploading - will prevent the user from being able to upload a new file.  They will still be able to select existing files from the file manager.
  • Prevent User Profile Changes - will prevent the user from being able to change their user profile (email address, profile extensions, etc...)  This does NOT affect the user being able to change their password since we already have a global setting to 'disable user password change requests' in the Site Configuration settings.
  • Disable Slingbar (Exponent Menu Bar) or Slingbar menus - will  'hide' the 'Exponent', 'Files', and/or 'Pages' menus from the user (leaving only the 'User' menu).  Or you can select to hide the entire 'Exponent Menu Bar'.  Under normal circumstances, a user with any permission on the site would see the 'slingbar.'  This feature allows greater control on preventing it's display.

Enhanced 'Create' Permission - Unlike the group global permission feature, the enhanced 'create' permission feature may affect some users ability to perform actions after a version upgrade!  Currently (v2.2.2), the 'create' permission also always implies/provides the 'edit' permission.  This means that if you can create new module items, you will also be able to edit all module items (but still requires a 'delete' permission to remove the item).  However under the new (v2.2.3) system, the 'create' permission would be separate from the 'edit' permission.  What's NEW is that the 'create' permission (without an 'edit' permission) would also allow you to edit any module item you had created (no change here), but NOT the other users' module items.  To edit other users' module items, you'd also need to have an 'edit' permission.  The same applies to deleting a module item.  If you have a 'create' permission, you may delete a module item you created, but would need a 'delete' permission to delete other users' module items.  In practice, this new feature will allow a module to have many users who are able to create and manage their own items, but not have any influence on the other module users (unless you also gave them an 'edit', 'delete', or 'manage' permission).

As a permissions primer...permissions cascade down through any child objects such as pages, containers, and the module.  The 'manage' permission implies/provides ALL permissions.  The 'configure' permission is needed to access module configuration settings (change the module's action, view, and other module settings).  The 'create' permission is needed to create new items or modules (and up to v2.2.2 also provides an 'edit' permission).  The 'edit' permission is needed to edit an existing module item.  And the 'delete' permission is needed to delete/remove an item or a module.  Admin users are always granted permission!

While this new approach to the 'create' permission should greatly enhance a multi-user site, it is not a complete solution.  There are some scenarios where a user would be allowed to 'create' a new module item, but NOT edit it (invoices, etc...).  It is recommended the developer create a new module controller method/add_permission for that instance.  Creating a stricter permission system would be very complex and time-consuming to implement.  However, there are plans to implement some 'workflow' features such as 'revisions' (allow rolling back to a previous item version) and 'approvals' (optionally require a user with approval permission to approve new or updated content).  These workflow features would not be as complex as those partially implemented in the 0.9x code, but should become very useful.  The workflow features are targeted for the v2.2.4 release.

If you have any suggestions to the above features especially the Group Global Permissions and Enhance Create Permission, please respond with a comment.