I was testing the new front-end theme that @wesruv is putting together for us on my local, but then wanted to make some screenshots for an issue in the queue. So, I had to switch the default front-end theme to Bartik and then, once finished with the screenshots, switch back to the new Basis theme to keep testing. This made me realize how tedious it is for people to test various themes they might have installed before making a decision.

So, lets take the simple case of testing a single new theme that is already installed, deciding that it does not look good and then reverting to Bartik. Lets count clicks...

1st way (real n00b): 1. go to /admin/appearance 2. click the "enable and set default" link for the theme you want to check out 3. visit home page to see what it looks like 4. return to /admin/appearance 5. click the "set default" on the Bartik theme 6. click the "disable" link of the theme you were testing

2nd way (someone that knows their sht) 1. go to /admin/appearance 2. click the "enable and set default" link for the theme you want to check out 3. open the home page **on a new tab 4. click the "set default" on the Bartik theme on the /admin/appearance tab that you kept open 5. click the "disable" link of the theme you were testing

(You could count the clicks of switching tabs here, but since these load instantly and they are not part of the whole website loading pages, lets assume that the general feeling is that they are not part of the Backdrop UX.)

Now imagine each of these scenarios when having to test more than one themes. Too many clicks = bad UX. So, here's what I propose: - [ ] add a theme drop-down selector on the admin bar listing all themes installed (both enabled and disabled). This is for use by the site admins or anyone with permission to access the admin bar really. Have it so that it switches themes upon selection (auto-submit). - [ ] show action links next to the drop-down, with "enable", "disable", "set default" and "enable and set default" as available options depending on the status of the selected theme. Have these links auto-submit/AJAX and throw a status message saying for example "[theme_name] was enabled and set as the default site theme". Note: not all these links will be visible all the time, so no UI clutter: - there will either be an "enable" or a "disable" link - "set default" will be visible only when the theme is enabled - "enable and set default" will be visible only when the theme is disabled

So, 2 link combinations (unless I'm missing something): - enable | enable and set default - disable | set default - [ ] be smart about setting default admin vs front-end themes. If the user hits the "set default" or "enable and set default" links while they are at the front-end, then set the selected theme as the default front-end theme. If they do the same while in admin pages, then set the selected theme as the default admin theme. - [ ] provide a theme selector block. This will be for showcasing themes for the site owner say (that has no permission to the admin bar). Again, drop-down selector with auto-submit, but show only enabled themes (by the admin). Only show action links if the user has permission to act upon themes. - [ ] make these features optional in order to avoid UI clutter. These will have temporary usage and are meant for use during the initial drafting stage of the website or when a redesign has been ordered. For the theme selector block we don't need to do anything about (can be removed from the layout). The admin bar selector will be an option in the admin bar settings page under /admin/config/administration/admin-bar.

So, we cover the following use cases: - site builder wants to showcase available themes to the site owner and give them the freedom to choose at their leisure - themer wants to be able to switch quickly between production/stable themes and one they are currently creating - @klonos wants to troubleshoot things and "kick the tyres" of themes so that he can go and harass theme developers/porters about things they got wrong

missed_a_spot

GitHub Issue #: 
1711