Feature #9754

Advanced theming with better template engine

Added by test test over 10 years ago. Updated almost 8 years ago.

Status:NewStart date:
Priority:NormalDue date:
Assignee:-% Done:

0%

Category:UI
Target version:-
Resolution:

Description

It would be very useful to be able customize view via theming moreover than having to write plugin and patching (views).
A template engine being able to reuse or replace parts of the views would be helpful in this case.
The Master view rails tenplate engine is a very good example how this can be done and work.

The base layouts don't has to be pacthed so soften if redmine would provide such an template architecture and theming would be more mightful than nowadays.

History

#1 Updated by Etienne Massip over 10 years ago

Redmine supports Themes.

#2 Updated by Mischa The Evil over 10 years ago

Etienne Massip wrote:

Redmine supports Themes.

I think that is known to the issue author. I think he/she proposes some more advanced method providing more facilities to alter the core's views without overloading them.
Though, I think this FR needs much more info then what's provided currently. So without any further feedback soon I'd suggest to close this issue as "No feedback".

#3 Updated by David Boyer about 10 years ago

I'd really like to have improved theme support in Redmine. I've only recently started using the project and wanted to port the Twitter Bootstrap styles into a theme. Unfortunately it's pretty difficult to do much without any theme control over the HTML being created.

As a concept, I managed to create a "bookmarklet" that reworks the default theme (only tested with 1.4.0) into a Twitter Bootstrap one. I could throw this into a theme JavaScript file but you wouldn't want this happening on every page load.

https://gist.github.com/2414173

#4 Updated by David Boyer about 10 years ago

Here's some examples of what might be possible with a more flexible theme engine (click for larger versions)...

This issue

Roadmap

Issues

#5 Updated by Etienne Massip about 10 years ago

Mischa is right, what would fit your need?

#6 Updated by Jean-Philippe Lang about 10 years ago

I don't see how your examples would require a "more flexible" theme engine. The views are pretty much the same, except some colors and styles changes.

#7 Updated by David Boyer about 10 years ago

The "flexibility" is from the fact that the JavaScript I used does a big amount of DOM manipulation. If there was a way to easily customise HTML output, it would allow more flexible themes.

For example, the toolbar required several extra divs and conversion from "a" and "br" tags to an unordered list of links (ul > li > a).

Perhaps allowing themes to have their own view files. If they exist, use the theme version (public/themes/name/views), otherwise use the main Redmine version (app/views). Although that'd probably make theme compatibility harder... Don't know enough Ruby / Rails to make more technical suggestions.

#8 Updated by Terence Mill about 10 years ago

+1

#9 Updated by fer sjs over 9 years ago

This is important in my opinion too. Theming is much more than just CSS it involves being able to change the HTML output too.

For anyone with experience in theming is just obvious. The provided examples are self explanatory for anyone with experience on twitter bootstrap too. With that advance theming feature one could easily make advanced themes, responsive, mobile friendly, user friendly and with a beautiful look&feel.


Perhaps allowing themes to have their own view files. If they exist, use the theme version (public/themes/name/views), otherwise use the main Redmine version (app/views). Although that'd probably make theme compatibility harder... Don't know enough Ruby / Rails to make more technical suggestions.

This is how is done for example in the yii MVC PHP framework. And about compatibility themes will always be just compatible with one or various versions of core the same that happens with any other themable piece of software. Though it is true of course that a theme that is only based on CSS will play better with incompatible versions.

#10 Updated by marco deluca over 9 years ago

HTML Overrides are key to building better, more responsive themes. I don't know much about ruby/rails, but experience with other CMS where you could simply copy a view to a folder like themes/html/view (as mentioned above) makes it very easy to modify code to accommodate resources like Bootstrap. In this method, of course themes are tied to redmine versions, as are plugins. But I think this is a great idea so +1 from me. I'd love to be able to create a true bootstrap theme with redmine!

#11 Updated by Mischa The Evil over 9 years ago

I've noticed this issue again after recent activity. I did some quick googling and found themes_for_rails: https://github.com/lucasefe/themes_for_rails.
I haven't done any testing with it or whatsoever, thus I don't know if this is compatible with the current Redmine plugin/theme API, but it might be interesting in the light of this topic.

#12 Updated by Rob Jens over 8 years ago

marco deluca has a point. If you take a look at how `enlive` is doing this in Clojure,... Good example I think of how you can do this without touching the core files.

#13 Updated by Anonymous almost 8 years ago

As someone who's attempted a Bootstrap-based theme in the past, I would love to see custom template support.. Trying to make the current UI truly responsive is an absolute nightmare.

One point to keep in mind though: Themes that include custom views would introduce certain version compatibility issues. As of 2.4.3 there are already 313 .erb template files, which leaves a great many areas where things could break. I don't think most people realise just how much will need to change in order to get there.. However, heading towards a fully customizable UI definitely sounds like the right move to me.

Also available in: Atom PDF