-
-
Save driehle/2909552 to your computer and use it in GitHub Desktop.
# -------------------------------------------- | |
# This code is for Twitter Bootstrap 2! | |
# -------------------------------------------- | |
# | |
# The MIT License (MIT) | |
# Copyright (c) 2012-2015 Dennis Riehle | |
# | |
# Permission is hereby granted, free of charge, to any person obtaining a copy | |
# of this software and associated documentation files (the "Software"), to deal | |
# in the Software without restriction, including without limitation the rights | |
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
# copies of the Software, and to permit persons to whom the Software is | |
# furnished to do so, subject to the following conditions: | |
# | |
# The above copyright notice and this permission notice shall be included in all | |
# copies or substantial portions of the Software. | |
# | |
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |
# SOFTWARE. | |
# -------------------------------------------- | |
_.extend Backbone.Validation.callbacks, | |
valid: (view, attr, selector) -> | |
control = view.$('[' + selector + '=' + attr + ']') | |
group = control.parents(".control-group") | |
group.removeClass("error") | |
if control.data("error-style") == "tooltip" | |
# CAUTION: calling tooltip("hide") on an uninitialized tooltip | |
# causes bootstraps tooltips to crash somehow... | |
control.tooltip "hide" if control.data("tooltip") | |
else if control.data("error-style") == "inline" | |
group.find(".help-inline.error-message").remove() | |
else | |
group.find(".help-block.error-message").remove() | |
invalid: (view, attr, error, selector) -> | |
control = view.$('[' + selector + '=' + attr + ']') | |
group = control.parents(".control-group") | |
group.addClass("error") | |
if control.data("error-style") == "tooltip" | |
position = control.data("tooltip-position") || "right" | |
control.tooltip | |
placement: position | |
trigger: "manual" | |
title: error | |
control.tooltip "show" | |
else if control.data("error-style") == "inline" | |
if group.find(".help-inline").length == 0 | |
group.find(".controls").append("<span class=\"help-inline error-message\"></span>") | |
target = group.find(".help-inline") | |
target.text(error) | |
else | |
if group.find(".help-block").length == 0 | |
group.find(".controls").append("<p class=\"help-block error-message\"></p>") | |
target = group.find(".help-block") | |
target.text(error) |
# -------------------------------------------- | |
# This code is for Twitter Bootstrap 3! | |
# Contributed by alex88 (github.com/alex88). | |
# -------------------------------------------- | |
_.extend Backbone.Validation.callbacks, | |
valid: (view, attr, selector) -> | |
control = view.$('[' + selector + '=' + attr + ']') | |
group = control.parents('.form-group') | |
group.removeClass('has-error') | |
if control.data('error-style') == 'tooltip' | |
# CAUTION: calling tooltip('hide') on an uninitialized tooltip | |
# causes bootstraps tooltips to crash somehow... | |
control.tooltip 'hide' if control.data('tooltip') | |
else if control.data('error-style') == 'inline' | |
group.find('.help-inline.error-message').remove() | |
else | |
group.find('.help-block.error-message').remove() | |
invalid: (view, attr, error, selector) -> | |
control = view.$('[' + selector + '=' + attr + ']') | |
group = control.parents('.form-group') | |
group.addClass('has-error') | |
if control.data('error-style') == 'tooltip' | |
position = control.data('tooltip-position') || 'right' | |
control.tooltip | |
placement: position | |
trigger: 'manual' | |
title: error | |
control.tooltip 'show' | |
else if control.data('error-style') == 'inline' | |
if group.find('.help-inline').length == 0 | |
group.find('.form-control').after('<span class=\'help-inline error-message\'></span>') | |
target = group.find('.help-inline') | |
target.text(error) | |
else | |
if group.find('.help-block').length == 0 | |
group.find('.form-control').after('<p class=\'help-block error-message\'></p>') | |
target = group.find('.help-block') | |
target.text(error) |
So I hate to be that guy but, @driehle, could you add a license to this gist?
We are actually using this gist in production for exactly what it's written for - binding Backbone.Validation to twitter bootstrap. It works like a charm. However, the lawyers recently reviewed our code and turned up this gist not having a license. Sigh.
Also not sure if you're aware of this but the Backbone.Validation FAQ actually links directly to this gist: http://thedersen.com/projects/backbone-validation/#faq/how-can-i-use-it-with-twitter-bootstrap. Perhaps there's an opportunity here to promote this gist to its own full-fledged project and get that FAQ updated?
Ping @driehle.
(Sorry to be a pest; I blame The Laywers.)
This is getting enough attention that it feels like it should become a proper github project with issues and pull requests, and maybe an organization with multiple committers to maintain it...
Agreed with @brycefisher 👍
@scottbale it's most probably way too late for you (sorry, somehow I never got a notification for your comment), but I have added the MIT license!
@brycefisher I'd rather use Angular nowadays than backbone ;)
If you are going to have input fields names like this,
The following code should work well.