There are many forms in Tiki's Smarty template files, and generally these need to be modernized and made Bootstrap-compatible (and therefore responsive - more usable in all device sizes).
Although the construction of some admin pages, etc. was updated, the templates directory still (as of Dec. 8, 2013) contains 218 usages of table class="formcolor", which as a rule has been used for form layout in Tiki. So the task continues.
For example, code like:
<form> <table class="formcolor" width="100%"> <tr> <td><label for="anonymous_name">Name</label></td> <td><input type="text" maxlength="50" size="30" id="anonymous_name" name="anonymous_name" value="{$comment_preview_data.name|escape}"></td> </tr> </table> </form>
Needs to be changed to something like:
<form class="form-horizontal" role="form"> <div class="form-group"> <label for="anonymous_name" class="col-sm-2 control-label">Name</label> <div class="col-sm-10"> <input type="text" maxlength="50" class="form-control" id="anonymous_name" name="anonymous_name" value="{$comment_preview_data.name|escape}"> </div> </div> </form>
Class="form-horizontal" uses Bootstrap's predefined grid classes to align labels and groups of form controls in a horizontal layout. Class="form-group" groups a label and input and gives them some bottom white space. Class="control-label" gives the label some spacing and aligns the text to the right. Class="form-control" adds styling to the input and makes its width 100%. The width can be controlled by wrapping the div in one of the grid-class divs, if needed.
Other general practices will follow, here. We should have a guide so any forms added in the future can be made the same way and have a unified appearance.
In the following, the label and selector or textarea are contained in grid classes for appropriate layout.
<div class="form-group"> <label class="col-sm-2 control-label" for="mess-prio">Priority:</label> <div class="col-sm-10"> <select name="priority" id="mess-prio" class="form-control"> </div> </div>
Similarly, for
<div class="form-group"> <label class="col-sm-2 control-label" for="broadcast-body">Body:</label> <div class="col-sm-10"> <textarea class="form-control" rows="20" name="broadcast-body" id="broadcast-body" /> </div> </div>
Question as of 2014-01-25: two directions emerged in the recent bootstrap transition for styling of input fields, can we/should we pick one in order to have a standardized layout?
Pro: label length does not matter, also translations can be as long as desired without linebreaks
Contra: form becomces longer vertically as each label is a new row
Pro: form is shorter vertically
Contra: if the label text or the translation is long, than the input filed has less space, also layout becomes messy as the label text/description get linebreaks to fit into the allowed space, so the form becomes long again..
gezza: i am for option1
luci: +1 for option1, also for removing the need to use "for" attribute and id="" on these labels+inputs (prevent breakage of things when you get accidentally two forms with same IDs on one page), something like this (notice how the label contains the form input element; would be possible ?):
<div class="form-group"> <label class="col-sm-12 control-label"><span>Priority:</span> <select name="priority" class="form-control"> </label> </div>
gary: luci, I like the simpler way you describe, of wrapping the input or select with the label tags, but it doesn't seem to be supported very well in Bootstrap (see http://getbootstrap.com/css/#forms). I get not-so-good results when I try that.
About the choice of label position - above the input or on the left side, I followed the legacy layout pretty much, as shown on tiki-admin pages. This also seems to be the most common on the web (anyway, according to http://www.uxmatters.com/mt/archives/2006/07/label-placement-in-forms.php). I kind of prefer to have the labels on the left, as the page content seems more clear to me, but this is probably a matter of opinion. I didn't check about label length problems in translated strings. I (ignorantly) used the English string lengths to decide about the grid size. This could be adjusted if there is a frequent problem with too much text wrapping. Here are two versions of tiki-editpage.tpl's Properties tab content (not optimized, but just for a quick comparison):
Do we need to have a "vote" or something to decide label position?