Skip to content

Instantly share code, notes, and snippets.

@jankuca
Created July 27, 2012 12:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jankuca/3187617 to your computer and use it in GitHub Desktop.
Save jankuca/3187617 to your computer and use it in GitHub Desktop.
Darkside Form Implementation Draft
var darkside = require('darkside');
var IndexController = function () {
darkside.base(this, darkside.ViewController);
};
util.inherits(IndexController, darkside.ViewController);
IndexController.prototype['support'] = function () {
var self = this;
var support_form = this.createSupportForm_();
var like_form = this.createLikeForm_();
this.on('formerror', function (errs) {
errs.forEach(function (err) {
self.flashMessage(err.message, 'err');
});
};
this.on('noform', function () {
self.view['support_form'] = support_form;
self.view['like_form'] = like_form;
self.render();
});
};
IndexController.prototype.createSupportForm_ = function () {
var self = this;
var form = this.createForm();
form.scheme({
'name': form.REQUIRED,
'email': form.EMAIL | form.REQUIRED,
'subject': form.REQUIRED,
'message': form.REQUIRED
});
form.on('valid', function (values) {
// process values
self.flashMessage('Your message has been accepted. Expect a reply within the next 24 hours.')
self.redirectTo(...);
});
return form;
};
IndexController.prototype.createLikeForm_ = function () {
var self = this;
var form = this.createForm();
form.scheme({
'action': {
'like': 'Like',
'dislike': 'Dislike'
}
});
like_form.on('valid', function (values) {
// process values
self.flashMessage('Awesome!')
self.redirectTo(...);
});
return form;
};
module.exports = IndexController;
<% @component 'content', => %>
<h2>User Support</h2>
<%= support_form.render (form) => %>
<div>
<label>Name:</label>
<%= form.text 'name' %>
<label>E-mail:</label>
<%= form.email 'email' %>
</div>
<div>
<%= form.text 'subject', placeholder: 'Subject' %>
<%= form.textarea 'message', placeholder: 'Your message' %>
</div>
<%= form.submit => %>Send<% end %>
<% end %>
<%= like_form.render (form) => %>
<%= form.radioList 'action' %>
<%= form.submit => %>Send<% end %>
<% end %>
<% end %>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment