Compare commits
1038 Commits
0.0.49
...
3.0.0-beta
Author | SHA1 | Date | |
---|---|---|---|
2add301b9f | |||
2d217e416a | |||
77e0ace951 | |||
933749f8f0 | |||
7b13babf3f | |||
8c673f78d7 | |||
2285c08c01 | |||
836b7179e9 | |||
f89a728c38 | |||
58f2c32362 | |||
99c4fc71c4 | |||
ce456af962 | |||
faa035a7c3 | |||
9066be6544 | |||
81c3e2facf | |||
3fafe2bd6a | |||
2f6fe8c804 | |||
ec3e88e658 | |||
b346a8846a | |||
6ff3895940 | |||
0e5401dd68 | |||
ea059ac0e4 | |||
f874ae6ca8 | |||
5bd6c6533a | |||
f539860922 | |||
536267c8f5 | |||
5b905a60e8 | |||
5e152ebaa1 | |||
2c35c7061e | |||
2515dcf4ce | |||
9458bf7418 | |||
44bf4b98b8 | |||
ff46784adf | |||
088d4f800d | |||
bb73e257db | |||
53fd3fe07c | |||
27a734d005 | |||
fb059f585e | |||
c99f990dbf | |||
5600d8087f | |||
cac3c30833 | |||
454a00c3cb | |||
156d05b4cf | |||
be63aa727d | |||
6c270ab095 | |||
bb7c9d2667 | |||
570b9dfb8f | |||
5f9baed195 | |||
45e6e0e9e6 | |||
08395d4365 | |||
167fb86927 | |||
64dbf158a4 | |||
89e57479cc | |||
fccd7f4054 | |||
1d6cdfe2cc | |||
812c6634ba | |||
419871a6bf | |||
823cd3cd07 | |||
24fa8c1d79 | |||
868f860e26 | |||
cbcd9fb22f | |||
eeb2fcb2e3 | |||
dde0b16cca | |||
01eaf1ef2d | |||
43c2908a2b | |||
6f64b9faa2 | |||
8d496e7aa3 | |||
25485a366a | |||
8aabc783e3 | |||
f72ceb2dbe | |||
af3d971154 | |||
2d3aae9dd0 | |||
11af014d9d | |||
6653327f7f | |||
3a2adde6c5 | |||
1aba3112e9 | |||
181d7b9876 | |||
ebe3f0bd00 | |||
1b69fe50ff | |||
fa3ba609f3 | |||
fe9aa03de1 | |||
cdd8e51ef9 | |||
1da06bd46a | |||
32b24a83ab | |||
5293589eea | |||
07f4c0bc1e | |||
7d9a072545 | |||
67ffcb5485 | |||
02098a3cf0 | |||
eab8065154 | |||
fb8ecef1c3 | |||
14955e5022 | |||
e83c0ff0bd | |||
09db1aac22 | |||
5fa1eb643a | |||
898913a517 | |||
3a4b364bcd | |||
d373d10f6c | |||
c07e1eff3c | |||
f5e985baa4 | |||
2c93a105cc | |||
cbf0a7684f | |||
2632feba31 | |||
c96bc755c7 | |||
bbad772d7a | |||
520a3c43be | |||
eb70df1466 | |||
5977b8b4bc | |||
2bb7d95e37 | |||
c64959dce0 | |||
ead0792b32 | |||
7bd52d456c | |||
8517896660 | |||
c78933f7c4 | |||
707d5efec1 | |||
acfb3aefba | |||
cb6f4046a2 | |||
667aa91581 | |||
b7f7dc6728 | |||
ad1e8feb23 | |||
486b382c88 | |||
472be3b071 | |||
37a9fd9e1b | |||
c984ac7a66 | |||
a1ea56f505 | |||
dd7f959731 | |||
09f4f2e78a | |||
502250a1a3 | |||
48e37f6797 | |||
420058a86d | |||
6c777ca074 | |||
a481debb77 | |||
c91f8ccc7a | |||
6a2b5e28c2 | |||
bc51b6efc8 | |||
152edda03f | |||
5029b73027 | |||
35c25d3337 | |||
ae25e95d51 | |||
5b8d0c63a1 | |||
94fb8c6096 | |||
93ef1d0197 | |||
501d00b0cc | |||
9af3dc1f9d | |||
3705ed7da0 | |||
5b99e66d8d | |||
cbedd5ff40 | |||
bfcd6f10fc | |||
79362e9955 | |||
fcf272b44a | |||
b80683a9a1 | |||
5349f3a59a | |||
95072a9ac5 | |||
8c372b0909 | |||
580dd38b3a | |||
47d4e98aae | |||
7ebb7bac17 | |||
6cbce2fc97 | |||
e8a950f32c | |||
4f722ecd8a | |||
478359f9ff | |||
a1720a5cf1 | |||
3f0ef3ded7 | |||
dcb25c1a6b | |||
c5dd575324 | |||
6eca26a4e2 | |||
e10fa065bd | |||
49673fabbd | |||
1c1a210542 | |||
30277d92cd | |||
fb940065ea | |||
afa06342a5 | |||
03d2ff5f26 | |||
ec71dff40d | |||
58faf64a5c | |||
65ff14a81d | |||
f7efe44f09 | |||
cf22e81ae1 | |||
7aa0f21d11 | |||
2e31e3d37c | |||
3e988b7a56 | |||
ce3eb06924 | |||
a37ff8d398 | |||
d0bdb1a47b | |||
855f2a55d4 | |||
fc7ec9bded | |||
028de860a2 | |||
5af91d028d | |||
a4bcf870bb | |||
e06f2f5f0b | |||
c101645d93 | |||
b8904c2d51 | |||
099db4e1c8 | |||
cdf36ccb20 | |||
79b6ab1d15 | |||
95114774da | |||
7f566fb672 | |||
d27968a215 | |||
344990d59e | |||
ea831ef160 | |||
8314b05fce | |||
fd33cc7068 | |||
92e4cc6a24 | |||
dd4bebb570 | |||
99aed2cb01 | |||
92616063ec | |||
c56b56f4aa | |||
33d6533c64 | |||
55d7a0dd01 | |||
8b2ac99eda | |||
dba21c68fd | |||
5b40652737 | |||
7f0396747d | |||
e9dfff8e66 | |||
040c4da6c3 | |||
80a237504d | |||
4e2e09ea24 | |||
87b9fbdc16 | |||
a071a14eec | |||
5ae006b10f | |||
9d21ebd26e | |||
fcff6de3c3 | |||
3d2168856d | |||
a6eb1b06da | |||
21d0c3518e | |||
3532a3c8e9 | |||
79cba4cace | |||
a5dee8da12 | |||
3783384ea6 | |||
766c0dfcfc | |||
83e9de8e95 | |||
0a512f6349 | |||
a4c1095db7 | |||
87a6c7100e | |||
fc51d5f98c | |||
a1b3aaf1f8 | |||
3a1bf88c22 | |||
bd39c34f03 | |||
73121c2ca5 | |||
5e23fa4295 | |||
5e34bbf9d5 | |||
cedd94550f | |||
8b13889c7a | |||
3c7ac5488a | |||
398d7d3d80 | |||
b727ba423e | |||
45b9550293 | |||
d2e520e2fd | |||
b9c3ae97cd | |||
b90c0b173b | |||
f498f4df0c | |||
2f10f89fc5 | |||
a49f9d9c80 | |||
e71e23bbb5 | |||
adc86ef247 | |||
765b2bad21 | |||
2354cac719 | |||
7f509f66ff | |||
d8ff251c71 | |||
12979cc2c0 | |||
e974c06a89 | |||
f2ceff8252 | |||
cd5f3165c7 | |||
6e700b0cfa | |||
5b41fc212c | |||
2b7a5452b8 | |||
cfed133fb6 | |||
0beff9a090 | |||
d6e707fb85 | |||
a3e8d47199 | |||
cab3f3a96e | |||
5f0d4abe7f | |||
ff5f87eeca | |||
e85b969e11 | |||
2eb98905b6 | |||
ac1274c6fd | |||
94f91afce1 | |||
73d5fb8cff | |||
90b2b46db4 | |||
f2bf61240a | |||
3f151fd235 | |||
7598363cae | |||
4b1f216cd3 | |||
3d5f13a2b8 | |||
98eab956e9 | |||
a7260cba3d | |||
787e022382 | |||
d8e1c76155 | |||
3cb08e3c09 | |||
0474985866 | |||
8d15ef6d06 | |||
0fbc7fb7eb | |||
1379bdbbeb | |||
64d3e659a4 | |||
19458546a0 | |||
bba7460423 | |||
956fdd5cff | |||
a0289775cb | |||
4c785902bc | |||
e29ae4d7c9 | |||
1ea915017a | |||
6441c781a5 | |||
589c54e205 | |||
e10b99eaac | |||
0316f3ea3e | |||
166fef899f | |||
4e850408fc | |||
6e2494831c | |||
38a7d8f80a | |||
abfebc8643 | |||
40a3487d3d | |||
a93865e594 | |||
4e76286b44 | |||
fbe57e96c6 | |||
950bfb04d6 | |||
6d43b7b6a9 | |||
e1991deafd | |||
2f1b31aeb2 | |||
ca29eefd7f | |||
1421407a23 | |||
36e4bf468d | |||
5cd3917f4d | |||
586470e8f9 | |||
b02e9f5ab3 | |||
4a538e677d | |||
cc2fdbe5be | |||
3833688115 | |||
1639741e55 | |||
ab0d573a66 | |||
26c582b19f | |||
3bc53f9f09 | |||
bb220baf6a | |||
121a78f42a | |||
4257aa634e | |||
95ff83557f | |||
e9070de9c4 | |||
72aa087411 | |||
fbc0a3ad8d | |||
afedc409f5 | |||
0360f16dc8 | |||
f4800dbbae | |||
15ddc8454e | |||
f8df4de711 | |||
a0cb18e1a1 | |||
509ec7d3d3 | |||
aa2416f353 | |||
167a605658 | |||
592f11bd5f | |||
92b128039a | |||
5efe611b2d | |||
477e2737b1 | |||
dc8bacc27d | |||
0b8c787cda | |||
4f5c464659 | |||
4f432645b1 | |||
5fa7930896 | |||
f9efd536d9 | |||
6a65ff5e5d | |||
b549f83422 | |||
a9c80c031f | |||
405bea3049 | |||
6954acd0b3 | |||
efd15d5d18 | |||
6566622167 | |||
8157780b68 | |||
975546915e | |||
319d591662 | |||
1dd6c91529 | |||
c4f0426775 | |||
53f5a122bd | |||
a7142ed21b | |||
771a1bfc44 | |||
53169bba78 | |||
e3b8c1836b | |||
a4b091dc32 | |||
448c9ddaa8 | |||
ac574acf8e | |||
aa15b9420a | |||
2b7f5c321e | |||
bee9bfcfcc | |||
b7d73dcfaa | |||
5b4fa4ea2b | |||
12e5fe77de | |||
2dca10c539 | |||
ceba5b3d0b | |||
c05cf3cad4 | |||
d6f5a39829 | |||
30d67508cb | |||
63b8d892f7 | |||
10137d8551 | |||
9ef74e0951 | |||
89ff93958f | |||
8d870e85eb | |||
0cdb426712 | |||
b9f7a5673f | |||
7ffbf6c378 | |||
3a9c006cf9 | |||
a9edb383b4 | |||
ec23a73edb | |||
10a164ee0c | |||
37fcd5699b | |||
66d969cc2f | |||
9d358f74dd | |||
57e00e3097 | |||
53afbea6ec | |||
2c2c0b3db4 | |||
e235ee66eb | |||
0ef430567b | |||
74aef73f75 | |||
99eb72428f | |||
065b160155 | |||
6811d8e38d | |||
5f75efddf1 | |||
822a7ac5f5 | |||
06e1ac9bb5 | |||
a3530c3367 | |||
ec35bfb2d4 | |||
ed3e46bebb | |||
87b270482b | |||
d22ba55858 | |||
835f25cc82 | |||
11944283b0 | |||
dc704a92de | |||
dca1e9e1a7 | |||
00781be077 | |||
ac80148f5b | |||
ff36833270 | |||
612c7d76a0 | |||
32097b4512 | |||
d686f75222 | |||
bcc01df0b8 | |||
ee12f4d304 | |||
16c1607850 | |||
e2864e2243 | |||
16dc81150d | |||
ed4d3d52ed | |||
37a6a74b6e | |||
136a531047 | |||
bef0097f5b | |||
a0d2be50e8 | |||
18e2d26587 | |||
810a7bf544 | |||
1010c6f4f0 | |||
8dd698ec75 | |||
95e66f1f29 | |||
ac0460ab04 | |||
2d059debb7 | |||
df0ad2df37 | |||
0f7725e6af | |||
eda346c582 | |||
94060a6443 | |||
1cd7c5e876 | |||
b369cadde0 | |||
5321a136e7 | |||
d4c04f29bf | |||
20798d8957 | |||
3cde437628 | |||
8db7af48cd | |||
d05d033727 | |||
ccba1925b1 | |||
b590586d4c | |||
44c742402c | |||
3a9db95c37 | |||
5d88938d94 | |||
67e0f1776d | |||
5b68febb05 | |||
9bf65ca798 | |||
d95aa40502 | |||
a59bf76fb4 | |||
51fdc7f1df | |||
aa51b751d0 | |||
aff522c5cd | |||
66d039ace3 | |||
ed5e6cdd8c | |||
47f5e1e7b4 | |||
626d6c0fa9 | |||
2b45d64695 | |||
c27446666e | |||
7f0195378c | |||
6caa3a069b | |||
baaf73b584 | |||
b2a92feb50 | |||
c11b9677d5 | |||
0e5a26ce1f | |||
40ec5569d0 | |||
d14ecc982b | |||
9c27384ba3 | |||
2268f0ffa6 | |||
bfc04bfa87 | |||
37ac31cdac | |||
15096d483f | |||
16724affad | |||
384d59abe0 | |||
027414b7a2 | |||
a1cd56c419 | |||
6ee1c23f9a | |||
44a223eba1 | |||
7c66754541 | |||
bb80fc0860 | |||
6c7cc5de0d | |||
063cc9edc3 | |||
76c283502e | |||
554add0882 | |||
689c340081 | |||
01e4ed7efc | |||
59f408846a | |||
64606e69cf | |||
e8e0c1e0b3 | |||
953c124ef0 | |||
2e1be55bf9 | |||
33125f2ce7 | |||
e99d2b380c | |||
bcf89f0dfe | |||
3d64a42126 | |||
97eb772ab8 | |||
bc40bbb44b | |||
ed117e53d9 | |||
b74f40c7a8 | |||
bf4023c0ad | |||
c98cdb3e57 | |||
a01b094f9f | |||
e75bb7ee59 | |||
563c62855a | |||
8a15424a62 | |||
8eb04534bc | |||
b3abf46604 | |||
6f19a1593e | |||
883711698e | |||
bdcfd77d42 | |||
2cd503e0e0 | |||
c9519f0b3d | |||
0daa3057e7 | |||
0ac5129e0e | |||
a3aa347fdf | |||
a40d1122a5 | |||
9955b8fda1 | |||
c994438fa8 | |||
3085ae575a | |||
793b8ce29e | |||
5d447cdec3 | |||
e7698b0131 | |||
f86121b656 | |||
45c223c14b | |||
66990d62c2 | |||
4439111a44 | |||
440b7e4e6c | |||
b90d7894ca | |||
a0b37eb08c | |||
44b83436bc | |||
0d75ee0e12 | |||
50d77f2aff | |||
cb813171ce | |||
3f188e3690 | |||
e74938df90 | |||
93f7739f46 | |||
a918091977 | |||
b539eae7f9 | |||
228a671749 | |||
70fe253db3 | |||
bdb97261fd | |||
8507c77699 | |||
771ff134a8 | |||
9c1cbba163 | |||
f51122b58f | |||
e8fd992235 | |||
e126278e32 | |||
9d2651083d | |||
1e1ae4c3cf | |||
385f5ab535 | |||
dc371d76ca | |||
be0c9b71d8 | |||
6e250d9317 | |||
afeaa00fc7 | |||
6575d1579d | |||
282199d362 | |||
3e5c46e8f3 | |||
71515f3ff0 | |||
934a8d5bf8 | |||
6be2464c86 | |||
ace8a52262 | |||
7d37d279cd | |||
5525a959a8 | |||
a421dbd674 | |||
bedfc4f80c | |||
af2a6b2559 | |||
cb8c32e171 | |||
8abec208fc | |||
5264cb1cf4 | |||
47e0e1a836 | |||
e602612cd6 | |||
9f7ae122e3 | |||
22caba31e3 | |||
82ab4acb8d | |||
9466be4793 | |||
a2e2090cbb | |||
d100d61403 | |||
d781ef6d01 | |||
1dafc4da04 | |||
063c271e40 | |||
a53007e30b | |||
c616b3299a | |||
86eab0d8f8 | |||
bfd35b1cdc | |||
461203279b | |||
b9c45b46ba | |||
1a42ae4cca | |||
f2ad7ee34c | |||
37017ef69d | |||
157725c300 | |||
98d6f55a6e | |||
425d45a862 | |||
438b4fb1ec | |||
1f91d40def | |||
c5e1def2f9 | |||
65ba834742 | |||
19dc048858 | |||
938279bf8f | |||
dd2df429ef | |||
c4e05912ff | |||
bb34e8477f | |||
32f7d7771f | |||
e77717c4c2 | |||
d27d5ae5dd | |||
168263f0ea | |||
f1ced11809 | |||
c2546e8aed | |||
b7ef191641 | |||
2220a13399 | |||
31ec7475c8 | |||
bfdc13a8d1 | |||
9a3c4ff7de | |||
25410eb09c | |||
122f88668a | |||
9c35eb9723 | |||
fa528ed1ff | |||
1a7623bc4a | |||
3a4a37e1af | |||
888a566dda | |||
3567779faf | |||
cb5b0bd753 | |||
88d0511adb | |||
a4a654cfd5 | |||
4d3c90ce0d | |||
f51aba4dbd | |||
f651c06cb9 | |||
940328c608 | |||
ce85600753 | |||
5666116645 | |||
815461a851 | |||
1102467e39 | |||
a5ee865271 | |||
59bda6cf6c | |||
a4d9d55b09 | |||
8cf918013d | |||
7789a10026 | |||
ce0ad33c32 | |||
63d1fe17a9 | |||
da92795635 | |||
915f8b5865 | |||
8ae939080b | |||
610f74343c | |||
4de03db125 | |||
f734d47b26 | |||
9e879d0539 | |||
ff6dffd626 | |||
efe187953c | |||
ab8a503a48 | |||
81d91188ac | |||
d3353b793f | |||
625f828cce | |||
c90dd94cf3 | |||
a851527ff5 | |||
76e292f494 | |||
ed886280de | |||
f3b2db48c4 | |||
b60c758281 | |||
b758284df7 | |||
c6d43099a1 | |||
fde283dd56 | |||
5800883416 | |||
39a6318105 | |||
4196d35e35 | |||
c0653ce26c | |||
131f12d19e | |||
3e734b5c44 | |||
76a41d53d6 | |||
43cb03105b | |||
3647f70daa | |||
5956a200ea | |||
449eb28b2a | |||
912fca0e73 | |||
a3f2c32a6d | |||
e175e63a7c | |||
bfe898aae8 | |||
099c2a390d | |||
8fe57ff57f | |||
6dc9f9d2ab | |||
5463dd10e2 | |||
b8c56623a6 | |||
a6b00e1ba7 | |||
aa0078e5e4 | |||
714f81d936 | |||
497c2fb595 | |||
c291fada74 | |||
e4166cecba | |||
3a1568a31d | |||
02a5de0cd6 | |||
f5dce907ff | |||
2692c7c7dd | |||
4cfe3c534c | |||
f8d78d87af | |||
3b6e06eccb | |||
09b2246186 | |||
af83b02129 | |||
093fd2f082 | |||
c24d8135aa | |||
41fdc3af13 | |||
ec9417d293 | |||
6eb78b5bf7 | |||
877e110188 | |||
e6d909da21 | |||
c26a3f704b | |||
9425e390c5 | |||
698cdecbfe | |||
d5a1d94bca | |||
4f37a44363 | |||
95f8f130ea | |||
fb29800c7d | |||
d2b41a5b90 | |||
71db3e569d | |||
9a8f028a01 | |||
2c5e73305a | |||
90e7026355 | |||
d63ab6a927 | |||
e5cf57e4f8 | |||
6beada63de | |||
6699b52184 | |||
c651a8bbe8 | |||
4a171dca2d | |||
f821a60a2c | |||
24a3866e2a | |||
fc54f31d3d | |||
616883ed63 | |||
b6ce513927 | |||
456152b5cb | |||
0be790971a | |||
e255484bc8 | |||
fc53aca31d | |||
31116a7cf6 | |||
ee0c824126 | |||
9ee66160ec | |||
bc91b12cf3 | |||
457c43cd77 | |||
949d6033d7 | |||
cad6391fc6 | |||
e5e5e7b426 | |||
9095482af2 | |||
9698cf2d2e | |||
707afc2ae0 | |||
3b795a3e58 | |||
062f849fc8 | |||
98c6c29716 | |||
b4da3ecfb3 | |||
709f45941a | |||
9ac4c3de72 | |||
eee22227b3 | |||
edcce542c3 | |||
a354a380ba | |||
54eb667654 | |||
10207112bc | |||
892eea238f | |||
e6bb1666ee | |||
2be9985d20 | |||
f4b7acca1e | |||
de9d3655f0 | |||
dfa13726e7 | |||
61ab583030 | |||
6954501915 | |||
45a8103322 | |||
c4896f4662 | |||
71711b4a0d | |||
2634b606f6 | |||
0aa48b9121 | |||
1157cc8b9a | |||
88599963e0 | |||
57706dc1b3 | |||
694402e9f2 | |||
891239bf4e | |||
232494e1a2 | |||
4ae55230da | |||
eda4a9edcc | |||
5fb699fd5b | |||
7c5e0212ad | |||
44a77e097b | |||
22fd9e31f7 | |||
bbe3d48ec1 | |||
449978d7c1 | |||
0535e1eaeb | |||
4dfe4e4997 | |||
33a184fc4a | |||
19b34ed838 | |||
ca17e0c4da | |||
347e491865 | |||
59b6877675 | |||
6728203672 | |||
058ba53622 | |||
8a1450d7d6 | |||
49f2b147be | |||
8f3b2e6c0b | |||
baf0d374ae | |||
465665271d | |||
663f39d749 | |||
62349900b9 | |||
9ccf2a9294 | |||
b2f662c1d5 | |||
43b23994a9 | |||
9708019ab6 | |||
8819d9154a | |||
5e23aacdca | |||
398109dcf7 | |||
b7c1594cf6 | |||
3d24f0c77b | |||
13001008c4 | |||
4b8caccb46 | |||
04ae6efaf6 | |||
98812834f6 | |||
732ea59e34 | |||
9b9e31fcc8 | |||
9b44becc7d | |||
82e153a2e8 | |||
dc981b23e4 | |||
eb3f872dc6 | |||
3f9b41f042 | |||
9e4762cbd7 | |||
249824b83c | |||
0b89a6d2ff | |||
b074b01b9f | |||
9a0bb52860 | |||
bf36deccb2 | |||
f77e24105d | |||
f90ba712ee | |||
c658778476 | |||
c221e52cc4 | |||
556803af5d | |||
5bc17f5e76 | |||
fe537a0445 | |||
08ec4e83c8 | |||
e72a8efbd4 | |||
c49d96d63a | |||
36b935b9ae | |||
f1985f7e81 | |||
8c14df6c1f | |||
181c0cab36 | |||
2a04c3c054 | |||
80efc3c12d | |||
8b96806b11 | |||
a2f7fbac33 | |||
981cb91a13 | |||
89545ba104 | |||
709b76d01e | |||
da2d6dd405 | |||
28f5375609 | |||
37a259f73b | |||
cdb3b94cbd | |||
72f696e834 | |||
57dff5ff00 | |||
90a0061233 | |||
2955b6d5a0 | |||
1d03482463 | |||
d1def923f8 | |||
8a278360f4 | |||
5d12de8ec0 | |||
daa36c833f | |||
a9e02f745f | |||
a04f5a2d25 | |||
71fbc1a7b0 | |||
677060491d | |||
03fec11947 | |||
a0817a1e97 | |||
1926b7ba29 | |||
aec6d241e8 | |||
75602be304 | |||
299c922cef | |||
29673d0799 | |||
7c236e6209 | |||
8e438e1819 | |||
0c8cc27ea2 | |||
6f49201393 | |||
7bf9e8b06e | |||
96eaafe012 | |||
9a82e718ce | |||
f9e4f3f584 | |||
d8b1be9ccc | |||
7c61fa2c81 | |||
0af99c771e | |||
c5488571be | |||
e0aeeb29d9 | |||
d5a9b84ca3 | |||
fd417d8d95 | |||
0291c3a9a0 | |||
fd6e6de547 | |||
bf54eeb345 | |||
697afcbeba | |||
5773fa7994 | |||
b59785c4b6 | |||
fbf9f6f902 | |||
adc232fc3f | |||
e3c1ff6c8c | |||
77edd93965 | |||
7d15c391ea | |||
8fb29e2418 | |||
b348c350c0 | |||
fbeddb8af2 | |||
54f6ab0c79 | |||
8c3525589c | |||
58f97ea43d | |||
8e4c3ea7ea | |||
3865a8e8cd | |||
02221f6833 | |||
b63ef8cca0 | |||
aabe71d473 | |||
1405249712 | |||
16ee5e934a | |||
74276b45c5 | |||
b046c9ea4b | |||
8bd7f5f169 | |||
ee119215c0 | |||
c22d3c8957 | |||
0dd7a3990f | |||
1a6b032943 | |||
1220f47d87 | |||
583b34a5c1 | |||
b36d13a087 | |||
1a3aa7a4e4 | |||
70a13a4774 | |||
6ce13df2f3 | |||
4eb85c5d7e | |||
6eb6636e8b | |||
9635fb5365 | |||
d4b39cb1f4 | |||
af36e7a0d9 | |||
1db8626e35 | |||
61c255564f | |||
7e5047d98f | |||
4698d5a4db | |||
864c9cbe95 | |||
011b6f9b3c | |||
e45fc0c0a0 | |||
6bebdd6e95 | |||
8df4da768a | |||
67f4c21aa8 | |||
5eba0e2731 | |||
3efa429a1b | |||
3a78441a83 | |||
c05be7d987 | |||
b8cb1da777 | |||
ac8d1d808f | |||
9cd7b1a204 | |||
0d32c09df3 | |||
9f288ae11a | |||
e87ccd6b92 | |||
8a2b6ac69b | |||
43bd2d4413 | |||
9fdb99a06b | |||
f3c69c8353 | |||
29a32d3da9 | |||
8412cc852d | |||
b4e4320508 | |||
dbd6e6f310 | |||
bdcb7f0e58 | |||
85c9b121f5 | |||
069bc95297 | |||
0b711e6341 | |||
2a961cca01 | |||
e855fdbbaf | |||
288464e8cb | |||
1331ed70f1 | |||
411188c345 | |||
ee275532b1 | |||
b2eef93516 | |||
40ca54c447 | |||
b65db1afbf | |||
c258b1c3a2 | |||
7a5a726400 | |||
e553922eca | |||
04e9e8a45d | |||
f037e1271d | |||
f4563e18cd | |||
feaac5eb54 | |||
a6059d5bc3 | |||
f2104ef30f | |||
e7f760328e | |||
c09bcd51ad | |||
01af4d3401 | |||
2ba9d95a2e | |||
b2d4bfc760 | |||
57f5f16bb6 | |||
7d2e13b9a3 | |||
6d39f9fa78 | |||
a4395f2350 | |||
411969b3eb | |||
1868ca3155 | |||
e765471f5d | |||
bdce7c5e5a | |||
773be9f5c8 | |||
6ae46b05e5 | |||
217894745d | |||
a03891895c | |||
3368e84a99 | |||
e90df2f08d | |||
2391ae1cad | |||
83114a8be4 | |||
d08d5a3b6c | |||
8330bfc884 | |||
ef21a8cca7 | |||
e32c46a755 | |||
092f69538a | |||
7a75367d75 | |||
0b2701ade2 | |||
1ac288d286 | |||
516bc73092 | |||
4088abef68 | |||
f6cefc3f5c | |||
202e4b90e1 | |||
ee89bf0722 | |||
876d21300a | |||
0ca5b7a79f | |||
5d0ee43921 | |||
cc523a3c0b | |||
2787998d32 | |||
38f6c95059 | |||
cc03b631ff | |||
a3c77fb685 | |||
3817e28960 | |||
c3a78b1ea3 | |||
42877236c8 | |||
6e87f3539c | |||
7704ea4b68 |
@ -8,8 +8,7 @@ Listen 8080
|
||||
LogLevel notice
|
||||
|
||||
<Directory /home/ubuntu/mailpoet/wordpress>
|
||||
AllowOverride All
|
||||
Allow from All
|
||||
Require all granted
|
||||
</Directory>
|
||||
</VirtualHost>
|
||||
|
||||
|
8
.circle_ci/fake-sendmail.rb
Executable file
@ -0,0 +1,8 @@
|
||||
#!/usr/bin/ruby
|
||||
path = "/tmp"
|
||||
Dir.mkdir(path) if !File.exists?(path)
|
||||
File.open("#{path}/mailpoet-#{Time.now.to_f}.txt", "w") do |f|
|
||||
sleep 5
|
||||
f.puts ARGV.inspect
|
||||
$stdin.each_line { |line| f.puts line }
|
||||
end
|
3
.circle_ci/mailpoet_php.ini
Normal file
@ -0,0 +1,3 @@
|
||||
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
|
||||
; http://php.net/sendmail-path
|
||||
sendmail_path = /home/ubuntu/mailpoet/.circle_ci/fake-sendmail.rb
|
@ -13,4 +13,7 @@ WP_TEST_MAILER_MAILPOET_API=""
|
||||
WP_TEST_MAILER_SENDGRID_API=""
|
||||
WP_TEST_MAILER_SMTP_HOST=""
|
||||
WP_TEST_MAILER_SMTP_LOGIN=""
|
||||
WP_TEST_MAILER_SMTP_PASSWORD=""
|
||||
WP_TEST_MAILER_SMTP_PASSWORD=""
|
||||
WP_SVN_USERNAME=""
|
||||
WP_SVN_PASSWORD=""
|
||||
WP_TRANSIFEX_API_TOKEN=""
|
3
.eslintignore
Normal file
@ -0,0 +1,3 @@
|
||||
**/vendor/**
|
||||
**/testBundles/**
|
||||
assets/js/src/newsletter_editor/tinymce/wplink/plugin.js
|
100
.eslintrc.es5.json
Normal file
@ -0,0 +1,100 @@
|
||||
{
|
||||
"extends": "airbnb/legacy",
|
||||
"env": {
|
||||
"amd": true,
|
||||
"browser": true
|
||||
},
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 5
|
||||
},
|
||||
"rules": {
|
||||
"import/no-amd": 0,
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
"comma-dangle": 0,
|
||||
"space-before-function-paren": 0,
|
||||
"prefer-arrow-callback": 0,
|
||||
"no-undef": 0,
|
||||
"key-spacing": 0,
|
||||
"radix": 0,
|
||||
"no-alert": 0,
|
||||
"block-scoped-var": 0,
|
||||
"guard-for-in": 0,
|
||||
"no-prototype-builtins": 0,
|
||||
"no-restricted-syntax": 0,
|
||||
"newline-per-chained-call": 0,
|
||||
"no-useless-concat": 0,
|
||||
"no-multi-spaces": 0,
|
||||
"no-nested-ternary": 0,
|
||||
"semi-spacing": 0,
|
||||
"no-sequences": 0,
|
||||
"no-useless-return": 0,
|
||||
"array-callback-return": 0,
|
||||
"new-cap": 0,
|
||||
"no-return-assign": 0,
|
||||
"no-continue": 0,
|
||||
"no-new": 0,
|
||||
"no-cond-assign": 0,
|
||||
"space-unary-ops": 0,
|
||||
"no-redeclare": 0,
|
||||
"no-console": 0,
|
||||
"no-empty": 0,
|
||||
"no-extra-semi": 0,
|
||||
"no-useless-escape": 0,
|
||||
"comma-spacing": 0,
|
||||
"wrap-iife": 0,
|
||||
"no-unused-expressions": 0,
|
||||
"block-spacing": 0,
|
||||
"computed-property-spacing": 0,
|
||||
"no-plusplus": 0,
|
||||
"array-bracket-spacing": 0,
|
||||
"lines-around-directive": 0,
|
||||
"no-unreachable": 0,
|
||||
"default-case": 0,
|
||||
"no-lonely-if": 0,
|
||||
"space-before-blocks": 0,
|
||||
"no-unneeded-ternary": 0,
|
||||
"no-mixed-operators": 0,
|
||||
"eqeqeq": 0,
|
||||
"space-in-parens": 0,
|
||||
"semi": 0,
|
||||
"max-len": 0,
|
||||
"no-multi-assign": 0,
|
||||
"no-trailing-spaces": 0,
|
||||
"global-require": 0,
|
||||
"no-throw-literal": 0,
|
||||
"no-extra-bind": 0,
|
||||
"one-var-declaration-per-line": 0,
|
||||
"consistent-return": 0,
|
||||
"no-shadow": 0,
|
||||
"no-underscore-dangle": 0,
|
||||
"brace-style": 0,
|
||||
"no-else-return": 0,
|
||||
"no-use-before-define": 0,
|
||||
"one-var": 0,
|
||||
"camelcase": 0,
|
||||
"spaced-comment": 0,
|
||||
"quotes": 0,
|
||||
"padded-blocks": 0,
|
||||
"object-curly-spacing": 0,
|
||||
"strict": 0,
|
||||
"vars-on-top": 0,
|
||||
"no-var": 0,
|
||||
"space-infix-ops": 0,
|
||||
"no-unused-vars": 0,
|
||||
"object-shorthand": 0,
|
||||
"new-parens": 0,
|
||||
"no-param-reassign": 0,
|
||||
"keyword-spacing": 0,
|
||||
"eol-last": 0,
|
||||
"dot-notation": 0,
|
||||
"linebreak-style": 0,
|
||||
"indent": 0,
|
||||
"quote-props": 0,
|
||||
"prefer-template": 0,
|
||||
"func-names": 0
|
||||
}
|
||||
}
|
108
.eslintrc.es6.json
Normal file
@ -0,0 +1,108 @@
|
||||
{
|
||||
"extends": "airbnb",
|
||||
"env": {
|
||||
"amd": true,
|
||||
"browser": true
|
||||
},
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 6,
|
||||
"ecmaFeatures": {
|
||||
"jsx": true
|
||||
}
|
||||
},
|
||||
"rules": {
|
||||
"import/no-amd": 0,
|
||||
|
||||
|
||||
"react/no-multi-comp": 0,
|
||||
"react/sort-comp": 0,
|
||||
"react/jsx-max-props-per-line": 0,
|
||||
"react/prop-types": 0,
|
||||
"react/jsx-first-prop-new-line": 0,
|
||||
"react/jsx-indent-props": 0,
|
||||
"react/no-is-mounted": 0,
|
||||
"react/jsx-no-target-blank": 0,
|
||||
"react/no-render-return-value": 0,
|
||||
"react/jsx-boolean-value": 0,
|
||||
"react/jsx-indent": 0,
|
||||
"react/jsx-no-bind": 0,
|
||||
"react/no-array-index-key": 0,
|
||||
"react/self-closing-comp": 0,
|
||||
"react/jsx-tag-spacing": 0,
|
||||
"react/jsx-closing-bracket-location": 0,
|
||||
"react/no-string-refs": 0,
|
||||
"react/jsx-curly-spacing": 0,
|
||||
"react/no-did-mount-set-state": 0,
|
||||
"react/prefer-stateless-function": 0,
|
||||
|
||||
"jsx-a11y/label-has-for": 0,
|
||||
"jsx-a11y/no-static-element-interactions": 0,
|
||||
"jsx-a11y/alt-text": 0,
|
||||
|
||||
"comma-dangle": 0,
|
||||
"prefer-arrow-callback": 0,
|
||||
"func-names": 0,
|
||||
"space-before-function-paren": 0,
|
||||
"object-shorthand": 0,
|
||||
"no-bitwise": 0,
|
||||
"arrow-body-style": 0,
|
||||
"prefer-template": 0,
|
||||
"eol-last": 0,
|
||||
"no-unused-vars": 0,
|
||||
"no-plusplus": 0,
|
||||
"semi": 0,
|
||||
"keyword-spacing": 0,
|
||||
"default-case": 0,
|
||||
"quote-props": 0,
|
||||
"indent": 0,
|
||||
"prefer-const": 0,
|
||||
"arrow-parens": 0,
|
||||
"array-callback-return": 0,
|
||||
"consistent-return": 0,
|
||||
"no-unreachable": 0,
|
||||
"no-extra-semi": 0,
|
||||
"import/no-unresolved": 0,
|
||||
"import/extensions": 0,
|
||||
"import/no-extraneous-dependencies": 0,
|
||||
"camelcase": 0,
|
||||
"template-curly-spacing": 0,
|
||||
"quotes": 0,
|
||||
"radix": 0,
|
||||
"eqeqeq": 0,
|
||||
"no-lonely-if": 0,
|
||||
"space-unary-ops": 0,
|
||||
"block-scoped-var": 0,
|
||||
"no-extra-bind": 0,
|
||||
"no-multi-spaces": 0,
|
||||
"class-methods-use-this": 0,
|
||||
"key-spacing": 0,
|
||||
"no-multiple-empty-lines": 0,
|
||||
"space-in-parens": 0,
|
||||
"no-case-declarations": 0,
|
||||
"array-bracket-spacing": 0,
|
||||
"newline-per-chained-call": 0,
|
||||
"no-else-return": 0,
|
||||
"max-len": 0,
|
||||
"comma-spacing": 0,
|
||||
"no-useless-concat": 0,
|
||||
"no-unused-expressions": 0,
|
||||
"no-sequences": 0,
|
||||
"no-extra-boolean-cast": 0,
|
||||
"dot-notation": 0,
|
||||
"no-param-reassign": 0,
|
||||
"no-shadow": 0,
|
||||
"one-var": 0,
|
||||
"no-alert": 0,
|
||||
"one-var-declaration-per-line": 0,
|
||||
"no-script-url": 0,
|
||||
"wrap-iife": 0,
|
||||
"no-var": 0,
|
||||
"vars-on-top": 0,
|
||||
"space-infix-ops": 0,
|
||||
"no-irregular-whitespace": 0,
|
||||
"padded-blocks": 0,
|
||||
"no-underscore-dangle": 0,
|
||||
"object-curly-spacing": 0,
|
||||
"no-undef": 0
|
||||
}
|
||||
}
|
47
.eslintrc.tests.json
Normal file
@ -0,0 +1,47 @@
|
||||
{
|
||||
"extends": "airbnb/legacy",
|
||||
"env": {
|
||||
"amd": true,
|
||||
"mocha": true
|
||||
},
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 6
|
||||
},
|
||||
"rules": {
|
||||
"import/no-amd": 0,
|
||||
|
||||
|
||||
|
||||
"no-undef": 0,
|
||||
"one-var": 0,
|
||||
"indent": 0,
|
||||
"linebreak-style": 0,
|
||||
"no-whitespace-before-property": 0,
|
||||
"object-property-newline": 0,
|
||||
"global-require": 0,
|
||||
"semi": 0,
|
||||
"keyword-spacing": 0,
|
||||
"no-bitwise": 0,
|
||||
"no-multi-assign": 0,
|
||||
"newline-per-chained-call": 0,
|
||||
"no-spaced-func": 0,
|
||||
"func-call-spacing": 0,
|
||||
"max-len": 0,
|
||||
"space-unary-ops": 0,
|
||||
"quotes": 0,
|
||||
"no-unused-vars": 0,
|
||||
"no-unused-expressions": 0,
|
||||
"no-underscore-dangle": 0,
|
||||
"quote-props": 0,
|
||||
"no-shadow": 0,
|
||||
"padded-blocks": 0,
|
||||
"comma-dangle": 0,
|
||||
"vars-on-top": 0,
|
||||
"space-before-blocks": 0,
|
||||
"object-curly-spacing": 0,
|
||||
"no-param-reassign": 0,
|
||||
"one-var-declaration-per-line": 0,
|
||||
"func-names": 0,
|
||||
"space-before-function-paren": 0
|
||||
}
|
||||
}
|
44
.gitignore
vendored
@ -1,20 +1,24 @@
|
||||
.DS_Store
|
||||
TODO
|
||||
composer.phar
|
||||
/vendor
|
||||
tests/_output/*
|
||||
tests/acceptance.suite.yml
|
||||
tests/_support/_generated/*
|
||||
node_modules
|
||||
.env
|
||||
npm-debug.log
|
||||
!tasks/**
|
||||
/views/cache/**
|
||||
temp
|
||||
.idea
|
||||
mailpoet.zip
|
||||
tests/javascript/testBundles
|
||||
assets/css/*.css
|
||||
assets/js/*.js
|
||||
.vagrant
|
||||
lang
|
||||
.DS_Store
|
||||
TODO
|
||||
composer.phar
|
||||
/vendor
|
||||
tests/_output/*
|
||||
tests/acceptance.suite.yml
|
||||
tests/_support/_generated/*
|
||||
node_modules
|
||||
.env
|
||||
npm-debug.log
|
||||
!tasks/**
|
||||
/views/cache/**
|
||||
temp
|
||||
.idea
|
||||
mailpoet.zip
|
||||
tests/javascript/testBundles
|
||||
assets/css/*.css
|
||||
assets/css/*.json
|
||||
assets/js/*.js
|
||||
assets/js/*.json
|
||||
.vagrant
|
||||
lang
|
||||
.mp_svn
|
||||
/nbproject/
|
9
.tx/config
Normal file
@ -0,0 +1,9 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
|
||||
[mp3.mailpoet]
|
||||
source_file = lang/mailpoet.pot
|
||||
file_filter = lang/mailpoet-<lang>.po
|
||||
source_lang = en_US
|
||||
type = PO
|
||||
minimum_perc = 75
|
@ -5,30 +5,32 @@
|
||||
- CamelCase for classes.
|
||||
- camelCase for methods.
|
||||
- snake_case for variables and class properties.
|
||||
- Max line length at 80 chars.
|
||||
- Classes can be no longer than 100 LOC.
|
||||
- Methods can be no longer than 5 LOC.
|
||||
- Pass no more than 4 parameters/hash keys into a method.
|
||||
- Composition over Inheritance.
|
||||
- Comments are a code smell.
|
||||
- Routes can instantiate only one object.
|
||||
- Comments are a code smell. If you need to use a comment - see if same idea can be achieved by more clearly expressing code.
|
||||
- Require other classes with 'use' at the beginning of the class file.
|
||||
- Do not specify 'public' if method is public, it's implicit.
|
||||
- Always use guard clauses.
|
||||
- Ensure compatibility with PHP 5.3 and newer versions.
|
||||
- Cover your code in tests.
|
||||
|
||||
Recommendations:
|
||||
- Max line length at 80 chars.
|
||||
- Keep classes under 100 LOC.
|
||||
- Keep methods under 10 LOC.
|
||||
- Pass no more than 4 parameters/hash keys into a method.
|
||||
- Keep Pull Requests small, under 100 LOC changed.
|
||||
|
||||
## Git flow.
|
||||
- Do not commit to master.
|
||||
- Open a short-living feature branch.
|
||||
- Open a pull request.
|
||||
- Add close #issue in pull request description.
|
||||
- Add Jira issue reference in the title of the Pull Request.
|
||||
- Work on the pull request.
|
||||
- Wait for confirmation before merging to master.
|
||||
- No one will accept a pull request that doesn't have 100% test coverage.
|
||||
- Wait for review and confirmation from another developer before merging to master.
|
||||
- Commit title no more than 80 chars, empty line after.
|
||||
- Commit description as long as you want, 80 chars wrap.
|
||||
- Keep the GitHub open issues count at less than 10.
|
||||
|
||||
## Issues creation.
|
||||
- Issues are managed on Jira.
|
||||
- Discuss issues on public Slack chats, discuss code in pull requests.
|
||||
- Organize features on Trello.
|
||||
- Open a small github issue only when it has been discussed.
|
||||
- Open a small Jira issue only when it has been discussed.
|
||||
|
52
README.md
@ -46,11 +46,26 @@ $ ./do compile:all
|
||||
$ ./do test:unit
|
||||
```
|
||||
|
||||
- JS tests (using Mocha):
|
||||
```sh
|
||||
$ ./do test:javascript
|
||||
```
|
||||
|
||||
- Debug tests:
|
||||
```sh
|
||||
$ ./do test:debug
|
||||
```
|
||||
|
||||
- Code linters and quality checkers:
|
||||
```sh
|
||||
$ ./do qa
|
||||
```
|
||||
|
||||
- Javascript linter:
|
||||
```sh
|
||||
$ ./do lint:javascript
|
||||
```
|
||||
|
||||
# CSS
|
||||
- [Stylus](https://learnboost.github.io/stylus/)
|
||||
- [Nib extension](http://tj.github.io/nib/)
|
||||
@ -109,6 +124,7 @@ Once javascript is compiled with `./do compile:javascript`, your module will be
|
||||
```php
|
||||
__()
|
||||
_n()
|
||||
_x()
|
||||
```
|
||||
|
||||
```html
|
||||
@ -128,3 +144,39 @@ _n()
|
||||
- Handlebars.
|
||||
|
||||
You can use Twig i18n functions in Handlebars, just load your template from a Twig view.
|
||||
|
||||
# Build
|
||||
|
||||
To build a plugin , run `./build.sh`.
|
||||
|
||||
Some build process steps are described below (their dependencies etc.).
|
||||
|
||||
## packtranslations step
|
||||
|
||||
This step imports translations from Transifex and generates MO files. It requires:
|
||||
* `tx` client: https://docs.transifex.com/client/installing-the-client
|
||||
* `msgfmt` command (from Gettext package)
|
||||
Finally , a `WP_TRANSIFEX_API_TOKEN` environment variable should be initialized with a valid key.
|
||||
|
||||
# Publish
|
||||
|
||||
The `publish` command currently does the following:
|
||||
* Pushes translations POT file to Transifex;
|
||||
* Publishes the release in SVN.
|
||||
|
||||
Before you run it, you need to:
|
||||
1. Ensure there is an up-to-date local copy of MailPoet SVN repository in `.mp_svn` directory by running `./do svn:checkout`.
|
||||
2. Have all your features merged in Git `master`, your `mailpoet.php` and `readme.txt` tagged with a new version.
|
||||
3. Run `./build.sh` to produce a `mailpoet.zip` distributable archive.
|
||||
|
||||
Everything's ready? Then run `./do publish`.
|
||||
If the job goes fine, you'll get a message like this:
|
||||
```
|
||||
Go to '.mp_svn' and run 'svn ci -m "Release 3.0.0-beta.9"' to publish the
|
||||
release
|
||||
|
||||
Run 'svn copy ...' to tag the release
|
||||
```
|
||||
It's quite literal: you can review the changes to be pushed and if you're satisfied, run the suggested command to finish the release publishing process.
|
||||
|
||||
If you're confident, execute `./do publish --force` and your release will be published to the remote SVN repository without manual intervention (automatically). For easier authentication you might want to set `WP_SVN_USERNAME` and `WP_SVN_PASSWORD` environment variables.
|
||||
|
268
RoboFile.php
@ -1,16 +1,22 @@
|
||||
<?php
|
||||
|
||||
class RoboFile extends \Robo\Tasks {
|
||||
|
||||
function install() {
|
||||
$this->_exec('./composer.phar install');
|
||||
$this->_exec('npm install');
|
||||
return $this->taskExecStack()
|
||||
->stopOnFail()
|
||||
->exec('./composer.phar install')
|
||||
->exec('npm install')
|
||||
->run();
|
||||
}
|
||||
|
||||
function update() {
|
||||
$this->say(getenv('WP_TEST_URL'));
|
||||
$this->_exec('./composer.phar update');
|
||||
$this->_exec('npm update');
|
||||
|
||||
return $this->taskExecStack()
|
||||
->stopOnFail()
|
||||
->exec('./composer.phar update')
|
||||
->exec('npm update')
|
||||
->run();
|
||||
}
|
||||
|
||||
protected function rsearch($folder, $extensions = array()) {
|
||||
@ -60,16 +66,28 @@ class RoboFile extends \Robo\Tasks {
|
||||
$this->_exec('./node_modules/webpack/bin/webpack.js --watch');
|
||||
}
|
||||
|
||||
function compileAll() {
|
||||
$this->compileJs();
|
||||
$this->compileCss();
|
||||
function compileAll($opts = ['env' => null]) {
|
||||
$collection = $this->collectionBuilder();
|
||||
$collection->addCode(function() use ($opts) {
|
||||
return call_user_func(array($this, 'compileJs'), $opts);
|
||||
});
|
||||
$collection->addCode(function() use ($opts) {
|
||||
return call_user_func(array($this, 'compileCss'), $opts);
|
||||
});
|
||||
return $collection->run();
|
||||
}
|
||||
|
||||
function compileJs() {
|
||||
$this->_exec('./node_modules/webpack/bin/webpack.js');
|
||||
function compileJs($opts = ['env' => null]) {
|
||||
$env = ($opts['env']) ?
|
||||
sprintf('./node_modules/cross-env/dist/bin/cross-env.js NODE_ENV="%s"', $opts['env']) :
|
||||
null;
|
||||
return $this->_exec($env . ' ./node_modules/webpack/bin/webpack.js --bail');
|
||||
}
|
||||
|
||||
function compileCss() {
|
||||
function compileCss($opts = ['env' => null]) {
|
||||
// Clean up folder from previous files
|
||||
array_map('unlink', glob("assets/css/*.*"));
|
||||
|
||||
$css_files = array(
|
||||
'assets/css/src/admin.styl',
|
||||
'assets/css/src/newsletter_editor/newsletter_editor.styl',
|
||||
@ -78,7 +96,7 @@ class RoboFile extends \Robo\Tasks {
|
||||
'assets/css/src/importExport.styl'
|
||||
);
|
||||
|
||||
$this->_exec(join(' ', array(
|
||||
$compilation_result = $this->_exec(join(' ', array(
|
||||
'./node_modules/stylus/bin/stylus',
|
||||
'--include ./node_modules',
|
||||
'--include-css',
|
||||
@ -86,20 +104,52 @@ class RoboFile extends \Robo\Tasks {
|
||||
join(' ', $css_files),
|
||||
'-o assets/css/'
|
||||
)));
|
||||
|
||||
// Create manifest file
|
||||
$manifest = [];
|
||||
foreach(glob('assets/css/*.css') as $style) {
|
||||
// Hash and rename styles if production environment
|
||||
if($opts['env'] === 'production') {
|
||||
$hashed_style = sprintf(
|
||||
'%s.%s.css',
|
||||
pathinfo($style)['filename'],
|
||||
substr(md5_file($style), 0, 8)
|
||||
);
|
||||
$manifest[basename($style)] = $hashed_style;
|
||||
rename($style, str_replace(basename($style), $hashed_style, $style));
|
||||
} else {
|
||||
$manifest[basename($style)] = basename($style);
|
||||
}
|
||||
}
|
||||
file_put_contents('assets/css/manifest.json', json_encode($manifest, JSON_PRETTY_PRINT));
|
||||
return $compilation_result;
|
||||
}
|
||||
|
||||
function makepot() {
|
||||
$this->_exec('./node_modules/.bin/grunt makepot'.
|
||||
' --gruntfile '.__DIR__.'/tasks/makepot/makepot.js'.
|
||||
' --base_path '.__DIR__
|
||||
return $this->_exec('./node_modules/.bin/grunt makepot'.
|
||||
' --gruntfile='.__DIR__.'/tasks/makepot/makepot.js'.
|
||||
' --base_path='.__DIR__
|
||||
);
|
||||
}
|
||||
|
||||
function pushpot() {
|
||||
$this->_exec('./node_modules/.bin/grunt pushpot'.
|
||||
' --gruntfile '.__DIR__.'/tasks/makepot/makepot.js'.
|
||||
' --base_path '.__DIR__
|
||||
);
|
||||
return $this->collectionBuilder()
|
||||
->addCode(array($this, 'txinit'))
|
||||
->taskExec('tx push -s')
|
||||
->run();
|
||||
}
|
||||
|
||||
function packtranslations() {
|
||||
return $this->collectionBuilder()
|
||||
->addCode(array($this, 'txinit'))
|
||||
->taskExec('./tasks/pack_translations.sh')
|
||||
->run();
|
||||
}
|
||||
|
||||
function txinit() {
|
||||
// Define WP_TRANSIFEX_API_TOKEN env. variable
|
||||
$this->loadEnv();
|
||||
return $this->_exec('./tasks/transifex_init.sh');
|
||||
}
|
||||
|
||||
function testUnit($opts=['file' => null, 'xml' => false]) {
|
||||
@ -152,22 +202,31 @@ class RoboFile extends \Robo\Tasks {
|
||||
function testDebug() {
|
||||
$this->_exec('vendor/bin/codecept build');
|
||||
$this->loadEnv();
|
||||
$this->_exec('vendor/bin/codecept run unit --debug');
|
||||
return $this->_exec('vendor/bin/codecept run unit --debug');
|
||||
}
|
||||
|
||||
function testFailed() {
|
||||
$this->loadEnv();
|
||||
$this->_exec('vendor/bin/codecept build');
|
||||
$this->_exec('vendor/bin/codecept run -g failed');
|
||||
return $this->_exec('vendor/bin/codecept run -g failed');
|
||||
}
|
||||
|
||||
function qa() {
|
||||
$this->qaLint();
|
||||
$this->qaCodeSniffer('all');
|
||||
$collection = $this->collectionBuilder();
|
||||
$collection->addCode(array($this, 'qaLint'));
|
||||
$collection->addCode(function() {
|
||||
return $this->qaCodeSniffer('all');
|
||||
});
|
||||
$collection->addCode(array($this, 'qaLintJavascript'));
|
||||
return $collection->run();
|
||||
}
|
||||
|
||||
function qaLint() {
|
||||
$this->_exec('./tasks/php_lint.sh lib/ tests/ mailpoet.php');
|
||||
return $this->_exec('./tasks/php_lint.sh lib/ tests/ mailpoet.php');
|
||||
}
|
||||
|
||||
function qaLintJavascript() {
|
||||
return $this->_exec('npm run lint');
|
||||
}
|
||||
|
||||
function qaCodeSniffer($severity='errors') {
|
||||
@ -176,18 +235,173 @@ class RoboFile extends \Robo\Tasks {
|
||||
} else {
|
||||
$severityFlag = '-n';
|
||||
}
|
||||
$this->_exec(
|
||||
return $this->_exec(
|
||||
'./vendor/bin/phpcs '.
|
||||
'--standard=./tasks/code_sniffer/MailPoet '.
|
||||
'--ignore=./lib/Util/Sudzy/*,./lib/Util/CSS.php,./lib/Util/XLSXWriter.php,'.
|
||||
'./lib/Config/PopulatorData/Templates/* '.
|
||||
'./lib/Util/pQuery/*,./lib/Config/PopulatorData/Templates/* '.
|
||||
'lib/ '.
|
||||
$severityFlag
|
||||
);
|
||||
}
|
||||
|
||||
function svnCheckout() {
|
||||
$svn_dir = ".mp_svn";
|
||||
|
||||
$collection = $this->collectionBuilder();
|
||||
|
||||
// Clean up the SVN dir for faster shallow checkout
|
||||
if(file_exists($svn_dir)) {
|
||||
$collection->taskExecStack()
|
||||
->exec('rm -rf ' . $svn_dir);
|
||||
}
|
||||
|
||||
$collection->taskFileSystemStack()
|
||||
->mkdir($svn_dir);
|
||||
|
||||
return $collection->taskExecStack()
|
||||
->stopOnFail()
|
||||
->dir($svn_dir)
|
||||
->exec('svn co https://plugins.svn.wordpress.org/mailpoet/ -N .')
|
||||
->exec('svn up trunk')
|
||||
->exec('svn up assets')
|
||||
->run();
|
||||
}
|
||||
|
||||
function svnPublish($opts = ['force' => false]) {
|
||||
$this->loadWPFunctions();
|
||||
|
||||
$svn_dir = ".mp_svn";
|
||||
$plugin_data = get_plugin_data('mailpoet.php', false, false);
|
||||
$plugin_version = $plugin_data['Version'];
|
||||
$plugin_dist_name = sanitize_title_with_dashes($plugin_data['Name']);
|
||||
$plugin_dist_file = $plugin_dist_name . '.zip';
|
||||
|
||||
$this->say('Publishing version: ' . $plugin_version);
|
||||
|
||||
// Sanity checks
|
||||
if(!is_readable($plugin_dist_file)) {
|
||||
$this->say("Failed to access " . $plugin_dist_file);
|
||||
return;
|
||||
} elseif(!file_exists($svn_dir . "/.svn/")) {
|
||||
$this->say("$svn_dir/.svn/ dir not found, is it a SVN repository?");
|
||||
return;
|
||||
} elseif(file_exists($svn_dir . "/tags/" . $plugin_version)) {
|
||||
$this->say("A SVN tag already exists: " . $plugin_version);
|
||||
return;
|
||||
}
|
||||
|
||||
$collection = $this->collectionBuilder();
|
||||
|
||||
// Clean up tmp dirs if the previous run was halted
|
||||
if(file_exists("$svn_dir/trunk_new") || file_exists("$svn_dir/trunk_old")) {
|
||||
$collection->taskFileSystemStack()
|
||||
->stopOnFail()
|
||||
->remove(array("$svn_dir/trunk_new", "$svn_dir/trunk_old"));
|
||||
}
|
||||
|
||||
// Extract the distributable zip to tmp trunk dir
|
||||
$collection->taskExtract($plugin_dist_file)
|
||||
->to("$svn_dir/trunk_new")
|
||||
->preserveTopDirectory(false);
|
||||
|
||||
// Rename current trunk
|
||||
if(file_exists("$svn_dir/trunk")) {
|
||||
$collection->taskFileSystemStack()
|
||||
->rename("$svn_dir/trunk", "$svn_dir/trunk_old");
|
||||
}
|
||||
|
||||
// Replace old trunk with a new one
|
||||
$collection->taskFileSystemStack()
|
||||
->stopOnFail()
|
||||
->rename("$svn_dir/trunk_new", "$svn_dir/trunk")
|
||||
->remove("$svn_dir/trunk_old");
|
||||
|
||||
// Add new repository assets
|
||||
$collection->taskFileSystemStack()
|
||||
->mirror('./plugin_repository/assets', "$svn_dir/assets_new");
|
||||
|
||||
// Rename current assets folder
|
||||
if(file_exists("$svn_dir/assets")) {
|
||||
$collection->taskFileSystemStack()
|
||||
->rename("$svn_dir/assets", "$svn_dir/assets_old");
|
||||
}
|
||||
|
||||
// Replace old assets with new ones
|
||||
$collection->taskFileSystemStack()
|
||||
->stopOnFail()
|
||||
->rename("$svn_dir/assets_new", "$svn_dir/assets")
|
||||
->remove("$svn_dir/assets_old");
|
||||
|
||||
// Windows compatibility
|
||||
$awkCmd = '{print " --force \""$2"\""}';
|
||||
// Mac OS X compatibility
|
||||
$xargsFlag = (stripos(PHP_OS, 'Darwin') !== false) ? '' : '-r';
|
||||
|
||||
$collection->taskExecStack()
|
||||
->stopOnFail()
|
||||
// Set SVN repo as working directory
|
||||
->dir($svn_dir)
|
||||
// Remove files from SVN repo that have already been removed locally
|
||||
->exec("svn st | grep ^! | awk '$awkCmd' | xargs $xargsFlag svn rm")
|
||||
// Recursively add files to SVN that haven't been added yet
|
||||
->exec("svn add --force * --auto-props --parents --depth infinity -q");
|
||||
|
||||
$result = $collection->run();
|
||||
|
||||
if($result->wasSuccessful()) {
|
||||
// Run or suggest release command depending on a flag
|
||||
$repo_url = "https://plugins.svn.wordpress.org/$plugin_dist_name";
|
||||
$release_cmd = "svn ci -m \"Release $plugin_version\"";
|
||||
$tag_cmd = "svn copy $repo_url/trunk $repo_url/tags/$plugin_version -m \"Tag $plugin_version\"";
|
||||
if(!empty($opts['force'])) {
|
||||
$svn_login = getenv('WP_SVN_USERNAME');
|
||||
$svn_password = getenv('WP_SVN_PASSWORD');
|
||||
if ($svn_login && $svn_password) {
|
||||
$release_cmd .= " --username $svn_login --password $svn_password";
|
||||
} else {
|
||||
$release_cmd .= ' --force-interactive';
|
||||
}
|
||||
$result = $this->taskExecStack()
|
||||
->stopOnFail()
|
||||
->dir($svn_dir)
|
||||
->exec($release_cmd)
|
||||
->exec($tag_cmd)
|
||||
->run();
|
||||
} else {
|
||||
$this->yell(
|
||||
"Go to '$svn_dir' and run '$release_cmd' to publish the release"
|
||||
);
|
||||
$this->yell(
|
||||
"Run '$tag_cmd' to tag the release"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function publish($opts = ['force' => false]) {
|
||||
return $this->collectionBuilder()
|
||||
->addCode(array($this, 'pushpot'))
|
||||
->addCode(function () use ($opts) {
|
||||
return $this->svnPublish($opts);
|
||||
})
|
||||
->run();
|
||||
}
|
||||
|
||||
protected function loadEnv() {
|
||||
$dotenv = new Dotenv\Dotenv(__DIR__);
|
||||
$dotenv->load();
|
||||
}
|
||||
}
|
||||
|
||||
protected function loadWPFunctions() {
|
||||
$this->loadEnv();
|
||||
define('ABSPATH', getenv('WP_TEST_PATH') . '/');
|
||||
define('WPINC', 'wp-includes');
|
||||
require_once(ABSPATH . WPINC . '/functions.php');
|
||||
require_once(ABSPATH . WPINC . '/formatting.php');
|
||||
require_once(ABSPATH . WPINC . '/plugin.php');
|
||||
require_once(ABSPATH . 'wp-admin/includes/plugin.php');
|
||||
}
|
||||
}
|
@ -22,3 +22,7 @@
|
||||
@require 'progress_bar'
|
||||
|
||||
@require 'subscribers'
|
||||
|
||||
@require 'pages'
|
||||
|
||||
@require 'mp2migrator'
|
||||
|
@ -1,3 +1,15 @@
|
||||
$box-width = 425px
|
||||
$box-height = 150px
|
||||
$thumbnail-width = $box-height
|
||||
$thumbnail-height = $thumbnail-width
|
||||
$box-description-space-between-heading-and-paragraph = 5px
|
||||
$box-description-height = 110px
|
||||
$box-description-text-height = $box-description-height - $box-description-space-between-heading-and-paragraph
|
||||
$box-heading-line-height = $box-description-text-height / 4
|
||||
$box-heading-font-size = $box-heading-line-height * 5/7
|
||||
$box-description-line-height = $box-heading-line-height / 2
|
||||
$box-description-font-size = $box-description-line-height
|
||||
|
||||
.mailpoet_boxes.mailpoet_boxes_loading
|
||||
opacity: 0.2
|
||||
|
||||
@ -6,8 +18,8 @@
|
||||
position: relative
|
||||
padding: 15px
|
||||
margin: 15px 25px 0 0
|
||||
width: 425px
|
||||
height: 150px
|
||||
width: $box-width
|
||||
height: $box-height
|
||||
border: 1px solid #dedede
|
||||
background-color: #fff
|
||||
|
||||
@ -18,15 +30,15 @@
|
||||
background-position: center
|
||||
color: #222
|
||||
border: 1px solid #ccc
|
||||
width: 150px
|
||||
height: 150px
|
||||
width: $thumbnail-height
|
||||
height: $thumbnail-width
|
||||
margin-right: 15px
|
||||
float: left
|
||||
overflow: hidden
|
||||
position: relative
|
||||
|
||||
img
|
||||
min-width: 150px
|
||||
min-width: $thumbnail-width
|
||||
height: auto
|
||||
width: 110%
|
||||
position: relative
|
||||
@ -60,20 +72,21 @@
|
||||
.mailpoet_boxes .mailpoet_description
|
||||
float:left
|
||||
width: 245px
|
||||
max-height: calc(115px - 2em)
|
||||
padding-bottom: 2em
|
||||
max-height: $box-description-height
|
||||
padding-bottom: 0
|
||||
overflow: hidden
|
||||
|
||||
h3
|
||||
margin: 0 0 0.7em 0
|
||||
margin: 0 0 $box-description-space-between-heading-and-paragraph 0
|
||||
overflow: hidden
|
||||
max-width: 210px
|
||||
line-height: 1.4em
|
||||
line-height: $box-heading-line-height
|
||||
font-size: $box-heading-font-size
|
||||
|
||||
p
|
||||
font-size: 13px
|
||||
line-height: 1.5
|
||||
margin: 1em 0
|
||||
font-size: $box-description-font-size
|
||||
line-height: $box-description-line-height
|
||||
margin: 0
|
||||
|
||||
.mailpoet_boxes .mailpoet_actions
|
||||
position: absolute
|
||||
|
@ -17,6 +17,10 @@ a:focus
|
||||
.mailpoet_hidden
|
||||
display: none
|
||||
|
||||
// add margins to a div
|
||||
.mailpoet_spaced_block
|
||||
margin: 1em 0
|
||||
|
||||
// select 2
|
||||
.select2-container
|
||||
width: 25em !important
|
||||
|
@ -1,3 +1,53 @@
|
||||
$excellent-badge-color = #2993ab
|
||||
$good-badge-color = #f0b849
|
||||
$bad-badge-color = #d54e21
|
||||
$green-badge-color = #55bd56
|
||||
|
||||
#newsletters_container
|
||||
h2.nav-tab-wrapper
|
||||
margin-bottom: 1rem
|
||||
margin-bottom: 1rem
|
||||
|
||||
.mailpoet_stats_text
|
||||
font-size: 14px
|
||||
font-weight: 600;
|
||||
|
||||
.mailpoet_stat
|
||||
|
||||
&_excellent
|
||||
color: $excellent-badge-color
|
||||
|
||||
&_good
|
||||
color: $good-badge-color
|
||||
|
||||
&_bad
|
||||
color: $bad-badge-color
|
||||
|
||||
&_hidden
|
||||
display: none
|
||||
|
||||
&_link_small
|
||||
text-decoration: underline !important
|
||||
font-size: 0.75rem
|
||||
|
||||
.mailpoet_badge
|
||||
padding: 4px 6px 3px 6px
|
||||
color: #FFFFFF
|
||||
margin-right: 4px
|
||||
text-transform: uppercase
|
||||
font-size: 0.5625rem
|
||||
font-weight: 500
|
||||
border-radius: 3px
|
||||
letter-spacing: 1px
|
||||
vertical-align: middle
|
||||
|
||||
&_excellent
|
||||
background: $excellent-badge-color
|
||||
|
||||
&_good
|
||||
background: $good-badge-color
|
||||
|
||||
&_bad
|
||||
background: $bad-badge-color
|
||||
|
||||
&_green
|
||||
background: $green-badge-color
|
||||
|
33
assets/css/src/mp2migrator.styl
Normal file
@ -0,0 +1,33 @@
|
||||
#logger
|
||||
width: 100%
|
||||
height: 300px
|
||||
background-color: transparent
|
||||
border: 0
|
||||
border-top: 1px #aba9a9 solid
|
||||
padding: 2px
|
||||
overflow: scroll
|
||||
resize: both
|
||||
font-size: 0.85em
|
||||
margin-top: 20px
|
||||
|
||||
#progressbar
|
||||
width: 50%
|
||||
background-color: #d8d8d8
|
||||
border-radius: 5px
|
||||
|
||||
progressbar_color = #fecf23
|
||||
progressbar_gradient_to_color = #fd9215
|
||||
|
||||
.ui-progressbar .ui-progressbar-value
|
||||
height: 100%
|
||||
background-color: progressbar_color
|
||||
background-image: linear-gradient(to bottom, progressbar_color, progressbar_gradient_to_color)
|
||||
border-radius: 3px
|
||||
box-shadow: 0 1px 0 rgba(255,255,255,0.5) inset
|
||||
border 0
|
||||
|
||||
.mailpoet_progress_label
|
||||
font-size: 15px
|
||||
|
||||
.error_msg
|
||||
color: #f00
|
@ -9,12 +9,13 @@
|
||||
background: rgba(255, 255, 255, 0)
|
||||
transition: background .15s ease-out
|
||||
|
||||
&:hover
|
||||
.mailpoet_automated_latest_content_block:hover &
|
||||
background: rgba(255, 255, 255, 0.7)
|
||||
cursor: pointer
|
||||
|
||||
.mailpoet_automated_latest_content_block_posts
|
||||
overflow: auto
|
||||
pointer-events: none
|
||||
|
||||
& > .mailpoet_block
|
||||
width: 100%
|
||||
|
@ -34,7 +34,7 @@ $block-text-line-height = $text-line-height
|
||||
position: relative
|
||||
line-height: $block-text-line-height
|
||||
|
||||
p, h1, h2, h3, h4, h5, h6
|
||||
h1, h2, h3, h4, h5, h6
|
||||
line-height: $block-text-line-height
|
||||
padding: 0
|
||||
margin: 0
|
||||
@ -44,9 +44,15 @@ $block-text-line-height = $text-line-height
|
||||
h1, h2, h3, h4, h5, h6
|
||||
margin-bottom: 0.3em
|
||||
|
||||
p
|
||||
p:not(.mailpoet_wp_post)
|
||||
margin-top: 0
|
||||
margin-bottom: 0
|
||||
padding: 0
|
||||
margin: 0
|
||||
|
||||
p
|
||||
line-height: $block-text-line-height
|
||||
font-style: normal
|
||||
font-weight: normal
|
||||
|
||||
ul
|
||||
|
@ -131,6 +131,7 @@ body
|
||||
display: none
|
||||
|
||||
.wrap > .mailpoet_notice,
|
||||
.notice
|
||||
.update-nag
|
||||
margin-left: 2px + 15px !important
|
||||
|
||||
|
227
assets/css/src/pages.styl
Normal file
@ -0,0 +1,227 @@
|
||||
/*
|
||||
Based on /wp-admin/css/about.css of WP 4.7.
|
||||
This is to make MailPoet pages independent of the WordPress
|
||||
About page styles that may differ across WP versions.
|
||||
*/
|
||||
|
||||
.mailpoet-about-wrap
|
||||
position: relative
|
||||
margin: 25px 40px 0 20px
|
||||
max-width: 1050px /* readability */
|
||||
font-size: 15px
|
||||
|
||||
div.updated, div.error, .notice
|
||||
display: none !important
|
||||
|
||||
hr
|
||||
border: 0
|
||||
height: 0
|
||||
margin: 0
|
||||
border-top: 1px solid rgba(0, 0, 0, 0.1)
|
||||
|
||||
img
|
||||
margin: 0
|
||||
max-width: 100%
|
||||
height: auto
|
||||
vertical-align: middle
|
||||
|
||||
.mailpoet-logo
|
||||
position: absolute
|
||||
top: .2em
|
||||
right: 0;
|
||||
|
||||
.nav-tab
|
||||
padding-right: 15px
|
||||
padding-left: 15px
|
||||
font-size: 18px
|
||||
|
||||
p
|
||||
line-height: 1.5
|
||||
font-size: 14px
|
||||
|
||||
.feature-section p
|
||||
max-width: 55em
|
||||
margin-left: auto
|
||||
margin-right: auto
|
||||
|
||||
h1
|
||||
margin: 0.2em 200px 0 0
|
||||
padding: 0
|
||||
color: #32373c
|
||||
line-height: 1.2em
|
||||
font-size: 2.8em
|
||||
font-weight: 400
|
||||
|
||||
h2
|
||||
margin: 40px 0 .6em
|
||||
font-size: 2.7em
|
||||
line-height: 1.3
|
||||
font-weight: 300
|
||||
text-align: center
|
||||
|
||||
h3
|
||||
margin: 1.25em 0 .6em
|
||||
font-size: 1.4em
|
||||
line-height: 1.5
|
||||
|
||||
h4
|
||||
color: #23282d
|
||||
|
||||
.about-description
|
||||
.about-text
|
||||
margin-top: 1.4em
|
||||
font-weight: 400
|
||||
line-height: 1.6em
|
||||
font-size: 19px
|
||||
|
||||
.about-text
|
||||
margin: 1em 200px 1em 0
|
||||
min-height: 60px
|
||||
color: #555d66
|
||||
|
||||
[class$=col]
|
||||
.col
|
||||
float: left
|
||||
position: relative
|
||||
|
||||
.two-col
|
||||
.col
|
||||
margin-right: 4.799999999%
|
||||
width: 47.6%
|
||||
|
||||
.two-col
|
||||
img
|
||||
margin-bottom: 1.5em
|
||||
|
||||
.feature-section
|
||||
&.two-col
|
||||
.col
|
||||
display: inline-block
|
||||
float: none
|
||||
margin-top: 1em
|
||||
margin-right: 4.799999999%
|
||||
width: calc( 47.6% - 4px )
|
||||
vertical-align: top
|
||||
|
||||
.three-col
|
||||
.col
|
||||
margin-right: 4.999999999%
|
||||
width: 29.95%
|
||||
|
||||
.two-col .col:nth-of-type(2n)
|
||||
.three-col .col:nth-of-type(3n)
|
||||
margin-right: 0
|
||||
|
||||
.feature-section
|
||||
&.two-col
|
||||
h3
|
||||
margin-top: 0
|
||||
|
||||
.feature-section
|
||||
h4
|
||||
margin: 1.4em 0 0.6em 0
|
||||
font-size: 1em
|
||||
|
||||
.feature-section
|
||||
p
|
||||
margin-top: 0.6em
|
||||
|
||||
.lead-description
|
||||
font-size: 1.5em
|
||||
text-align: center
|
||||
|
||||
.two-col-text
|
||||
column-count: 2
|
||||
column-gap: 40px
|
||||
|
||||
.two-col-text
|
||||
p:first-of-type
|
||||
margin-top: 0
|
||||
|
||||
.headline-feature
|
||||
&.feature-video
|
||||
position: relative
|
||||
margin: 40px 0
|
||||
padding-bottom: 56.25%
|
||||
width: 100%
|
||||
max-width: 100%
|
||||
height: 0
|
||||
text-align: center
|
||||
|
||||
.feature-video
|
||||
embed
|
||||
position: absolute
|
||||
top: 0
|
||||
left: 0
|
||||
width: 100%
|
||||
height: 100%
|
||||
|
||||
.featured-image
|
||||
text-align: center
|
||||
|
||||
.feature-section
|
||||
overflow: hidden
|
||||
padding: 0 0 40px
|
||||
|
||||
.feature-section
|
||||
&.no-heading
|
||||
padding-top: 35px
|
||||
|
||||
.headline-feature
|
||||
margin: 0 auto
|
||||
max-width: 80%
|
||||
|
||||
.feature-section
|
||||
.media-container
|
||||
overflow: hidden
|
||||
|
||||
.feature-section
|
||||
img
|
||||
margin-bottom: 1em
|
||||
|
||||
.embed-container
|
||||
text-align: center
|
||||
|
||||
.embed-container
|
||||
iframe
|
||||
max-width: 100%
|
||||
|
||||
.wp-embedded-content
|
||||
max-width: 100%
|
||||
|
||||
.feature-section
|
||||
.col
|
||||
margin-top: 40px
|
||||
|
||||
.changelog
|
||||
margin-bottom: 40px
|
||||
|
||||
.changelog
|
||||
&.feature-section
|
||||
.col
|
||||
margin-top: 40px
|
||||
|
||||
@media screen and (max-width: 782px)
|
||||
.two-col-text
|
||||
column-count: 1
|
||||
.three-col img
|
||||
display: block
|
||||
margin: 0 auto
|
||||
|
||||
@media only screen and (max-width: 500px)
|
||||
margin-right: 20px
|
||||
margin-left: 10px
|
||||
h1
|
||||
.about-text
|
||||
margin-right: 0
|
||||
.about-text
|
||||
margin-bottom: 0.25em
|
||||
.mailpoet-logo
|
||||
position: relative
|
||||
margin: 1em 0
|
||||
width: 100%
|
||||
text-align: center
|
||||
.two-col .col
|
||||
.three-col .col
|
||||
width: 100% !important
|
||||
float: none !important
|
@ -4,6 +4,7 @@
|
||||
padding: 0
|
||||
width: 100%
|
||||
margin: 0
|
||||
margin-bottom: 10px
|
||||
border-radius: 5px
|
||||
position: relative
|
||||
|
||||
@ -25,5 +26,5 @@
|
||||
|
||||
.mailpoet_progress_complete
|
||||
.mailpoet_progress_bar
|
||||
background-color: #fecf23
|
||||
background-image: linear-gradient(top, #fecf23, #fd9215)
|
||||
background-color: hsla(191, 78%, 80%, 1)
|
||||
background-image: linear-gradient(top, hsla(191, 78%, 80%, 1), hsla(191, 76%, 67%, 1))
|
||||
|
@ -15,13 +15,12 @@
|
||||
padding 15px 15px 0 15px
|
||||
margin 0 25px 25px 0
|
||||
width 300px
|
||||
height 250px
|
||||
height 300px
|
||||
border 1px solid #dedede
|
||||
background-color #fff
|
||||
h3
|
||||
text-align center
|
||||
height 54px
|
||||
line-height 54px
|
||||
font-size 1.5em
|
||||
.mailpoet_description
|
||||
font-size 14px
|
||||
@ -39,6 +38,7 @@
|
||||
font-weight bold
|
||||
.mailpoet_active
|
||||
.mailpoet_status
|
||||
background-color #088b00
|
||||
span
|
||||
visibility visible
|
||||
#mailpoet_mta_activate
|
||||
@ -52,6 +52,15 @@
|
||||
.button-secondary
|
||||
margin 0 -6px -4px 0
|
||||
|
||||
// premium key
|
||||
.mailpoet_key
|
||||
&_valid
|
||||
&::before
|
||||
content '✔ '
|
||||
&_invalid
|
||||
&::before
|
||||
content: '✗ '
|
||||
|
||||
// responsive
|
||||
@media screen and (max-width: 782px)
|
||||
.form-table th
|
||||
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 779 B |
BIN
assets/img/datepicker/animated-overlay.gif
Executable file → Normal file
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 985 B |
BIN
assets/img/datepicker/ui-bg_diagonals-thick_18_b81900_40x40.png
Executable file → Normal file
Before Width: | Height: | Size: 418 B After Width: | Height: | Size: 140 B |
BIN
assets/img/datepicker/ui-bg_diagonals-thick_20_666666_40x40.png
Executable file → Normal file
Before Width: | Height: | Size: 312 B After Width: | Height: | Size: 140 B |
BIN
assets/img/datepicker/ui-bg_flat_10_000000_40x100.png
Executable file → Normal file
Before Width: | Height: | Size: 205 B After Width: | Height: | Size: 83 B |
BIN
assets/img/datepicker/ui-bg_glass_100_f6f6f6_1x400.png
Executable file → Normal file
Before Width: | Height: | Size: 262 B After Width: | Height: | Size: 85 B |
BIN
assets/img/datepicker/ui-bg_glass_100_fdf5ce_1x400.png
Executable file → Normal file
Before Width: | Height: | Size: 348 B After Width: | Height: | Size: 139 B |
BIN
assets/img/datepicker/ui-bg_glass_65_ffffff_1x400.png
Executable file → Normal file
Before Width: | Height: | Size: 207 B After Width: | Height: | Size: 74 B |
BIN
assets/img/datepicker/ui-bg_gloss-wave_35_f6a828_500x100.png
Executable file → Normal file
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 1.6 KiB |
BIN
assets/img/datepicker/ui-bg_highlight-soft_100_eeeeee_1x100.png
Executable file → Normal file
Before Width: | Height: | Size: 278 B After Width: | Height: | Size: 79 B |
BIN
assets/img/datepicker/ui-bg_highlight-soft_75_ffe45c_1x100.png
Executable file → Normal file
Before Width: | Height: | Size: 328 B After Width: | Height: | Size: 161 B |
BIN
assets/img/datepicker/ui-icons_222222_256x240.png
Executable file → Normal file
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 3.8 KiB |
BIN
assets/img/datepicker/ui-icons_228ef1_256x240.png
Executable file → Normal file
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 3.8 KiB |
BIN
assets/img/datepicker/ui-icons_454545_256x240.png
Executable file → Normal file
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 3.7 KiB |
BIN
assets/img/datepicker/ui-icons_ef8c08_256x240.png
Executable file → Normal file
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 3.8 KiB |
BIN
assets/img/datepicker/ui-icons_ffd27a_256x240.png
Executable file → Normal file
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 3.8 KiB |
BIN
assets/img/datepicker/ui-icons_ffffff_256x240.png
Executable file → Normal file
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 3.8 KiB |
BIN
assets/img/mailpoet_logo_newsletter.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 925 B |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 1016 B After Width: | Height: | Size: 542 B |
Before Width: | Height: | Size: 767 B After Width: | Height: | Size: 423 B |
Before Width: | Height: | Size: 397 B After Width: | Height: | Size: 274 B |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 735 B |
Before Width: | Height: | Size: 678 B After Width: | Height: | Size: 403 B |
Before Width: | Height: | Size: 634 B After Width: | Height: | Size: 389 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 709 B |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 601 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 835 B |
Before Width: | Height: | Size: 683 B After Width: | Height: | Size: 434 B |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 435 B |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 272 B |
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 733 B |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 400 B |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 386 B |
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 706 B |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 603 B |
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 832 B |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 433 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 554 B |
Before Width: | Height: | Size: 909 B After Width: | Height: | Size: 460 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 687 B |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 524 B |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 527 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 687 B |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 618 B |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 718 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 566 B |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 662 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 248 B |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 751 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 552 B |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 344 B |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 776 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 536 B |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 848 B |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 471 B |
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 753 B |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 2.5 KiB |