1
0
mirror of https://github.com/bigchaindb/site.git synced 2025-02-12 00:20:55 +01:00

CLA page and so much more stuff

This commit is contained in:
Matthias Kretschmann 2016-02-06 14:33:15 +01:00
parent d0b58e7826
commit 5edc267c72
16 changed files with 827 additions and 195 deletions

View File

@ -8,6 +8,7 @@ url: https://www.bigchaindb.com
email:
contact: contact@bigchaindb.com
cla: troy@ascribe.io
twitter: BigchainDB
disqus: bigchain

View File

@ -2,10 +2,14 @@
//=include ../../../node_modules/svg4everybody/dist/svg4everybody.js
//=include ../../../node_modules/jquery/dist/jquery.js
//=include ../../../node_modules/foundation-sites/js/foundation.core.js
//=include ../../../node_modules/foundation-sites/js/foundation.util.keyboard.js
//=include ../../../node_modules/foundation-sites/js/foundation.tabs.js
//=include bigchain/analytics.js
//=include bigchain/forms.js
//=include bigchain/smoothscroll.js
//=include bigchain/dnt.js
//=include bigchain/tab.js
//=include bigchain/form-earlyaccess.js
//=include bigchain/form-contact.js
@ -18,7 +22,6 @@ jQuery(function($) {
// init modules
//
Forms.init();
SmoothScroll.init();
FormEarlyAccess.init();
FormCla.init();

View File

@ -1,81 +1,58 @@
//
// https://github.com/bendc/anchor-scroll/blob/master/scroll.min.js
//
var SmoothScroll = (function(w, d) {
'use strict';
var app, _private, _config;
// workaround for blog
var $ = jQuery;
_config = {
win: $(window)
},
_private = {
scrollToTarget: function() {
// Check window width helper
function isWide() {
return _config.win.width() >= _config.minWidth;
}
$("a[href*='#']").not("[href='#'], .nav a[href*='#']").click(function(e) {
if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
if (target.length) {
e.preventDefault();
if (typeof document.body.style.transitionProperty === 'string') {
var avail = $(document).height() - _config.win.height();
scroll = target.offset().top;
if (scroll > avail) {
scroll = avail;
}
$('html').css({
'transform': 'translate3d(0, ' + ( _config.win.scrollTop() - scroll ) + 'px, 0)',
'transition' : '.6s ease-in-out'
}).data('transitioning', true);
}
else {
// fallback for dumb browsers
$('html, body').animate({
scrollTop: target.offset().top
}, 600);
}
}
}
});
document.addEventListener("DOMContentLoaded", function() {
var e = function() {
if ("scrollingElement" in document) return document.scrollingElement;
var a = document.documentElement,
b = a.scrollTop;
a.scrollTop = b + 1;
var c = a.scrollTop;
a.scrollTop = b;
return c > b ? a : document.body
}(),
g = function(a) {
var b = e.scrollTop;
if (2 > a.length) a = -b;
else if (a = document.querySelector(a)) {
a = a.getBoundingClientRect().top;
var c = e.scrollHeight - window.innerHeight;
a = b + a < c ? a : c - b
} else a = void 0;
if (a) return new Map([
["start", b],
["delta", a]
])
},
//
// remove styles after transition has finished
//
removeStyles: function() {
$('html').on('transitionend webkitTransitionEnd msTransitionEnd oTransitionEnd', function (e) {
if (e.target == e.currentTarget && $(this).data('transitioning') === true) {
$(this).removeAttr('style').data('transitioning', false);
$('html, body').scrollTop(scroll);
return;
}
h = function(a) {
var b =
a.getAttribute("href"),
c = g(b);
if (c) {
var d = new Map([
["duration", 800]
]),
k = performance.now();
requestAnimationFrame(function l(a) {
d.set("elapsed", a - k);
a = d.get("duration");
var f = d.get("elapsed"),
g = c.get("start"),
h = c.get("delta");
e.scrollTop = Math.round(h * (-Math.pow(2, -10 * f / a) + 1) + g);
d.get("elapsed") < d.get("duration") ? requestAnimationFrame(l) : (history.pushState(null, null, b), e.scrollTop = c.get("start") + c.get("delta"))
})
}
},
f = document.querySelectorAll("a.scroll");
(function b(c, d) {
var e = c.item(d);
e.addEventListener("click",
function(b) {
b.preventDefault();
h(e)
});
}
};
app = {
init: function() {
_private.scrollToTarget();
_private.removeStyles();
}
};
return app;
})(window, document);
if (d) return b(c, d - 1)
})(f, f.length - 1)
});

View File

@ -0,0 +1,421 @@
'use strict';
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
/**
* --------------------------------------------------------------------------
* Bootstrap (v4.0.0-alpha.2): tab.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* --------------------------------------------------------------------------
*/
var Tab = (function ($) {
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
var NAME = 'tab';
var VERSION = '4.0.0-alpha.2';
var DATA_KEY = 'bs.tab';
var EVENT_KEY = '.' + DATA_KEY;
var DATA_API_KEY = '.data-api';
var JQUERY_NO_CONFLICT = $.fn[NAME];
var TRANSITION_DURATION = 150;
var Event = {
HIDE: 'hide' + EVENT_KEY,
HIDDEN: 'hidden' + EVENT_KEY,
SHOW: 'show' + EVENT_KEY,
SHOWN: 'shown' + EVENT_KEY,
CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY
};
var ClassName = {
DROPDOWN_MENU: 'dropdown-menu',
ACTIVE: 'active',
FADE: 'fade',
IN: 'in'
};
var Selector = {
A: 'a',
LI: 'li',
DROPDOWN: '.dropdown',
UL: 'ul:not(.dropdown-menu)',
FADE_CHILD: '> .nav-item .fade, > .fade',
ACTIVE: '.active',
ACTIVE_CHILD: '> .nav-item > .active, > .active',
DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"]',
DROPDOWN_TOGGLE: '.dropdown-toggle',
DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'
};
/**
* ------------------------------------------------------------------------
* Class Definition
* ------------------------------------------------------------------------
*/
var Tab = (function () {
function Tab(element) {
_classCallCheck(this, Tab);
this._element = element;
}
/**
* ------------------------------------------------------------------------
* Data Api implementation
* ------------------------------------------------------------------------
*/
// getters
_createClass(Tab, [{
key: 'show',
// public
value: function show() {
var _this = this;
if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName.ACTIVE)) {
return;
}
var target = undefined;
var previous = undefined;
var ulElement = $(this._element).closest(Selector.UL)[0];
var selector = Util.getSelectorFromElement(this._element);
if (ulElement) {
previous = $.makeArray($(ulElement).find(Selector.ACTIVE));
previous = previous[previous.length - 1];
}
var hideEvent = $.Event(Event.HIDE, {
relatedTarget: this._element
});
var showEvent = $.Event(Event.SHOW, {
relatedTarget: previous
});
if (previous) {
$(previous).trigger(hideEvent);
}
$(this._element).trigger(showEvent);
if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {
return;
}
if (selector) {
target = $(selector)[0];
}
this._activate(this._element, ulElement);
var complete = function complete() {
var hiddenEvent = $.Event(Event.HIDDEN, {
relatedTarget: _this._element
});
var shownEvent = $.Event(Event.SHOWN, {
relatedTarget: previous
});
$(previous).trigger(hiddenEvent);
$(_this._element).trigger(shownEvent);
};
if (target) {
this._activate(target, target.parentNode, complete);
} else {
complete();
}
}
}, {
key: 'dispose',
value: function dispose() {
$.removeClass(this._element, DATA_KEY);
this._element = null;
}
// private
}, {
key: '_activate',
value: function _activate(element, container, callback) {
var active = $(container).find(Selector.ACTIVE_CHILD)[0];
var isTransitioning = callback && Util.supportsTransitionEnd() && (active && $(active).hasClass(ClassName.FADE) || Boolean($(container).find(Selector.FADE_CHILD)[0]));
var complete = $.proxy(this._transitionComplete, this, element, active, isTransitioning, callback);
if (active && isTransitioning) {
$(active).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
} else {
complete();
}
if (active) {
$(active).removeClass(ClassName.IN);
}
}
}, {
key: '_transitionComplete',
value: function _transitionComplete(element, active, isTransitioning, callback) {
if (active) {
$(active).removeClass(ClassName.ACTIVE);
var dropdownChild = $(active).find(Selector.DROPDOWN_ACTIVE_CHILD)[0];
if (dropdownChild) {
$(dropdownChild).removeClass(ClassName.ACTIVE);
}
active.setAttribute('aria-expanded', false);
}
$(element).addClass(ClassName.ACTIVE);
element.setAttribute('aria-expanded', true);
if (isTransitioning) {
Util.reflow(element);
$(element).addClass(ClassName.IN);
} else {
$(element).removeClass(ClassName.FADE);
}
if (element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {
var dropdownElement = $(element).closest(Selector.DROPDOWN)[0];
if (dropdownElement) {
$(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
}
element.setAttribute('aria-expanded', true);
}
if (callback) {
callback();
}
}
// static
}], [{
key: '_jQueryInterface',
value: function _jQueryInterface(config) {
return this.each(function () {
var $this = $(this);
var data = $this.data(DATA_KEY);
if (!data) {
data = data = new Tab(this);
$this.data(DATA_KEY, data);
}
if (typeof config === 'string') {
if (data[config] === undefined) {
throw new Error('No method named "' + config + '"');
}
data[config]();
}
});
}
}, {
key: 'VERSION',
get: function get() {
return VERSION;
}
}]);
return Tab;
})();
$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
event.preventDefault();
Tab._jQueryInterface.call($(this), 'show');
});
/**
* ------------------------------------------------------------------------
* jQuery
* ------------------------------------------------------------------------
*/
$.fn[NAME] = Tab._jQueryInterface;
$.fn[NAME].Constructor = Tab;
$.fn[NAME].noConflict = function () {
$.fn[NAME] = JQUERY_NO_CONFLICT;
return Tab._jQueryInterface;
};
return Tab;
})(jQuery);
/**
* --------------------------------------------------------------------------
* Bootstrap (v4.0.0-alpha.2): util.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* --------------------------------------------------------------------------
*/
'use strict';
var Util = (function ($) {
/**
* ------------------------------------------------------------------------
* Private TransitionEnd Helpers
* ------------------------------------------------------------------------
*/
var transition = false;
var TransitionEndEvent = {
WebkitTransition: 'webkitTransitionEnd',
MozTransition: 'transitionend',
OTransition: 'oTransitionEnd otransitionend',
transition: 'transitionend'
};
// shoutout AngusCroll (https://goo.gl/pxwQGp)
function toType(obj) {
return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
}
function isElement(obj) {
return (obj[0] || obj).nodeType;
}
function getSpecialTransitionEndEvent() {
return {
bindType: transition.end,
delegateType: transition.end,
handle: function handle(event) {
if ($(event.target).is(this)) {
return event.handleObj.handler.apply(this, arguments);
}
}
};
}
function transitionEndTest() {
if (window.QUnit) {
return false;
}
var el = document.createElement('bootstrap');
for (var _name in TransitionEndEvent) {
if (el.style[_name] !== undefined) {
return { end: TransitionEndEvent[_name] };
}
}
return false;
}
function transitionEndEmulator(duration) {
var _this = this;
var called = false;
$(this).one(Util.TRANSITION_END, function () {
called = true;
});
setTimeout(function () {
if (!called) {
Util.triggerTransitionEnd(_this);
}
}, duration);
return this;
}
function setTransitionEndSupport() {
transition = transitionEndTest();
$.fn.emulateTransitionEnd = transitionEndEmulator;
if (Util.supportsTransitionEnd()) {
$.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
}
}
/**
* --------------------------------------------------------------------------
* Public Util Api
* --------------------------------------------------------------------------
*/
var Util = {
TRANSITION_END: 'bsTransitionEnd',
getUID: function getUID(prefix) {
do {
/* eslint-disable no-bitwise */
prefix += ~ ~(Math.random() * 1000000); // "~~" acts like a faster Math.floor() here
/* eslint-enable no-bitwise */
} while (document.getElementById(prefix));
return prefix;
},
getSelectorFromElement: function getSelectorFromElement(element) {
var selector = element.getAttribute('data-target');
if (!selector) {
selector = element.getAttribute('href') || '';
selector = /^#[a-z]/i.test(selector) ? selector : null;
}
return selector;
},
reflow: function reflow(element) {
new Function('bs', 'return bs')(element.offsetHeight);
},
triggerTransitionEnd: function triggerTransitionEnd(element) {
$(element).trigger(transition.end);
},
supportsTransitionEnd: function supportsTransitionEnd() {
return Boolean(transition);
},
typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
for (var property in configTypes) {
if (configTypes.hasOwnProperty(property)) {
var expectedTypes = configTypes[property];
var value = config[property];
var valueType = undefined;
if (value && isElement(value)) {
valueType = 'element';
} else {
valueType = toType(value);
}
if (!new RegExp(expectedTypes).test(valueType)) {
throw new Error(componentName.toUpperCase() + ': ' + ('Option "' + property + '" provided type "' + valueType + '" ') + ('but expected type "' + expectedTypes + '".'));
}
}
}
}
};
setTransitionEndSupport();
return Util;
})(jQuery);

View File

@ -0,0 +1,2 @@
//=include bigchain/smoothscroll.js

View File

@ -24,6 +24,7 @@
@import 'bigchain/_media';
@import 'bigchain/_sections';
@import 'bigchain/_menus';
@import 'bigchain/_tabs';
@import 'bigchain/_alerts';
@import 'bigchain/_code';
@import 'bigchain/_syntax';
@ -48,3 +49,4 @@
@import 'page-features';
@import 'page-community';
@import 'page-contact';
@import 'page-cla';

View File

@ -139,7 +139,7 @@
width: 1.3rem;
height: 1.3rem;
border-radius: 50%;
border-radius: $border-radius;
border: 2px solid $input-border-color;
outline: none;
@ -153,6 +153,11 @@
}
}
.radio input[type="radio"],
.radio-inline input[type="radio"] {
border-radius: 50%;
}
.radio + .radio,
.checkbox + .checkbox {
// Move up sibling radios or checkboxes for tighter spacing

View File

@ -0,0 +1,31 @@
.nav-tabs {
@extend .list-unstyled;
display: flex;
border-bottom: 1px solid $brand-primary;
}
.nav-item {
flex: 1;
}
.nav-link {
@extend .text-center;
box-shadow: none;
display: block;
padding: 1rem;
border-bottom: 4px solid transparent;
&.active {
color: #fff;
border-bottom-color: $brand-primary;
}
}
.tab-pane {
display: none;
&.active {
display: block;
}
}

View File

@ -0,0 +1,5 @@
.form-cla {
padding: $spacer ($spacer * 2);
background: $gray-darker;
}

View File

@ -1,116 +1,121 @@
<div class="grid grid--full grid-small--half">
<div class="grid__col">
<a href="#form-cla-individuals">For Individuals</a>
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link active" href="#individual" data-toggle="tab" role="tab">For Individuals</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#entity" data-toggle="tab" role="tab">For Organizations</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="#individual" role="tabpanel">
<form id="form-cla-individuals" class="form-cla js-parsley" action="//formspree.io/{{ site.email.cla }}" method="POST" accept-charset="UTF-8">
<p class="form-group">
<input class="form-control" type="text" id="name" name="name" required>
<label class="form-label" for="name">Your Name</label>
</p>
<p class="form-group">
<input class="form-control" type="email" id="email" name="_replyto" required>
<label class="form-label" for="email">Your Email</label>
</p>
<p class="form-group">
<input class="form-control" type="text" id="org" name="org">
<label class="form-label" for="org">Your Organization (if applicable)</label>
</p>
<p class="form-group">
<input class="form-control" type="text" id="github" name="github">
<label class="form-label" for="github">Your GitHub Account Name</label>
</p>
<p class="form-group">
<input class="form-control" type="tel" id="phone" name="phone">
<label class="form-label" for="phone">Your Phone Number</label>
</p>
<p class="text-dimmed">
Agreed and accepted: By clicking and accepting this Agreement, I represent and warrant that I have authority to bind the entity named above (if applicable) to the terms and conditions of this Agreement.
</p>
<div class="checkbox">
<label class="text-dimmed">
<input type="checkbox" value="agreement" required>
I have read and agree to the terms of this Agreement
</label>
</div>
<p class="form-group">
<input class="btn btn-primary" type="submit" value="Send">
</p>
<div class="alert alert-success animation-slide-in-from-bottom hide">
<svg class="alert__icon icon icon-success">
<use xlink:href="/assets/img/sprite.svg#icon-success"></use>
</svg>
<p>
<strong class="alert__title">Great to hear youre interested!</strong>
Well get in touch soon to discuss how we can work together.
</p>
</div>
<div class="alert alert-danger hide">
<svg class="alert__icon icon icon-fail">
<use xlink:href="/assets/img/sprite.svg#icon-fail"></use>
</svg>
<p>
<strong class="alert__title">Ops, there was an error</strong>
Would you mind trying again?
</p>
</div>
</form>
</div>
<div class="grid__col">
<a href="#form-cla-entities">For Organizations</a>
<div class="tab-pane" id="entity" role="tabpanel">
<form id="form-cla-entities" class="form-cla js-parsley" action="//formspree.io/{{ site.email.cla }}" method="POST" accept-charset="UTF-8">
<p class="form-group">
<input class="form-control" type="text" id="org" name="org" required>
<label class="form-label" for="org">Name of organization, foundation, company or other entity</label>
</p>
<p class="form-group">
<input class="form-control" type="text" id="name" name="name" required>
<label class="form-label" for="name">Contact Person</label>
</p>
<p class="form-group">
<input class="form-control" type="email" id="email" name="_replyto" required>
<label class="form-label" for="email">Contact Email Address</label>
</p>
<p class="form-group">
<input class="form-control" type="tel" id="phone" name="phone">
<label class="form-label" for="phone">Contact Phone Number</label>
</p>
<p class="text-dimmed">
Agreed and accepted: By clicking and accepting this Agreement, I represent and warrant that I have authority to bind the entity named above (if applicable) to the terms and conditions of this Agreement.
</p>
<div class="checkbox">
<label class="text-dimmed">
<input type="checkbox" value="agreement" required>
I have read and agree to the terms of this Agreement
</label>
</div>
<p class="form-group">
<input class="btn btn-primary" type="submit" value="Send">
</p>
<div class="alert alert-success animation-slide-in-from-bottom hide">
<svg class="alert__icon icon icon-success">
<use xlink:href="/assets/img/sprite.svg#icon-success"></use>
</svg>
<p>
<strong class="alert__title">Great to hear youre interested!</strong>
Well get in touch soon to discuss how we can work together.
</p>
</div>
<div class="alert alert-danger hide">
<svg class="alert__icon icon icon-fail">
<use xlink:href="/assets/img/sprite.svg#icon-fail"></use>
</svg>
<p>
<strong class="alert__title">Ops, there was an error</strong>
Would you mind trying again?
</p>
</div>
</form>
</div>
</div>
<form id="form-cla-individuals" class="form-cla js-parsley" action="//formspree.io/{{ site.email.contact }}" method="POST" accept-charset="UTF-8">
<p class="form-group">
<input class="form-control" type="text" id="name" name="name" required>
<label class="form-label" for="name">Your Name</label>
</p>
<p class="form-group">
<input class="form-control" type="email" id="email" name="_replyto" required>
<label class="form-label" for="email">Your Email</label>
</p>
<p class="form-group">
<input class="form-control" type="text" id="org" name="org">
<label class="form-label" for="org">Your Organization (if applicable)</label>
</p>
<p class="form-group">
<input class="form-control" type="text" id="github" name="github">
<label class="form-label" for="github">Your GitHub Account Name</label>
</p>
<p class="form-group">
<input class="form-control" type="tel" id="phone" name="phone">
<label class="form-label" for="phone">Your Phone Number</label>
</p>
<p class="text-dimmed">
Agreed and accepted: By clicking and accepting this Agreement, I represent and warrant that I have authority to bind the entity named above (if applicable) to the terms and conditions of this Agreement.
</p>
<div class="checkbox">
<label class="text-dimmed">
<input type="checkbox" value="agreement" required>
I have read and agree to the terms of this Agreement
</label>
</div>
<p class="form-group">
<input class="btn btn-primary" type="submit" value="Send">
</p>
<div class="alert alert-success animation-slide-in-from-bottom hide">
<svg class="alert__icon icon icon-success">
<use xlink:href="/assets/img/sprite.svg#icon-success"></use>
</svg>
<p>
<strong class="alert__title">Great to hear youre interested!</strong>
Well get in touch soon to discuss how we can work together.
</p>
</div>
<div class="alert alert-danger hide">
<svg class="alert__icon icon icon-fail">
<use xlink:href="/assets/img/sprite.svg#icon-fail"></use>
</svg>
<p>
<strong class="alert__title">Ops, there was an error</strong>
Would you mind trying again?
</p>
</div>
</form>
<form id="form-cla-entities" class="form-cla js-parsley" action="//formspree.io/{{ site.email.contact }}" method="POST" accept-charset="UTF-8">
<p class="form-group">
<input class="form-control" type="text" id="org" name="org" required>
<label class="form-label" for="org">Name of organization, foundation, company or other entity</label>
</p>
<p class="form-group">
<input class="form-control" type="text" id="name" name="name" required>
<label class="form-label" for="name">Contact Person</label>
</p>
<p class="form-group">
<input class="form-control" type="email" id="email" name="_replyto" required>
<label class="form-label" for="email">Contact Email Address</label>
</p>
<p class="form-group">
<input class="form-control" type="tel" id="phone" name="phone">
<label class="form-label" for="phone">Contact Phone Number</label>
</p>
<p class="text-dimmed">
Agreed and accepted: By clicking and accepting this Agreement, I represent and warrant that I have authority to bind the entity named above (if applicable) to the terms and conditions of this Agreement.
</p>
<div class="checkbox">
<label class="text-dimmed">
<input type="checkbox" value="agreement" required>
I have read and agree to the terms of this Agreement
</label>
</div>
<p class="form-group">
<input class="btn btn-primary" type="submit" value="Send">
</p>
<div class="alert alert-success animation-slide-in-from-bottom hide">
<svg class="alert__icon icon icon-success">
<use xlink:href="/assets/img/sprite.svg#icon-success"></use>
</svg>
<p>
<strong class="alert__title">Great to hear youre interested!</strong>
Well get in touch soon to discuss how we can work together.
</p>
</div>
<div class="alert alert-danger hide">
<svg class="alert__icon icon icon-fail">
<use xlink:href="/assets/img/sprite.svg#icon-fail"></use>
</svg>
<p>
<strong class="alert__title">Ops, there was an error</strong>
Would you mind trying again?
</p>
</div>
</form>

View File

@ -14,7 +14,7 @@
</hgroup>
<a href="#features" class="btn btn-link btn-sm">Learn More <svg class="icon">
<a href="#features" class="scroll btn btn-link btn-sm">Learn More <svg class="icon">
<use xlink:href="/assets/img/sprite.svg#icon-caret"></use>
</svg></a>
</div>

90
_src/cla/entity.md Normal file
View File

@ -0,0 +1,90 @@
---
layout: page
title: Entity Contributor Agreement
---
## Entity Contributor Non-Exclusive License Agreement including the Traditional Patent License OPTION
Thank you for your interest in contributing to BigchainDB (“We” or “Us”).
The purpose of this contributor agreement (“Agreement”) is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at: http://www.bigchaindb.com/cla
### 1. DEFINITIONS
“**You**” means any Legal Entity on behalf of whom a Contribution has been made to Us.
“**Legal Entity**” means an entity that is not a natural person.
“**Affiliate**” means any other Legal Entity that controls, is controlled by, or under common control with that Legal Entity. For the purposes of this definition, “control” means (i) the power, direct or indirect, to cause the direction or management of such Legal Entity, whether by contract or otherwise, (ii) ownership of fifty percent (50%) or more of the outstanding shares or securities that vote to elect the management or other persons who direct such Legal Entity or (iii) beneficial ownership of such entity.
“**Contribution**” means any original work of authorship (software and/or documentation) including any modifications or additions to an existing work, Submitted by You to Us, in which You own the Copyright. If You do not own the Copyright in the entire work of authorship, please contact Us at info@bigchaindb.com.
“**Copyright**” means all rights protecting works of authorship owned or controlled by You, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence including any extensions by You.
“**Material**” means the software or documentation made available by Us to third parties. When this Agreement covers more than one software project, the Material means the software or documentation to which the Contribution was Submitted. After You Submit the Contribution, it may be included in the Material.
“**Submit**” means any form of physical, electronic, or written communication sent to Us, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, Us, but excluding communication that is conspicuously marked or otherwise designated in writing by You as “Not a Contribution.”
“**Submission Date**” means the date You Submit a Contribution to Us.
“**Documentation**” means any non-software portion of a Contribution.
### 2. LICENSE GRANT
2.1 Copyright License to Us
Subject to the terms and conditions of this Agreement, You hereby grant to Us a worldwide, royalty-free, NON-exclusive, perpetual and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:
- to publish the Contribution,
- to modify the Contribution, to prepare derivative works based upon or containing the Contribution and to combine the Contribution with other software code,
- to reproduce the Contribution in original or modified form,
- to distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.
2.2 Moral rights remain unaffected to the extent they are recognized and not waivable by applicable law. Notwithstanding, You may add your name in the header of the source code files of Your Contribution and We will respect this attribution when using Your Contribution.
### 3. PATENTS
### 3.1 Patent License
Subject to the terms and conditions of this Agreement You hereby grant to us a worldwide, royalty-free, non-exclusive, perpetual and irrevocable (except as stated in Section 3.2) patent license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with the Material (and portions of such combination). This license applies to all patents owned or controlled by You, whether already acquired or hereafter acquired, that would be infringed by making, having made, using, selling, offering for sale, importing or otherwise transferring of Your Contribution(s) alone or by combination of Your Contribution(s) with the Material.
### 3.2 Revocation of Patent License
You reserve the right to revoke the patent license stated in section 3.1 if we make any infringement claim that is targeted at your Contribution and not asserted for a Defensive Purpose.
An assertion of claims of the Patents shall be considered for a “Defensive Purpose” if the claims are asserted against an entity that has filed, maintained, threatened, or voluntarily participated in a patent infringement lawsuit against Us or any of Our licensees.
### 4. License Obligations by US
We agree to license patents owned or controlled by you only to the extent necessary to (sub)license Your Contribution(s) and the combination of Your Contribution(s) with the Material.
### 5. Disclaimer
The Contribution is provided as is. More particularly, all express or implied warranties including, without limitation, any implied warranty of merchantability, fitness for a particular purpose and non-infringement are expressly disclaimed by You to Us and by Us to You. To the extent that any such warranties cannot be disclaimed, such warranty is limited in duration to the minimum period permitted by law.
### 6. Consequential Damage Waiver
To the maximum extent permitted by applicable law, in no event will You or Us be liable for any loss of profits, loss of anticipated savings, loss of data, indirect, special, incidental, consequential and exemplary damages arising out of this agreement regardless of the legal or equitable theory (contract, tort or otherwise) upon which the claim is based.
### 7. Approximation of Disclaimer and Damage Waiver
If the disclaimer and damage waiver mentioned in Section 5 and Section 6 cannot be given legal effect under applicable local law, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Contribution.
### 8. Term
8.1 This Agreement shall come into effect upon Your acceptance of the terms and conditions.
8.2 You shall have the right to terminate the Agreement in written form if We do not fulfill the obligations as set forth in Section 4.
8.3 In the event of a termination of this Agreement Sections 5, 6, 7, 8 and 9 shall survive such termination and shall remain in full force thereafter. For the avoidance of doubt, Contributions that are already licensed under a free and open source license at the date of the termination shall remain in full force after the termination of this Agreement.
### 9. Miscellaneous
9.1 This Agreement and all disputes, claims, actions, suits or other proceedings arising out of this agreement or relating in any way to it shall be governed by the laws of Germany excluding its private international law provisions.
9.2 This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.
9.3 If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and that is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.
9.4 You agree to notify Us of any facts or circumstances of which you become aware that would make this Agreement inaccurate in any respect.

View File

@ -8,4 +8,8 @@ Before we can accept any contributions from you or the organization you represen
You will retain full ownership of your work, including the ability to license it to others.
[Individual Contributor Agreement](individual/) | [Entity Contributor Agreement](entity/)
## Sign the agreement
{% include form-cla.html %}

86
_src/cla/individual.md Normal file
View File

@ -0,0 +1,86 @@
---
layout: page
title: Individual Contributor Agreement
---
## Individual Contributor Non-Exclusive License Agreement including the Traditional Patent License OPTION
Thank you for your interest in contributing to BigchainDB (“We” or “Us”).
The purpose of this contributor agreement (“Agreement”) is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at: http://www.bigchaindb.com/cla
### 1. DEFINITIONS
“**You**” means the Individual Copyright owner who submits a Contribution to Us. If You are an employee and submit the Contribution as part of your employment, You have had Your employer approve this Agreement or sign the Entity version of this document.
“**Contribution**” means any original work of authorship (software and/or documentation) including any modifications or additions to an existing work, Submitted by You to Us, in which You own the Copyright. If You do not own the Copyright in the entire work of authorship, please contact Us at info@bigchaindb.com.
“**Copyright**” means all rights protecting works of authorship owned or controlled by You, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence including any extensions by You.
“**Material**” means the software or documentation made available by Us to third parties. When this Agreement covers more than one software project, the Material means the software or documentation to which the Contribution was Submitted. After You Submit the Contribution, it may be included in the Material.
“**Submit**” means any form of physical, electronic, or written communication sent to Us, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, Us, but excluding communication that is conspicuously marked or otherwise designated in writing by You as “Not a Contribution.”
“**Submission Date**” means the date You Submit a Contribution to Us.
“**Documentation**” means any non-software portion of a Contribution.
### 2. LICENSE GRANT
2.1 Copyright License to Us
Subject to the terms and conditions of this Agreement, You hereby grant to Us a worldwide, royalty-free, NON-exclusive, perpetual and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:
- to publish the Contribution,
- to modify the Contribution, to prepare derivative works based upon or containing the Contribution and to combine the Contribution with other software code,
- to reproduce the Contribution in original or modified form,
- to distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.
2.2 Moral Rights remain unaffected to the extent they are recognized and not waivable by applicable law. Notwithstanding, You may add your name in the header of the source code files of Your Contribution and We will respect this attribution when using Your Contribution.
### 3. PATENTS
3.1 Patent License
Subject to the terms and conditions of this Agreement You hereby grant to us a worldwide, royalty-free, non-exclusive, perpetual and irrevocable (except as stated in Section 3.2) patent license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with the Material (and portions of such combination). This license applies to all patents owned or controlled by You, whether already acquired or hereafter acquired, that would be infringed by making, having made, using, selling, offering for sale, importing or otherwise transferring of Your Contribution(s) alone or by combination of Your Contribution(s) with the Material.
3.2 Revocation of Patent License
You reserve the right to revoke the patent license stated in section 3.1 if we make any infringement claim that is targeted at your Contribution and not asserted for a Defensive Purpose.
An assertion of claims of the Patents shall be considered for a “Defensive Purpose” if the claims are asserted against an entity that has filed, maintained, threatened, or voluntarily participated in a patent infringement lawsuit against Us or any of Our licensees.
### 4. License Obligations by US
We agree to license patents owned or controlled by you only to the extent necessary to (sub)license Your Contribution(s) and the combination of Your Contribution(s) with the Material.
### 5. Disclaimer
The Contribution is provided as is. More particularly, all express or implied warranties including, without limitation, any implied warranty of merchantability, fitness for a particular purpose and non-infringement are expressly disclaimed by You to Us and by Us to You. To the extent that any such warranties cannot be disclaimed, such warranty is limited in duration to the minimum period permitted by law.
### 6. Consequential Damage Waiver
To the maximum extent permitted by applicable law, in no event will You or Us be liable for any loss of profits, loss of anticipated savings, loss of data, indirect, special, incidental, consequential and exemplary damages arising out of this agreement regardless of the legal or equitable theory (contract, tort or otherwise) upon which the claim is based.
### 7. Approximation of Disclaimer and Damage Waiver
If the disclaimer and damage waiver mentioned in Section 5 and Section 6 cannot be given legal effect under applicable local law, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Contribution.
### 8. Term
8.1 This Agreement shall come into effect upon Your acceptance of the terms and conditions.
8.2 You shall have the right to terminate the Agreement in written form if We do not fulfill the obligations as set forth in Section 4.
8.3 In the event of a termination of this Agreement Sections 5, 6, 7, 8 and 9 shall survive such termination and shall remain in full force thereafter. For the avoidance of doubt, Contributions that are already licensed under a free and open source license at the date of the termination shall remain in full force after the termination of this Agreement.
### 9. Miscellaneous
9.1 This Agreement and all disputes, claims, actions, suits or other proceedings arising out of this agreement or relating in any way to it shall be governed by the laws of Germany excluding its private international law provisions.
9.2 This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.
9.3 If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and that is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.
9.4 You agree to notify Us of any facts or circumstances of which you become aware that would make this Agreement inaccurate in any respect.

View File

@ -14,9 +14,9 @@
"build": "gulp build --production"
},
"dependencies": {
"jquery": "^2.1.4",
"normalize-css": ">=2.3.1",
"normalize-opentype.css": ">=0.2.4",
"jquery": "^2.1.4",
"parsleyjs": "^2.0.7",
"svg4everybody": "^2.0.0"
},