ShipIt V – Page Ordering for Confluence

Description

Currently in Confluence there is no way for the user to order pages within it’s tree (ordered by title by default). The ability to order pages would be a useful feature for html/pdf exports. CONF-1031 is a very highly voted for feature with 99 votes and also something I wanted so I could correctly produce my thesis report.

Implementation

The thing I found most difficult about this feature was to encapsulate it into an appropriate and user friendly UI. I concluded that a ‘drag-and-drop’ approach would be the most appealing to users and found a tool called tool man which supported a simple drag-drop library. I was able to integrate the top level pages with this tool without too much difficulty and also add an ajax request to update the page “weight” upon drag/drops.

In terms of storing a page’s order, I added a new field “weight” to the ContentEntityObject (which evidently is not the most ideal implementation but was the easiest). When a CEO’s bag of “children” are retrieved, it is returned ordered upon this new “weight” field. Additionally, usages of the CEOTitleComparator were replaced with a CEOWeightComparator.

Problems

The drag-drop library I had chosen did not support nested lists to be drag-and-droppable, so I was only able to get the top level page ordering implemented (i.e in my current implementation the children pages of a top level page cannot be ordered). I did try my best to tweak the library but to much dismay failed to get nested lists working.

A few more issues that would need to be dealt with for a complete implementation would be:

Exit mobile version