Monday, 31 January 2011

Refactoring Launchpad's lazrjs widgets

Just landed (r12285 on devel) is some refactoring I've been doing on the lazr-js widget wrappers. After hacking on the picker at Dallas, I felt the other editor widgets needed some attention as well. The primary documentation can be found in the source tree at lib/lp/app/doc/lazr-js-widgets.txt, in fact this is probably the best thing to read.

This new changes did several things:

fixed the multi-line editor so you don't need extra HTML tags surrounding the widget in the page template

changed the widgets to actually use page templates to render the content instead of fiddling with string substitution

refactored the class inheritance - the multi-line editor no longer inherits from the single line editor, but instead they both inherit from a common base

it changed the way the editable attribute is defined - from being the name of the attribute, to being the field from the interface

the initial text for the multi-line editor is now determined from the object itself, not a parameter passed through to the constructor

the permission checks were unified, which fixed a problem with the text editors using mutator functions exposed through lazr.restful

you now have to be explicit about the id used for the HTML tag surrounding the editor - this wasn't much of an ask as all call sites were already doing this