We want to develop a Layout Plugin for the Liferay Portal Server 6.0.x. The built in layout do not offer the drag-and-drop flexibility that we desire. Most existing plugins constrain portlets to fit in certain 1, 2, or 3 column buckets on screen.
We want more intelligence in the layout engine to allow the user to drag and drop portlets anywhere and implement as many of the following features as possible:
* Arbitrary column count: 1, 2, 3, even 4, 5, 6, columns etc as the user wishes
* Allow for an arbitrary change in column count at different vertical positions on screen. For example: 1 full width column at the top, 4 columns beneath that, 2 columns below that, etc.
* Non-uniform column widths. For example a two column wide section would hold a wide 720 pixel column on the left (say for an embedded video), with a narrow 95 pixel column on the right (say for a skyscraper ad).
* Bounds checking using portlet dimensions. For example, if a column is constrained to be only 95 pixels wide and the user tries to drag in the 720px movie player portlet, the 95 px column should grey out and block the user from being able to place the portlet in the narrow column.
* Ability to resize resizable portlets. If a portlet can occupy, say anywhere from 200px on up, the user should be able to limit it's width to, say 400px. (Minimum/Maximum x,y dimensions and user overrides.
**Deliverable 1:
**Based on your present knowledge of Liferay, plus your own investigation into Liferay internals and possibly source code, a brief report (like a wiki page or something) describing the feasibility of the above features and rough time estimates for development.
Also, since these features are ambitious, we recognize that coding changes to the Liferay source and/or other types of Liferay plugins may be required in order to make the development of the plugin feasible. So, please investigate this and describe these possible changes in the report.
Based on that report, we will decide what features to develop and what to omit (if too time consuming or impossible) and you will then be able to commence coding.
**Deliverable 2:
**The final implemented layout plugin. This may be (and preferably will be) delivered in phases as individual features start to work.**
**