A few days ago, I posted about how Redmine was the solution for our agency. I mentioned a few downsides, but neglected to mention this. Over the past few weeks, I have been working on a new Redmine theme as a way to improve my skill as front end development. While I am generally very pleased with how Redmine works, I have to admit that the markup is an absolute mess. My complaints stem, mostly, from the complete lack of containers around sections in the UI – unrelated items are often under the same parent which makes it incredibly difficult to work with.

This is how pagination is handled in Redmine:

<p class="pagination">
    <span class="current page">1</span>
    <a href="/projects/redmine/issues?page=2" class="page">2</a>
    <a href="/projects/redmine/issues?page=3" class="page">3</a>
    <span class="spacer">...</span>
    <a href="/projects/redmine/issues?page=181" class="page">181</a>
    <a href="/projects/redmine/issues?page=2" class="next">Next »</a>
    <span class="items">(1-25/4504)</span>
    <span class="per-page">Per page:
        <span>25</span>,
        <a href="/projects/redmine/issues?per_page=50">50</a>,
        <a href="/projects/redmine/issues?per_page=100">100</a>
    </span>
</p>

Three distinct elements all in the same container with no clear designation of what item is what. The sidebar has the same problem:

<div id="sidebar">
    <h3>Issues</h3>
    <ul>
        <li>
            <a href="/projects/redmine/issues?set_filter=1">View all issues</a>
        </li>
        <li>
            <a href="/projects/redmine/issues/report">Summary</a>
        </li>
    </ul>
    <h3>Custom queries</h3>
    <ul class="queries">
        <li>
            <a href="/projects/redmine/issues?query_id=84" class="query">Documentation issues</a>
        </li>
        <li>
            <a href="/projects/redmine/issues?query_id=1" class="query">Open defects</a>
        </li>
        <li>
            <a href="/projects/redmine/issues?query_id=2" class="query">Open features</a>
        </li>
        <li>
            <a href="/projects/redmine/issues?query_id=931" class="query">Patch queue</a>
        </li>
        <li>
            <a href="/projects/redmine/issues?query_id=42" class="query">Plugin issues</a>
        </li>
        <li>
            <a href="/projects/redmine/issues?query_id=7" class="query">Translation patches</a>
        </li>
    </ul>
</div>

Those are just two sections in a sidebar. If you add other sections through plugins, it just adds more items to that container in the same manner, although at least here there are lists half-separating content.

All-in-all, Redmine is a very tough thing to theme and, often, to fix it you have to rework the structure through Javascript to make it doable, which is a terrible habit to get into.

Hi, I'm Josh!

I'm a software engineer and engineering manager based out of Phoenix, AZ. I'm a tinkerer, homelabber, sandbox gamer, and lover of all things music, television, and film. On this site, you'll find writings about all of the above and more.

Find Me Elsewhere

Logo for the Drift blog © 2015 Josh Janusch. All rights reserved.