Custom Forms
This commit is contained in:
parent
5332c81739
commit
2e50fbc8ae
67 changed files with 3335 additions and 34834 deletions
1
public/ace/mode-css.js
Normal file
1
public/ace/mode-css.js
Normal file
File diff suppressed because one or more lines are too long
1
public/ace/mode-plain_text.js
Normal file
1
public/ace/mode-plain_text.js
Normal file
|
|
@ -0,0 +1 @@
|
|||
ace.define("ace/mode/plain_text",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/behaviour"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./text_highlight_rules").TextHighlightRules,o=e("./behaviour").Behaviour,u=function(){this.HighlightRules=s,this.$behaviour=new o};r.inherits(u,i),function(){this.type="text",this.getNextLineIndent=function(e,t,n){return""},this.$id="ace/mode/plain_text"}.call(u.prototype),t.Mode=u})
|
||||
1
public/ace/worker-css.js
Normal file
1
public/ace/worker-css.js
Normal file
File diff suppressed because one or more lines are too long
4
public/bootstrap/themes/flatly.min.css
vendored
4
public/bootstrap/themes/flatly.min.css
vendored
File diff suppressed because one or more lines are too long
|
|
@ -1,6 +0,0 @@
|
|||
/* eslint-env browser */
|
||||
|
||||
'use strict';
|
||||
|
||||
document.getElementById('unsubscribe-button').click();
|
||||
document.getElementById('unsubscribe-form').submit();
|
||||
156
public/javascript/cookie.2.1.3.js
Normal file
156
public/javascript/cookie.2.1.3.js
Normal file
|
|
@ -0,0 +1,156 @@
|
|||
/*!
|
||||
* JavaScript Cookie v2.1.3
|
||||
* https://github.com/js-cookie/js-cookie
|
||||
*
|
||||
* Copyright 2006, 2015 Klaus Hartl & Fagner Brack
|
||||
* Released under the MIT license
|
||||
*/
|
||||
;(function (factory) {
|
||||
var registeredInModuleLoader = false;
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
define(factory);
|
||||
registeredInModuleLoader = true;
|
||||
}
|
||||
if (typeof exports === 'object') {
|
||||
module.exports = factory();
|
||||
registeredInModuleLoader = true;
|
||||
}
|
||||
if (!registeredInModuleLoader) {
|
||||
var OldCookies = window.Cookies;
|
||||
var api = window.Cookies = factory();
|
||||
api.noConflict = function () {
|
||||
window.Cookies = OldCookies;
|
||||
return api;
|
||||
};
|
||||
}
|
||||
}(function () {
|
||||
function extend () {
|
||||
var i = 0;
|
||||
var result = {};
|
||||
for (; i < arguments.length; i++) {
|
||||
var attributes = arguments[ i ];
|
||||
for (var key in attributes) {
|
||||
result[key] = attributes[key];
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
function init (converter) {
|
||||
function api (key, value, attributes) {
|
||||
var result;
|
||||
if (typeof document === 'undefined') {
|
||||
return;
|
||||
}
|
||||
|
||||
// Write
|
||||
|
||||
if (arguments.length > 1) {
|
||||
attributes = extend({
|
||||
path: '/'
|
||||
}, api.defaults, attributes);
|
||||
|
||||
if (typeof attributes.expires === 'number') {
|
||||
var expires = new Date();
|
||||
expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);
|
||||
attributes.expires = expires;
|
||||
}
|
||||
|
||||
try {
|
||||
result = JSON.stringify(value);
|
||||
if (/^[\{\[]/.test(result)) {
|
||||
value = result;
|
||||
}
|
||||
} catch (e) {}
|
||||
|
||||
if (!converter.write) {
|
||||
value = encodeURIComponent(String(value))
|
||||
.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);
|
||||
} else {
|
||||
value = converter.write(value, key);
|
||||
}
|
||||
|
||||
key = encodeURIComponent(String(key));
|
||||
key = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);
|
||||
key = key.replace(/[\(\)]/g, escape);
|
||||
|
||||
return (document.cookie = [
|
||||
key, '=', value,
|
||||
attributes.expires ? '; expires=' + attributes.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
|
||||
attributes.path ? '; path=' + attributes.path : '',
|
||||
attributes.domain ? '; domain=' + attributes.domain : '',
|
||||
attributes.secure ? '; secure' : ''
|
||||
].join(''));
|
||||
}
|
||||
|
||||
// Read
|
||||
|
||||
if (!key) {
|
||||
result = {};
|
||||
}
|
||||
|
||||
// To prevent the for loop in the first place assign an empty array
|
||||
// in case there are no cookies at all. Also prevents odd result when
|
||||
// calling "get()"
|
||||
var cookies = document.cookie ? document.cookie.split('; ') : [];
|
||||
var rdecode = /(%[0-9A-Z]{2})+/g;
|
||||
var i = 0;
|
||||
|
||||
for (; i < cookies.length; i++) {
|
||||
var parts = cookies[i].split('=');
|
||||
var cookie = parts.slice(1).join('=');
|
||||
|
||||
if (cookie.charAt(0) === '"') {
|
||||
cookie = cookie.slice(1, -1);
|
||||
}
|
||||
|
||||
try {
|
||||
var name = parts[0].replace(rdecode, decodeURIComponent);
|
||||
cookie = converter.read ?
|
||||
converter.read(cookie, name) : converter(cookie, name) ||
|
||||
cookie.replace(rdecode, decodeURIComponent);
|
||||
|
||||
if (this.json) {
|
||||
try {
|
||||
cookie = JSON.parse(cookie);
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
if (key === name) {
|
||||
result = cookie;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!key) {
|
||||
result[name] = cookie;
|
||||
}
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
api.set = api;
|
||||
api.get = function (key) {
|
||||
return api.call(api, key);
|
||||
};
|
||||
api.getJSON = function () {
|
||||
return api.apply({
|
||||
json: true
|
||||
}, [].slice.call(arguments));
|
||||
};
|
||||
api.defaults = {};
|
||||
|
||||
api.remove = function (key, attributes) {
|
||||
api(key, '', extend(attributes, {
|
||||
expires: -1
|
||||
}));
|
||||
};
|
||||
|
||||
api.withConverter = init;
|
||||
|
||||
return api;
|
||||
}
|
||||
|
||||
return init(function () {});
|
||||
}));
|
||||
|
|
@ -9,6 +9,9 @@ $('.summernote').summernote({
|
|||
tabsize: 2
|
||||
});
|
||||
|
||||
// https://ace.c9.io/#nav=higlighter
|
||||
// https://github.com/ajaxorg/ace-builds/tree/v1.2.3/src-min-noconflict
|
||||
|
||||
$('div.code-editor').each(function () {
|
||||
var editor = ace.edit(this);
|
||||
var textarea = document.querySelector('input[name=html]');
|
||||
|
|
@ -17,8 +20,34 @@ $('div.code-editor').each(function () {
|
|||
editor.getSession().setMode('ace/mode/html');
|
||||
editor.getSession().setUseWrapMode(true);
|
||||
editor.getSession().setUseSoftTabs(true);
|
||||
editor.setShowPrintMargin(false);
|
||||
editor.getSession().on('change', function () {
|
||||
textarea.value = editor.getSession().getValue();
|
||||
});
|
||||
textarea.value = editor.getSession().getValue();
|
||||
});
|
||||
|
||||
$('div[class*="code-editor-"]').each(function () {
|
||||
var input = $(this).siblings('input')[0];
|
||||
var mode = 'html';
|
||||
var editor = ace.edit(this);
|
||||
|
||||
if ($(this).hasClass('code-editor-text')) {
|
||||
mode = 'plain_text';
|
||||
} else if ($(this).hasClass('code-editor-mjml')) {
|
||||
mode = 'html';
|
||||
editor.getSession().setUseWorker(false);
|
||||
} else if ($(this).hasClass('code-editor-css')) {
|
||||
mode = 'css';
|
||||
}
|
||||
|
||||
editor.setTheme('ace/theme/chrome');
|
||||
editor.setShowPrintMargin(false);
|
||||
editor.getSession().setMode('ace/mode/' + mode);
|
||||
editor.getSession().setUseWrapMode(true);
|
||||
editor.getSession().setUseSoftTabs(true);
|
||||
editor.getSession().setValue(input.value);
|
||||
editor.getSession().on('change', function () {
|
||||
input.value = editor.getSession().getValue();
|
||||
});
|
||||
});
|
||||
|
|
|
|||
13
public/javascript/jquery-ui-1.12.1.min.js
vendored
Normal file
13
public/javascript/jquery-ui-1.12.1.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
48
public/subscription/footer-scripts.js
Normal file
48
public/subscription/footer-scripts.js
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
/* eslint-env browser */
|
||||
/* eslint no-invalid-this: 0, no-var: 0, prefer-arrow-callback: 0 */
|
||||
/* globals $: false, ace: false */
|
||||
|
||||
if (typeof moment !== 'undefined' && moment.tz) {
|
||||
(function () {
|
||||
var tz = moment.tz.guess();
|
||||
if (tz) {
|
||||
document.querySelectorAll('.tz-detect').forEach(function(el) {
|
||||
el.value = tz;
|
||||
});
|
||||
}
|
||||
})();
|
||||
}
|
||||
|
||||
document.querySelectorAll('a[href="#submit"]').forEach(function(a) {
|
||||
a.onclick = function() {
|
||||
var form = document.getElementById('main-form');
|
||||
form && form.submit();
|
||||
return false;
|
||||
};
|
||||
});
|
||||
|
||||
// Fixes MJML Button until they do ...
|
||||
// https://github.com/mjmlio/mjml/issues/359
|
||||
|
||||
if (window.btnBgColor) {
|
||||
(function() {
|
||||
var s = document.createElement('style');
|
||||
var c = document.createTextNode(
|
||||
'.td-btn:hover { background-color: ' + window.btnBgColorHover + '; }' +
|
||||
'.td-btn { cursor: pointer !important; }' +
|
||||
'.a-btn { background-color: transparent !important; }'
|
||||
);
|
||||
s.appendChild(c);
|
||||
document.getElementsByTagName('head')[0].appendChild(s);
|
||||
document.querySelectorAll('a').forEach(function(a) {
|
||||
if (a.parentNode.getAttribute('bgcolor') === window.btnBgColor) {
|
||||
a.target = '_self';
|
||||
a.className += 'a-btn';
|
||||
a.parentNode.className += 'td-btn';
|
||||
a.parentNode.onclick = function() {
|
||||
a.click();
|
||||
};
|
||||
}
|
||||
});
|
||||
})();
|
||||
}
|
||||
215
public/subscription/form-input-style.css
Normal file
215
public/subscription/form-input-style.css
Normal file
|
|
@ -0,0 +1,215 @@
|
|||
/* --- Colors ----------
|
||||
|
||||
Input Border: #DCE4EC
|
||||
Input Group: #FAFAFA
|
||||
Muted: #999999
|
||||
Anchor: #1F68D5
|
||||
Alerts: ...
|
||||
|
||||
*/
|
||||
|
||||
/* --- General -------- */
|
||||
|
||||
form {
|
||||
margin: .5em 0 1em;
|
||||
}
|
||||
|
||||
.form-group {
|
||||
margin-bottom: 1.2em;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
label {
|
||||
display: block;
|
||||
font-size: 1em;
|
||||
font-weight: 700;
|
||||
margin-bottom: .3em;
|
||||
}
|
||||
|
||||
.label-checkbox,
|
||||
.label-radio {
|
||||
font-weight: normal;
|
||||
font-size: .9em;
|
||||
}
|
||||
|
||||
.label-inline {
|
||||
display: inline-block;
|
||||
font-weight: normal;
|
||||
margin-left: .3em;
|
||||
}
|
||||
|
||||
|
||||
/* --- Inputs ------------- */
|
||||
|
||||
input[type='email'],
|
||||
input[type='number'],
|
||||
input[type='password'],
|
||||
input[type='search'],
|
||||
input[type='tel'],
|
||||
input[type='text'],
|
||||
input[type='url'],
|
||||
textarea,
|
||||
select {
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
background-color: transparent;
|
||||
border: 2px solid #DCE4EC;
|
||||
border-radius: 4px;
|
||||
box-shadow: none;
|
||||
box-sizing: border-box;
|
||||
height: 2.8em;
|
||||
padding: .3em .7em;
|
||||
width: 100%;
|
||||
font-size: 1.2em;
|
||||
font-style: inherit;
|
||||
}
|
||||
|
||||
input[type='email']:focus,
|
||||
input[type='number']:focus,
|
||||
input[type='password']:focus,
|
||||
input[type='search']:focus,
|
||||
input[type='tel']:focus,
|
||||
input[type='text']:focus,
|
||||
input[type='url']:focus,
|
||||
textarea:focus,
|
||||
select:focus {
|
||||
border-color: #2D3E4F;
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
input[readonly] {
|
||||
color: #999999;
|
||||
}
|
||||
input[readonly]:focus {
|
||||
border-color: #DCE4EC;
|
||||
}
|
||||
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
margin-bottom: 0;
|
||||
margin-right: .2em;
|
||||
}
|
||||
|
||||
input[type='checkbox'],
|
||||
input[type='radio'] {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
select {
|
||||
background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="14" viewBox="0 0 29 14" width="29"><path fill="#d1d1d1" d="M9.37727 3.625l5.08154 6.93523L19.54036 3.625"/></svg>') center right no-repeat;
|
||||
padding-right: 2em;
|
||||
}
|
||||
|
||||
select:focus {
|
||||
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="14" viewBox="0 0 29 14" width="29"><path fill="#2D3E4F" d="M9.37727 3.625l5.08154 6.93523L19.54036 3.625"/></svg>');
|
||||
}
|
||||
|
||||
textarea {
|
||||
min-height: 8em;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
/* --- Input Group --------- */
|
||||
|
||||
.input-group {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.input-group-addon {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
background: #FAFAFA;
|
||||
height: 100%;
|
||||
padding: 0 .75em;
|
||||
border: 2px solid #DCE4EC;
|
||||
box-sizing: border-box;
|
||||
border-bottom-right-radius: 4px;
|
||||
border-top-right-radius: 4px;
|
||||
}
|
||||
|
||||
.input-group-addon > * {
|
||||
line-height: 2.8em;
|
||||
}
|
||||
|
||||
|
||||
/* --- Alerts ------------- */
|
||||
|
||||
.alert {
|
||||
margin: 1.25em auto 0;
|
||||
padding: 1em;
|
||||
border-radius: 4px;
|
||||
font-family: inherit;
|
||||
font-size: 1em;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.alert-dismissible .close {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.alert-success { color: #397740; background-color: #DEF0D9; border-color: #CFEAC8; }
|
||||
.alert-info { color: #33708E; background-color: #D9EDF6; border-color: #BCDFF0; }
|
||||
.alert-warning { color: #8A6D3F; background-color: #FCF8E4; border-color: #F9F2CE; }
|
||||
.alert-danger { color: #AA4144; background-color: #F2DEDE; border-color: #EBCCCC; }
|
||||
|
||||
|
||||
/* --- GPG Key ------------- */
|
||||
|
||||
.form-group.gpg > label {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.btn-download-pubkey,
|
||||
.btn-download-pubkey:focus,
|
||||
.btn-download-pubkey:active {
|
||||
background: none;
|
||||
border: none;
|
||||
display: block;
|
||||
font: inherit;
|
||||
font-size: .8em;
|
||||
margin: .3em 0 0;
|
||||
padding: 0;
|
||||
outline: none;
|
||||
outline-offset: 0;
|
||||
color: #1F68D5;
|
||||
cursor: pointer;
|
||||
text-transform: none;
|
||||
height: auto;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.btn-download-pubkey:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.gpg-text {
|
||||
font-family: monospace;
|
||||
font-size: .8em;
|
||||
}
|
||||
|
||||
|
||||
/* --- Other ------------- */
|
||||
|
||||
.help-block {
|
||||
display: block;
|
||||
font-size: .9em;
|
||||
line-height: 1;
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
form a {
|
||||
color: #1F68D5;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
form a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue