Difference between revisions of "MediaWiki:Form.rythm"
Jump to navigation
Jump to search
Line 3: | Line 3: | ||
@// field definitions | @// field definitions | ||
@def static { | @def static { | ||
+ | class Form { | ||
+ | Map<String,Field> fieldMap=new HashMap<String,Field>(); | ||
+ | public void addField(Field field) { | ||
+ | fieldMap.put(field.name,field); | ||
+ | } | ||
+ | public Field getField(String name) { | ||
+ | fieldMap.get(field.name); | ||
+ | } | ||
+ | } | ||
class Field { | class Field { | ||
String name; | String name; |
Revision as of 11:56, 6 November 2017
Rythm template source
@// field definitions
@def static {
class Form {
Map<String,Field> fieldMap=new HashMap<String,Field>();
public void addField(Field field) {
fieldMap.put(field.name,field);
}
public Field getField(String name) {
fieldMap.get(field.name);
}
}
class Field {
String name;
String label_en;
String label_de;
String placeholder_en;
String placeholder_de;
String icon;
int min;
public Field(String name,String label_en, String label_de, String placeholder_en,String placeholder_de, String icon, int min) {
this.name=name;
this.label_en=label_en;
this.label_de=label_de;
this.placeholder_de=placeholder_de;
this.placeholder_en=placeholder_en;
this.icon=icon;
this.min=min;
}
public Field(String name,String label_en, String label_de, String icon, int min) {
this(name,label_en,label_de,label_en,label_de,icon,min);
}
}
}
@// add a bootstrap field validation
@def fieldvalidate(boolean de,Field field) {
@(field.name): @("{")
validators: @("{")
stringLength: @("{")
min: @(field.min),
@("}"),
notEmpty: @("{")
message: '@(de?"Bitte "+field.label_de+" eingeben":"Please supply your "+field.label_en)'
@("}")
@("}")
@("}")
}
@// add a form field
@def field(boolean de,Field field) {
<!-- Text input-->
<div class="form-group">
<label class="col-md-4 control-label">@(de?field.label_de:field.label_en)</label>
<div class="col-md-4 inputGroupContainer">
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-@(field.icon)"></i></span>
<input name="@(field.name)" placeholder="@(de?field.placeholder_de:field.placeholder_en)" class="form-control" type="text">
</div>
</div>
</div>
}
@// formvalidation
@def formvalidate(boolean de,Field[] fields) {
<style>
#success_message{ display: none;}
</style>
<script>
$(document).ready(function() @("{")
$('#contact_form').bootstrapValidator(@("{")
// To use feedback icons, ensure that you use Bootstrap v3.1.0 or later
feedbackIcons: @("{")
valid: 'glyphicon glyphicon-ok',
invalid: 'glyphicon glyphicon-remove',
validating: 'glyphicon glyphicon-refresh'
@("}"),
fields: @("{")
@{ String delim="";}
@for (Field field:fields) {
@(delim)@(fieldvalidate(de,field))
@{ delim=",";}
}
@("}")
@("}"))
.on('success.form.bv', function(e) @("{")
$('#success_message').slideDown(@("{") opacity: "show" @("}"), "slow") // Do something ...
$('#contact_form').data('bootstrapValidator').resetForm();
// Prevent form submission
e.preventDefault();
@("}"));
@("}"));
</script>
}
@// show form
@def showform(boolean de,Field[] fields,String title, String title_de){
<form class="well form-horizontal" action=" " method="post" id="contact_form">
<fieldset>
<!-- Form Name -->
<legend>@(de?title_de:title)</legend>
@for (Field field:fields) {
@field(de,field)
}
<!-- Success message -->
<div class="alert alert-success" role="alert" id="success_message">Success <i class="glyphicon glyphicon-thumbs-up"></i> Thanks for contacting us, we will get back to you shortly.</div>
<!-- Button -->
<div class="form-group">
<label class="col-md-4 control-label"></label>
<div class="col-md-4">
<button type="submit" class="btn btn-warning" >Send <span class="glyphicon glyphicon-send"></span></button>
</div>
</div>
</fieldset>
</form>
}