Form builder to get in touch with visitors, grow your email list and collect payments — Happyforms - Version 1.5.1

Version Description

  • New feature: Table part.
  • Improvement: Legal part now accepts formatting with visual editor, including links and lists.
  • Improvement: Part specific styles were moved to standalone sections in Style step.
  • Improvement: Various improvements to parts CSS and compatibility with themes.
  • Bug fix: Some links in Customize screen sidebar were breaking step-by-step navigation.
  • Bug fix: Checkbox part was accepting invalid submission values.
  • Bug fix: HappyForms link in admin menu bar was returning 404.
Download this release

Release Info

Developer thethemefoundry
Plugin Icon 128x128 Form builder to get in touch with visitors, grow your email list and collect payments — Happyforms
Version 1.5.1
Comparing to
See all releases

Code changes from version 1.5.0 to 1.5.1

Files changed (45) hide show
  1. assets/css/customize.css +36 -0
  2. assets/css/frontend.css +266 -11
  3. assets/js/customize.js +51 -2
  4. assets/js/frontend.js +0 -2
  5. assets/js/frontend/table.js +20 -0
  6. assets/js/parts/part-checkbox.js +1 -1
  7. assets/js/parts/part-legal.js +62 -13
  8. assets/js/parts/part-placeholder.js +1 -1
  9. assets/js/parts/part-radio.js +1 -1
  10. assets/js/parts/part-select.js +2 -2
  11. assets/js/parts/part-table.js +361 -0
  12. assets/svg/icons/table.svg +1 -0
  13. happyforms.php +2 -2
  14. inc/classes/class-form-controller.php +5 -3
  15. inc/classes/class-form-part-library.php +1 -0
  16. inc/classes/class-form-styles.php +54 -0
  17. inc/classes/class-happyforms-plugin.php +1 -1
  18. inc/classes/class-message-controller.php +1 -1
  19. inc/classes/parts/class-part-checkbox.php +2 -3
  20. inc/classes/parts/class-part-legal.php +1 -1
  21. inc/classes/parts/class-part-select.php +1 -0
  22. inc/classes/parts/class-part-table.php +309 -0
  23. inc/helpers/helper-misc.php +8 -2
  24. inc/templates/customize-form-style.php +7 -14
  25. inc/templates/parts/customize-address.php +1 -1
  26. inc/templates/parts/customize-checkbox.php +1 -1
  27. inc/templates/parts/customize-date.php +1 -1
  28. inc/templates/parts/customize-email.php +1 -1
  29. inc/templates/parts/customize-multi-line-text.php +1 -1
  30. inc/templates/parts/customize-number.php +1 -1
  31. inc/templates/parts/customize-phone.php +1 -1
  32. inc/templates/parts/customize-radio.php +1 -1
  33. inc/templates/parts/customize-rating.php +1 -1
  34. inc/templates/parts/customize-scale.php +1 -1
  35. inc/templates/parts/customize-select.php +1 -1
  36. inc/templates/parts/customize-single-line-text.php +1 -1
  37. inc/templates/parts/customize-table.php +110 -0
  38. inc/templates/parts/customize-title.php +1 -1
  39. inc/templates/parts/customize-website-url.php +1 -1
  40. inc/templates/parts/frontend-checkbox.php +1 -1
  41. inc/templates/parts/frontend-legal.php +3 -2
  42. inc/templates/parts/frontend-scale.php +1 -1
  43. inc/templates/parts/frontend-table.php +67 -0
  44. languages/happyforms.pot +405 -322
  45. readme.txt +15 -2
assets/css/customize.css CHANGED
@@ -416,6 +416,38 @@ body.adding-happyforms-parts #customize-preview iframe {
416
  float: left;
417
  }
418
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
419
  .happyforms-part-widget .options {
420
  border: 1px solid #eee;
421
  padding: 5px 10px 10px;
@@ -649,6 +681,10 @@ ul.happyforms-parts-list li[data-part-type="phone"] .happyforms-parts-list-item-
649
  background-image: url(../svg/icons/phone.svg);
650
  }
651
 
 
 
 
 
652
  ul.happyforms-parts-list .happyforms-parts-list-item-title h3 {
653
  margin: 0;
654
  padding: 0 0 5px;
416
  float: left;
417
  }
418
 
419
+ .happyforms-part-widget .tab-links a {
420
+ display: inline-block;
421
+ padding: 2px 8px 4px;
422
+ border: 1px solid #fff;
423
+ border-bottom-color: #eee;
424
+ text-decoration: none;
425
+ }
426
+
427
+ .happyforms-part-widget .tab-links a:active,
428
+ .happyforms-part-widget .tab-links a:focus {
429
+ outline: none;
430
+ box-shadow: none;
431
+ }
432
+
433
+ .happyforms-part-widget .tab-links a.active {
434
+ border: 1px solid #eee;
435
+ border-bottom-color: #fff;
436
+ color: #444;
437
+ }
438
+
439
+ .happyforms-part-widget .tab-content {
440
+ margin-top: -1px;
441
+ }
442
+
443
+ .happyforms-part-widget .tab-content > div {
444
+ display: none;
445
+ }
446
+
447
+ .happyforms-part-widget .tab-content > .active {
448
+ display: block;
449
+ }
450
+
451
  .happyforms-part-widget .options {
452
  border: 1px solid #eee;
453
  padding: 5px 10px 10px;
681
  background-image: url(../svg/icons/phone.svg);
682
  }
683
 
684
+ ul.happyforms-parts-list li[data-part-type="table"] .happyforms-parts-list-item-title:before {
685
+ background-image: url(../svg/icons/table.svg);
686
+ }
687
+
688
  ul.happyforms-parts-list .happyforms-parts-list-item-title h3 {
689
  margin: 0;
690
  padding: 0 0 5px;
assets/css/frontend.css CHANGED
@@ -20,6 +20,10 @@
20
  --happyforms-color-submit-text-hover: #000;
21
  --happyforms-color-rating: #ccc;
22
  --happyforms-color-rating-hover: #f39c00;
 
 
 
 
23
  /* font */
24
  --happyforms-form-title-font-size: 32px;
25
  --happyforms-form-font-weight: normal;
@@ -96,6 +100,10 @@ h3.happyforms-form__title {
96
  }
97
  }
98
 
 
 
 
 
99
  .happyforms-part__label {
100
  display: inline-block;
101
  cursor: pointer;
@@ -133,6 +141,14 @@ h3.happyforms-form__title {
133
  text-align: right;
134
  }
135
 
 
 
 
 
 
 
 
 
136
  .happyforms-part input[type=text],
137
  .happyforms-part input[type=email],
138
  .happyforms-part input[type=tel],
@@ -142,6 +158,7 @@ h3.happyforms-form__title {
142
  width: 100%;
143
  max-width: none;
144
  height: auto !important;
 
145
  padding: 10px;
146
  border-width: 1px;
147
  border-style: solid;
@@ -676,7 +693,8 @@ h3.happyforms-form__title {
676
  }
677
 
678
  .happyforms-part--radio .checkmark,
679
- .happyforms-part--checkbox .checkmark {
 
680
  position: relative;
681
  top: 4px;
682
  z-index: 5;
@@ -689,7 +707,8 @@ h3.happyforms-form__title {
689
  border-color: var(--happyforms-color-part-border);
690
  }
691
 
692
- .happyforms-part--checkbox .checkmark {
 
693
  border-radius: 0;
694
  }
695
 
@@ -698,7 +717,8 @@ h3.happyforms-form__title {
698
  }
699
 
700
  .happyforms-part--radio input:checked+.checkmark,
701
- .happyforms-part--checkbox input:checked+.checkmark {
 
702
  border-color: #000;
703
  border-color: var(--happyforms-color-part-border-focus);
704
  background-color: #000;
@@ -932,6 +952,10 @@ h3.happyforms-form__title {
932
 
933
  /* parts - placeholder */
934
 
 
 
 
 
935
  .happyforms-part--placeholder p {
936
  font-size: 16px;
937
  color: #000;
@@ -968,6 +992,7 @@ h3.happyforms-form__title {
968
  height: auto !important;
969
  border: 0;
970
  border-radius: 0;
 
971
  padding: 10px;
972
  line-height: 1.4;
973
  background-color: transparent;
@@ -1016,8 +1041,7 @@ h3.happyforms-form__title {
1016
  }
1017
 
1018
  .happyforms-part--date input[type=text] {
1019
- padding-top: 8px;
1020
- padding-bottom: 9px;
1021
  }
1022
 
1023
  .happyforms-part-date__time-input--minutes {
@@ -1091,6 +1115,10 @@ h3.happyforms-form__title {
1091
  padding-right: 0;
1092
  }
1093
 
 
 
 
 
1094
  .happyforms-part-date__time-input .happyforms-spinner-arrow {
1095
  cursor: pointer;
1096
  content: '';
@@ -1193,8 +1221,17 @@ h3.happyforms-form__title {
1193
 
1194
  /* parts - legal */
1195
 
1196
- .happyforms-part--legal span {
1197
- margin-left: 5px;
 
 
 
 
 
 
 
 
 
1198
  font-weight: normal;
1199
  font-size: 16px;
1200
  font-size: var(--happyforms-part-value-font-size);
@@ -1609,7 +1646,22 @@ form > .happyforms-message-notices .error {
1609
  }
1610
 
1611
  .happyforms-part--label-as_placeholder a.address-geolocate {
1612
- padding-top: 25px !important;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1613
  }
1614
 
1615
  /* part borders */
@@ -1668,6 +1720,11 @@ form > .happyforms-message-notices .error {
1668
  transition-property: top;
1669
  }
1670
 
 
 
 
 
 
1671
  .happyforms-part--label-as_placeholder input:focus~label,
1672
  .happyforms-part--label-as_placeholder textarea:focus~label,
1673
  .happyforms-part--label-as_placeholder.happyforms-part--filled input~label,
@@ -1675,6 +1732,40 @@ form > .happyforms-message-notices .error {
1675
  top: 10px;
1676
  }
1677
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1678
  /* part padding */
1679
 
1680
  .happyforms-form--part-outer-padding-narrow .happyforms-form__part {
@@ -1721,11 +1812,22 @@ form > .happyforms-message-notices .error {
1721
  .happyforms-form--part-inner-padding-narrow .happyforms-part input[type=tel],
1722
  .happyforms-form--part-inner-padding-narrow .happyforms-part input[type=number],
1723
  .happyforms-form--part-inner-padding-narrow .happyforms-part textarea,
1724
- .happyforms-form--part-inner-padding-narrow .happyforms-part select,
1725
  .happyforms-form--part-inner-padding-narrow .happyforms-part .option-label {
1726
  padding: 5px;
1727
  }
1728
 
 
 
 
 
 
 
 
 
 
 
 
 
1729
  .happyforms-form--part-inner-padding-narrow .happyforms-part__label {
1730
  margin-bottom: 5px;
1731
  }
@@ -1750,11 +1852,19 @@ form > .happyforms-message-notices .error {
1750
  .happyforms-form--part-inner-padding-wide .happyforms-part input[type=tel],
1751
  .happyforms-form--part-inner-padding-wide .happyforms-part input[type=number],
1752
  .happyforms-form--part-inner-padding-wide .happyforms-part textarea,
1753
- .happyforms-form--part-inner-padding-wide .happyforms-part select,
1754
- .happyforms-form--part-inner-padding-wide .happyforms-part .option-label {
1755
  padding: 15px;
1756
  }
1757
 
 
 
 
 
 
 
 
 
1758
  .happyforms-form--part-inner-padding-wide .happyforms-part .happyforms-part__select-wrap:after {
1759
  top: 45%;
1760
  }
@@ -1868,3 +1978,148 @@ form > .happyforms-message-notices .error {
1868
  background: var(--track-background);
1869
  }
1870
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  --happyforms-color-submit-text-hover: #000;
21
  --happyforms-color-rating: #ccc;
22
  --happyforms-color-rating-hover: #f39c00;
23
+ --happyforms-color-table-row-odd: #fcfcfc;
24
+ --happyforms-color-table-row-even: #efefef;
25
+ --happyforms-color-table-row-odd-text: #000;
26
+ --happyforms-color-table-row-even-text: #000;
27
  /* font */
28
  --happyforms-form-title-font-size: 32px;
29
  --happyforms-form-font-weight: normal;
100
  }
101
  }
102
 
103
+ .happyforms-part--width-half, .happyforms-part--width-third {
104
+ align-self: flex-end;
105
+ }
106
+
107
  .happyforms-part__label {
108
  display: inline-block;
109
  cursor: pointer;
141
  text-align: right;
142
  }
143
 
144
+ .happyforms-part--scale .happyforms-part__description {
145
+ margin-bottom: 10px;
146
+ }
147
+
148
+ .happyforms-part--scale-multiple .happyforms-part__description {
149
+ margin-bottom: 25px;
150
+ }
151
+
152
  .happyforms-part input[type=text],
153
  .happyforms-part input[type=email],
154
  .happyforms-part input[type=tel],
158
  width: 100%;
159
  max-width: none;
160
  height: auto !important;
161
+ margin: 0;
162
  padding: 10px;
163
  border-width: 1px;
164
  border-style: solid;
693
  }
694
 
695
  .happyforms-part--radio .checkmark,
696
+ .happyforms-part--checkbox .checkmark,
697
+ .happyforms-part--table .checkmark {
698
  position: relative;
699
  top: 4px;
700
  z-index: 5;
707
  border-color: var(--happyforms-color-part-border);
708
  }
709
 
710
+ .happyforms-part--checkbox .checkmark,
711
+ .happyforms-part--table.happyforms-selection--multiple .checkmark {
712
  border-radius: 0;
713
  }
714
 
717
  }
718
 
719
  .happyforms-part--radio input:checked+.checkmark,
720
+ .happyforms-part--checkbox input:checked+.checkmark,
721
+ .happyforms-part--table input:checked+.checkmark {
722
  border-color: #000;
723
  border-color: var(--happyforms-color-part-border-focus);
724
  background-color: #000;
952
 
953
  /* parts - placeholder */
954
 
955
+ .happyforms-part--placeholder .happyforms-part__el {
956
+ padding: 10px;
957
+ }
958
+
959
  .happyforms-part--placeholder p {
960
  font-size: 16px;
961
  color: #000;
992
  height: auto !important;
993
  border: 0;
994
  border-radius: 0;
995
+ margin: 0;
996
  padding: 10px;
997
  line-height: 1.4;
998
  background-color: transparent;
1041
  }
1042
 
1043
  .happyforms-part--date input[type=text] {
1044
+ height: 100% !important;
 
1045
  }
1046
 
1047
  .happyforms-part-date__time-input--minutes {
1115
  padding-right: 0;
1116
  }
1117
 
1118
+ .happyforms-part-date__time-input input[type=text] {
1119
+ -webkit-appearance: none;
1120
+ }
1121
+
1122
  .happyforms-part-date__time-input .happyforms-spinner-arrow {
1123
  cursor: pointer;
1124
  content: '';
1221
 
1222
  /* parts - legal */
1223
 
1224
+ .happyforms-part--legal .happyforms-part__el {
1225
+ display: flex;
1226
+ }
1227
+
1228
+ .happyforms-part--legal input {
1229
+ position: relative;
1230
+ top: 3px;
1231
+ }
1232
+
1233
+ .happyforms-part--legal label {
1234
+ margin-left: 10px;
1235
  font-weight: normal;
1236
  font-size: 16px;
1237
  font-size: var(--happyforms-part-value-font-size);
1646
  }
1647
 
1648
  .happyforms-part--label-as_placeholder a.address-geolocate {
1649
+ padding-top: 23px !important;
1650
+ }
1651
+
1652
+ .happyforms-form--part-inner-padding-narrow .happyforms-part--label-as_placeholder a.address-geolocate {
1653
+ padding-top: 20px !important;
1654
+ }
1655
+
1656
+ .happyforms-form--part-inner-padding-wide .happyforms-part--label-as_placeholder a.address-geolocate {
1657
+ padding-top: 27px !important;
1658
+ }
1659
+
1660
+ .happyforms-form--part-inner-padding-wide .happyforms-part--label-inside input,
1661
+ .happyforms-form--part-inner-padding-wide .happyforms-part--label-inside textarea,
1662
+ .happyforms-form--part-inner-padding-wide .happyforms-part--label-as_placeholder input,
1663
+ .happyforms-form--part-inner-padding-wide .happyforms-part--label-as_placeholder textarea {
1664
+ padding-top: 40px !important;
1665
  }
1666
 
1667
  /* part borders */
1720
  transition-property: top;
1721
  }
1722
 
1723
+ .happyforms-form--direction-rtl .happyforms-part--label-as_placeholder label {
1724
+ left: auto;
1725
+ right: 11px;
1726
+ }
1727
+
1728
  .happyforms-part--label-as_placeholder input:focus~label,
1729
  .happyforms-part--label-as_placeholder textarea:focus~label,
1730
  .happyforms-part--label-as_placeholder.happyforms-part--filled input~label,
1732
  top: 10px;
1733
  }
1734
 
1735
+ .happyforms-form--part-inner-padding-narrow .happyforms-part--label-as_placeholder label {
1736
+ top: 21px;
1737
+ left: 5px;
1738
+ }
1739
+
1740
+ .happyforms-form--direction-rtl.happyforms-form--part-inner-padding-narrow .happyforms-part--label-as_placeholder label {
1741
+ right: 5px;
1742
+ left: auto;
1743
+ }
1744
+
1745
+ .happyforms-form--part-inner-padding-narrow .happyforms-part--label-as_placeholder input:focus~label,
1746
+ .happyforms-form--part-inner-padding-narrow .happyforms-part--label-as_placeholder textarea:focus~label,
1747
+ .happyforms-form--part-inner-padding-narrow .happyforms-part--label-as_placeholder.happyforms-part--filled input~label,
1748
+ .happyforms-form--part-inner-padding-narrow .happyforms-part--label-as_placeholder.happyforms-part--filled textarea~label {
1749
+ top: 7px;
1750
+ }
1751
+
1752
+ .happyforms-form--part-inner-padding-wide .happyforms-part--label-as_placeholder label {
1753
+ top: 30px;
1754
+ left: 15px;
1755
+ }
1756
+
1757
+ .happyforms-form--direction-rtl.happyforms-form--part-inner-padding-wide .happyforms-part--label-as_placeholder label {
1758
+ right: 15px;
1759
+ left: auto;
1760
+ }
1761
+
1762
+ .happyforms-form--part-inner-padding-wide .happyforms-part--label-as_placeholder input:focus~label,
1763
+ .happyforms-form--part-inner-padding-wide .happyforms-part--label-as_placeholder textarea:focus~label,
1764
+ .happyforms-form--part-inner-padding-wide .happyforms-part--label-as_placeholder.happyforms-part--filled input~label,
1765
+ .happyforms-form--part-inner-padding-wide .happyforms-part--label-as_placeholder.happyforms-part--filled textarea~label {
1766
+ top: 15px;
1767
+ }
1768
+
1769
  /* part padding */
1770
 
1771
  .happyforms-form--part-outer-padding-narrow .happyforms-form__part {
1812
  .happyforms-form--part-inner-padding-narrow .happyforms-part input[type=tel],
1813
  .happyforms-form--part-inner-padding-narrow .happyforms-part input[type=number],
1814
  .happyforms-form--part-inner-padding-narrow .happyforms-part textarea,
 
1815
  .happyforms-form--part-inner-padding-narrow .happyforms-part .option-label {
1816
  padding: 5px;
1817
  }
1818
 
1819
+ .happyforms-form--part-inner-padding-narrow .happyforms-part--placeholder .happyforms-part__el {
1820
+ padding: 5px;
1821
+ }
1822
+
1823
+ .happyforms-form--part-inner-padding-narrow .happyforms-part--legal label {
1824
+ margin-left: 5px;
1825
+ }
1826
+
1827
+ .happyforms-form--part-inner-padding-narrow .happyforms-part select {
1828
+ padding: 7px;
1829
+ }
1830
+
1831
  .happyforms-form--part-inner-padding-narrow .happyforms-part__label {
1832
  margin-bottom: 5px;
1833
  }
1852
  .happyforms-form--part-inner-padding-wide .happyforms-part input[type=tel],
1853
  .happyforms-form--part-inner-padding-wide .happyforms-part input[type=number],
1854
  .happyforms-form--part-inner-padding-wide .happyforms-part textarea,
1855
+ .happyforms-form--part-inner-padding-wide .happyforms-part .option-label,
1856
+ .happyforms-form--part-inner-padding-wide .happyforms-part--placeholder .happyforms-part__el {
1857
  padding: 15px;
1858
  }
1859
 
1860
+ .happyforms-form--part-inner-padding-wide .happyforms-part--legal label {
1861
+ margin-left: 15px;
1862
+ }
1863
+
1864
+ .happyforms-form--part-inner-padding-wide .happyforms-part select {
1865
+ padding: 16px;
1866
+ }
1867
+
1868
  .happyforms-form--part-inner-padding-wide .happyforms-part .happyforms-part__select-wrap:after {
1869
  top: 45%;
1870
  }
1978
  background: var(--track-background);
1979
  }
1980
  }
1981
+
1982
+
1983
+ /* table part */
1984
+ .happyforms-part--table .happyforms-tooltip {
1985
+ top: 0;
1986
+ bottom: auto;
1987
+ height: 20px;
1988
+ }
1989
+
1990
+ .happyforms-part--table .happyforms-tooltip .happyforms-part__description {
1991
+ top: -5px;
1992
+ }
1993
+
1994
+ .happyforms-table {
1995
+ display: flex;
1996
+ flex-wrap: wrap;
1997
+ padding: 0;
1998
+ }
1999
+
2000
+ .happyforms-table__row {
2001
+ display: flex;
2002
+ width: 100%;
2003
+ }
2004
+ .happyforms-table__row--head>div {
2005
+ padding: 10px;
2006
+ }
2007
+ .happyforms-table__row--head>div:first-child {
2008
+ background-color: transparent;
2009
+ }
2010
+ .happyforms-table__row:not(.happyforms-table__row--head):nth-child(odd) {
2011
+ background-color: #fff;
2012
+ background-color: var(--happyforms-color-table-row-even);
2013
+ }
2014
+ .happyforms-table__row:not(.happyforms-table__row--head):nth-child(odd) .happyforms-table__cell {
2015
+ color: #000;
2016
+ color: var(--happyforms-color-table-row-even-text);
2017
+ }
2018
+ .happyforms-table__row:not(.happyforms-table__row--head):nth-child(odd) .checkmark {
2019
+ border-color: #000;
2020
+ border-color: var(--happyforms-color-table-row-even-text);
2021
+ }
2022
+ .happyforms-table__row:not(.happyforms-table__row--head):nth-child(odd) input:checked + .checkmark {
2023
+ background-color: #000;
2024
+ background-color: var(--happyforms-color-table-row-even-text);
2025
+ }
2026
+
2027
+ .happyforms-table__row:not(.happyforms-table__row--head):nth-child(even) {
2028
+ background-color: #fff;
2029
+ background-color: var(--happyforms-color-table-row-odd);
2030
+ }
2031
+ .happyforms-table__row:not(.happyforms-table__row--head):nth-child(even) .happyforms-table__cell {
2032
+ color: #000;
2033
+ color: var(--happyforms-color-table-row-odd-text);
2034
+ }
2035
+ .happyforms-table__row:not(.happyforms-table__row--head):nth-child(even) .checkmark {
2036
+ border-color: #000;
2037
+ border-color: var(--happyforms-color-table-row-odd-text);
2038
+ }
2039
+ .happyforms-table__row:not(.happyforms-table__row--head):nth-child(even) input:checked + .checkmark {
2040
+ background-color: #000;
2041
+ background-color: var(--happyforms-color-table-row-odd-text);
2042
+ }
2043
+ .happyforms-table__row--body {
2044
+ align-items: center;
2045
+ }
2046
+
2047
+ .happyforms-table__cell {
2048
+ box-sizing: border-box;
2049
+ flex-grow: 1;
2050
+ padding: 15px 10px;
2051
+ overflow: hidden;
2052
+ list-style: none;
2053
+ }
2054
+ .happyforms-form--part-inner-padding-narrow .happyforms-table__cell {
2055
+ padding: 5px 7px;
2056
+ }
2057
+ .happyforms-form--part-inner-padding-wide .happyforms-table__cell {
2058
+ padding: 20px 15px;
2059
+ }
2060
+ .happyforms-table__cell--column-title {
2061
+ font-weight: bold;
2062
+ font-size: 16px;
2063
+ font-size: var(--happyforms-part-title-font-size);
2064
+ text-align: center;
2065
+ color: #000;
2066
+ color: var(--happyforms-color-part-title);
2067
+ }
2068
+ .happyforms-table__cell .option-label {
2069
+ width: 100%;
2070
+ margin-bottom: 0;
2071
+ padding-bottom: 0;
2072
+ text-align: center;
2073
+ }
2074
+ .happyforms-table__cell--row-title {
2075
+ font-size: 16px;
2076
+ font-size: var(--happyforms-part-title-font-size);
2077
+ color: #000;
2078
+ color: var(--happyforms-color-part-title);
2079
+ }
2080
+ .happyforms-table__cell--column-title-sm {
2081
+ display: none;
2082
+ }
2083
+
2084
+ @media screen and (max-width: 800px) {
2085
+ .happyforms-part--table .happyforms-part__description {
2086
+ margin-bottom: 20px;
2087
+ }
2088
+ .happyforms-part--table .happyforms-tooltip {
2089
+ top: 5px;
2090
+ }
2091
+ .happyforms-table {
2092
+ display: block;
2093
+ }
2094
+ .happyforms-table__row--head {
2095
+ display: none;
2096
+ }
2097
+ .happyforms-table__row {
2098
+ flex-wrap: wrap;
2099
+ margin-bottom: 20px;
2100
+ }
2101
+ .happyforms-table__cell {
2102
+ display: flex;
2103
+ width: 100% !important;
2104
+ padding-left: 5px;
2105
+ padding-right: 5px;
2106
+ }
2107
+ .happyforms-table__cell:first-child {
2108
+ background-color: #dbdbdb;
2109
+ background-color: var(--happyforms-color-part-border);
2110
+ }
2111
+ .happyforms-table__cell--row-title {
2112
+ font-weight: bold;
2113
+ }
2114
+ .happyforms-table__cell--column-title-sm {
2115
+ display: block;
2116
+ flex-grow: 1;
2117
+ width: 50%;
2118
+ font-weight: normal;
2119
+ text-align: left;
2120
+ }
2121
+ label {
2122
+ flex-grow: 1;
2123
+ width: 50%;
2124
+ }
2125
+ }
assets/js/customize.js CHANGED
@@ -72,7 +72,8 @@
72
  Backbone.Model.prototype.initialize.apply( this, arguments );
73
 
74
  if ( ! this.id ) {
75
- this.set( 'id', _.uniqueId( this.get( 'type' ) + '_' ) );
 
76
  }
77
  },
78
 
@@ -231,12 +232,21 @@
231
  }
232
 
233
  this.listenTo( this, 'ready', this.ready );
 
 
 
 
 
234
  },
235
 
236
  ready: function() {
237
  // Noop
238
  },
239
 
 
 
 
 
240
  unbindEvents: function() {
241
  // Unbind any listenTo handlers
242
  this.stopListening();
@@ -445,6 +455,7 @@
445
  this.listenTo( this.model.get( 'parts' ), 'remove', this.onPartModelRemove );
446
  this.listenTo( this.model.get( 'parts' ), 'change', this.onPartModelChange );
447
  this.listenTo( this.model.get( 'parts' ), 'reset', this.onPartModelsSorted );
 
448
  this.listenTo( this.partViews, 'add', this.onPartViewAdd );
449
  this.listenTo( this.partViews, 'remove', this.onPartViewRemove );
450
  this.listenTo( this.partViews, 'reset', this.onPartViewsSorted );
@@ -457,6 +468,18 @@
457
  return this;
458
  },
459
 
 
 
 
 
 
 
 
 
 
 
 
 
460
  ready: function() {
461
  this.model.get( 'parts' ).each( function( partModel ) {
462
  this.addViewPart( partModel );
@@ -868,9 +891,12 @@
868
  */
869
  expandToggle: function() {
870
  var $el = this.$el;
 
871
 
872
  $( '.happyforms-widget-content', this.$el ).slideToggle( function() {
873
- $el.toggleClass( 'happyforms-widget-expanded' );
 
 
874
  } );
875
  },
876
 
@@ -1768,6 +1794,29 @@
1768
  happyForms.factory = PartFactory;
1769
  happyForms.previewer = Previewer;
1770
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1771
  api.bind( 'ready', function() {
1772
  happyForms.start();
1773
 
72
  Backbone.Model.prototype.initialize.apply( this, arguments );
73
 
74
  if ( ! this.id ) {
75
+ var id = happyForms.utils.uniqueId( this.get( 'type' ) + '_', this.collection );
76
+ this.set( 'id', id );
77
  }
78
  },
79
 
232
  }
233
 
234
  this.listenTo( this, 'ready', this.ready );
235
+
236
+ // Capture and mute link clicks to avoid
237
+ // hijacking Backbone router and breaking
238
+ // Customizer navigation.
239
+ this.delegate( 'click', '.happyforms-stack-view a', this.muteLink );
240
  },
241
 
242
  ready: function() {
243
  // Noop
244
  },
245
 
246
+ muteLink: function( e ) {
247
+ e.preventDefault();
248
+ },
249
+
250
  unbindEvents: function() {
251
  // Unbind any listenTo handlers
252
  this.stopListening();
455
  this.listenTo( this.model.get( 'parts' ), 'remove', this.onPartModelRemove );
456
  this.listenTo( this.model.get( 'parts' ), 'change', this.onPartModelChange );
457
  this.listenTo( this.model.get( 'parts' ), 'reset', this.onPartModelsSorted );
458
+ this.listenTo( this.model.get( 'parts' ), 'widget-toggle', this.onWidgetToggle );
459
  this.listenTo( this.partViews, 'add', this.onPartViewAdd );
460
  this.listenTo( this.partViews, 'remove', this.onPartViewRemove );
461
  this.listenTo( this.partViews, 'reset', this.onPartViewsSorted );
468
  return this;
469
  },
470
 
471
+ onWidgetToggle: function() {
472
+ var $expandCollapseButton = $( '.expand-collapse-all', this.$el );
473
+
474
+ if ( 0 === $( '.happyforms-widget-expanded', this.$el ).length ) {
475
+ $expandCollapseButton.text($expandCollapseButton.data('expand-text')).removeClass('collapse').addClass('expand');
476
+ }
477
+
478
+ if ( 0 === $( '.happyforms-widget:not(.happyforms-widget-expanded)', this.$el ).length ) {
479
+ $expandCollapseButton.text($expandCollapseButton.data('collapse-text')).removeClass('expand').addClass('collapse');
480
+ }
481
+ },
482
+
483
  ready: function() {
484
  this.model.get( 'parts' ).each( function( partModel ) {
485
  this.addViewPart( partModel );
891
  */
892
  expandToggle: function() {
893
  var $el = this.$el;
894
+ var self = this;
895
 
896
  $( '.happyforms-widget-content', this.$el ).slideToggle( function() {
897
+ $el.toggleClass('happyforms-widget-expanded');
898
+
899
+ self.model.collection.trigger('widget-toggle');
900
  } );
901
  },
902
 
1794
  happyForms.factory = PartFactory;
1795
  happyForms.previewer = Previewer;
1796
 
1797
+ happyForms.utils = {
1798
+ uniqueId: function( prefix, collection ) {
1799
+ if ( collection ) {
1800
+ var increments = collection
1801
+ .pluck( 'id' )
1802
+ .map( function( id ) {
1803
+ var numberId = id.match( /_(\d+)$/ );
1804
+ numberId = numberId !== null ? parseInt( numberId[1] ): 0;
1805
+ return numberId;
1806
+ } )
1807
+ .sort( function( a, b ) {
1808
+ return b - a;
1809
+ } );
1810
+
1811
+ var increment = increments.length ? increments[0] + 1 : 1;
1812
+
1813
+ return prefix + increment;
1814
+ }
1815
+
1816
+ return _.uniqueId( prefix );
1817
+ }
1818
+ };
1819
+
1820
  api.bind( 'ready', function() {
1821
  happyForms.start();
1822
 
assets/js/frontend.js CHANGED
@@ -196,8 +196,6 @@
196
 
197
  var data = formData.concat( partData );
198
 
199
- console.log( data );
200
-
201
  var querystring = data
202
  .map( function( part ) {
203
  return part.name + '=' + part.value;
196
 
197
  var data = formData.concat( partData );
198
 
 
 
199
  var querystring = data
200
  .map( function( part ) {
201
  return part.name + '=' + part.value;
assets/js/frontend/table.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ( function( $ ) {
2
+
3
+ HappyForms.parts = HappyForms.parts || {};
4
+
5
+ HappyForms.parts.table = {
6
+ isFilled: function() {
7
+ var $rows = $( 'tbody tr', this.$el );
8
+
9
+ var $filledRows = $rows.filter( function() {
10
+ var $row = $( this );
11
+ var $input = $( 'input:checked', $row );
12
+
13
+ return $input.length > 0;
14
+ } );
15
+
16
+ return $rows.length === $filledRows.length;
17
+ },
18
+ };
19
+
20
+ } )( jQuery );
assets/js/parts/part-checkbox.js CHANGED
@@ -73,7 +73,7 @@
73
  onAddOptionClick: function( e ) {
74
  e.preventDefault();
75
 
76
- var itemID = _.uniqueId( this.model.get( 'id' ) + '_option_' );
77
  var itemModel = new OptionModel( { id: itemID } );
78
  this.model.get( 'options' ).add( itemModel );
79
 
73
  onAddOptionClick: function( e ) {
74
  e.preventDefault();
75
 
76
+ var itemID = happyForms.utils.uniqueId( this.model.get( 'id' ) + '_option_', this.model.get( 'options' ) );
77
  var itemModel = new OptionModel( { id: itemID } );
78
  this.model.get( 'options' ).add( itemModel );
79
 
assets/js/parts/part-legal.js CHANGED
@@ -12,29 +12,78 @@
12
 
13
  var LegalView = happyForms.classes.views.Part.extend( {
14
  template: '#happyforms-customize-legal-template',
 
15
 
16
- initialize: function() {
17
- happyForms.classes.views.Part.prototype.initialize.apply( this, arguments );
18
 
19
- this.listenTo( this.model, 'change:legal_text', this.onLegalTextChange );
20
- },
21
 
22
- onLegalTextChange: function() {
23
- var data = {
24
- id: this.model.get( 'id' ),
25
- callback: 'onLegalLegalTextChange',
 
 
 
26
  };
27
 
28
- api.previewer.send( 'happyforms-part-dom-update', data );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  }
30
  } );
31
 
32
  happyForms.previewer = _.extend( happyForms.previewer, {
33
- onLegalLegalTextChange: function( id, html, options ) {
34
- var part = this.getPartModel( id );
35
- var $part = this.getPartElement( html );
36
 
37
- this.$( 'label span', $part ).text( part.get( 'legal_text' ) );
38
  },
39
  } );
40
 
12
 
13
  var LegalView = happyForms.classes.views.Part.extend( {
14
  template: '#happyforms-customize-legal-template',
15
+ editor: null,
16
 
17
+ ready: function () {
18
+ happyForms.classes.views.Part.prototype.ready.apply(this, arguments);
19
 
20
+ this.listenTo(this, 'refresh', this.onRefresh);
 
21
 
22
+ var $textarea = $('textarea', this.$el);
23
+ var editorId = $textarea.attr('id');
24
+ var editorSettings = {
25
+ tinymce: {
26
+ toolbar1: 'bold,italic,bullist,numlist,link,hr',
27
+ setup: this.onEditorInit.bind(this)
28
+ },
29
  };
30
 
31
+ wp.editor.initialize(editorId, editorSettings);
32
+ },
33
+
34
+ onRefresh: function () {
35
+ var $textarea = $('textarea', this.$el);
36
+ var editorId = $textarea.attr('id');
37
+
38
+ tinymce.execCommand('mceRemoveEditor', false, editorId);
39
+ tinymce.execCommand('mceAddEditor', false, editorId);
40
+ },
41
+
42
+ /**
43
+ * Triggere previewer event on each `keyup` and `change` event in the WP editor.
44
+ *
45
+ * @since 1.0.0.
46
+ *
47
+ * @param {object} editor TinyMCE editor JS object.
48
+ *
49
+ * @return void
50
+ */
51
+ onEditorInit: function (editor) {
52
+ editor.on('keyup change', function () {
53
+ this.model.set('legal_text', editor.getContent());
54
+
55
+ var data = {
56
+ id: this.model.get('id'),
57
+ callback: 'onLegalTextChange',
58
+ };
59
+
60
+ api.previewer.send('happyforms-part-dom-update', data);
61
+ }.bind(this));
62
+ },
63
+
64
+ /**
65
+ * Add a special treatment for removing WP editor when the part is removed.
66
+ *
67
+ * @since 1.0.0.
68
+ *
69
+ * @return void
70
+ */
71
+ remove: function () {
72
+ var $textarea = $('textarea', this.$el);
73
+ var editorId = $textarea.attr('id');
74
+
75
+ wp.editor.remove(editorId);
76
+
77
+ happyForms.classes.views.Part.prototype.remove.apply(this, arguments);
78
  }
79
  } );
80
 
81
  happyForms.previewer = _.extend( happyForms.previewer, {
82
+ onLegalTextChange: function (id, html, options) {
83
+ var part = this.getPartModel(id);
84
+ var $part = this.getPartElement(html);
85
 
86
+ this.$('.happyforms-part__el label', $part).html(part.get('legal_text'));
87
  },
88
  } );
89
 
assets/js/parts/part-placeholder.js CHANGED
@@ -24,7 +24,7 @@
24
  var editorSettings = {
25
  tinymce: {
26
  toolbar1: 'bold,italic,bullist,numlist,link,hr',
27
- setup: this.onEditorInit.bind( this ),
28
  },
29
  };
30
 
24
  var editorSettings = {
25
  tinymce: {
26
  toolbar1: 'bold,italic,bullist,numlist,link,hr',
27
+ setup: this.onEditorInit.bind( this )
28
  },
29
  };
30
 
assets/js/parts/part-radio.js CHANGED
@@ -75,7 +75,7 @@
75
  onAddOptionClick: function( e ) {
76
  e.preventDefault();
77
 
78
- var itemID = _.uniqueId( this.model.get( 'id' ) + '_option_' );
79
  var itemModel = new OptionModel( { id: itemID } );
80
  this.model.get( 'options' ).add( itemModel );
81
 
75
  onAddOptionClick: function( e ) {
76
  e.preventDefault();
77
 
78
+ var itemID = happyForms.utils.uniqueId( this.model.get( 'id' ) + '_option_', this.model.get( 'options' ) );
79
  var itemModel = new OptionModel( { id: itemID } );
80
  this.model.get( 'options' ).add( itemModel );
81
 
assets/js/parts/part-select.js CHANGED
@@ -79,7 +79,7 @@
79
 
80
  if (index && index > 4 && index < totalItems) {
81
  this.$el.find('[data-item-id='+ itemModel.id +']').hide();
82
-
83
  this.$el.find('.show-all-options span').text(totalItems);
84
  this.$el.find('.show-all-options').show();
85
  }
@@ -88,7 +88,7 @@
88
  onAddOptionClick: function( e ) {
89
  e.preventDefault();
90
 
91
- var itemID = _.uniqueId( this.model.get( 'id' ) + '_option_' );
92
  var itemModel = new OptionModel( { id: itemID } );
93
  this.model.get( 'options' ).add( itemModel );
94
 
79
 
80
  if (index && index > 4 && index < totalItems) {
81
  this.$el.find('[data-item-id='+ itemModel.id +']').hide();
82
+
83
  this.$el.find('.show-all-options span').text(totalItems);
84
  this.$el.find('.show-all-options').show();
85
  }
88
  onAddOptionClick: function( e ) {
89
  e.preventDefault();
90
 
91
+ var itemID = happyForms.utils.uniqueId( this.model.get( 'id' ) + '_option_', this.model.get( 'options' ) );
92
  var itemModel = new OptionModel( { id: itemID } );
93
  this.model.get( 'options' ).add( itemModel );
94
 
assets/js/parts/part-table.js ADDED
@@ -0,0 +1,361 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ( function( $, _, Backbone, api, settings, partSettings ) {
2
+
3
+ var TableModel = happyForms.classes.models.Part.extend( {
4
+ defaults: function() {
5
+ return _.extend(
6
+ {},
7
+ settings.formParts.table.defaults,
8
+ _.result( happyForms.classes.models.Part.prototype, 'defaults' ),
9
+ );
10
+ },
11
+
12
+ initialize: function( attrs, options ) {
13
+ happyForms.classes.models.Part.prototype.initialize.apply( this, arguments );
14
+
15
+ this.attributes.columns = new ColumnCollection( this.get( 'columns' ), options );
16
+ this.attributes.rows = new RowCollection( this.get( 'rows' ), options );
17
+ },
18
+
19
+ toJSON: function() {
20
+ var json = Backbone.Model.prototype.toJSON.apply( this, arguments );
21
+ json.columns = json.columns.toJSON();
22
+ json.rows = json.rows.toJSON();
23
+
24
+ return json;
25
+ },
26
+ } );
27
+
28
+ var ColumnModel = Backbone.Model.extend( {
29
+ defaults: partSettings.column,
30
+ } );
31
+
32
+ var ColumnCollection = Backbone.Collection.extend( {
33
+ model: ColumnModel,
34
+ } );
35
+
36
+ var RowModel = Backbone.Model.extend( {
37
+ defaults: partSettings.row,
38
+ } );
39
+
40
+ var RowCollection = Backbone.Collection.extend( {
41
+ model: RowModel,
42
+ } );
43
+
44
+ var TableView = happyForms.classes.views.Part.extend( {
45
+ template: '#customize-happyforms-table-template',
46
+ columnCustomizeTemplate: '#customize-happyforms-table-column-template',
47
+ rowCustomizeTemplate: '#customize-happyforms-table-row-template',
48
+
49
+ initialize: function() {
50
+ happyForms.classes.views.Part.prototype.initialize.apply( this, arguments );
51
+
52
+ this.listenTo( this.model, 'change:allow_multiple_selection', this.onMultipleSelectionChange );
53
+ this.listenTo( this.model.get( 'columns' ), 'add change remove', this.onColumnsChange );
54
+ this.listenTo( this.model.get( 'rows' ), 'add change remove', this.onRowsChange );
55
+ this.listenTo( this, 'ready', this.onReady );
56
+ },
57
+
58
+ events: _.extend( {}, happyForms.classes.views.Part.prototype.events, {
59
+ 'click [data-happyforms-tab]': 'onTabClick',
60
+ 'click .add-column': 'onAddColumnClick',
61
+ 'click .delete-column': 'onDeleteColumnClick',
62
+ 'keyup li [name=column_label]': 'onColumnLabelChange',
63
+ 'change li [name=column_is_default]': 'onColumnDefaultChange',
64
+ 'click .add-row': 'onAddRowClick',
65
+ 'click .delete-row': 'onDeleteRowClick',
66
+ 'keyup li [name=row_label]': 'onRowLabelChange',
67
+ } ),
68
+
69
+ onReady: function() {
70
+ this.model.get( 'columns' ).each( function( columnModel ) {
71
+ this.appendColumnPartial( columnModel );
72
+ }, this );
73
+
74
+ this.model.get( 'rows' ).each( function( rowModel ) {
75
+ this.appendRowPartial( rowModel );
76
+ }, this );
77
+ },
78
+
79
+ onMultipleSelectionChange: function() {
80
+ var model = this.model;
81
+
82
+ this.model.fetchHtml( function( response ) {
83
+ var data = {
84
+ id: model.get( 'id' ),
85
+ html: response,
86
+ };
87
+
88
+ api.previewer.send( 'happyforms-form-part-refresh', data );
89
+ } );
90
+ },
91
+
92
+ onColumnsChange: function() {
93
+ this.model.trigger( 'change' );
94
+ },
95
+
96
+ onRowsChange: function() {
97
+ this.model.trigger( 'change' );
98
+ },
99
+
100
+ onTabClick: function( e ) {
101
+ var $link = $( e.target );
102
+ var $links = $link.siblings();
103
+ var tabClass = $link.attr( 'data-happyforms-tab' );
104
+ var $tabs = $( '.tab-content > div', this.$el );
105
+ var $tab = $( '.tab-content > .' + tabClass, this.$el );
106
+
107
+ $links.removeClass( 'active' );
108
+ $link.addClass( 'active' );
109
+ $tabs.removeClass( 'active' );
110
+ $tab.addClass( 'active' );
111
+ },
112
+
113
+ appendColumnPartial: function( columnModel ) {
114
+ var customizeTemplate = _.template( $( this.columnCustomizeTemplate ).html() );
115
+ var customizeHTML = customizeTemplate( { column: columnModel.toJSON() } );
116
+
117
+ $( '.options.columns ul', this.$el ).append( customizeHTML );
118
+ },
119
+
120
+ appendRowPartial: function( rowModel ) {
121
+ var customizeTemplate = _.template( $( this.rowCustomizeTemplate ).html() );
122
+ var customizeHTML = customizeTemplate( { row: rowModel.toJSON() } );
123
+
124
+ $( '.options.rows ul', this.$el ).append( customizeHTML );
125
+ },
126
+
127
+ onAddColumnClick: function( e ) {
128
+ e.preventDefault();
129
+
130
+ var columnID = happyForms.utils.uniqueId( this.model.get( 'id' ) + '_column_', this.model.get( 'columns' ) );
131
+ var columnModel = new ColumnModel( { id: columnID } );
132
+ var model = this.model;
133
+
134
+ this.model.get( 'columns' ).add( columnModel );
135
+ this.appendColumnPartial( columnModel );
136
+
137
+ this.model.fetchHtml( function( response ) {
138
+ var data = {
139
+ id: model.get( 'id' ),
140
+ html: response,
141
+ };
142
+
143
+ api.previewer.send( 'happyforms-form-part-refresh', data );
144
+ } );
145
+ },
146
+
147
+ onDeleteColumnClick: function( e ) {
148
+ e.preventDefault();
149
+
150
+ var columnID = $( e.target ).parents( '[data-column-id]' ).data( 'column-id' );
151
+ var columnModel = this.model.get( 'columns' ).get( columnID );
152
+
153
+ this.model.get( 'columns' ).remove( columnModel );
154
+ $( '[data-column-id="' + columnID + '"]', this.$el ).remove();
155
+
156
+ if ( this.model.get( 'columns' ).length == 0 ) {
157
+ $( '.options.columns ul', this.$el ).html( '' );
158
+ }
159
+
160
+ var data = {
161
+ id: this.model.get( 'id' ),
162
+ callback: 'onTableColumnDeleteCallback',
163
+ options: {
164
+ columnID: columnID,
165
+ }
166
+ };
167
+
168
+ api.previewer.send( 'happyforms-part-dom-update', data );
169
+ },
170
+
171
+ onColumnLabelChange: function( e ) {
172
+ var columnID = $( e.target ).parents( '[data-column-id]' ).data( 'column-id' );
173
+ var columnModel = this.model.get( 'columns' ).get( columnID );
174
+
175
+ columnModel.set( 'label', $( e.target ).val() );
176
+
177
+ var data = {
178
+ id: this.model.get( 'id' ),
179
+ callback: 'onTableColumnLabelChangeCallback',
180
+ options: {
181
+ columnID: columnID,
182
+ }
183
+ };
184
+
185
+ api.previewer.send( 'happyforms-part-dom-update', data );
186
+ },
187
+
188
+ onColumnDefaultChange: function( e ) {
189
+ var columnID = $( e.target ).parents( '[data-column-id]' ).data( 'column-id' );
190
+ var columnModel = this.model.get( 'columns' ).get( columnID );
191
+ var isChecked = $( e.target ).is( ':checked' );
192
+
193
+ this.model.get( 'columns' ).forEach( function( column ) {
194
+ column.set( 'is_default', 0 );
195
+ } );
196
+
197
+ $( 'li [name=column_is_default]', this.$el ).attr( 'checked', false );
198
+
199
+ if ( isChecked ) {
200
+ columnModel.set( 'is_default', 1 );
201
+ $( e.target ).attr( 'checked', true );
202
+ }
203
+
204
+ var data = {
205
+ id: this.model.get( 'id' ),
206
+ callback: 'onTableColumnDefaultChangeCallback',
207
+ options: {
208
+ columnID: columnID,
209
+ }
210
+ };
211
+
212
+ api.previewer.send( 'happyforms-part-dom-update', data );
213
+ },
214
+
215
+ onAddRowClick: function( e ) {
216
+ e.preventDefault();
217
+
218
+ var rowID = happyForms.utils.uniqueId( this.model.get( 'id' ) + '_row_', this.model.get( 'rows' ) );
219
+ var rowModel = new ColumnModel( { id: rowID } );
220
+ var model = this.model;
221
+
222
+ this.model.get( 'rows' ).add( rowModel );
223
+ this.appendRowPartial( rowModel );
224
+
225
+ this.model.fetchHtml( function( response ) {
226
+ var data = {
227
+ id: model.get( 'id' ),
228
+ html: response,
229
+ };
230
+
231
+ api.previewer.send( 'happyforms-form-part-refresh', data );
232
+ } );
233
+ },
234
+
235
+ onDeleteRowClick: function( e ) {
236
+ e.preventDefault();
237
+
238
+ var rowID = $( e.target ).parents( '[data-row-id]' ).data( 'row-id' );
239
+ var rowModel = this.model.get( 'rows' ).get( rowID );
240
+
241
+ this.model.get( 'rows' ).remove( rowModel );
242
+ $( '[data-row-id="' + rowID + '"]', this.$el ).remove();
243
+
244
+ if ( this.model.get( 'rows' ).length == 0 ) {
245
+ $( '.options.rows ul', this.$el ).html( '' );
246
+ }
247
+
248
+ var data = {
249
+ id: this.model.get( 'id' ),
250
+ callback: 'onTableRowDeleteCallback',
251
+ options: {
252
+ rowID: rowID,
253
+ }
254
+ };
255
+
256
+ api.previewer.send( 'happyforms-part-dom-update', data );
257
+ },
258
+
259
+ onRowLabelChange: function( e ) {
260
+ var rowID = $( e.target ).parents( '[data-row-id]' ).data( 'row-id' );
261
+ var rowModel = this.model.get( 'rows' ).get( rowID );
262
+
263
+ rowModel.set( 'label', $( e.target ).val() );
264
+
265
+ var data = {
266
+ id: this.model.get( 'id' ),
267
+ callback: 'onTableRowLabelChangeCallback',
268
+ options: {
269
+ rowID: rowID,
270
+ }
271
+ };
272
+
273
+ api.previewer.send( 'happyforms-part-dom-update', data );
274
+ },
275
+ } );
276
+
277
+ happyForms.previewer = _.extend( happyForms.previewer, {
278
+
279
+ onTableColumnDeleteCallback: function( id, html, options ) {
280
+ var part = this.getPartModel( id );
281
+ var $part = this.getPartElement( html );
282
+ var $column = $( '#' + options.columnID, $part );
283
+ var columnIndex = $column.index() + 1;
284
+
285
+ $column.remove();
286
+ this.$( 'td:nth-child(' + columnIndex + ')', $part ).remove();
287
+ },
288
+
289
+ onTableColumnLabelChangeCallback: function( id, html, options ) {
290
+ var part = this.getPartModel( id );
291
+ var $part = this.getPartElement( html );
292
+ var column = part.get( 'columns' ).get( options.columnID );
293
+ var $column = $( '#' + options.columnID, $part );
294
+
295
+ this.$( 'span', $column ).text( column.get( 'label' ) );
296
+ },
297
+
298
+ onTableColumnDescriptionChangeCallback: function( id, html, options ) {
299
+ var part = this.getPartModel( id );
300
+ var $part = this.getPartElement( html );
301
+ var column = part.get( 'columns' ).get( options.columnID );
302
+ var $column = $( '#' + options.columnID, $part );
303
+
304
+ this.$( '.happyforms-part-option__description', $column ).text( column.get( 'description' ) );
305
+ },
306
+
307
+ onTableRowDeleteCallback: function( id, html, options ) {
308
+ var part = this.getPartModel( id );
309
+ var $part = this.getPartElement( html );
310
+ var $row = $( '#' + options.rowID, $part );
311
+
312
+ $row.remove();
313
+ },
314
+
315
+ onTableRowDescriptionChangeCallback: function( id, html, options ) {
316
+ var part = this.getPartModel( id );
317
+ var $part = this.getPartElement( html );
318
+ var row = part.get( 'rows' ).get( options.rowID );
319
+ var $row = $( '#' + options.rowID, $part );
320
+
321
+ this.$( '.happyforms-part-option__description', $row ).text( row.get( 'description' ) );
322
+ },
323
+
324
+ onTableRowLabelChangeCallback: function( id, html, options ) {
325
+ var part = this.getPartModel( id );
326
+ var $part = this.getPartElement( html );
327
+ var row = part.get( 'rows' ).get( options.rowID );
328
+ var $row = $( '#' + options.rowID, $part );
329
+
330
+ this.$( '.happyforms-table__row-label', $row ).text( row.get('label') );
331
+ },
332
+
333
+ onTableColumnDefaultChangeCallback: function( id, html, options ) {
334
+ var part = this.getPartModel( id );
335
+ var $part = this.getPartElement( html );
336
+ var column = part.get( 'columns' ).get( options.columnID );
337
+ var $column = $( '#' + options.columnID, $part );
338
+ var columnIndex = $column.index() + 1;
339
+ var isDefault = column.get( 'is_default' );
340
+
341
+ this.$( '.happyforms-table__row--body .happyforms-table__cell:nth-child(' + columnIndex + ') input', $part ).prop( 'checked', isDefault );
342
+ },
343
+ } );
344
+
345
+ happyForms.factory.model = _.wrap( happyForms.factory.model, function( func, attrs, options, BaseClass ) {
346
+ if ( 'table' === attrs.type ) {
347
+ BaseClass = TableModel;
348
+ }
349
+
350
+ return func( attrs, options, BaseClass );
351
+ } );
352
+
353
+ happyForms.factory.view = _.wrap( happyForms.factory.view, function( func, options, BaseClass ) {
354
+ if ( 'table' === options.type ) {
355
+ BaseClass = TableView;
356
+ }
357
+
358
+ return func( options, BaseClass );
359
+ } );
360
+
361
+ } ) ( jQuery, _, Backbone, wp.customize, _happyFormsSettings, _happyFormsTableSettings );
assets/svg/icons/table.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64"><style>.st1{fill:none;stroke:#32373c;stroke-width:6;stroke-miterlimit:10}</style><path d="M5 3h54c1.1 0 2 .9 2 2v54c0 1.1-.9 2-2 2H5c-1.1 0-2-.9-2-2V5c0-1.1.9-2 2-2z" fill="none" stroke="#32373c" stroke-width="6" stroke-linecap="round" stroke-miterlimit="10"/><path class="st1" d="M3 42h58M3 22h58M22 3v58M42 3v58"/></svg>
happyforms.php CHANGED
@@ -5,7 +5,7 @@
5
  * Plugin URI: https://happyforms.me
6
  * Description: Your friendly drag and drop contact form builder for creating contact forms, lead generation forms, feedback forms, quote forms, survey forms and more!
7
  * Author: The Theme Foundry
8
- * Version: 1.5.0
9
  * Author URI: https://thethemefoundry.com
10
  * Upgrade URI: https://thethemefoundry.com
11
  */
@@ -13,7 +13,7 @@
13
  /**
14
  * The current version of the plugin.
15
  */
16
- define( 'HAPPYFORMS_VERSION', '1.5.0' );
17
 
18
  if ( ! function_exists( 'happyforms_plugin_file' ) ):
19
  /**
5
  * Plugin URI: https://happyforms.me
6
  * Description: Your friendly drag and drop contact form builder for creating contact forms, lead generation forms, feedback forms, quote forms, survey forms and more!
7
  * Author: The Theme Foundry
8
+ * Version: 1.5.1
9
  * Author URI: https://thethemefoundry.com
10
  * Upgrade URI: https://thethemefoundry.com
11
  */
13
  /**
14
  * The current version of the plugin.
15
  */
16
+ define( 'HAPPYFORMS_VERSION', '1.5.1' );
17
 
18
  if ( ! function_exists( 'happyforms_plugin_file' ) ):
19
  /**
inc/classes/class-form-controller.php CHANGED
@@ -53,6 +53,11 @@ class HappyForms_Form_Controller {
53
  add_action( 'untrashed_post', array( $this, 'untrashed_post' ) );
54
  add_filter( 'happyforms_frontend_dependencies', array( $this, 'script_dependencies' ), 10, 2 );
55
  add_filter( 'happyforms_form_has_captcha', array( $this, 'has_captcha' ), 10, 2 );
 
 
 
 
 
56
  }
57
 
58
  /**
@@ -151,9 +156,6 @@ class HappyForms_Form_Controller {
151
 
152
  if ( $post->post_type == happyforms_get_form_controller()->post_type ) {
153
  if ( is_customize_preview() ) {
154
- add_filter( 'happyforms_part_class', array( $this, 'part_class' ) );
155
- add_filter( 'happyforms_the_form_title', array( $this, 'form_title' ) );
156
-
157
  $single_template = happyforms_get_include_folder() . '/templates/preview-form-edit.php';
158
  } else {
159
  $single_template = happyforms_get_include_folder() . '/templates/single-form.php';
53
  add_action( 'untrashed_post', array( $this, 'untrashed_post' ) );
54
  add_filter( 'happyforms_frontend_dependencies', array( $this, 'script_dependencies' ), 10, 2 );
55
  add_filter( 'happyforms_form_has_captcha', array( $this, 'has_captcha' ), 10, 2 );
56
+
57
+ if ( is_customize_preview() ) {
58
+ add_filter( 'happyforms_part_class', array( $this, 'part_class' ) );
59
+ add_filter( 'happyforms_the_form_title', array( $this, 'form_title' ) );
60
+ }
61
  }
62
 
63
  /**
156
 
157
  if ( $post->post_type == happyforms_get_form_controller()->post_type ) {
158
  if ( is_customize_preview() ) {
 
 
 
159
  $single_template = happyforms_get_include_folder() . '/templates/preview-form-edit.php';
160
  } else {
161
  $single_template = happyforms_get_include_folder() . '/templates/single-form.php';
inc/classes/class-form-part-library.php CHANGED
@@ -11,6 +11,7 @@ class HappyForms_Form_Part_Library {
11
  'HappyForms_Part_WebsiteUrl' => 'class-part-website-url',
12
  'HappyForms_Part_Checkbox' => 'class-part-checkbox',
13
  'HappyForms_Part_Radio' => 'class-part-radio',
 
14
  'HappyForms_Part_Select' => 'class-part-select',
15
  'HappyForms_Part_Number' => 'class-part-number',
16
  'HappyForms_Part_Phone' => 'class-part-phone',
11
  'HappyForms_Part_WebsiteUrl' => 'class-part-website-url',
12
  'HappyForms_Part_Checkbox' => 'class-part-checkbox',
13
  'HappyForms_Part_Radio' => 'class-part-radio',
14
+ 'HappyForms_Part_Table' => 'class-part-table',
15
  'HappyForms_Part_Select' => 'class-part-select',
16
  'HappyForms_Part_Number' => 'class-part-number',
17
  'HappyForms_Part_Phone' => 'class-part-phone',
inc/classes/class-form-styles.php CHANGED
@@ -429,6 +429,30 @@ class HappyForms_Form_Styles {
429
  'target' => 'css_var',
430
  'variable' => '--happyforms-color-rating-hover',
431
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
432
  );
433
 
434
  return $fields;
@@ -634,6 +658,11 @@ class HappyForms_Form_Styles {
634
  'label' => __( 'Required text', 'happyforms' ),
635
  'field' => 'color_part_required',
636
  ),
 
 
 
 
 
637
  array(
638
  'type' => 'color',
639
  'label' => __( 'Rating star color', 'happyforms' ),
@@ -644,6 +673,31 @@ class HappyForms_Form_Styles {
644
  'label' => __( 'Rating star color on hover', 'happyforms' ),
645
  'field' => 'color_rating_star_hover',
646
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
647
  array(
648
  'type' => 'divider',
649
  'label' => __( 'Submit button', 'happyforms' )
429
  'target' => 'css_var',
430
  'variable' => '--happyforms-color-rating-hover',
431
  ),
432
+ 'color_table_row_odd' => array(
433
+ 'default' => '#fcfcfc',
434
+ 'sanitize' => 'sanitize_text_field',
435
+ 'target' => 'css_var',
436
+ 'variable' => '--happyforms-color-table-row-odd',
437
+ ),
438
+ 'color_table_row_even' => array(
439
+ 'default' => '#efefef',
440
+ 'sanitize' => 'sanitize_text_field',
441
+ 'target' => 'css_var',
442
+ 'variable' => '--happyforms-color-table-row-even',
443
+ ),
444
+ 'color_table_row_odd_text' => array(
445
+ 'default' => '#000000',
446
+ 'sanitize' => 'sanitize_text_field',
447
+ 'target' => 'css_var',
448
+ 'variable' => '--happyforms-color-table-row-odd-text',
449
+ ),
450
+ 'color_table_row_even_text' => array(
451
+ 'default' => '#000000',
452
+ 'sanitize' => 'sanitize_text_field',
453
+ 'target' => 'css_var',
454
+ 'variable' => '--happyforms-color-table-row-even-text',
455
+ ),
456
  );
457
 
458
  return $fields;
658
  'label' => __( 'Required text', 'happyforms' ),
659
  'field' => 'color_part_required',
660
  ),
661
+ array(
662
+ 'type' => 'divider',
663
+ 'label' => __( 'Rating', 'happyforms' ),
664
+ 'condition' => '( happyForms.form.get(\'parts\').findWhere( { type: \'rating\' } ) )'
665
+ ),
666
  array(
667
  'type' => 'color',
668
  'label' => __( 'Rating star color', 'happyforms' ),
673
  'label' => __( 'Rating star color on hover', 'happyforms' ),
674
  'field' => 'color_rating_star_hover',
675
  ),
676
+ array(
677
+ 'type' => 'divider',
678
+ 'label' => __( 'Table', 'happyforms' ),
679
+ 'condition' => '( happyForms.form.get(\'parts\').findWhere( { type: \'table\' } ) )'
680
+ ),
681
+ array(
682
+ 'type' => 'color',
683
+ 'label' => __( 'Odd row primary', 'happyforms' ),
684
+ 'field' => 'color_table_row_odd',
685
+ ),
686
+ array(
687
+ 'type' => 'color',
688
+ 'label' => __( 'Odd row secondary', 'happyforms' ),
689
+ 'field' => 'color_table_row_odd_text',
690
+ ),
691
+ array(
692
+ 'type' => 'color',
693
+ 'label' => __( 'Even row primary', 'happyforms' ),
694
+ 'field' => 'color_table_row_even',
695
+ ),
696
+ array(
697
+ 'type' => 'color',
698
+ 'label' => __( 'Even row secondary', 'happyforms' ),
699
+ 'field' => 'color_table_row_even_text',
700
+ ),
701
  array(
702
  'type' => 'divider',
703
  'label' => __( 'Submit button', 'happyforms' )
inc/classes/class-happyforms-plugin.php CHANGED
@@ -268,7 +268,7 @@ class HappyForms_Plugin {
268
  'id' => 'new-content-happyforms',
269
  'parent' => 'new-content',
270
  'title' => __( 'HappyForm', 'happyforms' ),
271
- 'href' => happyforms_get_form_edit_link( 0 ),
272
  'meta' => array(
273
  'target' => '_self',
274
  'title' => __( 'New HappyForm', 'happyforms' ),
268
  'id' => 'new-content-happyforms',
269
  'parent' => 'new-content',
270
  'title' => __( 'HappyForm', 'happyforms' ),
271
+ 'href' => admin_url( happyforms_get_form_edit_link( 0 ) ),
272
  'meta' => array(
273
  'target' => '_self',
274
  'title' => __( 'New HappyForm', 'happyforms' ),
inc/classes/class-message-controller.php CHANGED
@@ -556,7 +556,7 @@ class HappyForms_Message_Controller {
556
 
557
  $part_id = $part_data['id'];
558
  $label = happyforms_get_part_label( $part_data );
559
- $value = happyforms_get_message_part_value( $message['parts'][$part_id] );
560
  $content_lines[] = "$label: $value";
561
  }
562
 
556
 
557
  $part_id = $part_data['id'];
558
  $label = happyforms_get_part_label( $part_data );
559
+ $value = happyforms_get_message_part_value( $message['parts'][$part_id], $part_data, 'email' );
560
  $content_lines[] = "$label: $value";
561
  }
562
 
inc/classes/parts/class-part-checkbox.php CHANGED
@@ -170,9 +170,8 @@ class HappyForms_Part_Checkbox extends HappyForms_Form_Part {
170
  $options = wp_list_pluck( $options, 'label' );
171
  $intersection = array_intersect( $options, $validated_value );
172
 
173
- if ( ! count( $intersection ) ) {
174
- $validated_value = new WP_Error( 'error', __( 'Checkbox values are not valid.', 'happyforms' ) );
175
- return $validated_value;
176
  }
177
 
178
  return $validated_value;
170
  $options = wp_list_pluck( $options, 'label' );
171
  $intersection = array_intersect( $options, $validated_value );
172
 
173
+ if ( count( $validated_value ) !== count( $intersection ) ) {
174
+ return new WP_Error( 'error', __( 'Checkbox values are not valid.', 'happyforms' ) );
 
175
  }
176
 
177
  return $validated_value;
inc/classes/parts/class-part-legal.php CHANGED
@@ -25,7 +25,7 @@ class HappyForms_Part_Legal extends HappyForms_Form_Part {
25
  ),
26
  'legal_text' => array(
27
  'default' => __( 'I accept terms and conditions.', 'happyforms' ),
28
- 'sanitize' => 'sanitize_text_field'
29
  ),
30
  'width' => array(
31
  'default' => 'full',
25
  ),
26
  'legal_text' => array(
27
  'default' => __( 'I accept terms and conditions.', 'happyforms' ),
28
+ 'sanitize' => 'esc_html'
29
  ),
30
  'width' => array(
31
  'default' => 'full',
inc/classes/parts/class-part-select.php CHANGED
@@ -159,6 +159,7 @@ class HappyForms_Part_Select extends HappyForms_Form_Part {
159
 
160
  $options = happyforms_get_part_options( $part['options'], $part, $form );
161
  $options = wp_list_pluck( $options, 'label' );
 
162
 
163
  if ( ! in_array( $value, $options ) ) {
164
  return new WP_Error( 'error', __( 'Select values are not valid.', 'happyforms' ) );
159
 
160
  $options = happyforms_get_part_options( $part['options'], $part, $form );
161
  $options = wp_list_pluck( $options, 'label' );
162
+ $options = array_map( 'sanitize_text_field', $options );
163
 
164
  if ( ! in_array( $value, $options ) ) {
165
  return new WP_Error( 'error', __( 'Select values are not valid.', 'happyforms' ) );
inc/classes/parts/class-part-table.php ADDED
@@ -0,0 +1,309 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class HappyForms_Part_Table extends HappyForms_Form_Part {
4
+
5
+ public $type = 'table';
6
+
7
+ public function __construct() {
8
+ $this->label = __( 'Table', 'happyforms' );
9
+ $this->description = __( 'For radios and checkboxes displaying in a grid of rows and columns.', 'happyforms' );
10
+
11
+ add_filter( 'happyforms_part_value', array( $this, 'get_part_value' ), 10, 4 );
12
+ add_filter( 'happyforms_part_class', array( $this, 'html_part_class' ), 10, 3 );
13
+ add_filter( 'happyforms_stringify_part_value', array( $this, 'stringify_value' ), 10, 3 );
14
+ add_filter( 'happyforms_message_part_value', array( $this, 'message_part_value' ), 10, 4 );
15
+ add_filter( 'happyforms_frontend_dependencies', array( $this, 'script_dependencies' ), 10, 2 );
16
+ }
17
+
18
+ /**
19
+ * Get all part meta fields defaults.
20
+ *
21
+ * @since 1.0.0.
22
+ *
23
+ * @return array
24
+ */
25
+ public function get_customize_fields() {
26
+ return array(
27
+ 'type' => array(
28
+ 'default' => $this->type,
29
+ 'sanitize' => 'sanitize_text_field',
30
+ ),
31
+ 'label' => array(
32
+ 'default' => __( 'Options', 'happyforms' ),
33
+ 'sanitize' => 'sanitize_text_field',
34
+ ),
35
+ 'label_placement' => array(
36
+ 'default' => 'above',
37
+ 'sanitize' => 'sanitize_text_field'
38
+ ),
39
+ 'description' => array(
40
+ 'default' => '',
41
+ 'sanitize' => 'sanitize_text_field'
42
+ ),
43
+ 'tooltip_description' => array(
44
+ 'default' => 0,
45
+ 'sanitize' => 'happyforms_sanitize_checkbox'
46
+ ),
47
+ 'width' => array(
48
+ 'default' => 'full',
49
+ 'sanitize' => 'sanitize_key'
50
+ ),
51
+ 'css_class' => array(
52
+ 'default' => '',
53
+ 'sanitize' => 'sanitize_text_field'
54
+ ),
55
+ 'required' => array(
56
+ 'default' => 1,
57
+ 'sanitize' => 'happyforms_sanitize_checkbox',
58
+ ),
59
+ 'allow_multiple_selection' => array(
60
+ 'default' => 0,
61
+ 'sanitize' => 'happyforms_sanitize_checkbox'
62
+ ),
63
+ 'columns' => array(
64
+ 'default' => array(),
65
+ 'sanitize' => 'happyforms_sanitize_array'
66
+ ),
67
+ 'rows' => array(
68
+ 'default' => array(),
69
+ 'sanitize' => 'happyforms_sanitize_array'
70
+ ),
71
+ );
72
+ }
73
+
74
+ private function get_column_defaults() {
75
+ return array(
76
+ 'is_default' => 0,
77
+ 'label' => '',
78
+ );
79
+ }
80
+
81
+ private function get_row_defaults() {
82
+ return array(
83
+ 'label' => '',
84
+ );
85
+ }
86
+
87
+ /**
88
+ * Get template for part item in customize pane.
89
+ *
90
+ * @since 1.0.0.
91
+ *
92
+ * @return string
93
+ */
94
+ public function customize_templates() {
95
+ require_once( happyforms_get_include_folder() . '/templates/parts/customize-table.php' );
96
+ }
97
+
98
+ /**
99
+ * Get front end part template with parsed data.
100
+ *
101
+ * @since 1.0.0.
102
+ *
103
+ * @param array $part_data Form part data.
104
+ * @param array $form_data Form (post) data.
105
+ *
106
+ * @return string Markup for the form part.
107
+ */
108
+ public function frontend_template( $part_data = array(), $form_data = array() ) {
109
+ $part = wp_parse_args( $part_data, $this->get_customize_defaults() );
110
+ $form = $form_data;
111
+
112
+ foreach( $part['columns'] as $c => $column ) {
113
+ $part['columns'][$c] = wp_parse_args( $column, $this->get_column_defaults() );
114
+ }
115
+
116
+ foreach( $part['rows'] as $r => $row ) {
117
+ $part['rows'][$r] = wp_parse_args( $row, $this->get_row_defaults() );
118
+ }
119
+
120
+ include( happyforms_get_include_folder() . '/templates/parts/frontend-table.php' );
121
+ }
122
+
123
+ /**
124
+ * Enqueue scripts in customizer area.
125
+ *
126
+ * @since 1.0.0.
127
+ *
128
+ * @param array List of dependencies.
129
+ *
130
+ * @return void
131
+ */
132
+ public function customize_enqueue_scripts( $deps = array() ) {
133
+ wp_register_script(
134
+ 'part-table',
135
+ happyforms_get_plugin_url() . 'assets/js/parts/part-table.js',
136
+ $deps, HAPPYFORMS_VERSION, true
137
+ );
138
+
139
+ $settings = array(
140
+ 'column' => $this->get_column_defaults(),
141
+ 'row' => $this->get_row_defaults(),
142
+ );
143
+
144
+ wp_localize_script( 'part-table', '_happyFormsTableSettings', $settings );
145
+ wp_enqueue_script( 'part-table' );
146
+ }
147
+
148
+ public function get_default_value() {
149
+ return array();
150
+ }
151
+
152
+ /**
153
+ * Sanitize submitted value before storing it.
154
+ *
155
+ * @since 1.0.0.
156
+ *
157
+ * @param array $part_data Form part data.
158
+ *
159
+ * @return string
160
+ */
161
+ public function sanitize_value( $part_data = array(), $form_data = array() ) {
162
+ $sanitized_value = $this->get_default_value();
163
+ $part_name = happyforms_get_part_name( $part_data, $form_data );
164
+
165
+ if ( isset( $_REQUEST[$part_name] ) ) {
166
+ $requested_data = $_REQUEST[$part_name];
167
+
168
+ if ( is_array( $requested_data ) ) {
169
+ if ( $part_data['allow_multiple_selection'] ) {
170
+ // Checkbox mode
171
+ foreach( $requested_data as $row_id => $row ) {
172
+ $sanitized_value[$row_id] = array_map( 'sanitize_text_field', $requested_data[$row_id] );
173
+ }
174
+ } else {
175
+ // Radio mode
176
+ $sanitized_value = array_map( 'sanitize_text_field', $requested_data );
177
+ }
178
+ }
179
+ }
180
+
181
+ return $sanitized_value;
182
+ }
183
+
184
+ /**
185
+ * Validate value before submitting it. If it fails validation, return WP_Error object, showing respective error message.
186
+ *
187
+ * @since 1.0.0.
188
+ *
189
+ * @param array $part Form part data.
190
+ * @param string $value Submitted value.
191
+ *
192
+ * @return string|object
193
+ */
194
+ public function validate_value( $value, $part = array(), $form = array() ) {
195
+ $validated_value = $value;
196
+
197
+ if ( 1 === $part['required'] && empty( $validated_value ) ) {
198
+ return new WP_Error( 'error', __( 'This field is required.', 'happyforms' ) );
199
+ }
200
+
201
+ $columns = happyforms_get_part_options( $part['columns'], $part, $form );
202
+ $valid_values = wp_list_pluck( $columns, 'label' );
203
+
204
+ if ( $part['allow_multiple_selection'] ) {
205
+ // Checkbox mode
206
+ foreach( $validated_value as $row_id => $row ) {
207
+ $intersection = array_intersect( $valid_values, $row );
208
+
209
+ if ( count( $row ) !== count( $intersection ) ) {
210
+ return new WP_Error( 'error', __( 'Checkbox values are not valid.', 'happyforms' ) );
211
+ }
212
+ }
213
+ } else {
214
+ // Radio mode
215
+ foreach( $validated_value as $value ) {
216
+ if ( ! in_array( $value, $valid_values ) ) {
217
+ return new WP_Error( 'error', __( 'Radio values are not valid.', 'happyforms' ) );
218
+ }
219
+ }
220
+ }
221
+
222
+ return $validated_value;
223
+ }
224
+
225
+ public function html_part_class( $class, $part, $form ) {
226
+ if ( $this->type === $part['type'] ) {
227
+ if ( $part['allow_multiple_selection'] ) {
228
+ $class[] = 'happyforms-selection--multiple';
229
+ }
230
+ }
231
+
232
+ return $class;
233
+ }
234
+
235
+ public function get_part_value( $value, $part, $form, $component ) {
236
+ if ( $this->type === $part['type'] ) {
237
+ if ( false !== $component ) {
238
+ $value = isset( $value[$component] ) ? $value[$component] : '';
239
+ }
240
+ }
241
+
242
+ return $value;
243
+ }
244
+
245
+ public function stringify_value( $value, $part, $form ) {
246
+ if ( $this->type === $part['type'] ) {
247
+ $rows = happyforms_get_part_options( $part['rows'], $part, $form );
248
+ $lines = array();
249
+
250
+ if ( $part['allow_multiple_selection'] ) {
251
+ foreach( $rows as $row ) {
252
+ $label = $row['label'];
253
+ $row_id = $row['id'];
254
+ $row_value = implode( ', ', $value[$row_id] );
255
+ $lines[] = "{$label}: {$row_value}";
256
+ }
257
+ } else {
258
+ foreach( $rows as $row ) {
259
+ $label = $row['label'];
260
+ $row_id = $row['id'];
261
+ $row_value = $value[$row_id];
262
+ $lines[] = "{$label}: {$row_value}";
263
+ }
264
+ }
265
+
266
+ $value = implode( '<br>', $lines );
267
+ }
268
+
269
+ return $value;
270
+ }
271
+
272
+ public function message_part_value( $value, $original_value, $part, $destination ) {
273
+ if ( isset( $part['type'] )
274
+ && $this->type === $part['type']
275
+ && 'email' === $destination ) {
276
+
277
+ $value = "<br>{$value}";
278
+ }
279
+
280
+ return $value;
281
+ }
282
+
283
+ public function script_dependencies( $deps, $forms ) {
284
+ $contains_table = false;
285
+ $form_controller = happyforms_get_form_controller();
286
+
287
+ foreach ( $forms as $form ) {
288
+ if ( $form_controller->get_first_part_by_type( $form, $this->type ) ) {
289
+ $contains_table = true;
290
+ break;
291
+ }
292
+ }
293
+
294
+ if ( ! happyforms_is_preview() && ! $contains_table ) {
295
+ return $deps;
296
+ }
297
+
298
+ wp_register_script(
299
+ 'happyforms-part-table',
300
+ happyforms_get_plugin_url() . 'assets/js/frontend/table.js',
301
+ array(), HAPPYFORMS_VERSION, true
302
+ );
303
+
304
+ $deps[] = 'happyforms-part-table';
305
+
306
+ return $deps;
307
+ }
308
+
309
+ }
inc/helpers/helper-misc.php CHANGED
@@ -47,11 +47,15 @@ if ( ! function_exists( 'happyforms_get_message_part_value' ) ):
47
  *
48
  * @since 1.0
49
  *
50
- * @param mixed $value The original submission value.
 
 
51
  *
52
  * @return string
53
  */
54
- function happyforms_get_message_part_value( $value ) {
 
 
55
  if ( is_string( $value ) ) {
56
  $value = maybe_unserialize( $value );
57
  }
@@ -63,6 +67,8 @@ function happyforms_get_message_part_value( $value ) {
63
 
64
  $value = wp_unslash( $value );
65
 
 
 
66
  return $value;
67
  }
68
 
47
  *
48
  * @since 1.0
49
  *
50
+ * @param mixed $value The original submission value.
51
+ * @param array $part Current part data.
52
+ * @param string $destination An optional destination slug.
53
  *
54
  * @return string
55
  */
56
+ function happyforms_get_message_part_value( $value, $part = array(), $destination = '' ) {
57
+ $original_value = $value;
58
+
59
  if ( is_string( $value ) ) {
60
  $value = maybe_unserialize( $value );
61
  }
67
 
68
  $value = wp_unslash( $value );
69
 
70
+ $value = apply_filters( 'happyforms_message_part_value', $value, $original_value, $part, $destination );
71
+
72
  return $value;
73
  }
74
 
inc/templates/customize-form-style.php CHANGED
@@ -14,18 +14,11 @@ $controls = happyforms_get_styles()->get_controls();
14
  $class = esc_attr( "happyforms-{$type}-control" );
15
  $name = isset( $control['field'] ) ? $control['field'] : '';
16
  $field = ( '' !== $name ) ? $controller->get_field( $control['field'] ) : '';
17
- $display_condition = isset( $control['display_condition'] ) ? $control['display_condition'] : false;
18
- $display_condition_string = '';
19
-
20
- if ( false !== $display_condition ) {
21
- $display_condition_string = ( $display_condition ) ? '<%if ( '. $display_condition .' ) { %> style="display: block" <% } else { %> style="display: none" <% } %>' : '';
22
- }
23
 
24
  if ( 'divider' === $type ) : ?>
25
 
26
  <?php if ( $f > 0 ): ?></ul></li><?php endif; ?>
27
-
28
- <li class="customize-control control-section <?php echo $class; ?>">
29
  <h3 class="accordion-section-title"><?php echo $label; ?></h3>
30
  </li>
31
 
@@ -42,7 +35,7 @@ $controls = happyforms_get_styles()->get_controls();
42
 
43
  <?php elseif ( 'checkbox' === $type ) : ?>
44
 
45
- <li class="customize-control <?php echo $class; ?> <?php echo ( isset( $field['extra_class'] ) ) ? $field['extra_class'] : ''; ?>" data-target="<?php echo esc_attr( $field['target'] ); ?>"<?php echo ( !empty( $display_condition_string ) ) ? $display_condition_string : ''; ?>>
46
  <div class="customize-control-content">
47
  <label>
48
  <input type="checkbox" name="<?php echo $name; ?>" id="<?php echo $name; ?>" value="<?php echo $field['value']; ?>" data-attribute="<?php echo $name; ?>" <% if (<?php echo $name; ?>) { %>checked="checked"<% } %>> <?php echo $label; ?>
@@ -52,7 +45,7 @@ $controls = happyforms_get_styles()->get_controls();
52
 
53
  <?php elseif ( 'range' === $type ) : ?>
54
 
55
- <li class="customize-control <?php echo $class; ?> <?php echo ( isset( $field['extra_class'] ) ) ? $field['extra_class'] : ''; ?>" data-target="<?php echo esc_attr( $field['target'] ); ?>" data-variable="<?php echo $field['variable']; ?>" data-unit="<?php echo $field['unit']; ?>" <?php echo ( !empty( $display_condition_string ) ) ? $display_condition_string : ''; ?>>
56
  <label class="customize-control-title" for="<?php echo $name; ?>"><?php echo $label; ?></label>
57
  <input type="number" name="<?php echo $name; ?>" id="<?php echo $name; ?>" min="<?php echo $field[ 'min' ]; ?>" max="<?php echo $field[ 'max' ]; ?>" step="<?php echo $field[ 'step' ]; ?>" value="<%= (<?php echo $name; ?>.length) ? <?php echo $name; ?>.replace(/%|px/g, '') : '' %>" data-attribute="<?php echo $name; ?>">
58
  <?php if ( isset( $field['include_unit_switch'] ) ) : ?>
@@ -69,7 +62,7 @@ $controls = happyforms_get_styles()->get_controls();
69
  </li>
70
 
71
  <?php elseif ( 'buttonset' === $type ) : ?>
72
- <li class="customize-control <?php echo $class; ?> <?php echo ( isset( $field['extra_class'] ) ) ? $field['extra_class'] : ''; ?>" data-target="<?php echo esc_attr( $field['target'] ); ?>" data-variable="<?php echo ( isset( $field['variable'] ) ) ? esc_attr( $field['variable'] ) : ''; ?>" data-control-id="<?php echo $name; ?>"<?php echo ( !empty( $display_condition_string ) ) ? $display_condition_string : ''; ?>>
73
  <div class="customize-control-content">
74
  <label class="customize-control-title" for="<?php echo $name; ?>"><?php echo $label; ?></label>
75
  <div class="happyforms-buttonset-container">
@@ -85,7 +78,7 @@ $controls = happyforms_get_styles()->get_controls();
85
 
86
  <?php elseif ( 'color' === $type ) : ?>
87
 
88
- <li class="customize-control <?php echo $class; ?> <?php echo ( isset( $field['extra_class'] ) ) ? $field['extra_class'] : ''; ?>" data-target="<?php echo esc_attr( $field['target'] ); ?>" data-variable="<?php echo $field['variable']; ?>"<?php echo ( !empty( $display_condition_string ) ) ? $display_condition_string : ''; ?>>
89
  <label class="customize-control-title" for="<?php echo $name; ?>"><?php echo $label; ?></label>
90
  <div class="customize-control-content">
91
  <input type="text" name="<?php echo $name; ?>" id="<?php echo $name; ?>" class="happyforms-color-input" data-attribute="<?php echo $name; ?>" value="<%= <?php echo $name; ?> %>" data-default="<?php echo $field['default']; ?>">
@@ -94,7 +87,7 @@ $controls = happyforms_get_styles()->get_controls();
94
 
95
  <?php elseif ( 'text' === $type ) : ?>
96
 
97
- <li class="customize-control <?php echo $class; ?> <?php echo ( isset( $field['extra_class'] ) ) ? $field['extra_class'] : ''; ?>" data-target="<?php echo esc_attr( $field['target'] ); ?>"<?php echo ( !empty( $display_condition_string ) ) ? $display_condition_string : ''; ?>>
98
  <label class="customize-control-title" for="<?php echo $name; ?>"><?php echo $label; ?></label>
99
  <div class="customize-control-content">
100
  <input type="text" name="<?php echo $name; ?>" id="<?php echo $name; ?>" data-attribute="<?php echo $name; ?>" value="<%= <?php echo $name; ?> %>">
@@ -103,7 +96,7 @@ $controls = happyforms_get_styles()->get_controls();
103
 
104
  <?php elseif ( 'select' === $type ) : ?>
105
 
106
- <li class="customize-control <?php echo $class; ?> <?php echo ( isset( $field['extra_class'] ) ) ? $field['extra_class'] : ''; ?>" data-target="<?php echo esc_attr( $field['target'] ); ?>"<?php echo ( !empty( $display_condition_string ) ) ? $display_condition_string : ''; ?>>
107
  <label class="customize-control-title" for="<?php echo $name; ?>"><?php echo $label; ?></label>
108
  <div class="customize-control-content">
109
  <select name="<?php echo $name; ?>" id="<?php echo $name; ?>" data-attribute="<?php echo $name; ?>" class="widefat">
14
  $class = esc_attr( "happyforms-{$type}-control" );
15
  $name = isset( $control['field'] ) ? $control['field'] : '';
16
  $field = ( '' !== $name ) ? $controller->get_field( $control['field'] ) : '';
 
 
 
 
 
 
17
 
18
  if ( 'divider' === $type ) : ?>
19
 
20
  <?php if ( $f > 0 ): ?></ul></li><?php endif; ?>
21
+ <li class="customize-control control-section <?php echo $class; ?>"<?php if ( isset( $control['condition'] ) ) { echo 'style="display: <%= ' . $control['condition'] . ' ? "block" : "none" %>"'; } ?>>
 
22
  <h3 class="accordion-section-title"><?php echo $label; ?></h3>
23
  </li>
24
 
35
 
36
  <?php elseif ( 'checkbox' === $type ) : ?>
37
 
38
+ <li class="customize-control <?php echo $class; ?> <?php echo ( isset( $field['extra_class'] ) ) ? $field['extra_class'] : ''; ?>" data-target="<?php echo esc_attr( $field['target'] ); ?>">
39
  <div class="customize-control-content">
40
  <label>
41
  <input type="checkbox" name="<?php echo $name; ?>" id="<?php echo $name; ?>" value="<?php echo $field['value']; ?>" data-attribute="<?php echo $name; ?>" <% if (<?php echo $name; ?>) { %>checked="checked"<% } %>> <?php echo $label; ?>
45
 
46
  <?php elseif ( 'range' === $type ) : ?>
47
 
48
+ <li class="customize-control <?php echo $class; ?> <?php echo ( isset( $field['extra_class'] ) ) ? $field['extra_class'] : ''; ?>" data-target="<?php echo esc_attr( $field['target'] ); ?>" data-variable="<?php echo $field['variable']; ?>" data-unit="<?php echo $field['unit']; ?>" >
49
  <label class="customize-control-title" for="<?php echo $name; ?>"><?php echo $label; ?></label>
50
  <input type="number" name="<?php echo $name; ?>" id="<?php echo $name; ?>" min="<?php echo $field[ 'min' ]; ?>" max="<?php echo $field[ 'max' ]; ?>" step="<?php echo $field[ 'step' ]; ?>" value="<%= (<?php echo $name; ?>.length) ? <?php echo $name; ?>.replace(/%|px/g, '') : '' %>" data-attribute="<?php echo $name; ?>">
51
  <?php if ( isset( $field['include_unit_switch'] ) ) : ?>
62
  </li>
63
 
64
  <?php elseif ( 'buttonset' === $type ) : ?>
65
+ <li class="customize-control <?php echo $class; ?> <?php echo ( isset( $field['extra_class'] ) ) ? $field['extra_class'] : ''; ?>" data-target="<?php echo esc_attr( $field['target'] ); ?>" data-variable="<?php echo ( isset( $field['variable'] ) ) ? esc_attr( $field['variable'] ) : ''; ?>" data-control-id="<?php echo $name; ?>">
66
  <div class="customize-control-content">
67
  <label class="customize-control-title" for="<?php echo $name; ?>"><?php echo $label; ?></label>
68
  <div class="happyforms-buttonset-container">
78
 
79
  <?php elseif ( 'color' === $type ) : ?>
80
 
81
+ <li class="customize-control <?php echo $class; ?> <?php echo ( isset( $field['extra_class'] ) ) ? $field['extra_class'] : ''; ?>" data-target="<?php echo esc_attr( $field['target'] ); ?>" data-variable="<?php echo $field['variable']; ?>">
82
  <label class="customize-control-title" for="<?php echo $name; ?>"><?php echo $label; ?></label>
83
  <div class="customize-control-content">
84
  <input type="text" name="<?php echo $name; ?>" id="<?php echo $name; ?>" class="happyforms-color-input" data-attribute="<?php echo $name; ?>" value="<%= <?php echo $name; ?> %>" data-default="<?php echo $field['default']; ?>">
87
 
88
  <?php elseif ( 'text' === $type ) : ?>
89
 
90
+ <li class="customize-control <?php echo $class; ?> <?php echo ( isset( $field['extra_class'] ) ) ? $field['extra_class'] : ''; ?>" data-target="<?php echo esc_attr( $field['target'] ); ?>">
91
  <label class="customize-control-title" for="<?php echo $name; ?>"><?php echo $label; ?></label>
92
  <div class="customize-control-content">
93
  <input type="text" name="<?php echo $name; ?>" id="<?php echo $name; ?>" data-attribute="<?php echo $name; ?>" value="<%= <?php echo $name; ?> %>">
96
 
97
  <?php elseif ( 'select' === $type ) : ?>
98
 
99
+ <li class="customize-control <?php echo $class; ?> <?php echo ( isset( $field['extra_class'] ) ) ? $field['extra_class'] : ''; ?>" data-target="<?php echo esc_attr( $field['target'] ); ?>">
100
  <label class="customize-control-title" for="<?php echo $name; ?>"><?php echo $label; ?></label>
101
  <div class="customize-control-content">
102
  <select name="<?php echo $name; ?>" id="<?php echo $name; ?>" data-attribute="<?php echo $name; ?>" class="widefat">
inc/templates/parts/customize-address.php CHANGED
@@ -66,7 +66,7 @@
66
  </div>
67
  <p>
68
  <label>
69
- <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
70
  </label>
71
  </p>
72
  <div class="happyforms-part-advanced-settings-wrap">
66
  </div>
67
  <p>
68
  <label>
69
+ <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is required', 'happyforms' ); ?>
70
  </label>
71
  </p>
72
  <div class="happyforms-part-advanced-settings-wrap">
inc/templates/parts/customize-checkbox.php CHANGED
@@ -28,7 +28,7 @@
28
  </p>
29
  <p>
30
  <label>
31
- <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
32
  </label>
33
  </p>
34
  <div class="options">
28
  </p>
29
  <p>
30
  <label>
31
+ <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is required', 'happyforms' ); ?>
32
  </label>
33
  </p>
34
  <div class="options">
inc/templates/parts/customize-date.php CHANGED
@@ -43,7 +43,7 @@
43
  </p>
44
  <p>
45
  <label>
46
- <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
47
  </label>
48
  </p>
49
  <div class="happyforms-part-advanced-settings-wrap">
43
  </p>
44
  <p>
45
  <label>
46
+ <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is required', 'happyforms' ); ?>
47
  </label>
48
  </p>
49
  <div class="happyforms-part-advanced-settings-wrap">
inc/templates/parts/customize-email.php CHANGED
@@ -34,7 +34,7 @@
34
  </p>
35
  <p>
36
  <label>
37
- <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
38
  </label>
39
  </p>
40
  <div class="happyforms-part-advanced-settings-wrap">
34
  </p>
35
  <p>
36
  <label>
37
+ <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is required', 'happyforms' ); ?>
38
  </label>
39
  </p>
40
  <div class="happyforms-part-advanced-settings-wrap">
inc/templates/parts/customize-multi-line-text.php CHANGED
@@ -34,7 +34,7 @@
34
  </p>
35
  <p>
36
  <label>
37
- <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
38
  </label>
39
  </p>
40
  <div class="happyforms-part-advanced-settings-wrap">
34
  </p>
35
  <p>
36
  <label>
37
+ <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is required', 'happyforms' ); ?>
38
  </label>
39
  </p>
40
  <div class="happyforms-part-advanced-settings-wrap">
inc/templates/parts/customize-number.php CHANGED
@@ -44,7 +44,7 @@
44
  </div>
45
  <p>
46
  <label>
47
- <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
48
  </label>
49
  </p>
50
  <div class="happyforms-part-advanced-settings-wrap">
44
  </div>
45
  <p>
46
  <label>
47
+ <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is required', 'happyforms' ); ?>
48
  </label>
49
  </p>
50
  <div class="happyforms-part-advanced-settings-wrap">
inc/templates/parts/customize-phone.php CHANGED
@@ -34,7 +34,7 @@
34
  </p>
35
  <p>
36
  <label>
37
- <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
38
  </label>
39
  </p>
40
  <div class="happyforms-part-advanced-settings-wrap">
34
  </p>
35
  <p>
36
  <label>
37
+ <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is required', 'happyforms' ); ?>
38
  </label>
39
  </p>
40
  <div class="happyforms-part-advanced-settings-wrap">
inc/templates/parts/customize-radio.php CHANGED
@@ -28,7 +28,7 @@
28
  </p>
29
  <p>
30
  <label>
31
- <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
32
  </label>
33
  </p>
34
  <div class="options">
28
  </p>
29
  <p>
30
  <label>
31
+ <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is required', 'happyforms' ); ?>
32
  </label>
33
  </p>
34
  <div class="options">
inc/templates/parts/customize-rating.php CHANGED
@@ -28,7 +28,7 @@
28
  </p>
29
  <p>
30
  <label>
31
- <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
32
  </label>
33
  </p>
34
  <div class="happyforms-part-advanced-settings-wrap">
28
  </p>
29
  <p>
30
  <label>
31
+ <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is required', 'happyforms' ); ?>
32
  </label>
33
  </p>
34
  <div class="happyforms-part-advanced-settings-wrap">
inc/templates/parts/customize-scale.php CHANGED
@@ -38,7 +38,7 @@
38
  </div>
39
  <p>
40
  <label>
41
- <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
42
  </label>
43
  </p>
44
  <div class="happyforms-part-advanced-settings-wrap">
38
  </div>
39
  <p>
40
  <label>
41
+ <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is required', 'happyforms' ); ?>
42
  </label>
43
  </p>
44
  <div class="happyforms-part-advanced-settings-wrap">
inc/templates/parts/customize-select.php CHANGED
@@ -28,7 +28,7 @@
28
  </p>
29
  <p>
30
  <label>
31
- <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
32
  </label>
33
  </p>
34
  <div class="options">
28
  </p>
29
  <p>
30
  <label>
31
+ <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is required', 'happyforms' ); ?>
32
  </label>
33
  </p>
34
  <div class="options">
inc/templates/parts/customize-single-line-text.php CHANGED
@@ -34,7 +34,7 @@
34
  </p>
35
  <p>
36
  <label>
37
- <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
38
  </label>
39
  </p>
40
  <div class="happyforms-part-advanced-settings-wrap">
34
  </p>
35
  <p>
36
  <label>
37
+ <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is required', 'happyforms' ); ?>
38
  </label>
39
  </p>
40
  <div class="happyforms-part-advanced-settings-wrap">
inc/templates/parts/customize-table.php ADDED
@@ -0,0 +1,110 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <script type="text/template" id="customize-happyforms-table-template">
2
+ <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-header.php' ); ?>
3
+ <p>
4
+ <label for="<%= instance.id %>_title"><?php _e( 'Title', 'happyforms' ); ?></label>
5
+ <input type="text" id="<%= instance.id %>_title" class="widefat title" value="<%= instance.label %>" data-bind="label" />
6
+ </p>
7
+ <p>
8
+ <label for="<%= instance.id %>_label_placement"><?php _e( 'Title placement', 'happyforms' ); ?></label>
9
+ <select id="<%= instance.id %>_label_placement" data-bind="label_placement">
10
+ <option value="above"<%= (instance.label_placement == 'above') ? ' selected' : '' %>><?php _e( 'Above', 'happyforms' ); ?></option>
11
+ <option value="left"<%= (instance.label_placement == 'left') ? ' selected' : '' %>><?php _e( 'Left', 'happyforms' ); ?></option>
12
+ <option value="below"<%= (instance.label_placement == 'below') ? ' selected' : '' %>><?php _e( 'Below', 'happyforms' ); ?></option>
13
+ </select>
14
+ </p>
15
+ <p class="label_placement-options" style="display: none">
16
+ <label>
17
+ <input type="checkbox" class="checkbox apply-all-check" value="" data-apply-to="label_placement" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
18
+ </label>
19
+ </p>
20
+ <p>
21
+ <label for="<%= instance.id %>_description"><?php _e( 'Description', 'happyforms' ); ?></label>
22
+ <textarea id="<%= instance.id %>_description" data-bind="description"><%= instance.description %></textarea>
23
+ </p>
24
+ <p class="tooltip-description-wrap" style="display: <%= (instance.description != '') ? 'block' : 'none' %>">
25
+ <label>
26
+ <input type="checkbox" class="checkbox" value="1" <% if ( instance.tooltip_description ) { %>checked="checked"<% } %> data-bind="tooltip_description" /> <?php _e( 'Show description in a tooltip', 'happyforms' ); ?>
27
+ </label>
28
+ </p>
29
+ <p>
30
+ <label>
31
+ <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'Each row is required', 'happyforms' ); ?>
32
+ </label>
33
+ </p>
34
+ <p>
35
+ <label>
36
+ <input type="checkbox" class="checkbox" value="1" <% if ( instance.allow_multiple_selection ) { %>checked="checked"<% } %> data-bind="allow_multiple_selection" /> <?php _e( 'Allow multiple selections', 'happyforms' ); ?>
37
+ </label>
38
+ </p>
39
+ <div class="tab-links">
40
+ <a href="#" data-happyforms-tab="tab-content-columns" class="active"><?php _e( 'Columns', 'happyforms' ); ?></a>
41
+ <a href="#" data-happyforms-tab="tab-content-rows"><?php _e( 'Rows', 'happyforms' ); ?></a>
42
+ </div>
43
+ <div class="tab-content">
44
+ <div class="tab-content-columns active">
45
+ <div class="options columns">
46
+ <ul></ul>
47
+ <h3><?php _e( 'Columns', 'happyforms' ); ?></h3>
48
+ <p class="no-options"><?php _e( 'No columns added yet. Add one by clicking the <i>Add column</i> link below.', 'happyforms' ); ?></p>
49
+ </div>
50
+ <p class="links">
51
+ <a href="#" class="add-column"><?php _e( 'Add column', 'happyforms' ); ?></a>
52
+ </p>
53
+ </div>
54
+ <div class="tab-content-rows">
55
+ <div class="options rows">
56
+ <ul></ul>
57
+ <h3><?php _e( 'Rows', 'happyforms' ); ?></h3>
58
+ <p class="no-options"><?php _e( 'No rows added yet. Add one by clicking the <i>Add row</i> link below.', 'happyforms' ); ?></p>
59
+ </div>
60
+ <p class="links">
61
+ <a href="#" class="add-row"><?php _e( 'Add row', 'happyforms' ); ?></a>
62
+ </p>
63
+ </div>
64
+ </div>
65
+ <div class="happyforms-part-advanced-settings-wrap">
66
+ <p>
67
+ <label for="<%= instance.id %>_width"><?php _e( 'Width', 'happyforms' ); ?></label>
68
+ <select id="<%= instance.id %>_width" name="width" data-bind="width" class="widefat">
69
+ <option value="full"<%= (instance.width == 'full') ? ' selected' : '' %>><?php _e( 'Full', 'happyforms' ); ?></option>
70
+ <option value="half"<%= (instance.width == 'half') ? ' selected' : '' %>><?php _e( 'Half', 'happyforms' ); ?></option>
71
+ <option value="third"<%= (instance.width == 'third') ? ' selected' : '' %>><?php _e( 'One third', 'happyforms' ); ?></option>
72
+ </select>
73
+ </p>
74
+ <p class="width-options" style="display: none">
75
+ <label>
76
+ <input type="checkbox" class="checkbox apply-all-check" value="" data-apply-to="width" /> <?php _e( 'Apply to all parts', 'happyforms' ); ?>
77
+ </label>
78
+ </p>
79
+ <p>
80
+ <label for="<%= instance.id %>_css_class"><?php _e( 'Custom CSS class', 'happyforms' ); ?></label>
81
+ <input type="text" id="<%= instance.id %>_css_class" class="widefat title" value="<%= instance.css_class %>" data-bind="css_class" />
82
+ </p>
83
+ </div>
84
+ <?php include( happyforms_get_include_folder() . '/templates/customize-form-part-footer.php' ); ?>
85
+ </script>
86
+ <script type="text/template" id="customize-happyforms-table-column-template">
87
+ <li class="happyforms-part-widget happyforms-part-widget--sub" data-column-id="<%= column.id %>">
88
+ <label>
89
+ <?php _e( 'Label', 'happyforms' ); ?>
90
+ <input type="text" class="widefat" name="column_label" value="<%= column.label %>" data-option-attribute="label">
91
+ </label>
92
+ <label>
93
+ <input type="checkbox" name="column_is_default" value="1" class="default-option-switch"<% if (column.is_default == 1) { %> checked="checked"<% } %>> <?php _e( 'Checked by default', 'happyforms' ); ?>
94
+ </label>
95
+ <div class="option-actions">
96
+ <a href="#" class="delete-column"><?php _e( 'Delete', 'happyforms' ); ?></a>
97
+ </div>
98
+ </li>
99
+ </script>
100
+ <script type="text/template" id="customize-happyforms-table-row-template">
101
+ <li class="happyforms-part-widget happyforms-part-widget--sub" data-row-id="<%= row.id %>">
102
+ <label>
103
+ <?php _e( 'Label', 'happyforms' ); ?>
104
+ <input type="text" class="widefat" name="row_label" value="<%= row.label %>" data-option-attribute="label">
105
+ </label>
106
+ <div class="option-actions">
107
+ <a href="#" class="delete-row"><?php _e( 'Delete', 'happyforms' ); ?></a>
108
+ </div>
109
+ </li>
110
+ </script>
inc/templates/parts/customize-title.php CHANGED
@@ -28,7 +28,7 @@
28
  </p>
29
  <p>
30
  <label>
31
- <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
32
  </label>
33
  </p>
34
  <div class="happyforms-part-advanced-settings-wrap">
28
  </p>
29
  <p>
30
  <label>
31
+ <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is required', 'happyforms' ); ?>
32
  </label>
33
  </p>
34
  <div class="happyforms-part-advanced-settings-wrap">
inc/templates/parts/customize-website-url.php CHANGED
@@ -34,7 +34,7 @@
34
  </p>
35
  <p>
36
  <label>
37
- <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is a required field', 'happyforms' ); ?>
38
  </label>
39
  </p>
40
  <div class="happyforms-part-advanced-settings-wrap">
34
  </p>
35
  <p>
36
  <label>
37
+ <input type="checkbox" class="checkbox" value="1" <% if ( instance.required ) { %>checked="checked"<% } %> data-bind="required" /> <?php _e( 'This is required', 'happyforms' ); ?>
38
  </label>
39
  </p>
40
  <div class="happyforms-part-advanced-settings-wrap">
inc/templates/parts/frontend-checkbox.php CHANGED
@@ -12,7 +12,7 @@
12
  $value = happyforms_get_part_value( $part, $form );
13
  $is_default = ( 1 === intval( $option['is_default'] ) );
14
  $is_checked = ( is_array( $value ) && in_array( $option['label'], $value ) );
15
- $checked = ( $is_default || $is_checked ) ? 'checked="checked"' : true;
16
  ?>
17
  <label class="option-label" id="<?php echo esc_attr( $option['id'] ); ?>">
18
  <input type="checkbox" class="happyforms-visuallyhidden" name="<?php happyforms_the_part_name( $part, $form ); ?>[]" value="<?php echo esc_attr( $option['label'] ); ?>" <?php echo $checked; ?>>
12
  $value = happyforms_get_part_value( $part, $form );
13
  $is_default = ( 1 === intval( $option['is_default'] ) );
14
  $is_checked = ( is_array( $value ) && in_array( $option['label'], $value ) );
15
+ $checked = ( $is_default || $is_checked ) ? 'checked="checked"' : '';
16
  ?>
17
  <label class="option-label" id="<?php echo esc_attr( $option['id'] ); ?>">
18
  <input type="checkbox" class="happyforms-visuallyhidden" name="<?php happyforms_the_part_name( $part, $form ); ?>[]" value="<?php echo esc_attr( $option['label'] ); ?>" <?php echo $checked; ?>>
inc/templates/parts/frontend-legal.php CHANGED
@@ -1,8 +1,9 @@
1
  <div class="<?php happyforms_the_part_class( $part, $form ); ?>" id="<?php happyforms_the_part_id( $part, $form ); ?>-part" <?php happyforms_the_part_data_attributes( $part, $form ); ?>>
2
  <div class="happyforms-part-wrap">
3
  <div class="happyforms-part__el">
4
- <label>
5
- <input id="<?php happyforms_the_part_id( $part, $form ); ?>" type="checkbox" name="<?php happyforms_the_part_name( $part, $form ); ?>" value="yes" required aria-required="true" /> <span><?php echo $part['legal_text']; ?></span>
 
6
  </label>
7
  </div>
8
  </div>
1
  <div class="<?php happyforms_the_part_class( $part, $form ); ?>" id="<?php happyforms_the_part_id( $part, $form ); ?>-part" <?php happyforms_the_part_data_attributes( $part, $form ); ?>>
2
  <div class="happyforms-part-wrap">
3
  <div class="happyforms-part__el">
4
+ <input id="<?php happyforms_the_part_id( $part, $form ); ?>" type="checkbox" name="<?php happyforms_the_part_name( $part, $form ); ?>" value="yes" required aria-required="true" />
5
+ <label for="<?php happyforms_the_part_id( $part, $form ); ?>">
6
+ <?php echo html_entity_decode( $part['legal_text'] ); ?>
7
  </label>
8
  </div>
9
  </div>
inc/templates/parts/frontend-scale.php CHANGED
@@ -11,6 +11,7 @@
11
  $part_name = $part_name . '[]';
12
  }
13
  ?>
 
14
  <div class="happyforms-part--scale__inputwrap">
15
  <div class="happyforms-part--scale__labels">
16
  <span class="label-min"><?php echo $part['min_label']; ?></span>
@@ -19,7 +20,6 @@
19
  <input id="<?php happyforms_the_part_id( $part, $form ); ?>"<?php if ( 1 === intval( $part['multiple'] ) ) : ?> multiple<?php endif; ?> type="range" name="<?php echo $part_name; ?>" step="<?php echo esc_attr( $part['step'] ); ?>" class="happyforms-part__el happyforms-part__el--text-input"
20
  <?php if ( 1 === $part['required'] ) : ?>required aria-required="true"<?php endif; ?>
21
  min="<?php echo esc_attr( $part['min_value'] ); ?>" max="<?php echo esc_attr( $part['max_value'] ); ?>" value="<?php happyforms_the_part_value( $part, $form ); ?>" />
22
- <?php happyforms_print_part_description( $part ); ?>
23
  <output for="<?php happyforms_the_part_id( $part, $form ); ?>">
24
  <span><?php happyforms_the_part_value( $part, $form ); ?></span>
25
  </output>
11
  $part_name = $part_name . '[]';
12
  }
13
  ?>
14
+ <?php happyforms_print_part_description( $part ); ?>
15
  <div class="happyforms-part--scale__inputwrap">
16
  <div class="happyforms-part--scale__labels">
17
  <span class="label-min"><?php echo $part['min_label']; ?></span>
20
  <input id="<?php happyforms_the_part_id( $part, $form ); ?>"<?php if ( 1 === intval( $part['multiple'] ) ) : ?> multiple<?php endif; ?> type="range" name="<?php echo $part_name; ?>" step="<?php echo esc_attr( $part['step'] ); ?>" class="happyforms-part__el happyforms-part__el--text-input"
21
  <?php if ( 1 === $part['required'] ) : ?>required aria-required="true"<?php endif; ?>
22
  min="<?php echo esc_attr( $part['min_value'] ); ?>" max="<?php echo esc_attr( $part['max_value'] ); ?>" value="<?php happyforms_the_part_value( $part, $form ); ?>" />
 
23
  <output for="<?php happyforms_the_part_id( $part, $form ); ?>">
24
  <span><?php happyforms_the_part_value( $part, $form ); ?></span>
25
  </output>
inc/templates/parts/frontend-table.php ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="<?php happyforms_the_part_class( $part, $form ); ?>" id="<?php happyforms_the_part_id( $part, $form ); ?>-part" <?php happyforms_the_part_data_attributes( $part, $form ); ?>>
2
+ <div class="happyforms-part-wrap">
3
+ <?php happyforms_the_part_label( $part, $form ); ?>
4
+ <?php if ( 'happyforms-form--part-error-notices-above' === happyforms_get_form_property( $form, 'part_error_notices_location' ) ) : ?>
5
+ <?php happyforms_message_notices( happyforms_get_part_name( $part, $form ) ); ?>
6
+ <?php endif; ?>
7
+ <?php happyforms_print_part_description( $part ); ?>
8
+ <div class="happyforms-part__el">
9
+ <?php
10
+ $columns = happyforms_get_part_options( $part['columns'], $part, $form );
11
+ $columns_num = ( is_array( $columns ) ) ? sizeof( $columns ) : 1;
12
+ ?>
13
+ <div class="happyfoms-table">
14
+ <div class="happyforms-table__row happyforms-table__row--head">
15
+ <div class="happyforms-table__cell" style="width: <?php echo 100 / $columns_num; ?>%"></div>
16
+ <?php
17
+ foreach( $columns as $column ) : ?>
18
+ <div class="happyforms-table__cell happyforms-table__cell--column-title" id="<?php echo esc_attr( $column['id'] ); ?>" style="width: <?php echo 100 / $columns_num; ?>%">
19
+ <span><?php echo esc_attr( $column['label'] ); ?></span>
20
+ </div>
21
+ <?php endforeach; ?>
22
+ </div>
23
+ <?php
24
+ $rows = happyforms_get_part_options( $part['rows'], $part, $form );
25
+
26
+ foreach( $rows as $row ) : ?>
27
+ <div class="happyforms-table__row happyforms-table__row--body" id="<?php echo esc_attr( $row['id'] ); ?>">
28
+ <div class="happyforms-table__cell happyforms-table__cell--row-title" style="width: <?php echo 100 / $columns_num; ?>%">
29
+ <span class="happyforms-table__row-label"><?php echo esc_attr( $row['label'] ); ?></span>
30
+ </div>
31
+ <?php foreach( $columns as $column ) : ?>
32
+ <div class="happyforms-table__cell" style="width: <?php echo 100 / $columns_num; ?>%">
33
+ <div class="happyforms-table__cell--column-title happyforms-table__cell--column-title-sm"><?php echo esc_attr( $column['label'] ); ?></div>
34
+ <label class="option-label">
35
+ <?php if ( ! $part['allow_multiple_selection'] ) : ?>
36
+ <?php
37
+ $checked = checked( $column['is_default'], 1, false );
38
+
39
+ if ( '' !== $column['label'] ) {
40
+ $checked = $checked ? $checked : checked( happyforms_get_part_value( $part, $form, $row['id'] ), $column['label'], false );
41
+ }
42
+ ?>
43
+ <input type="radio" class="happyforms-visuallyhidden" name="<?php happyforms_the_part_name( $part, $form ); ?>[<?php echo esc_attr( $row['id'] ); ?>]" value="<?php echo esc_attr( $column['label'] ); ?>" <?php echo $checked; ?>>
44
+ <span class="checkmark"></span>
45
+ <span class="border"></span>
46
+ <?php else: ?>
47
+ <?php
48
+ $value = happyforms_get_part_value( $part, $form, $row['id'] );
49
+ $is_default = ( 1 === intval( $column['is_default'] ) );
50
+ $is_checked = ( is_array( $value ) && ( '' !== $column['label'] ) && in_array( $column['label'], $value ) );
51
+ $checked = ( $is_default || $is_checked ) ? 'checked="checked"' : '';
52
+ ?>
53
+ <input type="checkbox" class="happyforms-visuallyhidden" name="<?php happyforms_the_part_name( $part, $form ); ?>[<?php echo esc_attr( $row['id'] ); ?>][]" value="<?php echo esc_attr( $column['label'] ); ?>" <?php echo $checked; ?>>
54
+ <span class="checkmark"></span>
55
+ <?php endif; ?>
56
+ </label>
57
+ </div>
58
+ <?php endforeach; ?>
59
+ </div>
60
+ <?php endforeach; ?>
61
+ </div>
62
+ </div>
63
+ <?php if ( 'happyforms-form--part-error-notices-below' === happyforms_get_form_property( $form, 'part_error_notices_location' ) || ( '' === happyforms_get_form_property( $form, 'part_error_notices_location' ) ) ) : ?>
64
+ <?php happyforms_message_notices( happyforms_get_part_name( $part, $form ) ); ?>
65
+ <?php endif; ?>
66
+ </div>
67
+ </div>
languages/happyforms.pot CHANGED
@@ -2,9 +2,9 @@
2
  # This file is distributed under the same license as the HappyForms package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: HappyForms 1.5.0\n"
6
  "Report-Msgid-Bugs-To: https://thethemefoundry.com/support/\n"
7
- "POT-Creation-Date: 2018-06-21 13:17:32+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -14,7 +14,7 @@ msgstr ""
14
  "X-Generator: grunt-wp-i18n 0.4.9\n"
15
 
16
  #: inc/classes/class-form-admin.php:155
17
- #: inc/classes/class-form-controller.php:74
18
  msgid "View form"
19
  msgstr ""
20
 
@@ -124,81 +124,81 @@ msgstr ""
124
  msgid " Copy"
125
  msgstr ""
126
 
127
- #: inc/classes/class-form-controller.php:69
128
- #: inc/classes/class-form-controller.php:79
129
  #: inc/classes/class-happyforms-plugin.php:144
130
  #: inc/classes/class-happyforms-plugin.php:145
131
  msgid "All Forms"
132
  msgstr ""
133
 
134
- #: inc/classes/class-form-controller.php:70
135
  #: inc/classes/class-message-admin.php:317
136
  #: inc/classes/class-message-admin.php:790
137
  msgid "Form"
138
  msgstr ""
139
 
140
- #: inc/classes/class-form-controller.php:71
141
- #: inc/classes/class-form-controller.php:73
142
  msgid "Build form"
143
  msgstr ""
144
 
145
- #: inc/classes/class-form-controller.php:72
146
  msgid "Edit form"
147
  msgstr ""
148
 
149
- #: inc/classes/class-form-controller.php:75
150
  msgid "View forms"
151
  msgstr ""
152
 
153
- #: inc/classes/class-form-controller.php:76
154
  msgid "Search Forms"
155
  msgstr ""
156
 
157
- #: inc/classes/class-form-controller.php:77
158
  msgid "No form found"
159
  msgstr ""
160
 
161
- #: inc/classes/class-form-controller.php:78
162
  msgid "No forms found in Trash"
163
  msgstr ""
164
 
165
- #: inc/classes/class-form-controller.php:173
166
  msgid "Untitled form"
167
  msgstr ""
168
 
169
- #: inc/classes/class-form-controller.php:198
170
  msgid "You received a new message"
171
  msgstr ""
172
 
173
- #: inc/classes/class-form-controller.php:202
174
- #: inc/classes/class-form-controller.php:210
175
  msgid ""
176
  "Your message has been successfully sent. We appreciate you contacting us "
177
  "and we’ll be in touch soon."
178
  msgstr ""
179
 
180
- #: inc/classes/class-form-controller.php:206
181
  msgid "We received your message"
182
  msgstr ""
183
 
184
- #: inc/classes/class-form-controller.php:222
185
  msgid "Submit Form"
186
  msgstr ""
187
 
188
- #: inc/classes/class-form-controller.php:738
189
  #: inc/classes/class-message-controller.php:236
190
  msgid "Your submission contains errors."
191
  msgstr ""
192
 
193
- #: inc/classes/class-form-part-library.php:167
194
  msgid "Invalid data"
195
  msgstr ""
196
 
197
- #: inc/classes/class-form-part-library.php:174
198
  msgid "Part definition not found"
199
  msgstr ""
200
 
201
- #: inc/classes/class-form-part-library.php:205
202
  msgid "Missing validation callback for field %s"
203
  msgstr ""
204
 
@@ -248,6 +248,7 @@ msgstr ""
248
  #: inc/templates/parts/customize-scale.php:11
249
  #: inc/templates/parts/customize-select.php:11
250
  #: inc/templates/parts/customize-single-line-text.php:11
 
251
  #: inc/templates/parts/customize-title.php:11
252
  #: inc/templates/parts/customize-website-url.php:11
253
  msgid "Left"
@@ -302,141 +303,141 @@ msgstr ""
302
  msgid "Full width"
303
  msgstr ""
304
 
305
- #: inc/classes/class-form-styles.php:441
306
  msgid "General"
307
  msgstr ""
308
 
309
- #: inc/classes/class-form-styles.php:445
310
  msgid "Form width"
311
  msgstr ""
312
 
313
- #: inc/classes/class-form-styles.php:450
314
  msgid "Direction"
315
  msgstr ""
316
 
317
- #: inc/classes/class-form-styles.php:455 inc/classes/class-form-styles.php:634
318
  msgid "Required text"
319
  msgstr ""
320
 
321
- #: inc/classes/class-form-styles.php:460
322
  msgid "Disable submit button until form is valid"
323
  msgstr ""
324
 
325
- #: inc/classes/class-form-styles.php:465
326
  msgid "Font weight"
327
  msgstr ""
328
 
329
- #: inc/classes/class-form-styles.php:470 inc/classes/class-form-styles.php:537
330
- #: inc/classes/class-form-styles.php:615 inc/classes/class-form-styles.php:683
331
  msgid "Colors"
332
  msgstr ""
333
 
334
- #: inc/classes/class-form-styles.php:474
335
  msgid "Primary"
336
  msgstr ""
337
 
338
- #: inc/classes/class-form-styles.php:479
339
  msgid "Success"
340
  msgstr ""
341
 
342
- #: inc/classes/class-form-styles.php:484
343
  msgid "Error"
344
  msgstr ""
345
 
346
- #: inc/classes/class-form-styles.php:489 inc/classes/class-form-styles.php:493
347
  msgid "Form title"
348
  msgstr ""
349
 
350
- #: inc/classes/class-form-styles.php:498 inc/classes/class-form-styles.php:678
351
  msgid "Alignment"
352
  msgstr ""
353
 
354
- #: inc/classes/class-form-styles.php:503
355
  msgid "Font size"
356
  msgstr ""
357
 
358
- #: inc/classes/class-form-styles.php:508
359
  msgid "Part borders & spacing"
360
  msgstr ""
361
 
362
- #: inc/classes/class-form-styles.php:512 inc/classes/class-form-styles.php:541
363
- #: inc/classes/class-form-styles.php:653 inc/classes/class-form-styles.php:702
364
  msgid "Border"
365
  msgstr ""
366
 
367
- #: inc/classes/class-form-styles.php:517
368
  msgid "Border location"
369
  msgstr ""
370
 
371
- #: inc/classes/class-form-styles.php:522 inc/classes/class-form-styles.php:658
372
  msgid "Border radius"
373
  msgstr ""
374
 
375
- #: inc/classes/class-form-styles.php:527
376
  msgid "Outer padding"
377
  msgstr ""
378
 
379
- #: inc/classes/class-form-styles.php:532
380
  msgid "Inner padding"
381
  msgstr ""
382
 
383
- #: inc/classes/class-form-styles.php:546
384
  msgid "Border on focus"
385
  msgstr ""
386
 
387
- #: inc/classes/class-form-styles.php:551 inc/classes/class-form-styles.php:687
388
  msgid "Background"
389
  msgstr ""
390
 
391
- #: inc/classes/class-form-styles.php:556 inc/classes/class-form-styles.php:697
392
  msgid "Background on focus"
393
  msgstr ""
394
 
395
- #: inc/classes/class-form-styles.php:561
396
  msgid "Disable transitions on part colors"
397
  msgstr ""
398
 
399
- #: inc/classes/class-form-styles.php:566
400
  msgid "Part labels & text"
401
  msgstr ""
402
 
403
- #: inc/classes/class-form-styles.php:570
404
  msgid "Part titles"
405
  msgstr ""
406
 
407
- #: inc/classes/class-form-styles.php:575
408
  msgid "Toggle placeholder on part focus"
409
  msgstr ""
410
 
411
- #: inc/classes/class-form-styles.php:580
412
  msgid "Title alignment"
413
  msgstr ""
414
 
415
- #: inc/classes/class-form-styles.php:585
416
  msgid "Title font size"
417
  msgstr ""
418
 
419
- #: inc/classes/class-form-styles.php:590
420
  msgid "Title font weight"
421
  msgstr ""
422
 
423
- #: inc/classes/class-form-styles.php:595
424
  msgid "Description alignment"
425
  msgstr ""
426
 
427
- #: inc/classes/class-form-styles.php:600
428
  msgid "Description font size"
429
  msgstr ""
430
 
431
- #: inc/classes/class-form-styles.php:605
432
  msgid "Placeholder &amp; Value alignment"
433
  msgstr ""
434
 
435
- #: inc/classes/class-form-styles.php:610
436
  msgid "Value font size"
437
  msgstr ""
438
 
439
- #: inc/classes/class-form-styles.php:619
440
  #: inc/classes/parts/class-part-title.php:8
441
  #: inc/classes/parts/class-part-title.php:26
442
  #: inc/templates/parts/customize-address.php:4
@@ -452,16 +453,17 @@ msgstr ""
452
  #: inc/templates/parts/customize-scale.php:4
453
  #: inc/templates/parts/customize-select.php:4
454
  #: inc/templates/parts/customize-single-line-text.php:4
 
455
  #: inc/templates/parts/customize-title.php:4
456
  #: inc/templates/parts/customize-website-url.php:4
457
  msgid "Title"
458
  msgstr ""
459
 
460
- #: inc/classes/class-form-styles.php:624
461
  msgid "Value"
462
  msgstr ""
463
 
464
- #: inc/classes/class-form-styles.php:629
465
  #: inc/classes/parts/class-part-placeholder.php:8
466
  #: inc/templates/parts/customize-address.php:32
467
  #: inc/templates/parts/customize-email.php:32
@@ -473,19 +475,46 @@ msgstr ""
473
  msgid "Placeholder"
474
  msgstr ""
475
 
476
- #: inc/classes/class-form-styles.php:639
 
 
 
 
 
 
477
  msgid "Rating star color"
478
  msgstr ""
479
 
480
- #: inc/classes/class-form-styles.php:644
481
  msgid "Rating star color on hover"
482
  msgstr ""
483
 
484
- #: inc/classes/class-form-styles.php:649
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
485
  msgid "Submit button"
486
  msgstr ""
487
 
488
- #: inc/classes/class-form-styles.php:663
489
  #: inc/templates/parts/customize-address.php:74
490
  #: inc/templates/parts/customize-checkbox.php:51
491
  #: inc/templates/parts/customize-date.php:97
@@ -500,35 +529,36 @@ msgstr ""
500
  #: inc/templates/parts/customize-scale.php:83
501
  #: inc/templates/parts/customize-select.php:45
502
  #: inc/templates/parts/customize-single-line-text.php:42
 
503
  #: inc/templates/parts/customize-title.php:36
504
  #: inc/templates/parts/customize-website-url.php:42
505
  msgid "Width"
506
  msgstr ""
507
 
508
- #: inc/classes/class-form-styles.php:668
509
  msgid "Font Size"
510
  msgstr ""
511
 
512
- #: inc/classes/class-form-styles.php:673
513
  msgid "Font Weight"
514
  msgstr ""
515
 
516
- #: inc/classes/class-form-styles.php:692
517
  msgid "Background on hover"
518
  msgstr ""
519
 
520
- #: inc/classes/class-form-styles.php:707
521
  #: inc/classes/parts/class-part-multi-line-text.php:28
522
  #: inc/classes/parts/class-part-single-line-text.php:28
523
  #: inc/templates/parts/customize-placeholder.php:21
524
  msgid "Text"
525
  msgstr ""
526
 
527
- #: inc/classes/class-form-styles.php:712
528
  msgid "Text on hover"
529
  msgstr ""
530
 
531
- #: inc/classes/class-form-styles.php:717
532
  msgid "Disable transitions on submit button"
533
  msgstr ""
534
 
@@ -856,6 +886,7 @@ msgstr ""
856
  #: inc/classes/parts/class-part-scale.php:163
857
  #: inc/classes/parts/class-part-select.php:157
858
  #: inc/classes/parts/class-part-single-line-text.php:124
 
859
  #: inc/classes/parts/class-part-title.php:154
860
  #: inc/classes/parts/class-part-website-url.php:124
861
  msgid "This field is required."
@@ -871,6 +902,7 @@ msgstr ""
871
 
872
  #: inc/classes/parts/class-part-checkbox.php:29
873
  #: inc/classes/parts/class-part-radio.php:29
 
874
  #: inc/templates/parts/customize-checkbox.php:36
875
  #: inc/templates/parts/customize-radio.php:36
876
  #: inc/templates/parts/customize-select.php:36
@@ -878,6 +910,7 @@ msgid "Options"
878
  msgstr ""
879
 
880
  #: inc/classes/parts/class-part-checkbox.php:174
 
881
  msgid "Checkbox values are not valid."
882
  msgstr ""
883
 
@@ -996,14 +1029,10 @@ msgid "For radio buttons allowing one selection."
996
  msgstr ""
997
 
998
  #: inc/classes/parts/class-part-radio.php:172
 
999
  msgid "Radio values are not valid."
1000
  msgstr ""
1001
 
1002
- #: inc/classes/parts/class-part-rating.php:9
1003
- #: inc/classes/parts/class-part-rating.php:29
1004
- msgid "Rating"
1005
- msgstr ""
1006
-
1007
  #: inc/classes/parts/class-part-rating.php:10
1008
  msgid "For collecting opinions using a zero to five star scale."
1009
  msgstr ""
@@ -1030,7 +1059,7 @@ msgstr ""
1030
  msgid "For selecting one option from a long list. Default value adjustable."
1031
  msgstr ""
1032
 
1033
- #: inc/classes/parts/class-part-select.php:164
1034
  msgid "Select values are not valid."
1035
  msgstr ""
1036
 
@@ -1042,6 +1071,10 @@ msgstr ""
1042
  msgid "For single line text fields."
1043
  msgstr ""
1044
 
 
 
 
 
1045
  #: inc/classes/parts/class-part-title.php:9
1046
  msgid "For displaying personal honorifics."
1047
  msgstr ""
@@ -1191,971 +1224,971 @@ msgstr ""
1191
  msgid "December"
1192
  msgstr ""
1193
 
1194
- #: inc/helpers/helper-misc.php:166
1195
  msgid "How are we doing? Please rate"
1196
  msgstr ""
1197
 
1198
- #: inc/helpers/helper-misc.php:166
1199
  msgid "on"
1200
  msgstr ""
1201
 
1202
- #: inc/helpers/helper-misc.php:166
1203
  msgid "to help us spread the word."
1204
  msgstr ""
1205
 
1206
- #: inc/helpers/helper-misc.php:220
1207
  msgid "Afghanistan"
1208
  msgstr ""
1209
 
1210
- #: inc/helpers/helper-misc.php:221
1211
  msgid "Albania"
1212
  msgstr ""
1213
 
1214
- #: inc/helpers/helper-misc.php:222
1215
  msgid "Algeria"
1216
  msgstr ""
1217
 
1218
- #: inc/helpers/helper-misc.php:223
1219
  msgid "American Samoa"
1220
  msgstr ""
1221
 
1222
- #: inc/helpers/helper-misc.php:224
1223
  msgid "Andorra"
1224
  msgstr ""
1225
 
1226
- #: inc/helpers/helper-misc.php:225
1227
  msgid "Angola"
1228
  msgstr ""
1229
 
1230
- #: inc/helpers/helper-misc.php:226
1231
  msgid "Anguilla"
1232
  msgstr ""
1233
 
1234
- #: inc/helpers/helper-misc.php:227
1235
  msgid "Antarctica"
1236
  msgstr ""
1237
 
1238
- #: inc/helpers/helper-misc.php:228
1239
  msgid "Antigua and Barbuda"
1240
  msgstr ""
1241
 
1242
- #: inc/helpers/helper-misc.php:229
1243
  msgid "Argentina"
1244
  msgstr ""
1245
 
1246
- #: inc/helpers/helper-misc.php:230
1247
  msgid "Armenia"
1248
  msgstr ""
1249
 
1250
- #: inc/helpers/helper-misc.php:231
1251
  msgid "Aruba"
1252
  msgstr ""
1253
 
1254
- #: inc/helpers/helper-misc.php:232
1255
  msgid "Australia"
1256
  msgstr ""
1257
 
1258
- #: inc/helpers/helper-misc.php:233
1259
  msgid "Austria"
1260
  msgstr ""
1261
 
1262
- #: inc/helpers/helper-misc.php:234
1263
  msgid "Azerbaijan"
1264
  msgstr ""
1265
 
1266
- #: inc/helpers/helper-misc.php:235
1267
  msgid "Bahamas"
1268
  msgstr ""
1269
 
1270
- #: inc/helpers/helper-misc.php:236
1271
  msgid "Bahrain"
1272
  msgstr ""
1273
 
1274
- #: inc/helpers/helper-misc.php:237
1275
  msgid "Bangladesh"
1276
  msgstr ""
1277
 
1278
- #: inc/helpers/helper-misc.php:238
1279
  msgid "Barbados"
1280
  msgstr ""
1281
 
1282
- #: inc/helpers/helper-misc.php:239
1283
  msgid "Belarus"
1284
  msgstr ""
1285
 
1286
- #: inc/helpers/helper-misc.php:240
1287
  msgid "Belgium"
1288
  msgstr ""
1289
 
1290
- #: inc/helpers/helper-misc.php:241
1291
  msgid "Belize"
1292
  msgstr ""
1293
 
1294
- #: inc/helpers/helper-misc.php:242
1295
  msgid "Benin"
1296
  msgstr ""
1297
 
1298
- #: inc/helpers/helper-misc.php:243
1299
  msgid "Bermuda"
1300
  msgstr ""
1301
 
1302
- #: inc/helpers/helper-misc.php:244
1303
  msgid "Bhutan"
1304
  msgstr ""
1305
 
1306
- #: inc/helpers/helper-misc.php:245
1307
  msgid "Bolivia"
1308
  msgstr ""
1309
 
1310
- #: inc/helpers/helper-misc.php:246
1311
  msgid "Bosnia and Herzegowina"
1312
  msgstr ""
1313
 
1314
- #: inc/helpers/helper-misc.php:247
1315
  msgid "Botswana"
1316
  msgstr ""
1317
 
1318
- #: inc/helpers/helper-misc.php:248
1319
  msgid "Bouvet Island"
1320
  msgstr ""
1321
 
1322
- #: inc/helpers/helper-misc.php:249
1323
  msgid "Brazil"
1324
  msgstr ""
1325
 
1326
- #: inc/helpers/helper-misc.php:250
1327
  msgid "British Indian Ocean Territory"
1328
  msgstr ""
1329
 
1330
- #: inc/helpers/helper-misc.php:251
1331
  msgid "Brunei Darussalam"
1332
  msgstr ""
1333
 
1334
- #: inc/helpers/helper-misc.php:252
1335
  msgid "Bulgaria"
1336
  msgstr ""
1337
 
1338
- #: inc/helpers/helper-misc.php:253
1339
  msgid "Burkina Faso"
1340
  msgstr ""
1341
 
1342
- #: inc/helpers/helper-misc.php:254
1343
  msgid "Burundi"
1344
  msgstr ""
1345
 
1346
- #: inc/helpers/helper-misc.php:255
1347
  msgid "Cambodia"
1348
  msgstr ""
1349
 
1350
- #: inc/helpers/helper-misc.php:256
1351
  msgid "Cameroon"
1352
  msgstr ""
1353
 
1354
- #: inc/helpers/helper-misc.php:257
1355
  msgid "Canada"
1356
  msgstr ""
1357
 
1358
- #: inc/helpers/helper-misc.php:258
1359
  msgid "Cape Verde"
1360
  msgstr ""
1361
 
1362
- #: inc/helpers/helper-misc.php:259
1363
  msgid "Cayman Islands"
1364
  msgstr ""
1365
 
1366
- #: inc/helpers/helper-misc.php:260
1367
  msgid "Central African Republic"
1368
  msgstr ""
1369
 
1370
- #: inc/helpers/helper-misc.php:261
1371
  msgid "Chad"
1372
  msgstr ""
1373
 
1374
- #: inc/helpers/helper-misc.php:262
1375
  msgid "Chile"
1376
  msgstr ""
1377
 
1378
- #: inc/helpers/helper-misc.php:263
1379
  msgid "China"
1380
  msgstr ""
1381
 
1382
- #: inc/helpers/helper-misc.php:264
1383
  msgid "Christmas Island"
1384
  msgstr ""
1385
 
1386
- #: inc/helpers/helper-misc.php:265
1387
  msgid "Cocos (Keeling) Islands"
1388
  msgstr ""
1389
 
1390
- #: inc/helpers/helper-misc.php:266
1391
  msgid "Colombia"
1392
  msgstr ""
1393
 
1394
- #: inc/helpers/helper-misc.php:267
1395
  msgid "Comoros"
1396
  msgstr ""
1397
 
1398
- #: inc/helpers/helper-misc.php:268
1399
  msgid "Congo"
1400
  msgstr ""
1401
 
1402
- #: inc/helpers/helper-misc.php:269
1403
  msgid "Congo, the Democratic Republic of the"
1404
  msgstr ""
1405
 
1406
- #: inc/helpers/helper-misc.php:270
1407
  msgid "Cook Islands"
1408
  msgstr ""
1409
 
1410
- #: inc/helpers/helper-misc.php:271
1411
  msgid "Costa Rica"
1412
  msgstr ""
1413
 
1414
- #: inc/helpers/helper-misc.php:272
1415
  msgid "Cote d'Ivoire"
1416
  msgstr ""
1417
 
1418
- #: inc/helpers/helper-misc.php:273
1419
  msgid "Croatia (Hrvatska)"
1420
  msgstr ""
1421
 
1422
- #: inc/helpers/helper-misc.php:274
1423
  msgid "Cuba"
1424
  msgstr ""
1425
 
1426
- #: inc/helpers/helper-misc.php:275
1427
  msgid "Cyprus"
1428
  msgstr ""
1429
 
1430
- #: inc/helpers/helper-misc.php:276
1431
  msgid "Czech Republic"
1432
  msgstr ""
1433
 
1434
- #: inc/helpers/helper-misc.php:277
1435
  msgid "Denmark"
1436
  msgstr ""
1437
 
1438
- #: inc/helpers/helper-misc.php:278
1439
  msgid "Djibouti"
1440
  msgstr ""
1441
 
1442
- #: inc/helpers/helper-misc.php:279
1443
  msgid "Dominica"
1444
  msgstr ""
1445
 
1446
- #: inc/helpers/helper-misc.php:280
1447
  msgid "Dominican Republic"
1448
  msgstr ""
1449
 
1450
- #: inc/helpers/helper-misc.php:281
1451
  msgid "East Timor"
1452
  msgstr ""
1453
 
1454
- #: inc/helpers/helper-misc.php:282
1455
  msgid "Ecuador"
1456
  msgstr ""
1457
 
1458
- #: inc/helpers/helper-misc.php:283
1459
  msgid "Egypt"
1460
  msgstr ""
1461
 
1462
- #: inc/helpers/helper-misc.php:284
1463
  msgid "El Salvador"
1464
  msgstr ""
1465
 
1466
- #: inc/helpers/helper-misc.php:285
1467
  msgid "Equatorial Guinea"
1468
  msgstr ""
1469
 
1470
- #: inc/helpers/helper-misc.php:286
1471
  msgid "Eritrea"
1472
  msgstr ""
1473
 
1474
- #: inc/helpers/helper-misc.php:287
1475
  msgid "Estonia"
1476
  msgstr ""
1477
 
1478
- #: inc/helpers/helper-misc.php:288
1479
  msgid "Ethiopia"
1480
  msgstr ""
1481
 
1482
- #: inc/helpers/helper-misc.php:289
1483
  msgid "Falkland Islands (Malvinas)"
1484
  msgstr ""
1485
 
1486
- #: inc/helpers/helper-misc.php:290
1487
  msgid "Faroe Islands"
1488
  msgstr ""
1489
 
1490
- #: inc/helpers/helper-misc.php:291
1491
  msgid "Fiji"
1492
  msgstr ""
1493
 
1494
- #: inc/helpers/helper-misc.php:292
1495
  msgid "Finland"
1496
  msgstr ""
1497
 
1498
- #: inc/helpers/helper-misc.php:293
1499
  msgid "France"
1500
  msgstr ""
1501
 
1502
- #: inc/helpers/helper-misc.php:294
1503
  msgid "France Metropolitan"
1504
  msgstr ""
1505
 
1506
- #: inc/helpers/helper-misc.php:295
1507
  msgid "French Guiana"
1508
  msgstr ""
1509
 
1510
- #: inc/helpers/helper-misc.php:296
1511
  msgid "French Polynesia"
1512
  msgstr ""
1513
 
1514
- #: inc/helpers/helper-misc.php:297
1515
  msgid "French Southern Territories"
1516
  msgstr ""
1517
 
1518
- #: inc/helpers/helper-misc.php:298
1519
  msgid "Gabon"
1520
  msgstr ""
1521
 
1522
- #: inc/helpers/helper-misc.php:299
1523
  msgid "Gambia"
1524
  msgstr ""
1525
 
1526
- #: inc/helpers/helper-misc.php:300
1527
  msgid "Georgia"
1528
  msgstr ""
1529
 
1530
- #: inc/helpers/helper-misc.php:301
1531
  msgid "Germany"
1532
  msgstr ""
1533
 
1534
- #: inc/helpers/helper-misc.php:302
1535
  msgid "Ghana"
1536
  msgstr ""
1537
 
1538
- #: inc/helpers/helper-misc.php:303
1539
  msgid "Gibraltar"
1540
  msgstr ""
1541
 
1542
- #: inc/helpers/helper-misc.php:304
1543
  msgid "Greece"
1544
  msgstr ""
1545
 
1546
- #: inc/helpers/helper-misc.php:305
1547
  msgid "Greenland"
1548
  msgstr ""
1549
 
1550
- #: inc/helpers/helper-misc.php:306
1551
  msgid "Grenada"
1552
  msgstr ""
1553
 
1554
- #: inc/helpers/helper-misc.php:307
1555
  msgid "Guadeloupe"
1556
  msgstr ""
1557
 
1558
- #: inc/helpers/helper-misc.php:308
1559
  msgid "Guam"
1560
  msgstr ""
1561
 
1562
- #: inc/helpers/helper-misc.php:309
1563
  msgid "Guatemala"
1564
  msgstr ""
1565
 
1566
- #: inc/helpers/helper-misc.php:310
1567
  msgid "Guinea"
1568
  msgstr ""
1569
 
1570
- #: inc/helpers/helper-misc.php:311
1571
  msgid "Guinea-Bissau"
1572
  msgstr ""
1573
 
1574
- #: inc/helpers/helper-misc.php:312
1575
  msgid "Guyana"
1576
  msgstr ""
1577
 
1578
- #: inc/helpers/helper-misc.php:313
1579
  msgid "Haiti"
1580
  msgstr ""
1581
 
1582
- #: inc/helpers/helper-misc.php:314
1583
  msgid "Heard and Mc Donald Islands"
1584
  msgstr ""
1585
 
1586
- #: inc/helpers/helper-misc.php:315
1587
  msgid "Holy See (Vatican City State)"
1588
  msgstr ""
1589
 
1590
- #: inc/helpers/helper-misc.php:316
1591
  msgid "Honduras"
1592
  msgstr ""
1593
 
1594
- #: inc/helpers/helper-misc.php:317
1595
  msgid "Hong Kong"
1596
  msgstr ""
1597
 
1598
- #: inc/helpers/helper-misc.php:318
1599
  msgid "Hungary"
1600
  msgstr ""
1601
 
1602
- #: inc/helpers/helper-misc.php:319
1603
  msgid "Iceland"
1604
  msgstr ""
1605
 
1606
- #: inc/helpers/helper-misc.php:320
1607
  msgid "India"
1608
  msgstr ""
1609
 
1610
- #: inc/helpers/helper-misc.php:321
1611
  msgid "Indonesia"
1612
  msgstr ""
1613
 
1614
- #: inc/helpers/helper-misc.php:322
1615
  msgid "Iran (Islamic Republic of)"
1616
  msgstr ""
1617
 
1618
- #: inc/helpers/helper-misc.php:323
1619
  msgid "Iraq"
1620
  msgstr ""
1621
 
1622
- #: inc/helpers/helper-misc.php:324
1623
  msgid "Ireland"
1624
  msgstr ""
1625
 
1626
- #: inc/helpers/helper-misc.php:325
1627
  msgid "Israel"
1628
  msgstr ""
1629
 
1630
- #: inc/helpers/helper-misc.php:326
1631
  msgid "Italy"
1632
  msgstr ""
1633
 
1634
- #: inc/helpers/helper-misc.php:327
1635
  msgid "Jamaica"
1636
  msgstr ""
1637
 
1638
- #: inc/helpers/helper-misc.php:328
1639
  msgid "Japan"
1640
  msgstr ""
1641
 
1642
- #: inc/helpers/helper-misc.php:329
1643
  msgid "Jordan"
1644
  msgstr ""
1645
 
1646
- #: inc/helpers/helper-misc.php:330
1647
  msgid "Kazakhstan"
1648
  msgstr ""
1649
 
1650
- #: inc/helpers/helper-misc.php:331
1651
  msgid "Kenya"
1652
  msgstr ""
1653
 
1654
- #: inc/helpers/helper-misc.php:332
1655
  msgid "Kiribati"
1656
  msgstr ""
1657
 
1658
- #: inc/helpers/helper-misc.php:333
1659
  msgid "Korea, Democratic People's Republic of"
1660
  msgstr ""
1661
 
1662
- #: inc/helpers/helper-misc.php:334
1663
  msgid "Korea, Republic of"
1664
  msgstr ""
1665
 
1666
- #: inc/helpers/helper-misc.php:335
1667
  msgid "Kuwait"
1668
  msgstr ""
1669
 
1670
- #: inc/helpers/helper-misc.php:336
1671
  msgid "Kyrgyzstan"
1672
  msgstr ""
1673
 
1674
- #: inc/helpers/helper-misc.php:337
1675
  msgid "Lao, People's Democratic Republic"
1676
  msgstr ""
1677
 
1678
- #: inc/helpers/helper-misc.php:338
1679
  msgid "Latvia"
1680
  msgstr ""
1681
 
1682
- #: inc/helpers/helper-misc.php:339
1683
  msgid "Lebanon"
1684
  msgstr ""
1685
 
1686
- #: inc/helpers/helper-misc.php:340
1687
  msgid "Lesotho"
1688
  msgstr ""
1689
 
1690
- #: inc/helpers/helper-misc.php:341
1691
  msgid "Liberia"
1692
  msgstr ""
1693
 
1694
- #: inc/helpers/helper-misc.php:342
1695
  msgid "Libyan Arab Jamahiriya"
1696
  msgstr ""
1697
 
1698
- #: inc/helpers/helper-misc.php:343
1699
  msgid "Liechtenstein"
1700
  msgstr ""
1701
 
1702
- #: inc/helpers/helper-misc.php:344
1703
  msgid "Lithuania"
1704
  msgstr ""
1705
 
1706
- #: inc/helpers/helper-misc.php:345
1707
  msgid "Luxembourg"
1708
  msgstr ""
1709
 
1710
- #: inc/helpers/helper-misc.php:346
1711
  msgid "Macau"
1712
  msgstr ""
1713
 
1714
- #: inc/helpers/helper-misc.php:347
1715
  msgid "Macedonia, The Former Yugoslav Republic of"
1716
  msgstr ""
1717
 
1718
- #: inc/helpers/helper-misc.php:348
1719
  msgid "Madagascar"
1720
  msgstr ""
1721
 
1722
- #: inc/helpers/helper-misc.php:349
1723
  msgid "Malawi"
1724
  msgstr ""
1725
 
1726
- #: inc/helpers/helper-misc.php:350
1727
  msgid "Malaysia"
1728
  msgstr ""
1729
 
1730
- #: inc/helpers/helper-misc.php:351
1731
  msgid "Maldives"
1732
  msgstr ""
1733
 
1734
- #: inc/helpers/helper-misc.php:352
1735
  msgid "Mali"
1736
  msgstr ""
1737
 
1738
- #: inc/helpers/helper-misc.php:353
1739
  msgid "Malta"
1740
  msgstr ""
1741
 
1742
- #: inc/helpers/helper-misc.php:354
1743
  msgid "Marshall Islands"
1744
  msgstr ""
1745
 
1746
- #: inc/helpers/helper-misc.php:355
1747
  msgid "Martinique"
1748
  msgstr ""
1749
 
1750
- #: inc/helpers/helper-misc.php:356
1751
  msgid "Mauritania"
1752
  msgstr ""
1753
 
1754
- #: inc/helpers/helper-misc.php:357
1755
  msgid "Mauritius"
1756
  msgstr ""
1757
 
1758
- #: inc/helpers/helper-misc.php:358
1759
  msgid "Mayotte"
1760
  msgstr ""
1761
 
1762
- #: inc/helpers/helper-misc.php:359
1763
  msgid "Mexico"
1764
  msgstr ""
1765
 
1766
- #: inc/helpers/helper-misc.php:360
1767
  msgid "Micronesia, Federated States of"
1768
  msgstr ""
1769
 
1770
- #: inc/helpers/helper-misc.php:361
1771
  msgid "Moldova, Republic of"
1772
  msgstr ""
1773
 
1774
- #: inc/helpers/helper-misc.php:362
1775
  msgid "Monaco"
1776
  msgstr ""
1777
 
1778
- #: inc/helpers/helper-misc.php:363
1779
  msgid "Mongolia"
1780
  msgstr ""
1781
 
1782
- #: inc/helpers/helper-misc.php:364
1783
  msgid "Montserrat"
1784
  msgstr ""
1785
 
1786
- #: inc/helpers/helper-misc.php:365
1787
  msgid "Morocco"
1788
  msgstr ""
1789
 
1790
- #: inc/helpers/helper-misc.php:366
1791
  msgid "Mozambique"
1792
  msgstr ""
1793
 
1794
- #: inc/helpers/helper-misc.php:367
1795
  msgid "Myanmar"
1796
  msgstr ""
1797
 
1798
- #: inc/helpers/helper-misc.php:368
1799
  msgid "Namibia"
1800
  msgstr ""
1801
 
1802
- #: inc/helpers/helper-misc.php:369
1803
  msgid "Nauru"
1804
  msgstr ""
1805
 
1806
- #: inc/helpers/helper-misc.php:370
1807
  msgid "Nepal"
1808
  msgstr ""
1809
 
1810
- #: inc/helpers/helper-misc.php:371
1811
  msgid "Netherlands"
1812
  msgstr ""
1813
 
1814
- #: inc/helpers/helper-misc.php:372
1815
  msgid "Netherlands Antilles"
1816
  msgstr ""
1817
 
1818
- #: inc/helpers/helper-misc.php:373
1819
  msgid "New Caledonia"
1820
  msgstr ""
1821
 
1822
- #: inc/helpers/helper-misc.php:374
1823
  msgid "New Zealand"
1824
  msgstr ""
1825
 
1826
- #: inc/helpers/helper-misc.php:375
1827
  msgid "Nicaragua"
1828
  msgstr ""
1829
 
1830
- #: inc/helpers/helper-misc.php:376
1831
  msgid "Niger"
1832
  msgstr ""
1833
 
1834
- #: inc/helpers/helper-misc.php:377
1835
  msgid "Nigeria"
1836
  msgstr ""
1837
 
1838
- #: inc/helpers/helper-misc.php:378
1839
  msgid "Niue"
1840
  msgstr ""
1841
 
1842
- #: inc/helpers/helper-misc.php:379
1843
  msgid "Norfolk Island"
1844
  msgstr ""
1845
 
1846
- #: inc/helpers/helper-misc.php:380
1847
  msgid "Northern Mariana Islands"
1848
  msgstr ""
1849
 
1850
- #: inc/helpers/helper-misc.php:381
1851
  msgid "Norway"
1852
  msgstr ""
1853
 
1854
- #: inc/helpers/helper-misc.php:382
1855
  msgid "Oman"
1856
  msgstr ""
1857
 
1858
- #: inc/helpers/helper-misc.php:383
1859
  msgid "Pakistan"
1860
  msgstr ""
1861
 
1862
- #: inc/helpers/helper-misc.php:384
1863
  msgid "Palau"
1864
  msgstr ""
1865
 
1866
- #: inc/helpers/helper-misc.php:385
1867
  msgid "Panama"
1868
  msgstr ""
1869
 
1870
- #: inc/helpers/helper-misc.php:386
1871
  msgid "Papua New Guinea"
1872
  msgstr ""
1873
 
1874
- #: inc/helpers/helper-misc.php:387
1875
  msgid "Paraguay"
1876
  msgstr ""
1877
 
1878
- #: inc/helpers/helper-misc.php:388
1879
  msgid "Peru"
1880
  msgstr ""
1881
 
1882
- #: inc/helpers/helper-misc.php:389
1883
  msgid "Philippines"
1884
  msgstr ""
1885
 
1886
- #: inc/helpers/helper-misc.php:390
1887
  msgid "Pitcairn"
1888
  msgstr ""
1889
 
1890
- #: inc/helpers/helper-misc.php:391
1891
  msgid "Poland"
1892
  msgstr ""
1893
 
1894
- #: inc/helpers/helper-misc.php:392
1895
  msgid "Portugal"
1896
  msgstr ""
1897
 
1898
- #: inc/helpers/helper-misc.php:393
1899
  msgid "Puerto Rico"
1900
  msgstr ""
1901
 
1902
- #: inc/helpers/helper-misc.php:394
1903
  msgid "Qatar"
1904
  msgstr ""
1905
 
1906
- #: inc/helpers/helper-misc.php:395
1907
  msgid "Reunion"
1908
  msgstr ""
1909
 
1910
- #: inc/helpers/helper-misc.php:396
1911
  msgid "Romania"
1912
  msgstr ""
1913
 
1914
- #: inc/helpers/helper-misc.php:397
1915
  msgid "Russian Federation"
1916
  msgstr ""
1917
 
1918
- #: inc/helpers/helper-misc.php:398
1919
  msgid "Rwanda"
1920
  msgstr ""
1921
 
1922
- #: inc/helpers/helper-misc.php:399
1923
  msgid "Saint Kitts and Nevis"
1924
  msgstr ""
1925
 
1926
- #: inc/helpers/helper-misc.php:400
1927
  msgid "Saint Lucia"
1928
  msgstr ""
1929
 
1930
- #: inc/helpers/helper-misc.php:401
1931
  msgid "Saint Vincent and the Grenadines"
1932
  msgstr ""
1933
 
1934
- #: inc/helpers/helper-misc.php:402
1935
  msgid "Samoa"
1936
  msgstr ""
1937
 
1938
- #: inc/helpers/helper-misc.php:403
1939
  msgid "San Marino"
1940
  msgstr ""
1941
 
1942
- #: inc/helpers/helper-misc.php:404
1943
  msgid "Sao Tome and Principe"
1944
  msgstr ""
1945
 
1946
- #: inc/helpers/helper-misc.php:405
1947
  msgid "Saudi Arabia"
1948
  msgstr ""
1949
 
1950
- #: inc/helpers/helper-misc.php:406
1951
  msgid "Senegal"
1952
  msgstr ""
1953
 
1954
- #: inc/helpers/helper-misc.php:407
1955
  msgid "Seychelles"
1956
  msgstr ""
1957
 
1958
- #: inc/helpers/helper-misc.php:408
1959
  msgid "Sierra Leone"
1960
  msgstr ""
1961
 
1962
- #: inc/helpers/helper-misc.php:409
1963
  msgid "Singapore"
1964
  msgstr ""
1965
 
1966
- #: inc/helpers/helper-misc.php:410
1967
  msgid "Slovakia (Slovak Republic)"
1968
  msgstr ""
1969
 
1970
- #: inc/helpers/helper-misc.php:411
1971
  msgid "Slovenia"
1972
  msgstr ""
1973
 
1974
- #: inc/helpers/helper-misc.php:412
1975
  msgid "Solomon Islands"
1976
  msgstr ""
1977
 
1978
- #: inc/helpers/helper-misc.php:413
1979
  msgid "Somalia"
1980
  msgstr ""
1981
 
1982
- #: inc/helpers/helper-misc.php:414
1983
  msgid "South Africa"
1984
  msgstr ""
1985
 
1986
- #: inc/helpers/helper-misc.php:415
1987
  msgid "South Georgia and the South Sandwich Islands"
1988
  msgstr ""
1989
 
1990
- #: inc/helpers/helper-misc.php:416
1991
  msgid "Spain"
1992
  msgstr ""
1993
 
1994
- #: inc/helpers/helper-misc.php:417
1995
  msgid "Sri Lanka"
1996
  msgstr ""
1997
 
1998
- #: inc/helpers/helper-misc.php:418
1999
  msgid "St. Helena"
2000
  msgstr ""
2001
 
2002
- #: inc/helpers/helper-misc.php:419
2003
  msgid "St. Pierre and Miquelon"
2004
  msgstr ""
2005
 
2006
- #: inc/helpers/helper-misc.php:420
2007
  msgid "Sudan"
2008
  msgstr ""
2009
 
2010
- #: inc/helpers/helper-misc.php:421
2011
  msgid "Suriname"
2012
  msgstr ""
2013
 
2014
- #: inc/helpers/helper-misc.php:422
2015
  msgid "Svalbard and Jan Mayen Islands"
2016
  msgstr ""
2017
 
2018
- #: inc/helpers/helper-misc.php:423
2019
  msgid "Swaziland"
2020
  msgstr ""
2021
 
2022
- #: inc/helpers/helper-misc.php:424
2023
  msgid "Sweden"
2024
  msgstr ""
2025
 
2026
- #: inc/helpers/helper-misc.php:425
2027
  msgid "Switzerland"
2028
  msgstr ""
2029
 
2030
- #: inc/helpers/helper-misc.php:426
2031
  msgid "Syrian Arab Republic"
2032
  msgstr ""
2033
 
2034
- #: inc/helpers/helper-misc.php:427
2035
  msgid "Taiwan, Province of China"
2036
  msgstr ""
2037
 
2038
- #: inc/helpers/helper-misc.php:428
2039
  msgid "Tajikistan"
2040
  msgstr ""
2041
 
2042
- #: inc/helpers/helper-misc.php:429
2043
  msgid "Tanzania, United Republic of"
2044
  msgstr ""
2045
 
2046
- #: inc/helpers/helper-misc.php:430
2047
  msgid "Thailand"
2048
  msgstr ""
2049
 
2050
- #: inc/helpers/helper-misc.php:431
2051
  msgid "Togo"
2052
  msgstr ""
2053
 
2054
- #: inc/helpers/helper-misc.php:432
2055
  msgid "Tokelau"
2056
  msgstr ""
2057
 
2058
- #: inc/helpers/helper-misc.php:433
2059
  msgid "Tonga"
2060
  msgstr ""
2061
 
2062
- #: inc/helpers/helper-misc.php:434
2063
  msgid "Trinidad and Tobago"
2064
  msgstr ""
2065
 
2066
- #: inc/helpers/helper-misc.php:435
2067
  msgid "Tunisia"
2068
  msgstr ""
2069
 
2070
- #: inc/helpers/helper-misc.php:436
2071
  msgid "Turkey"
2072
  msgstr ""
2073
 
2074
- #: inc/helpers/helper-misc.php:437
2075
  msgid "Turkmenistan"
2076
  msgstr ""
2077
 
2078
- #: inc/helpers/helper-misc.php:438
2079
  msgid "Turks and Caicos Islands"
2080
  msgstr ""
2081
 
2082
- #: inc/helpers/helper-misc.php:439
2083
  msgid "Tuvalu"
2084
  msgstr ""
2085
 
2086
- #: inc/helpers/helper-misc.php:440
2087
  msgid "Uganda"
2088
  msgstr ""
2089
 
2090
- #: inc/helpers/helper-misc.php:441
2091
  msgid "Ukraine"
2092
  msgstr ""
2093
 
2094
- #: inc/helpers/helper-misc.php:442
2095
  msgid "United Arab Emirates"
2096
  msgstr ""
2097
 
2098
- #: inc/helpers/helper-misc.php:443
2099
  msgid "United Kingdom"
2100
  msgstr ""
2101
 
2102
- #: inc/helpers/helper-misc.php:444
2103
  msgid "United States"
2104
  msgstr ""
2105
 
2106
- #: inc/helpers/helper-misc.php:445
2107
  msgid "United States Minor Outlying Islands"
2108
  msgstr ""
2109
 
2110
- #: inc/helpers/helper-misc.php:446
2111
  msgid "Uruguay"
2112
  msgstr ""
2113
 
2114
- #: inc/helpers/helper-misc.php:447
2115
  msgid "Uzbekistan"
2116
  msgstr ""
2117
 
2118
- #: inc/helpers/helper-misc.php:448
2119
  msgid "Vanuatu"
2120
  msgstr ""
2121
 
2122
- #: inc/helpers/helper-misc.php:449
2123
  msgid "Venezuela"
2124
  msgstr ""
2125
 
2126
- #: inc/helpers/helper-misc.php:450
2127
  msgid "Vietnam"
2128
  msgstr ""
2129
 
2130
- #: inc/helpers/helper-misc.php:451
2131
  msgid "Virgin Islands (British)"
2132
  msgstr ""
2133
 
2134
- #: inc/helpers/helper-misc.php:452
2135
  msgid "Virgin Islands (U.S.)"
2136
  msgstr ""
2137
 
2138
- #: inc/helpers/helper-misc.php:453
2139
  msgid "Wallis and Futuna Islands"
2140
  msgstr ""
2141
 
2142
- #: inc/helpers/helper-misc.php:454
2143
  msgid "Western Sahara"
2144
  msgstr ""
2145
 
2146
- #: inc/helpers/helper-misc.php:455
2147
  msgid "Yemen"
2148
  msgstr ""
2149
 
2150
- #: inc/helpers/helper-misc.php:456
2151
  msgid "Yugoslavia"
2152
  msgstr ""
2153
 
2154
- #: inc/helpers/helper-misc.php:457
2155
  msgid "Zambia"
2156
  msgstr ""
2157
 
2158
- #: inc/helpers/helper-misc.php:458
2159
  msgid "Zimbabwe"
2160
  msgstr ""
2161
 
@@ -2256,6 +2289,8 @@ msgstr ""
2256
  #: inc/templates/parts/customize-checkbox.php:80
2257
  #: inc/templates/parts/customize-radio.php:84
2258
  #: inc/templates/parts/customize-select.php:74
 
 
2259
  msgid "Delete"
2260
  msgstr ""
2261
 
@@ -2397,11 +2432,11 @@ msgstr ""
2397
  msgid "of"
2398
  msgstr ""
2399
 
2400
- #: inc/templates/customize-form-style.php:36
2401
  msgid "Back"
2402
  msgstr ""
2403
 
2404
- #: inc/templates/customize-form-style.php:39
2405
  msgid "You are customizing"
2406
  msgstr ""
2407
 
@@ -2430,6 +2465,7 @@ msgstr ""
2430
  #: inc/templates/parts/customize-scale.php:8
2431
  #: inc/templates/parts/customize-select.php:8
2432
  #: inc/templates/parts/customize-single-line-text.php:8
 
2433
  #: inc/templates/parts/customize-title.php:8
2434
  #: inc/templates/parts/customize-website-url.php:8
2435
  msgid "Title placement"
@@ -2448,6 +2484,7 @@ msgstr ""
2448
  #: inc/templates/parts/customize-scale.php:10
2449
  #: inc/templates/parts/customize-select.php:10
2450
  #: inc/templates/parts/customize-single-line-text.php:10
 
2451
  #: inc/templates/parts/customize-title.php:10
2452
  #: inc/templates/parts/customize-website-url.php:10
2453
  msgid "Above"
@@ -2466,6 +2503,7 @@ msgstr ""
2466
  #: inc/templates/parts/customize-scale.php:12
2467
  #: inc/templates/parts/customize-select.php:12
2468
  #: inc/templates/parts/customize-single-line-text.php:12
 
2469
  #: inc/templates/parts/customize-title.php:12
2470
  #: inc/templates/parts/customize-website-url.php:12
2471
  msgid "Below"
@@ -2512,6 +2550,8 @@ msgstr ""
2512
  #: inc/templates/parts/customize-select.php:54
2513
  #: inc/templates/parts/customize-single-line-text.php:19
2514
  #: inc/templates/parts/customize-single-line-text.php:51
 
 
2515
  #: inc/templates/parts/customize-title.php:17
2516
  #: inc/templates/parts/customize-title.php:45
2517
  #: inc/templates/parts/customize-website-url.php:19
@@ -2532,6 +2572,7 @@ msgstr ""
2532
  #: inc/templates/parts/customize-scale.php:21
2533
  #: inc/templates/parts/customize-select.php:21
2534
  #: inc/templates/parts/customize-single-line-text.php:23
 
2535
  #: inc/templates/parts/customize-title.php:21
2536
  #: inc/templates/parts/customize-website-url.php:23
2537
  msgid "Description"
@@ -2549,6 +2590,7 @@ msgstr ""
2549
  #: inc/templates/parts/customize-scale.php:26
2550
  #: inc/templates/parts/customize-select.php:26
2551
  #: inc/templates/parts/customize-single-line-text.php:28
 
2552
  #: inc/templates/parts/customize-title.php:26
2553
  #: inc/templates/parts/customize-website-url.php:28
2554
  msgid "Show description in a tooltip"
@@ -2573,6 +2615,7 @@ msgstr ""
2573
  #: inc/templates/parts/customize-scale.php:85
2574
  #: inc/templates/parts/customize-select.php:47
2575
  #: inc/templates/parts/customize-single-line-text.php:44
 
2576
  #: inc/templates/parts/customize-title.php:38
2577
  #: inc/templates/parts/customize-website-url.php:44
2578
  msgid "Full"
@@ -2628,7 +2671,7 @@ msgstr ""
2628
  #: inc/templates/parts/customize-single-line-text.php:37
2629
  #: inc/templates/parts/customize-title.php:31
2630
  #: inc/templates/parts/customize-website-url.php:37
2631
- msgid "This is a required field"
2632
  msgstr ""
2633
 
2634
  #: inc/templates/parts/customize-address.php:77
@@ -2645,6 +2688,7 @@ msgstr ""
2645
  #: inc/templates/parts/customize-scale.php:86
2646
  #: inc/templates/parts/customize-select.php:48
2647
  #: inc/templates/parts/customize-single-line-text.php:45
 
2648
  #: inc/templates/parts/customize-title.php:39
2649
  #: inc/templates/parts/customize-website-url.php:45
2650
  msgid "Half"
@@ -2664,6 +2708,7 @@ msgstr ""
2664
  #: inc/templates/parts/customize-scale.php:87
2665
  #: inc/templates/parts/customize-select.php:49
2666
  #: inc/templates/parts/customize-single-line-text.php:46
 
2667
  #: inc/templates/parts/customize-title.php:40
2668
  #: inc/templates/parts/customize-website-url.php:46
2669
  msgid "One third"
@@ -2683,6 +2728,7 @@ msgstr ""
2683
  #: inc/templates/parts/customize-scale.php:96
2684
  #: inc/templates/parts/customize-select.php:58
2685
  #: inc/templates/parts/customize-single-line-text.php:55
 
2686
  #: inc/templates/parts/customize-title.php:49
2687
  #: inc/templates/parts/customize-website-url.php:55
2688
  msgid "Custom CSS class"
@@ -2718,10 +2764,13 @@ msgstr ""
2718
  #: inc/templates/parts/customize-checkbox.php:73
2719
  #: inc/templates/parts/customize-radio.php:73
2720
  #: inc/templates/parts/customize-select.php:67
 
 
2721
  msgid "Label"
2722
  msgstr ""
2723
 
2724
  #: inc/templates/parts/customize-checkbox.php:77
 
2725
  msgid "Checked by default"
2726
  msgstr ""
2727
 
@@ -2887,6 +2936,40 @@ msgstr ""
2887
  msgid "options"
2888
  msgstr ""
2889
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2890
  #: inc/templates/parts/frontend-address.php:38
2891
  #: inc/templates/parts/frontend-address.php:51
2892
  msgid "Country"
2
  # This file is distributed under the same license as the HappyForms package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: HappyForms 1.5.1\n"
6
  "Report-Msgid-Bugs-To: https://thethemefoundry.com/support/\n"
7
+ "POT-Creation-Date: 2018-07-10 11:45:20+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
14
  "X-Generator: grunt-wp-i18n 0.4.9\n"
15
 
16
  #: inc/classes/class-form-admin.php:155
17
+ #: inc/classes/class-form-controller.php:79
18
  msgid "View form"
19
  msgstr ""
20
 
124
  msgid " Copy"
125
  msgstr ""
126
 
127
+ #: inc/classes/class-form-controller.php:74
128
+ #: inc/classes/class-form-controller.php:84
129
  #: inc/classes/class-happyforms-plugin.php:144
130
  #: inc/classes/class-happyforms-plugin.php:145
131
  msgid "All Forms"
132
  msgstr ""
133
 
134
+ #: inc/classes/class-form-controller.php:75
135
  #: inc/classes/class-message-admin.php:317
136
  #: inc/classes/class-message-admin.php:790
137
  msgid "Form"
138
  msgstr ""
139
 
140
+ #: inc/classes/class-form-controller.php:76
141
+ #: inc/classes/class-form-controller.php:78
142
  msgid "Build form"
143
  msgstr ""
144
 
145
+ #: inc/classes/class-form-controller.php:77
146
  msgid "Edit form"
147
  msgstr ""
148
 
149
+ #: inc/classes/class-form-controller.php:80
150
  msgid "View forms"
151
  msgstr ""
152
 
153
+ #: inc/classes/class-form-controller.php:81
154
  msgid "Search Forms"
155
  msgstr ""
156
 
157
+ #: inc/classes/class-form-controller.php:82
158
  msgid "No form found"
159
  msgstr ""
160
 
161
+ #: inc/classes/class-form-controller.php:83
162
  msgid "No forms found in Trash"
163
  msgstr ""
164
 
165
+ #: inc/classes/class-form-controller.php:175
166
  msgid "Untitled form"
167
  msgstr ""
168
 
169
+ #: inc/classes/class-form-controller.php:200
170
  msgid "You received a new message"
171
  msgstr ""
172
 
173
+ #: inc/classes/class-form-controller.php:204
174
+ #: inc/classes/class-form-controller.php:212
175
  msgid ""
176
  "Your message has been successfully sent. We appreciate you contacting us "
177
  "and we’ll be in touch soon."
178
  msgstr ""
179
 
180
+ #: inc/classes/class-form-controller.php:208
181
  msgid "We received your message"
182
  msgstr ""
183
 
184
+ #: inc/classes/class-form-controller.php:224
185
  msgid "Submit Form"
186
  msgstr ""
187
 
188
+ #: inc/classes/class-form-controller.php:740
189
  #: inc/classes/class-message-controller.php:236
190
  msgid "Your submission contains errors."
191
  msgstr ""
192
 
193
+ #: inc/classes/class-form-part-library.php:168
194
  msgid "Invalid data"
195
  msgstr ""
196
 
197
+ #: inc/classes/class-form-part-library.php:175
198
  msgid "Part definition not found"
199
  msgstr ""
200
 
201
+ #: inc/classes/class-form-part-library.php:206
202
  msgid "Missing validation callback for field %s"
203
  msgstr ""
204
 
248
  #: inc/templates/parts/customize-scale.php:11
249
  #: inc/templates/parts/customize-select.php:11
250
  #: inc/templates/parts/customize-single-line-text.php:11
251
+ #: inc/templates/parts/customize-table.php:11
252
  #: inc/templates/parts/customize-title.php:11
253
  #: inc/templates/parts/customize-website-url.php:11
254
  msgid "Left"
303
  msgid "Full width"
304
  msgstr ""
305
 
306
+ #: inc/classes/class-form-styles.php:465
307
  msgid "General"
308
  msgstr ""
309
 
310
+ #: inc/classes/class-form-styles.php:469
311
  msgid "Form width"
312
  msgstr ""
313
 
314
+ #: inc/classes/class-form-styles.php:474
315
  msgid "Direction"
316
  msgstr ""
317
 
318
+ #: inc/classes/class-form-styles.php:479 inc/classes/class-form-styles.php:658
319
  msgid "Required text"
320
  msgstr ""
321
 
322
+ #: inc/classes/class-form-styles.php:484
323
  msgid "Disable submit button until form is valid"
324
  msgstr ""
325
 
326
+ #: inc/classes/class-form-styles.php:489
327
  msgid "Font weight"
328
  msgstr ""
329
 
330
+ #: inc/classes/class-form-styles.php:494 inc/classes/class-form-styles.php:561
331
+ #: inc/classes/class-form-styles.php:639 inc/classes/class-form-styles.php:737
332
  msgid "Colors"
333
  msgstr ""
334
 
335
+ #: inc/classes/class-form-styles.php:498
336
  msgid "Primary"
337
  msgstr ""
338
 
339
+ #: inc/classes/class-form-styles.php:503
340
  msgid "Success"
341
  msgstr ""
342
 
343
+ #: inc/classes/class-form-styles.php:508
344
  msgid "Error"
345
  msgstr ""
346
 
347
+ #: inc/classes/class-form-styles.php:513 inc/classes/class-form-styles.php:517
348
  msgid "Form title"
349
  msgstr ""
350
 
351
+ #: inc/classes/class-form-styles.php:522 inc/classes/class-form-styles.php:732
352
  msgid "Alignment"
353
  msgstr ""
354
 
355
+ #: inc/classes/class-form-styles.php:527
356
  msgid "Font size"
357
  msgstr ""
358
 
359
+ #: inc/classes/class-form-styles.php:532
360
  msgid "Part borders & spacing"
361
  msgstr ""
362
 
363
+ #: inc/classes/class-form-styles.php:536 inc/classes/class-form-styles.php:565
364
+ #: inc/classes/class-form-styles.php:707 inc/classes/class-form-styles.php:756
365
  msgid "Border"
366
  msgstr ""
367
 
368
+ #: inc/classes/class-form-styles.php:541
369
  msgid "Border location"
370
  msgstr ""
371
 
372
+ #: inc/classes/class-form-styles.php:546 inc/classes/class-form-styles.php:712
373
  msgid "Border radius"
374
  msgstr ""
375
 
376
+ #: inc/classes/class-form-styles.php:551
377
  msgid "Outer padding"
378
  msgstr ""
379
 
380
+ #: inc/classes/class-form-styles.php:556
381
  msgid "Inner padding"
382
  msgstr ""
383
 
384
+ #: inc/classes/class-form-styles.php:570
385
  msgid "Border on focus"
386
  msgstr ""
387
 
388
+ #: inc/classes/class-form-styles.php:575 inc/classes/class-form-styles.php:741
389
  msgid "Background"
390
  msgstr ""
391
 
392
+ #: inc/classes/class-form-styles.php:580 inc/classes/class-form-styles.php:751
393
  msgid "Background on focus"
394
  msgstr ""
395
 
396
+ #: inc/classes/class-form-styles.php:585
397
  msgid "Disable transitions on part colors"
398
  msgstr ""
399
 
400
+ #: inc/classes/class-form-styles.php:590
401
  msgid "Part labels & text"
402
  msgstr ""
403
 
404
+ #: inc/classes/class-form-styles.php:594
405
  msgid "Part titles"
406
  msgstr ""
407
 
408
+ #: inc/classes/class-form-styles.php:599
409
  msgid "Toggle placeholder on part focus"
410
  msgstr ""
411
 
412
+ #: inc/classes/class-form-styles.php:604
413
  msgid "Title alignment"
414
  msgstr ""
415
 
416
+ #: inc/classes/class-form-styles.php:609
417
  msgid "Title font size"
418
  msgstr ""
419
 
420
+ #: inc/classes/class-form-styles.php:614
421
  msgid "Title font weight"
422
  msgstr ""
423
 
424
+ #: inc/classes/class-form-styles.php:619
425
  msgid "Description alignment"
426
  msgstr ""
427
 
428
+ #: inc/classes/class-form-styles.php:624
429
  msgid "Description font size"
430
  msgstr ""
431
 
432
+ #: inc/classes/class-form-styles.php:629
433
  msgid "Placeholder &amp; Value alignment"
434
  msgstr ""
435
 
436
+ #: inc/classes/class-form-styles.php:634
437
  msgid "Value font size"
438
  msgstr ""
439
 
440
+ #: inc/classes/class-form-styles.php:643
441
  #: inc/classes/parts/class-part-title.php:8
442
  #: inc/classes/parts/class-part-title.php:26
443
  #: inc/templates/parts/customize-address.php:4
453
  #: inc/templates/parts/customize-scale.php:4
454
  #: inc/templates/parts/customize-select.php:4
455
  #: inc/templates/parts/customize-single-line-text.php:4
456
+ #: inc/templates/parts/customize-table.php:4
457
  #: inc/templates/parts/customize-title.php:4
458
  #: inc/templates/parts/customize-website-url.php:4
459
  msgid "Title"
460
  msgstr ""
461
 
462
+ #: inc/classes/class-form-styles.php:648
463
  msgid "Value"
464
  msgstr ""
465
 
466
+ #: inc/classes/class-form-styles.php:653
467
  #: inc/classes/parts/class-part-placeholder.php:8
468
  #: inc/templates/parts/customize-address.php:32
469
  #: inc/templates/parts/customize-email.php:32
475
  msgid "Placeholder"
476
  msgstr ""
477
 
478
+ #: inc/classes/class-form-styles.php:663
479
+ #: inc/classes/parts/class-part-rating.php:9
480
+ #: inc/classes/parts/class-part-rating.php:29
481
+ msgid "Rating"
482
+ msgstr ""
483
+
484
+ #: inc/classes/class-form-styles.php:668
485
  msgid "Rating star color"
486
  msgstr ""
487
 
488
+ #: inc/classes/class-form-styles.php:673
489
  msgid "Rating star color on hover"
490
  msgstr ""
491
 
492
+ #: inc/classes/class-form-styles.php:678
493
+ #: inc/classes/parts/class-part-table.php:8
494
+ msgid "Table"
495
+ msgstr ""
496
+
497
+ #: inc/classes/class-form-styles.php:683
498
+ msgid "Odd row primary"
499
+ msgstr ""
500
+
501
+ #: inc/classes/class-form-styles.php:688
502
+ msgid "Odd row secondary"
503
+ msgstr ""
504
+
505
+ #: inc/classes/class-form-styles.php:693
506
+ msgid "Even row primary"
507
+ msgstr ""
508
+
509
+ #: inc/classes/class-form-styles.php:698
510
+ msgid "Even row secondary"
511
+ msgstr ""
512
+
513
+ #: inc/classes/class-form-styles.php:703
514
  msgid "Submit button"
515
  msgstr ""
516
 
517
+ #: inc/classes/class-form-styles.php:717
518
  #: inc/templates/parts/customize-address.php:74
519
  #: inc/templates/parts/customize-checkbox.php:51
520
  #: inc/templates/parts/customize-date.php:97
529
  #: inc/templates/parts/customize-scale.php:83
530
  #: inc/templates/parts/customize-select.php:45
531
  #: inc/templates/parts/customize-single-line-text.php:42
532
+ #: inc/templates/parts/customize-table.php:67
533
  #: inc/templates/parts/customize-title.php:36
534
  #: inc/templates/parts/customize-website-url.php:42
535
  msgid "Width"
536
  msgstr ""
537
 
538
+ #: inc/classes/class-form-styles.php:722
539
  msgid "Font Size"
540
  msgstr ""
541
 
542
+ #: inc/classes/class-form-styles.php:727
543
  msgid "Font Weight"
544
  msgstr ""
545
 
546
+ #: inc/classes/class-form-styles.php:746
547
  msgid "Background on hover"
548
  msgstr ""
549
 
550
+ #: inc/classes/class-form-styles.php:761
551
  #: inc/classes/parts/class-part-multi-line-text.php:28
552
  #: inc/classes/parts/class-part-single-line-text.php:28
553
  #: inc/templates/parts/customize-placeholder.php:21
554
  msgid "Text"
555
  msgstr ""
556
 
557
+ #: inc/classes/class-form-styles.php:766
558
  msgid "Text on hover"
559
  msgstr ""
560
 
561
+ #: inc/classes/class-form-styles.php:771
562
  msgid "Disable transitions on submit button"
563
  msgstr ""
564
 
886
  #: inc/classes/parts/class-part-scale.php:163
887
  #: inc/classes/parts/class-part-select.php:157
888
  #: inc/classes/parts/class-part-single-line-text.php:124
889
+ #: inc/classes/parts/class-part-table.php:198
890
  #: inc/classes/parts/class-part-title.php:154
891
  #: inc/classes/parts/class-part-website-url.php:124
892
  msgid "This field is required."
902
 
903
  #: inc/classes/parts/class-part-checkbox.php:29
904
  #: inc/classes/parts/class-part-radio.php:29
905
+ #: inc/classes/parts/class-part-table.php:32
906
  #: inc/templates/parts/customize-checkbox.php:36
907
  #: inc/templates/parts/customize-radio.php:36
908
  #: inc/templates/parts/customize-select.php:36
910
  msgstr ""
911
 
912
  #: inc/classes/parts/class-part-checkbox.php:174
913
+ #: inc/classes/parts/class-part-table.php:210
914
  msgid "Checkbox values are not valid."
915
  msgstr ""
916
 
1029
  msgstr ""
1030
 
1031
  #: inc/classes/parts/class-part-radio.php:172
1032
+ #: inc/classes/parts/class-part-table.php:217
1033
  msgid "Radio values are not valid."
1034
  msgstr ""
1035
 
 
 
 
 
 
1036
  #: inc/classes/parts/class-part-rating.php:10
1037
  msgid "For collecting opinions using a zero to five star scale."
1038
  msgstr ""
1059
  msgid "For selecting one option from a long list. Default value adjustable."
1060
  msgstr ""
1061
 
1062
+ #: inc/classes/parts/class-part-select.php:165
1063
  msgid "Select values are not valid."
1064
  msgstr ""
1065
 
1071
  msgid "For single line text fields."
1072
  msgstr ""
1073
 
1074
+ #: inc/classes/parts/class-part-table.php:9
1075
+ msgid "For radios and checkboxes displaying in a grid of rows and columns."
1076
+ msgstr ""
1077
+
1078
  #: inc/classes/parts/class-part-title.php:9
1079
  msgid "For displaying personal honorifics."
1080
  msgstr ""
1224
  msgid "December"
1225
  msgstr ""
1226
 
1227
+ #: inc/helpers/helper-misc.php:172
1228
  msgid "How are we doing? Please rate"
1229
  msgstr ""
1230
 
1231
+ #: inc/helpers/helper-misc.php:172
1232
  msgid "on"
1233
  msgstr ""
1234
 
1235
+ #: inc/helpers/helper-misc.php:172
1236
  msgid "to help us spread the word."
1237
  msgstr ""
1238
 
1239
+ #: inc/helpers/helper-misc.php:226
1240
  msgid "Afghanistan"
1241
  msgstr ""
1242
 
1243
+ #: inc/helpers/helper-misc.php:227
1244
  msgid "Albania"
1245
  msgstr ""
1246
 
1247
+ #: inc/helpers/helper-misc.php:228
1248
  msgid "Algeria"
1249
  msgstr ""
1250
 
1251
+ #: inc/helpers/helper-misc.php:229
1252
  msgid "American Samoa"
1253
  msgstr ""
1254
 
1255
+ #: inc/helpers/helper-misc.php:230
1256
  msgid "Andorra"
1257
  msgstr ""
1258
 
1259
+ #: inc/helpers/helper-misc.php:231
1260
  msgid "Angola"
1261
  msgstr ""
1262
 
1263
+ #: inc/helpers/helper-misc.php:232
1264
  msgid "Anguilla"
1265
  msgstr ""
1266
 
1267
+ #: inc/helpers/helper-misc.php:233
1268
  msgid "Antarctica"
1269
  msgstr ""
1270
 
1271
+ #: inc/helpers/helper-misc.php:234
1272
  msgid "Antigua and Barbuda"
1273
  msgstr ""
1274
 
1275
+ #: inc/helpers/helper-misc.php:235
1276
  msgid "Argentina"
1277
  msgstr ""
1278
 
1279
+ #: inc/helpers/helper-misc.php:236
1280
  msgid "Armenia"
1281
  msgstr ""
1282
 
1283
+ #: inc/helpers/helper-misc.php:237
1284
  msgid "Aruba"
1285
  msgstr ""
1286
 
1287
+ #: inc/helpers/helper-misc.php:238
1288
  msgid "Australia"
1289
  msgstr ""
1290
 
1291
+ #: inc/helpers/helper-misc.php:239
1292
  msgid "Austria"
1293
  msgstr ""
1294
 
1295
+ #: inc/helpers/helper-misc.php:240
1296
  msgid "Azerbaijan"
1297
  msgstr ""
1298
 
1299
+ #: inc/helpers/helper-misc.php:241
1300
  msgid "Bahamas"
1301
  msgstr ""
1302
 
1303
+ #: inc/helpers/helper-misc.php:242
1304
  msgid "Bahrain"
1305
  msgstr ""
1306
 
1307
+ #: inc/helpers/helper-misc.php:243
1308
  msgid "Bangladesh"
1309
  msgstr ""
1310
 
1311
+ #: inc/helpers/helper-misc.php:244
1312
  msgid "Barbados"
1313
  msgstr ""
1314
 
1315
+ #: inc/helpers/helper-misc.php:245
1316
  msgid "Belarus"
1317
  msgstr ""
1318
 
1319
+ #: inc/helpers/helper-misc.php:246
1320
  msgid "Belgium"
1321
  msgstr ""
1322
 
1323
+ #: inc/helpers/helper-misc.php:247
1324
  msgid "Belize"
1325
  msgstr ""
1326
 
1327
+ #: inc/helpers/helper-misc.php:248
1328
  msgid "Benin"
1329
  msgstr ""
1330
 
1331
+ #: inc/helpers/helper-misc.php:249
1332
  msgid "Bermuda"
1333
  msgstr ""
1334
 
1335
+ #: inc/helpers/helper-misc.php:250
1336
  msgid "Bhutan"
1337
  msgstr ""
1338
 
1339
+ #: inc/helpers/helper-misc.php:251
1340
  msgid "Bolivia"
1341
  msgstr ""
1342
 
1343
+ #: inc/helpers/helper-misc.php:252
1344
  msgid "Bosnia and Herzegowina"
1345
  msgstr ""
1346
 
1347
+ #: inc/helpers/helper-misc.php:253
1348
  msgid "Botswana"
1349
  msgstr ""
1350
 
1351
+ #: inc/helpers/helper-misc.php:254
1352
  msgid "Bouvet Island"
1353
  msgstr ""
1354
 
1355
+ #: inc/helpers/helper-misc.php:255
1356
  msgid "Brazil"
1357
  msgstr ""
1358
 
1359
+ #: inc/helpers/helper-misc.php:256
1360
  msgid "British Indian Ocean Territory"
1361
  msgstr ""
1362
 
1363
+ #: inc/helpers/helper-misc.php:257
1364
  msgid "Brunei Darussalam"
1365
  msgstr ""
1366
 
1367
+ #: inc/helpers/helper-misc.php:258
1368
  msgid "Bulgaria"
1369
  msgstr ""
1370
 
1371
+ #: inc/helpers/helper-misc.php:259
1372
  msgid "Burkina Faso"
1373
  msgstr ""
1374
 
1375
+ #: inc/helpers/helper-misc.php:260
1376
  msgid "Burundi"
1377
  msgstr ""
1378
 
1379
+ #: inc/helpers/helper-misc.php:261
1380
  msgid "Cambodia"
1381
  msgstr ""
1382
 
1383
+ #: inc/helpers/helper-misc.php:262
1384
  msgid "Cameroon"
1385
  msgstr ""
1386
 
1387
+ #: inc/helpers/helper-misc.php:263
1388
  msgid "Canada"
1389
  msgstr ""
1390
 
1391
+ #: inc/helpers/helper-misc.php:264
1392
  msgid "Cape Verde"
1393
  msgstr ""
1394
 
1395
+ #: inc/helpers/helper-misc.php:265
1396
  msgid "Cayman Islands"
1397
  msgstr ""
1398
 
1399
+ #: inc/helpers/helper-misc.php:266
1400
  msgid "Central African Republic"
1401
  msgstr ""
1402
 
1403
+ #: inc/helpers/helper-misc.php:267
1404
  msgid "Chad"
1405
  msgstr ""
1406
 
1407
+ #: inc/helpers/helper-misc.php:268
1408
  msgid "Chile"
1409
  msgstr ""
1410
 
1411
+ #: inc/helpers/helper-misc.php:269
1412
  msgid "China"
1413
  msgstr ""
1414
 
1415
+ #: inc/helpers/helper-misc.php:270
1416
  msgid "Christmas Island"
1417
  msgstr ""
1418
 
1419
+ #: inc/helpers/helper-misc.php:271
1420
  msgid "Cocos (Keeling) Islands"
1421
  msgstr ""
1422
 
1423
+ #: inc/helpers/helper-misc.php:272
1424
  msgid "Colombia"
1425
  msgstr ""
1426
 
1427
+ #: inc/helpers/helper-misc.php:273
1428
  msgid "Comoros"
1429
  msgstr ""
1430
 
1431
+ #: inc/helpers/helper-misc.php:274
1432
  msgid "Congo"
1433
  msgstr ""
1434
 
1435
+ #: inc/helpers/helper-misc.php:275
1436
  msgid "Congo, the Democratic Republic of the"
1437
  msgstr ""
1438
 
1439
+ #: inc/helpers/helper-misc.php:276
1440
  msgid "Cook Islands"
1441
  msgstr ""
1442
 
1443
+ #: inc/helpers/helper-misc.php:277
1444
  msgid "Costa Rica"
1445
  msgstr ""
1446
 
1447
+ #: inc/helpers/helper-misc.php:278
1448
  msgid "Cote d'Ivoire"
1449
  msgstr ""
1450
 
1451
+ #: inc/helpers/helper-misc.php:279
1452
  msgid "Croatia (Hrvatska)"
1453
  msgstr ""
1454
 
1455
+ #: inc/helpers/helper-misc.php:280
1456
  msgid "Cuba"
1457
  msgstr ""
1458
 
1459
+ #: inc/helpers/helper-misc.php:281
1460
  msgid "Cyprus"
1461
  msgstr ""
1462
 
1463
+ #: inc/helpers/helper-misc.php:282
1464
  msgid "Czech Republic"
1465
  msgstr ""
1466
 
1467
+ #: inc/helpers/helper-misc.php:283
1468
  msgid "Denmark"
1469
  msgstr ""
1470
 
1471
+ #: inc/helpers/helper-misc.php:284
1472
  msgid "Djibouti"
1473
  msgstr ""
1474
 
1475
+ #: inc/helpers/helper-misc.php:285
1476
  msgid "Dominica"
1477
  msgstr ""
1478
 
1479
+ #: inc/helpers/helper-misc.php:286
1480
  msgid "Dominican Republic"
1481
  msgstr ""
1482
 
1483
+ #: inc/helpers/helper-misc.php:287
1484
  msgid "East Timor"
1485
  msgstr ""
1486
 
1487
+ #: inc/helpers/helper-misc.php:288
1488
  msgid "Ecuador"
1489
  msgstr ""
1490
 
1491
+ #: inc/helpers/helper-misc.php:289
1492
  msgid "Egypt"
1493
  msgstr ""
1494
 
1495
+ #: inc/helpers/helper-misc.php:290
1496
  msgid "El Salvador"
1497
  msgstr ""
1498
 
1499
+ #: inc/helpers/helper-misc.php:291
1500
  msgid "Equatorial Guinea"
1501
  msgstr ""
1502
 
1503
+ #: inc/helpers/helper-misc.php:292
1504
  msgid "Eritrea"
1505
  msgstr ""
1506
 
1507
+ #: inc/helpers/helper-misc.php:293
1508
  msgid "Estonia"
1509
  msgstr ""
1510
 
1511
+ #: inc/helpers/helper-misc.php:294
1512
  msgid "Ethiopia"
1513
  msgstr ""
1514
 
1515
+ #: inc/helpers/helper-misc.php:295
1516
  msgid "Falkland Islands (Malvinas)"
1517
  msgstr ""
1518
 
1519
+ #: inc/helpers/helper-misc.php:296
1520
  msgid "Faroe Islands"
1521
  msgstr ""
1522
 
1523
+ #: inc/helpers/helper-misc.php:297
1524
  msgid "Fiji"
1525
  msgstr ""
1526
 
1527
+ #: inc/helpers/helper-misc.php:298
1528
  msgid "Finland"
1529
  msgstr ""
1530
 
1531
+ #: inc/helpers/helper-misc.php:299
1532
  msgid "France"
1533
  msgstr ""
1534
 
1535
+ #: inc/helpers/helper-misc.php:300
1536
  msgid "France Metropolitan"
1537
  msgstr ""
1538
 
1539
+ #: inc/helpers/helper-misc.php:301
1540
  msgid "French Guiana"
1541
  msgstr ""
1542
 
1543
+ #: inc/helpers/helper-misc.php:302
1544
  msgid "French Polynesia"
1545
  msgstr ""
1546
 
1547
+ #: inc/helpers/helper-misc.php:303
1548
  msgid "French Southern Territories"
1549
  msgstr ""
1550
 
1551
+ #: inc/helpers/helper-misc.php:304
1552
  msgid "Gabon"
1553
  msgstr ""
1554
 
1555
+ #: inc/helpers/helper-misc.php:305
1556
  msgid "Gambia"
1557
  msgstr ""
1558
 
1559
+ #: inc/helpers/helper-misc.php:306
1560
  msgid "Georgia"
1561
  msgstr ""
1562
 
1563
+ #: inc/helpers/helper-misc.php:307
1564
  msgid "Germany"
1565
  msgstr ""
1566
 
1567
+ #: inc/helpers/helper-misc.php:308
1568
  msgid "Ghana"
1569
  msgstr ""
1570
 
1571
+ #: inc/helpers/helper-misc.php:309
1572
  msgid "Gibraltar"
1573
  msgstr ""
1574
 
1575
+ #: inc/helpers/helper-misc.php:310
1576
  msgid "Greece"
1577
  msgstr ""
1578
 
1579
+ #: inc/helpers/helper-misc.php:311
1580
  msgid "Greenland"
1581
  msgstr ""
1582
 
1583
+ #: inc/helpers/helper-misc.php:312
1584
  msgid "Grenada"
1585
  msgstr ""
1586
 
1587
+ #: inc/helpers/helper-misc.php:313
1588
  msgid "Guadeloupe"
1589
  msgstr ""
1590
 
1591
+ #: inc/helpers/helper-misc.php:314
1592
  msgid "Guam"
1593
  msgstr ""
1594
 
1595
+ #: inc/helpers/helper-misc.php:315
1596
  msgid "Guatemala"
1597
  msgstr ""
1598
 
1599
+ #: inc/helpers/helper-misc.php:316
1600
  msgid "Guinea"
1601
  msgstr ""
1602
 
1603
+ #: inc/helpers/helper-misc.php:317
1604
  msgid "Guinea-Bissau"
1605
  msgstr ""
1606
 
1607
+ #: inc/helpers/helper-misc.php:318
1608
  msgid "Guyana"
1609
  msgstr ""
1610
 
1611
+ #: inc/helpers/helper-misc.php:319
1612
  msgid "Haiti"
1613
  msgstr ""
1614
 
1615
+ #: inc/helpers/helper-misc.php:320
1616
  msgid "Heard and Mc Donald Islands"
1617
  msgstr ""
1618
 
1619
+ #: inc/helpers/helper-misc.php:321
1620
  msgid "Holy See (Vatican City State)"
1621
  msgstr ""
1622
 
1623
+ #: inc/helpers/helper-misc.php:322
1624
  msgid "Honduras"
1625
  msgstr ""
1626
 
1627
+ #: inc/helpers/helper-misc.php:323
1628
  msgid "Hong Kong"
1629
  msgstr ""
1630
 
1631
+ #: inc/helpers/helper-misc.php:324
1632
  msgid "Hungary"
1633
  msgstr ""
1634
 
1635
+ #: inc/helpers/helper-misc.php:325
1636
  msgid "Iceland"
1637
  msgstr ""
1638
 
1639
+ #: inc/helpers/helper-misc.php:326
1640
  msgid "India"
1641
  msgstr ""
1642
 
1643
+ #: inc/helpers/helper-misc.php:327
1644
  msgid "Indonesia"
1645
  msgstr ""
1646
 
1647
+ #: inc/helpers/helper-misc.php:328
1648
  msgid "Iran (Islamic Republic of)"
1649
  msgstr ""
1650
 
1651
+ #: inc/helpers/helper-misc.php:329
1652
  msgid "Iraq"
1653
  msgstr ""
1654
 
1655
+ #: inc/helpers/helper-misc.php:330
1656
  msgid "Ireland"
1657
  msgstr ""
1658
 
1659
+ #: inc/helpers/helper-misc.php:331
1660
  msgid "Israel"
1661
  msgstr ""
1662
 
1663
+ #: inc/helpers/helper-misc.php:332
1664
  msgid "Italy"
1665
  msgstr ""
1666
 
1667
+ #: inc/helpers/helper-misc.php:333
1668
  msgid "Jamaica"
1669
  msgstr ""
1670
 
1671
+ #: inc/helpers/helper-misc.php:334
1672
  msgid "Japan"
1673
  msgstr ""
1674
 
1675
+ #: inc/helpers/helper-misc.php:335
1676
  msgid "Jordan"
1677
  msgstr ""
1678
 
1679
+ #: inc/helpers/helper-misc.php:336
1680
  msgid "Kazakhstan"
1681
  msgstr ""
1682
 
1683
+ #: inc/helpers/helper-misc.php:337
1684
  msgid "Kenya"
1685
  msgstr ""
1686
 
1687
+ #: inc/helpers/helper-misc.php:338
1688
  msgid "Kiribati"
1689
  msgstr ""
1690
 
1691
+ #: inc/helpers/helper-misc.php:339
1692
  msgid "Korea, Democratic People's Republic of"
1693
  msgstr ""
1694
 
1695
+ #: inc/helpers/helper-misc.php:340
1696
  msgid "Korea, Republic of"
1697
  msgstr ""
1698
 
1699
+ #: inc/helpers/helper-misc.php:341
1700
  msgid "Kuwait"
1701
  msgstr ""
1702
 
1703
+ #: inc/helpers/helper-misc.php:342
1704
  msgid "Kyrgyzstan"
1705
  msgstr ""
1706
 
1707
+ #: inc/helpers/helper-misc.php:343
1708
  msgid "Lao, People's Democratic Republic"
1709
  msgstr ""
1710
 
1711
+ #: inc/helpers/helper-misc.php:344
1712
  msgid "Latvia"
1713
  msgstr ""
1714
 
1715
+ #: inc/helpers/helper-misc.php:345
1716
  msgid "Lebanon"
1717
  msgstr ""
1718
 
1719
+ #: inc/helpers/helper-misc.php:346
1720
  msgid "Lesotho"
1721
  msgstr ""
1722
 
1723
+ #: inc/helpers/helper-misc.php:347
1724
  msgid "Liberia"
1725
  msgstr ""
1726
 
1727
+ #: inc/helpers/helper-misc.php:348
1728
  msgid "Libyan Arab Jamahiriya"
1729
  msgstr ""
1730
 
1731
+ #: inc/helpers/helper-misc.php:349
1732
  msgid "Liechtenstein"
1733
  msgstr ""
1734
 
1735
+ #: inc/helpers/helper-misc.php:350
1736
  msgid "Lithuania"
1737
  msgstr ""
1738
 
1739
+ #: inc/helpers/helper-misc.php:351
1740
  msgid "Luxembourg"
1741
  msgstr ""
1742
 
1743
+ #: inc/helpers/helper-misc.php:352
1744
  msgid "Macau"
1745
  msgstr ""
1746
 
1747
+ #: inc/helpers/helper-misc.php:353
1748
  msgid "Macedonia, The Former Yugoslav Republic of"
1749
  msgstr ""
1750
 
1751
+ #: inc/helpers/helper-misc.php:354
1752
  msgid "Madagascar"
1753
  msgstr ""
1754
 
1755
+ #: inc/helpers/helper-misc.php:355
1756
  msgid "Malawi"
1757
  msgstr ""
1758
 
1759
+ #: inc/helpers/helper-misc.php:356
1760
  msgid "Malaysia"
1761
  msgstr ""
1762
 
1763
+ #: inc/helpers/helper-misc.php:357
1764
  msgid "Maldives"
1765
  msgstr ""
1766
 
1767
+ #: inc/helpers/helper-misc.php:358
1768
  msgid "Mali"
1769
  msgstr ""
1770
 
1771
+ #: inc/helpers/helper-misc.php:359
1772
  msgid "Malta"
1773
  msgstr ""
1774
 
1775
+ #: inc/helpers/helper-misc.php:360
1776
  msgid "Marshall Islands"
1777
  msgstr ""
1778
 
1779
+ #: inc/helpers/helper-misc.php:361
1780
  msgid "Martinique"
1781
  msgstr ""
1782
 
1783
+ #: inc/helpers/helper-misc.php:362
1784
  msgid "Mauritania"
1785
  msgstr ""
1786
 
1787
+ #: inc/helpers/helper-misc.php:363
1788
  msgid "Mauritius"
1789
  msgstr ""
1790
 
1791
+ #: inc/helpers/helper-misc.php:364
1792
  msgid "Mayotte"
1793
  msgstr ""
1794
 
1795
+ #: inc/helpers/helper-misc.php:365
1796
  msgid "Mexico"
1797
  msgstr ""
1798
 
1799
+ #: inc/helpers/helper-misc.php:366
1800
  msgid "Micronesia, Federated States of"
1801
  msgstr ""
1802
 
1803
+ #: inc/helpers/helper-misc.php:367
1804
  msgid "Moldova, Republic of"
1805
  msgstr ""
1806
 
1807
+ #: inc/helpers/helper-misc.php:368
1808
  msgid "Monaco"
1809
  msgstr ""
1810
 
1811
+ #: inc/helpers/helper-misc.php:369
1812
  msgid "Mongolia"
1813
  msgstr ""
1814
 
1815
+ #: inc/helpers/helper-misc.php:370
1816
  msgid "Montserrat"
1817
  msgstr ""
1818
 
1819
+ #: inc/helpers/helper-misc.php:371
1820
  msgid "Morocco"
1821
  msgstr ""
1822
 
1823
+ #: inc/helpers/helper-misc.php:372
1824
  msgid "Mozambique"
1825
  msgstr ""
1826
 
1827
+ #: inc/helpers/helper-misc.php:373
1828
  msgid "Myanmar"
1829
  msgstr ""
1830
 
1831
+ #: inc/helpers/helper-misc.php:374
1832
  msgid "Namibia"
1833
  msgstr ""
1834
 
1835
+ #: inc/helpers/helper-misc.php:375
1836
  msgid "Nauru"
1837
  msgstr ""
1838
 
1839
+ #: inc/helpers/helper-misc.php:376
1840
  msgid "Nepal"
1841
  msgstr ""
1842
 
1843
+ #: inc/helpers/helper-misc.php:377
1844
  msgid "Netherlands"
1845
  msgstr ""
1846
 
1847
+ #: inc/helpers/helper-misc.php:378
1848
  msgid "Netherlands Antilles"
1849
  msgstr ""
1850
 
1851
+ #: inc/helpers/helper-misc.php:379
1852
  msgid "New Caledonia"
1853
  msgstr ""
1854
 
1855
+ #: inc/helpers/helper-misc.php:380
1856
  msgid "New Zealand"
1857
  msgstr ""
1858
 
1859
+ #: inc/helpers/helper-misc.php:381
1860
  msgid "Nicaragua"
1861
  msgstr ""
1862
 
1863
+ #: inc/helpers/helper-misc.php:382
1864
  msgid "Niger"
1865
  msgstr ""
1866
 
1867
+ #: inc/helpers/helper-misc.php:383
1868
  msgid "Nigeria"
1869
  msgstr ""
1870
 
1871
+ #: inc/helpers/helper-misc.php:384
1872
  msgid "Niue"
1873
  msgstr ""
1874
 
1875
+ #: inc/helpers/helper-misc.php:385
1876
  msgid "Norfolk Island"
1877
  msgstr ""
1878
 
1879
+ #: inc/helpers/helper-misc.php:386
1880
  msgid "Northern Mariana Islands"
1881
  msgstr ""
1882
 
1883
+ #: inc/helpers/helper-misc.php:387
1884
  msgid "Norway"
1885
  msgstr ""
1886
 
1887
+ #: inc/helpers/helper-misc.php:388
1888
  msgid "Oman"
1889
  msgstr ""
1890
 
1891
+ #: inc/helpers/helper-misc.php:389
1892
  msgid "Pakistan"
1893
  msgstr ""
1894
 
1895
+ #: inc/helpers/helper-misc.php:390
1896
  msgid "Palau"
1897
  msgstr ""
1898
 
1899
+ #: inc/helpers/helper-misc.php:391
1900
  msgid "Panama"
1901
  msgstr ""
1902
 
1903
+ #: inc/helpers/helper-misc.php:392
1904
  msgid "Papua New Guinea"
1905
  msgstr ""
1906
 
1907
+ #: inc/helpers/helper-misc.php:393
1908
  msgid "Paraguay"
1909
  msgstr ""
1910
 
1911
+ #: inc/helpers/helper-misc.php:394
1912
  msgid "Peru"
1913
  msgstr ""
1914
 
1915
+ #: inc/helpers/helper-misc.php:395
1916
  msgid "Philippines"
1917
  msgstr ""
1918
 
1919
+ #: inc/helpers/helper-misc.php:396
1920
  msgid "Pitcairn"
1921
  msgstr ""
1922
 
1923
+ #: inc/helpers/helper-misc.php:397
1924
  msgid "Poland"
1925
  msgstr ""
1926
 
1927
+ #: inc/helpers/helper-misc.php:398
1928
  msgid "Portugal"
1929
  msgstr ""
1930
 
1931
+ #: inc/helpers/helper-misc.php:399
1932
  msgid "Puerto Rico"
1933
  msgstr ""
1934
 
1935
+ #: inc/helpers/helper-misc.php:400
1936
  msgid "Qatar"
1937
  msgstr ""
1938
 
1939
+ #: inc/helpers/helper-misc.php:401
1940
  msgid "Reunion"
1941
  msgstr ""
1942
 
1943
+ #: inc/helpers/helper-misc.php:402
1944
  msgid "Romania"
1945
  msgstr ""
1946
 
1947
+ #: inc/helpers/helper-misc.php:403
1948
  msgid "Russian Federation"
1949
  msgstr ""
1950
 
1951
+ #: inc/helpers/helper-misc.php:404
1952
  msgid "Rwanda"
1953
  msgstr ""
1954
 
1955
+ #: inc/helpers/helper-misc.php:405
1956
  msgid "Saint Kitts and Nevis"
1957
  msgstr ""
1958
 
1959
+ #: inc/helpers/helper-misc.php:406
1960
  msgid "Saint Lucia"
1961
  msgstr ""
1962
 
1963
+ #: inc/helpers/helper-misc.php:407
1964
  msgid "Saint Vincent and the Grenadines"
1965
  msgstr ""
1966
 
1967
+ #: inc/helpers/helper-misc.php:408
1968
  msgid "Samoa"
1969
  msgstr ""
1970
 
1971
+ #: inc/helpers/helper-misc.php:409
1972
  msgid "San Marino"
1973
  msgstr ""
1974
 
1975
+ #: inc/helpers/helper-misc.php:410
1976
  msgid "Sao Tome and Principe"
1977
  msgstr ""
1978
 
1979
+ #: inc/helpers/helper-misc.php:411
1980
  msgid "Saudi Arabia"
1981
  msgstr ""
1982
 
1983
+ #: inc/helpers/helper-misc.php:412
1984
  msgid "Senegal"
1985
  msgstr ""
1986
 
1987
+ #: inc/helpers/helper-misc.php:413
1988
  msgid "Seychelles"
1989
  msgstr ""
1990
 
1991
+ #: inc/helpers/helper-misc.php:414
1992
  msgid "Sierra Leone"
1993
  msgstr ""
1994
 
1995
+ #: inc/helpers/helper-misc.php:415
1996
  msgid "Singapore"
1997
  msgstr ""
1998
 
1999
+ #: inc/helpers/helper-misc.php:416
2000
  msgid "Slovakia (Slovak Republic)"
2001
  msgstr ""
2002
 
2003
+ #: inc/helpers/helper-misc.php:417
2004
  msgid "Slovenia"
2005
  msgstr ""
2006
 
2007
+ #: inc/helpers/helper-misc.php:418
2008
  msgid "Solomon Islands"
2009
  msgstr ""
2010
 
2011
+ #: inc/helpers/helper-misc.php:419
2012
  msgid "Somalia"
2013
  msgstr ""
2014
 
2015
+ #: inc/helpers/helper-misc.php:420
2016
  msgid "South Africa"
2017
  msgstr ""
2018
 
2019
+ #: inc/helpers/helper-misc.php:421
2020
  msgid "South Georgia and the South Sandwich Islands"
2021
  msgstr ""
2022
 
2023
+ #: inc/helpers/helper-misc.php:422
2024
  msgid "Spain"
2025
  msgstr ""
2026
 
2027
+ #: inc/helpers/helper-misc.php:423
2028
  msgid "Sri Lanka"
2029
  msgstr ""
2030
 
2031
+ #: inc/helpers/helper-misc.php:424
2032
  msgid "St. Helena"
2033
  msgstr ""
2034
 
2035
+ #: inc/helpers/helper-misc.php:425
2036
  msgid "St. Pierre and Miquelon"
2037
  msgstr ""
2038
 
2039
+ #: inc/helpers/helper-misc.php:426
2040
  msgid "Sudan"
2041
  msgstr ""
2042
 
2043
+ #: inc/helpers/helper-misc.php:427
2044
  msgid "Suriname"
2045
  msgstr ""
2046
 
2047
+ #: inc/helpers/helper-misc.php:428
2048
  msgid "Svalbard and Jan Mayen Islands"
2049
  msgstr ""
2050
 
2051
+ #: inc/helpers/helper-misc.php:429
2052
  msgid "Swaziland"
2053
  msgstr ""
2054
 
2055
+ #: inc/helpers/helper-misc.php:430
2056
  msgid "Sweden"
2057
  msgstr ""
2058
 
2059
+ #: inc/helpers/helper-misc.php:431
2060
  msgid "Switzerland"
2061
  msgstr ""
2062
 
2063
+ #: inc/helpers/helper-misc.php:432
2064
  msgid "Syrian Arab Republic"
2065
  msgstr ""
2066
 
2067
+ #: inc/helpers/helper-misc.php:433
2068
  msgid "Taiwan, Province of China"
2069
  msgstr ""
2070
 
2071
+ #: inc/helpers/helper-misc.php:434
2072
  msgid "Tajikistan"
2073
  msgstr ""
2074
 
2075
+ #: inc/helpers/helper-misc.php:435
2076
  msgid "Tanzania, United Republic of"
2077
  msgstr ""
2078
 
2079
+ #: inc/helpers/helper-misc.php:436
2080
  msgid "Thailand"
2081
  msgstr ""
2082
 
2083
+ #: inc/helpers/helper-misc.php:437
2084
  msgid "Togo"
2085
  msgstr ""
2086
 
2087
+ #: inc/helpers/helper-misc.php:438
2088
  msgid "Tokelau"
2089
  msgstr ""
2090
 
2091
+ #: inc/helpers/helper-misc.php:439
2092
  msgid "Tonga"
2093
  msgstr ""
2094
 
2095
+ #: inc/helpers/helper-misc.php:440
2096
  msgid "Trinidad and Tobago"
2097
  msgstr ""
2098
 
2099
+ #: inc/helpers/helper-misc.php:441
2100
  msgid "Tunisia"
2101
  msgstr ""
2102
 
2103
+ #: inc/helpers/helper-misc.php:442
2104
  msgid "Turkey"
2105
  msgstr ""
2106
 
2107
+ #: inc/helpers/helper-misc.php:443
2108
  msgid "Turkmenistan"
2109
  msgstr ""
2110
 
2111
+ #: inc/helpers/helper-misc.php:444
2112
  msgid "Turks and Caicos Islands"
2113
  msgstr ""
2114
 
2115
+ #: inc/helpers/helper-misc.php:445
2116
  msgid "Tuvalu"
2117
  msgstr ""
2118
 
2119
+ #: inc/helpers/helper-misc.php:446
2120
  msgid "Uganda"
2121
  msgstr ""
2122
 
2123
+ #: inc/helpers/helper-misc.php:447
2124
  msgid "Ukraine"
2125
  msgstr ""
2126
 
2127
+ #: inc/helpers/helper-misc.php:448
2128
  msgid "United Arab Emirates"
2129
  msgstr ""
2130
 
2131
+ #: inc/helpers/helper-misc.php:449
2132
  msgid "United Kingdom"
2133
  msgstr ""
2134
 
2135
+ #: inc/helpers/helper-misc.php:450
2136
  msgid "United States"
2137
  msgstr ""
2138
 
2139
+ #: inc/helpers/helper-misc.php:451
2140
  msgid "United States Minor Outlying Islands"
2141
  msgstr ""
2142
 
2143
+ #: inc/helpers/helper-misc.php:452
2144
  msgid "Uruguay"
2145
  msgstr ""
2146
 
2147
+ #: inc/helpers/helper-misc.php:453
2148
  msgid "Uzbekistan"
2149
  msgstr ""
2150
 
2151
+ #: inc/helpers/helper-misc.php:454
2152
  msgid "Vanuatu"
2153
  msgstr ""
2154
 
2155
+ #: inc/helpers/helper-misc.php:455
2156
  msgid "Venezuela"
2157
  msgstr ""
2158
 
2159
+ #: inc/helpers/helper-misc.php:456
2160
  msgid "Vietnam"
2161
  msgstr ""
2162
 
2163
+ #: inc/helpers/helper-misc.php:457
2164
  msgid "Virgin Islands (British)"
2165
  msgstr ""
2166
 
2167
+ #: inc/helpers/helper-misc.php:458
2168
  msgid "Virgin Islands (U.S.)"
2169
  msgstr ""
2170
 
2171
+ #: inc/helpers/helper-misc.php:459
2172
  msgid "Wallis and Futuna Islands"
2173
  msgstr ""
2174
 
2175
+ #: inc/helpers/helper-misc.php:460
2176
  msgid "Western Sahara"
2177
  msgstr ""
2178
 
2179
+ #: inc/helpers/helper-misc.php:461
2180
  msgid "Yemen"
2181
  msgstr ""
2182
 
2183
+ #: inc/helpers/helper-misc.php:462
2184
  msgid "Yugoslavia"
2185
  msgstr ""
2186
 
2187
+ #: inc/helpers/helper-misc.php:463
2188
  msgid "Zambia"
2189
  msgstr ""
2190
 
2191
+ #: inc/helpers/helper-misc.php:464
2192
  msgid "Zimbabwe"
2193
  msgstr ""
2194
 
2289
  #: inc/templates/parts/customize-checkbox.php:80
2290
  #: inc/templates/parts/customize-radio.php:84
2291
  #: inc/templates/parts/customize-select.php:74
2292
+ #: inc/templates/parts/customize-table.php:96
2293
+ #: inc/templates/parts/customize-table.php:107
2294
  msgid "Delete"
2295
  msgstr ""
2296
 
2432
  msgid "of"
2433
  msgstr ""
2434
 
2435
+ #: inc/templates/customize-form-style.php:29
2436
  msgid "Back"
2437
  msgstr ""
2438
 
2439
+ #: inc/templates/customize-form-style.php:32
2440
  msgid "You are customizing"
2441
  msgstr ""
2442
 
2465
  #: inc/templates/parts/customize-scale.php:8
2466
  #: inc/templates/parts/customize-select.php:8
2467
  #: inc/templates/parts/customize-single-line-text.php:8
2468
+ #: inc/templates/parts/customize-table.php:8
2469
  #: inc/templates/parts/customize-title.php:8
2470
  #: inc/templates/parts/customize-website-url.php:8
2471
  msgid "Title placement"
2484
  #: inc/templates/parts/customize-scale.php:10
2485
  #: inc/templates/parts/customize-select.php:10
2486
  #: inc/templates/parts/customize-single-line-text.php:10
2487
+ #: inc/templates/parts/customize-table.php:10
2488
  #: inc/templates/parts/customize-title.php:10
2489
  #: inc/templates/parts/customize-website-url.php:10
2490
  msgid "Above"
2503
  #: inc/templates/parts/customize-scale.php:12
2504
  #: inc/templates/parts/customize-select.php:12
2505
  #: inc/templates/parts/customize-single-line-text.php:12
2506
+ #: inc/templates/parts/customize-table.php:12
2507
  #: inc/templates/parts/customize-title.php:12
2508
  #: inc/templates/parts/customize-website-url.php:12
2509
  msgid "Below"
2550
  #: inc/templates/parts/customize-select.php:54
2551
  #: inc/templates/parts/customize-single-line-text.php:19
2552
  #: inc/templates/parts/customize-single-line-text.php:51
2553
+ #: inc/templates/parts/customize-table.php:17
2554
+ #: inc/templates/parts/customize-table.php:76
2555
  #: inc/templates/parts/customize-title.php:17
2556
  #: inc/templates/parts/customize-title.php:45
2557
  #: inc/templates/parts/customize-website-url.php:19
2572
  #: inc/templates/parts/customize-scale.php:21
2573
  #: inc/templates/parts/customize-select.php:21
2574
  #: inc/templates/parts/customize-single-line-text.php:23
2575
+ #: inc/templates/parts/customize-table.php:21
2576
  #: inc/templates/parts/customize-title.php:21
2577
  #: inc/templates/parts/customize-website-url.php:23
2578
  msgid "Description"
2590
  #: inc/templates/parts/customize-scale.php:26
2591
  #: inc/templates/parts/customize-select.php:26
2592
  #: inc/templates/parts/customize-single-line-text.php:28
2593
+ #: inc/templates/parts/customize-table.php:26
2594
  #: inc/templates/parts/customize-title.php:26
2595
  #: inc/templates/parts/customize-website-url.php:28
2596
  msgid "Show description in a tooltip"
2615
  #: inc/templates/parts/customize-scale.php:85
2616
  #: inc/templates/parts/customize-select.php:47
2617
  #: inc/templates/parts/customize-single-line-text.php:44
2618
+ #: inc/templates/parts/customize-table.php:69
2619
  #: inc/templates/parts/customize-title.php:38
2620
  #: inc/templates/parts/customize-website-url.php:44
2621
  msgid "Full"
2671
  #: inc/templates/parts/customize-single-line-text.php:37
2672
  #: inc/templates/parts/customize-title.php:31
2673
  #: inc/templates/parts/customize-website-url.php:37
2674
+ msgid "This is required"
2675
  msgstr ""
2676
 
2677
  #: inc/templates/parts/customize-address.php:77
2688
  #: inc/templates/parts/customize-scale.php:86
2689
  #: inc/templates/parts/customize-select.php:48
2690
  #: inc/templates/parts/customize-single-line-text.php:45
2691
+ #: inc/templates/parts/customize-table.php:70
2692
  #: inc/templates/parts/customize-title.php:39
2693
  #: inc/templates/parts/customize-website-url.php:45
2694
  msgid "Half"
2708
  #: inc/templates/parts/customize-scale.php:87
2709
  #: inc/templates/parts/customize-select.php:49
2710
  #: inc/templates/parts/customize-single-line-text.php:46
2711
+ #: inc/templates/parts/customize-table.php:71
2712
  #: inc/templates/parts/customize-title.php:40
2713
  #: inc/templates/parts/customize-website-url.php:46
2714
  msgid "One third"
2728
  #: inc/templates/parts/customize-scale.php:96
2729
  #: inc/templates/parts/customize-select.php:58
2730
  #: inc/templates/parts/customize-single-line-text.php:55
2731
+ #: inc/templates/parts/customize-table.php:80
2732
  #: inc/templates/parts/customize-title.php:49
2733
  #: inc/templates/parts/customize-website-url.php:55
2734
  msgid "Custom CSS class"
2764
  #: inc/templates/parts/customize-checkbox.php:73
2765
  #: inc/templates/parts/customize-radio.php:73
2766
  #: inc/templates/parts/customize-select.php:67
2767
+ #: inc/templates/parts/customize-table.php:89
2768
+ #: inc/templates/parts/customize-table.php:103
2769
  msgid "Label"
2770
  msgstr ""
2771
 
2772
  #: inc/templates/parts/customize-checkbox.php:77
2773
+ #: inc/templates/parts/customize-table.php:93
2774
  msgid "Checked by default"
2775
  msgstr ""
2776
 
2936
  msgid "options"
2937
  msgstr ""
2938
 
2939
+ #: inc/templates/parts/customize-table.php:31
2940
+ msgid "Each row is required"
2941
+ msgstr ""
2942
+
2943
+ #: inc/templates/parts/customize-table.php:36
2944
+ msgid "Allow multiple selections"
2945
+ msgstr ""
2946
+
2947
+ #: inc/templates/parts/customize-table.php:40
2948
+ #: inc/templates/parts/customize-table.php:47
2949
+ msgid "Columns"
2950
+ msgstr ""
2951
+
2952
+ #: inc/templates/parts/customize-table.php:41
2953
+ #: inc/templates/parts/customize-table.php:57
2954
+ msgid "Rows"
2955
+ msgstr ""
2956
+
2957
+ #: inc/templates/parts/customize-table.php:48
2958
+ msgid "No columns added yet. Add one by clicking the <i>Add column</i> link below."
2959
+ msgstr ""
2960
+
2961
+ #: inc/templates/parts/customize-table.php:51
2962
+ msgid "Add column"
2963
+ msgstr ""
2964
+
2965
+ #: inc/templates/parts/customize-table.php:58
2966
+ msgid "No rows added yet. Add one by clicking the <i>Add row</i> link below."
2967
+ msgstr ""
2968
+
2969
+ #: inc/templates/parts/customize-table.php:61
2970
+ msgid "Add row"
2971
+ msgstr ""
2972
+
2973
  #: inc/templates/parts/frontend-address.php:38
2974
  #: inc/templates/parts/frontend-address.php:51
2975
  msgid "Country"
readme.txt CHANGED
@@ -3,9 +3,9 @@
3
  Contributors: thethemefoundry
4
  Tags: contact, contact form, email, feedback form, form, form builder, custom form, lead generation, survey form, quote form
5
  Requires at least: 4.8
6
- Tested up to: 4.9.6
7
  Requires PHP: 5.2.4
8
- Stable tag: 1.5.0
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -50,6 +50,7 @@ HappyForms is the simplest way for you to manage and respond to conversations wi
50
  * Website Link — Formatted to accept URLs.
51
  * Multiple Choice — Checkboxes for multiple selections.
52
  * Single Choice — Radio buttons for single selection.
 
53
  * Dropdown — For long lists and single selection.
54
  * Number — For formatted numeric fields, like phone and price.
55
  * Phone - For formatted contact details.
@@ -74,6 +75,15 @@ Absolutely! HappyForms gets out of the way and is designed to work with any them
74
 
75
  == Changelog ==
76
 
 
 
 
 
 
 
 
 
 
77
  = 1.5.0 =
78
  * Improvement: Forms are now submitted without page refresh.
79
  * Improvement: Submitted values are preserved after an unsuccessful submission.
@@ -166,6 +176,9 @@ Absolutely! HappyForms gets out of the way and is designed to work with any them
166
 
167
  == Upgrade Notice ==
168
 
 
 
 
169
  = 1.5.0 =
170
  * Refresh-free forms, tons of new actions, filters and bugfixes.
171
 
3
  Contributors: thethemefoundry
4
  Tags: contact, contact form, email, feedback form, form, form builder, custom form, lead generation, survey form, quote form
5
  Requires at least: 4.8
6
+ Tested up to: 4.9.7
7
  Requires PHP: 5.2.4
8
+ Stable tag: 1.5.1
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
50
  * Website Link — Formatted to accept URLs.
51
  * Multiple Choice — Checkboxes for multiple selections.
52
  * Single Choice — Radio buttons for single selection.
53
+ * Table — Radios and checkboxes in rows and columns.
54
  * Dropdown — For long lists and single selection.
55
  * Number — For formatted numeric fields, like phone and price.
56
  * Phone - For formatted contact details.
75
 
76
  == Changelog ==
77
 
78
+ = 1.5.1 =
79
+ * New feature: Table part.
80
+ * Improvement: Legal part now accepts formatting with visual editor, including links and lists.
81
+ * Improvement: Part specific styles were moved to standalone sections in Style step.
82
+ * Improvement: Various improvements to parts CSS and compatibility with themes.
83
+ * Bug fix: Some links in Customize screen sidebar were breaking step-by-step navigation.
84
+ * Bug fix: Checkbox part was accepting invalid submission values.
85
+ * Bug fix: HappyForms link in admin menu bar was returning 404.
86
+
87
  = 1.5.0 =
88
  * Improvement: Forms are now submitted without page refresh.
89
  * Improvement: Submitted values are preserved after an unsuccessful submission.
176
 
177
  == Upgrade Notice ==
178
 
179
+ = 1.5.1 =
180
+ * Added Table part. Legal part now allows for links and basic formatting. Various improvements and bug fixes.
181
+
182
  = 1.5.0 =
183
  * Refresh-free forms, tons of new actions, filters and bugfixes.
184