(Video materials in preparation)
formfix : Fixes (makes read only) all forms in an HTML file
Usage : formfix <html>
formfix <html> <data>
Option : --form <formname>
--class <classname>
--except <name>
--except-file <file>
Version : Mon Jun 20 15:12:29 JST 2016
Edition : 2
Converts all input tags (text radio checkbox reset button submit),
textarea tags and select tags in file <HTML> to read only.
The attributes added to each tag are as follows:
The class name class="readonly" can be changed using the --class option.
input type="button" -> disabled="disabled"
input type="file" -> disabled="disabled"
input type="image" -> disabled="disabled"
input type="reset" -> disabled="disabled"
input type="submit" -> disabled="disabled"
input type="checkbox" -> class="readonly" disabled="disabled"
input type="radio" -> class="readonly" disabled="disabled"
input type="text" -> readonly="readonly" class="readonly"
tabindex="-1"
textarea -> readonly="readonly" class="readonly"
tabindex="-1"
select -> readonly="readonly" class="readonly"
tabindex="-1"
option -> disabled="disabled"
For <select> tags, the option with attribute selected="selected" will have
a tag of the format "input type="hidden" name="name" value="value" /> inserted
immediately after it. The same is done for <input type="radio" /> and
<input type="checkbox" /> tags with attribute checked="checked".
If multiple options are selected, multiple hidden tags are generated.
Convert all tags to read only.
$ cat html
<html><body>
<form name="form1">
<input type="button" name="name_button"/>
<input type="file" name="name_button"/>
<input type="image" name="name_image" />
<input type="reset" name="name_reset"/>
<input type="submit" name="name_submit"/>
<input type="text" name="name_text" class="abc" value="X"/>
<input type="radio" name="name_radio" value="a"/>
<input type="radio" name="name_radio" value="b" checked="checked"/>
<input type="radio" name="name_radio" value="c"/>
<input type="checkbox" name="name_checkbox" onclick="alert('linux!')"
value="z" checked="checked"/>
<textarea name="name_textarea">
usp
laboratoy
</textarea>
<select name="pulldown1">
<option value="pd1">pd1</option>
<option value="pd2" selected="selected">pd2</option>
<option value="pd3">pd3</option>
</select>
</form>
</body></html>
$ formfix html
<html><body>
<form name="form1">
<input type="button" name="name_button" disabled="disabled"/>
<input type="file" name="name_button" disabled="disabled"/>
<input type="image" name="name_image" disabled="disabled"/>
<input type="reset" name="name_reset" disabled="disabled"/>
<input type="submit" name="name_submit" disabled="disabled"/>
<input type="text" name="name_text" value="X" readonly="readonly"
class="readonly abc" tabindex="-1"/>
<input type="radio" name="name_radio" class="readonly" value="a"
disabled="disabled"/>
<input type="radio" name="name_radio" class="readonly" value="b"
checked="checked" disabled="disabled"/><input type="hidden"
name="name_radio" value="b"/>
<input type="radio" name="name_radio" class="readonly" value="c"
disabled="disabled"/>
<input type="checkbox" name="name_checkbox" onclick="alert('linux!')"
class="readonly" value="z" checked="checked"
disabled="disabled"/><input type="hidden" name="name_checkbox"
value="z"/>
<textarea name="name_textarea" readonly="readonly" class="readonly"
tabindex="-1">
usp
laboratoy
</textarea>
<select name="pulldown1" readonly="readonly" class="readonly"
tabindex="-1">
<option value="pd1" disabled="disabled">pd1</option>
<option value="pd2" selected="selected">pd2</option>
<option value="pd3" disabled="disabled">pd3</option>
</select>
</form>
</body></html>
Convert only the specified tags to read only.
$ cat tag
name_text
name_tag
$ formfix html tag
<html><body>
<form name="form1">
<input type="button" name="name_button"/>
<input type="file" name="name_button"/>
<input type="image" name="name_image" />
<input type="reset" name="name_reset"/>
<input type="submit" name="name_submit"/>
<input type="text" name="name_text" value="X" readonly="readonly"
class="readonly abc" tabindex="-1"/>
<input type="radio" name="name_radio" value="a"/>
<input type="radio" name="name_radio" value="b" checked="checked"/>
<input type="radio" name="name_radio" value="c"/>
<input type="checkbox" name="name_checkbox" onclick="alert('linux!')"
value="z" checked="checked"/>
<textarea name="name_textarea">
usp
laboratoy
</textarea>
<select name="pulldown1">
<option value="pd1">pd1</option>
<option value="pd2" selected="selected">pd2</option>
<option value="pd3">pd3</option>
</select>
</form>
</body></html>
Convert all tags except specified tags to read only.
$ formfix --except name_submit
<html><body>
<form name="form1">
<input type="button" name="name_button" disabled="disabled"/>
<input type="file" name="name_button" disabled="disabled"/>
<input type="image" name="name_image" disabled="disabled"/>
<input type="reset" name="name_reset" disabled="disabled"/>
<input type="submit" name="name_submit"/>
<input type="text" name="name_text" value="X" readonly="readonly"
class="readonly abc" tabindex="-1"/>
<input type="radio" name="name_radio" class="readonly" value="a"
disabled="disabled"/>
<input type="radio" name="name_radio" class="readonly" value="b"
checked="checked" disabled="disabled"/><input type="hidden"
name="name_radio" value="b"/>
<input type="radio" name="name_radio" class="readonly" value="c"
disabled="disabled"/>
<input type="checkbox" name="name_checkbox" onclick="alert('linux!')"
class="readonly" value="z" checked="checked"
disabled="disabled"/><input type="hidden" name="name_checkbox"
value="z"/>
<textarea name="name_textarea" readonly="readonly" class="readonly"
tabindex="-1">
usp
laboratoy
</textarea>
<select name="pulldown1" readonly="readonly" class="readonly"
tabindex="-1">
<option value="pd1" disabled="disabled">pd1</option>
<option value="pd2" selected="selected">pd2</option>
<option value="pd3" disabled="disabled">pd3</option>
</select>
</form>
</body></html>
--except name can be specified multiple times like --except name1
--except name2 ...
The --except-file option lets you specify a file containing a list
of tags not to be converted to read only. There is no particular
format for the except file. Each field or record is read as a tag
name.
$ cat except_name # columns
submit cancel modoru
$ cat except_name # rows
submit
cancel
modoru
$ formfix --except-file except_name html
This is the same as the following:
$ formfix --except submit --except cancel --except modoru html
1. If the tag already has a class attribute, then the class name is
changed to class="readonly <original_class>".
If the tag already has a tagindex attribute, it is overwritten
with tabindex="-1".
If the tag already has a disabled attribute, it is overwritten
with disabled="disabled".
2. The first field in the data file is interpreted as the name to
be made read only, and all subsequent fields are ignored.
3. The <htm> must be written as a crrect html file. For example,
all tags must be in lowercase and written as <tag /> or <tag>
</tag>.