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

Version Description

  • Dashboard notices and Messages tab improvements.
Download this release

Release Info

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

Code changes from version 1.21.0 to 1.21.1

core/assets/css/customize.css CHANGED
@@ -199,6 +199,10 @@ p.description a {
199
  margin-left: 5px;
200
  }
201
 
 
 
 
 
202
  .customize-control-email-parts-list_dummy {
203
  display: flex;
204
  flex-wrap: wrap;
199
  margin-left: 5px;
200
  }
201
 
202
+ .customize-control.customize-control-checkbox_dummy#customize-control-block_emails label a {
203
+ margin-left: 0px;
204
+ }
205
+
206
  .customize-control-email-parts-list_dummy {
207
  display: flex;
208
  flex-wrap: wrap;
core/classes/class-form-messages.php CHANGED
@@ -103,9 +103,23 @@ class HappyForms_Form_Messages {
103
  'group_title' => __( 'Buttons', 'happyforms' ),
104
  'group_description' => __( 'These messages are shown to submitters as they fill out the form to help them trigger an action.', 'happyforms' ),
105
  ),
106
- 4000 => array (
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  'type' => 'group_end',
108
  ),
 
109
  4001 => array (
110
  'type' => 'group_start',
111
  'group_type' => 'group',
103
  'group_title' => __( 'Buttons', 'happyforms' ),
104
  'group_description' => __( 'These messages are shown to submitters as they fill out the form to help them trigger an action.', 'happyforms' ),
105
  ),
106
+
107
+ 2258 => array (
108
+ 'type' => 'group_end',
109
+ ),
110
+
111
+ 2260 => array (
112
+ 'type' => 'group_start',
113
+ 'group_type' => 'group',
114
+ 'group_id' => 'messages-view-links',
115
+ 'group_title' => __( 'Links', 'happyforms' ),
116
+ 'group_description' => __( 'These messages are shown to submitters as they fill out the form to help them go to a new page or move somewhere on the same page.', 'happyforms' ),
117
+ ),
118
+
119
+ 2279 => array (
120
  'type' => 'group_end',
121
  ),
122
+
123
  4001 => array (
124
  'type' => 'group_start',
125
  'group_type' => 'group',
core/classes/class-wp-customize-form-manager.php CHANGED
@@ -156,23 +156,21 @@ class HappyForms_WP_Customize_Form_Manager {
156
  }
157
 
158
  $is_new_form = ( isset( $form_data['ID'] ) && 0 === $form_data['ID'] );
159
- $notice_id = $is_new_form ? 'happyforms_form_created' : 'happyforms_form_updated';
160
- $notice_content = (
161
- $is_new_form ?
162
- __( 'Form saved. To publish, add a Forms block to any post, page or widget area.', 'happyforms' ) :
163
- __( 'Form updated.', 'happyforms' )
164
- );
165
-
166
- happyforms_get_admin_notices()->register(
167
- $notice_id,
168
- $notice_content,
169
- array(
170
- 'type' => 'success',
171
- 'dismissible' => true,
172
- 'screen' => array( 'edit-happyform' ),
173
- 'one-time' => true,
174
- )
175
- );
176
 
177
  wp_send_json_success( $result );
178
  }
@@ -239,11 +237,11 @@ class HappyForms_WP_Customize_Form_Manager {
239
  foreach( $parts_data as $part_data ) {
240
  $template = happyforms_get_form_part( $part_data, $form_data );
241
  $template = stripslashes( $template );
242
-
243
  ob_start();
244
  echo( $template );
245
  $html = ob_get_clean();
246
-
247
  $parts_html[$part_data['id']] = $html;
248
  }
249
 
156
  }
157
 
158
  $is_new_form = ( isset( $form_data['ID'] ) && 0 === $form_data['ID'] );
159
+ if ( $is_new_form ) {
160
+ $notice_id = 'happyforms_form_created';
161
+ $notice_content = __( 'To publish your new form, add a <i>Forms</i> block anywhere your theme allows blocks to be added. If you\'re using an older theme or page builder, you might instead need to copy the form\'s shortcode and paste it into your site as your theme\'s author recommends.', 'happyforms' );
162
+
163
+ happyforms_get_admin_notices()->register(
164
+ $notice_id,
165
+ $notice_content,
166
+ array(
167
+ 'type' => 'info',
168
+ 'dismissible' => true,
169
+ 'screen' => array( 'edit-happyform' ),
170
+ 'one-time' => true,
171
+ )
172
+ );
173
+ }
 
 
174
 
175
  wp_send_json_success( $result );
176
  }
237
  foreach( $parts_data as $part_data ) {
238
  $template = happyforms_get_form_part( $part_data, $form_data );
239
  $template = stripslashes( $template );
240
+
241
  ob_start();
242
  echo( $template );
243
  $html = ob_get_clean();
244
+
245
  $parts_html[$part_data['id']] = $html;
246
  }
247
 
happyforms.php CHANGED
@@ -5,7 +5,7 @@
5
  * Plugin URI: https://happyforms.io
6
  * Description: Form builder to get in touch with visitors, grow your email list and collect payments.
7
  * Author: Happyforms
8
- * Version: 1.21.0
9
  * Author URI: https://happyforms.io
10
  * Upgrade URI: https://happyforms.io/upgrade
11
  */
@@ -22,7 +22,7 @@ if ( defined( 'HAPPYFORMS_UPGRADE_VERSION' ) ) {
22
  /**
23
  * The current version of the plugin.
24
  */
25
- define( 'HAPPYFORMS_VERSION', '1.21.0' );
26
 
27
  if ( ! function_exists( 'happyforms_get_version' ) ):
28
 
5
  * Plugin URI: https://happyforms.io
6
  * Description: Form builder to get in touch with visitors, grow your email list and collect payments.
7
  * Author: Happyforms
8
+ * Version: 1.21.1
9
  * Author URI: https://happyforms.io
10
  * Upgrade URI: https://happyforms.io/upgrade
11
  */
22
  /**
23
  * The current version of the plugin.
24
  */
25
+ define( 'HAPPYFORMS_VERSION', '1.21.1' );
26
 
27
  if ( ! function_exists( 'happyforms_get_version' ) ):
28
 
inc/assets/jsx/build/admin/dashboard-modals.asset.php CHANGED
@@ -1 +1 @@
1
- <?php return array('dependencies' => array('wp-components', 'wp-element', 'wp-i18n', 'wp-polyfill'), 'version' => 'bf3f46bd46c82992c8d35117b7d3e076');
1
+ <?php return array('dependencies' => array('wp-components', 'wp-element', 'wp-i18n'), 'version' => '2ee486410cb3564c6e1c');
inc/assets/jsx/build/admin/dashboard-modals.js CHANGED
@@ -1,108 +1,23 @@
1
- /******/ (function(modules) { // webpackBootstrap
2
- /******/ // The module cache
3
- /******/ var installedModules = {};
4
- /******/
5
- /******/ // The require function
6
- /******/ function __webpack_require__(moduleId) {
7
- /******/
8
- /******/ // Check if module is in cache
9
- /******/ if(installedModules[moduleId]) {
10
- /******/ return installedModules[moduleId].exports;
11
- /******/ }
12
- /******/ // Create a new module (and put it into the cache)
13
- /******/ var module = installedModules[moduleId] = {
14
- /******/ i: moduleId,
15
- /******/ l: false,
16
- /******/ exports: {}
17
- /******/ };
18
- /******/
19
- /******/ // Execute the module function
20
- /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21
- /******/
22
- /******/ // Flag the module as loaded
23
- /******/ module.l = true;
24
- /******/
25
- /******/ // Return the exports of the module
26
- /******/ return module.exports;
27
- /******/ }
28
- /******/
29
- /******/
30
- /******/ // expose the modules object (__webpack_modules__)
31
- /******/ __webpack_require__.m = modules;
32
- /******/
33
- /******/ // expose the module cache
34
- /******/ __webpack_require__.c = installedModules;
35
- /******/
36
- /******/ // define getter function for harmony exports
37
- /******/ __webpack_require__.d = function(exports, name, getter) {
38
- /******/ if(!__webpack_require__.o(exports, name)) {
39
- /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
40
- /******/ }
41
- /******/ };
42
- /******/
43
- /******/ // define __esModule on exports
44
- /******/ __webpack_require__.r = function(exports) {
45
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
46
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
47
- /******/ }
48
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
49
- /******/ };
50
- /******/
51
- /******/ // create a fake namespace object
52
- /******/ // mode & 1: value is a module id, require it
53
- /******/ // mode & 2: merge all properties of value into the ns
54
- /******/ // mode & 4: return value when already ns object
55
- /******/ // mode & 8|1: behave like require
56
- /******/ __webpack_require__.t = function(value, mode) {
57
- /******/ if(mode & 1) value = __webpack_require__(value);
58
- /******/ if(mode & 8) return value;
59
- /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
60
- /******/ var ns = Object.create(null);
61
- /******/ __webpack_require__.r(ns);
62
- /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
63
- /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
64
- /******/ return ns;
65
- /******/ };
66
- /******/
67
- /******/ // getDefaultExport function for compatibility with non-harmony modules
68
- /******/ __webpack_require__.n = function(module) {
69
- /******/ var getter = module && module.__esModule ?
70
- /******/ function getDefault() { return module['default']; } :
71
- /******/ function getModuleExports() { return module; };
72
- /******/ __webpack_require__.d(getter, 'a', getter);
73
- /******/ return getter;
74
- /******/ };
75
- /******/
76
- /******/ // Object.prototype.hasOwnProperty.call
77
- /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
78
- /******/
79
- /******/ // __webpack_public_path__
80
- /******/ __webpack_require__.p = "";
81
- /******/
82
- /******/
83
- /******/ // Load entry module and return exports
84
- /******/ return __webpack_require__(__webpack_require__.s = "./build/inc/assets/jsx/src/admin/dashboard-modals.js");
85
- /******/ })
86
- /************************************************************************/
87
- /******/ ({
88
 
89
  /***/ "./build/core/assets/jsx/src/admin/dashboard-modals.js":
90
  /*!*************************************************************!*\
91
  !*** ./build/core/assets/jsx/src/admin/dashboard-modals.js ***!
92
  \*************************************************************/
93
- /*! exports provided: default */
94
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
95
 
96
- "use strict";
97
  __webpack_require__.r(__webpack_exports__);
98
- /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js");
99
- /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
100
- /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
101
- /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__);
102
- /* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components");
103
- /* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__);
104
- /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
105
- /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
 
106
 
107
 
108
 
@@ -113,55 +28,145 @@ __webpack_require__.r(__webpack_exports__);
113
  * Modal handler class
114
  *
115
  */
116
-
117
- /* harmony default export */ __webpack_exports__["default"] = (function ($, settings) {
118
  const {
119
  render
120
  } = wp.element;
 
121
  /**
122
  *
123
  * Modal wrapper
124
  *
125
  */
126
-
127
  const ModalProvider = props => {
128
- return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__["SlotFillProvider"], null, props.modal, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__["Popover"].Slot, null));
129
  };
130
-
131
  return class DashboardModals {
 
132
  constructor() {
133
- _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, "area", null);
134
-
135
  this.area = document.getElementById('happyforms-modals-area');
136
  }
137
-
138
  openModal(modal) {
139
- render(Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(ModalProvider, {
140
  modal: modal
141
  }), this.area);
142
  }
143
-
144
  closeModal(modal) {
145
- render(Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["Fragment"], null), this.area);
146
  $.post(ajaxurl, {
147
  action: settings.actionModalDismiss,
148
  id: modal
149
  });
150
  }
151
-
152
  };
153
- });
154
 
155
  /***/ }),
156
 
157
- /***/ "./build/inc/assets/jsx/src/admin/dashboard-modals.js":
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
158
  /*!************************************************************!*\
159
  !*** ./build/inc/assets/jsx/src/admin/dashboard-modals.js ***!
160
  \************************************************************/
161
- /*! no exports provided */
162
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
163
-
164
- "use strict";
165
  __webpack_require__.r(__webpack_exports__);
166
  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
167
  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
@@ -175,7 +180,6 @@ __webpack_require__.r(__webpack_exports__);
175
 
176
 
177
 
178
-
179
  (function ($, settings) {
180
  /**
181
  *
@@ -184,12 +188,10 @@ __webpack_require__.r(__webpack_exports__);
184
  */
185
  const OnboardingModal = props => {
186
  const imageURL = `${settings.pluginURL}/inc/assets/img/welcome.svg`;
187
- const [email, setEmail] = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["useState"])('');
188
-
189
  const onEmailChange = e => {
190
  setEmail(e.target.value);
191
  };
192
-
193
  const onRequestClose = () => {
194
  $.post(ajaxurl, {
195
  action: settings.onboardingModalAction,
@@ -198,156 +200,89 @@ __webpack_require__.r(__webpack_exports__);
198
  });
199
  return props.onRequestClose();
200
  };
201
-
202
- return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__["Guide"], {
203
  onFinish: onRequestClose,
204
  className: "happyforms-modal happyforms-modal--onboarding",
205
  pages: [{
206
- image: Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("picture", null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("img", {
207
  src: imageURL
208
  })),
209
- content: Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
210
  className: "happyforms-modal__header"
211
- }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("h1", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('One last thing', 'happyforms')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('We\'ll occasionally send you emails about plugin updates. And don\'t sweat it, you can unsubscribe anytime.', 'happyforms'))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
212
  className: "happyforms-modal__body"
213
- }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("label", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Email address', 'happyforms')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("input", {
214
  type: "email",
215
  value: email,
216
  onChange: onEmailChange,
217
  autoFocus: true
218
- })), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
219
  className: "happyforms-modal__footer"
220
- }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__["BaseControl"], null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__["Button"], {
221
  isPrimary: true,
222
  onClick: onRequestClose,
223
- text: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Continue', 'happyforms')
224
  }))))
225
  }]
226
  });
227
  };
 
228
  /**
229
  *
230
  * Upgrade modal
231
  *
232
  */
233
-
234
-
235
  const UpgradeModal = props => {
236
  const imageURL = `${settings.pluginURL}/inc/assets/img/upgrade.svg`;
237
- return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__["Guide"], {
238
  onFinish: props.onRequestClose,
239
  className: "happyforms-modal happyforms-modal--upgrade",
240
  pages: [{
241
- image: Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("picture", null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("img", {
242
  src: imageURL
243
  })),
244
- content: Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
245
  className: "happyforms-modal__header"
246
- }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("h1", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Start with a free trial', 'happyforms'))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
247
  className: "happyforms-modal__body"
248
- }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('You\'re just a mouse click and a few key taps away from building better forms.', 'happyforms')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("ul", null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("li", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Advanced features and integrations', 'happyforms')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("li", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Help from our friendly support team', 'happyforms')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("li", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Automatically transfer your free forms', 'happyforms')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("li", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('New updates every second week', 'happyforms'))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Ready to build better forms?', 'happyforms'))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
249
  className: "happyforms-modal__footer"
250
- }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__["BaseControl"], null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__["Button"], {
251
  isPrimary: true,
252
  href: "https://happyforms.io/upgrade",
253
  target: "_blank",
254
- text: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Start a Free 7-day Trial', 'happyforms')
255
- }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__["Button"], {
256
  isSecondary: true,
257
  onClick: props.onRequestClose,
258
- text: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Nope, Maybe Later', 'happyforms')
259
  }))))
260
  }]
261
  });
262
  };
263
-
264
- const DashboardModalsBaseClass = Object(_happyforms_core_jsx_src_admin_dashboard_modals__WEBPACK_IMPORTED_MODULE_1__["default"])($, settings);
265
-
266
  class DashboardModalsClass extends DashboardModalsBaseClass {
267
  openOnboardingModal() {
268
- var modal = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(OnboardingModal, {
269
  onRequestClose: this.closeModal.bind(this, 'onboarding'),
270
  status: settings.trackingStatus
271
  });
272
  this.openModal(modal);
273
  }
274
-
275
  openUpgradeModal() {
276
- var modal = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(UpgradeModal, {
277
  onRequestClose: this.closeModal.bind(this, 'upgrade')
278
  });
279
  this.openModal(modal);
280
  }
281
-
282
  }
283
-
284
  ;
285
  var happyForms = window.happyForms || {};
286
  window.happyForms = happyForms;
287
  happyForms.modals = new DashboardModalsClass();
288
  })(jQuery, _happyFormsDashboardModalsSettings);
 
289
 
290
- /***/ }),
291
-
292
- /***/ "./node_modules/@babel/runtime/helpers/defineProperty.js":
293
- /*!***************************************************************!*\
294
- !*** ./node_modules/@babel/runtime/helpers/defineProperty.js ***!
295
- \***************************************************************/
296
- /*! no static exports found */
297
- /***/ (function(module, exports) {
298
-
299
- function _defineProperty(obj, key, value) {
300
- if (key in obj) {
301
- Object.defineProperty(obj, key, {
302
- value: value,
303
- enumerable: true,
304
- configurable: true,
305
- writable: true
306
- });
307
- } else {
308
- obj[key] = value;
309
- }
310
-
311
- return obj;
312
- }
313
-
314
- module.exports = _defineProperty;
315
- module.exports["default"] = module.exports, module.exports.__esModule = true;
316
-
317
- /***/ }),
318
-
319
- /***/ "@wordpress/components":
320
- /*!************************************!*\
321
- !*** external ["wp","components"] ***!
322
- \************************************/
323
- /*! no static exports found */
324
- /***/ (function(module, exports) {
325
-
326
- (function() { module.exports = window["wp"]["components"]; }());
327
-
328
- /***/ }),
329
-
330
- /***/ "@wordpress/element":
331
- /*!*********************************!*\
332
- !*** external ["wp","element"] ***!
333
- \*********************************/
334
- /*! no static exports found */
335
- /***/ (function(module, exports) {
336
-
337
- (function() { module.exports = window["wp"]["element"]; }());
338
-
339
- /***/ }),
340
-
341
- /***/ "@wordpress/i18n":
342
- /*!******************************!*\
343
- !*** external ["wp","i18n"] ***!
344
- \******************************/
345
- /*! no static exports found */
346
- /***/ (function(module, exports) {
347
-
348
- (function() { module.exports = window["wp"]["i18n"]; }());
349
-
350
- /***/ })
351
-
352
- /******/ });
353
  //# sourceMappingURL=dashboard-modals.js.map
1
+ /******/ (() => { // webpackBootstrap
2
+ /******/ "use strict";
3
+ /******/ var __webpack_modules__ = ({
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
 
5
  /***/ "./build/core/assets/jsx/src/admin/dashboard-modals.js":
6
  /*!*************************************************************!*\
7
  !*** ./build/core/assets/jsx/src/admin/dashboard-modals.js ***!
8
  \*************************************************************/
9
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
 
10
 
 
11
  __webpack_require__.r(__webpack_exports__);
12
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
13
+ /* harmony export */ "default": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)
14
+ /* harmony export */ });
15
+ /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
16
+ /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
17
+ /* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components");
18
+ /* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__);
19
+ /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
20
+ /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__);
21
 
22
 
23
 
28
  * Modal handler class
29
  *
30
  */
31
+ /* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__($, settings) {
 
32
  const {
33
  render
34
  } = wp.element;
35
+
36
  /**
37
  *
38
  * Modal wrapper
39
  *
40
  */
 
41
  const ModalProvider = props => {
42
+ return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__.SlotFillProvider, null, props.modal, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__.Popover.Slot, null));
43
  };
 
44
  return class DashboardModals {
45
+ area = null;
46
  constructor() {
 
 
47
  this.area = document.getElementById('happyforms-modals-area');
48
  }
 
49
  openModal(modal) {
50
+ render((0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(ModalProvider, {
51
  modal: modal
52
  }), this.area);
53
  }
 
54
  closeModal(modal) {
55
+ render((0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.Fragment, null), this.area);
56
  $.post(ajaxurl, {
57
  action: settings.actionModalDismiss,
58
  id: modal
59
  });
60
  }
 
61
  };
62
+ }
63
 
64
  /***/ }),
65
 
66
+ /***/ "@wordpress/components":
67
+ /*!************************************!*\
68
+ !*** external ["wp","components"] ***!
69
+ \************************************/
70
+ /***/ ((module) => {
71
+
72
+ module.exports = window["wp"]["components"];
73
+
74
+ /***/ }),
75
+
76
+ /***/ "@wordpress/element":
77
+ /*!*********************************!*\
78
+ !*** external ["wp","element"] ***!
79
+ \*********************************/
80
+ /***/ ((module) => {
81
+
82
+ module.exports = window["wp"]["element"];
83
+
84
+ /***/ }),
85
+
86
+ /***/ "@wordpress/i18n":
87
+ /*!******************************!*\
88
+ !*** external ["wp","i18n"] ***!
89
+ \******************************/
90
+ /***/ ((module) => {
91
+
92
+ module.exports = window["wp"]["i18n"];
93
+
94
+ /***/ })
95
+
96
+ /******/ });
97
+ /************************************************************************/
98
+ /******/ // The module cache
99
+ /******/ var __webpack_module_cache__ = {};
100
+ /******/
101
+ /******/ // The require function
102
+ /******/ function __webpack_require__(moduleId) {
103
+ /******/ // Check if module is in cache
104
+ /******/ var cachedModule = __webpack_module_cache__[moduleId];
105
+ /******/ if (cachedModule !== undefined) {
106
+ /******/ return cachedModule.exports;
107
+ /******/ }
108
+ /******/ // Create a new module (and put it into the cache)
109
+ /******/ var module = __webpack_module_cache__[moduleId] = {
110
+ /******/ // no module.id needed
111
+ /******/ // no module.loaded needed
112
+ /******/ exports: {}
113
+ /******/ };
114
+ /******/
115
+ /******/ // Execute the module function
116
+ /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
117
+ /******/
118
+ /******/ // Return the exports of the module
119
+ /******/ return module.exports;
120
+ /******/ }
121
+ /******/
122
+ /************************************************************************/
123
+ /******/ /* webpack/runtime/compat get default export */
124
+ /******/ (() => {
125
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
126
+ /******/ __webpack_require__.n = (module) => {
127
+ /******/ var getter = module && module.__esModule ?
128
+ /******/ () => (module['default']) :
129
+ /******/ () => (module);
130
+ /******/ __webpack_require__.d(getter, { a: getter });
131
+ /******/ return getter;
132
+ /******/ };
133
+ /******/ })();
134
+ /******/
135
+ /******/ /* webpack/runtime/define property getters */
136
+ /******/ (() => {
137
+ /******/ // define getter functions for harmony exports
138
+ /******/ __webpack_require__.d = (exports, definition) => {
139
+ /******/ for(var key in definition) {
140
+ /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
141
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
142
+ /******/ }
143
+ /******/ }
144
+ /******/ };
145
+ /******/ })();
146
+ /******/
147
+ /******/ /* webpack/runtime/hasOwnProperty shorthand */
148
+ /******/ (() => {
149
+ /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
150
+ /******/ })();
151
+ /******/
152
+ /******/ /* webpack/runtime/make namespace object */
153
+ /******/ (() => {
154
+ /******/ // define __esModule on exports
155
+ /******/ __webpack_require__.r = (exports) => {
156
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
157
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
158
+ /******/ }
159
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
160
+ /******/ };
161
+ /******/ })();
162
+ /******/
163
+ /************************************************************************/
164
+ var __webpack_exports__ = {};
165
+ // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
166
+ (() => {
167
  /*!************************************************************!*\
168
  !*** ./build/inc/assets/jsx/src/admin/dashboard-modals.js ***!
169
  \************************************************************/
 
 
 
 
170
  __webpack_require__.r(__webpack_exports__);
171
  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
172
  /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
180
 
181
 
182
 
 
183
  (function ($, settings) {
184
  /**
185
  *
188
  */
189
  const OnboardingModal = props => {
190
  const imageURL = `${settings.pluginURL}/inc/assets/img/welcome.svg`;
191
+ const [email, setEmail] = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.useState)('');
 
192
  const onEmailChange = e => {
193
  setEmail(e.target.value);
194
  };
 
195
  const onRequestClose = () => {
196
  $.post(ajaxurl, {
197
  action: settings.onboardingModalAction,
200
  });
201
  return props.onRequestClose();
202
  };
203
+ return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__.Guide, {
 
204
  onFinish: onRequestClose,
205
  className: "happyforms-modal happyforms-modal--onboarding",
206
  pages: [{
207
+ image: (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("picture", null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("img", {
208
  src: imageURL
209
  })),
210
+ content: (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
211
  className: "happyforms-modal__header"
212
+ }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h1", null, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('One last thing', 'happyforms')), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", null, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('We\'ll occasionally send you emails about plugin updates. And don\'t sweat it, you can unsubscribe anytime.', 'happyforms'))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
213
  className: "happyforms-modal__body"
214
+ }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("label", null, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Email address', 'happyforms')), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("input", {
215
  type: "email",
216
  value: email,
217
  onChange: onEmailChange,
218
  autoFocus: true
219
+ })), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
220
  className: "happyforms-modal__footer"
221
+ }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__.BaseControl, null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__.Button, {
222
  isPrimary: true,
223
  onClick: onRequestClose,
224
+ text: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Continue', 'happyforms')
225
  }))))
226
  }]
227
  });
228
  };
229
+
230
  /**
231
  *
232
  * Upgrade modal
233
  *
234
  */
 
 
235
  const UpgradeModal = props => {
236
  const imageURL = `${settings.pluginURL}/inc/assets/img/upgrade.svg`;
237
+ return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__.Guide, {
238
  onFinish: props.onRequestClose,
239
  className: "happyforms-modal happyforms-modal--upgrade",
240
  pages: [{
241
+ image: (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("picture", null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("img", {
242
  src: imageURL
243
  })),
244
+ content: (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
245
  className: "happyforms-modal__header"
246
+ }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("h1", null, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('You\'ll need to upgrade to get access to this', 'happyforms'))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
247
  className: "happyforms-modal__body"
248
+ }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", null, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('You\'re just a mouse click and a few key taps away from building better forms.', 'happyforms')), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("ul", null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("li", null, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Advanced features and integrations', 'happyforms')), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("li", null, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Help from our friendly support team', 'happyforms')), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("li", null, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Automatically transfer your free forms', 'happyforms')), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("li", null, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('New updates every second week', 'happyforms'))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", null, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Ready to build better forms?', 'happyforms'))), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
249
  className: "happyforms-modal__footer"
250
+ }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__.BaseControl, null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__.Button, {
251
  isPrimary: true,
252
  href: "https://happyforms.io/upgrade",
253
  target: "_blank",
254
+ text: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Learn More Now', 'happyforms')
255
+ }), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__.Button, {
256
  isSecondary: true,
257
  onClick: props.onRequestClose,
258
+ text: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Nope, Maybe Later', 'happyforms')
259
  }))))
260
  }]
261
  });
262
  };
263
+ const DashboardModalsBaseClass = (0,_happyforms_core_jsx_src_admin_dashboard_modals__WEBPACK_IMPORTED_MODULE_1__["default"])($, settings);
 
 
264
  class DashboardModalsClass extends DashboardModalsBaseClass {
265
  openOnboardingModal() {
266
+ var modal = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(OnboardingModal, {
267
  onRequestClose: this.closeModal.bind(this, 'onboarding'),
268
  status: settings.trackingStatus
269
  });
270
  this.openModal(modal);
271
  }
 
272
  openUpgradeModal() {
273
+ var modal = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_0__.createElement)(UpgradeModal, {
274
  onRequestClose: this.closeModal.bind(this, 'upgrade')
275
  });
276
  this.openModal(modal);
277
  }
 
278
  }
 
279
  ;
280
  var happyForms = window.happyForms || {};
281
  window.happyForms = happyForms;
282
  happyForms.modals = new DashboardModalsClass();
283
  })(jQuery, _happyFormsDashboardModalsSettings);
284
+ })();
285
 
286
+ /******/ })()
287
+ ;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
288
  //# sourceMappingURL=dashboard-modals.js.map
inc/assets/jsx/build/admin/dashboard-modals.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./build/core/assets/jsx/src/admin/dashboard-modals.js","webpack:///./build/inc/assets/jsx/src/admin/dashboard-modals.js","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///external [\"wp\",\"components\"]","webpack:///external [\"wp\",\"element\"]","webpack:///external [\"wp\",\"i18n\"]"],"names":["$","settings","render","wp","element","ModalProvider","props","modal","DashboardModals","constructor","area","document","getElementById","openModal","closeModal","post","ajaxurl","action","actionModalDismiss","id","OnboardingModal","imageURL","pluginURL","email","setEmail","useState","onEmailChange","e","target","value","onRequestClose","onboardingModalAction","_wpnonce","onboardingModalNonce","image","content","__","UpgradeModal","DashboardModalsBaseClass","DashboardModalsClass","openOnboardingModal","bind","trackingStatus","openUpgradeModal","happyForms","window","modals","jQuery","_happyFormsDashboardModalsSettings"],"mappings":"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","file":"dashboard-modals.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./build/inc/assets/jsx/src/admin/dashboard-modals.js\");\n","import { SlotFillProvider, Button, Modal, Guide, Popover, Notice, ExternalLink, TextControl, CheckboxControl, BaseControl } from '@wordpress/components';\nimport { useState, useReducer, useRef } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n *\n * Modal handler class\n *\n */\nexport default function( $, settings ) {\n\n\tconst { render } = wp.element;\n\n\t/**\n\t *\n\t * Modal wrapper\n\t *\n\t */\n\tconst ModalProvider = ( props ) => {\n\t\treturn (\n\t\t\t<SlotFillProvider>\n\t\t\t\t{ props.modal }\n\t\t\t\t<Popover.Slot />\n\t\t\t</SlotFillProvider>\n\t\t);\n\t};\n\t\n\treturn class DashboardModals {\n\n\t\tarea = null;\n\t\t\n\t\tconstructor() {\n\t\t\tthis.area = document.getElementById( 'happyforms-modals-area' );\n\t\t}\n\n\t\topenModal( modal ) {\n\t\t\trender( <ModalProvider modal={modal}></ModalProvider>, this.area );\n\t\t}\n\n\t\tcloseModal( modal ) {\n\t\t\trender( <></>, this.area );\n\n\t\t\t$.post( ajaxurl, {\n\t\t\t\taction: settings.actionModalDismiss,\n\t\t\t\tid: modal, \n\t\t\t} );\n\t\t}\n\n\t};\n\n}","import DashboardModals from '@happyforms/core/jsx/src/admin/dashboard-modals';\nimport { SlotFillProvider, Button, Modal, Guide, Popover, Notice, ExternalLink, TextControl, CheckboxControl, BaseControl } from '@wordpress/components';\nimport { useState, useReducer, useRef } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\n\n( function( $, settings ) {\n\n\t/**\n\t *\n\t * Onboarding modal\n\t *\n\t */\n\tconst OnboardingModal = ( props ) => {\n\t\tconst imageURL = `${settings.pluginURL}/inc/assets/img/welcome.svg`;\n\t\tconst [ email, setEmail ] = useState( '' );\n\n\t\tconst onEmailChange = ( e ) => {\n\t\t\tsetEmail( e.target.value );\n\t\t};\n\n\t\tconst onRequestClose = () => {\n\t\t\t$.post( ajaxurl, {\n\t\t\t\taction: settings.onboardingModalAction,\n\t\t\t\t_wpnonce: settings.onboardingModalNonce,\n\t\t\t\temail: email,\n\t\t\t} );\n\n\t\t\treturn props.onRequestClose();\n\t\t}\n\n\t\treturn(\n\t\t\t<Guide\n\t\t\t\tonFinish={ onRequestClose }\n\t\t\t\tclassName=\"happyforms-modal happyforms-modal--onboarding\"\n\t\t\t\tpages={ [\n\t\t\t\t\t{\n\t\t\t\t\t\timage: (\n\t\t\t\t\t\t\t<picture>\n\t\t\t\t\t\t\t\t<img src={imageURL} />\n\t\t\t\t\t\t\t</picture>\n\t\t\t\t\t\t),\n\t\t\t\t\t\tcontent: (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<div className=\"happyforms-modal__header\">\n\t\t\t\t\t\t\t\t<h1>{ __( 'One last thing', 'happyforms' ) }</h1>\n\t\t\t\t\t\t\t\t<p>{ __( 'We\\'ll occasionally send you emails about plugin updates. And don\\'t sweat it, you can unsubscribe anytime.', 'happyforms' ) }</p>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className=\"happyforms-modal__body\">\n\t\t\t\t\t\t\t\t<label>{ __( 'Email address', 'happyforms' ) }</label>\n\t\t\t\t\t\t\t\t<input type=\"email\" value={ email } onChange={ onEmailChange } autoFocus />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className=\"happyforms-modal__footer\">\n\t\t\t\t\t\t\t\t<BaseControl>\n\t\t\t\t\t\t\t\t\t<Button isPrimary={true} onClick={ onRequestClose } text={ __( 'Continue', 'happyforms' ) }></Button>\n\t\t\t\t\t\t\t\t</BaseControl>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t] }\n\t\t\t/>\n\t\t);\n\t}\n\n\t/**\n\t *\n\t * Upgrade modal\n\t *\n\t */\n\tconst UpgradeModal = ( props ) => {\n\t\tconst imageURL = `${settings.pluginURL}/inc/assets/img/upgrade.svg`;\n\n\t\treturn(\n\t\t\t<Guide\n\t\t\t\tonFinish={ props.onRequestClose }\n\t\t\t\tclassName=\"happyforms-modal happyforms-modal--upgrade\"\n\t\t\t\tpages={ [\n\t\t\t\t\t{\n\t\t\t\t\t\timage: (\n\t\t\t\t\t\t\t<picture>\n\t\t\t\t\t\t\t\t<img src={imageURL} />\n\t\t\t\t\t\t\t</picture>\n\t\t\t\t\t\t),\n\t\t\t\t\t\tcontent: (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<div className=\"happyforms-modal__header\">\n\t\t\t\t\t\t\t\t<h1>{ __( 'Start with a free trial', 'happyforms' ) }</h1>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className=\"happyforms-modal__body\">\n\t\t\t\t\t\t\t\t<p>{ __( 'You\\'re just a mouse click and a few key taps away from building better forms.', 'happyforms' ) }</p>\n\t\t\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t\t\t<li>{ __( 'Advanced features and integrations', 'happyforms' ) }</li>\n\t\t\t\t\t\t\t\t\t<li>{ __( 'Help from our friendly support team', 'happyforms' ) }</li>\n\t\t\t\t\t\t\t\t\t<li>{ __( 'Automatically transfer your free forms', 'happyforms' ) }</li>\n\t\t\t\t\t\t\t\t\t<li>{ __( 'New updates every second week', 'happyforms' ) }</li>\n\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t\t<p>{ __( 'Ready to build better forms?', 'happyforms' ) }</p>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className=\"happyforms-modal__footer\">\n\t\t\t\t\t\t\t\t<BaseControl>\n\t\t\t\t\t\t\t\t\t<Button isPrimary={true} href=\"https://happyforms.io/upgrade\" target=\"_blank\" text={ __( 'Start a Free 7-day Trial', 'happyforms' ) }></Button>\n\t\t\t\t\t\t\t\t\t<Button isSecondary={true} onClick={ props.onRequestClose } text={ __( 'Nope, Maybe Later', 'happyforms' ) }></Button>\n\t\t\t\t\t\t\t\t</BaseControl>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t] }\n\t\t\t/>\n\t\t);\n\t}\n\n\tconst DashboardModalsBaseClass = DashboardModals( $, settings );\n\n\tclass DashboardModalsClass extends DashboardModalsBaseClass {\n\n\t\topenOnboardingModal() {\n\t\t\tvar modal = (\n\t\t\t\t<OnboardingModal\n\t\t\t\t\tonRequestClose={ this.closeModal.bind( this, 'onboarding' ) }\n\t\t\t\t\tstatus={ settings.trackingStatus } />\n\t\t\t);\n\n\t\t\tthis.openModal( modal );\n\t\t}\n\n\t\topenUpgradeModal() {\n\t\t\tvar modal = <UpgradeModal onRequestClose={ this.closeModal.bind( this, 'upgrade' ) } />\n\n\t\t\tthis.openModal( modal );\n\t\t}\n\n\t};\n\n\tvar happyForms = window.happyForms || {};\n\twindow.happyForms = happyForms;\n\n\thappyForms.modals = new DashboardModalsClass();\n\n} )( jQuery, _happyFormsDashboardModalsSettings );\n","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","(function() { module.exports = window[\"wp\"][\"components\"]; }());","(function() { module.exports = window[\"wp\"][\"element\"]; }());","(function() { module.exports = window[\"wp\"][\"i18n\"]; }());"],"sourceRoot":""}
1
+ {"version":3,"file":"dashboard-modals.js","mappings":"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","sources":["webpack://happyforms/./build/core/assets/jsx/src/admin/dashboard-modals.js","webpack://happyforms/external window [\"wp\",\"components\"]","webpack://happyforms/external window [\"wp\",\"element\"]","webpack://happyforms/external window [\"wp\",\"i18n\"]","webpack://happyforms/webpack/bootstrap","webpack://happyforms/webpack/runtime/compat get default export","webpack://happyforms/webpack/runtime/define property getters","webpack://happyforms/webpack/runtime/hasOwnProperty shorthand","webpack://happyforms/webpack/runtime/make namespace object","webpack://happyforms/./build/inc/assets/jsx/src/admin/dashboard-modals.js"],"sourcesContent":["import { SlotFillProvider, Button, Modal, Guide, Popover, Notice, ExternalLink, TextControl, CheckboxControl, BaseControl } from '@wordpress/components';\nimport { useState, useReducer, useRef } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n *\n * Modal handler class\n *\n */\nexport default function( $, settings ) {\n\n\tconst { render } = wp.element;\n\n\t/**\n\t *\n\t * Modal wrapper\n\t *\n\t */\n\tconst ModalProvider = ( props ) => {\n\t\treturn (\n\t\t\t<SlotFillProvider>\n\t\t\t\t{ props.modal }\n\t\t\t\t<Popover.Slot />\n\t\t\t</SlotFillProvider>\n\t\t);\n\t};\n\t\n\treturn class DashboardModals {\n\n\t\tarea = null;\n\t\t\n\t\tconstructor() {\n\t\t\tthis.area = document.getElementById( 'happyforms-modals-area' );\n\t\t}\n\n\t\topenModal( modal ) {\n\t\t\trender( <ModalProvider modal={modal}></ModalProvider>, this.area );\n\t\t}\n\n\t\tcloseModal( modal ) {\n\t\t\trender( <></>, this.area );\n\n\t\t\t$.post( ajaxurl, {\n\t\t\t\taction: settings.actionModalDismiss,\n\t\t\t\tid: modal, \n\t\t\t} );\n\t\t}\n\n\t};\n\n}","module.exports = window[\"wp\"][\"components\"];","module.exports = window[\"wp\"][\"element\"];","module.exports = window[\"wp\"][\"i18n\"];","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import DashboardModals from '@happyforms/core/jsx/src/admin/dashboard-modals';\nimport { SlotFillProvider, Button, Modal, Guide, Popover, Notice, ExternalLink, TextControl, CheckboxControl, BaseControl } from '@wordpress/components';\nimport { useState, useReducer, useRef } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\n\n( function( $, settings ) {\n\n\t/**\n\t *\n\t * Onboarding modal\n\t *\n\t */\n\tconst OnboardingModal = ( props ) => {\n\t\tconst imageURL = `${settings.pluginURL}/inc/assets/img/welcome.svg`;\n\t\tconst [ email, setEmail ] = useState( '' );\n\n\t\tconst onEmailChange = ( e ) => {\n\t\t\tsetEmail( e.target.value );\n\t\t};\n\n\t\tconst onRequestClose = () => {\n\t\t\t$.post( ajaxurl, {\n\t\t\t\taction: settings.onboardingModalAction,\n\t\t\t\t_wpnonce: settings.onboardingModalNonce,\n\t\t\t\temail: email,\n\t\t\t} );\n\n\t\t\treturn props.onRequestClose();\n\t\t}\n\n\t\treturn(\n\t\t\t<Guide\n\t\t\t\tonFinish={ onRequestClose }\n\t\t\t\tclassName=\"happyforms-modal happyforms-modal--onboarding\"\n\t\t\t\tpages={ [\n\t\t\t\t\t{\n\t\t\t\t\t\timage: (\n\t\t\t\t\t\t\t<picture>\n\t\t\t\t\t\t\t\t<img src={imageURL} />\n\t\t\t\t\t\t\t</picture>\n\t\t\t\t\t\t),\n\t\t\t\t\t\tcontent: (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<div className=\"happyforms-modal__header\">\n\t\t\t\t\t\t\t\t<h1>{ __( 'One last thing', 'happyforms' ) }</h1>\n\t\t\t\t\t\t\t\t<p>{ __( 'We\\'ll occasionally send you emails about plugin updates. And don\\'t sweat it, you can unsubscribe anytime.', 'happyforms' ) }</p>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className=\"happyforms-modal__body\">\n\t\t\t\t\t\t\t\t<label>{ __( 'Email address', 'happyforms' ) }</label>\n\t\t\t\t\t\t\t\t<input type=\"email\" value={ email } onChange={ onEmailChange } autoFocus />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className=\"happyforms-modal__footer\">\n\t\t\t\t\t\t\t\t<BaseControl>\n\t\t\t\t\t\t\t\t\t<Button isPrimary={true} onClick={ onRequestClose } text={ __( 'Continue', 'happyforms' ) }></Button>\n\t\t\t\t\t\t\t\t</BaseControl>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t] }\n\t\t\t/>\n\t\t);\n\t}\n\n\t/**\n\t *\n\t * Upgrade modal\n\t *\n\t */\n\tconst UpgradeModal = ( props ) => {\n\t\tconst imageURL = `${settings.pluginURL}/inc/assets/img/upgrade.svg`;\n\n\t\treturn(\n\t\t\t<Guide\n\t\t\t\tonFinish={ props.onRequestClose }\n\t\t\t\tclassName=\"happyforms-modal happyforms-modal--upgrade\"\n\t\t\t\tpages={ [\n\t\t\t\t\t{\n\t\t\t\t\t\timage: (\n\t\t\t\t\t\t\t<picture>\n\t\t\t\t\t\t\t\t<img src={imageURL} />\n\t\t\t\t\t\t\t</picture>\n\t\t\t\t\t\t),\n\t\t\t\t\t\tcontent: (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<div className=\"happyforms-modal__header\">\n\t\t\t\t\t\t\t\t<h1>{ __( 'You\\'ll need to upgrade to get access to this', 'happyforms' ) }</h1>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className=\"happyforms-modal__body\">\n\t\t\t\t\t\t\t\t<p>{ __( 'You\\'re just a mouse click and a few key taps away from building better forms.', 'happyforms' ) }</p>\n\t\t\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t\t\t<li>{ __( 'Advanced features and integrations', 'happyforms' ) }</li>\n\t\t\t\t\t\t\t\t\t<li>{ __( 'Help from our friendly support team', 'happyforms' ) }</li>\n\t\t\t\t\t\t\t\t\t<li>{ __( 'Automatically transfer your free forms', 'happyforms' ) }</li>\n\t\t\t\t\t\t\t\t\t<li>{ __( 'New updates every second week', 'happyforms' ) }</li>\n\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t\t<p>{ __( 'Ready to build better forms?', 'happyforms' ) }</p>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className=\"happyforms-modal__footer\">\n\t\t\t\t\t\t\t\t<BaseControl>\n\t\t\t\t\t\t\t\t\t<Button isPrimary={true} href=\"https://happyforms.io/upgrade\" target=\"_blank\" text={ __( 'Learn More Now', 'happyforms' ) }></Button>\n\t\t\t\t\t\t\t\t\t<Button isSecondary={true} onClick={ props.onRequestClose } text={ __( 'Nope, Maybe Later', 'happyforms' ) }></Button>\n\t\t\t\t\t\t\t\t</BaseControl>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t] }\n\t\t\t/>\n\t\t);\n\t}\n\n\tconst DashboardModalsBaseClass = DashboardModals( $, settings );\n\n\tclass DashboardModalsClass extends DashboardModalsBaseClass {\n\n\t\topenOnboardingModal() {\n\t\t\tvar modal = (\n\t\t\t\t<OnboardingModal\n\t\t\t\t\tonRequestClose={ this.closeModal.bind( this, 'onboarding' ) }\n\t\t\t\t\tstatus={ settings.trackingStatus } />\n\t\t\t);\n\n\t\t\tthis.openModal( modal );\n\t\t}\n\n\t\topenUpgradeModal() {\n\t\t\tvar modal = <UpgradeModal onRequestClose={ this.closeModal.bind( this, 'upgrade' ) } />\n\n\t\t\tthis.openModal( modal );\n\t\t}\n\n\t};\n\n\tvar happyForms = window.happyForms || {};\n\twindow.happyForms = happyForms;\n\n\thappyForms.modals = new DashboardModalsClass();\n\n} )( jQuery, _happyFormsDashboardModalsSettings );\n"],"names":["SlotFillProvider","Button","Modal","Guide","Popover","Notice","ExternalLink","TextControl","CheckboxControl","BaseControl","useState","useReducer","useRef","__","sprintf","$","settings","render","wp","element","ModalProvider","props","modal","DashboardModals","area","constructor","document","getElementById","openModal","closeModal","post","ajaxurl","action","actionModalDismiss","id","OnboardingModal","imageURL","pluginURL","email","setEmail","onEmailChange","e","target","value","onRequestClose","onboardingModalAction","_wpnonce","onboardingModalNonce","image","content","UpgradeModal","DashboardModalsBaseClass","DashboardModalsClass","openOnboardingModal","bind","trackingStatus","openUpgradeModal","happyForms","window","modals","jQuery","_happyFormsDashboardModalsSettings"],"sourceRoot":""}
inc/assets/jsx/src/admin/dashboard-modals.js CHANGED
@@ -84,7 +84,7 @@ import { __, sprintf } from '@wordpress/i18n';
84
  content: (
85
  <>
86
  <div className="happyforms-modal__header">
87
- <h1>{ __( 'Start with a free trial', 'happyforms' ) }</h1>
88
  </div>
89
  <div className="happyforms-modal__body">
90
  <p>{ __( 'You\'re just a mouse click and a few key taps away from building better forms.', 'happyforms' ) }</p>
@@ -98,7 +98,7 @@ import { __, sprintf } from '@wordpress/i18n';
98
  </div>
99
  <div className="happyforms-modal__footer">
100
  <BaseControl>
101
- <Button isPrimary={true} href="https://happyforms.io/upgrade" target="_blank" text={ __( 'Start a Free 7-day Trial', 'happyforms' ) }></Button>
102
  <Button isSecondary={true} onClick={ props.onRequestClose } text={ __( 'Nope, Maybe Later', 'happyforms' ) }></Button>
103
  </BaseControl>
104
  </div>
84
  content: (
85
  <>
86
  <div className="happyforms-modal__header">
87
+ <h1>{ __( 'You\'ll need to upgrade to get access to this', 'happyforms' ) }</h1>
88
  </div>
89
  <div className="happyforms-modal__body">
90
  <p>{ __( 'You\'re just a mouse click and a few key taps away from building better forms.', 'happyforms' ) }</p>
98
  </div>
99
  <div className="happyforms-modal__footer">
100
  <BaseControl>
101
+ <Button isPrimary={true} href="https://happyforms.io/upgrade" target="_blank" text={ __( 'Learn More Now', 'happyforms' ) }></Button>
102
  <Button isSecondary={true} onClick={ props.onRequestClose } text={ __( 'Nope, Maybe Later', 'happyforms' ) }></Button>
103
  </BaseControl>
104
  </div>
inc/classes/class-happyforms.php CHANGED
@@ -77,6 +77,10 @@ class HappyForms extends HappyForms_Core {
77
  }
78
 
79
  public function add_dummy_setup_controls( $controls ) {
 
 
 
 
80
  $setup_controls = array(
81
  11 => array(
82
  'type' => 'upsell',
@@ -131,7 +135,7 @@ class HappyForms extends HappyForms_Core {
131
  3200 => array(
132
  'type' => 'checkbox_dummy',
133
  'dummy_id' => 'block_emails',
134
- 'label' => __( 'Show an error message if field contains words in Disallowed Comment Keys', 'happyforms' ),
135
  ),
136
  );
137
 
@@ -223,12 +227,12 @@ class HappyForms extends HappyForms_Core {
223
  'dummy_id' => 'payment_cancelled',
224
  'label' => __( 'Payment cancelled', 'happyforms' ),
225
  ),
226
- 2019 => array(
227
  'type' => 'text_dummy_reset',
228
  'dummy_id' => 'previous_page',
229
  'label' => __( 'Previous page', 'happyforms' ),
230
  ),
231
- 2030 => array(
232
  'type' => 'text_dummy_reset',
233
  'dummy_id' => 'redirect_page',
234
  'label' => __( 'Redirect to page', 'happyforms' ),
@@ -238,7 +242,7 @@ class HappyForms extends HappyForms_Core {
238
  'dummy_id' => 'print_submission',
239
  'label' => __( 'Print user submission', 'happyforms' ),
240
  ),
241
- 2041 => array(
242
  'type' => 'text_dummy_reset',
243
  'dummy_id' => 'edit_reply',
244
  'label' => __( 'Edit reply', 'happyforms' ),
@@ -248,7 +252,7 @@ class HappyForms extends HappyForms_Core {
248
  'dummy_id' => 'clear_saved_reply',
249
  'label' => __( 'Clear saved draft reply', 'happyforms' ),
250
  ),
251
- 2081 => array(
252
  'type' => 'text_dummy_reset',
253
  'dummy_id' => 'save_draft_reply',
254
  'label' => __( 'Save draft reply', 'happyforms' ),
@@ -263,27 +267,27 @@ class HappyForms extends HappyForms_Core {
263
  'dummy_id' => 'remove_uploaded_file',
264
  'label' => __( 'Remove uploaded file', 'happyforms' ),
265
  ),
266
- 2201 => array(
267
  'type' => 'text_dummy_reset',
268
  'dummy_id' => 'review_reply',
269
  'label' => __( 'Review reply', 'happyforms' ),
270
  ),
271
- 2260 => array(
272
  'type' => 'text_dummy_reset',
273
  'dummy_id' => 'start_drawing_signature',
274
  'label' => __( 'Start drawing signature', 'happyforms' ),
275
  ),
276
- 2261 => array(
277
  'type' => 'text_dummy_reset',
278
  'dummy_id' => 'start_over_signature',
279
  'label' => __( 'Start over drawing signature', 'happyforms' ),
280
  ),
281
- 2263 => array(
282
  'type' => 'text_dummy_reset',
283
  'dummy_id' => 'clear_drawn_signature',
284
  'label' => __( 'Clear drawn signature', 'happyforms' ),
285
  ),
286
- 2264 => array(
287
  'type' => 'text_dummy_reset',
288
  'dummy_id' => 'done_drawing_signature',
289
  'label' => __( 'Done drawing signature', 'happyforms' ),
77
  }
78
 
79
  public function add_dummy_setup_controls( $controls ) {
80
+ $block_mails_label_1 = __( 'Trash submission if it contains words in', 'happyforms' );
81
+ $block_mails_label_2 = __( 'Disallowed Comment Keys', 'happyforms' );
82
+ $options_discussion_url = get_admin_url( null, 'options-discussion.php' );
83
+
84
  $setup_controls = array(
85
  11 => array(
86
  'type' => 'upsell',
135
  3200 => array(
136
  'type' => 'checkbox_dummy',
137
  'dummy_id' => 'block_emails',
138
+ 'label' => sprintf( '%s <a href="%s" target="_blank" class="external">%s</a>', $block_mails_label_1, $options_discussion_url, $block_mails_label_2 ),
139
  ),
140
  );
141
 
227
  'dummy_id' => 'payment_cancelled',
228
  'label' => __( 'Payment cancelled', 'happyforms' ),
229
  ),
230
+ 2273 => array(
231
  'type' => 'text_dummy_reset',
232
  'dummy_id' => 'previous_page',
233
  'label' => __( 'Previous page', 'happyforms' ),
234
  ),
235
+ 2274 => array(
236
  'type' => 'text_dummy_reset',
237
  'dummy_id' => 'redirect_page',
238
  'label' => __( 'Redirect to page', 'happyforms' ),
242
  'dummy_id' => 'print_submission',
243
  'label' => __( 'Print user submission', 'happyforms' ),
244
  ),
245
+ 2271 => array(
246
  'type' => 'text_dummy_reset',
247
  'dummy_id' => 'edit_reply',
248
  'label' => __( 'Edit reply', 'happyforms' ),
252
  'dummy_id' => 'clear_saved_reply',
253
  'label' => __( 'Clear saved draft reply', 'happyforms' ),
254
  ),
255
+ 2270 => array(
256
  'type' => 'text_dummy_reset',
257
  'dummy_id' => 'save_draft_reply',
258
  'label' => __( 'Save draft reply', 'happyforms' ),
267
  'dummy_id' => 'remove_uploaded_file',
268
  'label' => __( 'Remove uploaded file', 'happyforms' ),
269
  ),
270
+ 2272 => array(
271
  'type' => 'text_dummy_reset',
272
  'dummy_id' => 'review_reply',
273
  'label' => __( 'Review reply', 'happyforms' ),
274
  ),
275
+ 2254 => array(
276
  'type' => 'text_dummy_reset',
277
  'dummy_id' => 'start_drawing_signature',
278
  'label' => __( 'Start drawing signature', 'happyforms' ),
279
  ),
280
+ 2255 => array(
281
  'type' => 'text_dummy_reset',
282
  'dummy_id' => 'start_over_signature',
283
  'label' => __( 'Start over drawing signature', 'happyforms' ),
284
  ),
285
+ 2256 => array(
286
  'type' => 'text_dummy_reset',
287
  'dummy_id' => 'clear_drawn_signature',
288
  'label' => __( 'Clear drawn signature', 'happyforms' ),
289
  ),
290
+ 2257 => array(
291
  'type' => 'text_dummy_reset',
292
  'dummy_id' => 'done_drawing_signature',
293
  'label' => __( 'Done drawing signature', 'happyforms' ),
languages/happyforms.pot CHANGED
@@ -2,14 +2,14 @@
2
  # This file is distributed under the same license as the Happyforms (free) plugin.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Happyforms (free) 1.21.0\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/happyforms/\n"
7
  "Last-Translator: The Theme Foundry\n"
8
  "Language-Team: The Theme Foundry\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "POT-Creation-Date: 2022-11-30T10:37:54+00:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.4.0\n"
15
  "X-Domain: happyforms\n"
@@ -172,7 +172,7 @@ msgid "Email me a copy of each submission"
172
  msgstr ""
173
 
174
  #: core/classes/class-form-email.php:126
175
- #: inc/classes/class-happyforms.php:148
176
  msgid "To email address"
177
  msgstr ""
178
 
@@ -293,67 +293,75 @@ msgstr ""
293
  msgid "These messages are shown to submitters as they fill out the form to help them trigger an action."
294
  msgstr ""
295
 
296
- #: core/classes/class-form-messages.php:113
 
 
 
 
 
 
 
 
297
  msgid "Errors"
298
  msgstr ""
299
 
300
- #: core/classes/class-form-messages.php:114
301
  msgid "These messages are shown to submitters when they try to submit but one or more fields has a mistake."
302
  msgstr ""
303
 
304
- #: core/classes/class-form-messages.php:123
305
  msgid "Hints"
306
  msgstr ""
307
 
308
- #: core/classes/class-form-messages.php:124
309
  msgid "These messages are shown to submitters as they fill out the form to help them avoid mistakes."
310
  msgstr ""
311
 
312
- #: core/classes/class-form-messages.php:131
313
  msgid "Too many choices are selected"
314
  msgstr ""
315
 
316
- #: core/classes/class-form-messages.php:136
317
  msgid "Not enough choices are selected"
318
  msgstr ""
319
 
320
- #: core/classes/class-form-messages.php:143
321
  msgid "Number too small"
322
  msgstr ""
323
 
324
- #: core/classes/class-form-messages.php:148
325
  msgid "Number too big"
326
  msgstr ""
327
 
328
- #: core/classes/class-form-messages.php:153
329
  msgid "Search couldn't find anything"
330
  msgstr ""
331
 
332
- #: core/classes/class-form-messages.php:158
333
  msgid "Minimum characters"
334
  msgstr ""
335
 
336
- #: core/classes/class-form-messages.php:163
337
  msgid "Maximum characters"
338
  msgstr ""
339
 
340
- #: core/classes/class-form-messages.php:168
341
  msgid "Minimum words"
342
  msgstr ""
343
 
344
- #: core/classes/class-form-messages.php:173
345
  msgid "Maximum words"
346
  msgstr ""
347
 
348
- #: core/classes/class-form-messages.php:178
349
  msgid "Question is optional"
350
  msgstr ""
351
 
352
- #: core/classes/class-form-messages.php:183
353
  msgid "Question is required"
354
  msgstr ""
355
 
356
- #: core/classes/class-form-messages.php:188
357
  msgid "Remaining submissions"
358
  msgstr ""
359
 
@@ -910,15 +918,11 @@ msgstr ""
910
  msgid "This answer isn't long enough."
911
  msgstr ""
912
 
913
- #: core/classes/class-wp-customize-form-manager.php:162
914
- msgid "Form saved. To publish, add a Forms block to any post, page or widget area."
915
- msgstr ""
916
-
917
- #: core/classes/class-wp-customize-form-manager.php:163
918
- msgid "Form updated."
919
  msgstr ""
920
 
921
- #: core/classes/class-wp-customize-form-manager.php:323
922
  msgid "The changes you made will be lost if you navigate away from this page."
923
  msgstr ""
924
 
@@ -1039,7 +1043,6 @@ msgid "Last name"
1039
  msgstr ""
1040
 
1041
  #: core/helpers/helper-activation.php:80
1042
- #: inc/assets/jsx/build/admin/dashboard-modals.js:213
1043
  #: inc/assets/jsx/src/admin/dashboard-modals.js:49
1044
  msgid "Email address"
1045
  msgstr ""
@@ -3021,247 +3024,251 @@ msgstr ""
3021
  msgid "Max times the same answer can be submitted"
3022
  msgstr ""
3023
 
3024
- #: inc/classes/class-happyforms.php:83
 
 
 
 
 
 
 
 
3025
  msgid "Upgrade"
3026
  msgstr ""
3027
 
3028
- #: inc/classes/class-happyforms.php:91
3029
  msgid "Redirect to this page address (URL) after submission"
3030
  msgstr ""
3031
 
3032
- #: inc/classes/class-happyforms.php:92
3033
  msgid "Search or type URL"
3034
  msgstr ""
3035
 
3036
- #: inc/classes/class-happyforms.php:98
3037
  msgid "Shuffle order of fields"
3038
  msgstr ""
3039
 
3040
- #: inc/classes/class-happyforms.php:104
3041
  msgid "Use reCAPTCHA"
3042
  msgstr ""
3043
 
3044
- #: inc/classes/class-happyforms.php:110
3045
  msgid "Let submitters save a draft for set number of days"
3046
  msgstr ""
3047
 
3048
- #: inc/classes/class-happyforms.php:116
3049
  msgid "Require submitters to review a submission"
3050
  msgstr ""
3051
 
3052
- #: inc/classes/class-happyforms.php:122
3053
  msgid "Max number of submissions"
3054
  msgstr ""
3055
 
3056
- #: inc/classes/class-happyforms.php:128
3057
  msgid "Erase submitter's personal data after set number of days"
3058
  msgstr ""
3059
 
3060
- #: inc/classes/class-happyforms.php:134
3061
- msgid "Show an error message if field contains words in Disallowed Comment Keys"
3062
- msgstr ""
3063
-
3064
- #: inc/classes/class-happyforms.php:154
3065
  msgid "Send abandonment email"
3066
  msgstr ""
3067
 
3068
- #: inc/classes/class-happyforms.php:168
3069
  msgid "Checkboxes & Radios"
3070
  msgstr ""
3071
 
3072
- #: inc/classes/class-happyforms.php:174
3073
  msgid "Rating"
3074
  msgstr ""
3075
 
3076
- #: inc/classes/class-happyforms.php:180
3077
  msgid "Multi Step"
3078
  msgstr ""
3079
 
3080
- #: inc/classes/class-happyforms.php:194
3081
  msgid "Form redirected after submission"
3082
  msgstr ""
3083
 
3084
- #: inc/classes/class-happyforms.php:199
3085
  msgid "Form has reached its reply limit"
3086
  msgstr ""
3087
 
3088
- #: inc/classes/class-happyforms.php:204
3089
  msgid "Submitter has returned to a draft"
3090
  msgstr ""
3091
 
3092
- #: inc/classes/class-happyforms.php:209
3093
  msgid "Submitter is viewing review page"
3094
  msgstr ""
3095
 
3096
- #: inc/classes/class-happyforms.php:214
3097
  msgid "Payment completed"
3098
  msgstr ""
3099
 
3100
- #: inc/classes/class-happyforms.php:219
3101
  msgid "Payment failed"
3102
  msgstr ""
3103
 
3104
- #: inc/classes/class-happyforms.php:224
3105
  msgid "Payment cancelled"
3106
  msgstr ""
3107
 
3108
- #: inc/classes/class-happyforms.php:229
3109
  msgid "Previous page"
3110
  msgstr ""
3111
 
3112
- #: inc/classes/class-happyforms.php:234
3113
  msgid "Redirect to page"
3114
  msgstr ""
3115
 
3116
- #: inc/classes/class-happyforms.php:239
3117
  msgid "Print user submission"
3118
  msgstr ""
3119
 
3120
- #: inc/classes/class-happyforms.php:244
3121
  msgid "Edit reply"
3122
  msgstr ""
3123
 
3124
- #: inc/classes/class-happyforms.php:249
3125
  msgid "Clear saved draft reply"
3126
  msgstr ""
3127
 
3128
- #: inc/classes/class-happyforms.php:254
3129
  msgid "Save draft reply"
3130
  msgstr ""
3131
 
3132
- #: inc/classes/class-happyforms.php:259
3133
  msgid "Upload files"
3134
  msgstr ""
3135
 
3136
- #: inc/classes/class-happyforms.php:264
3137
  msgid "Remove uploaded file"
3138
  msgstr ""
3139
 
3140
- #: inc/classes/class-happyforms.php:269
3141
  msgid "Review reply"
3142
  msgstr ""
3143
 
3144
- #: inc/classes/class-happyforms.php:274
3145
  msgid "Start drawing signature"
3146
  msgstr ""
3147
 
3148
- #: inc/classes/class-happyforms.php:279
3149
  msgid "Start over drawing signature"
3150
  msgstr ""
3151
 
3152
- #: inc/classes/class-happyforms.php:284
3153
  msgid "Clear drawn signature"
3154
  msgstr ""
3155
 
3156
- #: inc/classes/class-happyforms.php:289
3157
  msgid "Done drawing signature"
3158
  msgstr ""
3159
 
3160
- #: inc/classes/class-happyforms.php:294
3161
  msgid "Field answer reached its limit"
3162
  msgstr ""
3163
 
3164
- #: inc/classes/class-happyforms.php:299
3165
  msgid "Coupon code invalid"
3166
  msgstr ""
3167
 
3168
- #: inc/classes/class-happyforms.php:304
3169
  msgid "Required file isn't uploaded"
3170
  msgstr ""
3171
 
3172
- #: inc/classes/class-happyforms.php:309
3173
  msgid "Required terms haven't been scrolled"
3174
  msgstr ""
3175
 
3176
- #: inc/classes/class-happyforms.php:314
3177
  msgid "Field contains disallowed word"
3178
  msgstr ""
3179
 
3180
- #: inc/classes/class-happyforms.php:319
3181
  msgid "Disallowed IP address or browser"
3182
  msgstr ""
3183
 
3184
- #: inc/classes/class-happyforms.php:324
3185
  msgid "This file's size is too big"
3186
  msgstr ""
3187
 
3188
- #: inc/classes/class-happyforms.php:329
3189
  msgid "This file's type not allowed"
3190
  msgstr ""
3191
 
3192
- #: inc/classes/class-happyforms.php:334
3193
  msgid "A file with this name has already been uploaded"
3194
  msgstr ""
3195
 
3196
- #: inc/classes/class-happyforms.php:339
3197
  msgid "User uploaded too few files"
3198
  msgstr ""
3199
 
3200
- #: inc/classes/class-happyforms.php:344
3201
  msgid "Price is too low"
3202
  msgstr ""
3203
 
3204
- #: inc/classes/class-happyforms.php:349
3205
  msgid "Phone field country code label"
3206
  msgstr ""
3207
 
3208
- #: inc/classes/class-happyforms.php:354
3209
  msgid "Phone field number label"
3210
  msgstr ""
3211
 
3212
- #: inc/classes/class-happyforms.php:359
3213
  msgid "Total files uploaded"
3214
  msgstr ""
3215
 
3216
- #: inc/classes/class-happyforms.php:364
3217
  msgid "Payment method"
3218
  msgstr ""
3219
 
3220
- #: inc/classes/class-happyforms.php:369
3221
  msgid "Pay what you want"
3222
  msgstr ""
3223
 
3224
- #: inc/classes/class-happyforms.php:374
3225
  msgid "Submitter will be redirected to PayPal"
3226
  msgstr ""
3227
 
3228
- #: inc/classes/class-happyforms.php:379
3229
  msgid "PayPal payment"
3230
  msgstr ""
3231
 
3232
- #: inc/classes/class-happyforms.php:384
3233
  msgid "Stripe is processing payment"
3234
  msgstr ""
3235
 
3236
- #: inc/classes/class-happyforms.php:389
3237
  msgid "Stripe payment"
3238
  msgstr ""
3239
 
3240
- #: inc/classes/class-happyforms.php:394
3241
  msgid "Stripe card field"
3242
  msgstr ""
3243
 
3244
- #: inc/classes/class-happyforms.php:399
3245
  msgid "Card number"
3246
  msgstr ""
3247
 
3248
- #: inc/classes/class-happyforms.php:404
3249
  msgid "Card expiration"
3250
  msgstr ""
3251
 
3252
- #: inc/classes/class-happyforms.php:409
3253
  msgid "Card security code"
3254
  msgstr ""
3255
 
3256
- #: inc/classes/class-happyforms.php:414
3257
  msgid "Coupon field label"
3258
  msgstr ""
3259
 
3260
- #: inc/classes/class-happyforms.php:419
3261
  msgid "Apply coupon button label"
3262
  msgstr ""
3263
 
3264
- #: inc/classes/class-happyforms.php:424
3265
  msgid "Current page"
3266
  msgstr ""
3267
 
@@ -3779,62 +3786,50 @@ msgstr ""
3779
  msgid "Pick a form"
3780
  msgstr ""
3781
 
3782
- #: inc/assets/jsx/build/admin/dashboard-modals.js:211
3783
  #: inc/assets/jsx/src/admin/dashboard-modals.js:45
3784
  msgid "One last thing"
3785
  msgstr ""
3786
 
3787
- #: inc/assets/jsx/build/admin/dashboard-modals.js:211
3788
  #: inc/assets/jsx/src/admin/dashboard-modals.js:46
3789
  msgid "We'll occasionally send you emails about plugin updates. And don't sweat it, you can unsubscribe anytime."
3790
  msgstr ""
3791
 
3792
- #: inc/assets/jsx/build/admin/dashboard-modals.js:223
3793
  #: inc/assets/jsx/src/admin/dashboard-modals.js:54
3794
  msgid "Continue"
3795
  msgstr ""
3796
 
3797
- #: inc/assets/jsx/build/admin/dashboard-modals.js:246
3798
  #: inc/assets/jsx/src/admin/dashboard-modals.js:87
3799
- msgid "Start with a free trial"
3800
  msgstr ""
3801
 
3802
- #: inc/assets/jsx/build/admin/dashboard-modals.js:248
3803
  #: inc/assets/jsx/src/admin/dashboard-modals.js:90
3804
  msgid "You're just a mouse click and a few key taps away from building better forms."
3805
  msgstr ""
3806
 
3807
- #: inc/assets/jsx/build/admin/dashboard-modals.js:248
3808
  #: inc/assets/jsx/src/admin/dashboard-modals.js:92
3809
  msgid "Advanced features and integrations"
3810
  msgstr ""
3811
 
3812
- #: inc/assets/jsx/build/admin/dashboard-modals.js:248
3813
  #: inc/assets/jsx/src/admin/dashboard-modals.js:93
3814
  msgid "Help from our friendly support team"
3815
  msgstr ""
3816
 
3817
- #: inc/assets/jsx/build/admin/dashboard-modals.js:248
3818
  #: inc/assets/jsx/src/admin/dashboard-modals.js:94
3819
  msgid "Automatically transfer your free forms"
3820
  msgstr ""
3821
 
3822
- #: inc/assets/jsx/build/admin/dashboard-modals.js:248
3823
  #: inc/assets/jsx/src/admin/dashboard-modals.js:95
3824
  msgid "New updates every second week"
3825
  msgstr ""
3826
 
3827
- #: inc/assets/jsx/build/admin/dashboard-modals.js:248
3828
  #: inc/assets/jsx/src/admin/dashboard-modals.js:97
3829
  msgid "Ready to build better forms?"
3830
  msgstr ""
3831
 
3832
- #: inc/assets/jsx/build/admin/dashboard-modals.js:254
3833
  #: inc/assets/jsx/src/admin/dashboard-modals.js:101
3834
- msgid "Start a Free 7-day Trial"
3835
  msgstr ""
3836
 
3837
- #: inc/assets/jsx/build/admin/dashboard-modals.js:258
3838
  #: inc/assets/jsx/src/admin/dashboard-modals.js:102
3839
  msgid "Nope, Maybe Later"
3840
  msgstr ""
2
  # This file is distributed under the same license as the Happyforms (free) plugin.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Happyforms (free) 1.21.1\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/happyforms/\n"
7
  "Last-Translator: The Theme Foundry\n"
8
  "Language-Team: The Theme Foundry\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
+ "POT-Creation-Date: 2022-12-15T08:30:23+00:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.4.0\n"
15
  "X-Domain: happyforms\n"
172
  msgstr ""
173
 
174
  #: core/classes/class-form-email.php:126
175
+ #: inc/classes/class-happyforms.php:152
176
  msgid "To email address"
177
  msgstr ""
178
 
293
  msgid "These messages are shown to submitters as they fill out the form to help them trigger an action."
294
  msgstr ""
295
 
296
+ #: core/classes/class-form-messages.php:115
297
+ msgid "Links"
298
+ msgstr ""
299
+
300
+ #: core/classes/class-form-messages.php:116
301
+ msgid "These messages are shown to submitters as they fill out the form to help them go to a new page or move somewhere on the same page."
302
+ msgstr ""
303
+
304
+ #: core/classes/class-form-messages.php:127
305
  msgid "Errors"
306
  msgstr ""
307
 
308
+ #: core/classes/class-form-messages.php:128
309
  msgid "These messages are shown to submitters when they try to submit but one or more fields has a mistake."
310
  msgstr ""
311
 
312
+ #: core/classes/class-form-messages.php:137
313
  msgid "Hints"
314
  msgstr ""
315
 
316
+ #: core/classes/class-form-messages.php:138
317
  msgid "These messages are shown to submitters as they fill out the form to help them avoid mistakes."
318
  msgstr ""
319
 
320
+ #: core/classes/class-form-messages.php:145
321
  msgid "Too many choices are selected"
322
  msgstr ""
323
 
324
+ #: core/classes/class-form-messages.php:150
325
  msgid "Not enough choices are selected"
326
  msgstr ""
327
 
328
+ #: core/classes/class-form-messages.php:157
329
  msgid "Number too small"
330
  msgstr ""
331
 
332
+ #: core/classes/class-form-messages.php:162
333
  msgid "Number too big"
334
  msgstr ""
335
 
336
+ #: core/classes/class-form-messages.php:167
337
  msgid "Search couldn't find anything"
338
  msgstr ""
339
 
340
+ #: core/classes/class-form-messages.php:172
341
  msgid "Minimum characters"
342
  msgstr ""
343
 
344
+ #: core/classes/class-form-messages.php:177
345
  msgid "Maximum characters"
346
  msgstr ""
347
 
348
+ #: core/classes/class-form-messages.php:182
349
  msgid "Minimum words"
350
  msgstr ""
351
 
352
+ #: core/classes/class-form-messages.php:187
353
  msgid "Maximum words"
354
  msgstr ""
355
 
356
+ #: core/classes/class-form-messages.php:192
357
  msgid "Question is optional"
358
  msgstr ""
359
 
360
+ #: core/classes/class-form-messages.php:197
361
  msgid "Question is required"
362
  msgstr ""
363
 
364
+ #: core/classes/class-form-messages.php:202
365
  msgid "Remaining submissions"
366
  msgstr ""
367
 
918
  msgid "This answer isn't long enough."
919
  msgstr ""
920
 
921
+ #: core/classes/class-wp-customize-form-manager.php:161
922
+ msgid "To publish your new form, add a <i>Forms</i> block anywhere your theme allows blocks to be added. If you're using an older theme or page builder, you might instead need to copy the form's shortcode and paste it into your site as your theme's author recommends."
 
 
 
 
923
  msgstr ""
924
 
925
+ #: core/classes/class-wp-customize-form-manager.php:321
926
  msgid "The changes you made will be lost if you navigate away from this page."
927
  msgstr ""
928
 
1043
  msgstr ""
1044
 
1045
  #: core/helpers/helper-activation.php:80
 
1046
  #: inc/assets/jsx/src/admin/dashboard-modals.js:49
1047
  msgid "Email address"
1048
  msgstr ""
3024
  msgid "Max times the same answer can be submitted"
3025
  msgstr ""
3026
 
3027
+ #: inc/classes/class-happyforms.php:80
3028
+ msgid "Trash submission if it contains words in"
3029
+ msgstr ""
3030
+
3031
+ #: inc/classes/class-happyforms.php:81
3032
+ msgid "Disallowed Comment Keys"
3033
+ msgstr ""
3034
+
3035
+ #: inc/classes/class-happyforms.php:87
3036
  msgid "Upgrade"
3037
  msgstr ""
3038
 
3039
+ #: inc/classes/class-happyforms.php:95
3040
  msgid "Redirect to this page address (URL) after submission"
3041
  msgstr ""
3042
 
3043
+ #: inc/classes/class-happyforms.php:96
3044
  msgid "Search or type URL"
3045
  msgstr ""
3046
 
3047
+ #: inc/classes/class-happyforms.php:102
3048
  msgid "Shuffle order of fields"
3049
  msgstr ""
3050
 
3051
+ #: inc/classes/class-happyforms.php:108
3052
  msgid "Use reCAPTCHA"
3053
  msgstr ""
3054
 
3055
+ #: inc/classes/class-happyforms.php:114
3056
  msgid "Let submitters save a draft for set number of days"
3057
  msgstr ""
3058
 
3059
+ #: inc/classes/class-happyforms.php:120
3060
  msgid "Require submitters to review a submission"
3061
  msgstr ""
3062
 
3063
+ #: inc/classes/class-happyforms.php:126
3064
  msgid "Max number of submissions"
3065
  msgstr ""
3066
 
3067
+ #: inc/classes/class-happyforms.php:132
3068
  msgid "Erase submitter's personal data after set number of days"
3069
  msgstr ""
3070
 
3071
+ #: inc/classes/class-happyforms.php:158
 
 
 
 
3072
  msgid "Send abandonment email"
3073
  msgstr ""
3074
 
3075
+ #: inc/classes/class-happyforms.php:172
3076
  msgid "Checkboxes & Radios"
3077
  msgstr ""
3078
 
3079
+ #: inc/classes/class-happyforms.php:178
3080
  msgid "Rating"
3081
  msgstr ""
3082
 
3083
+ #: inc/classes/class-happyforms.php:184
3084
  msgid "Multi Step"
3085
  msgstr ""
3086
 
3087
+ #: inc/classes/class-happyforms.php:198
3088
  msgid "Form redirected after submission"
3089
  msgstr ""
3090
 
3091
+ #: inc/classes/class-happyforms.php:203
3092
  msgid "Form has reached its reply limit"
3093
  msgstr ""
3094
 
3095
+ #: inc/classes/class-happyforms.php:208
3096
  msgid "Submitter has returned to a draft"
3097
  msgstr ""
3098
 
3099
+ #: inc/classes/class-happyforms.php:213
3100
  msgid "Submitter is viewing review page"
3101
  msgstr ""
3102
 
3103
+ #: inc/classes/class-happyforms.php:218
3104
  msgid "Payment completed"
3105
  msgstr ""
3106
 
3107
+ #: inc/classes/class-happyforms.php:223
3108
  msgid "Payment failed"
3109
  msgstr ""
3110
 
3111
+ #: inc/classes/class-happyforms.php:228
3112
  msgid "Payment cancelled"
3113
  msgstr ""
3114
 
3115
+ #: inc/classes/class-happyforms.php:233
3116
  msgid "Previous page"
3117
  msgstr ""
3118
 
3119
+ #: inc/classes/class-happyforms.php:238
3120
  msgid "Redirect to page"
3121
  msgstr ""
3122
 
3123
+ #: inc/classes/class-happyforms.php:243
3124
  msgid "Print user submission"
3125
  msgstr ""
3126
 
3127
+ #: inc/classes/class-happyforms.php:248
3128
  msgid "Edit reply"
3129
  msgstr ""
3130
 
3131
+ #: inc/classes/class-happyforms.php:253
3132
  msgid "Clear saved draft reply"
3133
  msgstr ""
3134
 
3135
+ #: inc/classes/class-happyforms.php:258
3136
  msgid "Save draft reply"
3137
  msgstr ""
3138
 
3139
+ #: inc/classes/class-happyforms.php:263
3140
  msgid "Upload files"
3141
  msgstr ""
3142
 
3143
+ #: inc/classes/class-happyforms.php:268
3144
  msgid "Remove uploaded file"
3145
  msgstr ""
3146
 
3147
+ #: inc/classes/class-happyforms.php:273
3148
  msgid "Review reply"
3149
  msgstr ""
3150
 
3151
+ #: inc/classes/class-happyforms.php:278
3152
  msgid "Start drawing signature"
3153
  msgstr ""
3154
 
3155
+ #: inc/classes/class-happyforms.php:283
3156
  msgid "Start over drawing signature"
3157
  msgstr ""
3158
 
3159
+ #: inc/classes/class-happyforms.php:288
3160
  msgid "Clear drawn signature"
3161
  msgstr ""
3162
 
3163
+ #: inc/classes/class-happyforms.php:293
3164
  msgid "Done drawing signature"
3165
  msgstr ""
3166
 
3167
+ #: inc/classes/class-happyforms.php:298
3168
  msgid "Field answer reached its limit"
3169
  msgstr ""
3170
 
3171
+ #: inc/classes/class-happyforms.php:303
3172
  msgid "Coupon code invalid"
3173
  msgstr ""
3174
 
3175
+ #: inc/classes/class-happyforms.php:308
3176
  msgid "Required file isn't uploaded"
3177
  msgstr ""
3178
 
3179
+ #: inc/classes/class-happyforms.php:313
3180
  msgid "Required terms haven't been scrolled"
3181
  msgstr ""
3182
 
3183
+ #: inc/classes/class-happyforms.php:318
3184
  msgid "Field contains disallowed word"
3185
  msgstr ""
3186
 
3187
+ #: inc/classes/class-happyforms.php:323
3188
  msgid "Disallowed IP address or browser"
3189
  msgstr ""
3190
 
3191
+ #: inc/classes/class-happyforms.php:328
3192
  msgid "This file's size is too big"
3193
  msgstr ""
3194
 
3195
+ #: inc/classes/class-happyforms.php:333
3196
  msgid "This file's type not allowed"
3197
  msgstr ""
3198
 
3199
+ #: inc/classes/class-happyforms.php:338
3200
  msgid "A file with this name has already been uploaded"
3201
  msgstr ""
3202
 
3203
+ #: inc/classes/class-happyforms.php:343
3204
  msgid "User uploaded too few files"
3205
  msgstr ""
3206
 
3207
+ #: inc/classes/class-happyforms.php:348
3208
  msgid "Price is too low"
3209
  msgstr ""
3210
 
3211
+ #: inc/classes/class-happyforms.php:353
3212
  msgid "Phone field country code label"
3213
  msgstr ""
3214
 
3215
+ #: inc/classes/class-happyforms.php:358
3216
  msgid "Phone field number label"
3217
  msgstr ""
3218
 
3219
+ #: inc/classes/class-happyforms.php:363
3220
  msgid "Total files uploaded"
3221
  msgstr ""
3222
 
3223
+ #: inc/classes/class-happyforms.php:368
3224
  msgid "Payment method"
3225
  msgstr ""
3226
 
3227
+ #: inc/classes/class-happyforms.php:373
3228
  msgid "Pay what you want"
3229
  msgstr ""
3230
 
3231
+ #: inc/classes/class-happyforms.php:378
3232
  msgid "Submitter will be redirected to PayPal"
3233
  msgstr ""
3234
 
3235
+ #: inc/classes/class-happyforms.php:383
3236
  msgid "PayPal payment"
3237
  msgstr ""
3238
 
3239
+ #: inc/classes/class-happyforms.php:388
3240
  msgid "Stripe is processing payment"
3241
  msgstr ""
3242
 
3243
+ #: inc/classes/class-happyforms.php:393
3244
  msgid "Stripe payment"
3245
  msgstr ""
3246
 
3247
+ #: inc/classes/class-happyforms.php:398
3248
  msgid "Stripe card field"
3249
  msgstr ""
3250
 
3251
+ #: inc/classes/class-happyforms.php:403
3252
  msgid "Card number"
3253
  msgstr ""
3254
 
3255
+ #: inc/classes/class-happyforms.php:408
3256
  msgid "Card expiration"
3257
  msgstr ""
3258
 
3259
+ #: inc/classes/class-happyforms.php:413
3260
  msgid "Card security code"
3261
  msgstr ""
3262
 
3263
+ #: inc/classes/class-happyforms.php:418
3264
  msgid "Coupon field label"
3265
  msgstr ""
3266
 
3267
+ #: inc/classes/class-happyforms.php:423
3268
  msgid "Apply coupon button label"
3269
  msgstr ""
3270
 
3271
+ #: inc/classes/class-happyforms.php:428
3272
  msgid "Current page"
3273
  msgstr ""
3274
 
3786
  msgid "Pick a form"
3787
  msgstr ""
3788
 
 
3789
  #: inc/assets/jsx/src/admin/dashboard-modals.js:45
3790
  msgid "One last thing"
3791
  msgstr ""
3792
 
 
3793
  #: inc/assets/jsx/src/admin/dashboard-modals.js:46
3794
  msgid "We'll occasionally send you emails about plugin updates. And don't sweat it, you can unsubscribe anytime."
3795
  msgstr ""
3796
 
 
3797
  #: inc/assets/jsx/src/admin/dashboard-modals.js:54
3798
  msgid "Continue"
3799
  msgstr ""
3800
 
 
3801
  #: inc/assets/jsx/src/admin/dashboard-modals.js:87
3802
+ msgid "You'll need to upgrade to get access to this"
3803
  msgstr ""
3804
 
 
3805
  #: inc/assets/jsx/src/admin/dashboard-modals.js:90
3806
  msgid "You're just a mouse click and a few key taps away from building better forms."
3807
  msgstr ""
3808
 
 
3809
  #: inc/assets/jsx/src/admin/dashboard-modals.js:92
3810
  msgid "Advanced features and integrations"
3811
  msgstr ""
3812
 
 
3813
  #: inc/assets/jsx/src/admin/dashboard-modals.js:93
3814
  msgid "Help from our friendly support team"
3815
  msgstr ""
3816
 
 
3817
  #: inc/assets/jsx/src/admin/dashboard-modals.js:94
3818
  msgid "Automatically transfer your free forms"
3819
  msgstr ""
3820
 
 
3821
  #: inc/assets/jsx/src/admin/dashboard-modals.js:95
3822
  msgid "New updates every second week"
3823
  msgstr ""
3824
 
 
3825
  #: inc/assets/jsx/src/admin/dashboard-modals.js:97
3826
  msgid "Ready to build better forms?"
3827
  msgstr ""
3828
 
 
3829
  #: inc/assets/jsx/src/admin/dashboard-modals.js:101
3830
+ msgid "Learn More Now"
3831
  msgstr ""
3832
 
 
3833
  #: inc/assets/jsx/src/admin/dashboard-modals.js:102
3834
  msgid "Nope, Maybe Later"
3835
  msgstr ""
readme.txt CHANGED
@@ -5,7 +5,7 @@ Tags: contact form, contact form plugin, forms, form builder, custom form, intak
5
  Requires at least: 5.0
6
  Tested up to: 6.1
7
  Requires PHP: 7.0
8
- Stable tag: 1.21.0
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -160,6 +160,13 @@ And so you know, we don't outsource support. You can expect plain-talkin' help f
160
 
161
  == Changelog ==
162
 
 
 
 
 
 
 
 
163
  = November 30, 2022 =
164
 
165
  Version 1.21.0 changelog:
@@ -1486,6 +1493,9 @@ Version 1.0.0 changelog:
1486
 
1487
  == Upgrade Notice ==
1488
 
 
 
 
1489
  = 1.21.0 =
1490
  * New Heading, Paragraph, Media and Separator fields and form importer in Tools → Import screen.
1491
 
5
  Requires at least: 5.0
6
  Tested up to: 6.1
7
  Requires PHP: 7.0
8
+ Stable tag: 1.21.1
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
160
 
161
  == Changelog ==
162
 
163
+ = December 15, 2022 =
164
+
165
+ Version 1.21.1 changelog:
166
+
167
+ * Changed: Dashboard notice displayed after a new form is created has been reworded and made more informative.
168
+ * Changed: "Buttons" group in Messages tab has been split up for clearer separation of concerns.
169
+
170
  = November 30, 2022 =
171
 
172
  Version 1.21.0 changelog:
1493
 
1494
  == Upgrade Notice ==
1495
 
1496
+ = 1.21.1 =
1497
+ * Dashboard notices and Messages tab improvements.
1498
+
1499
  = 1.21.0 =
1500
  * New Heading, Paragraph, Media and Separator fields and form importer in Tools → Import screen.
1501