# Contribute to the theme v8 -\> v9 upgrade guide

**URL:** https://forums.concretecms.org/t/contribute-to-the-theme-v8-v9-upgrade-guide/4515
**Category:** Developing with Concrete
**Created:** [November 24, 2022, 1:52am UTC](https://forums.concretecms.org/t/contribute-to-the-theme-v8-v9-upgrade-guide/4515 "2022-11-24T01:52:26Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![EvanCooper](https://forums.concretecms.org/user_avatar/forums.concretecms.org/evancooper/32/4597_2.png) [@EvanCooper](https://forums.concretecms.org/u/EvanCooper)
#### Post date: [November 24, 2022, 1:52am UTC](https://forums.concretecms.org/t/contribute-to-the-theme-v8-v9-upgrade-guide/4515/1 "2022-11-24T01:52:26Z")

</div>

Hi all,

We have begun a v8-\>v9 theme upgrade guide here. This includes some of the main questions and stumbling blocks we have encountered or seen folks encountering in the community. Please have a look, bookmark it for your reference as you’re working on your themes and add-ons, and most importantly, **if you have any other things you think would be helpful to add go ahead and post them as a reply to this thread!** Thanks!

> **[Updating Concrete Themes from Version 8 to Version 9 :: Concrete CMS](https://documentation.concretecms.org/tutorials/updating-concrete-themes-version-8-version-9)**
>
> This tutorial covers commonly encountered issues when upgrading a Concrete CMS theme from version 8 to version 9

---

<div class="post-metadata">

### Author: ![EvanCooper](https://forums.concretecms.org/user_avatar/forums.concretecms.org/evancooper/32/4597_2.png) [@EvanCooper](https://forums.concretecms.org/u/EvanCooper)
#### Post date: [November 24, 2022, 1:53am UTC](https://forums.concretecms.org/t/contribute-to-the-theme-v8-v9-upgrade-guide/4515/2 "2022-11-24T01:53:08Z")

</div>



---

<div class="post-metadata">

### Author: ![1stthomas](https://forums.concretecms.org/user_avatar/forums.concretecms.org/1stthomas/32/1176_2.png) [@1stthomas](https://forums.concretecms.org/u/1stthomas)
#### Post date: [December 14, 2022, 9:37am UTC](https://forums.concretecms.org/t/contribute-to-the-theme-v8-v9-upgrade-guide/4515/3 "2022-12-14T09:37:20Z")

</div>

Access new Instances through the app container:  
old: `$app->make('helper/xyz', [$ui]);`  
new: `$app->make('helper/mesch/user', ['ui' => $ui]);` or `$app->make('helper/mesch/user', compact(['ui']));`

---

<div class="post-metadata">

### Author: ![1stthomas](https://forums.concretecms.org/user_avatar/forums.concretecms.org/1stthomas/32/1176_2.png) [@1stthomas](https://forums.concretecms.org/u/1stthomas)
#### Post date: [December 14, 2022, 9:38am UTC](https://forums.concretecms.org/t/contribute-to-the-theme-v8-v9-upgrade-guide/4515/4 "2022-12-14T09:38:27Z")

</div>

Support for the `tools` route has been removed:

> <https://github.com/concretecms/concretecms/issues/8955>
>
> We're removing tools support from concrete5 version 9. Tools were a very old way… of handling backend scripts like AJAX endpoints, etc... and things like dialogs/panels before we had the routing/controller system. You could just go to \`index.php/tools/required/foobar\` and that would just load the script located at concrete/tools/foobar.php\`. Tools would also work with subdirectories so \`index.php/tools/required/foo/bar\` would load the content at \`concrete/tools/foo/bar.php\`. 
> 
> To finish this task, you'll need to take all tools scripts located here:
> 
> concrete/tools/pages
> 
> and do the following for EACH tool script.
> 
> 1. Search the core for any usage of the script. Some of these scripts may have already been migrated, but the original code was left behind. If there is no usage of the tool script in the core, delete it and proceed to the next tool. If the script is indeed in use, proceed with the next step.
> 1. Create new routes for these tools. They'll have to be created specifically and registered in our routing system. Put them in either \`routes/misc.php\` or in an appropriately named routes file. 
> 2. Make sure these routes are registered in \`SystemRouteList\`. If the file they're being added to already existed, they should be.
> 3. Create backend controllers for relevant portions of these routes.
> 4. If there is a frontend aspect to this tool, make sure that there is a front-end view in the \`concrete/views\` directory for it. 
> 5. Make sure that all code in the core is updated to point to the new \`ccm/system/\` URL for this endpoint instead of the old \`index.php/tools/required\` endpoint.

---

<div class="post-metadata">

### Author: ![1stthomas](https://forums.concretecms.org/user_avatar/forums.concretecms.org/1stthomas/32/1176_2.png) [@1stthomas](https://forums.concretecms.org/u/1stthomas)
#### Post date: [December 14, 2022, 9:40am UTC](https://forums.concretecms.org/t/contribute-to-the-theme-v8-v9-upgrade-guide/4515/5 "2022-12-14T09:40:35Z")

</div>

Requiring core assets the old way like: `$this->requireAsset('core/sitemap');` will create a log entry, that the asset can not be found.  
The new way is to implement the related feature interfaces.

* * *

I can not add more than 3 messages, without an answer of someone else. Therefor my last message comes here:

Using the tab helper like: `$app->make('helper/concrete/ui')->tabs([]);` needs following adjustments:

- the container with the tab contents needs an additional CSS class `tab-content`
- the tab contents need the additional CSS class `tab-pane` and the additional attribute `role="tabpanel"`, the active tab needs the additional CSS class `active`
- the item IDs in the initial `$helper->tabs()` call need to be prefixed with `ccm-tab-content-` (e.g. old: `pane-general`, new: `ccm-tab-content-pane-general`)

If you need to make these changes backward compatible with c5-8:

- Add the prefixes only on c5-9 (3rd point)
- All other changes do not interfer with c5-8

---

<div class="post-metadata">

### Author: ![EvanCooper](https://forums.concretecms.org/user_avatar/forums.concretecms.org/evancooper/32/4597_2.png) [@EvanCooper](https://forums.concretecms.org/u/EvanCooper)
#### Post date: [January 4, 2023, 10:39pm UTC](https://forums.concretecms.org/t/contribute-to-the-theme-v8-v9-upgrade-guide/4515/6 "2023-01-04T22:39:57Z")

</div>

Thanks @1stthomas! I will add these in.

---

<div class="post-metadata">

### Author: ![EvanCooper](https://forums.concretecms.org/user_avatar/forums.concretecms.org/evancooper/32/4597_2.png) [@EvanCooper](https://forums.concretecms.org/u/EvanCooper)
#### Post date: [January 4, 2023, 10:59pm UTC](https://forums.concretecms.org/t/contribute-to-the-theme-v8-v9-upgrade-guide/4515/7 "2023-01-04T22:59:17Z")

</div>

All right I have added those in and gave you a shout out and a badge - thanks!
