Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
ContentBox v4.1.0 is a minor release sporting a focus on stability from our 4.0.0 release and some great new improvements. Let's explore this release:
This is a minor release, so a simple box update contentbox
will get you upgraded to this release.
ContentBox has been upgraded to work with ColdBox 5.1.x
All content editors have the following new events being announced:
Editor Navigation Tab Area
These events fire after the final tab in a content editor, usually so you can add your own tabs
cbadmin_pageEditorInBody
cbadmin_ContentStoreEditorNav
cbadmin_entryEditorNav
Editor Navigation Body Area
These events fire after the final tab content panel, usually so you can add your own tab panels
cbadmin_pageEditorNavContent
cbadmin_contentStoreEditorNavContent
cbadmin_entryEditorNavContent
If you are building custom ContentBox modules that attach menus to the admin menu, then this update is for you. All remove and add methods for menus now will not throw up if you reference a non-existent menu or sub menu. Cleanup is now easier since you can remove at your heart's content without worrying of getting an exception.
The service layer for content objects has been updated with many new arguments and methods. As always, check out the API Docs (https://apidocs.ortussolutions.com/contentbox/4.1.0/index.html) for further insight.
ContentStoreService@cb
findPublishedContent()
Added a sortOrder
argument
search()
parent
argument can now be an entity or an entity ID
New slugPrefix
argument which you can use to root a search on a specific content hierarchy. Ex: slugPrefix = "products"
will search for all content under products/*
ContentService@cb
findPublishedContent()
parent
argument can now be an entity or an entity ID
New slugPrefix
argument which you can use to root a search on a specific content hierarchy. Ex: slugPrefix = "products"
will search for all content under products/*
CommentService@cb
search()
Added a sortOrder
argument
[CONTENTBOX-1011] - Error while Insert Menu widget
[CONTENTBOX-1012] - Translation Error on Installation for Email Setup
[CONTENTBOX-1014] - Verification of custom widget missing a / on ModuleConfig creation
[CONTENTBOX-1015] - cbhelper still had setnextevent instead of relocate
[CONTENTBOX-1016] - Content displaying issues on Widget List & Media manager
[CONTENTBOX-1017] - meta description not rendering content
[CONTENTBOX-1019] - bug when creating new content, it fired a publishd nagging when saving and not publishing
[CONTENTBOX-1020] - Permission Groups / Permissions relationship doesn't cascade and errors when removing permissions or authors
[CONTENTBOX-1022] - Not able to delete a custom theme
[CONTENTBOX-1024] - Don't display alert as "Your content is published already" for non published pages.
[CONTENTBOX-1025] - Insert Widgets options are not enabled even the widgets having content.
[CONTENTBOX-1029] - Invalid construct. A script statement must end with ";". in CF11.
[CONTENTBOX-1030] - Don't show fbPreferences.listFolder is undefined in PRC error while using media manager
[CONTENTBOX-1033] - Key [MESSAGE] doesn't exist when using bulk remove in Comments
[CONTENTBOX-1038] - checks for ip and username banning so login does not break with multiple entries
[CONTENTBOX-1040] - Can't cast Object type [Struct] to a value of type [boolean] when deleting admin modules
[CONTENTBOX-1044] - Error on media manager due to HTML Helper update
[CONTENTBOX-1045] - error opening import settings in the geek panel missing js
[CONTENTBOX-1046] - Admin Layout does not include cbadmin_beforeBodyEnd
[CONTENTBOX-1050] - Category names should be unique, validation was missing
[CONTENTBOX-1052] - bulk update of comment status breaks
[CONTENTBOX-1053] - can't edit raw settings due to JS/CF boolean conversions
[CONTENTBOX-1054] - security rules filter and ordering not working
[CONTENTBOX-1058] - Throwing error while adding the existing name in Permission, Permission Group, Categories and Roles
[CONTENTBOX-1059] - Need to change the Icon while assigning permissions for Roles and Permission Groups
[CONTENTBOX-1060] - event caching cleanup was not working correctly for wrappers
[CONTENTBOX-1061] - Lots of buttons missing the `default` class tag
[CONTENTBOX-1063] - Some submenu items where not activated when used
[CONTENTBOX-1064] - CommentForm widget previews not working and no way to default it to the currently executing page.
[CONTENTBOX-1065] - Can't delete raw settings due to JS error
[CONTENTBOX-1066] - Case issues for views on case sensitive OS's
[CONTENTBOX-1067] - error on async interception points loading hibernate sessions
[CONTENTBOX-746] - Multi-select in Media Manager for deletes and downloads
[CONTENTBOX-1027] - Add sortOrder as an option for getting published contents
[CONTENTBOX-1041] - New editor nav interceptors: cbadmin_pageEditorInBody, cbadmin_ContentStoreEditorNav,cbadmin_entryEditorNav
[CONTENTBOX-1042] - Update to ColdBox 5.1
[CONTENTBOX-1051] - New Editor Content Interceptors: cbadmin_pageEditorNavContent, cbadmin_contentStoreEditorNavContent, cbadmin_entryEditorNavContent
[CONTENTBOX-1055] - Content Services search parent argument can now be the parent entity as well
[CONTENTBOX-1056] - Content Services hiearchical search via the slugPrefix argument on all search methods
[CONTENTBOX-831] - FileBrowser - Filter to only show directories for Asset Chooser
[CONTENTBOX-981] - Remove upload capabilities for widgets, modules and themes due to high security risks
[CONTENTBOX-995] - AdminMenuService could help Modules add and clean up after themselves
[CONTENTBOX-1018] - improve reusability of date/time formats in content objects
[CONTENTBOX-1028] - Don't show non-stop loading while upload files
[CONTENTBOX-1032] - Missing alert message on media manager when trying to download a file but none selected
[CONTENTBOX-1034] - container fluid on login screen left over in security login.cfm
[CONTENTBOX-1049] - Update the UI module to use the content service when displaying pages to allow for custom page types
[CONTENTBOX-1062] - Updated circle indicator to a filled circle for visual impact
[CONTENTBOX-1068] - Updated environments for container heartbeats
ContentBox v4.x is a major version update and will require the following instructions to update your v3.x installations. Please follow this guide or contact us at <info@ortussolutions.com> so we can assist you during your upgrade process.
We highly encourage you to start your upgrade process from version 3.7.1 and not from anything below. So please refer to the previous version upgrade guides to make sure you are on version 3.71.
All Upgrades to ContentBox should be done with the assistance of CommandBox CLI. So make sure you have CommandBox installed.
Please make sure you backup your source code and your database. We are not responsible for broken installations.
There are two parts to the upgrade process:
Update the source code using our updater recipe
Run the database migrations via the ContentBox administrator panel
Please make sure your CFML engine has been completely stopped.
If you are in a linux or mac environment you can execute the recipe using the following shell commands from the root directory of your application.
If you are in windows, download the following recipe:
and place it in the root of your project. Then issue the following CommandBox shell command to execute it.
That's it! The updater will take care of upgrading your 3.x source code to the latest 4.x source code.
Once your recipe finalizes, startup the CFML server and go to the ContentBox administrator (localhost:port/cbadmin
) and navigate to the System > Updates section. Then click on the Download Update tab and paste the following updater URL:
https://downloads.ortussolutions.com/ortussolutions/contentbox/4.2.1/contentbox-patch-db-4.2.1.zip
This will download the database updater and run it. Once finalized, your installation is ready to rock!
Luis Majano is a Computer Engineer with over 15 years of software development and systems architecture experience. He was born in San Salvador, El Salvador in the late 70’s, during a period of economical instability and civil war. He lived in El Salvador until 1995 and then moved to Miami, Florida where he completed his Bachelors of Science in Computer Engineering at Florida International University. Luis resides in The Woodlands, Texas with his beautiful wife Veronica, baby girl Alexia and baby boy Lucas!
He is the CEO of Ortus Solutions, a consulting firm specializing in web development, ColdFusion (CFML), Java development and all open source professional services under the ColdBox and ContentBox stack. He is the creator of ColdBox, ContentBox, WireBox, MockBox, LogBox and anything “BOX”, and contributes to many open source ColdFusion projects. You can read his blog at www.luismajano.com
Luis has a passion for Jesus, tennis, golf, volleyball and anything electronic. Random Author Facts:
He played volleyball in the Salvadorean National Team at the tender age of 17
The Lord of the Rings and The Hobbit is something he reads every 5 years. (Geek!)
His first ever computer was a Texas Instrument TI-86 that his parents gave him in 1986. After some time digesting his very first BASIC book, he had written his own tic-tac-toe game at the age of 9. (Extra geek!)
He has a geek love for circuits, microcontrollers and overall embedded systems.
He has of late (during old age) become a fan of running and bike riding with his family.
Keep Jesus number one in your life and in your heart. I did and it changed my life from desolation, defeat and failure to an abundant life full of love, thankfulness, joy and overwhelming peace. As this world breathes failure and fear upon any life, Jesus brings power, love and a sound mind to everybody!
“Trust in the LORD with all your heart, and do not lean on your own understanding.” Proverbs 3:5
Jorge is an Industrial and Systems Engineer born in El Salvador. After finishing his Bachelor studies at the Monterrey Institute of Technology and Higher Education ITESM, Mexico, he went back to his home country where he worked as the COO of Industrias Bendek S.A.. In 2012 he left El Salvador and moved to Switzerland in persuit of the love of his life. He married her and today he resides in Basel with his lovely wife Marta and their daughter Sofía.
Jorge started working as project manager and business developer at Ortus Solutions, Corp. in 2013, . At Ortus he fell in love with software development and now enjoys taking part on software development projects and software documentation! He is a fellow Cristian who loves to play the guitar, worship and rejoice in the Lord!
Therefore, if anyone is in Christ, the new creation has come: The old has gone, the new is here! 2 Corinthians 5:17
ContentBox is a professional open source modular CMS (Content Management System) for Modern ColdFusion (CFML) and Java engines that allows you to easily build websites, blogs, wikis, complex web applications and even power mobile or cloud applications. Built with a secure and flexible modular core, designed to scale, and combined with world-class support, ContentBox will get your projects out the door in no time.
ContentBox is maintained under the Semantic Versioning guidelines as much as possible.Releases will be numbered with the following format:
And constructed with the following guidelines:
Breaking backward compatibility bumps the major (and resets the minor and patch)
New additions without breaking backward compatibility bumps the minor (and resets the patch)
Bug fixes and misc changes bumps the patch
ContentBox Modular CMS is open source and licensed under the Apache 2 License. Ortus Solutions, Corp, the makers of ContentBox, can also offer commercial and supported versions as well.
Copyright by Ortus Solutions, Corp
ContentBox is a registered trademark by Ortus Solutions, Corp
The ContentBox and discussion group can be found here: https://community.ortussolutions.com/c/communities/contentbox/15
We all make mistakes from time to time :) So why not let us know about it and help us out. We also love pull requests, so please star us and fork us: https://github.com/Ortus-Solutions/ContentBox
By Slack: http://boxteam.herokuapp.com/
ContentBox is a professional open source software backed by Ortus Solutions, Corp offering services like:
Custom Development
Professional Support & Mentoring
Training
Server Tuning
Security Hardening
Code Reviews
Official Website: https://www.contentboxcms.org
Source Code: https://github.com/Ortus-Solutions/ContentBox
Twitter: @gocontentbox
Facebook: https://www.facebook.com/gocontentbox
Vimeo Channel: http://vimeo.com/channels/contentbox
YouTube Channel: https://www.youtube.com/channel/UCKLYx772weG6Eh06ny-lJBg
Because of His grace, this project exists. If you don't like this, then don't read it, its not for you.
"Therefore being justified by faith, we have peace with God through our Lord Jesus Christ: By whom also we have access by faith into this grace wherein we stand, and rejoice in hope of the glory of God." Romans 5:5
The source code for this book is hosted in GitHub: https://github.com/ortus-docs/contentbox-docs. You can freely contribute to it and submit pull requests. The contents of this book is copyright by Ortus Solutions, Corp and cannot be altered or reproduced without author's consent. All content is provided "As-Is" and can be freely distributed.
The majority of code examples in this book are done in cfscript
.
The majority of code generation and running of examples are done via CommandBox: The ColdFusion (CFML) CLI, Package Manager, REPL - https://www.ortussolutions.com/products/commandbox
Flash, Flex, ColdFusion, and Adobe are registered trademarks and copyrights of Adobe Systems, Inc. Lucee is a trademark of the Lucee Association of Switzerland.
The information in this book is distributed “as is”, without warranty. The author and Ortus Solutions, Corp shall not have any liability to any person or entity with respect to loss or damage caused or alleged to be caused directly or indirectly by the content of this training book, software and resources described in it.
We highly encourage contribution to this book and our open source software. The source code for this book can be found in our GitHub repository where you can submit pull requests.
15% of the proceeds of this book will go to charity to support orphaned kids in El Salvador - https://www.harvesting.org/. So please donate and purchase the printed version of this book, every book sold can help a child for almost 2 months.
Shalom Children’s Home (https://www.harvesting.org/) is one of the ministries that is dear to our hearts located in El Salvador. During the 12 year civil war that ended in 1990, many children were left orphaned or abandoned by parents who fled El Salvador. The Benners saw the need to help these children and received 13 children in 1982. Little by little, more children came on their own, churches and the government brought children to them for care, and the Shalom Children’s Home was founded.
Shalom now cares for over 80 children in El Salvador, from newborns to 18 years old. They receive shelter, clothing, food, medical care, education and life skills training in a Christian environment. The home is supported by a child sponsorship program.
We have personally supported Shalom for over 6 years now; it is a place of blessing for many children in El Salvador that either have no families or have been abandoned. This is good earth to seed and plant.
ContentBox v4.0.0 is the first major release of ContentBox and it sports tons of new updates, improvements and bug fixes including a major upgrade to which in itself gives us tons of new updates and features. So let's start exploring the major areas of improvement of this release.
The entire ContentBox core has been migrated to leverage ColdBox 5.x. This introduction has given us a plethora of features not only for development purposes but also great stability, and speed. The major areas of improvement are:
Performance, performance, performance
Container and Environment support and detection
Full null support
Inheritable entry points for Modules
New modularity events
modules_app
inception
Default Module Exports
Simplified URL Routes
Enhanced Routers for core and modules
Named Routes
Event Caching Improvements
Default JSON renderings
Rendering Regions
Faster Integration Testing
In 4.x, modules can leverage the full power of ColdBox Routing as each module has its own Router.cfc
now. No more are you bound to just simple moduleEntryPoint/handler/action
URLs, you can now use the full expressive power of ColdBox Routes:
Thanks to ColdBox 5, your ContentBox modules now support full inception of child modules. Even the children will respond to full URL routing using the pattern shown previously.
contentbox-custom
ModuleThis is one of the major updates for this release in order to adhere to our containerization and portability strategies. Let's investigate the problem first:
In previous releases, custom code (media library, themes, widgets, and modules) had to be installed in specific folders inside of the contentbox
module, which is installed by CommandBox.
This is fine and dandy, but the issues arise once you want to put your custom code into source control but NOT the ContentBox source. It makes no sense to store the ContentBox source code in source control since the inception of CommandBox and package management. This created many issues in figuring out how to JUST add your custom pieces to source control and then came CommandBox 4 which allowed inline updates and just destroyed custom code.
Then came our containerization strategy where we wanted a simple mount point for all custom code. This was painful under the 3.x layout.
This gave way to the creation of the contentbox-custom
module which is a module stored under the modules_app
convention. This module will store all custom code and can be stored in source control without interfering with ContentBox source code.
This also gave fruition to a new feature where now you can use the custom module for your custom media library, modules, themes and widgets, but also gave way to also store CommandBox controlled core modules and themes. This means that when you install modules and themes from ForgeBox they will install under the previous locations because they are managed by CommandBox.
You will also find the ModuleConfig.cfc
in the root of your custom module with the basics to bootstrap the module by ContentBox. The rest is up to you. You can now leverage a full module to bootstrap all your custom code. You now have the power to control the loading/unloading of all your custom assets. Yeayyy for modularity.
If you wanted to create custom widgets before you either had to place them in themes or in the core location. Now you can store them in the custom module under the _widgets
folder and have them available globally.
Since the addition of these new locations for widgets we have also added a discovery process when using widgets just by name in content markup or retrieval:
Check custom location: modules_app/contentbox-custom/_widgets
Check active theme widgets folder
Check core location: modules/contentbox/widgets
The new custom module will also house your media library under the _content
folder. The ContentBox v3 upgrader will move your library here (if it exists).
If you are leveraging the CommandBox or ContentBox docker images, you can now easily mount your custom source code by just pointing it to the modules_app/contentbox-custom
folder.
We have now added the capability for users to enroll and unenroll in multi-factor authentication according to their provider of choice or admin's choice :)
Tip: Admins can also un-enroll users as a fail-safe in order to allow them to re-enroll if needed.
ContentBox v4.2.0 is a minor release sporting a focus on performance, security and stability from our 4.x release and some great new improvements. Let's explore this release:
This is a minor release, so a simple box update contentbox
will get you upgraded to this release.
ContentBox has been upgraded to work with ColdBox 5.3.x
[] - AdminBar not showing up anymore
[] - When cloning a content object, the markup type is not copied over
[] - contentbox-security/interceptors/CheckForForceTwoFactorEnrollment.cfc is fireing on too many events
[] - cb helper getCurrentCustomFields() does not check for null custom field arrays
[] - Remove spaces from fb.min.js filenames in Filebrowser handler
[] - Preflight check has a race condition where duplicate settings can be inserted and stop app from starting
[] - Hello user module is missing version property - error when populating module config
[] - Deactivate modules if its directory does not exist in disk
[] - Widgets do not appear in panel until Reinit
[] - Folders in a module's widgets directory are treated as components
[] - Widgets - insert button missing
[] - CommentForm blowing up on previews on empty content objects
[] - Exception when import permission groups in a user
[] - Content types .print and .doc not rendered
[] - ACF blows up with async orm announcements
[] - Page preview not working throwing exception on missing layout
[] - Generated Meta Description showing HTML
You can read all about the ColdBox 5 release here:
[] - Error clicking Tools --> Export in admin
[] - Bulk remove comments throws an error
[] - Calling right function for bulk remove comments
[] - Update TwoFactorService to check for provider only if enabled
[] - Media provider HTML producing non-unique IDs
[] - Force users to enroll in MFA if the global MFA setting is turned ON.
[] - RenderView widget errors due to event arguments
[] - ThemeService was erroring when saving settings
[] - quickLayout defaults to the contentbox module not the module the theme belongs to
[] - Widget Discovery Mode regression in Theme location change
[] - Submodules of ContentBox Modules are not registered
[] - Modules default value for Module Type is Core
[] - Module Deactivation Failures throw errors instead of catching nicely?
[] - When admin close the 'Quick View' pop-up the 'ContentBox Asset Chooser' also closed.
[] - Do not show error message for expired content. Currently when I create expired Content Store Items. When the expiration happens I get an Error message. There should be no error message.
[] - Checkboxes alignment issue in Content store -> Categories menu
[] - 'Transform' tab displaying alignment issue in Image edit model window
[] - Invalid return type while Search and Apply filters on Comments->Inbox
[] - blog paging bootstrap compatable
[] - Error Installing ContentBox-installer@be -security interceptor not found
[] - Issue while uploading files With Long name in Media manager
[] - Creation of new contentbox-custom module for storing all custom user data
[] - Refactor media content to new contentbox-custom/content location
[] - Allow for modules to exist in internal contentbox module and also in contentbox-custom/modules location
[] - Update exporter/importer for custom modules location
[] - Update themes to work with core and custom location
[] - Create widgets at custom location with override capabilities to core.
[] - Migrate away from bower to yarn for UI
[] - Enable MFA enrollment and unenrollment
[] - ContentBox Module executions now support child modules and also full URL Routing
[] - Revamps of many-to-many relationships with cascading side effects
[] - Media manager bug fixes concerning uploads and styles
[] - Add interception points around lost password form
[] - Update lost password instructions to match new flow
[] - Restrict Administrators from setting User Passwords
[] - Improve two factor flow by adding enrollment and unenrollment screens and interface updates
[] - Update all JS libraries to their latest versions
[] - content search improvements to do fuzzy searches instead of eq searches
[] - Var scoping issues in Widget Render lead to variable bleeding
[] - Contentbox installer doesn't allow you to select a special port for the datasource
[] - config and environment overrides are now reloaded if the settings cache is flushed.
[] - Added better transactioning to tests
[] - categories widget to NOT show 0 count items
[] - Removed Old ForgeBox panels due to CommandBox first initiative
[] - Move importer/exporters models from main contentbox module
[] - Refactor ContentBox UI to leverage the routing service instead of the SES interceptor
[] - Performance: settingService key cb_enc_key is called for each request
[] - page, comments are requested for each page view even if they are disabled
[] - Refactor the retrieval of ui categories to increase performance, lazy load for the win
[] - Current markup type and current editor are not shown as selected
[] - Upgrade messagebox to new version
[] - Upgrade cborm to support ACF2018