Update WHMCS to Bootstrap 4 instead of 3.3.7.
We're excited about some of the new abilities in Bootstrap 4 and are certainly keeping a close eye on the development and adoption of it among our users. A major consideration for us when it comes to making a switch like this however is in ensuring WHMCS remains universally and easily adaptable and integratable into our customers existing websites, and for that reason we believe switching at this time would be premature. We will however be re-reviewing this regularly.
As you no doubt already know, as of 18 Jan 2018 Bootstrap 4 final was released so any hesitation because of alpha/beta status is no longer warranted. Please consider adopting Bootstrap 4 as soon as possible by leaving the six template as is, with only bugfixes, for those who need it and adding something like a "seven" template based on BS4. I'm sure the "community" would pitch in with plenty of patches. Thanks.
It might be fair to look at this closer in a few months. Most themes will now be moving to Bootstrap 4 now that it is marked stable.
It's important to be up to date with those structural components
As suggested previously, it would be nice to have a "Seven" theme - keeping "Six" with BS3 (for backward compatability) and the new "Seven" theme to move things forward. We have recently re-developed our main website in Bootstrap 4 and have had to develop the same theme twice in order to integrate with WHMCS' software.
Thanks for your suggestion. We are aware of Bootstrap 4's release earlier this year and have done some initial investigation. Due to the backwards incompatible nature of the changes, an entirely new template is necessary. It would also be necessary to re-write the order form templates for use with Bootstrap 4.
The semantic versioning we use would typically dictate that such backward-incompatible changes require a major version bump (eg. v8).
Due to these considerations, this isn't something we are able to implement today, but it's something we are interested in doing in the future.
Any ETA ?
BTW Backward compatibility still possible with Template six and Template seven can be bootstrap 4. I think WHMCS don't need the major release for this.
There is no ETA at this time. But please do keep generating support for this feature request. The more votes it receives will help demonstrate to us that there is appetite from the WHMCS user base for this feature.
The problem is WHMCS v7.x generates Bootstrap v3 specific HTML and CSS classes. Not all the output is templated. So not only would you need a 'seven' template and new orderform templates BUT you'd also need WHMCS itself to generate BS3 compatible HTML/CSS for the six theme and BS4 compatible HTML/CSS for the seven theme.
They should really remove all HTML/CSS code from WHMCS and put it in templates making WHMCS completely independent of any chosen front-end layer so you could pick BS3, BS4, Foundation, Timber, Vue, React...
The seven theme suggestion above is perfect, would be great to see this inplemented!
Thanks for your continued comments.
A major consideration, in addition to creating a new main theme itself, are the order form templates. These are currently all designed for Bootstrap 3, and so would also need to be refactored (or an entirely new set created from scratch).
Presumably there would also need to be some kind of dependency system created to prevent an order form template being selected in conjunction with a theme designed for different Bootstrap versions.
This means that maintaining two themes for different versions of Bootstrap becomes technically complex very quickly. So the preferred option might be to go for a hard swap in a major version, rather than operating both side-by-side for several minor versions.
What are your thoughts on that approach?
@WHMCS John - Either way, we need BS4 sooner rather than later. The community is becoming much more active in this thread (despite it being open for 9 months). It's becoming pressing for most now. We are currently maintaining a basic BS3 and BS4 version of our website to make integration into WHMCS easier, and honestly - it's a nightmare and doubling my workload.
A hard swap would be preferable if it's NOT going to take another
year to hit a stable release. If a copy of the six theme, and
orderforms, were "dumped" on Github with a small amount of custodial
guidance from WHMCS then I'm pretty sure the community would have
already done the grunt work and refactored the new theme to BS4 by now.
with a refactoring, the concept of adding a different "child" theme
based on a parent theme, with only the changed tpl and css files in a
new child theme, would be a huge improvement. We have the general
Wordpress child-theme example as a guide. For me, I find I only need to
modify a dozen lines of template code so I am reluctant to make a mass
copy of the six theme because then I have to track template changes in
major updates otherwise my site breaks. I have found it's easier to
script sed edits to the templates after an update or fresh install so I
only have one small script to maintain. The custom.css file really helps
but the templates themselves need to be managed as a child-theme for
those of use who only need to modify less than 10% of the templates.
I think this is a great idea, but should be a feature request in it's own right.
It's always struck me as odd, and I've been using whmcs since v3.x, that the order forms are cross theme. They should be rolled into the theme.
Duplication of template files could be perhaps mitigated against by implementing child themes that override the core theme. See how WordPress or Prestashop do this for example.
Another problem I've come across in removing bootstrap from themes is there is still html generated within whmcs. Ie. Some html output is not templated. It means we're stuck using Bootstrap and can't use anything lighter or more modern.
Or just move order form templates to within each theme?
Or implement proper theme overrides so you can have a core set of templates with only overrides in the theme where required instead duplicating every template file in every theme as you currently have to do. It would making upgrading easier as we wouldn't have to worry about an upgrade overwriting templates or having to diff template changes on every upgrade.
However, I'm not sure it would be possible to implement a BS3 & BS4 set of templates at the same time as there's still a significant chunk of html that gets generated within the whmcs code and is not templated. Last time I tried to strip out Bootstrap and replace it with something else, I quickly realised parts of it are impossible as it generates code containing bootstrap specific html & CSS classes before they hit the template tags. Until whmcs completely separates the view, we're stuck with bootstrap and possibly be at that.
That's where I got stuck trying to upgrade from BS3 to BS4 myself - some of the tags generated were depreciated! I'd have to write a load more CSS to make it work backwards.
I was able to do a BS3 to BS4 migration a few months back. It was so much work that I scrapped the project altogether. I ended up using so much JS to overwrite and swap classes or data-attributes that it wasn't worth the effort.
Oops. "possibly be" = "possibly v3". I blame my phone's autocorrect. ;)
If you're going to go through this process of updating the themes from BS3 to BS4, please do an overhaul of the theming system itself. A lot of HTML is still hardcoded into WHMCS and inaccessible from the TPL files (especially on the admin side). I do like the idea of a WordPress-like theming system with child themes associated with it. This would make customizations much easier for people who are not able to dig deep into HTML/CSS/JS/PHP.
I think WHMCS is at the point where it could make it a little easier for people to adjust their themes without this knowledge. Setting up key configuration options for colors, fonts and other changes would give customers a sense of freedom. This would not be of much help for theme developers like myself, but if it's a system our themes can tie into then great.
A great example of this is a system like that of XenForo. It has the parent/child theming system like WordPress, but also a very easy to edit system that allows you to make changes to your theme on the fly without editing the CSS. It has basic configuration options for each theme, colors, fonts, etc. Implementing a system like this would definitely make WHMCS a more attractive software for people seeking to look different.
I believe your idea of adding checks to the theme system would suffice. With these changes, you wouldn't be able to take older WHMCS and continue to use them.
I think there is a lot you can do here, but the first step has to be moving all hardcoded markup out of the encoded files and into TPL files. In addition to cleaning up a lot of the markup that's still in use today (more for the admin themes).
I'd add that this is the same problem we had with being stuck on Bootstrap v2 for such a long time also. Back then it was easier to implement you own Bootstrap v3 theme as there wasn't so great a difference between v2 and v3.
I know WHMCS (the company) can't predict breaking of incompatibility between 3rd party framework versions but it perhaps should have been obvious then that being reliant on a particular version was not a good thing. Yes, putting the six theme out on git was good but it's not really helped move forward with Bootstrap because of the encrypted code still generating some of the HTML.
Thanks for your continued contributions to the discussion. Let's please keep this request on topic regarding Bootstrap 4 implementation. A discussion of changing how the template system works would be best assessed on its own merits, eg: https://requests.whmcs.com/topic/whmcs-child-themes-in-wordpress-style-to-make-upgrades-less-work
Comments have been locked on this page!