Forminator Payment, Quiz and Contact Form Plugin - Version 1.12.1

Version Description

  • Fix: Quiz submitting after answering first question
  • Fix: Compatibility issue with BigCommerce plugin
  • Fix: Name field breaks pagination
Download this release

Release Info

Developer alerzhus
Plugin Icon 128x128 Forminator Payment, Quiz and Contact Form Plugin
Version 1.12.1
Comparing to
See all releases

Code changes from version 1.11.4 to 1.12.1

Files changed (240) hide show
  1. addons/pro/activecampaign/activecampaign.php +3 -3
  2. addons/pro/activecampaign/{forminator-addon-activecampaign-exception.php → class-forminator-addon-activecampaign-exception.php} +0 -0
  3. addons/pro/activecampaign/{forminator-addon-activecampaign-form-hooks.php → class-forminator-addon-activecampaign-form-hooks.php} +2 -11
  4. addons/pro/activecampaign/{forminator-addon-activecampaign-form-settings-exception.php → class-forminator-addon-activecampaign-form-settings-exception.php} +0 -0
  5. addons/pro/activecampaign/{forminator-addon-activecampaign-form-settings.php → class-forminator-addon-activecampaign-form-settings.php} +33 -38
  6. addons/pro/activecampaign/{forminator-addon-activecampaign.php → class-forminator-addon-activecampaign.php} +6 -12
  7. addons/pro/activecampaign/lib/{class-wp-activecampaign-api-exception.php → class-forminator-addon-activecampaign-wp-api-exception.php} +0 -0
  8. addons/pro/activecampaign/lib/{class-wp-activecampaign-api-not-found-exception.php → class-forminator-addon-activecampaign-wp-api-not-found-exception.php} +0 -0
  9. addons/pro/activecampaign/lib/{class-wp-activecampaign-api.php → class-forminator-addon-activecampaign-wp-api.php} +13 -11
  10. addons/pro/activecampaign/views/form-settings/select-list.php +1 -1
  11. addons/pro/activecampaign/views/form-settings/setup-options.php +8 -7
  12. addons/pro/activecampaign/views/settings/setup-api-success.php +4 -1
  13. addons/pro/activecampaign/views/settings/setup-api.php +11 -6
  14. addons/pro/aweber/aweber.php +3 -3
  15. addons/pro/aweber/{forminator-addon-aweber-exception.php → class-forminator-addon-aweber-exception.php} +0 -0
  16. addons/pro/aweber/{forminator-addon-aweber-form-hooks.php → class-forminator-addon-aweber-form-hooks.php} +12 -25
  17. addons/pro/aweber/{forminator-addon-aweber-form-settings-exception.php → class-forminator-addon-aweber-form-settings-exception.php} +0 -0
  18. addons/pro/aweber/{forminator-addon-aweber-form-settings.php → class-forminator-addon-aweber-form-settings.php} +29 -34
  19. addons/pro/aweber/{forminator-addon-aweber.php → class-forminator-addon-aweber.php} +2 -4
  20. addons/pro/aweber/lib/{class-aweber-oauth.php → class-forminator-addon-aweber-oauth.php} +1 -2
  21. addons/pro/aweber/lib/{class-wp-aweber-api-exception.php → class-forminator-addon-aweber-wp-api-exception.php} +0 -0
  22. addons/pro/aweber/lib/{class-wp-aweber-api-not-found-exception.php → class-forminator-addon-aweber-wp-api-not-found-exception.php} +0 -0
  23. addons/pro/aweber/lib/{class-wp-aweber-api.php → class-forminator-addon-aweber-wp-api.php} +15 -15
  24. addons/pro/aweber/views/form-settings/setup-options.php +5 -5
  25. addons/pro/aweber/views/sections/authorize.php +12 -11
  26. addons/pro/aweber/views/settings/authorize.php +12 -2
  27. addons/pro/aweber/views/settings/success-authorize.php +6 -1
  28. addons/pro/aweber/views/settings/wait-authorize.php +12 -2
  29. addons/pro/campaignmonitor/campaignmonitor.php +3 -3
  30. addons/pro/campaignmonitor/{forminator-addon-campaignmonitor-exception.php → class-forminator-addon-campaignmonitor-exception.php} +0 -0
  31. addons/pro/campaignmonitor/{forminator-addon-campaignmonitor-form-hooks.php → class-forminator-addon-campaignmonitor-form-hooks.php} +6 -15
  32. addons/pro/campaignmonitor/{forminator-addon-campaignmonitor-form-settings-exception.php → class-forminator-addon-campaignmonitor-form-settings-exception.php} +0 -0
  33. addons/pro/campaignmonitor/{forminator-addon-campaignmonitor-form-settings.php → class-forminator-addon-campaignmonitor-form-settings.php} +28 -30
  34. addons/pro/campaignmonitor/{forminator-addon-campaignmonitor.php → class-forminator-addon-campaignmonitor.php} +8 -12
  35. addons/pro/campaignmonitor/lib/{class-wp-campaignmonitor-api-exception.php → class-forminator-addon-campaignmonitor-wp-api-exception.php} +0 -0
  36. addons/pro/campaignmonitor/lib/{class-wp-campaignmonitor-api-not-found-exception.php → class-forminator-addon-campaignmonitor-wp-api-not-found-exception.php} +0 -0
  37. addons/pro/campaignmonitor/lib/{class-wp-campaignmonitor-api.php → class-forminator-addon-campaignmonitor-wp-api.php} +15 -14
  38. addons/pro/campaignmonitor/views/form-settings/setup-options.php +1 -1
  39. addons/pro/campaignmonitor/views/settings/setup-api-success.php +6 -1
  40. addons/pro/campaignmonitor/views/settings/setup-api.php +49 -9
  41. addons/pro/googlesheet/{forminator-addon-googlesheet-exception.php → class-forminator-addon-googlesheet-exception.php} +0 -0
  42. addons/pro/googlesheet/{forminator-addon-googlesheet-form-hooks.php → class-forminator-addon-googlesheet-form-hooks.php} +1 -5
  43. addons/pro/googlesheet/{forminator-addon-googlesheet-form-settings-exception.php → class-forminator-addon-googlesheet-form-settings-exception.php} +0 -0
  44. addons/pro/googlesheet/{forminator-addon-googlesheet-form-settings.php → class-forminator-addon-googlesheet-form-settings.php} +13 -16
  45. addons/pro/googlesheet/{forminator-addon-googlesheet-poll-hooks.php → class-forminator-addon-googlesheet-poll-hooks.php} +1 -4
  46. addons/pro/googlesheet/{forminator-addon-googlesheet-poll-settings-exception.php → class-forminator-addon-googlesheet-poll-settings-exception.php} +0 -0
  47. addons/pro/googlesheet/{forminator-addon-googlesheet-poll-settings.php → class-forminator-addon-googlesheet-poll-settings.php} +13 -16
  48. addons/pro/googlesheet/{forminator-addon-googlesheet-quiz-hooks.php → class-forminator-addon-googlesheet-quiz-hooks.php} +4 -11
  49. addons/pro/googlesheet/{forminator-addon-googlesheet-quiz-settings-exception.php → class-forminator-addon-googlesheet-quiz-settings-exception.php} +0 -0
  50. addons/pro/googlesheet/{forminator-addon-googlesheet-quiz-settings.php → class-forminator-addon-googlesheet-quiz-settings.php} +5 -10
  51. addons/pro/googlesheet/{forminator-addon-googlesheet.php → class-forminator-addon-googlesheet.php} +6 -12
  52. addons/pro/googlesheet/googlesheet.php +8 -8
  53. addons/pro/googlesheet/lib/{class-wp-googlesheet-client-logger.php → class-forminator-addon-wp-googlesheet-client-logger.php} +0 -0
  54. addons/pro/googlesheet/views/form-settings/pick-name.php +1 -1
  55. addons/pro/googlesheet/views/form-settings/setup-sheet.php +13 -8
  56. addons/pro/googlesheet/views/poll-settings/pick-name.php +1 -1
  57. addons/pro/googlesheet/views/poll-settings/setup-sheet.php +13 -8
  58. addons/pro/googlesheet/views/quiz-settings/pick-name.php +1 -1
  59. addons/pro/googlesheet/views/quiz-settings/setup-sheet.php +13 -8
  60. addons/pro/googlesheet/views/sections/authorize.php +6 -5
  61. addons/pro/googlesheet/views/settings/authorize.php +1 -1
  62. addons/pro/googlesheet/views/settings/setup-client.php +74 -11
  63. addons/pro/googlesheet/views/settings/success-authorize.php +1 -1
  64. addons/pro/googlesheet/views/settings/wait-authorize.php +2 -2
  65. addons/pro/gutenberg/gutenberg.php +2 -2
  66. addons/pro/gutenberg/library/blocks/{class-block-forms.php → class-forminator-gfblock-forms.php} +9 -9
  67. addons/pro/gutenberg/library/blocks/{class-block-polls.php → class-forminator-gfblock-polls.php} +10 -10
  68. addons/pro/gutenberg/library/blocks/{class-block-quizzes.php → class-forminator-gfblock-quizzes.php} +11 -11
  69. addons/pro/gutenberg/library/{abstract-class-block.php → class-forminator-gfblock-abstract.php} +22 -15
  70. addons/pro/gutenberg/webpack.common.js +1 -1
  71. addons/pro/gutenberg/webpack.dev.js +7 -4
  72. addons/pro/gutenberg/webpack.prod.js +13 -8
  73. addons/pro/hubspot/{forminator-addon-hubspot-exception.php → class-forminator-addon-hubspot-exception.php} +0 -0
  74. addons/pro/hubspot/{forminator-addon-hubspot-form-hooks.php → class-forminator-addon-hubspot-form-hooks.php} +3 -8
  75. addons/pro/hubspot/{forminator-addon-hubspot-form-settings-exception.php → class-forminator-addon-hubspot-form-settings-exception.php} +0 -0
  76. addons/pro/hubspot/{forminator-addon-hubspot-form-settings.php → class-forminator-addon-hubspot-form-settings.php} +8 -7
  77. addons/pro/hubspot/{forminator-addon-hubspot.php → class-forminator-addon-hubspot.php} +36 -25
  78. addons/pro/hubspot/hubspot.php +3 -3
  79. addons/pro/hubspot/lib/{class-wp-hubspot-api-exception.php → class-forminator-addon-hubspot-wp-api-exception.php} +0 -0
  80. addons/pro/hubspot/lib/{class-wp-hubspot-api-not-found-exception.php → class-forminator-addon-hubspot-wp-api-not-found-exception.php} +0 -0
  81. addons/pro/hubspot/lib/{class-wp-hubspot-api.php → class-forminator-addon-hubspot-wp-api.php} +13 -11
  82. addons/pro/hubspot/views/form-settings/create-contact.php +56 -53
  83. addons/pro/hubspot/views/form-settings/create-ticket.php +1 -1
  84. addons/pro/hubspot/views/sections/authorize.php +3 -3
  85. addons/pro/hubspot/views/settings/authorize.php +14 -4
  86. addons/pro/hubspot/views/settings/error-authorize.php +6 -1
  87. addons/pro/hubspot/views/settings/success-authorize.php +7 -2
  88. addons/pro/hubspot/views/settings/wait-authorize.php +15 -5
  89. addons/pro/mailchimp/{forminator-addon-mailchimp-exception.php → class-forminator-addon-mailchimp-exception.php} +0 -0
  90. addons/pro/mailchimp/{forminator-addon-mailchimp-form-hooks.php → class-forminator-addon-mailchimp-form-hooks.php} +31 -72
  91. addons/pro/mailchimp/{forminator-addon-mailchimp-form-settings-exception.php → class-forminator-addon-mailchimp-form-settings-exception.php} +0 -0
  92. addons/pro/mailchimp/{forminator-addon-mailchimp-form-settings.php → class-forminator-addon-mailchimp-form-settings.php} +64 -57
  93. addons/pro/mailchimp/{forminator-addon-mailchimp.php → class-forminator-addon-mailchimp.php} +30 -22
  94. addons/pro/mailchimp/lib/{class-wp-mailchimp-api-exception.php → class-forminator-addon-mailchimp-wp-api-exception.php} +0 -0
  95. addons/pro/mailchimp/lib/{class-wp-mailchimp-api-not-found-exception.php → class-forminator-addon-mailchimp-wp-api-not-found-exception.php} +0 -0
  96. addons/pro/mailchimp/lib/{class-wp-mailchimp-api.php → class-forminator-addon-mailchimp-wp-api.php} +21 -18
  97. addons/pro/mailchimp/mailchimp.php +3 -3
  98. addons/pro/slack/{forminator-addon-slack-exception.php → class-forminator-addon-slack-exception.php} +0 -0
  99. addons/pro/slack/{forminator-addon-slack-form-hooks.php → class-forminator-addon-slack-form-hooks.php} +5 -9
  100. addons/pro/slack/{forminator-addon-slack-form-settings-exception.php → class-forminator-addon-slack-form-settings-exception.php} +0 -0
  101. addons/pro/slack/{forminator-addon-slack-form-settings.php → class-forminator-addon-slack-form-settings.php} +25 -24
  102. addons/pro/slack/{forminator-addon-slack-poll-hooks.php → class-forminator-addon-slack-poll-hooks.php} +1 -4
  103. addons/pro/slack/{forminator-addon-slack-poll-settings-exception.php → class-forminator-addon-slack-poll-settings-exception.php} +0 -0
  104. addons/pro/slack/{forminator-addon-slack-poll-settings.php → class-forminator-addon-slack-poll-settings.php} +25 -24
  105. addons/pro/slack/{forminator-addon-slack-quiz-hooks.php → class-forminator-addon-slack-quiz-hooks.php} +4 -12
  106. addons/pro/slack/{forminator-addon-slack-quiz-settings-exception.php → class-forminator-addon-slack-quiz-settings-exception.php} +0 -0
  107. addons/pro/slack/{forminator-addon-slack-quiz-settings.php → class-forminator-addon-slack-quiz-settings.php} +9 -12
  108. addons/pro/slack/{forminator-addon-slack.php → class-forminator-addon-slack.php} +7 -12
  109. addons/pro/slack/lib/{class-wp-slack-api-exception.php → class-forminator-addon-slack-wp-api-exception.php} +0 -0
  110. addons/pro/slack/lib/{class-wp-slack-api-not-found-exception.php → class-forminator-addon-slack-wp-api-not-found-exception.php} +0 -0
  111. addons/pro/slack/lib/{class-wp-slack-api.php → class-forminator-addon-slack-wp-api.php} +12 -10
  112. addons/pro/slack/slack.php +7 -7
  113. addons/pro/slack/views/form-settings/setup-message.php +9 -5
  114. addons/pro/slack/views/poll-settings/setup-message.php +12 -8
  115. addons/pro/slack/views/quiz-settings/setup-message.php +8 -6
  116. addons/pro/slack/views/sections/authorize.php +6 -5
  117. addons/pro/slack/views/settings/authorize.php +6 -1
  118. addons/pro/slack/views/settings/error-authorize.php +4 -1
  119. addons/pro/slack/views/settings/setup-client.php +62 -32
  120. addons/pro/slack/views/settings/success-authorize.php +4 -1
  121. addons/pro/slack/views/settings/wait-authorize.php +2 -2
  122. addons/pro/trello/{forminator-addon-trello-exception.php → class-forminator-addon-trello-exception.php} +0 -0
  123. addons/pro/trello/{forminator-addon-trello-form-hooks.php → class-forminator-addon-trello-form-hooks.php} +4 -9
  124. addons/pro/trello/{forminator-addon-trello-form-settings-exception.php → class-forminator-addon-trello-form-settings-exception.php} +0 -0
  125. addons/pro/trello/{forminator-addon-trello-form-settings.php → class-forminator-addon-trello-form-settings.php} +26 -24
  126. addons/pro/trello/{forminator-addon-trello-poll-hooks.php → class-forminator-addon-trello-poll-hooks.php} +3 -9
  127. addons/pro/trello/{forminator-addon-trello-poll-settings-exception.php → class-forminator-addon-trello-poll-settings-exception.php} +0 -0
  128. addons/pro/trello/{forminator-addon-trello-poll-settings.php → class-forminator-addon-trello-poll-settings.php} +26 -25
  129. addons/pro/trello/{forminator-addon-trello-quiz-hooks.php → class-forminator-addon-trello-quiz-hooks.php} +16 -22
  130. addons/pro/trello/{forminator-addon-trello-quiz-settings-exception.php → class-forminator-addon-trello-quiz-settings-exception.php} +0 -0
  131. addons/pro/trello/{forminator-addon-trello-quiz-settings.php → class-forminator-addon-trello-quiz-settings.php} +10 -13
  132. addons/pro/trello/{forminator-addon-trello.php → class-forminator-addon-trello.php} +3 -5
  133. addons/pro/trello/lib/{class-wp-trello-api-exception.php → class-forminator-addon-trello-wp-api-exception.php} +0 -0
  134. addons/pro/trello/lib/{class-wp-trello-api-not-found-exception.php → class-forminator-addon-trello-wp-api-not-found-exception.php} +0 -0
  135. addons/pro/trello/lib/{class-wp-trello-api.php → class-forminator-addon-trello-wp-api.php} +9 -8
  136. addons/pro/trello/trello.php +7 -7
  137. addons/pro/trello/views/form-settings/setup-card.php +17 -17
  138. addons/pro/trello/views/form-settings/setup-list.php +3 -2
  139. addons/pro/trello/views/poll-settings/setup-card.php +20 -20
  140. addons/pro/trello/views/poll-settings/setup-list.php +3 -2
  141. addons/pro/trello/views/quiz-settings/setup-card.php +20 -20
  142. addons/pro/trello/views/quiz-settings/setup-list.php +3 -2
  143. addons/pro/trello/views/sections/authorize.php +12 -11
  144. addons/pro/trello/views/settings/authorize.php +7 -3
  145. addons/pro/trello/views/settings/success-authorize.php +4 -1
  146. addons/pro/trello/views/settings/wait-authorize.php +0 -1
  147. addons/pro/zapier/{forminator-addon-zapier-exception.php → class-forminator-addon-zapier-exception.php} +0 -0
  148. addons/pro/zapier/{forminator-addon-zapier-form-hooks.php → class-forminator-addon-zapier-form-hooks.php} +0 -5
  149. addons/pro/zapier/{forminator-addon-zapier-form-settings-exception.php → class-forminator-addon-zapier-form-settings-exception.php} +0 -0
  150. addons/pro/zapier/{forminator-addon-zapier-form-settings.php → class-forminator-addon-zapier-form-settings.php} +9 -8
  151. addons/pro/zapier/{forminator-addon-zapier-poll-hooks.php → class-forminator-addon-zapier-poll-hooks.php} +0 -4
  152. addons/pro/zapier/{forminator-addon-zapier-poll-settings-exception.php → class-forminator-addon-zapier-poll-settings-exception.php} +0 -0
  153. addons/pro/zapier/{forminator-addon-zapier-poll-settings.php → class-forminator-addon-zapier-poll-settings.php} +7 -10
  154. addons/pro/zapier/{forminator-addon-zapier-quiz-hooks.php → class-forminator-addon-zapier-quiz-hooks.php} +3 -9
  155. addons/pro/zapier/{forminator-addon-zapier-quiz-settings-exception.php → class-forminator-addon-zapier-quiz-settings-exception.php} +0 -0
  156. addons/pro/zapier/{forminator-addon-zapier-quiz-settings.php → class-forminator-addon-zapier-quiz-settings.php} +5 -8
  157. addons/pro/zapier/{forminator-addon-zapier.php → class-forminator-addon-zapier.php} +10 -7
  158. addons/pro/zapier/lib/{class-wp-zapier-api-exception.php → class-forminator-addon-zapier-wp-api-exception.php} +0 -0
  159. addons/pro/zapier/lib/{class-wp-zapier-api-not-found-exception.php → class-forminator-addon-zapier-wp-api-not-found-exception.php} +0 -0
  160. addons/pro/zapier/lib/{class-wp-zapier-api.php → class-forminator-addon-zapier-wp-api.php} +6 -5
  161. addons/pro/zapier/views/poll-settings/setup-webhook.php +12 -9
  162. addons/pro/zapier/views/quiz-settings/setup-webhook.php +12 -9
  163. addons/pro/zapier/views/settings/setup-connect-success.php +4 -1
  164. addons/pro/zapier/views/settings/setup-connect.php +6 -1
  165. addons/pro/zapier/zapier.php +7 -7
  166. admin/abstracts/class-admin-import-mediator.php +2 -0
  167. admin/abstracts/class-admin-module.php +6 -6
  168. admin/abstracts/class-admin-page.php +12 -7
  169. admin/classes/class-admin-ajax.php +169 -172
  170. admin/classes/class-admin-data.php +38 -3
  171. admin/classes/class-admin-l10n.php +124 -119
  172. admin/classes/class-admin.php +51 -51
  173. admin/locale.php +390 -285
  174. admin/pages/dashboard-page.php +6 -3
  175. admin/pages/entries-page.php +30 -26
  176. admin/pages/integrations-page.php +2 -2
  177. admin/pages/settings-page.php +2 -3
  178. admin/views/boxes/content-box.php +9 -9
  179. admin/views/boxes/popup-box.php +7 -7
  180. admin/views/custom-form/entries/content.php +101 -42
  181. admin/views/custom-form/entries/filter.php +51 -49
  182. admin/views/custom-form/entries/header.php +2 -2
  183. admin/views/custom-form/entries/popup/schedule-export-content.php +62 -62
  184. admin/views/custom-form/entries/prompt.php +12 -12
  185. admin/views/custom-form/list/content.php +59 -53
  186. admin/views/custom-form/list/header.php +2 -2
  187. admin/views/custom-form/popup/export.php +6 -4
  188. admin/views/custom-form/wizard/header.php +1 -0
  189. admin/views/dashboard/content.php +1 -1
  190. admin/views/dashboard/footer-free.php +2 -2
  191. admin/views/dashboard/header.php +2 -2
  192. admin/views/dashboard/stripe-notice.php +4 -4
  193. admin/views/dashboard/widgets/widget-cform.php +17 -15
  194. admin/views/dashboard/widgets/widget-create.php +11 -11
  195. admin/views/dashboard/widgets/widget-poll.php +22 -20
  196. admin/views/dashboard/widgets/widget-quiz.php +20 -18
  197. admin/views/dashboard/widgets/widget-resume.php +6 -7
  198. admin/views/entries/content.php +11 -11
  199. admin/views/entries/header.php +2 -2
  200. admin/views/integrations/addon.php +14 -10
  201. admin/views/integrations/content.php +13 -13
  202. admin/views/integrations/form-content.php +7 -6
  203. admin/views/integrations/header.php +2 -2
  204. admin/views/integrations/page-content.php +9 -7
  205. admin/views/integrations/poll-content.php +9 -7
  206. admin/views/integrations/quiz-addon.php +28 -29
  207. admin/views/integrations/quiz-content.php +6 -6
  208. admin/views/poll/entries/content-none.php +8 -8
  209. admin/views/poll/entries/content.php +28 -25
  210. admin/views/poll/entries/header.php +2 -2
  211. admin/views/poll/list/content.php +59 -55
  212. admin/views/poll/list/header.php +2 -2
  213. admin/views/poll/popup/export.php +6 -4
  214. admin/views/poll/wizard/header.php +1 -0
  215. admin/views/quiz/entries/content.php +42 -34
  216. admin/views/quiz/entries/header.php +2 -2
  217. admin/views/quiz/knowledge/header.php +1 -0
  218. admin/views/quiz/list/content.php +59 -55
  219. admin/views/quiz/list/header.php +3 -3
  220. admin/views/quiz/nowrong/header.php +1 -0
  221. admin/views/quiz/popup/export.php +6 -4
  222. admin/views/settings/content.php +8 -8
  223. admin/views/settings/dashboard/polls.php +2 -2
  224. admin/views/settings/data/forms-privacy.php +51 -54
  225. admin/views/settings/data/polls-privacy.php +53 -56
  226. admin/views/settings/data/quizzes-privacy.php +19 -24
  227. admin/views/settings/header.php +2 -2
  228. admin/views/settings/payments/paypal.php +8 -8
  229. admin/views/settings/payments/section-paypal.php +58 -58
  230. admin/views/settings/payments/section-stripe.php +9 -8
  231. admin/views/settings/payments/stripe.php +1 -1
  232. admin/views/settings/tab-accessibility.php +10 -11
  233. admin/views/settings/tab-dashboard.php +1 -2
  234. admin/views/settings/tab-data.php +14 -12
  235. admin/views/settings/tab-emails.php +40 -40
  236. admin/views/settings/tab-pagination.php +39 -39
  237. admin/views/settings/tab-payments.php +1 -1
  238. admin/views/settings/tab-recaptcha.php +4 -5
  239. admin/views/settings/tab-submissions.php +2 -3
  240. assets/css/forminator-scgen.min.css +1 -1
addons/pro/activecampaign/activecampaign.php CHANGED
@@ -23,8 +23,8 @@ function forminator_addon_activecampaign_assets_url() {
23
  return trailingslashit( forminator_addon_activecampaign_url() . 'assets' );
24
  }
25
 
26
- require_once dirname( __FILE__ ) . '/forminator-addon-activecampaign.php';
27
- require_once dirname( __FILE__ ) . '/forminator-addon-activecampaign-form-settings.php';
28
- require_once dirname( __FILE__ ) . '/forminator-addon-activecampaign-form-hooks.php';
29
  //Direct Load
30
  Forminator_Addon_Loader::get_instance()->register( 'Forminator_Addon_Activecampaign' );
23
  return trailingslashit( forminator_addon_activecampaign_url() . 'assets' );
24
  }
25
 
26
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-activecampaign.php';
27
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-activecampaign-form-settings.php';
28
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-activecampaign-form-hooks.php';
29
  //Direct Load
30
  Forminator_Addon_Loader::get_instance()->register( 'Forminator_Addon_Activecampaign' );
addons/pro/activecampaign/{forminator-addon-activecampaign-exception.php → class-forminator-addon-activecampaign-exception.php} RENAMED
File without changes
addons/pro/activecampaign/{forminator-addon-activecampaign-form-hooks.php → class-forminator-addon-activecampaign-form-hooks.php} RENAMED
@@ -101,7 +101,6 @@ class Forminator_Addon_Activecampaign_Form_Hooks extends Forminator_Addon_Form_H
101
  'value' => $this->get_status_on_contact_sync( $key, $submitted_data, $addon_setting_value, $form_settings, $form_entry_fields ),
102
  );
103
  }
104
-
105
  }
106
 
107
  $entry_fields = $data;
@@ -165,7 +164,7 @@ class Forminator_Addon_Activecampaign_Form_Hooks extends Forminator_Addon_Form_H
165
 
166
  $email_element_id = $connection_settings['fields_map']['email'];
167
  if ( ! isset( $submitted_data[ $email_element_id ] ) || empty( $submitted_data[ $email_element_id ] ) ) {
168
- throw new Forminator_Addon_Activecampaign_Exception( __( 'Email on element %1$s not found or not filled on submitted data.', Forminator::DOMAIN ) );
169
  }
170
  $email = $submitted_data[ $email_element_id ];
171
  $email = strtolower( trim( $email ) );
@@ -206,7 +205,6 @@ class Forminator_Addon_Activecampaign_Form_Hooks extends Forminator_Addon_Form_H
206
  $args[ $common_field ] = $element_value;
207
  unset( $element_value ); // unset for next loop
208
  }
209
-
210
  }
211
  // processed
212
  unset( $fields_map[ $common_field ] );
@@ -240,7 +238,7 @@ class Forminator_Addon_Activecampaign_Form_Hooks extends Forminator_Addon_Form_H
240
  $tags = array();
241
  foreach ( $connection_settings['tags'] as $tag ) {
242
  if ( stripos( $tag, '{' ) === 0
243
- && stripos( $tag, '}' ) === ( strlen( $tag ) - 1 )
244
  ) {
245
  // translate to value
246
  $element_id = str_ireplace( '{', '', $tag );
@@ -256,15 +254,12 @@ class Forminator_Addon_Activecampaign_Form_Hooks extends Forminator_Addon_Form_H
256
  if ( is_array( $element_value ) ) {
257
  $element_value = implode( ',', $element_value );
258
  }
259
-
260
  }
261
 
262
  if ( isset( $element_value ) ) {
263
  $tags[] = $element_value;
264
  unset( $element_value ); // unset for next loop
265
  }
266
-
267
-
268
  } else {
269
  $tags[] = $tag;
270
  }
@@ -377,7 +372,6 @@ class Forminator_Addon_Activecampaign_Form_Hooks extends Forminator_Addon_Form_H
377
  $form_settings_instance
378
  );
379
 
380
-
381
  $addon_meta_datas = $addon_meta_data;
382
  if ( ! isset( $addon_meta_data[0] ) || ! is_array( $addon_meta_data[0] ) ) {
383
  return array();
@@ -433,7 +427,6 @@ class Forminator_Addon_Activecampaign_Form_Hooks extends Forminator_Addon_Form_H
433
  'value' => '',
434
  );
435
 
436
-
437
  $sub_entries = array();
438
  if ( isset( $status['connection_name'] ) ) {
439
  $sub_entries[] = array(
@@ -481,7 +474,6 @@ class Forminator_Addon_Activecampaign_Form_Hooks extends Forminator_Addon_Form_H
481
  }
482
  }
483
 
484
-
485
  $additional_entry_item['sub_entries'] = $sub_entries;
486
 
487
  // return single array
@@ -725,7 +717,6 @@ class Forminator_Addon_Activecampaign_Form_Hooks extends Forminator_Addon_Form_H
725
  }
726
  }
727
  }
728
-
729
  }
730
  }
731
 
101
  'value' => $this->get_status_on_contact_sync( $key, $submitted_data, $addon_setting_value, $form_settings, $form_entry_fields ),
102
  );
103
  }
 
104
  }
105
 
106
  $entry_fields = $data;
164
 
165
  $email_element_id = $connection_settings['fields_map']['email'];
166
  if ( ! isset( $submitted_data[ $email_element_id ] ) || empty( $submitted_data[ $email_element_id ] ) ) {
167
+ throw new Forminator_Addon_Activecampaign_Exception( __( 'Email on element not found or not filled on submitted data.', Forminator::DOMAIN ) );
168
  }
169
  $email = $submitted_data[ $email_element_id ];
170
  $email = strtolower( trim( $email ) );
205
  $args[ $common_field ] = $element_value;
206
  unset( $element_value ); // unset for next loop
207
  }
 
208
  }
209
  // processed
210
  unset( $fields_map[ $common_field ] );
238
  $tags = array();
239
  foreach ( $connection_settings['tags'] as $tag ) {
240
  if ( stripos( $tag, '{' ) === 0
241
+ && stripos( $tag, '}' ) === ( strlen( $tag ) - 1 )
242
  ) {
243
  // translate to value
244
  $element_id = str_ireplace( '{', '', $tag );
254
  if ( is_array( $element_value ) ) {
255
  $element_value = implode( ',', $element_value );
256
  }
 
257
  }
258
 
259
  if ( isset( $element_value ) ) {
260
  $tags[] = $element_value;
261
  unset( $element_value ); // unset for next loop
262
  }
 
 
263
  } else {
264
  $tags[] = $tag;
265
  }
372
  $form_settings_instance
373
  );
374
 
 
375
  $addon_meta_datas = $addon_meta_data;
376
  if ( ! isset( $addon_meta_data[0] ) || ! is_array( $addon_meta_data[0] ) ) {
377
  return array();
427
  'value' => '',
428
  );
429
 
 
430
  $sub_entries = array();
431
  if ( isset( $status['connection_name'] ) ) {
432
  $sub_entries[] = array(
474
  }
475
  }
476
 
 
477
  $additional_entry_item['sub_entries'] = $sub_entries;
478
 
479
  // return single array
717
  }
718
  }
719
  }
 
720
  }
721
  }
722
 
addons/pro/activecampaign/{forminator-addon-activecampaign-form-settings-exception.php → class-forminator-addon-activecampaign-form-settings-exception.php} RENAMED
File without changes
addons/pro/activecampaign/{forminator-addon-activecampaign-form-settings.php → class-forminator-addon-activecampaign-form-settings.php} RENAMED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/forminator-addon-activecampaign-form-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Activecampaign_Form_Settings
@@ -62,11 +62,6 @@ class Forminator_Addon_Activecampaign_Form_Settings extends Forminator_Addon_For
62
  'callback' => array( $this, 'map_fields' ),
63
  'is_completed' => array( $this, 'map_fields_is_completed' ),
64
  ),
65
- //todo: allow fe to support this
66
- // array(
67
- // 'callback' => array( $this, 'extra_field' ),
68
- // 'is_completed' => array( $this, 'extra_field' ),
69
- // ),
70
  array(
71
  'callback' => array( $this, 'setup_options' ),
72
  'is_completed' => array( $this, 'setup_options_is_completed' ),
@@ -127,15 +122,16 @@ class Forminator_Addon_Activecampaign_Form_Settings extends Forminator_Addon_For
127
 
128
  $buttons = array();
129
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
130
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
131
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
132
- esc_html__( 'Deactivate this ActiveCampaign Integration from this Form.', Forminator::DOMAIN )
 
133
  );
134
  }
135
 
136
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
137
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
138
- '</div>';
139
 
140
  return array(
141
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -200,11 +196,10 @@ class Forminator_Addon_Activecampaign_Form_Settings extends Forminator_Addon_For
200
  'lists' => array(),
201
  );
202
 
203
-
204
  $is_submit = ! empty( $submitted_data );
205
  $has_errors = false;
206
 
207
- $lists = array();
208
  $custom_fields = array();
209
 
210
  try {
@@ -214,7 +209,7 @@ class Forminator_Addon_Activecampaign_Form_Settings extends Forminator_Addon_For
214
  foreach ( $lists_request as $key => $data ) {
215
  if ( isset( $data->id ) && isset( $data->name ) ) {
216
  $lists[ $data->id ] = $data->name;
217
- if( isset( $data->fields ) ){
218
  $custom_fields[ $data->id ] = $data->fields;
219
  }
220
  }
@@ -245,7 +240,7 @@ class Forminator_Addon_Activecampaign_Form_Settings extends Forminator_Addon_For
245
  throw new Forminator_Addon_Activecampaign_Exception( __( 'Please pick valid list' ) );
246
  }
247
 
248
- if( ! empty( $custom_fields ) ){
249
  $this->custom_fields = $custom_fields[ $list_id ];
250
  }
251
 
@@ -267,15 +262,16 @@ class Forminator_Addon_Activecampaign_Form_Settings extends Forminator_Addon_For
267
 
268
  $buttons = array();
269
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
270
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
271
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
272
- esc_html__( 'Deactivate this ActiveCampaign Integration from this Form.', Forminator::DOMAIN )
 
273
  );
274
  }
275
 
276
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
277
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
278
- '</div>';
279
 
280
  return array(
281
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -372,9 +368,8 @@ class Forminator_Addon_Activecampaign_Form_Settings extends Forminator_Addon_For
372
  $ac_api = $this->addon->get_api();
373
  $list_detail = $ac_api->get_list( $list_id );
374
 
375
-
376
  //get global fields assigned to the form as well as explecit field
377
- if ( ! empty( $this->custom_fields ) && is_array( $this->custom_fields ) ){
378
  foreach ( $this->custom_fields as $field ) {
379
  $fields[ $field->id ] = $field->title;
380
  }
@@ -407,6 +402,7 @@ class Forminator_Addon_Activecampaign_Form_Settings extends Forminator_Addon_For
407
  $element_id = $fields_map[ $key ];
408
  if ( ! in_array( $element_id, $forminator_field_element_ids, true ) ) {
409
  $input_exceptions->add_input_exception(
 
410
  sprintf( __( 'Please assign valid field for %s', Forminator::DOMAIN ), $title ),
411
  $key . '_error'
412
  );
@@ -434,15 +430,16 @@ class Forminator_Addon_Activecampaign_Form_Settings extends Forminator_Addon_For
434
 
435
  $buttons = array();
436
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
437
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
438
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
439
- esc_html__( 'Deactivate this ActiveCampaign Integration from this Form.', Forminator::DOMAIN )
 
440
  );
441
  }
442
 
443
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
444
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
445
- '</div>';
446
 
447
  return array(
448
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -537,16 +534,15 @@ class Forminator_Addon_Activecampaign_Form_Settings extends Forminator_Addon_For
537
  foreach ( $saved_tags as $key => $saved_tag ) {
538
  // using form data
539
  if ( stripos( $saved_tag, '{' ) === 0
540
- && stripos( $saved_tag, '}' ) === ( strlen( $saved_tag ) - 1 )
541
  ) {
542
  $element_id = str_ireplace( '{', '', $saved_tag );
543
  $element_id = str_ireplace( '}', '', $element_id );
544
  if ( in_array( $element_id, array_keys( $forminator_form_element_ids ), true ) ) {
545
  $forminator_form_element_ids[ $element_id ]['field_label'] = $forminator_form_element_ids[ $element_id ]['field_label'] .
546
- ' | ' . $forminator_form_element_ids[ $element_id ]['element_id'];
547
  $forminator_form_element_ids[ $element_id ]['element_id'] = '{' . $forminator_form_element_ids[ $element_id ]['element_id'] . '}';
548
 
549
-
550
  $tag_selected_fields[] = $forminator_form_element_ids[ $element_id ];
551
  // let this go, its already selected.
552
  unset( $forminator_form_element_ids[ $element_id ] );
@@ -554,8 +550,7 @@ class Forminator_Addon_Activecampaign_Form_Settings extends Forminator_Addon_For
554
  // no more exist on element ids let it go
555
  unset( $saved_tags[ $key ] );
556
  }
557
-
558
- } else {// free form type
559
  $tag_selected_fields[] = array(
560
  'element_id' => $saved_tag,
561
  'field_label' => $saved_tag,
@@ -566,7 +561,6 @@ class Forminator_Addon_Activecampaign_Form_Settings extends Forminator_Addon_For
566
  $template_params['tags_fields'] = $forminator_form_element_ids;
567
  $template_params['tags_selected_fields'] = $tag_selected_fields;
568
 
569
-
570
  $is_submit = ! empty( $submitted_data );
571
  $has_errors = false;
572
  $notification = array();
@@ -633,15 +627,16 @@ class Forminator_Addon_Activecampaign_Form_Settings extends Forminator_Addon_For
633
 
634
  $buttons = array();
635
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
636
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
637
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
638
- esc_html__( 'Deactivate this ActiveCampaign Integration from this Form.', Forminator::DOMAIN )
 
639
  );
640
  }
641
 
642
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
643
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Save', Forminator::DOMAIN ), 'sui-button-primary forminator-addon-finish' ) .
644
- '</div>';
645
 
646
  return array(
647
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-activecampaign-form-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Activecampaign_Form_Settings
62
  'callback' => array( $this, 'map_fields' ),
63
  'is_completed' => array( $this, 'map_fields_is_completed' ),
64
  ),
 
 
 
 
 
65
  array(
66
  'callback' => array( $this, 'setup_options' ),
67
  'is_completed' => array( $this, 'setup_options_is_completed' ),
122
 
123
  $buttons = array();
124
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
125
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
126
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
127
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
128
+ esc_html__( 'Deactivate this ActiveCampaign Integration from this Form.', Forminator::DOMAIN )
129
  );
130
  }
131
 
132
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
133
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
134
+ '</div>';
135
 
136
  return array(
137
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
196
  'lists' => array(),
197
  );
198
 
 
199
  $is_submit = ! empty( $submitted_data );
200
  $has_errors = false;
201
 
202
+ $lists = array();
203
  $custom_fields = array();
204
 
205
  try {
209
  foreach ( $lists_request as $key => $data ) {
210
  if ( isset( $data->id ) && isset( $data->name ) ) {
211
  $lists[ $data->id ] = $data->name;
212
+ if ( isset( $data->fields ) ) {
213
  $custom_fields[ $data->id ] = $data->fields;
214
  }
215
  }
240
  throw new Forminator_Addon_Activecampaign_Exception( __( 'Please pick valid list' ) );
241
  }
242
 
243
+ if ( ! empty( $custom_fields ) ) {
244
  $this->custom_fields = $custom_fields[ $list_id ];
245
  }
246
 
262
 
263
  $buttons = array();
264
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
265
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
266
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
267
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
268
+ esc_html__( 'Deactivate this ActiveCampaign Integration from this Form.', Forminator::DOMAIN )
269
  );
270
  }
271
 
272
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
273
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
274
+ '</div>';
275
 
276
  return array(
277
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
368
  $ac_api = $this->addon->get_api();
369
  $list_detail = $ac_api->get_list( $list_id );
370
 
 
371
  //get global fields assigned to the form as well as explecit field
372
+ if ( ! empty( $this->custom_fields ) && is_array( $this->custom_fields ) ) {
373
  foreach ( $this->custom_fields as $field ) {
374
  $fields[ $field->id ] = $field->title;
375
  }
402
  $element_id = $fields_map[ $key ];
403
  if ( ! in_array( $element_id, $forminator_field_element_ids, true ) ) {
404
  $input_exceptions->add_input_exception(
405
+ /* translators: %s: title */
406
  sprintf( __( 'Please assign valid field for %s', Forminator::DOMAIN ), $title ),
407
  $key . '_error'
408
  );
430
 
431
  $buttons = array();
432
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
433
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
434
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
435
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
436
+ esc_html__( 'Deactivate this ActiveCampaign Integration from this Form.', Forminator::DOMAIN )
437
  );
438
  }
439
 
440
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
441
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
442
+ '</div>';
443
 
444
  return array(
445
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
534
  foreach ( $saved_tags as $key => $saved_tag ) {
535
  // using form data
536
  if ( stripos( $saved_tag, '{' ) === 0
537
+ && stripos( $saved_tag, '}' ) === ( strlen( $saved_tag ) - 1 )
538
  ) {
539
  $element_id = str_ireplace( '{', '', $saved_tag );
540
  $element_id = str_ireplace( '}', '', $element_id );
541
  if ( in_array( $element_id, array_keys( $forminator_form_element_ids ), true ) ) {
542
  $forminator_form_element_ids[ $element_id ]['field_label'] = $forminator_form_element_ids[ $element_id ]['field_label'] .
543
+ ' | ' . $forminator_form_element_ids[ $element_id ]['element_id'];
544
  $forminator_form_element_ids[ $element_id ]['element_id'] = '{' . $forminator_form_element_ids[ $element_id ]['element_id'] . '}';
545
 
 
546
  $tag_selected_fields[] = $forminator_form_element_ids[ $element_id ];
547
  // let this go, its already selected.
548
  unset( $forminator_form_element_ids[ $element_id ] );
550
  // no more exist on element ids let it go
551
  unset( $saved_tags[ $key ] );
552
  }
553
+ } else { // free form type
 
554
  $tag_selected_fields[] = array(
555
  'element_id' => $saved_tag,
556
  'field_label' => $saved_tag,
561
  $template_params['tags_fields'] = $forminator_form_element_ids;
562
  $template_params['tags_selected_fields'] = $tag_selected_fields;
563
 
 
564
  $is_submit = ! empty( $submitted_data );
565
  $has_errors = false;
566
  $notification = array();
627
 
628
  $buttons = array();
629
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
630
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
631
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
632
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
633
+ esc_html__( 'Deactivate this ActiveCampaign Integration from this Form.', Forminator::DOMAIN )
634
  );
635
  }
636
 
637
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
638
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Save', Forminator::DOMAIN ), 'sui-button-primary forminator-addon-finish' ) .
639
+ '</div>';
640
 
641
  return array(
642
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
addons/pro/activecampaign/{forminator-addon-activecampaign.php → class-forminator-addon-activecampaign.php} RENAMED
@@ -1,7 +1,7 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/forminator-addon-activecampaign-exception.php';
4
- require_once dirname( __FILE__ ) . '/lib/class-wp-activecampaign-api.php';
5
 
6
  /**
7
  * Class Forminator_Addon_Activecampaign
@@ -272,7 +272,6 @@ final class Forminator_Addon_Activecampaign extends Forminator_Addon_Abstract {
272
  }
273
  }
274
 
275
-
276
  if ( $is_submit ) {
277
  $api_url = isset( $submitted_data['api_url'] ) ? $submitted_data['api_url'] : '';
278
  $api_key = isset( $submitted_data['api_key'] ) ? $submitted_data['api_key'] : '';
@@ -319,8 +318,6 @@ final class Forminator_Addon_Activecampaign extends Forminator_Addon_Abstract {
319
  $has_errors = true;
320
  }
321
  }
322
-
323
-
324
  }
325
 
326
  if ( $show_success ) {
@@ -340,18 +337,16 @@ final class Forminator_Addon_Activecampaign extends Forminator_Addon_Abstract {
340
  );
341
  $buttons['submit'] = array(
342
  'markup' => '<div class="sui-actions-right">' .
343
- self::get_button_markup( esc_html__( 'Save', Forminator::DOMAIN ), 'forminator-addon-connect' ) .
344
- '</div>',
345
  );
346
  } else {
347
  $buttons['submit'] = array(
348
  'markup' => '<div class="sui-actions-right">' .
349
- self::get_button_markup( esc_html__( 'CONNECT', Forminator::DOMAIN ), 'forminator-addon-connect' ) .
350
- '</div>',
351
  );
352
  }
353
-
354
-
355
  }
356
 
357
  return array(
@@ -458,7 +453,6 @@ final class Forminator_Addon_Activecampaign extends Forminator_Addon_Abstract {
458
  if ( isset( $setting_values['api_key'] ) ) {
459
  $api_key = $setting_values['api_key'];
460
  }
461
-
462
  }
463
  $api = new Forminator_Addon_Activecampaign_Wp_Api( $api_url, $api_key );
464
  self::$api = $api;
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-activecampaign-exception.php';
4
+ require_once dirname( __FILE__ ) . '/lib/class-forminator-addon-activecampaign-wp-api.php';
5
 
6
  /**
7
  * Class Forminator_Addon_Activecampaign
272
  }
273
  }
274
 
 
275
  if ( $is_submit ) {
276
  $api_url = isset( $submitted_data['api_url'] ) ? $submitted_data['api_url'] : '';
277
  $api_key = isset( $submitted_data['api_key'] ) ? $submitted_data['api_key'] : '';
318
  $has_errors = true;
319
  }
320
  }
 
 
321
  }
322
 
323
  if ( $show_success ) {
337
  );
338
  $buttons['submit'] = array(
339
  'markup' => '<div class="sui-actions-right">' .
340
+ self::get_button_markup( esc_html__( 'Save', Forminator::DOMAIN ), 'forminator-addon-connect' ) .
341
+ '</div>',
342
  );
343
  } else {
344
  $buttons['submit'] = array(
345
  'markup' => '<div class="sui-actions-right">' .
346
+ self::get_button_markup( esc_html__( 'CONNECT', Forminator::DOMAIN ), 'forminator-addon-connect' ) .
347
+ '</div>',
348
  );
349
  }
 
 
350
  }
351
 
352
  return array(
453
  if ( isset( $setting_values['api_key'] ) ) {
454
  $api_key = $setting_values['api_key'];
455
  }
 
456
  }
457
  $api = new Forminator_Addon_Activecampaign_Wp_Api( $api_url, $api_key );
458
  self::$api = $api;
addons/pro/activecampaign/lib/{class-wp-activecampaign-api-exception.php → class-forminator-addon-activecampaign-wp-api-exception.php} RENAMED
File without changes
addons/pro/activecampaign/lib/{class-wp-activecampaign-api-not-found-exception.php → class-forminator-addon-activecampaign-wp-api-not-found-exception.php} RENAMED
File without changes
addons/pro/activecampaign/lib/{class-wp-activecampaign-api.php → class-forminator-addon-activecampaign-wp-api.php} RENAMED
@@ -1,7 +1,7 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/class-wp-activecampaign-api-exception.php';
4
- require_once dirname( __FILE__ ) . '/class-wp-activecampaign-api-not-found-exception.php';
5
 
6
  /**
7
  * Class Forminator_Addon_Activecampaign_Wp_Api
@@ -108,7 +108,7 @@ class Forminator_Addon_Activecampaign_Wp_Api {
108
  * @throws Forminator_Addon_Activecampaign_Wp_Api_Exception
109
  * @throws Forminator_Addon_Activecampaign_Wp_Api_Not_Found_Exception
110
  */
111
- private function _request( $verb = 'GET', $path, $args = array() ) {
112
  // Adding extra user agent for wp remote request
113
  add_filter( 'http_headers_useragent', array( $this, 'filter_user_agent' ) );
114
 
@@ -190,9 +190,10 @@ class Forminator_Addon_Activecampaign_Wp_Api {
190
  }
191
 
192
  if ( 404 === $status_code ) {
 
193
  throw new Forminator_Addon_Activecampaign_Wp_Api_Not_Found_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
194
  }
195
- // /* translators: ... */
196
  throw new Forminator_Addon_Activecampaign_Wp_Api_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
197
  }
198
  }
@@ -210,6 +211,7 @@ class Forminator_Addon_Activecampaign_Wp_Api {
210
  if ( isset( $res->result_message ) && ! empty( $res->result_message ) ) {
211
  $message = ' ' . $res->result_message;
212
  }
 
213
  throw new Forminator_Addon_Activecampaign_Wp_Api_Exception( sprintf( __( 'Failed to get ActiveCampaign data.%1$s', Forminator::DOMAIN ), $message ) );
214
  }
215
  }
@@ -248,7 +250,7 @@ class Forminator_Addon_Activecampaign_Wp_Api {
248
  */
249
  public function post_( $args ) {
250
 
251
- return $this->_request(
252
  'POST',
253
  '',
254
  $args
@@ -266,7 +268,7 @@ class Forminator_Addon_Activecampaign_Wp_Api {
266
  */
267
  public function get_account() {
268
 
269
- return $this->_request(
270
  'GET',
271
  '/admin/api.php',
272
  array(
@@ -301,7 +303,7 @@ class Forminator_Addon_Activecampaign_Wp_Api {
301
 
302
  $args = array_merge( $default_args, $args );
303
 
304
- $request_data = $this->_request(
305
  'GET',
306
  '/admin/api.php',
307
  $args
@@ -330,7 +332,7 @@ class Forminator_Addon_Activecampaign_Wp_Api {
330
 
331
  $args = array_merge( $default_args, $args );
332
 
333
- return $this->_request(
334
  'GET',
335
  '/admin/api.php',
336
  $args
@@ -355,7 +357,7 @@ class Forminator_Addon_Activecampaign_Wp_Api {
355
 
356
  $args = array_merge( $default_args, $args );
357
 
358
- $request_data = $this->_request(
359
  'GET',
360
  '/admin/api.php',
361
  $args
@@ -394,7 +396,7 @@ class Forminator_Addon_Activecampaign_Wp_Api {
394
  throw new Forminator_Addon_Activecampaign_Wp_Api_Exception( __( 'Required email parameter not set', Forminator::DOMAIN ) );
395
  }
396
 
397
- return $this->_request(
398
  'POST',
399
  '/admin/api.php' . ( '?' . http_build_query( $query_args ) ),
400
  $args
@@ -427,7 +429,7 @@ class Forminator_Addon_Activecampaign_Wp_Api {
427
  throw new Forminator_Addon_Activecampaign_Wp_Api_Exception( __( 'Required id parameter not set for contact_delete.', Forminator::DOMAIN ) );
428
  }
429
 
430
- return $this->_request(
431
  'GET',
432
  '/admin/api.php',
433
  $args
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-activecampaign-wp-api-exception.php';
4
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-activecampaign-wp-api-not-found-exception.php';
5
 
6
  /**
7
  * Class Forminator_Addon_Activecampaign_Wp_Api
108
  * @throws Forminator_Addon_Activecampaign_Wp_Api_Exception
109
  * @throws Forminator_Addon_Activecampaign_Wp_Api_Not_Found_Exception
110
  */
111
+ private function request( $verb = 'GET', $path, $args = array() ) {
112
  // Adding extra user agent for wp remote request
113
  add_filter( 'http_headers_useragent', array( $this, 'filter_user_agent' ) );
114
 
190
  }
191
 
192
  if ( 404 === $status_code ) {
193
+ /* translators: ... */
194
  throw new Forminator_Addon_Activecampaign_Wp_Api_Not_Found_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
195
  }
196
+ /* translators: ... */
197
  throw new Forminator_Addon_Activecampaign_Wp_Api_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
198
  }
199
  }
211
  if ( isset( $res->result_message ) && ! empty( $res->result_message ) ) {
212
  $message = ' ' . $res->result_message;
213
  }
214
+ /* translators: ... */
215
  throw new Forminator_Addon_Activecampaign_Wp_Api_Exception( sprintf( __( 'Failed to get ActiveCampaign data.%1$s', Forminator::DOMAIN ), $message ) );
216
  }
217
  }
250
  */
251
  public function post_( $args ) {
252
 
253
+ return $this->request(
254
  'POST',
255
  '',
256
  $args
268
  */
269
  public function get_account() {
270
 
271
+ return $this->request(
272
  'GET',
273
  '/admin/api.php',
274
  array(
303
 
304
  $args = array_merge( $default_args, $args );
305
 
306
+ $request_data = $this->request(
307
  'GET',
308
  '/admin/api.php',
309
  $args
332
 
333
  $args = array_merge( $default_args, $args );
334
 
335
+ return $this->request(
336
  'GET',
337
  '/admin/api.php',
338
  $args
357
 
358
  $args = array_merge( $default_args, $args );
359
 
360
+ $request_data = $this->request(
361
  'GET',
362
  '/admin/api.php',
363
  $args
396
  throw new Forminator_Addon_Activecampaign_Wp_Api_Exception( __( 'Required email parameter not set', Forminator::DOMAIN ) );
397
  }
398
 
399
+ return $this->request(
400
  'POST',
401
  '/admin/api.php' . ( '?' . http_build_query( $query_args ) ),
402
  $args
429
  throw new Forminator_Addon_Activecampaign_Wp_Api_Exception( __( 'Required id parameter not set for contact_delete.', Forminator::DOMAIN ) );
430
  }
431
 
432
+ return $this->request(
433
  'GET',
434
  '/admin/api.php',
435
  $args
addons/pro/activecampaign/views/form-settings/select-list.php CHANGED
@@ -5,7 +5,7 @@ $vars = array(
5
  'list_id' => '',
6
  'list_id_error' => '',
7
  'multi_id' => '',
8
- 'lists' => array(),
9
  );
10
  /** @var array $template_vars */
11
  foreach ( $template_vars as $key => $val ) {
5
  'list_id' => '',
6
  'list_id_error' => '',
7
  'multi_id' => '',
8
+ 'lists' => array(),
9
  );
10
  /** @var array $template_vars */
11
  foreach ( $template_vars as $key => $val ) {
addons/pro/activecampaign/views/form-settings/setup-options.php CHANGED
@@ -91,7 +91,8 @@ foreach ( $template_vars as $key => $val ) {
91
  <?php
92
  esc_html_e(
93
  'Select which ActiveCampaign form will be used when adding to ActiveCampaign to send the opt-in email. You can read more information ',
94
- Forminator::DOMAIN );
 
95
  ?>
96
  <a href="https://help.activecampaign.com/hc/en-us/articles/115000839230-How-do-I-enable-double-opt-in-confirmation-" target="_blank">here</a>.
97
  </span>
@@ -104,9 +105,9 @@ foreach ( $template_vars as $key => $val ) {
104
  <label class="sui-toggle">
105
 
106
  <input type="checkbox"
107
- name="instantresponders"
108
- id="instantresponders"
109
- value="1"
110
  <?php checked( 1, $vars['instantresponders'] ); ?>>
111
  <span class="sui-toggle-slider"></span>
112
  </label>
@@ -131,9 +132,9 @@ foreach ( $template_vars as $key => $val ) {
131
  <div class="sui-form-field <?php echo esc_attr( ! empty( $vars['lastmessage_error'] ) ? 'sui-form-field-error' : '' ); ?>">
132
  <label class="sui-toggle">
133
  <input type="checkbox"
134
- name="lastmessage"
135
- id="lastmessage"
136
- value="1"
137
  <?php checked( 1, $vars['lastmessage'] ); ?>>
138
  <span class="sui-toggle-slider"></span>
139
  </label>
91
  <?php
92
  esc_html_e(
93
  'Select which ActiveCampaign form will be used when adding to ActiveCampaign to send the opt-in email. You can read more information ',
94
+ Forminator::DOMAIN
95
+ );
96
  ?>
97
  <a href="https://help.activecampaign.com/hc/en-us/articles/115000839230-How-do-I-enable-double-opt-in-confirmation-" target="_blank">here</a>.
98
  </span>
105
  <label class="sui-toggle">
106
 
107
  <input type="checkbox"
108
+ name="instantresponders"
109
+ id="instantresponders"
110
+ value="1"
111
  <?php checked( 1, $vars['instantresponders'] ); ?>>
112
  <span class="sui-toggle-slider"></span>
113
  </label>
132
  <div class="sui-form-field <?php echo esc_attr( ! empty( $vars['lastmessage_error'] ) ? 'sui-form-field-error' : '' ); ?>">
133
  <label class="sui-toggle">
134
  <input type="checkbox"
135
+ name="lastmessage"
136
+ id="lastmessage"
137
+ value="1"
138
  <?php checked( 1, $vars['lastmessage'] ); ?>>
139
  <span class="sui-toggle-slider"></span>
140
  </label>
addons/pro/activecampaign/views/settings/setup-api-success.php CHANGED
@@ -1,6 +1,9 @@
1
  <div class="integration-header">
2
  <h3 class="sui-box-title" id="dialogTitle2">
3
- <?php echo esc_html( sprintf( __( '%1$s Added', Forminator::DOMAIN ), 'ActiveCampaign' ) ); ?>
 
 
 
4
  </h3>
5
  <span class="sui-description" style="margin-top: 20px;"><?php esc_html_e( 'You can now go to your forms and assign them to this integration', Forminator::DOMAIN ); ?></span>
6
  </div>
1
  <div class="integration-header">
2
  <h3 class="sui-box-title" id="dialogTitle2">
3
+ <?php
4
+ /* translators: %s: Addon name */
5
+ echo esc_html( sprintf( __( '%1$s Added', Forminator::DOMAIN ), 'ActiveCampaign' ) );
6
+ ?>
7
  </h3>
8
  <span class="sui-description" style="margin-top: 20px;"><?php esc_html_e( 'You can now go to your forms and assign them to this integration', Forminator::DOMAIN ); ?></span>
9
  </div>
addons/pro/activecampaign/views/settings/setup-api.php CHANGED
@@ -15,7 +15,12 @@ foreach ( $template_vars as $key => $val ) {
15
 
16
  <div class="integration-header">
17
 
18
- <h3 class="sui-box-title" id="dialogTitle2"><?php echo esc_html( sprintf( __( 'Configure %1$s API', Forminator::DOMAIN ), 'ActiveCampaign' ) ); ?></h3>
 
 
 
 
 
19
 
20
  <span class="sui-description" style="margin-top: 20px;"><?php esc_html_e( 'Setup ActiveCampaign API Access.', Forminator::DOMAIN ); ?></span>
21
 
@@ -26,15 +31,15 @@ foreach ( $template_vars as $key => $val ) {
26
  </div>
27
 
28
  <form>
29
-
30
  <div class="sui-form-field<?php echo esc_attr( ! empty( $vars['api_url_error'] ) ? ' sui-form-field-error' : '' ); ?>">
31
 
32
  <label class="sui-label"><?php esc_html_e( 'API URL', Forminator::DOMAIN ); ?></label>
33
 
34
  <div class="sui-control-with-icon">
35
-
36
  <input name="api_url"
37
- placeholder="<?php echo esc_attr( sprintf( __( 'Enter %1$s API URL', Forminator::DOMAIN ), 'ActiveCampaign' ) ); ?>"
38
  value="<?php echo esc_attr( $vars['api_url'] ); ?>"
39
  class="sui-form-control" />
40
 
@@ -53,9 +58,9 @@ foreach ( $template_vars as $key => $val ) {
53
  <label class="sui-label"><?php esc_html_e( 'API Key', Forminator::DOMAIN ); ?></label>
54
 
55
  <div class="sui-control-with-icon">
56
-
57
  <input name="api_key"
58
- placeholder="<?php echo esc_attr( sprintf( __( 'Enter %1$s API Key', Forminator::DOMAIN ), 'ActiveCampaign' ) ); ?>"
59
  value="<?php echo esc_attr( $vars['api_key'] ); ?>"
60
  class="sui-form-control" />
61
 
15
 
16
  <div class="integration-header">
17
 
18
+ <h3 class="sui-box-title" id="dialogTitle2">
19
+ <?php
20
+ /* translators: %s: Addon name */
21
+ echo esc_html( sprintf( __( 'Configure %1$s API', Forminator::DOMAIN ), 'ActiveCampaign' ) );
22
+ ?>
23
+ </h3>
24
 
25
  <span class="sui-description" style="margin-top: 20px;"><?php esc_html_e( 'Setup ActiveCampaign API Access.', Forminator::DOMAIN ); ?></span>
26
 
31
  </div>
32
 
33
  <form>
34
+
35
  <div class="sui-form-field<?php echo esc_attr( ! empty( $vars['api_url_error'] ) ? ' sui-form-field-error' : '' ); ?>">
36
 
37
  <label class="sui-label"><?php esc_html_e( 'API URL', Forminator::DOMAIN ); ?></label>
38
 
39
  <div class="sui-control-with-icon">
40
+
41
  <input name="api_url"
42
+ placeholder="<?php /* translators: ... */ echo esc_attr( sprintf( __( 'Enter %1$s API URL', Forminator::DOMAIN ), 'ActiveCampaign' ) ); ?>"
43
  value="<?php echo esc_attr( $vars['api_url'] ); ?>"
44
  class="sui-form-control" />
45
 
58
  <label class="sui-label"><?php esc_html_e( 'API Key', Forminator::DOMAIN ); ?></label>
59
 
60
  <div class="sui-control-with-icon">
61
+
62
  <input name="api_key"
63
+ placeholder="<?php /* translators: ... */ echo esc_attr( sprintf( __( 'Enter %1$s API Key', Forminator::DOMAIN ), 'ActiveCampaign' ) ); ?>"
64
  value="<?php echo esc_attr( $vars['api_key'] ); ?>"
65
  class="sui-form-control" />
66
 
addons/pro/aweber/aweber.php CHANGED
@@ -23,8 +23,8 @@ function forminator_addon_aweber_assets_url() {
23
  return trailingslashit( forminator_addon_aweber_url() . 'assets' );
24
  }
25
 
26
- require_once dirname( __FILE__ ) . '/forminator-addon-aweber.php';
27
- require_once dirname( __FILE__ ) . '/forminator-addon-aweber-form-settings.php';
28
- require_once dirname( __FILE__ ) . '/forminator-addon-aweber-form-hooks.php';
29
  //Direct Load
30
  Forminator_Addon_Loader::get_instance()->register( 'Forminator_Addon_Aweber' );
23
  return trailingslashit( forminator_addon_aweber_url() . 'assets' );
24
  }
25
 
26
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-aweber.php';
27
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-aweber-form-settings.php';
28
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-aweber-form-hooks.php';
29
  //Direct Load
30
  Forminator_Addon_Loader::get_instance()->register( 'Forminator_Addon_Aweber' );
addons/pro/aweber/{forminator-addon-aweber-exception.php → class-forminator-addon-aweber-exception.php} RENAMED
File without changes
addons/pro/aweber/{forminator-addon-aweber-form-hooks.php → class-forminator-addon-aweber-form-hooks.php} RENAMED
@@ -97,7 +97,6 @@ class Forminator_Addon_Aweber_Form_Hooks extends Forminator_Addon_Form_Hooks_Abs
97
  'value' => $this->get_status_on_add_subscriber( $key, $submitted_data, $addon_setting_value, $form_entry_fields ),
98
  );
99
  }
100
-
101
  }
102
 
103
  $entry_fields = $data;
@@ -159,11 +158,8 @@ class Forminator_Addon_Aweber_Form_Hooks extends Forminator_Addon_Form_Hooks_Abs
159
 
160
  $email_element_id = $connection_settings['fields_map']['default_field_email'];
161
  if ( ! isset( $submitted_data[ $email_element_id ] ) || empty( $submitted_data[ $email_element_id ] ) ) {
162
- throw new Forminator_Addon_Aweber_Exception(
163
- sprintf(
164
- __( 'Email Address on element %1$s not found or not filled on submitted data.', Forminator::DOMAIN ),
165
- $email_element_id
166
- )
167
  );
168
  }
169
  $email = $submitted_data[ $email_element_id ];
@@ -214,7 +210,6 @@ class Forminator_Addon_Aweber_Form_Hooks extends Forminator_Addon_Form_Hooks_Abs
214
  throw new Forminator_Addon_Aweber_Exception( __( 'Unconfirmed subscriber can\'t be modified.', Forminator::DOMAIN ) );
215
  }
216
  }
217
-
218
  }
219
  }
220
 
@@ -238,7 +233,6 @@ class Forminator_Addon_Aweber_Form_Hooks extends Forminator_Addon_Form_Hooks_Abs
238
  $args['name'] = $name;
239
  }
240
 
241
-
242
  // processed
243
  unset( $fields_map['default_field_name'] );
244
 
@@ -264,7 +258,6 @@ class Forminator_Addon_Aweber_Form_Hooks extends Forminator_Addon_Form_Hooks_Abs
264
  $custom_fields[ $fields_mapper[ $field_id ] ] = (string) $element_value; // custom value must be string
265
  unset( $element_value ); // unset for next loop
266
  }
267
-
268
  }
269
  }
270
  if ( ! empty( $custom_fields ) ) {
@@ -311,14 +304,13 @@ class Forminator_Addon_Aweber_Form_Hooks extends Forminator_Addon_Form_Hooks_Abs
311
  }
312
  $args['ad_tracking'] = $ad_tracking;
313
  }
314
-
315
  }
316
 
317
  if ( isset( $connection_settings['tags'] ) && ! empty( $connection_settings['tags'] ) ) {
318
  $tags = array();
319
  foreach ( $connection_settings['tags'] as $tag ) {
320
  if ( stripos( $tag, '{' ) === 0
321
- && stripos( $tag, '}' ) === ( strlen( $tag ) - 1 )
322
  ) {
323
  // translate to value
324
  $element_id = str_ireplace( '{', '', $tag );
@@ -340,7 +332,6 @@ class Forminator_Addon_Aweber_Form_Hooks extends Forminator_Addon_Form_Hooks_Abs
340
  $tags[] = strtolower( (string) $element_value ); // tag must be string
341
  unset( $element_value ); // unset for next loop
342
  }
343
-
344
  } else {
345
  $tags[] = strtolower( $tag );
346
  }
@@ -376,7 +367,6 @@ class Forminator_Addon_Aweber_Form_Hooks extends Forminator_Addon_Form_Hooks_Abs
376
  sort( $tags );
377
  $args['tags'] = $tags;
378
  }
379
-
380
  }
381
 
382
  $ip_address = Forminator_Geo::get_user_ip();
@@ -409,7 +399,6 @@ class Forminator_Addon_Aweber_Form_Hooks extends Forminator_Addon_Form_Hooks_Abs
409
 
410
  $args['ip_address'] = $ip_address;
411
 
412
-
413
  if ( ! $subscriber_is_exist ) {
414
  /**
415
  * Filter arguments to passed on to Add Subscriber AWeber API
@@ -464,7 +453,6 @@ class Forminator_Addon_Aweber_Form_Hooks extends Forminator_Addon_Form_Hooks_Abs
464
  'remove' => $remove_tags,
465
  );
466
 
467
-
468
  $args['tags'] = $new_tags;
469
 
470
  /**
@@ -607,7 +595,6 @@ class Forminator_Addon_Aweber_Form_Hooks extends Forminator_Addon_Form_Hooks_Abs
607
  'value' => '',
608
  );
609
 
610
-
611
  $sub_entries = array();
612
  if ( isset( $status['connection_name'] ) ) {
613
  $sub_entries[] = array(
@@ -812,13 +799,13 @@ class Forminator_Addon_Aweber_Form_Hooks extends Forminator_Addon_Form_Hooks_Abs
812
  return $default;
813
  }
814
 
815
- // /**
816
- // * DELETE NOT SUPPORTED HERE, BECAUSE AWEBER API NOT RETURNING SUBSCRIBER ID ON CREATE SUBSCRIBER
817
- // *
818
- // * @param Forminator_Form_Entry_Model $entry_model
819
- // * @param $addon_meta_data
820
- // */
821
- // public function on_before_delete_entry( Forminator_Form_Entry_Model $entry_model, $addon_meta_data ) {
822
- // parent::on_before_delete_entry( $entry_model, $addon_meta_data );
823
- // }
824
  }
97
  'value' => $this->get_status_on_add_subscriber( $key, $submitted_data, $addon_setting_value, $form_entry_fields ),
98
  );
99
  }
 
100
  }
101
 
102
  $entry_fields = $data;
158
 
159
  $email_element_id = $connection_settings['fields_map']['default_field_email'];
160
  if ( ! isset( $submitted_data[ $email_element_id ] ) || empty( $submitted_data[ $email_element_id ] ) ) {
161
+ throw new Forminator_Addon_Aweber_Exception(/* translators: ... */
162
+ sprintf( __( 'Email Address on element %1$s not found or not filled on submitted data.', Forminator::DOMAIN ), $email_element_id )
 
 
 
163
  );
164
  }
165
  $email = $submitted_data[ $email_element_id ];
210
  throw new Forminator_Addon_Aweber_Exception( __( 'Unconfirmed subscriber can\'t be modified.', Forminator::DOMAIN ) );
211
  }
212
  }
 
213
  }
214
  }
215
 
233
  $args['name'] = $name;
234
  }
235
 
 
236
  // processed
237
  unset( $fields_map['default_field_name'] );
238
 
258
  $custom_fields[ $fields_mapper[ $field_id ] ] = (string) $element_value; // custom value must be string
259
  unset( $element_value ); // unset for next loop
260
  }
 
261
  }
262
  }
263
  if ( ! empty( $custom_fields ) ) {
304
  }
305
  $args['ad_tracking'] = $ad_tracking;
306
  }
 
307
  }
308
 
309
  if ( isset( $connection_settings['tags'] ) && ! empty( $connection_settings['tags'] ) ) {
310
  $tags = array();
311
  foreach ( $connection_settings['tags'] as $tag ) {
312
  if ( stripos( $tag, '{' ) === 0
313
+ && stripos( $tag, '}' ) === ( strlen( $tag ) - 1 )
314
  ) {
315
  // translate to value
316
  $element_id = str_ireplace( '{', '', $tag );
332
  $tags[] = strtolower( (string) $element_value ); // tag must be string
333
  unset( $element_value ); // unset for next loop
334
  }
 
335
  } else {
336
  $tags[] = strtolower( $tag );
337
  }
367
  sort( $tags );
368
  $args['tags'] = $tags;
369
  }
 
370
  }
371
 
372
  $ip_address = Forminator_Geo::get_user_ip();
399
 
400
  $args['ip_address'] = $ip_address;
401
 
 
402
  if ( ! $subscriber_is_exist ) {
403
  /**
404
  * Filter arguments to passed on to Add Subscriber AWeber API
453
  'remove' => $remove_tags,
454
  );
455
 
 
456
  $args['tags'] = $new_tags;
457
 
458
  /**
595
  'value' => '',
596
  );
597
 
 
598
  $sub_entries = array();
599
  if ( isset( $status['connection_name'] ) ) {
600
  $sub_entries[] = array(
799
  return $default;
800
  }
801
 
802
+ // /**
803
+ // * DELETE NOT SUPPORTED HERE, BECAUSE AWEBER API NOT RETURNING SUBSCRIBER ID ON CREATE SUBSCRIBER
804
+ // *
805
+ // * @param Forminator_Form_Entry_Model $entry_model
806
+ // * @param $addon_meta_data
807
+ // */
808
+ // public function on_before_delete_entry( Forminator_Form_Entry_Model $entry_model, $addon_meta_data ) {
809
+ // parent::on_before_delete_entry( $entry_model, $addon_meta_data );
810
+ // }
811
  }
addons/pro/aweber/{forminator-addon-aweber-form-settings-exception.php → class-forminator-addon-aweber-form-settings-exception.php} RENAMED
File without changes
addons/pro/aweber/{forminator-addon-aweber-form-settings.php → class-forminator-addon-aweber-form-settings.php} RENAMED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/forminator-addon-aweber-form-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Aweber_Form_Settings
@@ -56,11 +56,6 @@ class Forminator_Addon_Aweber_Form_Settings extends Forminator_Addon_Form_Settin
56
  'callback' => array( $this, 'map_fields' ),
57
  'is_completed' => array( $this, 'map_fields_is_completed' ),
58
  ),
59
- //todo: allow fe to support this
60
- // array(
61
- // 'callback' => array( $this, 'extra_field' ),
62
- // 'is_completed' => array( $this, 'extra_field' ),
63
- // ),
64
  array(
65
  'callback' => array( $this, 'setup_options' ),
66
  'is_completed' => array( $this, 'setup_options_is_completed' ),
@@ -122,15 +117,16 @@ class Forminator_Addon_Aweber_Form_Settings extends Forminator_Addon_Form_Settin
122
 
123
  $buttons = array();
124
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
125
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
126
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
127
- esc_html__( 'Deactivate this AWeber Integration from this Form.', Forminator::DOMAIN )
 
128
  );
129
  }
130
 
131
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
132
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
133
- '</div>';
134
 
135
  return array(
136
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -195,7 +191,6 @@ class Forminator_Addon_Aweber_Form_Settings extends Forminator_Addon_Form_Settin
195
  'error_message' => '',
196
  );
197
 
198
-
199
  $is_submit = ! empty( $submitted_data );
200
  $has_errors = false;
201
 
@@ -254,15 +249,16 @@ class Forminator_Addon_Aweber_Form_Settings extends Forminator_Addon_Form_Settin
254
 
255
  $buttons = array();
256
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
257
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
258
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
259
- esc_html__( 'Deactivate this AWeber Integration from this Form.', Forminator::DOMAIN )
 
260
  );
261
  }
262
 
263
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
264
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
265
- '</div>';
266
 
267
  return array(
268
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -384,13 +380,12 @@ class Forminator_Addon_Aweber_Form_Settings extends Forminator_Addon_Form_Settin
384
  $input_exceptions->add_input_exception( 'Please assign field for Email Address', 'default_field_email_error' );
385
  }
386
 
387
-
388
  $fields_map_to_save = array();
389
  foreach ( $fields as $key => $title ) {
390
  if ( isset( $fields_map[ $key ] ) && ! empty( $fields_map[ $key ] ) ) {
391
  $element_id = $fields_map[ $key ];
392
  if ( ! in_array( $element_id, $forminator_field_element_ids, true ) ) {
393
- $input_exceptions->add_input_exception(
394
  sprintf( __( 'Please assign valid field for %s', Forminator::DOMAIN ), $title ),
395
  $key . '_error'
396
  );
@@ -424,15 +419,16 @@ class Forminator_Addon_Aweber_Form_Settings extends Forminator_Addon_Form_Settin
424
 
425
  $buttons = array();
426
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
427
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
428
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
429
- esc_html__( 'Deactivate this AWeber Integration from this Form.', Forminator::DOMAIN )
 
430
  );
431
  }
432
 
433
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
434
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
435
- '</div>';
436
 
437
  return array(
438
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -528,16 +524,15 @@ class Forminator_Addon_Aweber_Form_Settings extends Forminator_Addon_Form_Settin
528
  foreach ( $saved_tags as $key => $saved_tag ) {
529
  // using form data
530
  if ( stripos( $saved_tag, '{' ) === 0
531
- && stripos( $saved_tag, '}' ) === ( strlen( $saved_tag ) - 1 )
532
  ) {
533
  $element_id = str_ireplace( '{', '', $saved_tag );
534
  $element_id = str_ireplace( '}', '', $element_id );
535
  if ( in_array( $element_id, array_keys( $forminator_form_element_ids ), true ) ) {
536
  $forminator_form_element_ids[ $element_id ]['field_label'] = $forminator_form_element_ids[ $element_id ]['field_label'] .
537
- ' | ' . $forminator_form_element_ids[ $element_id ]['element_id'];
538
  $forminator_form_element_ids[ $element_id ]['element_id'] = '{' . $forminator_form_element_ids[ $element_id ]['element_id'] . '}';
539
 
540
-
541
  $tag_selected_fields[] = $forminator_form_element_ids[ $element_id ];
542
  // let this go, its already selected.
543
  unset( $forminator_form_element_ids[ $element_id ] );
@@ -545,8 +540,7 @@ class Forminator_Addon_Aweber_Form_Settings extends Forminator_Addon_Form_Settin
545
  // no more exist on element ids let it go
546
  unset( $saved_tags[ $key ] );
547
  }
548
-
549
- } else {// free form type
550
  $tag_selected_fields[] = array(
551
  'element_id' => $saved_tag,
552
  'field_label' => $saved_tag,
@@ -592,15 +586,16 @@ class Forminator_Addon_Aweber_Form_Settings extends Forminator_Addon_Form_Settin
592
 
593
  $buttons = array();
594
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
595
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
596
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
597
- esc_html__( 'Deactivate this Campaign Monitor Integration from this Form.', Forminator::DOMAIN )
 
598
  );
599
  }
600
 
601
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
602
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Save', Forminator::DOMAIN ), 'sui-button-primary forminator-addon-finish' ) .
603
- '</div>';
604
 
605
  return array(
606
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-aweber-form-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Aweber_Form_Settings
56
  'callback' => array( $this, 'map_fields' ),
57
  'is_completed' => array( $this, 'map_fields_is_completed' ),
58
  ),
 
 
 
 
 
59
  array(
60
  'callback' => array( $this, 'setup_options' ),
61
  'is_completed' => array( $this, 'setup_options_is_completed' ),
117
 
118
  $buttons = array();
119
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
120
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
121
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
122
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
123
+ esc_html__( 'Deactivate this AWeber Integration from this Form.', Forminator::DOMAIN )
124
  );
125
  }
126
 
127
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
128
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
129
+ '</div>';
130
 
131
  return array(
132
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
191
  'error_message' => '',
192
  );
193
 
 
194
  $is_submit = ! empty( $submitted_data );
195
  $has_errors = false;
196
 
249
 
250
  $buttons = array();
251
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
252
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
253
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
254
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
255
+ esc_html__( 'Deactivate this AWeber Integration from this Form.', Forminator::DOMAIN )
256
  );
257
  }
258
 
259
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
260
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
261
+ '</div>';
262
 
263
  return array(
264
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
380
  $input_exceptions->add_input_exception( 'Please assign field for Email Address', 'default_field_email_error' );
381
  }
382
 
 
383
  $fields_map_to_save = array();
384
  foreach ( $fields as $key => $title ) {
385
  if ( isset( $fields_map[ $key ] ) && ! empty( $fields_map[ $key ] ) ) {
386
  $element_id = $fields_map[ $key ];
387
  if ( ! in_array( $element_id, $forminator_field_element_ids, true ) ) {
388
+ $input_exceptions->add_input_exception(/* translators: ... */
389
  sprintf( __( 'Please assign valid field for %s', Forminator::DOMAIN ), $title ),
390
  $key . '_error'
391
  );
419
 
420
  $buttons = array();
421
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
422
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
423
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
424
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
425
+ esc_html__( 'Deactivate this AWeber Integration from this Form.', Forminator::DOMAIN )
426
  );
427
  }
428
 
429
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
430
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
431
+ '</div>';
432
 
433
  return array(
434
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
524
  foreach ( $saved_tags as $key => $saved_tag ) {
525
  // using form data
526
  if ( stripos( $saved_tag, '{' ) === 0
527
+ && stripos( $saved_tag, '}' ) === ( strlen( $saved_tag ) - 1 )
528
  ) {
529
  $element_id = str_ireplace( '{', '', $saved_tag );
530
  $element_id = str_ireplace( '}', '', $element_id );
531
  if ( in_array( $element_id, array_keys( $forminator_form_element_ids ), true ) ) {
532
  $forminator_form_element_ids[ $element_id ]['field_label'] = $forminator_form_element_ids[ $element_id ]['field_label'] .
533
+ ' | ' . $forminator_form_element_ids[ $element_id ]['element_id'];
534
  $forminator_form_element_ids[ $element_id ]['element_id'] = '{' . $forminator_form_element_ids[ $element_id ]['element_id'] . '}';
535
 
 
536
  $tag_selected_fields[] = $forminator_form_element_ids[ $element_id ];
537
  // let this go, its already selected.
538
  unset( $forminator_form_element_ids[ $element_id ] );
540
  // no more exist on element ids let it go
541
  unset( $saved_tags[ $key ] );
542
  }
543
+ } else { // free form type
 
544
  $tag_selected_fields[] = array(
545
  'element_id' => $saved_tag,
546
  'field_label' => $saved_tag,
586
 
587
  $buttons = array();
588
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
589
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
590
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
591
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
592
+ esc_html__( 'Deactivate this Campaign Monitor Integration from this Form.', Forminator::DOMAIN )
593
  );
594
  }
595
 
596
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
597
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Save', Forminator::DOMAIN ), 'sui-button-primary forminator-addon-finish' ) .
598
+ '</div>';
599
 
600
  return array(
601
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
addons/pro/aweber/{forminator-addon-aweber.php → class-forminator-addon-aweber.php} RENAMED
@@ -1,7 +1,7 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/forminator-addon-aweber-exception.php';
4
- require_once dirname( __FILE__ ) . '/lib/class-wp-aweber-api.php';
5
 
6
  /**
7
  * Class Forminator_Addon_Aweber
@@ -101,7 +101,6 @@ final class Forminator_Addon_Aweber extends Forminator_Addon_Abstract {
101
  if ( isset( $setting_values['account_id'] ) && ! empty( $setting_values['account_id'] ) ) {
102
  $is_connected = true;
103
  }
104
-
105
  } catch ( Forminator_Addon_Aweber_Exception $e ) {
106
  $is_connected = false;
107
  }
@@ -382,7 +381,6 @@ final class Forminator_Addon_Aweber extends Forminator_Addon_Abstract {
382
  } catch ( Forminator_Addon_Aweber_Exception $e ) {
383
  $template_params['error_message'] = $e->getMessage();
384
  }
385
-
386
  }
387
 
388
  return self::get_template( $template, $template_params );
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-aweber-exception.php';
4
+ require_once dirname( __FILE__ ) . '/lib/class-forminator-addon-aweber-wp-api.php';
5
 
6
  /**
7
  * Class Forminator_Addon_Aweber
101
  if ( isset( $setting_values['account_id'] ) && ! empty( $setting_values['account_id'] ) ) {
102
  $is_connected = true;
103
  }
 
104
  } catch ( Forminator_Addon_Aweber_Exception $e ) {
105
  $is_connected = false;
106
  }
381
  } catch ( Forminator_Addon_Aweber_Exception $e ) {
382
  $template_params['error_message'] = $e->getMessage();
383
  }
 
384
  }
385
 
386
  return self::get_template( $template, $template_params );
addons/pro/aweber/lib/{class-aweber-oauth.php → class-forminator-addon-aweber-oauth.php} RENAMED
@@ -30,7 +30,7 @@ class Forminator_Addon_Aweber_Oauth {
30
  $url = array_shift( $parts );
31
  $items = explode( '&', $query );
32
  foreach ( $items as $item ) {
33
- list( $key, $value ) = explode( '=', $item );
34
  $data[ rawurldecode( $key ) ] = rawurldecode( $value );
35
  }
36
  }
@@ -164,7 +164,6 @@ class Forminator_Addon_Aweber_Oauth {
164
  */
165
  $oauth_nonce = apply_filters( 'forminator_addon_aweber_oauth_nonce', $oauth_nonce, $timestamp );
166
 
167
-
168
  return $oauth_nonce;
169
  }
170
  }
30
  $url = array_shift( $parts );
31
  $items = explode( '&', $query );
32
  foreach ( $items as $item ) {
33
+ list( $key, $value ) = explode( '=', $item );
34
  $data[ rawurldecode( $key ) ] = rawurldecode( $value );
35
  }
36
  }
164
  */
165
  $oauth_nonce = apply_filters( 'forminator_addon_aweber_oauth_nonce', $oauth_nonce, $timestamp );
166
 
 
167
  return $oauth_nonce;
168
  }
169
  }
addons/pro/aweber/lib/{class-wp-aweber-api-exception.php → class-forminator-addon-aweber-wp-api-exception.php} RENAMED
File without changes
addons/pro/aweber/lib/{class-wp-aweber-api-not-found-exception.php → class-forminator-addon-aweber-wp-api-not-found-exception.php} RENAMED
File without changes
addons/pro/aweber/lib/{class-wp-aweber-api.php → class-forminator-addon-aweber-wp-api.php} RENAMED
@@ -1,8 +1,8 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/class-aweber-oauth.php';
4
- require_once dirname( __FILE__ ) . '/class-wp-aweber-api-exception.php';
5
- require_once dirname( __FILE__ ) . '/class-wp-aweber-api-not-found-exception.php';
6
 
7
  /**
8
  * Class Forminator_Addon_Aweber_Wp_Api
@@ -139,7 +139,7 @@ class Forminator_Addon_Aweber_Wp_Api {
139
  * @throws Forminator_Addon_Aweber_Wp_Api_Exception
140
  * @throws Forminator_Addon_Aweber_Wp_Api_Not_Found_Exception
141
  */
142
- private function _request( $verb = 'GET', $url, $args = array(), $headers = array() ) {
143
  // Adding extra user agent for wp remote request
144
  add_filter( 'http_headers_useragent', array( $this, 'filter_user_agent' ) );
145
 
@@ -191,7 +191,7 @@ class Forminator_Addon_Aweber_Wp_Api {
191
 
192
  if ( 'PATCH' === $verb ) {
193
  $oauth_url_params = $this->get_prepared_request( $verb, $url, array() );
194
- $url .= ( '?' . http_build_query( $oauth_url_params ) );
195
  $_args['body'] = wp_json_encode( $args );
196
  } else {
197
  # WARNING: If not being sent as json, non-primitive items in data must be json serialized in GET and POST.
@@ -204,7 +204,7 @@ class Forminator_Addon_Aweber_Wp_Api {
204
  $_args['body'] = $this->get_prepared_request( $verb, $url, $args );
205
  } else {
206
  $oauth_url_params = $this->get_prepared_request( $verb, $url, $args );
207
- $url .= ( '?' . http_build_query( $oauth_url_params ) );
208
  }
209
  }
210
 
@@ -247,9 +247,10 @@ class Forminator_Addon_Aweber_Wp_Api {
247
  }
248
 
249
  if ( 404 === $status_code ) {
 
250
  throw new Forminator_Addon_Aweber_Wp_Api_Not_Found_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
251
  }
252
- // /* translators: ... */
253
  throw new Forminator_Addon_Aweber_Wp_Api_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
254
  }
255
  }
@@ -383,7 +384,6 @@ class Forminator_Addon_Aweber_Wp_Api {
383
  */
384
  $prepared_request_data = apply_filters( 'forminator_addon_aweber_oauth_prepared_request', $prepared_request_data, $method, $url, $data );
385
 
386
-
387
  return $prepared_request_data;
388
  }
389
 
@@ -407,7 +407,7 @@ class Forminator_Addon_Aweber_Wp_Api {
407
 
408
  $args = array_merge( $default_args, $args );
409
 
410
- $access_tokens = $this->_request( 'POST', self::$_access_token_url, $args );
411
 
412
  if ( ! is_object( $access_tokens ) ) {
413
  throw new Forminator_Addon_Aweber_Wp_Api_Exception( __( 'Invalid access token', Forminator::DOMAIN ) );
@@ -435,7 +435,7 @@ class Forminator_Addon_Aweber_Wp_Api {
435
  $default_args = array();
436
  $args = array_merge( $default_args, $args );
437
 
438
- return $this->_request( 'GET', $this->get_api_url( 'accounts' ), $args );
439
  }
440
 
441
  /**
@@ -454,7 +454,7 @@ class Forminator_Addon_Aweber_Wp_Api {
454
  $default_args = array();
455
  $args = array_merge( $default_args, $args );
456
 
457
- return $this->_request( 'GET', $this->get_api_url( 'accounts/' . rawurlencode( trim( $account_id ) ) . '/lists' ), $args );
458
  }
459
 
460
  /**
@@ -474,7 +474,7 @@ class Forminator_Addon_Aweber_Wp_Api {
474
  $default_args = array();
475
  $args = array_merge( $default_args, $args );
476
 
477
- return $this->_request(
478
  'GET',
479
  $this->get_api_url(
480
  'accounts/' .
@@ -510,7 +510,7 @@ class Forminator_Addon_Aweber_Wp_Api {
510
  throw new Forminator_Addon_Aweber_Wp_Api_Exception( __( 'Email is required on add AWeber subscriber.', Forminator::DOMAIN ) );
511
  }
512
 
513
- return $this->_request(
514
  'POST',
515
  $this->get_api_url(
516
  'accounts/' .
@@ -546,7 +546,7 @@ class Forminator_Addon_Aweber_Wp_Api {
546
  throw new Forminator_Addon_Aweber_Wp_Api_Exception( __( 'Email is required on update AWeber subscriber.', Forminator::DOMAIN ) );
547
  }
548
 
549
- return $this->_request(
550
  'PATCH',
551
  $this->get_api_url(
552
  'accounts/' .
@@ -582,7 +582,7 @@ class Forminator_Addon_Aweber_Wp_Api {
582
  );
583
  $args = array_merge( $default_args, $args );
584
 
585
- return $this->_request(
586
  'GET',
587
  $this->get_api_url(
588
  'accounts/' .
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-aweber-oauth.php';
4
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-aweber-wp-api-exception.php';
5
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-aweber-wp-api-not-found-exception.php';
6
 
7
  /**
8
  * Class Forminator_Addon_Aweber_Wp_Api
139
  * @throws Forminator_Addon_Aweber_Wp_Api_Exception
140
  * @throws Forminator_Addon_Aweber_Wp_Api_Not_Found_Exception
141
  */
142
+ private function request( $verb = 'GET', $url, $args = array(), $headers = array() ) {
143
  // Adding extra user agent for wp remote request
144
  add_filter( 'http_headers_useragent', array( $this, 'filter_user_agent' ) );
145
 
191
 
192
  if ( 'PATCH' === $verb ) {
193
  $oauth_url_params = $this->get_prepared_request( $verb, $url, array() );
194
+ $url .= ( '?' . http_build_query( $oauth_url_params ) );
195
  $_args['body'] = wp_json_encode( $args );
196
  } else {
197
  # WARNING: If not being sent as json, non-primitive items in data must be json serialized in GET and POST.
204
  $_args['body'] = $this->get_prepared_request( $verb, $url, $args );
205
  } else {
206
  $oauth_url_params = $this->get_prepared_request( $verb, $url, $args );
207
+ $url .= ( '?' . http_build_query( $oauth_url_params ) );
208
  }
209
  }
210
 
247
  }
248
 
249
  if ( 404 === $status_code ) {
250
+ /* translators: ... */
251
  throw new Forminator_Addon_Aweber_Wp_Api_Not_Found_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
252
  }
253
+ /* translators: ... */
254
  throw new Forminator_Addon_Aweber_Wp_Api_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
255
  }
256
  }
384
  */
385
  $prepared_request_data = apply_filters( 'forminator_addon_aweber_oauth_prepared_request', $prepared_request_data, $method, $url, $data );
386
 
 
387
  return $prepared_request_data;
388
  }
389
 
407
 
408
  $args = array_merge( $default_args, $args );
409
 
410
+ $access_tokens = $this->request( 'POST', self::$_access_token_url, $args );
411
 
412
  if ( ! is_object( $access_tokens ) ) {
413
  throw new Forminator_Addon_Aweber_Wp_Api_Exception( __( 'Invalid access token', Forminator::DOMAIN ) );
435
  $default_args = array();
436
  $args = array_merge( $default_args, $args );
437
 
438
+ return $this->request( 'GET', $this->get_api_url( 'accounts' ), $args );
439
  }
440
 
441
  /**
454
  $default_args = array();
455
  $args = array_merge( $default_args, $args );
456
 
457
+ return $this->request( 'GET', $this->get_api_url( 'accounts/' . rawurlencode( trim( $account_id ) ) . '/lists' ), $args );
458
  }
459
 
460
  /**
474
  $default_args = array();
475
  $args = array_merge( $default_args, $args );
476
 
477
+ return $this->request(
478
  'GET',
479
  $this->get_api_url(
480
  'accounts/' .
510
  throw new Forminator_Addon_Aweber_Wp_Api_Exception( __( 'Email is required on add AWeber subscriber.', Forminator::DOMAIN ) );
511
  }
512
 
513
+ return $this->request(
514
  'POST',
515
  $this->get_api_url(
516
  'accounts/' .
546
  throw new Forminator_Addon_Aweber_Wp_Api_Exception( __( 'Email is required on update AWeber subscriber.', Forminator::DOMAIN ) );
547
  }
548
 
549
+ return $this->request(
550
  'PATCH',
551
  $this->get_api_url(
552
  'accounts/' .
582
  );
583
  $args = array_merge( $default_args, $args );
584
 
585
+ return $this->request(
586
  'GET',
587
  $this->get_api_url(
588
  'accounts/' .
addons/pro/aweber/views/form-settings/setup-options.php CHANGED
@@ -70,11 +70,11 @@ foreach ( $template_vars as $key => $val ) {
70
  <label class="sui-label" for="tags"><?php esc_html_e( 'Tags', Forminator::DOMAIN ); ?></label>
71
 
72
  <select class="sui-select fui-multi-select" name="tags[]" id="tags"
73
- multiple="multiple"
74
- data-reorder="1"
75
- data-tags="true"
76
- data-token-separators="[',']"
77
- data-placeholder=""
78
  data-allow-clear="false">
79
 
80
  <?php foreach ( $vars['tags_selected_fields'] as $forminator_field ) : ?>
70
  <label class="sui-label" for="tags"><?php esc_html_e( 'Tags', Forminator::DOMAIN ); ?></label>
71
 
72
  <select class="sui-select fui-multi-select" name="tags[]" id="tags"
73
+ multiple="multiple"
74
+ data-reorder="1"
75
+ data-tags="true"
76
+ data-token-separators="[',']"
77
+ data-placeholder=""
78
  data-allow-clear="false">
79
 
80
  <?php foreach ( $vars['tags_selected_fields'] as $forminator_field ) : ?>
addons/pro/aweber/views/sections/authorize.php CHANGED
@@ -13,17 +13,18 @@ foreach ( $template_vars as $key => $val ) {
13
  <div id="forminator-integrations" class="wpmudev-settings--box">
14
  <div class="sui-box">
15
  <div class="sui-box-header">
16
- <h2 class="sui-box-title"><?php esc_html_e( "Authorizing AWeber", Forminator::DOMAIN ); ?></h2>
17
  </div>
18
  <div class="sui-box-body">
19
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
20
  <span class="sui-notice sui-notice-error"><p><?php echo esc_html( $vars['error_message'] ); ?></p></span>
21
- <?php elseif ( $vars['is_close'] ): ?>
22
  <span class="sui-notice sui-notice-success">
23
  <p>
24
  <?php
25
- esc_html_e( 'Successfully authorized AWeber, you can go back to integration settings.',
26
- Forminator::DOMAIN
 
27
  );
28
  ?>
29
  </p>
@@ -43,12 +44,12 @@ foreach ( $template_vars as $key => $val ) {
43
 
44
  var hashParams = {};
45
  var e,
46
- a = /\+/g, // Regex for replacing addition symbol with a space
47
- r = /([^&;=]+)=?([^&;]*)/g,
48
- d = function (s) {
49
- return decodeURIComponent(s.replace(a, " "));
50
- },
51
- q = window.location.hash.substring(1);
52
 
53
  while (e = r.exec(q))
54
  hashParams[d(e[1])] = d(e[2]);
@@ -58,7 +59,7 @@ foreach ( $template_vars as $key => $val ) {
58
 
59
  (function ($) {
60
  $(document).ready(function (e) {
61
- <?php if ($vars['is_close']): ?>
62
 
63
  setTimeout(function () {
64
  window.close();
13
  <div id="forminator-integrations" class="wpmudev-settings--box">
14
  <div class="sui-box">
15
  <div class="sui-box-header">
16
+ <h2 class="sui-box-title"><?php esc_html_e( 'Authorizing AWeber', Forminator::DOMAIN ); ?></h2>
17
  </div>
18
  <div class="sui-box-body">
19
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
20
  <span class="sui-notice sui-notice-error"><p><?php echo esc_html( $vars['error_message'] ); ?></p></span>
21
+ <?php elseif ( $vars['is_close'] ) : ?>
22
  <span class="sui-notice sui-notice-success">
23
  <p>
24
  <?php
25
+ esc_html_e(
26
+ 'Successfully authorized AWeber, you can go back to integration settings.',
27
+ Forminator::DOMAIN
28
  );
29
  ?>
30
  </p>
44
 
45
  var hashParams = {};
46
  var e,
47
+ a = /\+/g, // Regex for replacing addition symbol with a space
48
+ r = /([^&;=]+)=?([^&;]*)/g,
49
+ d = function (s) {
50
+ return decodeURIComponent(s.replace(a, " "));
51
+ },
52
+ q = window.location.hash.substring(1);
53
 
54
  while (e = r.exec(q))
55
  hashParams[d(e[1])] = d(e[2]);
59
 
60
  (function ($) {
61
  $(document).ready(function (e) {
62
+ <?php if ( $vars['is_close'] ) : ?>
63
 
64
  setTimeout(function () {
65
  window.close();
addons/pro/aweber/views/settings/authorize.php CHANGED
@@ -13,11 +13,21 @@ foreach ( $template_vars as $key => $val ) {
13
 
14
  <div class="integration-header">
15
 
16
- <h3 class="sui-box-title" id="dialogTitle2"><?php echo esc_html( sprintf( __( 'Connect %1$s', Forminator::DOMAIN ), 'AWeber' ) ); ?></h3>
 
 
 
 
 
17
 
18
  <?php if ( ! empty( $vars['account_id'] ) ) : ?>
19
  <div class="sui-notice sui-notice-success">
20
- <p><?php echo esc_html( sprintf( __( 'Your %1$s account is already authorized.', Forminator::DOMAIN ), 'AWeber' ) ); ?></p>
 
 
 
 
 
21
  </div>
22
  <?php else : ?>
23
  <span class="sui-description" style="margin-top: 20px;"><?php esc_html_e( 'Authorize Forminator to connect with your AWeber account in order to send data from your forms.', Forminator::DOMAIN ); ?></span>
13
 
14
  <div class="integration-header">
15
 
16
+ <h3 class="sui-box-title" id="dialogTitle2">
17
+ <?php
18
+ /* translators: ... */
19
+ echo esc_html( sprintf( __( 'Connect %1$s', Forminator::DOMAIN ), 'AWeber' ) );
20
+ ?>
21
+ </h3>
22
 
23
  <?php if ( ! empty( $vars['account_id'] ) ) : ?>
24
  <div class="sui-notice sui-notice-success">
25
+ <p>
26
+ <?php
27
+ /* translators: ... */
28
+ echo esc_html( sprintf( __( 'Your %1$s account is already authorized.', Forminator::DOMAIN ), 'AWeber' ) );
29
+ ?>
30
+ </p>
31
  </div>
32
  <?php else : ?>
33
  <span class="sui-description" style="margin-top: 20px;"><?php esc_html_e( 'Authorize Forminator to connect with your AWeber account in order to send data from your forms.', Forminator::DOMAIN ); ?></span>
addons/pro/aweber/views/settings/success-authorize.php CHANGED
@@ -1,6 +1,11 @@
1
  <div class="integration-header">
2
 
3
- <h3 class="sui-box-title" id="dialogTitle2"><?php echo esc_html( sprintf( __( '%1$s Added', Forminator::DOMAIN ), 'AWeber' ) ); ?></h3>
 
 
 
 
 
4
 
5
  <span class="sui-description" style="margin-top: 20px;"><?php esc_html_e( 'You can now go to your forms and assign them to this integration', Forminator::DOMAIN ); ?></span>
6
 
1
  <div class="integration-header">
2
 
3
+ <h3 class="sui-box-title" id="dialogTitle2">
4
+ <?php
5
+ /* translators: ... */
6
+ echo esc_html( sprintf( __( '%1$s Added', Forminator::DOMAIN ), 'AWeber' ) );
7
+ ?>
8
+ </h3>
9
 
10
  <span class="sui-description" style="margin-top: 20px;"><?php esc_html_e( 'You can now go to your forms and assign them to this integration', Forminator::DOMAIN ); ?></span>
11
 
addons/pro/aweber/views/settings/wait-authorize.php CHANGED
@@ -12,7 +12,12 @@ foreach ( $template_vars as $key => $val ) {
12
 
13
  <div class="integration-header">
14
 
15
- <h3 class="sui-box-title" id="dialogTitle2"><?php echo esc_html( sprintf( __( 'Connect %1$s', Forminator::DOMAIN ), 'AWeber' ) ); ?></h3>
 
 
 
 
 
16
 
17
  </div>
18
 
@@ -20,7 +25,12 @@ foreach ( $template_vars as $key => $val ) {
20
 
21
  <div class="sui-notice sui-notice-loading">
22
 
23
- <p><?php echo esc_html( sprintf( __( 'We are waiting %1$s authorization...', Forminator::DOMAIN ), 'AWeber' ) ); ?></p>
 
 
 
 
 
24
 
25
  </div>
26
 
12
 
13
  <div class="integration-header">
14
 
15
+ <h3 class="sui-box-title" id="dialogTitle2">
16
+ <?php
17
+ /* translators: ... */
18
+ echo esc_html( sprintf( __( 'Connect %1$s', Forminator::DOMAIN ), 'AWeber' ) );
19
+ ?>
20
+ </h3>
21
 
22
  </div>
23
 
25
 
26
  <div class="sui-notice sui-notice-loading">
27
 
28
+ <p>
29
+ <?php
30
+ /* translators: ... */
31
+ echo esc_html( sprintf( __( 'We are waiting %1$s authorization...', Forminator::DOMAIN ), 'AWeber' ) );
32
+ ?>
33
+ </p>
34
 
35
  </div>
36
 
addons/pro/campaignmonitor/campaignmonitor.php CHANGED
@@ -23,8 +23,8 @@ function forminator_addon_campaignmonitor_assets_url() {
23
  return trailingslashit( forminator_addon_campaignmonitor_url() . 'assets' );
24
  }
25
 
26
- require_once dirname( __FILE__ ) . '/forminator-addon-campaignmonitor.php';
27
- require_once dirname( __FILE__ ) . '/forminator-addon-campaignmonitor-form-settings.php';
28
- require_once dirname( __FILE__ ) . '/forminator-addon-campaignmonitor-form-hooks.php';
29
  //Direct Load
30
  Forminator_Addon_Loader::get_instance()->register( 'Forminator_Addon_Campaignmonitor' );
23
  return trailingslashit( forminator_addon_campaignmonitor_url() . 'assets' );
24
  }
25
 
26
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-campaignmonitor.php';
27
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-campaignmonitor-form-settings.php';
28
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-campaignmonitor-form-hooks.php';
29
  //Direct Load
30
  Forminator_Addon_Loader::get_instance()->register( 'Forminator_Addon_Campaignmonitor' );
addons/pro/campaignmonitor/{forminator-addon-campaignmonitor-exception.php → class-forminator-addon-campaignmonitor-exception.php} RENAMED
File without changes
addons/pro/campaignmonitor/{forminator-addon-campaignmonitor-form-hooks.php → class-forminator-addon-campaignmonitor-form-hooks.php} RENAMED
@@ -101,7 +101,6 @@ class Forminator_Addon_Campaignmonitor_Form_Hooks extends Forminator_Addon_Form_
101
  'value' => $this->get_status_on_add_subscriber( $key, $submitted_data, $addon_setting_value, $form_settings, $form_entry_fields ),
102
  );
103
  }
104
-
105
  }
106
 
107
  $entry_fields = $data;
@@ -163,11 +162,8 @@ class Forminator_Addon_Campaignmonitor_Form_Hooks extends Forminator_Addon_Form_
163
 
164
  $email_element_id = $connection_settings['fields_map']['default_field_email'];
165
  if ( ! isset( $submitted_data[ $email_element_id ] ) || empty( $submitted_data[ $email_element_id ] ) ) {
166
- throw new Forminator_Addon_Campaignmonitor_Exception(
167
- sprintf(
168
- __( 'Email Address on element %1$s not found or not filled on submitted data.', Forminator::DOMAIN ),
169
- $email_element_id
170
- )
171
  );
172
  }
173
  $email = $submitted_data[ $email_element_id ];
@@ -186,11 +182,8 @@ class Forminator_Addon_Campaignmonitor_Form_Hooks extends Forminator_Addon_Form_
186
  $element_value = Forminator_Form_Entry_Model::meta_value_to_string( 'stripe', $meta_value );
187
  $name = $element_value;
188
  } elseif ( ! isset( $submitted_data[ $name_element_id ] ) || empty( $submitted_data[ $name_element_id ] ) ) {
189
- throw new Forminator_Addon_Campaignmonitor_Exception(
190
- sprintf(
191
- __( 'Name on element %1$s not found or not filled on submitted data.', Forminator::DOMAIN ),
192
- $name_element_id
193
- )
194
  );
195
  }
196
 
@@ -388,7 +381,6 @@ class Forminator_Addon_Campaignmonitor_Form_Hooks extends Forminator_Addon_Form_
388
  'value' => '',
389
  );
390
 
391
-
392
  $sub_entries = array();
393
  if ( isset( $status['connection_name'] ) ) {
394
  $sub_entries[] = array(
@@ -660,8 +652,8 @@ class Forminator_Addon_Campaignmonitor_Form_Hooks extends Forminator_Addon_Form_
660
  $addon_meta_datum_value = $addon_meta_datum['value'];
661
  if ( isset( $addon_meta_datum_value['is_sent'] ) && $addon_meta_datum_value['is_sent'] ) {
662
  if ( isset( $addon_meta_datum_value['list_id'] ) && ! empty( $addon_meta_datum_value['list_id'] )
663
- && isset( $addon_meta_datum_value['subscriber_email'] )
664
- && ! empty( $addon_meta_datum_value['subscriber_email'] ) ) {
665
  $subscribers_to_delete[] = array(
666
  'list_id' => $addon_meta_datum_value['list_id'],
667
  'email' => $addon_meta_datum_value['subscriber_email'],
@@ -669,7 +661,6 @@ class Forminator_Addon_Campaignmonitor_Form_Hooks extends Forminator_Addon_Form_
669
  }
670
  }
671
  }
672
-
673
  }
674
  }
675
 
101
  'value' => $this->get_status_on_add_subscriber( $key, $submitted_data, $addon_setting_value, $form_settings, $form_entry_fields ),
102
  );
103
  }
 
104
  }
105
 
106
  $entry_fields = $data;
162
 
163
  $email_element_id = $connection_settings['fields_map']['default_field_email'];
164
  if ( ! isset( $submitted_data[ $email_element_id ] ) || empty( $submitted_data[ $email_element_id ] ) ) {
165
+ throw new Forminator_Addon_Campaignmonitor_Exception(/* translators: ... */
166
+ sprintf( __( 'Email Address on element %1$s not found or not filled on submitted data.', Forminator::DOMAIN ), $email_element_id )
 
 
 
167
  );
168
  }
169
  $email = $submitted_data[ $email_element_id ];
182
  $element_value = Forminator_Form_Entry_Model::meta_value_to_string( 'stripe', $meta_value );
183
  $name = $element_value;
184
  } elseif ( ! isset( $submitted_data[ $name_element_id ] ) || empty( $submitted_data[ $name_element_id ] ) ) {
185
+ throw new Forminator_Addon_Campaignmonitor_Exception(/* translators: ... */
186
+ sprintf( __( 'Name on element %1$s not found or not filled on submitted data.', Forminator::DOMAIN ), $name_element_id )
 
 
 
187
  );
188
  }
189
 
381
  'value' => '',
382
  );
383
 
 
384
  $sub_entries = array();
385
  if ( isset( $status['connection_name'] ) ) {
386
  $sub_entries[] = array(
652
  $addon_meta_datum_value = $addon_meta_datum['value'];
653
  if ( isset( $addon_meta_datum_value['is_sent'] ) && $addon_meta_datum_value['is_sent'] ) {
654
  if ( isset( $addon_meta_datum_value['list_id'] ) && ! empty( $addon_meta_datum_value['list_id'] )
655
+ && isset( $addon_meta_datum_value['subscriber_email'] )
656
+ && ! empty( $addon_meta_datum_value['subscriber_email'] ) ) {
657
  $subscribers_to_delete[] = array(
658
  'list_id' => $addon_meta_datum_value['list_id'],
659
  'email' => $addon_meta_datum_value['subscriber_email'],
661
  }
662
  }
663
  }
 
664
  }
665
  }
666
 
addons/pro/campaignmonitor/{forminator-addon-campaignmonitor-form-settings-exception.php → class-forminator-addon-campaignmonitor-form-settings-exception.php} RENAMED
File without changes
addons/pro/campaignmonitor/{forminator-addon-campaignmonitor-form-settings.php → class-forminator-addon-campaignmonitor-form-settings.php} RENAMED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/forminator-addon-campaignmonitor-form-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Campaignmonitor_Form_Settings
@@ -56,11 +56,6 @@ class Forminator_Addon_Campaignmonitor_Form_Settings extends Forminator_Addon_Fo
56
  'callback' => array( $this, 'map_fields' ),
57
  'is_completed' => array( $this, 'map_fields_is_completed' ),
58
  ),
59
- //todo: allow fe to support this
60
- // array(
61
- // 'callback' => array( $this, 'extra_field' ),
62
- // 'is_completed' => array( $this, 'extra_field' ),
63
- // ),
64
  array(
65
  'callback' => array( $this, 'setup_options' ),
66
  'is_completed' => array( $this, 'setup_options_is_completed' ),
@@ -122,15 +117,16 @@ class Forminator_Addon_Campaignmonitor_Form_Settings extends Forminator_Addon_Fo
122
 
123
  $buttons = array();
124
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
125
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
126
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
127
- esc_html__( 'Deactivate this Campaign Monitor Integration from this Form.', Forminator::DOMAIN )
 
128
  );
129
  }
130
 
131
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
132
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
133
- '</div>';
134
 
135
  return array(
136
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -195,7 +191,6 @@ class Forminator_Addon_Campaignmonitor_Form_Settings extends Forminator_Addon_Fo
195
  'error_message' => '',
196
  );
197
 
198
-
199
  $is_submit = ! empty( $submitted_data );
200
  $has_errors = false;
201
 
@@ -256,15 +251,16 @@ class Forminator_Addon_Campaignmonitor_Form_Settings extends Forminator_Addon_Fo
256
 
257
  $buttons = array();
258
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
259
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
260
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
261
- esc_html__( 'Deactivate this Campaign Monitor Integration from this Form.', Forminator::DOMAIN )
 
262
  );
263
  }
264
 
265
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
266
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
267
- '</div>';
268
 
269
  return array(
270
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -402,7 +398,7 @@ class Forminator_Addon_Campaignmonitor_Form_Settings extends Forminator_Addon_Fo
402
  if ( isset( $fields_map[ $key ] ) && ! empty( $fields_map[ $key ] ) ) {
403
  $element_id = $fields_map[ $key ];
404
  if ( ! in_array( $element_id, $forminator_field_element_ids, true ) ) {
405
- $input_exceptions->add_input_exception(
406
  sprintf( __( 'Please assign valid field for %s', Forminator::DOMAIN ), $title ),
407
  $key . '_error'
408
  );
@@ -430,15 +426,16 @@ class Forminator_Addon_Campaignmonitor_Form_Settings extends Forminator_Addon_Fo
430
 
431
  $buttons = array();
432
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
433
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
434
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
435
- esc_html__( 'Deactivate this Campaign Monitor Integration from this Form.', Forminator::DOMAIN )
 
436
  );
437
  }
438
 
439
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
440
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
441
- '</div>';
442
 
443
  return array(
444
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -553,9 +550,9 @@ class Forminator_Addon_Campaignmonitor_Form_Settings extends Forminator_Addon_Fo
553
  $this->save_multi_id_form_setting_values(
554
  $multi_id,
555
  array(
556
- 'resubscribe' => (bool) $resubscribe,
557
  'restart_subscription_based_autoresponders' => (bool) $restart_subscription_based_autoresponders,
558
- 'consent_to_track' => $consent_to_track,
559
  )
560
  );
561
 
@@ -576,15 +573,16 @@ class Forminator_Addon_Campaignmonitor_Form_Settings extends Forminator_Addon_Fo
576
 
577
  $buttons = array();
578
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
579
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
580
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
581
- esc_html__( 'Deactivate this Campaign Monitor Integration from this Form.', Forminator::DOMAIN )
 
582
  );
583
  }
584
 
585
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
586
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Save', Forminator::DOMAIN ), 'sui-button-primary forminator-addon-finish' ) .
587
- '</div>';
588
 
589
  return array(
590
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-campaignmonitor-form-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Campaignmonitor_Form_Settings
56
  'callback' => array( $this, 'map_fields' ),
57
  'is_completed' => array( $this, 'map_fields_is_completed' ),
58
  ),
 
 
 
 
 
59
  array(
60
  'callback' => array( $this, 'setup_options' ),
61
  'is_completed' => array( $this, 'setup_options_is_completed' ),
117
 
118
  $buttons = array();
119
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
120
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
121
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
122
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
123
+ esc_html__( 'Deactivate this Campaign Monitor Integration from this Form.', Forminator::DOMAIN )
124
  );
125
  }
126
 
127
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
128
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
129
+ '</div>';
130
 
131
  return array(
132
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
191
  'error_message' => '',
192
  );
193
 
 
194
  $is_submit = ! empty( $submitted_data );
195
  $has_errors = false;
196
 
251
 
252
  $buttons = array();
253
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
254
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
255
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
256
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
257
+ esc_html__( 'Deactivate this Campaign Monitor Integration from this Form.', Forminator::DOMAIN )
258
  );
259
  }
260
 
261
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
262
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
263
+ '</div>';
264
 
265
  return array(
266
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
398
  if ( isset( $fields_map[ $key ] ) && ! empty( $fields_map[ $key ] ) ) {
399
  $element_id = $fields_map[ $key ];
400
  if ( ! in_array( $element_id, $forminator_field_element_ids, true ) ) {
401
+ $input_exceptions->add_input_exception(/* translators: ... */
402
  sprintf( __( 'Please assign valid field for %s', Forminator::DOMAIN ), $title ),
403
  $key . '_error'
404
  );
426
 
427
  $buttons = array();
428
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
429
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
430
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
431
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
432
+ esc_html__( 'Deactivate this Campaign Monitor Integration from this Form.', Forminator::DOMAIN )
433
  );
434
  }
435
 
436
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
437
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
438
+ '</div>';
439
 
440
  return array(
441
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
550
  $this->save_multi_id_form_setting_values(
551
  $multi_id,
552
  array(
553
+ 'resubscribe' => (bool) $resubscribe,
554
  'restart_subscription_based_autoresponders' => (bool) $restart_subscription_based_autoresponders,
555
+ 'consent_to_track' => $consent_to_track,
556
  )
557
  );
558
 
573
 
574
  $buttons = array();
575
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
576
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
577
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
578
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
579
+ esc_html__( 'Deactivate this Campaign Monitor Integration from this Form.', Forminator::DOMAIN )
580
  );
581
  }
582
 
583
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
584
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Save', Forminator::DOMAIN ), 'sui-button-primary forminator-addon-finish' ) .
585
+ '</div>';
586
 
587
  return array(
588
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
addons/pro/campaignmonitor/{forminator-addon-campaignmonitor.php → class-forminator-addon-campaignmonitor.php} RENAMED
@@ -1,7 +1,7 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/forminator-addon-campaignmonitor-exception.php';
4
- require_once dirname( __FILE__ ) . '/lib/class-wp-campaignmonitor-api.php';
5
 
6
  /**
7
  * Class Forminator_Addon_Campaignmonitor
@@ -309,8 +309,8 @@ final class Forminator_Addon_Campaignmonitor extends Forminator_Addon_Abstract {
309
  }
310
 
311
  if ( ! isset( $client_details->BasicDetails ) //phpcs:ignore WordPress.NamingConventions.ValidVariableName.NotSnakeCaseMemberVar
312
- || ! isset( $client_details->BasicDetails->ClientID ) //phpcs:ignore WordPress.NamingConventions.ValidVariableName.NotSnakeCaseMemberVar
313
- || ! isset( $client_details->BasicDetails->CompanyName ) ) { //phpcs:ignore WordPress.NamingConventions.ValidVariableName.NotSnakeCaseMemberVar
314
  throw new Forminator_Addon_Campaignmonitor_Exception( __( 'Could not find client details, please try again', Forminator::DOMAIN ) );
315
  }
316
 
@@ -339,7 +339,6 @@ final class Forminator_Addon_Campaignmonitor extends Forminator_Addon_Abstract {
339
  $has_errors = true;
340
  }
341
  }
342
-
343
  }
344
 
345
  if ( $show_success ) {
@@ -359,18 +358,16 @@ final class Forminator_Addon_Campaignmonitor extends Forminator_Addon_Abstract {
359
  );
360
  $buttons['submit'] = array(
361
  'markup' => '<div class="sui-actions-right">' .
362
- self::get_button_markup( esc_html__( 'Save', Forminator::DOMAIN ), 'forminator-addon-connect' ) .
363
- '</div>',
364
  );
365
  } else {
366
  $buttons['submit'] = array(
367
  'markup' => '<div class="sui-actions-right">' .
368
- self::get_button_markup( esc_html__( 'CONNECT', Forminator::DOMAIN ), 'forminator-addon-connect' ) .
369
- '</div>',
370
  );
371
  }
372
-
373
-
374
  }
375
 
376
  return array(
@@ -412,7 +409,6 @@ final class Forminator_Addon_Campaignmonitor extends Forminator_Addon_Abstract {
412
  if ( isset( $setting_values['api_key'] ) ) {
413
  $api_key = $setting_values['api_key'];
414
  }
415
-
416
  }
417
  $api = Forminator_Addon_Campaignmonitor_Wp_Api::get_instance( $api_key );
418
  self::$api = $api;
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-campaignmonitor-exception.php';
4
+ require_once dirname( __FILE__ ) . '/lib/class-forminator-addon-campaignmonitor-wp-api.php';
5
 
6
  /**
7
  * Class Forminator_Addon_Campaignmonitor
309
  }
310
 
311
  if ( ! isset( $client_details->BasicDetails ) //phpcs:ignore WordPress.NamingConventions.ValidVariableName.NotSnakeCaseMemberVar
312
+ || ! isset( $client_details->BasicDetails->ClientID ) //phpcs:ignore WordPress.NamingConventions.ValidVariableName.NotSnakeCaseMemberVar
313
+ || ! isset( $client_details->BasicDetails->CompanyName ) ) { //phpcs:ignore WordPress.NamingConventions.ValidVariableName.NotSnakeCaseMemberVar
314
  throw new Forminator_Addon_Campaignmonitor_Exception( __( 'Could not find client details, please try again', Forminator::DOMAIN ) );
315
  }
316
 
339
  $has_errors = true;
340
  }
341
  }
 
342
  }
343
 
344
  if ( $show_success ) {
358
  );
359
  $buttons['submit'] = array(
360
  'markup' => '<div class="sui-actions-right">' .
361
+ self::get_button_markup( esc_html__( 'Save', Forminator::DOMAIN ), 'forminator-addon-connect' ) .
362
+ '</div>',
363
  );
364
  } else {
365
  $buttons['submit'] = array(
366
  'markup' => '<div class="sui-actions-right">' .
367
+ self::get_button_markup( esc_html__( 'CONNECT', Forminator::DOMAIN ), 'forminator-addon-connect' ) .
368
+ '</div>',
369
  );
370
  }
 
 
371
  }
372
 
373
  return array(
409
  if ( isset( $setting_values['api_key'] ) ) {
410
  $api_key = $setting_values['api_key'];
411
  }
 
412
  }
413
  $api = Forminator_Addon_Campaignmonitor_Wp_Api::get_instance( $api_key );
414
  self::$api = $api;
addons/pro/campaignmonitor/lib/{class-wp-campaignmonitor-api-exception.php → class-forminator-addon-campaignmonitor-wp-api-exception.php} RENAMED
File without changes
addons/pro/campaignmonitor/lib/{class-wp-campaignmonitor-api-not-found-exception.php → class-forminator-addon-campaignmonitor-wp-api-not-found-exception.php} RENAMED
File without changes
addons/pro/campaignmonitor/lib/{class-wp-campaignmonitor-api.php → class-forminator-addon-campaignmonitor-wp-api.php} RENAMED
@@ -1,7 +1,7 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/class-wp-campaignmonitor-api-exception.php';
4
- require_once dirname( __FILE__ ) . '/class-wp-campaignmonitor-api-not-found-exception.php';
5
 
6
  /**
7
  * Class Forminator_Addon_Campaignmonitor_Wp_Api
@@ -127,7 +127,7 @@ class Forminator_Addon_Campaignmonitor_Wp_Api {
127
  * @throws Forminator_Addon_Campaignmonitor_Wp_Api_Exception
128
  * @throws Forminator_Addon_Campaignmonitor_Wp_Api_Not_Found_Exception
129
  */
130
- private function _request( $verb = 'GET', $path, $args = array() ) {
131
  // Adding extra user agent for wp remote request
132
  add_filter( 'http_headers_useragent', array( $this, 'filter_user_agent' ) );
133
 
@@ -216,9 +216,10 @@ class Forminator_Addon_Campaignmonitor_Wp_Api {
216
  }
217
 
218
  if ( 404 === $status_code ) {
 
219
  throw new Forminator_Addon_Campaignmonitor_Wp_Api_Not_Found_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
220
  }
221
- // /* translators: ... */
222
  throw new Forminator_Addon_Campaignmonitor_Wp_Api_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
223
  }
224
  }
@@ -263,7 +264,7 @@ class Forminator_Addon_Campaignmonitor_Wp_Api {
263
  */
264
  public function post_( $args ) {
265
 
266
- return $this->_request(
267
  'POST',
268
  '',
269
  $args
@@ -286,7 +287,7 @@ class Forminator_Addon_Campaignmonitor_Wp_Api {
286
 
287
  $args = array_merge( $default_args, $args );
288
 
289
- return $this->_request(
290
  'GET',
291
  'primarycontact.json',
292
  $args
@@ -309,7 +310,7 @@ class Forminator_Addon_Campaignmonitor_Wp_Api {
309
 
310
  $args = array_merge( $default_args, $args );
311
 
312
- return $this->_request(
313
  'GET',
314
  'systemdate.json',
315
  $args
@@ -333,7 +334,7 @@ class Forminator_Addon_Campaignmonitor_Wp_Api {
333
 
334
  $args = array_merge( $default_args, $args );
335
 
336
- return $this->_request(
337
  'GET',
338
  'lists/' . rawurlencode( trim( $list_id ) ) . '.json',
339
  $args
@@ -357,7 +358,7 @@ class Forminator_Addon_Campaignmonitor_Wp_Api {
357
 
358
  $args = array_merge( $default_args, $args );
359
 
360
- return $this->_request(
361
  'GET',
362
  'clients/' . rawurlencode( trim( $client_id ) ) . '/lists.json',
363
  $args
@@ -380,7 +381,7 @@ class Forminator_Addon_Campaignmonitor_Wp_Api {
380
 
381
  $args = array_merge( $default_args, $args );
382
 
383
- return $this->_request(
384
  'GET',
385
  'clients.json',
386
  $args
@@ -404,7 +405,7 @@ class Forminator_Addon_Campaignmonitor_Wp_Api {
404
 
405
  $args = array_merge( $default_args, $args );
406
 
407
- return $this->_request(
408
  'GET',
409
  'clients/' . rawurlencode( trim( $client_id ) ) . '.json',
410
  $args
@@ -428,7 +429,7 @@ class Forminator_Addon_Campaignmonitor_Wp_Api {
428
 
429
  $args = array_merge( $default_args, $args );
430
 
431
- return $this->_request(
432
  'GET',
433
  'lists/' . rawurlencode( trim( $list_id ) ) . '/customfields.json',
434
  $args
@@ -455,7 +456,7 @@ class Forminator_Addon_Campaignmonitor_Wp_Api {
455
 
456
  $args = array_merge( $default_args, $args );
457
 
458
- return $this->_request(
459
  'POST',
460
  'subscribers/' . rawurlencode( trim( $list_id ) ) . '.json',
461
  $args
@@ -482,7 +483,7 @@ class Forminator_Addon_Campaignmonitor_Wp_Api {
482
 
483
  $args = array_merge( $default_args, $args );
484
 
485
- return $this->_request(
486
  'DELETE',
487
  'subscribers/' . rawurlencode( trim( $list_id ) ) . '.json',
488
  $args
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-campaignmonitor-wp-api-exception.php';
4
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-campaignmonitor-wp-api-not-found-exception.php';
5
 
6
  /**
7
  * Class Forminator_Addon_Campaignmonitor_Wp_Api
127
  * @throws Forminator_Addon_Campaignmonitor_Wp_Api_Exception
128
  * @throws Forminator_Addon_Campaignmonitor_Wp_Api_Not_Found_Exception
129
  */
130
+ private function request( $verb = 'GET', $path, $args = array() ) {
131
  // Adding extra user agent for wp remote request
132
  add_filter( 'http_headers_useragent', array( $this, 'filter_user_agent' ) );
133
 
216
  }
217
 
218
  if ( 404 === $status_code ) {
219
+ /* translators: ... */
220
  throw new Forminator_Addon_Campaignmonitor_Wp_Api_Not_Found_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
221
  }
222
+ /* translators: ... */
223
  throw new Forminator_Addon_Campaignmonitor_Wp_Api_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
224
  }
225
  }
264
  */
265
  public function post_( $args ) {
266
 
267
+ return $this->request(
268
  'POST',
269
  '',
270
  $args
287
 
288
  $args = array_merge( $default_args, $args );
289
 
290
+ return $this->request(
291
  'GET',
292
  'primarycontact.json',
293
  $args
310
 
311
  $args = array_merge( $default_args, $args );
312
 
313
+ return $this->request(
314
  'GET',
315
  'systemdate.json',
316
  $args
334
 
335
  $args = array_merge( $default_args, $args );
336
 
337
+ return $this->request(
338
  'GET',
339
  'lists/' . rawurlencode( trim( $list_id ) ) . '.json',
340
  $args
358
 
359
  $args = array_merge( $default_args, $args );
360
 
361
+ return $this->request(
362
  'GET',
363
  'clients/' . rawurlencode( trim( $client_id ) ) . '/lists.json',
364
  $args
381
 
382
  $args = array_merge( $default_args, $args );
383
 
384
+ return $this->request(
385
  'GET',
386
  'clients.json',
387
  $args
405
 
406
  $args = array_merge( $default_args, $args );
407
 
408
+ return $this->request(
409
  'GET',
410
  'clients/' . rawurlencode( trim( $client_id ) ) . '.json',
411
  $args
429
 
430
  $args = array_merge( $default_args, $args );
431
 
432
+ return $this->request(
433
  'GET',
434
  'lists/' . rawurlencode( trim( $list_id ) ) . '/customfields.json',
435
  $args
456
 
457
  $args = array_merge( $default_args, $args );
458
 
459
+ return $this->request(
460
  'POST',
461
  'subscribers/' . rawurlencode( trim( $list_id ) ) . '.json',
462
  $args
483
 
484
  $args = array_merge( $default_args, $args );
485
 
486
+ return $this->request(
487
  'DELETE',
488
  'subscribers/' . rawurlencode( trim( $list_id ) ) . '.json',
489
  $args
addons/pro/campaignmonitor/views/form-settings/setup-options.php CHANGED
@@ -83,7 +83,7 @@ foreach ( $template_vars as $key => $val ) {
83
  <div class="sui-form-field<?php echo esc_attr( ! empty( $vars['consent_to_track_error'] ) ? ' sui-form-field-error' : '' ); ?>">
84
 
85
  <label class="sui-label" for="consent_to_track"><?php esc_html_e( 'Consent to Track', Forminator::DOMAIN ); ?></label>
86
-
87
  <select name="consent_to_track" id="consent_to_track" class="sui-select sui-form-control">
88
  <option value="Unchanged" <?php selected( 'Unchanged', $vars['consent_to_track'] ); ?>>Unchanged</option>
89
  <option value="Yes" <?php selected( 'Yes', $vars['consent_to_track'] ); ?>>Yes</option>
83
  <div class="sui-form-field<?php echo esc_attr( ! empty( $vars['consent_to_track_error'] ) ? ' sui-form-field-error' : '' ); ?>">
84
 
85
  <label class="sui-label" for="consent_to_track"><?php esc_html_e( 'Consent to Track', Forminator::DOMAIN ); ?></label>
86
+
87
  <select name="consent_to_track" id="consent_to_track" class="sui-select sui-form-control">
88
  <option value="Unchanged" <?php selected( 'Unchanged', $vars['consent_to_track'] ); ?>>Unchanged</option>
89
  <option value="Yes" <?php selected( 'Yes', $vars['consent_to_track'] ); ?>>Yes</option>
addons/pro/campaignmonitor/views/settings/setup-api-success.php CHANGED
@@ -1,6 +1,11 @@
1
  <div class="integration-header">
2
 
3
- <h3 id="dialogTitle2" class="sui-box-title"><?php echo esc_html( sprintf( __( '%1$s Added', Forminator::DOMAIN ), 'Campaign Monitor' ) ); ?></h3>
 
 
 
 
 
4
 
5
  <span class="sui-description" style="margin-top: 20px;"><?php esc_html_e( 'You can now go to your forms and assign them to this integration', Forminator::DOMAIN ); ?></span>
6
 
1
  <div class="integration-header">
2
 
3
+ <h3 id="dialogTitle2" class="sui-box-title">
4
+ <?php
5
+ /* translators: ... */
6
+ echo esc_html( sprintf( __( '%1$s Added', Forminator::DOMAIN ), 'Campaign Monitor' ) );
7
+ ?>
8
+ </h3>
9
 
10
  <span class="sui-description" style="margin-top: 20px;"><?php esc_html_e( 'You can now go to your forms and assign them to this integration', Forminator::DOMAIN ); ?></span>
11
 
addons/pro/campaignmonitor/views/settings/setup-api.php CHANGED
@@ -16,7 +16,12 @@ foreach ( $template_vars as $key => $val ) {
16
 
17
  <div class="integration-header">
18
 
19
- <h3 id="dialogTitle2" class="sui-box-title"><?php echo esc_html( sprintf( __( 'Configure %1$s API', Forminator::DOMAIN ), 'Campaign Monitor' ) ); ?></h3>
 
 
 
 
 
20
 
21
  <span class="sui-description" style="margin-top: 20px;"><?php esc_html_e( 'Setup Campaign Monitor API Access.', Forminator::DOMAIN ); ?></span>
22
 
@@ -43,7 +48,7 @@ foreach ( $template_vars as $key => $val ) {
43
  <div class="sui-control-with-icon">
44
 
45
  <input name="api_key"
46
- placeholder="<?php echo esc_attr( sprintf( __( 'Enter %1$s API Key', Forminator::DOMAIN ), 'Campaign Monitor' ) ); ?>"
47
  value="<?php echo esc_attr( $vars['api_key'] ); ?>"
48
  class="sui-form-control" />
49
 
@@ -58,9 +63,33 @@ foreach ( $template_vars as $key => $val ) {
58
  <div class="sui-description">
59
  <?php esc_html_e( 'To obtain Campaign Monitor API Credentials, follow these steps :', Forminator::DOMAIN ); ?>
60
  <ol class="instructions" id="apikey-instructions">
61
- <li><?php echo __( 'Login to your Campaign Monitor account <a href="https://login.createsend.com/l" target="_blank">here</a>.', Forminator::DOMAIN ); //wpcs: xss ok. ?></li>
62
- <li><?php echo __( 'Go to Account Settings, then navigate to <strong>API Keys</strong> section.', Forminator::DOMAIN ); //wpcs: xss ok. ?></li>
63
- <li><?php echo __( 'Click on <strong>Show API Key</strong>, select and copy on the shown up value.', Forminator::DOMAIN ); //wpcs: xss ok. ?></li>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
  </ol>
65
  </div>
66
 
@@ -71,9 +100,9 @@ foreach ( $template_vars as $key => $val ) {
71
  <label class="sui-label"><?php esc_html_e( 'Client ID', Forminator::DOMAIN ); ?></label>
72
 
73
  <div class="sui-control-with-icon">
74
-
75
  <input name="client_id"
76
- placeholder="<?php echo esc_attr( sprintf( __( 'Enter %1$s Client ID', Forminator::DOMAIN ), 'Campaign Monitor' ) ); ?>"
77
  value="<?php echo esc_attr( $vars['client_id'] ); ?>"
78
  class="sui-form-control" />
79
 
@@ -85,8 +114,19 @@ foreach ( $template_vars as $key => $val ) {
85
  <span class="sui-error-message"><?php echo esc_html( $vars['client_id_error'] ); ?></span>
86
  <?php endif; ?>
87
 
88
- <span class="sui-description"><?php echo __( 'Client ID is optional, unless you are on <strong>Agency-Mode</strong>, then you can find your desired Client ID on the <strong>Account Settings</strong> > <strong>API Keys</strong>', Forminator::DOMAIN ); //wpcs: xss ok. ?></span>
89
-
 
 
 
 
 
 
 
 
 
 
 
90
  </div>
91
 
92
  </form>
16
 
17
  <div class="integration-header">
18
 
19
+ <h3 id="dialogTitle2" class="sui-box-title">
20
+ <?php
21
+ /* translators: ... */
22
+ echo esc_html( sprintf( __( 'Configure %1$s API', Forminator::DOMAIN ), 'Campaign Monitor' ) );
23
+ ?>
24
+ </h3>
25
 
26
  <span class="sui-description" style="margin-top: 20px;"><?php esc_html_e( 'Setup Campaign Monitor API Access.', Forminator::DOMAIN ); ?></span>
27
 
48
  <div class="sui-control-with-icon">
49
 
50
  <input name="api_key"
51
+ placeholder="<?php /* translators: ... */ echo esc_attr( sprintf( __( 'Enter %1$s API Key', Forminator::DOMAIN ), 'Campaign Monitor' ) ); ?>"
52
  value="<?php echo esc_attr( $vars['api_key'] ); ?>"
53
  class="sui-form-control" />
54
 
63
  <div class="sui-description">
64
  <?php esc_html_e( 'To obtain Campaign Monitor API Credentials, follow these steps :', Forminator::DOMAIN ); ?>
65
  <ol class="instructions" id="apikey-instructions">
66
+ <li>
67
+ <?php
68
+ echo sprintf(/* translators: ... */
69
+ esc_html__( 'Login to your Campaign Monitor account %1$shere%2$s.', Forminator::DOMAIN ),
70
+ '<a href="https://login.createsend.com/l" target="_blank">',
71
+ '</a>'
72
+ ); //phpcs:ignore Standard.Category.SniffName.ErrorCode
73
+ ?>
74
+ </li>
75
+ <li>
76
+ <?php
77
+ echo sprintf(/* translators: ... */
78
+ esc_html__( 'Go to Account Settings, then navigate to %1$sAPI Keys%2$s section.', Forminator::DOMAIN ),
79
+ '<strong>',
80
+ '</strong>'
81
+ ); //phpcs:ignore Standard.Category.SniffName.ErrorCode
82
+ ?>
83
+ </li>
84
+ <li>
85
+ <?php
86
+ echo sprintf(/* translators: ... */
87
+ esc_html__( 'Click on %1$sShow API Key%2$s, select and copy on the shown up value.', Forminator::DOMAIN ),
88
+ '<strong>',
89
+ '</strong>'
90
+ ); //phpcs:ignore Standard.Category.SniffName.ErrorCode
91
+ ?>
92
+ </li>
93
  </ol>
94
  </div>
95
 
100
  <label class="sui-label"><?php esc_html_e( 'Client ID', Forminator::DOMAIN ); ?></label>
101
 
102
  <div class="sui-control-with-icon">
103
+
104
  <input name="client_id"
105
+ placeholder="<?php /* translators: ... */ echo esc_attr( sprintf( __( 'Enter %1$s Client ID', Forminator::DOMAIN ), 'Campaign Monitor' ) ); ?>"
106
  value="<?php echo esc_attr( $vars['client_id'] ); ?>"
107
  class="sui-form-control" />
108
 
114
  <span class="sui-error-message"><?php echo esc_html( $vars['client_id_error'] ); ?></span>
115
  <?php endif; ?>
116
 
117
+ <span class="sui-description">
118
+ <?php
119
+ echo sprintf(/* translators: ... */
120
+ esc_html__( 'Client ID is optional, unless you are on %1$sAgency-Mode%2$s, then you can find your desired Client ID on the %3$sAccount Settings%4$s > %5$sAPI Keys%6$s', Forminator::DOMAIN ),
121
+ '<strong>',
122
+ '</strong>',
123
+ '<strong>',
124
+ '</strong>',
125
+ '<strong>',
126
+ '</strong>'
127
+ ); //phpcs:ignore Standard.Category.SniffName.ErrorCode
128
+ ?>
129
+ </span>
130
  </div>
131
 
132
  </form>
addons/pro/googlesheet/{forminator-addon-googlesheet-exception.php → class-forminator-addon-googlesheet-exception.php} RENAMED
File without changes
addons/pro/googlesheet/{forminator-addon-googlesheet-form-hooks.php → class-forminator-addon-googlesheet-form-hooks.php} RENAMED
@@ -119,7 +119,6 @@ class Forminator_Addon_Googlesheet_Form_Hooks extends Forminator_Addon_Form_Hook
119
  'value' => $this->get_status_on_create_row( $key, $submitted_data, $addon_setting_value, $form_entry_fields ),
120
  );
121
  }
122
-
123
  }
124
 
125
  $entry_fields = $data;
@@ -227,7 +226,6 @@ class Forminator_Addon_Googlesheet_Form_Hooks extends Forminator_Addon_Form_Hook
227
  'value' => $form_entry_field['value'],
228
  );
229
  }
230
-
231
  }
232
  $form_entry_fields = $keyed_form_entry_fields;
233
 
@@ -365,7 +363,7 @@ class Forminator_Addon_Googlesheet_Form_Hooks extends Forminator_Addon_Form_Hook
365
  $sheet_title = $sheets[0]->properties->title;
366
  $sheet_column_count = $sheets[0]->properties->gridProperties->columnCount;
367
 
368
- $headers_range = $sheet_title . '!' . '1:1';
369
  $header_rows = $spreadsheet_service->spreadsheets_values->get(
370
  $spreadsheet->getSpreadsheetId(),
371
  $headers_range
@@ -520,7 +518,6 @@ class Forminator_Addon_Googlesheet_Form_Hooks extends Forminator_Addon_Form_Hook
520
  $form_settings_instance
521
  );
522
 
523
-
524
  $addon_meta_datas = $addon_meta_data;
525
  if ( ! isset( $addon_meta_data[0] ) || ! is_array( $addon_meta_data[0] ) ) {
526
  return array();
@@ -572,7 +569,6 @@ class Forminator_Addon_Googlesheet_Form_Hooks extends Forminator_Addon_Form_Hook
572
  'value' => '',
573
  );
574
 
575
-
576
  $sub_entries = array();
577
  if ( isset( $status['connection_name'] ) ) {
578
  $sub_entries[] = array(
119
  'value' => $this->get_status_on_create_row( $key, $submitted_data, $addon_setting_value, $form_entry_fields ),
120
  );
121
  }
 
122
  }
123
 
124
  $entry_fields = $data;
226
  'value' => $form_entry_field['value'],
227
  );
228
  }
 
229
  }
230
  $form_entry_fields = $keyed_form_entry_fields;
231
 
363
  $sheet_title = $sheets[0]->properties->title;
364
  $sheet_column_count = $sheets[0]->properties->gridProperties->columnCount;
365
 
366
+ $headers_range = $sheet_title . '!1:1';
367
  $header_rows = $spreadsheet_service->spreadsheets_values->get(
368
  $spreadsheet->getSpreadsheetId(),
369
  $headers_range
518
  $form_settings_instance
519
  );
520
 
 
521
  $addon_meta_datas = $addon_meta_data;
522
  if ( ! isset( $addon_meta_data[0] ) || ! is_array( $addon_meta_data[0] ) ) {
523
  return array();
569
  'value' => '',
570
  );
571
 
 
572
  $sub_entries = array();
573
  if ( isset( $status['connection_name'] ) ) {
574
  $sub_entries[] = array(
addons/pro/googlesheet/{forminator-addon-googlesheet-form-settings-exception.php → class-forminator-addon-googlesheet-form-settings-exception.php} RENAMED
File without changes
addons/pro/googlesheet/{forminator-addon-googlesheet-form-settings.php → class-forminator-addon-googlesheet-form-settings.php} RENAMED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/forminator-addon-googlesheet-form-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Googlesheet_Form_Settings
@@ -109,15 +109,16 @@ class Forminator_Addon_Googlesheet_Form_Settings extends Forminator_Addon_Form_S
109
 
110
  $buttons = array();
111
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
112
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
113
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
114
- esc_html__( 'Deactivate Google Sheets Integration from this Form.', Forminator::DOMAIN )
 
115
  );
116
  }
117
 
118
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
119
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
120
- '</div>';
121
 
122
  return array(
123
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -184,7 +185,6 @@ class Forminator_Addon_Googlesheet_Form_Settings extends Forminator_Addon_Form_S
184
  'multi_id' => $multi_id,
185
  );
186
 
187
-
188
  $is_submit = ! empty( $submitted_data );
189
  $has_errors = false;
190
  $notification = array();
@@ -205,7 +205,6 @@ class Forminator_Addon_Googlesheet_Form_Settings extends Forminator_Addon_Form_S
205
  $google_client = $this->addon->get_google_client();
206
  $google_client->setAccessToken( $this->addon->get_client_access_token() );
207
 
208
-
209
  if ( ! empty( $folder_id ) ) {
210
  $drive = new Forminator_Google_Service_Drive( $google_client );
211
  try {
@@ -216,7 +215,6 @@ class Forminator_Addon_Googlesheet_Form_Settings extends Forminator_Addon_Form_S
216
  if ( Forminator_Addon_Googlesheet::MIME_TYPE_GOOGLE_DRIVE_FOLDER !== $folder->mimeType ) {
217
  $input_exceptions->add_input_exception( __( 'This is not a folder, please use a valid Folder ID.', Forminator::DOMAIN ), 'folder_id_error' );
218
  }
219
-
220
  } catch ( Forminator_Google_Exception $google_exception ) {
221
  // catch 404
222
  if ( false !== stripos( $google_exception->getMessage(), 'File not found' ) ) {
@@ -235,7 +233,6 @@ class Forminator_Addon_Googlesheet_Form_Settings extends Forminator_Addon_Form_S
235
  $file->setMimeType( Forminator_Addon_Googlesheet::MIME_TYPE_GOOGLE_SPREADSHEET );
236
  $file->setName( $file_name );
237
 
238
-
239
  if ( ! empty( $folder_id ) ) {
240
  $file->setParents( array( $folder_id ) );
241
  }
@@ -258,7 +255,6 @@ class Forminator_Addon_Googlesheet_Form_Settings extends Forminator_Addon_Form_S
258
  );
259
  $is_close = true;
260
 
261
-
262
  } catch ( Forminator_Addon_Googlesheet_Form_Settings_Exception $e ) {
263
  $input_errors = $e->get_input_exceptions();
264
  $template_params = array_merge( $template_params, $input_errors );
@@ -274,15 +270,16 @@ class Forminator_Addon_Googlesheet_Form_Settings extends Forminator_Addon_Form_S
274
 
275
  $buttons = array();
276
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
277
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
278
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
279
- esc_html__( 'Deactivate Google Sheets Integration from this Form.', Forminator::DOMAIN )
 
280
  );
281
  }
282
 
283
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
284
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Create', Forminator::DOMAIN ), 'forminator-addon-next' ) .
285
- '</div>';
286
 
287
  return array(
288
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-googlesheet-form-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Googlesheet_Form_Settings
109
 
110
  $buttons = array();
111
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
112
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
113
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
114
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
115
+ esc_html__( 'Deactivate Google Sheets Integration from this Form.', Forminator::DOMAIN )
116
  );
117
  }
118
 
119
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
120
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
121
+ '</div>';
122
 
123
  return array(
124
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
185
  'multi_id' => $multi_id,
186
  );
187
 
 
188
  $is_submit = ! empty( $submitted_data );
189
  $has_errors = false;
190
  $notification = array();
205
  $google_client = $this->addon->get_google_client();
206
  $google_client->setAccessToken( $this->addon->get_client_access_token() );
207
 
 
208
  if ( ! empty( $folder_id ) ) {
209
  $drive = new Forminator_Google_Service_Drive( $google_client );
210
  try {
215
  if ( Forminator_Addon_Googlesheet::MIME_TYPE_GOOGLE_DRIVE_FOLDER !== $folder->mimeType ) {
216
  $input_exceptions->add_input_exception( __( 'This is not a folder, please use a valid Folder ID.', Forminator::DOMAIN ), 'folder_id_error' );
217
  }
 
218
  } catch ( Forminator_Google_Exception $google_exception ) {
219
  // catch 404
220
  if ( false !== stripos( $google_exception->getMessage(), 'File not found' ) ) {
233
  $file->setMimeType( Forminator_Addon_Googlesheet::MIME_TYPE_GOOGLE_SPREADSHEET );
234
  $file->setName( $file_name );
235
 
 
236
  if ( ! empty( $folder_id ) ) {
237
  $file->setParents( array( $folder_id ) );
238
  }
255
  );
256
  $is_close = true;
257
 
 
258
  } catch ( Forminator_Addon_Googlesheet_Form_Settings_Exception $e ) {
259
  $input_errors = $e->get_input_exceptions();
260
  $template_params = array_merge( $template_params, $input_errors );
270
 
271
  $buttons = array();
272
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
273
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
274
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
275
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
276
+ esc_html__( 'Deactivate Google Sheets Integration from this Form.', Forminator::DOMAIN )
277
  );
278
  }
279
 
280
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
281
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Create', Forminator::DOMAIN ), 'forminator-addon-next' ) .
282
+ '</div>';
283
 
284
  return array(
285
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
addons/pro/googlesheet/{forminator-addon-googlesheet-poll-hooks.php → class-forminator-addon-googlesheet-poll-hooks.php} RENAMED
@@ -124,7 +124,6 @@ class Forminator_Addon_Googlesheet_Poll_Hooks extends Forminator_Addon_Poll_Hook
124
  'value' => $this->get_status_on_create_row( $key, $submitted_data, $addon_setting_value, $current_entry_fields ),
125
  );
126
  }
127
-
128
  }
129
 
130
  $entry_fields = $data;
@@ -224,7 +223,6 @@ class Forminator_Addon_Googlesheet_Poll_Hooks extends Forminator_Addon_Poll_Hook
224
  */
225
  do_action( 'forminator_addon_poll_googlesheet_after_prepare_sheet_headers', $header_fields, $connection_settings, $poll_id, $submitted_data, $poll_entry_fields, $poll_settings_instance );
226
 
227
-
228
  $values = array();
229
 
230
  $answer = '';
@@ -261,7 +259,6 @@ class Forminator_Addon_Googlesheet_Poll_Hooks extends Forminator_Addon_Poll_Hook
261
  $cell_data->setUserEnteredValue( $value );
262
  $values[] = $cell_data;
263
  }
264
-
265
  }
266
 
267
  // Build the RowData
@@ -367,7 +364,7 @@ class Forminator_Addon_Googlesheet_Poll_Hooks extends Forminator_Addon_Poll_Hook
367
  $sheet_title = $sheets[0]->properties->title;
368
  $sheet_column_count = $sheets[0]->properties->gridProperties->columnCount;
369
 
370
- $headers_range = $sheet_title . '!' . '1:1';
371
  $header_rows = $spreadsheet_service->spreadsheets_values->get(
372
  $spreadsheet->getSpreadsheetId(),
373
  $headers_range
124
  'value' => $this->get_status_on_create_row( $key, $submitted_data, $addon_setting_value, $current_entry_fields ),
125
  );
126
  }
 
127
  }
128
 
129
  $entry_fields = $data;
223
  */
224
  do_action( 'forminator_addon_poll_googlesheet_after_prepare_sheet_headers', $header_fields, $connection_settings, $poll_id, $submitted_data, $poll_entry_fields, $poll_settings_instance );
225
 
 
226
  $values = array();
227
 
228
  $answer = '';
259
  $cell_data->setUserEnteredValue( $value );
260
  $values[] = $cell_data;
261
  }
 
262
  }
263
 
264
  // Build the RowData
364
  $sheet_title = $sheets[0]->properties->title;
365
  $sheet_column_count = $sheets[0]->properties->gridProperties->columnCount;
366
 
367
+ $headers_range = $sheet_title . '!1:1';
368
  $header_rows = $spreadsheet_service->spreadsheets_values->get(
369
  $spreadsheet->getSpreadsheetId(),
370
  $headers_range
addons/pro/googlesheet/{forminator-addon-googlesheet-poll-settings-exception.php → class-forminator-addon-googlesheet-poll-settings-exception.php} RENAMED
File without changes
addons/pro/googlesheet/{forminator-addon-googlesheet-poll-settings.php → class-forminator-addon-googlesheet-poll-settings.php} RENAMED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/forminator-addon-googlesheet-poll-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Googlesheet_Poll_Settings
@@ -109,15 +109,16 @@ class Forminator_Addon_Googlesheet_Poll_Settings extends Forminator_Addon_Poll_S
109
 
110
  $buttons = array();
111
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
112
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
113
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
114
- esc_html__( 'Deactivate this Google Sheets Integration from this Poll.', Forminator::DOMAIN )
 
115
  );
116
  }
117
 
118
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
119
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
120
- '</div>';
121
 
122
  return array(
123
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -156,7 +157,6 @@ class Forminator_Addon_Googlesheet_Poll_Settings extends Forminator_Addon_Poll_S
156
  'multi_id' => $multi_id,
157
  );
158
 
159
-
160
  $is_submit = ! empty( $submitted_data );
161
  $has_errors = false;
162
  $notification = array();
@@ -177,7 +177,6 @@ class Forminator_Addon_Googlesheet_Poll_Settings extends Forminator_Addon_Poll_S
177
  $google_client = $this->addon->get_google_client();
178
  $google_client->setAccessToken( $this->addon->get_client_access_token() );
179
 
180
-
181
  if ( ! empty( $folder_id ) ) {
182
  $drive = new Forminator_Google_Service_Drive( $google_client );
183
  try {
@@ -188,7 +187,6 @@ class Forminator_Addon_Googlesheet_Poll_Settings extends Forminator_Addon_Poll_S
188
  if ( Forminator_Addon_Googlesheet::MIME_TYPE_GOOGLE_DRIVE_FOLDER !== $folder->mimeType ) {
189
  $input_exceptions->add_input_exception( __( 'This is not a folder, please use a valid Folder ID.', Forminator::DOMAIN ), 'folder_id_error' );
190
  }
191
-
192
  } catch ( Forminator_Google_Exception $google_exception ) {
193
  // catch 404
194
  if ( false !== stripos( $google_exception->getMessage(), 'File not found' ) ) {
@@ -207,7 +205,6 @@ class Forminator_Addon_Googlesheet_Poll_Settings extends Forminator_Addon_Poll_S
207
  $file->setMimeType( Forminator_Addon_Googlesheet::MIME_TYPE_GOOGLE_SPREADSHEET );
208
  $file->setName( $file_name );
209
 
210
-
211
  if ( ! empty( $folder_id ) ) {
212
  $file->setParents( array( $folder_id ) );
213
  }
@@ -230,7 +227,6 @@ class Forminator_Addon_Googlesheet_Poll_Settings extends Forminator_Addon_Poll_S
230
  );
231
  $is_close = true;
232
 
233
-
234
  } catch ( Forminator_Addon_Googlesheet_Poll_Settings_Exception $e ) {
235
  $input_errors = $e->get_input_exceptions();
236
  $template_params = array_merge( $template_params, $input_errors );
@@ -246,15 +242,16 @@ class Forminator_Addon_Googlesheet_Poll_Settings extends Forminator_Addon_Poll_S
246
 
247
  $buttons = array();
248
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
249
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
250
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
251
- esc_html__( 'Deactivate this Google Sheets Integration from this Poll.', Forminator::DOMAIN )
 
252
  );
253
  }
254
 
255
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
256
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Create', Forminator::DOMAIN ), 'forminator-addon-next' ) .
257
- '</div>';
258
 
259
  return array(
260
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-googlesheet-poll-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Googlesheet_Poll_Settings
109
 
110
  $buttons = array();
111
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
112
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
113
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
114
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
115
+ esc_html__( 'Deactivate this Google Sheets Integration from this Poll.', Forminator::DOMAIN )
116
  );
117
  }
118
 
119
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
120
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
121
+ '</div>';
122
 
123
  return array(
124
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
157
  'multi_id' => $multi_id,
158
  );
159
 
 
160
  $is_submit = ! empty( $submitted_data );
161
  $has_errors = false;
162
  $notification = array();
177
  $google_client = $this->addon->get_google_client();
178
  $google_client->setAccessToken( $this->addon->get_client_access_token() );
179
 
 
180
  if ( ! empty( $folder_id ) ) {
181
  $drive = new Forminator_Google_Service_Drive( $google_client );
182
  try {
187
  if ( Forminator_Addon_Googlesheet::MIME_TYPE_GOOGLE_DRIVE_FOLDER !== $folder->mimeType ) {
188
  $input_exceptions->add_input_exception( __( 'This is not a folder, please use a valid Folder ID.', Forminator::DOMAIN ), 'folder_id_error' );
189
  }
 
190
  } catch ( Forminator_Google_Exception $google_exception ) {
191
  // catch 404
192
  if ( false !== stripos( $google_exception->getMessage(), 'File not found' ) ) {
205
  $file->setMimeType( Forminator_Addon_Googlesheet::MIME_TYPE_GOOGLE_SPREADSHEET );
206
  $file->setName( $file_name );
207
 
 
208
  if ( ! empty( $folder_id ) ) {
209
  $file->setParents( array( $folder_id ) );
210
  }
227
  );
228
  $is_close = true;
229
 
 
230
  } catch ( Forminator_Addon_Googlesheet_Poll_Settings_Exception $e ) {
231
  $input_errors = $e->get_input_exceptions();
232
  $template_params = array_merge( $template_params, $input_errors );
242
 
243
  $buttons = array();
244
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
245
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
246
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
247
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
248
+ esc_html__( 'Deactivate this Google Sheets Integration from this Poll.', Forminator::DOMAIN )
249
  );
250
  }
251
 
252
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
253
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Create', Forminator::DOMAIN ), 'forminator-addon-next' ) .
254
+ '</div>';
255
 
256
  return array(
257
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
addons/pro/googlesheet/{forminator-addon-googlesheet-quiz-hooks.php → class-forminator-addon-googlesheet-quiz-hooks.php} RENAMED
@@ -126,7 +126,6 @@ class Forminator_Addon_Googlesheet_Quiz_Hooks extends Forminator_Addon_Quiz_Hook
126
  'value' => $this->get_status_on_create_row( $key, $submitted_data, $addon_setting_value, $current_entry_fields ),
127
  );
128
  }
129
-
130
  }
131
 
132
  $entry_fields = $data;
@@ -248,9 +247,9 @@ class Forminator_Addon_Googlesheet_Quiz_Hooks extends Forminator_Addon_Quiz_Hook
248
  }
249
  } elseif ( 'nowrong' === $this->quiz->quiz_type ) {
250
  if ( isset( $quiz_entry['value'][0] )
251
- && is_array( $quiz_entry['value'][0] )
252
- && isset( $quiz_entry['value'][0]['value'] )
253
- && is_array( $quiz_entry['value'][0]['value'] ) ) {
254
 
255
  $quiz_entry = $quiz_entry['value'][0]['value'];
256
 
@@ -270,12 +269,10 @@ class Forminator_Addon_Googlesheet_Quiz_Hooks extends Forminator_Addon_Quiz_Hook
270
  }
271
  }
272
  }
273
-
274
  }
275
  }
276
  }
277
 
278
-
279
  $requests = array();
280
  $date = date_i18n( 'Y-m-d H:i:s' );
281
  foreach ( $answers as $i => $answer ) {
@@ -359,12 +356,10 @@ class Forminator_Addon_Googlesheet_Quiz_Hooks extends Forminator_Addon_Quiz_Hook
359
  $spreadsheet_service = new Forminator_Google_Service_Sheets( $google_client );
360
  $spreadsheet_service->spreadsheets->batchUpdate( $connection_settings['file_id'], $batch_update_request );
361
 
362
-
363
  if ( $google_client->getAccessToken() !== $this->addon->get_client_access_token() ) {
364
  $this->addon->update_client_access_token( $google_client->getAccessToken() );
365
  }
366
 
367
-
368
  forminator_addon_maybe_log( __METHOD__, 'Success Send Data' );
369
 
370
  return array(
@@ -435,7 +430,7 @@ class Forminator_Addon_Googlesheet_Quiz_Hooks extends Forminator_Addon_Quiz_Hook
435
  $sheet_title = $sheets[0]->properties->title;
436
  $sheet_column_count = $sheets[0]->properties->gridProperties->columnCount;
437
 
438
- $headers_range = $sheet_title . '!' . '1:1';
439
  $header_rows = $spreadsheet_service->spreadsheets_values->get(
440
  $spreadsheet->getSpreadsheetId(),
441
  $headers_range
@@ -684,7 +679,6 @@ class Forminator_Addon_Googlesheet_Quiz_Hooks extends Forminator_Addon_Quiz_Hook
684
  $quiz_settings_instance
685
  );
686
 
687
-
688
  $addon_meta_datas = $addon_meta_data;
689
  if ( ! isset( $addon_meta_data[0] ) || ! is_array( $addon_meta_data[0] ) ) {
690
  return array();
@@ -736,7 +730,6 @@ class Forminator_Addon_Googlesheet_Quiz_Hooks extends Forminator_Addon_Quiz_Hook
736
  'value' => '',
737
  );
738
 
739
-
740
  $sub_entries = array();
741
  if ( isset( $status['connection_name'] ) ) {
742
  $sub_entries[] = array(
126
  'value' => $this->get_status_on_create_row( $key, $submitted_data, $addon_setting_value, $current_entry_fields ),
127
  );
128
  }
 
129
  }
130
 
131
  $entry_fields = $data;
247
  }
248
  } elseif ( 'nowrong' === $this->quiz->quiz_type ) {
249
  if ( isset( $quiz_entry['value'][0] )
250
+ && is_array( $quiz_entry['value'][0] )
251
+ && isset( $quiz_entry['value'][0]['value'] )
252
+ && is_array( $quiz_entry['value'][0]['value'] ) ) {
253
 
254
  $quiz_entry = $quiz_entry['value'][0]['value'];
255
 
269
  }
270
  }
271
  }
 
272
  }
273
  }
274
  }
275
 
 
276
  $requests = array();
277
  $date = date_i18n( 'Y-m-d H:i:s' );
278
  foreach ( $answers as $i => $answer ) {
356
  $spreadsheet_service = new Forminator_Google_Service_Sheets( $google_client );
357
  $spreadsheet_service->spreadsheets->batchUpdate( $connection_settings['file_id'], $batch_update_request );
358
 
 
359
  if ( $google_client->getAccessToken() !== $this->addon->get_client_access_token() ) {
360
  $this->addon->update_client_access_token( $google_client->getAccessToken() );
361
  }
362
 
 
363
  forminator_addon_maybe_log( __METHOD__, 'Success Send Data' );
364
 
365
  return array(
430
  $sheet_title = $sheets[0]->properties->title;
431
  $sheet_column_count = $sheets[0]->properties->gridProperties->columnCount;
432
 
433
+ $headers_range = $sheet_title . '!1:1';
434
  $header_rows = $spreadsheet_service->spreadsheets_values->get(
435
  $spreadsheet->getSpreadsheetId(),
436
  $headers_range
679
  $quiz_settings_instance
680
  );
681
 
 
682
  $addon_meta_datas = $addon_meta_data;
683
  if ( ! isset( $addon_meta_data[0] ) || ! is_array( $addon_meta_data[0] ) ) {
684
  return array();
730
  'value' => '',
731
  );
732
 
 
733
  $sub_entries = array();
734
  if ( isset( $status['connection_name'] ) ) {
735
  $sub_entries[] = array(
addons/pro/googlesheet/{forminator-addon-googlesheet-quiz-settings-exception.php → class-forminator-addon-googlesheet-quiz-settings-exception.php} RENAMED
File without changes
addons/pro/googlesheet/{forminator-addon-googlesheet-quiz-settings.php → class-forminator-addon-googlesheet-quiz-settings.php} RENAMED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/forminator-addon-googlesheet-quiz-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Googlesheet_Quiz_Settings
@@ -117,8 +117,8 @@ class Forminator_Addon_Googlesheet_Quiz_Settings extends Forminator_Addon_Quiz_S
117
  }
118
 
119
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
120
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
121
- '</div>';
122
 
123
  return array(
124
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -157,7 +157,6 @@ class Forminator_Addon_Googlesheet_Quiz_Settings extends Forminator_Addon_Quiz_S
157
  'multi_id' => $multi_id,
158
  );
159
 
160
-
161
  $is_submit = ! empty( $submitted_data );
162
  $has_errors = false;
163
  $notification = array();
@@ -178,7 +177,6 @@ class Forminator_Addon_Googlesheet_Quiz_Settings extends Forminator_Addon_Quiz_S
178
  $google_client = $this->addon->get_google_client();
179
  $google_client->setAccessToken( $this->addon->get_client_access_token() );
180
 
181
-
182
  if ( ! empty( $folder_id ) ) {
183
  $drive = new Forminator_Google_Service_Drive( $google_client );
184
  try {
@@ -189,7 +187,6 @@ class Forminator_Addon_Googlesheet_Quiz_Settings extends Forminator_Addon_Quiz_S
189
  if ( Forminator_Addon_Googlesheet::MIME_TYPE_GOOGLE_DRIVE_FOLDER !== $folder->mimeType ) {
190
  $input_exceptions->add_input_exception( __( 'This is not a folder, please use a valid Folder ID.', Forminator::DOMAIN ), 'folder_id_error' );
191
  }
192
-
193
  } catch ( Forminator_Google_Exception $google_exception ) {
194
  // catch 404
195
  if ( false !== stripos( $google_exception->getMessage(), 'File not found' ) ) {
@@ -208,7 +205,6 @@ class Forminator_Addon_Googlesheet_Quiz_Settings extends Forminator_Addon_Quiz_S
208
  $file->setMimeType( Forminator_Addon_Googlesheet::MIME_TYPE_GOOGLE_SPREADSHEET );
209
  $file->setName( $file_name );
210
 
211
-
212
  if ( ! empty( $folder_id ) ) {
213
  $file->setParents( array( $folder_id ) );
214
  }
@@ -231,7 +227,6 @@ class Forminator_Addon_Googlesheet_Quiz_Settings extends Forminator_Addon_Quiz_S
231
  );
232
  $is_close = true;
233
 
234
-
235
  } catch ( Forminator_Addon_Googlesheet_Quiz_Settings_Exception $e ) {
236
  $input_errors = $e->get_input_exceptions();
237
  $template_params = array_merge( $template_params, $input_errors );
@@ -255,8 +250,8 @@ class Forminator_Addon_Googlesheet_Quiz_Settings extends Forminator_Addon_Quiz_S
255
  }
256
 
257
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
258
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Create', Forminator::DOMAIN ), 'forminator-addon-next' ) .
259
- '</div>';
260
 
261
  return array(
262
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-googlesheet-quiz-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Googlesheet_Quiz_Settings
117
  }
118
 
119
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
120
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
121
+ '</div>';
122
 
123
  return array(
124
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
157
  'multi_id' => $multi_id,
158
  );
159
 
 
160
  $is_submit = ! empty( $submitted_data );
161
  $has_errors = false;
162
  $notification = array();
177
  $google_client = $this->addon->get_google_client();
178
  $google_client->setAccessToken( $this->addon->get_client_access_token() );
179
 
 
180
  if ( ! empty( $folder_id ) ) {
181
  $drive = new Forminator_Google_Service_Drive( $google_client );
182
  try {
187
  if ( Forminator_Addon_Googlesheet::MIME_TYPE_GOOGLE_DRIVE_FOLDER !== $folder->mimeType ) {
188
  $input_exceptions->add_input_exception( __( 'This is not a folder, please use a valid Folder ID.', Forminator::DOMAIN ), 'folder_id_error' );
189
  }
 
190
  } catch ( Forminator_Google_Exception $google_exception ) {
191
  // catch 404
192
  if ( false !== stripos( $google_exception->getMessage(), 'File not found' ) ) {
205
  $file->setMimeType( Forminator_Addon_Googlesheet::MIME_TYPE_GOOGLE_SPREADSHEET );
206
  $file->setName( $file_name );
207
 
 
208
  if ( ! empty( $folder_id ) ) {
209
  $file->setParents( array( $folder_id ) );
210
  }
227
  );
228
  $is_close = true;
229
 
 
230
  } catch ( Forminator_Addon_Googlesheet_Quiz_Settings_Exception $e ) {
231
  $input_errors = $e->get_input_exceptions();
232
  $template_params = array_merge( $template_params, $input_errors );
250
  }
251
 
252
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
253
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Create', Forminator::DOMAIN ), 'forminator-addon-next' ) .
254
+ '</div>';
255
 
256
  return array(
257
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
addons/pro/googlesheet/{forminator-addon-googlesheet.php → class-forminator-addon-googlesheet.php} RENAMED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/forminator-addon-googlesheet-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Googlesheet
@@ -37,7 +37,7 @@ final class Forminator_Addon_Googlesheet extends Forminator_Addon_Abstract {
37
  protected $_quiz_settings = 'Forminator_Addon_Googlesheet_Quiz_Settings';
38
  protected $_quiz_hooks = 'Forminator_Addon_Googlesheet_Quiz_Hooks';
39
 
40
- protected $_position = 3;
41
 
42
  /**
43
  * Forminator_Addon_Googlesheet constructor.
@@ -95,7 +95,6 @@ final class Forminator_Addon_Googlesheet extends Forminator_Addon_Abstract {
95
  if ( isset( $setting_values['token'] ) && ! empty( $setting_values['token'] ) ) {
96
  $is_connected = true;
97
  }
98
-
99
  } catch ( Forminator_Addon_Googlesheet_Exception $e ) {
100
  $is_connected = false;
101
  }
@@ -245,12 +244,12 @@ final class Forminator_Addon_Googlesheet extends Forminator_Addon_Abstract {
245
  'markup' => self::get_button_markup( esc_html__( 'DISCONNECT', Forminator::DOMAIN ), 'sui-button-ghost forminator-addon-disconnect' ),
246
  );
247
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
248
- Forminator_Addon_Mailchimp::get_button_markup( esc_html__( 'RE-AUTHORIZE', Forminator::DOMAIN ), 'forminator-addon-next' ) .
249
- '</div>';
250
  } else {
251
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
252
- Forminator_Addon_Mailchimp::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
253
- '</div>';
254
  }
255
 
256
  $template_params = array(
@@ -289,7 +288,6 @@ final class Forminator_Addon_Googlesheet extends Forminator_Addon_Abstract {
289
  }
290
  }
291
 
292
-
293
  if ( $is_submit ) {
294
  $client_id = isset( $submitted_data['client_id'] ) ? $submitted_data['client_id'] : '';
295
  $client_secret = isset( $submitted_data['client_secret'] ) ? $submitted_data['client_secret'] : '';
@@ -321,8 +319,6 @@ final class Forminator_Addon_Googlesheet extends Forminator_Addon_Abstract {
321
  $has_errors = true;
322
  }
323
  }
324
-
325
-
326
  }
327
 
328
  return array(
@@ -370,7 +366,6 @@ final class Forminator_Addon_Googlesheet extends Forminator_Addon_Abstract {
370
  );
371
  }
372
 
373
-
374
  $template_params = array(
375
  'auth_url' => $this->get_auth_url(),
376
  'token' => $this->_token,
@@ -600,7 +595,6 @@ final class Forminator_Addon_Googlesheet extends Forminator_Addon_Abstract {
600
  // catch all exception
601
  $template_params['error_message'] = $e->getMessage();
602
  }
603
-
604
  }
605
 
606
  return self::get_template( $template, $template_params );
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-googlesheet-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Googlesheet
37
  protected $_quiz_settings = 'Forminator_Addon_Googlesheet_Quiz_Settings';
38
  protected $_quiz_hooks = 'Forminator_Addon_Googlesheet_Quiz_Hooks';
39
 
40
+ protected $_position = 3;
41
 
42
  /**
43
  * Forminator_Addon_Googlesheet constructor.
95
  if ( isset( $setting_values['token'] ) && ! empty( $setting_values['token'] ) ) {
96
  $is_connected = true;
97
  }
 
98
  } catch ( Forminator_Addon_Googlesheet_Exception $e ) {
99
  $is_connected = false;
100
  }
244
  'markup' => self::get_button_markup( esc_html__( 'DISCONNECT', Forminator::DOMAIN ), 'sui-button-ghost forminator-addon-disconnect' ),
245
  );
246
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
247
+ Forminator_Addon_Mailchimp::get_button_markup( esc_html__( 'RE-AUTHORIZE', Forminator::DOMAIN ), 'forminator-addon-next' ) .
248
+ '</div>';
249
  } else {
250
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
251
+ Forminator_Addon_Mailchimp::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
252
+ '</div>';
253
  }
254
 
255
  $template_params = array(
288
  }
289
  }
290
 
 
291
  if ( $is_submit ) {
292
  $client_id = isset( $submitted_data['client_id'] ) ? $submitted_data['client_id'] : '';
293
  $client_secret = isset( $submitted_data['client_secret'] ) ? $submitted_data['client_secret'] : '';
319
  $has_errors = true;
320
  }
321
  }
 
 
322
  }
323
 
324
  return array(
366
  );
367
  }
368
 
 
369
  $template_params = array(
370
  'auth_url' => $this->get_auth_url(),
371
  'token' => $this->_token,
595
  // catch all exception
596
  $template_params['error_message'] = $e->getMessage();
597
  }
 
598
  }
599
 
600
  return self::get_template( $template, $template_params );
addons/pro/googlesheet/googlesheet.php CHANGED
@@ -42,17 +42,17 @@ function forminator_addon_googlesheet_google_api_client_autoload( $class_name )
42
  // only enable autoload when needed to avoid further conflicts
43
  //spl_autoload_register( 'forminator_addon_googlesheet_google_api_client_autoload' );
44
 
45
- require_once dirname( __FILE__ ) . '/forminator-addon-googlesheet.php';
46
 
47
- require_once dirname( __FILE__ ) . '/forminator-addon-googlesheet-form-settings.php';
48
- require_once dirname( __FILE__ ) . '/forminator-addon-googlesheet-form-hooks.php';
49
 
50
- require_once dirname( __FILE__ ) . '/forminator-addon-googlesheet-poll-settings.php';
51
- require_once dirname( __FILE__ ) . '/forminator-addon-googlesheet-poll-hooks.php';
52
 
53
- require_once dirname( __FILE__ ) . '/forminator-addon-googlesheet-quiz-settings.php';
54
- require_once dirname( __FILE__ ) . '/forminator-addon-googlesheet-quiz-hooks.php';
55
 
56
- require_once dirname( __FILE__ ) . '/lib/class-wp-googlesheet-client-logger.php';
57
  //Direct Load
58
  Forminator_Addon_Loader::get_instance()->register( 'Forminator_Addon_Googlesheet' );
42
  // only enable autoload when needed to avoid further conflicts
43
  //spl_autoload_register( 'forminator_addon_googlesheet_google_api_client_autoload' );
44
 
45
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-googlesheet.php';
46
 
47
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-googlesheet-form-settings.php';
48
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-googlesheet-form-hooks.php';
49
 
50
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-googlesheet-poll-settings.php';
51
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-googlesheet-poll-hooks.php';
52
 
53
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-googlesheet-quiz-settings.php';
54
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-googlesheet-quiz-hooks.php';
55
 
56
+ require_once dirname( __FILE__ ) . '/lib/class-forminator-addon-wp-googlesheet-client-logger.php';
57
  //Direct Load
58
  Forminator_Addon_Loader::get_instance()->register( 'Forminator_Addon_Googlesheet' );
addons/pro/googlesheet/lib/{class-wp-googlesheet-client-logger.php → class-forminator-addon-wp-googlesheet-client-logger.php} RENAMED
File without changes
addons/pro/googlesheet/views/form-settings/pick-name.php CHANGED
@@ -18,7 +18,7 @@ foreach ( $template_vars as $key => $val ) {
18
  <p><?php esc_html_e( 'Setup friendly name for this integration, so it will be easily identified by you.', Forminator::DOMAIN ); ?></p>
19
  <?php if ( ! empty( $vars['file_id'] ) ) : ?>
20
  <span class="sui-notice sui-notice-info"><p>
21
- <?php esc_html_e( 'You can open your current spread sheet', Forminator::DOMAIN ); ?>
22
  <a target="_blank" href="https://docs.google.com/spreadsheets/d/<?php echo esc_attr( $vars['file_id'] ); ?>"><?php esc_html_e( 'here', Forminator::DOMAIN ); ?></a>.</p></span>
23
  <?php endif; ?>
24
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
18
  <p><?php esc_html_e( 'Setup friendly name for this integration, so it will be easily identified by you.', Forminator::DOMAIN ); ?></p>
19
  <?php if ( ! empty( $vars['file_id'] ) ) : ?>
20
  <span class="sui-notice sui-notice-info"><p>
21
+ <?php esc_html_e( 'You can open your current spread sheet', Forminator::DOMAIN ); ?>
22
  <a target="_blank" href="https://docs.google.com/spreadsheets/d/<?php echo esc_attr( $vars['file_id'] ); ?>"><?php esc_html_e( 'here', Forminator::DOMAIN ); ?></a>.</p></span>
23
  <?php endif; ?>
24
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
addons/pro/googlesheet/views/form-settings/setup-sheet.php CHANGED
@@ -20,7 +20,7 @@ foreach ( $template_vars as $key => $val ) {
20
  <p><?php esc_html_e( 'Create Spreadsheet that will be used to send submissions.', Forminator::DOMAIN ); ?></p>
21
  <?php if ( ! empty( $vars['file_id'] ) ) : ?>
22
  <span class="sui-notice sui-notice-info"><p>
23
- <?php esc_html_e( 'You can open your current spread sheet', Forminator::DOMAIN ); ?>
24
  <a target="_blank" href="https://docs.google.com/spreadsheets/d/<?php echo esc_attr( $vars['file_id'] ); ?>"><?php esc_html_e( 'here', Forminator::DOMAIN ); ?></a>.</p></span>
25
  <?php endif; ?>
26
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
@@ -43,19 +43,24 @@ foreach ( $template_vars as $key => $val ) {
43
  <?php esc_html_e( 'It is optional, if Drive Folder ID omitted / empty, new spreadsheet will be created in your Google Drive home / root folder.', Forminator::DOMAIN ); ?>
44
  </li>
45
  <li>
46
- <?php echo sprintf(
47
- __( 'Go to your %1$s.', Forminator::DOMAIN ),
48
- '<a href="https://drive.google.com/#my-drive" target="_blank">' . __( 'Drive account', Forminator::DOMAIN ) . '</a>'
49
- ); //wpcs: xss ok?>
 
 
50
  <?php esc_html_e( 'Navigate to or create a new directory where you want to new spreadsheet created. Make sure you are viewing the destination directory.', Forminator::DOMAIN ); ?>
51
  </li>
52
  <li>
53
- <?php echo sprintf(
54
- __( 'The URL for the directory will be something similar to %1$s. The Directory ID would be the last part after %2$s, which is %3$s in this case.', Forminator::DOMAIN ),
 
55
  '<em>https://drive.google.com/#folders/0B6GD66ctHXdCOWZKNDRIRGJJXS3</em>',
56
  '<em>/#folders/</em>',
57
  '<strong>0B6GD66ctHXdCOWZKNDRIRGJJXS3</strong>'
58
- ); //wpcs: xss ok?></li>
 
 
59
  </ol>
60
  </span>
61
  </div>
20
  <p><?php esc_html_e( 'Create Spreadsheet that will be used to send submissions.', Forminator::DOMAIN ); ?></p>
21
  <?php if ( ! empty( $vars['file_id'] ) ) : ?>
22
  <span class="sui-notice sui-notice-info"><p>
23
+ <?php esc_html_e( 'You can open your current spread sheet', Forminator::DOMAIN ); ?>
24
  <a target="_blank" href="https://docs.google.com/spreadsheets/d/<?php echo esc_attr( $vars['file_id'] ); ?>"><?php esc_html_e( 'here', Forminator::DOMAIN ); ?></a>.</p></span>
25
  <?php endif; ?>
26
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
43
  <?php esc_html_e( 'It is optional, if Drive Folder ID omitted / empty, new spreadsheet will be created in your Google Drive home / root folder.', Forminator::DOMAIN ); ?>
44
  </li>
45
  <li>
46
+ <?php
47
+ echo sprintf(/* translators: ... */
48
+ esc_html__( 'Go to your %1$s.', Forminator::DOMAIN ),
49
+ '<a href="https://drive.google.com/#my-drive" target="_blank">' . esc_html__( 'Drive account', Forminator::DOMAIN ) . '</a>'
50
+ ); //phpcs:ignore Standard.Category.SniffName.ErrorCode
51
+ ?>
52
  <?php esc_html_e( 'Navigate to or create a new directory where you want to new spreadsheet created. Make sure you are viewing the destination directory.', Forminator::DOMAIN ); ?>
53
  </li>
54
  <li>
55
+ <?php
56
+ echo sprintf(/* translators: ... */
57
+ esc_html__( 'The URL for the directory will be something similar to %1$s. The Directory ID would be the last part after %2$s, which is %3$s in this case.', Forminator::DOMAIN ),
58
  '<em>https://drive.google.com/#folders/0B6GD66ctHXdCOWZKNDRIRGJJXS3</em>',
59
  '<em>/#folders/</em>',
60
  '<strong>0B6GD66ctHXdCOWZKNDRIRGJJXS3</strong>'
61
+ ); //phpcs:ignore Standard.Category.SniffName.ErrorCode
62
+ ?>
63
+ </li>
64
  </ol>
65
  </span>
66
  </div>
addons/pro/googlesheet/views/poll-settings/pick-name.php CHANGED
@@ -18,7 +18,7 @@ foreach ( $template_vars as $key => $val ) {
18
  <p><?php esc_html_e( 'Setup friendly name for this integration, so it will be easily identified by you.', Forminator::DOMAIN ); ?></p>
19
  <?php if ( ! empty( $vars['file_id'] ) ) : ?>
20
  <span class="sui-notice sui-notice-info"><p>
21
- <?php esc_html_e( 'You can open your current spread sheet', Forminator::DOMAIN ); ?>
22
  <a target="_blank" href="https://docs.google.com/spreadsheets/d/<?php echo esc_attr( $vars['file_id'] ); ?>"><?php esc_html_e( 'here', Forminator::DOMAIN ); ?></a>.</p></span>
23
  <?php endif; ?>
24
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
18
  <p><?php esc_html_e( 'Setup friendly name for this integration, so it will be easily identified by you.', Forminator::DOMAIN ); ?></p>
19
  <?php if ( ! empty( $vars['file_id'] ) ) : ?>
20
  <span class="sui-notice sui-notice-info"><p>
21
+ <?php esc_html_e( 'You can open your current spread sheet', Forminator::DOMAIN ); ?>
22
  <a target="_blank" href="https://docs.google.com/spreadsheets/d/<?php echo esc_attr( $vars['file_id'] ); ?>"><?php esc_html_e( 'here', Forminator::DOMAIN ); ?></a>.</p></span>
23
  <?php endif; ?>
24
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
addons/pro/googlesheet/views/poll-settings/setup-sheet.php CHANGED
@@ -20,7 +20,7 @@ foreach ( $template_vars as $key => $val ) {
20
  <p><?php esc_html_e( 'Create Spreadsheet that will be used to send submissions.', Forminator::DOMAIN ); ?></p>
21
  <?php if ( ! empty( $vars['file_id'] ) ) : ?>
22
  <span class="sui-notice sui-notice-info"><p>
23
- <?php esc_html_e( 'You can open your current spread sheet', Forminator::DOMAIN ); ?>
24
  <a target="_blank" href="https://docs.google.com/spreadsheets/d/<?php echo esc_attr( $vars['file_id'] ); ?>"><?php esc_html_e( 'here', Forminator::DOMAIN ); ?></a>.</p></span>
25
  <?php endif; ?>
26
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
@@ -43,19 +43,24 @@ foreach ( $template_vars as $key => $val ) {
43
  <?php esc_html_e( 'It is optional, if Drive Folder ID omitted / empty, new spreadsheet will be created in your Google Drive home / root folder.', Forminator::DOMAIN ); ?>
44
  </li>
45
  <li>
46
- <?php echo sprintf(
47
- __( 'Go to your %1$s.', Forminator::DOMAIN ),
48
- '<a href="https://drive.google.com/#my-drive" target="_blank">' . __( 'Drive account', Forminator::DOMAIN ) . '</a>'
49
- ); //wpcs: xss ok?>
 
 
50
  <?php esc_html_e( 'Navigate to or create a new directory where you want to new spreadsheet created. Make sure you are viewing the destination directory.', Forminator::DOMAIN ); ?>
51
  </li>
52
  <li>
53
- <?php echo sprintf(
54
- __( 'The URL for the directory will be something similar to %1$s. The Directory ID would be the last part after %2$s, which is %3$s in this case.', Forminator::DOMAIN ),
 
55
  '<em>https://drive.google.com/#folders/0B6GD66ctHXdCOWZKNDRIRGJJXS3</em>',
56
  '<em>/#folders/</em>',
57
  '<strong>0B6GD66ctHXdCOWZKNDRIRGJJXS3</strong>'
58
- ); //wpcs: xss ok?></li>
 
 
59
  </ol>
60
  </span>
61
  </div>
20
  <p><?php esc_html_e( 'Create Spreadsheet that will be used to send submissions.', Forminator::DOMAIN ); ?></p>
21
  <?php if ( ! empty( $vars['file_id'] ) ) : ?>
22
  <span class="sui-notice sui-notice-info"><p>
23
+ <?php esc_html_e( 'You can open your current spread sheet', Forminator::DOMAIN ); ?>
24
  <a target="_blank" href="https://docs.google.com/spreadsheets/d/<?php echo esc_attr( $vars['file_id'] ); ?>"><?php esc_html_e( 'here', Forminator::DOMAIN ); ?></a>.</p></span>
25
  <?php endif; ?>
26
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
43
  <?php esc_html_e( 'It is optional, if Drive Folder ID omitted / empty, new spreadsheet will be created in your Google Drive home / root folder.', Forminator::DOMAIN ); ?>
44
  </li>
45
  <li>
46
+ <?php
47
+ echo sprintf(/* translators: ... */
48
+ esc_html__( 'Go to your %1$s.', Forminator::DOMAIN ),
49
+ '<a href="https://drive.google.com/#my-drive" target="_blank">' . esc_html__( 'Drive account', Forminator::DOMAIN ) . '</a>'
50
+ ); //phpcs:ignore Standard.Category.SniffName.ErrorCode
51
+ ?>
52
  <?php esc_html_e( 'Navigate to or create a new directory where you want to new spreadsheet created. Make sure you are viewing the destination directory.', Forminator::DOMAIN ); ?>
53
  </li>
54
  <li>
55
+ <?php
56
+ echo sprintf(/* translators: ... */
57
+ esc_html__( 'The URL for the directory will be something similar to %1$s. The Directory ID would be the last part after %2$s, which is %3$s in this case.', Forminator::DOMAIN ),
58
  '<em>https://drive.google.com/#folders/0B6GD66ctHXdCOWZKNDRIRGJJXS3</em>',
59
  '<em>/#folders/</em>',
60
  '<strong>0B6GD66ctHXdCOWZKNDRIRGJJXS3</strong>'
61
+ ); //phpcs:ignore Standard.Category.SniffName.ErrorCode
62
+ ?>
63
+ </li>
64
  </ol>
65
  </span>
66
  </div>
addons/pro/googlesheet/views/quiz-settings/pick-name.php CHANGED
@@ -18,7 +18,7 @@ foreach ( $template_vars as $key => $val ) {
18
  <p><?php esc_html_e( 'Setup friendly name for this integration, so it will be easily identified by you.', Forminator::DOMAIN ); ?></p>
19
  <?php if ( ! empty( $vars['file_id'] ) ) : ?>
20
  <span class="sui-notice sui-notice-info"><p>
21
- <?php esc_html_e( 'You can open your current spread sheet', Forminator::DOMAIN ); ?>
22
  <a target="_blank" href="https://docs.google.com/spreadsheets/d/<?php echo esc_attr( $vars['file_id'] ); ?>"><?php esc_html_e( 'here', Forminator::DOMAIN ); ?></a>.</p></span>
23
  <?php endif; ?>
24
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
18
  <p><?php esc_html_e( 'Setup friendly name for this integration, so it will be easily identified by you.', Forminator::DOMAIN ); ?></p>
19
  <?php if ( ! empty( $vars['file_id'] ) ) : ?>
20
  <span class="sui-notice sui-notice-info"><p>
21
+ <?php esc_html_e( 'You can open your current spread sheet', Forminator::DOMAIN ); ?>
22
  <a target="_blank" href="https://docs.google.com/spreadsheets/d/<?php echo esc_attr( $vars['file_id'] ); ?>"><?php esc_html_e( 'here', Forminator::DOMAIN ); ?></a>.</p></span>
23
  <?php endif; ?>
24
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
addons/pro/googlesheet/views/quiz-settings/setup-sheet.php CHANGED
@@ -20,7 +20,7 @@ foreach ( $template_vars as $key => $val ) {
20
  <p><?php esc_html_e( 'Create Spreadsheet that will be used to send submissions.', Forminator::DOMAIN ); ?></p>
21
  <?php if ( ! empty( $vars['file_id'] ) ) : ?>
22
  <span class="sui-notice sui-notice-info"><p>
23
- <?php esc_html_e( 'You can open your current spread sheet', Forminator::DOMAIN ); ?>
24
  <a target="_blank" href="https://docs.google.com/spreadsheets/d/<?php echo esc_attr( $vars['file_id'] ); ?>"><?php esc_html_e( 'here', Forminator::DOMAIN ); ?></a>.</p></span>
25
  <?php endif; ?>
26
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
@@ -43,19 +43,24 @@ foreach ( $template_vars as $key => $val ) {
43
  <?php esc_html_e( 'It is optional, if Drive Folder ID omitted / empty, new spreadsheet will be created in your Google Drive home / root folder.', Forminator::DOMAIN ); ?>
44
  </li>
45
  <li>
46
- <?php echo sprintf(
47
- __( 'Go to your %1$s.', Forminator::DOMAIN ),
48
- '<a href="https://drive.google.com/#my-drive" target="_blank">' . __( 'Drive account', Forminator::DOMAIN ) . '</a>'
49
- ); //wpcs: xss ok?>
 
 
50
  <?php esc_html_e( 'Navigate to or create a new directory where you want to new spreadsheet created. Make sure you are viewing the destination directory.', Forminator::DOMAIN ); ?>
51
  </li>
52
  <li>
53
- <?php echo sprintf(
54
- __( 'The URL for the directory will be something similar to %1$s. The Directory ID would be the last part after %2$s, which is %3$s in this case.', Forminator::DOMAIN ),
 
55
  '<em>https://drive.google.com/#folders/0B6GD66ctHXdCOWZKNDRIRGJJXS3</em>',
56
  '<em>/#folders/</em>',
57
  '<strong>0B6GD66ctHXdCOWZKNDRIRGJJXS3</strong>'
58
- ); //wpcs: xss ok?></li>
 
 
59
  </ol>
60
  </span>
61
  </div>
20
  <p><?php esc_html_e( 'Create Spreadsheet that will be used to send submissions.', Forminator::DOMAIN ); ?></p>
21
  <?php if ( ! empty( $vars['file_id'] ) ) : ?>
22
  <span class="sui-notice sui-notice-info"><p>
23
+ <?php esc_html_e( 'You can open your current spread sheet', Forminator::DOMAIN ); ?>
24
  <a target="_blank" href="https://docs.google.com/spreadsheets/d/<?php echo esc_attr( $vars['file_id'] ); ?>"><?php esc_html_e( 'here', Forminator::DOMAIN ); ?></a>.</p></span>
25
  <?php endif; ?>
26
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
43
  <?php esc_html_e( 'It is optional, if Drive Folder ID omitted / empty, new spreadsheet will be created in your Google Drive home / root folder.', Forminator::DOMAIN ); ?>
44
  </li>
45
  <li>
46
+ <?php
47
+ echo sprintf(/* translators: ... */
48
+ esc_html__( 'Go to your %1$s.', Forminator::DOMAIN ),
49
+ '<a href="https://drive.google.com/#my-drive" target="_blank">' . esc_html__( 'Drive account', Forminator::DOMAIN ) . '</a>'
50
+ ); //phpcs:ignore Standard.Category.SniffName.ErrorCode
51
+ ?>
52
  <?php esc_html_e( 'Navigate to or create a new directory where you want to new spreadsheet created. Make sure you are viewing the destination directory.', Forminator::DOMAIN ); ?>
53
  </li>
54
  <li>
55
+ <?php
56
+ echo sprintf(/* translators: ... */
57
+ esc_html__( 'The URL for the directory will be something similar to %1$s. The Directory ID would be the last part after %2$s, which is %3$s in this case.', Forminator::DOMAIN ),
58
  '<em>https://drive.google.com/#folders/0B6GD66ctHXdCOWZKNDRIRGJJXS3</em>',
59
  '<em>/#folders/</em>',
60
  '<strong>0B6GD66ctHXdCOWZKNDRIRGJJXS3</strong>'
61
+ ); //phpcs:ignore Standard.Category.SniffName.ErrorCode
62
+ ?>
63
+ </li>
64
  </ol>
65
  </span>
66
  </div>
addons/pro/googlesheet/views/sections/authorize.php CHANGED
@@ -14,17 +14,18 @@ foreach ( $template_vars as $key => $val ) {
14
 
15
  <div class="sui-box">
16
  <div class="sui-box-header">
17
- <h2 class="sui-box-title"><?php esc_html_e( "Authorizing Google SpreadSheets", Forminator::DOMAIN ); ?></h2>
18
  </div>
19
  <div class="sui-box-body">
20
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
21
  <span class="sui-notice sui-notice-error"><p><?php echo esc_html( $vars['error_message'] ); ?></p></span>
22
- <?php elseif ( $vars['is_close'] ): ?>
23
  <span class="sui-notice sui-notice-success">
24
  <p>
25
  <?php
26
- esc_html_e( 'Successfully authorized Google SpreadSheets, you can go back to integration settings.',
27
- Forminator::DOMAIN
 
28
  );
29
  ?>
30
  </p>
@@ -41,7 +42,7 @@ foreach ( $template_vars as $key => $val ) {
41
  <script>
42
  (function ($) {
43
  $(document).ready(function (e) {
44
- <?php if ($vars['is_close']): ?>
45
  setTimeout(function () {
46
  window.close();
47
  }, 3000);
14
 
15
  <div class="sui-box">
16
  <div class="sui-box-header">
17
+ <h2 class="sui-box-title"><?php esc_html_e( 'Authorizing Google SpreadSheets', Forminator::DOMAIN ); ?></h2>
18
  </div>
19
  <div class="sui-box-body">
20
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
21
  <span class="sui-notice sui-notice-error"><p><?php echo esc_html( $vars['error_message'] ); ?></p></span>
22
+ <?php elseif ( $vars['is_close'] ) : ?>
23
  <span class="sui-notice sui-notice-success">
24
  <p>
25
  <?php
26
+ esc_html_e(
27
+ 'Successfully authorized Google SpreadSheets, you can go back to integration settings.',
28
+ Forminator::DOMAIN
29
  );
30
  ?>
31
  </p>
42
  <script>
43
  (function ($) {
44
  $(document).ready(function (e) {
45
+ <?php if ( $vars['is_close'] ) : ?>
46
  setTimeout(function () {
47
  window.close();
48
  }, 3000);
addons/pro/googlesheet/views/settings/authorize.php CHANGED
@@ -12,7 +12,7 @@ foreach ( $template_vars as $key => $val ) {
12
 
13
  <div class="integration-header">
14
 
15
- <h3 id="dialogTitle2" class="sui-box-title"><?php echo esc_html( sprintf( __( 'Connect %1$s', Forminator::DOMAIN ), 'Google Sheets' ) ); ?></h3>
16
 
17
  <?php if ( ! empty( $vars['token'] ) ) : ?>
18
  <span class="sui-description" style="margin-top: 20px;"><?php esc_html_e( 'Click button below to re-authorize.', Forminator::DOMAIN ); ?></span>
12
 
13
  <div class="integration-header">
14
 
15
+ <h3 id="dialogTitle2" class="sui-box-title"><?php echo esc_html( sprintf( /* translators: ... */ __( 'Connect %1$s', Forminator::DOMAIN ), 'Google Sheets' ) ); ?></h3>
16
 
17
  <?php if ( ! empty( $vars['token'] ) ) : ?>
18
  <span class="sui-description" style="margin-top: 20px;"><?php esc_html_e( 'Click button below to re-authorize.', Forminator::DOMAIN ); ?></span>
addons/pro/googlesheet/views/settings/setup-client.php CHANGED
@@ -17,7 +17,7 @@ foreach ( $template_vars as $key => $val ) {
17
 
18
  <div class="integration-header">
19
 
20
- <h3 class="sui-box-title" id="dialogTitle2"><?php echo esc_html( sprintf( __( 'Setup %1$s Client', Forminator::DOMAIN ), 'Google Sheets' ) ); ?></h3>
21
 
22
  <?php if ( ! empty( $vars['token'] ) ) : ?>
23
  <span class="sui-description" style="margin-top: 20px;"><?php esc_html_e( 'Your Google Sheets account is already authorized. Edit info below to re-authorize.', Forminator::DOMAIN ); ?></span>
@@ -84,23 +84,86 @@ foreach ( $template_vars as $key => $val ) {
84
 
85
  <ol class="instructions" id="clientid-instructions">
86
 
87
- <li><?php echo sprintf( __( 'Go to the %1$s', Forminator::DOMAIN ), '<a href="https://console.developers.google.com/cloud-resource-manager" target="_blank">' . __( 'Google API Console', Forminator::DOMAIN ) . '</a>' ); //wpcs: xss ok ?></li>
 
 
 
 
 
 
 
 
88
 
89
  <li><?php esc_html_e( 'Select an existing project or create a new one. If creating a new project, you will need to enter a name, but the ID is not important and can be ignored.', Forminator::DOMAIN ); ?></li>
90
 
91
- <li><?php echo sprintf( __( 'Once the Project creation is completed go to the %1$s. Here you need to enable the %2$s and %3$s.', Forminator::DOMAIN ), '<strong>' . __( 'API Manager', Forminator::DOMAIN ) . '</strong>', '<strong>' . __( 'Google Drive API', Forminator::DOMAIN ) . '</strong>', '<strong>' . __( 'Google Sheets API', Forminator::DOMAIN ) . '</strong>' ); //wpcs: xss ok ?></li>
 
 
 
 
 
 
 
 
 
 
 
 
92
 
93
- <li><?php echo sprintf( __( 'Next, go to the %1$s section.', Forminator::DOMAIN ), '<strong>' . __( 'API Manager &gt; Credentials', Forminator::DOMAIN ) . '</strong>' ); //wpcs: xss ok ?>
 
 
 
 
 
 
 
 
94
 
95
  <ol style="margin-top: 15px; margin-bottom: 15px;">
96
 
97
- <li><?php echo sprintf( __( 'Click %1$s.', Forminator::DOMAIN ), '<strong>' . __( 'Create Credentials &gt; OAuth 2.0 client ID', Forminator::DOMAIN ) . '</strong>' ); //wpcs: xss ok ?></li>
98
-
99
- <li><?php echo sprintf( __( 'In the popup select the %1$s as %2$s.', Forminator::DOMAIN ), '<strong>' . __( 'Application Type', Forminator::DOMAIN ) . '</strong>', '<strong>' . __( 'Web application', Forminator::DOMAIN ) . '</strong>' ); //wpcs: xss ok ?></li>
100
-
101
- <li><?php echo sprintf( __( 'In the field %1$s, put this value below:', Forminator::DOMAIN ), '<strong>' . __( 'Authorized redirect URI', Forminator::DOMAIN ) . '</strong>' ); //wpcs: xss ok ?><pre class="sui-code-snippet"><?php echo esc_html( ! empty( $vars['redirect_url'] ) ? $vars['redirect_url'] : '' ); ?></pre></li>
102
-
103
- <li><?php echo sprintf( __( 'Then click the %1$s button.', Forminator::DOMAIN ), '<strong>' . __( 'Create Client ID', Forminator::DOMAIN ) . '</strong>' ); //wpcs: xss ok ?></li>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
104
 
105
  </ol>
106
 
17
 
18
  <div class="integration-header">
19
 
20
+ <h3 class="sui-box-title" id="dialogTitle2"><?php echo esc_html( sprintf( /* translators: ... */ __( 'Setup %1$s Client', Forminator::DOMAIN ), 'Google Sheets' ) ); ?></h3>
21
 
22
  <?php if ( ! empty( $vars['token'] ) ) : ?>
23
  <span class="sui-description" style="margin-top: 20px;"><?php esc_html_e( 'Your Google Sheets account is already authorized. Edit info below to re-authorize.', Forminator::DOMAIN ); ?></span>
84
 
85
  <ol class="instructions" id="clientid-instructions">
86
 
87
+ <li>
88
+ <?php
89
+ echo sprintf(/* translators: ... */
90
+ esc_html__( 'Go to the %1$sGoogle API Console%2$s', Forminator::DOMAIN ),
91
+ '<a href="https://console.developers.google.com/cloud-resource-manager" target="_blank">',
92
+ '</a>'
93
+ ); //phpcs:ignore Standard.Category.SniffName.ErrorCode
94
+ ?>
95
+ </li>
96
 
97
  <li><?php esc_html_e( 'Select an existing project or create a new one. If creating a new project, you will need to enter a name, but the ID is not important and can be ignored.', Forminator::DOMAIN ); ?></li>
98
 
99
+ <li>
100
+ <?php
101
+ echo sprintf(/* translators: ... */
102
+ esc_html__( 'Once the Project creation is completed go to the %1$sAPI Manager%2$s. Here you need to enable the %3$sGoogle Drive API%4$s and %5$sGoogle Sheets API%6$s.', Forminator::DOMAIN ),
103
+ '<strong>',
104
+ '</strong>',
105
+ '<strong>',
106
+ '</strong>',
107
+ '<strong>',
108
+ '</strong>'
109
+ ); //phpcs:ignore Standard.Category.SniffName.ErrorCode
110
+ ?>
111
+ </li>
112
 
113
+ <li>
114
+ <?php
115
+ echo sprintf(/* translators: ... */
116
+ esc_html__( 'Next, go to the %1$sAPI Manager &gt; Credentials%2$s section.', Forminator::DOMAIN ),
117
+ '<strong>',
118
+ '</strong>'
119
+ ); //phpcs:ignore Standard.Category.SniffName.ErrorCode
120
+ ?>
121
+ </li>
122
 
123
  <ol style="margin-top: 15px; margin-bottom: 15px;">
124
 
125
+ <li>
126
+ <?php
127
+ echo sprintf(/* translators: ... */
128
+ esc_html__( 'Click %1$sCreate Credentials &gt; OAuth 2.0 client ID%2$s.', Forminator::DOMAIN ),
129
+ '<strong>',
130
+ '</strong>'
131
+ ); //phpcs:ignore Standard.Category.SniffName.ErrorCode
132
+ ?>
133
+ </li>
134
+
135
+ <li>
136
+ <?php
137
+ echo sprintf(/* translators: ... */
138
+ esc_html__( 'In the popup select the %1$sApplication Type%2$s as %3$sWeb application%4$s.', Forminator::DOMAIN ),
139
+ '<strong>',
140
+ '</strong>',
141
+ '<strong>',
142
+ '</strong>'
143
+ ); //phpcs:ignore Standard.Category.SniffName.ErrorCode
144
+ ?>
145
+ </li>
146
+
147
+ <li>
148
+ <?php
149
+ echo sprintf(/* translators: ... */
150
+ esc_html__( 'In the field %1$sAuthorized redirect URI%2$s, put this value below:', Forminator::DOMAIN ),
151
+ '<strong>',
152
+ '</strong>'
153
+ ); //phpcs:ignore Standard.Category.SniffName.ErrorCode
154
+ ?>
155
+ <pre class="sui-code-snippet"><?php echo esc_html( ! empty( $vars['redirect_url'] ) ? $vars['redirect_url'] : '' ); ?></pre>
156
+ </li>
157
+
158
+ <li>
159
+ <?php
160
+ echo sprintf(/* translators: ... */
161
+ esc_html__( 'Then click the %1$sCreate Client ID%2$s button, then navigate to %1$sAPI Keys%2$s section.', Forminator::DOMAIN ),
162
+ '<strong>',
163
+ '</strong>'
164
+ ); //phpcs:ignore Standard.Category.SniffName.ErrorCode
165
+ ?>
166
+ </li>
167
 
168
  </ol>
169
 
addons/pro/googlesheet/views/settings/success-authorize.php CHANGED
@@ -1,6 +1,6 @@
1
  <div class="integration-header">
2
  <h3 class="sui-box-title" id="dialogTitle2">
3
- <?php echo esc_html( sprintf( __( '%1$s Added', Forminator::DOMAIN ), 'Google Sheets' ) ); ?>
4
  </h3>
5
  <p><?php esc_html_e( 'You can now go to your forms and assign them to this integration', Forminator::DOMAIN ); ?></p>
6
  </div>
1
  <div class="integration-header">
2
  <h3 class="sui-box-title" id="dialogTitle2">
3
+ <?php echo esc_html( sprintf( /* translators: ... */ __( '%1$s Added', Forminator::DOMAIN ), 'Google Sheets' ) ); ?>
4
  </h3>
5
  <p><?php esc_html_e( 'You can now go to your forms and assign them to this integration', Forminator::DOMAIN ); ?></p>
6
  </div>
addons/pro/googlesheet/views/settings/wait-authorize.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  // defaults
3
  $vars = array(
4
- 'auth_url' => '',
5
- 'token' => '',
6
  );
7
  /** @var array $template_vars */
8
  foreach ( $template_vars as $key => $val ) {
1
  <?php
2
  // defaults
3
  $vars = array(
4
+ 'auth_url' => '',
5
+ 'token' => '',
6
  );
7
  /** @var array $template_vars */
8
  foreach ( $template_vars as $key => $val ) {
addons/pro/gutenberg/gutenberg.php CHANGED
@@ -41,7 +41,7 @@ class Forminator_Gutenberg {
41
  */
42
  public static function init() {
43
  // Load abstracts
44
- require_once dirname( __FILE__ ) . '/library/abstract-class-block.php';
45
 
46
  // Load blocks
47
  self::load_blocks();
@@ -54,7 +54,7 @@ class Forminator_Gutenberg {
54
  */
55
  public static function load_blocks() {
56
  // Load blocks automatically
57
- foreach ( glob( plugin_dir_path( __FILE__ ) . 'library/blocks/class-block-*.php' ) as $file ) {
58
  require_once $file;
59
  }
60
  }
41
  */
42
  public static function init() {
43
  // Load abstracts
44
+ require_once dirname( __FILE__ ) . '/library/class-forminator-gfblock-abstract.php';
45
 
46
  // Load blocks
47
  self::load_blocks();
54
  */
55
  public static function load_blocks() {
56
  // Load blocks automatically
57
+ foreach ( glob( plugin_dir_path( __FILE__ ) . 'library/blocks/class-forminator-gfblock-*.php' ) as $file ) {
58
  require_once $file;
59
  }
60
  }
addons/pro/gutenberg/library/blocks/{class-block-forms.php → class-forminator-gfblock-forms.php} RENAMED
@@ -66,7 +66,7 @@ class Forminator_GFBlock_Forms extends Forminator_GFBlock_Abstract {
66
  * @return string
67
  */
68
  public function preview_block( $properties = array() ) {
69
- if( isset( $properties['module_id'] ) ) {
70
  $html = forminator_form( $properties['module_id'], true, false );
71
 
72
  return $html;
@@ -96,9 +96,9 @@ class Forminator_GFBlock_Forms extends Forminator_GFBlock_Abstract {
96
  'forminator-block-forms',
97
  'frmnt_form_data',
98
  array(
99
- 'forms' => $this->get_forms(),
100
  'admin_url' => admin_url( 'admin.php' ),
101
- 'l10n' => $this->localize()
102
  )
103
  );
104
 
@@ -129,9 +129,9 @@ class Forminator_GFBlock_Forms extends Forminator_GFBlock_Abstract {
129
  false
130
  );
131
 
132
- wp_enqueue_script('jquery-ui-datepicker');
133
  $style_src = forminator_plugin_url() . 'assets/css/intlTelInput.min.css';
134
- $style_version = "4.0.3";
135
 
136
  $script_src = forminator_plugin_url() . 'assets/js/library/intlTelInput.min.js';
137
  $script_version = FORMINATOR_VERSION;
@@ -176,10 +176,10 @@ class Forminator_GFBlock_Forms extends Forminator_GFBlock_Abstract {
176
 
177
  public function localize() {
178
  return array(
179
- 'choose_form' => esc_html__( 'Choose Form', Forminator::DOMAIN ),
180
- 'customize_form' => esc_html__( 'Customize form', Forminator::DOMAIN ),
181
- 'rendering' => esc_html__( 'Rendering...', Forminator::DOMAIN ),
182
- 'form' => esc_html__( 'Form', Forminator::DOMAIN ),
183
  'form_description' => esc_html__( 'Embed and display your custom Forminator forms in this block', Forminator::DOMAIN ),
184
  );
185
  }
66
  * @return string
67
  */
68
  public function preview_block( $properties = array() ) {
69
+ if ( isset( $properties['module_id'] ) ) {
70
  $html = forminator_form( $properties['module_id'], true, false );
71
 
72
  return $html;
96
  'forminator-block-forms',
97
  'frmnt_form_data',
98
  array(
99
+ 'forms' => $this->get_forms(),
100
  'admin_url' => admin_url( 'admin.php' ),
101
+ 'l10n' => $this->localize(),
102
  )
103
  );
104
 
129
  false
130
  );
131
 
132
+ wp_enqueue_script( 'jquery-ui-datepicker' );
133
  $style_src = forminator_plugin_url() . 'assets/css/intlTelInput.min.css';
134
+ $style_version = '4.0.3';
135
 
136
  $script_src = forminator_plugin_url() . 'assets/js/library/intlTelInput.min.js';
137
  $script_version = FORMINATOR_VERSION;
176
 
177
  public function localize() {
178
  return array(
179
+ 'choose_form' => esc_html__( 'Choose Form', Forminator::DOMAIN ),
180
+ 'customize_form' => esc_html__( 'Customize form', Forminator::DOMAIN ),
181
+ 'rendering' => esc_html__( 'Rendering...', Forminator::DOMAIN ),
182
+ 'form' => esc_html__( 'Form', Forminator::DOMAIN ),
183
  'form_description' => esc_html__( 'Embed and display your custom Forminator forms in this block', Forminator::DOMAIN ),
184
  );
185
  }
addons/pro/gutenberg/library/blocks/{class-block-polls.php → class-forminator-gfblock-polls.php} RENAMED
@@ -66,7 +66,7 @@ class Forminator_GFBlock_Polls extends Forminator_GFBlock_Abstract {
66
  * @return string
67
  */
68
  public function preview_block( $properties = array() ) {
69
- if( isset( $properties['module_id'] ) ) {
70
  return forminator_poll( $properties['module_id'], true, false );
71
  }
72
 
@@ -94,9 +94,9 @@ class Forminator_GFBlock_Polls extends Forminator_GFBlock_Abstract {
94
  'forminator-block-polls',
95
  'frmnt_poll_data',
96
  array(
97
- 'forms' => $this->get_forms(),
98
  'admin_url' => admin_url( 'admin.php' ),
99
- 'l10n' => $this->localize()
100
  )
101
  );
102
 
@@ -111,12 +111,12 @@ class Forminator_GFBlock_Polls extends Forminator_GFBlock_Abstract {
111
  * @return array
112
  */
113
  public function get_forms() {
114
- $forms = Forminator_API::get_polls( null, 1, 100, Forminator_Custom_Form_Model::STATUS_PUBLISH );
115
  $form_list = array(
116
  array(
117
  'value' => '',
118
- 'label' => esc_html__( 'Select a poll', Forminator::DOMAIN )
119
- )
120
  );
121
 
122
  if ( is_array( $forms ) ) {
@@ -139,10 +139,10 @@ class Forminator_GFBlock_Polls extends Forminator_GFBlock_Abstract {
139
 
140
  public function localize() {
141
  return array(
142
- 'choose_poll' => esc_html__( 'Choose Poll', Forminator::DOMAIN ),
143
- 'customize_poll' => esc_html__( 'Customize poll', Forminator::DOMAIN ),
144
- 'rendering' => esc_html__( 'Rendering...', Forminator::DOMAIN ),
145
- 'poll' => esc_html__( 'Poll', Forminator::DOMAIN ),
146
  'poll_description' => esc_html__( 'Embed and display your Forminator polls in this block', Forminator::DOMAIN ),
147
  );
148
  }
66
  * @return string
67
  */
68
  public function preview_block( $properties = array() ) {
69
+ if ( isset( $properties['module_id'] ) ) {
70
  return forminator_poll( $properties['module_id'], true, false );
71
  }
72
 
94
  'forminator-block-polls',
95
  'frmnt_poll_data',
96
  array(
97
+ 'forms' => $this->get_forms(),
98
  'admin_url' => admin_url( 'admin.php' ),
99
+ 'l10n' => $this->localize(),
100
  )
101
  );
102
 
111
  * @return array
112
  */
113
  public function get_forms() {
114
+ $forms = Forminator_API::get_polls( null, 1, 100, Forminator_Custom_Form_Model::STATUS_PUBLISH );
115
  $form_list = array(
116
  array(
117
  'value' => '',
118
+ 'label' => esc_html__( 'Select a poll', Forminator::DOMAIN ),
119
+ ),
120
  );
121
 
122
  if ( is_array( $forms ) ) {
139
 
140
  public function localize() {
141
  return array(
142
+ 'choose_poll' => esc_html__( 'Choose Poll', Forminator::DOMAIN ),
143
+ 'customize_poll' => esc_html__( 'Customize poll', Forminator::DOMAIN ),
144
+ 'rendering' => esc_html__( 'Rendering...', Forminator::DOMAIN ),
145
+ 'poll' => esc_html__( 'Poll', Forminator::DOMAIN ),
146
  'poll_description' => esc_html__( 'Embed and display your Forminator polls in this block', Forminator::DOMAIN ),
147
  );
148
  }
addons/pro/gutenberg/library/blocks/{class-block-quizzes.php → class-forminator-gfblock-quizzes.php} RENAMED
@@ -66,7 +66,7 @@ class Forminator_GFBlock_Quizzes extends Forminator_GFBlock_Abstract {
66
  * @return string
67
  */
68
  public function preview_block( $properties = array() ) {
69
- if( isset( $properties['module_id'] ) ) {
70
  return forminator_quiz( $properties['module_id'], true, false );
71
  }
72
 
@@ -94,9 +94,9 @@ class Forminator_GFBlock_Quizzes extends Forminator_GFBlock_Abstract {
94
  'forminator-block-quizzes',
95
  'frmnt_quiz_data',
96
  array(
97
- 'forms' => $this->get_forms(),
98
  'admin_url' => admin_url( 'admin.php' ),
99
- 'l10n' => $this->localize()
100
  )
101
  );
102
 
@@ -126,11 +126,11 @@ class Forminator_GFBlock_Quizzes extends Forminator_GFBlock_Abstract {
126
  // Get quiz
127
  $quiz = Forminator_API::get_quiz( $id );
128
 
129
- if( $markup ) {
130
  wp_send_json_success(
131
  array(
132
  'markup' => trim( $markup ),
133
- 'type' => $quiz->quiz_type
134
  )
135
  );
136
  } else {
@@ -150,8 +150,8 @@ class Forminator_GFBlock_Quizzes extends Forminator_GFBlock_Abstract {
150
  $form_list = array(
151
  array(
152
  'value' => '',
153
- 'label' => esc_html__( 'Select a quiz', Forminator::DOMAIN )
154
- )
155
  );
156
 
157
  if ( is_array( $forms ) ) {
@@ -174,10 +174,10 @@ class Forminator_GFBlock_Quizzes extends Forminator_GFBlock_Abstract {
174
 
175
  public function localize() {
176
  return array(
177
- 'choose_quiz' => esc_html__( 'Choose Quiz', Forminator::DOMAIN ),
178
- 'customize_quiz' => esc_html__( 'Customize quiz', Forminator::DOMAIN ),
179
- 'rendering' => esc_html__( 'Rendering...', Forminator::DOMAIN ),
180
- 'quiz' => esc_html__( 'Quiz', Forminator::DOMAIN ),
181
  'quiz_description' => esc_html__( 'Embed and display your Forminator quiz in this block', Forminator::DOMAIN ),
182
  );
183
  }
66
  * @return string
67
  */
68
  public function preview_block( $properties = array() ) {
69
+ if ( isset( $properties['module_id'] ) ) {
70
  return forminator_quiz( $properties['module_id'], true, false );
71
  }
72
 
94
  'forminator-block-quizzes',
95
  'frmnt_quiz_data',
96
  array(
97
+ 'forms' => $this->get_forms(),
98
  'admin_url' => admin_url( 'admin.php' ),
99
+ 'l10n' => $this->localize(),
100
  )
101
  );
102
 
126
  // Get quiz
127
  $quiz = Forminator_API::get_quiz( $id );
128
 
129
+ if ( $markup ) {
130
  wp_send_json_success(
131
  array(
132
  'markup' => trim( $markup ),
133
+ 'type' => $quiz->quiz_type,
134
  )
135
  );
136
  } else {
150
  $form_list = array(
151
  array(
152
  'value' => '',
153
+ 'label' => esc_html__( 'Select a quiz', Forminator::DOMAIN ),
154
+ ),
155
  );
156
 
157
  if ( is_array( $forms ) ) {
174
 
175
  public function localize() {
176
  return array(
177
+ 'choose_quiz' => esc_html__( 'Choose Quiz', Forminator::DOMAIN ),
178
+ 'customize_quiz' => esc_html__( 'Customize quiz', Forminator::DOMAIN ),
179
+ 'rendering' => esc_html__( 'Rendering...', Forminator::DOMAIN ),
180
+ 'quiz' => esc_html__( 'Quiz', Forminator::DOMAIN ),
181
  'quiz_description' => esc_html__( 'Embed and display your Forminator quiz in this block', Forminator::DOMAIN ),
182
  );
183
  }
addons/pro/gutenberg/library/{abstract-class-block.php → class-forminator-gfblock-abstract.php} RENAMED
@@ -50,9 +50,12 @@ abstract class Forminator_GFBlock_Abstract {
50
  * @since 1.0 Gutenberg Addon
51
  */
52
  public function register_block() {
53
- register_block_type( 'forminator/' . $this->get_slug(), array(
54
- 'render_callback' => array( $this, 'render_block' ),
55
- ) );
 
 
 
56
  }
57
 
58
  /**
@@ -61,19 +64,23 @@ abstract class Forminator_GFBlock_Abstract {
61
  * @since 1.0 Gutenberg Addon
62
  */
63
  public function block_preview_api() {
64
- register_rest_route( 'forminator/v1', '/preview/' . $this->get_slug(), array(
 
 
65
  array(
66
- 'methods' => WP_REST_Server::READABLE,
67
- 'callback' => array( $this, 'preview_block_markup' ),
68
- 'args' => array(
69
- 'module_id' => array(
70
- 'description' => __( 'Module ID' ),
71
- 'type' => 'integer',
72
- 'required' => true,
73
- )
 
 
74
  ),
75
- ),
76
- ) );
77
  }
78
 
79
  /**
@@ -92,7 +99,7 @@ abstract class Forminator_GFBlock_Abstract {
92
  // Get block preview markup
93
  $markup = $this->preview_block( $properties );
94
 
95
- if( $markup ) {
96
  wp_send_json_success( array( 'markup' => trim( $markup ) ) );
97
  } else {
98
  wp_send_json_error();
50
  * @since 1.0 Gutenberg Addon
51
  */
52
  public function register_block() {
53
+ register_block_type(
54
+ 'forminator/' . $this->get_slug(),
55
+ array(
56
+ 'render_callback' => array( $this, 'render_block' ),
57
+ )
58
+ );
59
  }
60
 
61
  /**
64
  * @since 1.0 Gutenberg Addon
65
  */
66
  public function block_preview_api() {
67
+ register_rest_route(
68
+ 'forminator/v1',
69
+ '/preview/' . $this->get_slug(),
70
  array(
71
+ array(
72
+ 'methods' => WP_REST_Server::READABLE,
73
+ 'callback' => array( $this, 'preview_block_markup' ),
74
+ 'args' => array(
75
+ 'module_id' => array(
76
+ 'description' => __( 'Module ID' ),
77
+ 'type' => 'integer',
78
+ 'required' => true,
79
+ ),
80
+ ),
81
  ),
82
+ )
83
+ );
84
  }
85
 
86
  /**
99
  // Get block preview markup
100
  $markup = $this->preview_block( $properties );
101
 
102
+ if ( $markup ) {
103
  wp_send_json_success( array( 'markup' => trim( $markup ) ) );
104
  } else {
105
  wp_send_json_error();
addons/pro/gutenberg/webpack.common.js CHANGED
@@ -15,7 +15,7 @@ module.exports = {
15
  test: /.js$/,
16
  loader: 'babel-loader',
17
  exclude: /node_modules/,
18
- },
19
  ],
20
  },
21
  };
15
  test: /.js$/,
16
  loader: 'babel-loader',
17
  exclude: /node_modules/,
18
+ },
19
  ],
20
  },
21
  };
addons/pro/gutenberg/webpack.dev.js CHANGED
@@ -1,6 +1,9 @@
1
- const merge = require( 'webpack-merge' );
2
  const common = require( './webpack.common.js' );
3
 
4
- module.exports = merge( common, {
5
- devtool: 'inline-source-map',
6
- } );
 
 
 
1
+ const merge = require( 'webpack-merge' );
2
  const common = require( './webpack.common.js' );
3
 
4
+ module.exports = merge(
5
+ common,
6
+ {
7
+ devtool: 'inline-source-map',
8
+ }
9
+ );
addons/pro/gutenberg/webpack.prod.js CHANGED
@@ -1,12 +1,17 @@
1
- const merge = require( 'webpack-merge' );
2
- const common = require( './webpack.common.js' );
3
  const webpack = require( 'webpack' );
4
 
5
- module.exports = merge( common, {
6
- plugins: [
7
- new webpack.DefinePlugin( {
8
- 'process.env.NODE_ENV': JSON.stringify( 'production' ),
9
- } ),
 
 
 
 
10
  new webpack.optimize.UglifyJsPlugin(),
11
  ],
12
- } );
 
1
+ const merge = require( 'webpack-merge' );
2
+ const common = require( './webpack.common.js' );
3
  const webpack = require( 'webpack' );
4
 
5
+ module.exports = merge(
6
+ common,
7
+ {
8
+ plugins: [
9
+ new webpack.DefinePlugin(
10
+ {
11
+ 'process.env.NODE_ENV': JSON.stringify( 'production' ),
12
+ }
13
+ ),
14
  new webpack.optimize.UglifyJsPlugin(),
15
  ],
16
+ }
17
+ );
addons/pro/hubspot/{forminator-addon-hubspot-exception.php → class-forminator-addon-hubspot-exception.php} RENAMED
File without changes
addons/pro/hubspot/{forminator-addon-hubspot-form-hooks.php → class-forminator-addon-hubspot-form-hooks.php} RENAMED
@@ -97,7 +97,6 @@ class Forminator_Addon_Hubspot_Form_Hooks extends Forminator_Addon_Form_Hooks_Ab
97
  'value' => $this->get_status_on_contact_sync( $key, $submitted_data, $addon_setting_value, $form_entry_fields ),
98
  );
99
  }
100
-
101
  }
102
 
103
  $entry_fields = $data;
@@ -154,6 +153,7 @@ class Forminator_Addon_Hubspot_Form_Hooks extends Forminator_Addon_Form_Hooks_Ab
154
 
155
  $email_element_id = $connection_settings['fields_map']['email'];
156
  if ( ! isset( $submitted_data[ $email_element_id ] ) || empty( $submitted_data[ $email_element_id ] ) ) {
 
157
  throw new Forminator_Addon_Hubspot_Exception( __( 'Email on element %1$s not found or not filled on submitted data.', Forminator::DOMAIN ) );
158
  }
159
  $email = $submitted_data[ $email_element_id ];
@@ -192,7 +192,6 @@ class Forminator_Addon_Hubspot_Form_Hooks extends Forminator_Addon_Form_Hooks_Ab
192
  $args[ $common_field ] = $element_value;
193
  unset( $element_value ); // unset for next loop
194
  }
195
-
196
  }
197
  // processed
198
  unset( $fields_map[ $common_field ] );
@@ -241,8 +240,8 @@ class Forminator_Addon_Hubspot_Form_Hooks extends Forminator_Addon_Form_Hooks_Ab
241
  $ticket['ticket_name'] = $ticket_name;
242
  $ticket_description = forminator_addon_replace_custom_vars( $connection_settings['ticket_description'], $submitted_data, $this->custom_form, $form_entry_fields, false );
243
  $ticket['ticket_description'] = $ticket_description;
244
- $supported_file = isset( $submitted_data[ $connection_settings['supported_file'] ] ) ? $submitted_data[ $connection_settings['supported_file'] ] : array();
245
- $ticket['supported_file'] = ! empty( $supported_file['file_url'] ) ? $supported_file['file_url'] : '';
246
 
247
  $object_id = $api->create_ticket( $ticket );
248
 
@@ -320,7 +319,6 @@ class Forminator_Addon_Hubspot_Form_Hooks extends Forminator_Addon_Form_Hooks_Ab
320
  $form_settings_instance
321
  );
322
 
323
-
324
  $addon_meta_datas = $addon_meta_data;
325
  if ( ! isset( $addon_meta_data[0] ) || ! is_array( $addon_meta_data[0] ) ) {
326
  return array();
@@ -376,7 +374,6 @@ class Forminator_Addon_Hubspot_Form_Hooks extends Forminator_Addon_Form_Hooks_Ab
376
  'value' => '',
377
  );
378
 
379
-
380
  $sub_entries = array();
381
  if ( isset( $status['connection_name'] ) ) {
382
  $sub_entries[] = array(
@@ -424,7 +421,6 @@ class Forminator_Addon_Hubspot_Form_Hooks extends Forminator_Addon_Form_Hooks_Ab
424
  }
425
  }
426
 
427
-
428
  $additional_entry_item['sub_entries'] = $sub_entries;
429
 
430
  // return single array
@@ -655,7 +651,6 @@ class Forminator_Addon_Hubspot_Form_Hooks extends Forminator_Addon_Form_Hooks_Ab
655
  }
656
  }
657
  }
658
-
659
  }
660
  }
661
 
97
  'value' => $this->get_status_on_contact_sync( $key, $submitted_data, $addon_setting_value, $form_entry_fields ),
98
  );
99
  }
 
100
  }
101
 
102
  $entry_fields = $data;
153
 
154
  $email_element_id = $connection_settings['fields_map']['email'];
155
  if ( ! isset( $submitted_data[ $email_element_id ] ) || empty( $submitted_data[ $email_element_id ] ) ) {
156
+ /* translators: ... */
157
  throw new Forminator_Addon_Hubspot_Exception( __( 'Email on element %1$s not found or not filled on submitted data.', Forminator::DOMAIN ) );
158
  }
159
  $email = $submitted_data[ $email_element_id ];
192
  $args[ $common_field ] = $element_value;
193
  unset( $element_value ); // unset for next loop
194
  }
 
195
  }
196
  // processed
197
  unset( $fields_map[ $common_field ] );
240
  $ticket['ticket_name'] = $ticket_name;
241
  $ticket_description = forminator_addon_replace_custom_vars( $connection_settings['ticket_description'], $submitted_data, $this->custom_form, $form_entry_fields, false );
242
  $ticket['ticket_description'] = $ticket_description;
243
+ $supported_file = isset( $submitted_data[ $connection_settings['supported_file'] ] ) ? $submitted_data[ $connection_settings['supported_file'] ] : array();
244
+ $ticket['supported_file'] = ! empty( $supported_file['file_url'] ) ? $supported_file['file_url'] : '';
245
 
246
  $object_id = $api->create_ticket( $ticket );
247
 
319
  $form_settings_instance
320
  );
321
 
 
322
  $addon_meta_datas = $addon_meta_data;
323
  if ( ! isset( $addon_meta_data[0] ) || ! is_array( $addon_meta_data[0] ) ) {
324
  return array();
374
  'value' => '',
375
  );
376
 
 
377
  $sub_entries = array();
378
  if ( isset( $status['connection_name'] ) ) {
379
  $sub_entries[] = array(
421
  }
422
  }
423
 
 
424
  $additional_entry_item['sub_entries'] = $sub_entries;
425
 
426
  // return single array
651
  }
652
  }
653
  }
 
654
  }
655
  }
656
 
addons/pro/hubspot/{forminator-addon-hubspot-form-settings-exception.php → class-forminator-addon-hubspot-form-settings-exception.php} RENAMED
File without changes
addons/pro/hubspot/{forminator-addon-hubspot-form-settings.php → class-forminator-addon-hubspot-form-settings.php} RENAMED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/forminator-addon-hubspot-form-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Hubspot_Form_Settings
@@ -141,7 +141,7 @@ class Forminator_Addon_Hubspot_Form_Settings extends Forminator_Addon_Form_Setti
141
  if ( isset( $fields_map[ $key ] ) && ! empty( $fields_map[ $key ] ) ) {
142
  $element_id = $fields_map[ $key ];
143
  if ( ! in_array( $element_id, $forminator_field_element_ids, true ) ) {
144
- $input_exceptions->add_input_exception(
145
  sprintf( __( 'Please assign valid field for %s', Forminator::DOMAIN ), $title ),
146
  $key . '_error'
147
  );
@@ -180,15 +180,16 @@ class Forminator_Addon_Hubspot_Form_Settings extends Forminator_Addon_Form_Setti
180
 
181
  $buttons = array();
182
  if ( $this->map_fields_is_completed( array( 'multi_id' => $multi_id ) ) ) {
183
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
 
184
  'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
185
  esc_html__( 'Deactivate this HubSpot Integration from this Form.', Forminator::DOMAIN )
186
  );
187
  }
188
 
189
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
190
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Continue', Forminator::DOMAIN ), 'forminator-addon-next' ) .
191
- '</div>';
192
 
193
  return array(
194
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -413,7 +414,8 @@ class Forminator_Addon_Hubspot_Form_Settings extends Forminator_Addon_Form_Setti
413
 
414
  $buttons = array();
415
  if ( $this->create_ticket_is_completed( array( 'multi_id' => $multi_id ) ) ) {
416
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
 
417
  'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
418
  esc_html__( 'Deactivate this HubSpot Integration from this Form.', Forminator::DOMAIN )
419
  );
@@ -489,7 +491,6 @@ class Forminator_Addon_Hubspot_Form_Settings extends Forminator_Addon_Form_Setti
489
  return false;
490
  }
491
 
492
-
493
  return true;
494
  }
495
 
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-hubspot-form-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Hubspot_Form_Settings
141
  if ( isset( $fields_map[ $key ] ) && ! empty( $fields_map[ $key ] ) ) {
142
  $element_id = $fields_map[ $key ];
143
  if ( ! in_array( $element_id, $forminator_field_element_ids, true ) ) {
144
+ $input_exceptions->add_input_exception(/* translators: ... */
145
  sprintf( __( 'Please assign valid field for %s', Forminator::DOMAIN ), $title ),
146
  $key . '_error'
147
  );
180
 
181
  $buttons = array();
182
  if ( $this->map_fields_is_completed( array( 'multi_id' => $multi_id ) ) ) {
183
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
184
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
185
  'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
186
  esc_html__( 'Deactivate this HubSpot Integration from this Form.', Forminator::DOMAIN )
187
  );
188
  }
189
 
190
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
191
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Continue', Forminator::DOMAIN ), 'forminator-addon-next' ) .
192
+ '</div>';
193
 
194
  return array(
195
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
414
 
415
  $buttons = array();
416
  if ( $this->create_ticket_is_completed( array( 'multi_id' => $multi_id ) ) ) {
417
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
418
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
419
  'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
420
  esc_html__( 'Deactivate this HubSpot Integration from this Form.', Forminator::DOMAIN )
421
  );
491
  return false;
492
  }
493
 
 
494
  return true;
495
  }
496
 
addons/pro/hubspot/{forminator-addon-hubspot.php → class-forminator-addon-hubspot.php} RENAMED
@@ -1,7 +1,7 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/forminator-addon-hubspot-exception.php';
4
- require_once dirname( __FILE__ ) . '/lib/class-wp-hubspot-api.php';
5
 
6
  /**
7
  * Class Forminator_Addon_Hubspot
@@ -16,24 +16,24 @@ final class Forminator_Addon_Hubspot extends Forminator_Addon_Abstract {
16
  */
17
  private static $_instance = null;
18
 
19
- protected $_slug = 'hubspot';
20
- protected $_version = FORMINATOR_ADDON_HUBSPOT_VERSION;
21
  protected $_min_forminator_version = '1.1';
22
- protected $_short_title = 'HubSpot';
23
- protected $_title = 'HubSpot';
24
- protected $_url = 'https://premium.wpmudev.org';
25
- protected $_full_path = __FILE__;
26
 
27
  protected $_form_settings = 'Forminator_Addon_Hubspot_Form_Settings';
28
- protected $_form_hooks = 'Forminator_Addon_Hubspot_Form_Hooks';
29
 
30
  private $_token = '';
31
 
32
  private $_auth_error_message = '';
33
 
34
- const TARGET_TYPE_PUBLIC_CHANNEL = 'public_channel';
35
  const TARGET_TYPE_PRIVATE_CHANNEL = 'private_channel';
36
- const TARGET_TYPE_DIRECT_MESSAGE = 'direct_message';
37
 
38
  /**
39
  * @var null|Forminator_Addon_Hubspot_Wp_Api
@@ -63,10 +63,15 @@ final class Forminator_Addon_Hubspot extends Forminator_Addon_Abstract {
63
  $this->_image = forminator_addon_hubspot_assets_url() . 'img/hubspot.png';
64
  $this->_image_x2 = forminator_addon_hubspot_assets_url() . 'img/hubspot@2x.png';
65
 
66
- add_filter( 'forminator_addon_hubspot_api_request_headers', array(
67
- $this,
68
- 'default_filter_api_headers'
69
- ), 1, 4 );
 
 
 
 
 
70
  add_action( 'wp_ajax_forminator_hubspot_support_request', array( $this, 'hubspot_support_request' ) );
71
  }
72
 
@@ -106,7 +111,6 @@ final class Forminator_Addon_Hubspot extends Forminator_Addon_Abstract {
106
  if ( isset( $setting_values['token'] ) && ! empty( $setting_values['token'] ) ) {
107
  $is_connected = true;
108
  }
109
-
110
  } catch ( Forminator_Addon_Hubspot_Exception $e ) {
111
  $is_connected = false;
112
  }
@@ -249,13 +253,21 @@ final class Forminator_Addon_Hubspot extends Forminator_Addon_Abstract {
249
  $buttons['disconnect'] = array(
250
  'markup' => self::get_button_markup( esc_html__( 'DISCONNECT', Forminator::DOMAIN ), 'sui-button-ghost forminator-addon-disconnect' ),
251
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
252
  }
253
- $setting_values = $this->get_settings_values();
254
- $template_params = array(
255
- 'auth_url' => $this->get_auth_url(),
256
- 'token' => $this->_token,
257
- 'user' => isset( $setting_values['user'] ) ? $setting_values['user'] : '',
258
- );
259
 
260
  return array(
261
  'html' => self::get_template( $template, $template_params ),
@@ -497,11 +509,10 @@ final class Forminator_Addon_Hubspot extends Forminator_Addon_Abstract {
497
  // catch all exception
498
  $template_params['error_message'] = $e->getMessage();
499
  }
500
-
501
  } else {
502
  $template_params['error_message'] = __( 'Failed to get authorization code.', Forminator::DOMAIN );
503
  // todo : translate $query_args[error]
504
- $settings['auth_error_message'] = $template_params['error_messiage'];
505
  $this->save_settings_values( $settings );
506
  $template_params['is_close'] = true;
507
  }
@@ -584,7 +595,7 @@ final class Forminator_Addon_Hubspot extends Forminator_Addon_Abstract {
584
  */
585
  public function hubspot_support_request() {
586
  $status = array();
587
- $pipeline = sanitize_text_field( $_POST['value'] );
588
  try {
589
  $api = $this->get_api();
590
  $pipeline_request = $api->get_pipeline();
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-hubspot-exception.php';
4
+ require_once dirname( __FILE__ ) . '/lib/class-forminator-addon-hubspot-wp-api.php';
5
 
6
  /**
7
  * Class Forminator_Addon_Hubspot
16
  */
17
  private static $_instance = null;
18
 
19
+ protected $_slug = 'hubspot';
20
+ protected $_version = FORMINATOR_ADDON_HUBSPOT_VERSION;
21
  protected $_min_forminator_version = '1.1';
22
+ protected $_short_title = 'HubSpot';
23
+ protected $_title = 'HubSpot';
24
+ protected $_url = 'https://premium.wpmudev.org';
25
+ protected $_full_path = __FILE__;
26
 
27
  protected $_form_settings = 'Forminator_Addon_Hubspot_Form_Settings';
28
+ protected $_form_hooks = 'Forminator_Addon_Hubspot_Form_Hooks';
29
 
30
  private $_token = '';
31
 
32
  private $_auth_error_message = '';
33
 
34
+ const TARGET_TYPE_PUBLIC_CHANNEL = 'public_channel';
35
  const TARGET_TYPE_PRIVATE_CHANNEL = 'private_channel';
36
+ const TARGET_TYPE_DIRECT_MESSAGE = 'direct_message';
37
 
38
  /**
39
  * @var null|Forminator_Addon_Hubspot_Wp_Api
63
  $this->_image = forminator_addon_hubspot_assets_url() . 'img/hubspot.png';
64
  $this->_image_x2 = forminator_addon_hubspot_assets_url() . 'img/hubspot@2x.png';
65
 
66
+ add_filter(
67
+ 'forminator_addon_hubspot_api_request_headers',
68
+ array(
69
+ $this,
70
+ 'default_filter_api_headers',
71
+ ),
72
+ 1,
73
+ 4
74
+ );
75
  add_action( 'wp_ajax_forminator_hubspot_support_request', array( $this, 'hubspot_support_request' ) );
76
  }
77
 
111
  if ( isset( $setting_values['token'] ) && ! empty( $setting_values['token'] ) ) {
112
  $is_connected = true;
113
  }
 
114
  } catch ( Forminator_Addon_Hubspot_Exception $e ) {
115
  $is_connected = false;
116
  }
253
  $buttons['disconnect'] = array(
254
  'markup' => self::get_button_markup( esc_html__( 'DISCONNECT', Forminator::DOMAIN ), 'sui-button-ghost forminator-addon-disconnect' ),
255
  );
256
+
257
+ $setting_values = $this->get_settings_values();
258
+ $template_params = array(
259
+ 'auth_url' => $this->get_auth_url(),
260
+ 'token' => $this->_token,
261
+ 'user' => isset( $setting_values['user'] ) ? $setting_values['user'] : '',
262
+ );
263
+ } else {
264
+ // Force save empty settings
265
+ $template_params = array(
266
+ 'auth_url' => $this->get_auth_url(),
267
+ 'token' => '',
268
+ 'user' => '',
269
+ );
270
  }
 
 
 
 
 
 
271
 
272
  return array(
273
  'html' => self::get_template( $template, $template_params ),
509
  // catch all exception
510
  $template_params['error_message'] = $e->getMessage();
511
  }
 
512
  } else {
513
  $template_params['error_message'] = __( 'Failed to get authorization code.', Forminator::DOMAIN );
514
  // todo : translate $query_args[error]
515
+ $settings['auth_error_message'] = $template_params['error_message'];
516
  $this->save_settings_values( $settings );
517
  $template_params['is_close'] = true;
518
  }
595
  */
596
  public function hubspot_support_request() {
597
  $status = array();
598
+ $pipeline = sanitize_text_field( $_POST['value'] );// phpcs:ignore -- data without nonce verification
599
  try {
600
  $api = $this->get_api();
601
  $pipeline_request = $api->get_pipeline();
addons/pro/hubspot/hubspot.php CHANGED
@@ -23,8 +23,8 @@ function forminator_addon_hubspot_assets_url() {
23
  return trailingslashit( forminator_addon_hubspot_url() . 'assets' );
24
  }
25
 
26
- require_once dirname( __FILE__ ) . '/forminator-addon-hubspot.php';
27
- require_once dirname( __FILE__ ) . '/forminator-addon-hubspot-form-settings.php';
28
- require_once dirname( __FILE__ ) . '/forminator-addon-hubspot-form-hooks.php';
29
  //Direct Load
30
  Forminator_Addon_Loader::get_instance()->register( 'Forminator_Addon_HubSpot' );
23
  return trailingslashit( forminator_addon_hubspot_url() . 'assets' );
24
  }
25
 
26
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-hubspot.php';
27
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-hubspot-form-settings.php';
28
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-hubspot-form-hooks.php';
29
  //Direct Load
30
  Forminator_Addon_Loader::get_instance()->register( 'Forminator_Addon_HubSpot' );
addons/pro/hubspot/lib/{class-wp-hubspot-api-exception.php → class-forminator-addon-hubspot-wp-api-exception.php} RENAMED
File without changes
addons/pro/hubspot/lib/{class-wp-hubspot-api-not-found-exception.php → class-forminator-addon-hubspot-wp-api-not-found-exception.php} RENAMED
File without changes
addons/pro/hubspot/lib/{class-wp-hubspot-api.php → class-forminator-addon-hubspot-wp-api.php} RENAMED
@@ -1,7 +1,7 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/class-wp-hubspot-api-exception.php';
4
- require_once dirname( __FILE__ ) . '/class-wp-hubspot-api-not-found-exception.php';
5
 
6
  /**
7
  * Class Forminator_Addon_Hubspot_Wp_Api
@@ -9,9 +9,9 @@ require_once dirname( __FILE__ ) . '/class-wp-hubspot-api-not-found-exception.ph
9
  class Forminator_Addon_Hubspot_Wp_Api {
10
 
11
  const AUTHORIZE_URL = 'https://app.hubspot.com/oauth/authorize';
12
- const CLIENT_ID = 'd4c00215-5579-414c-a831-95be7218239b';
13
  const CLIENT_SECRET = '502c3a75-38fe-4a1f-9fc4-ff2464b639bf';
14
- const HAPIKEY = '7cf97e44-4037-4708-a032-0955318e0e76';
15
 
16
  public static $oauth_scopes = 'contacts%20tickets';
17
 
@@ -135,7 +135,7 @@ class Forminator_Addon_Hubspot_Wp_Api {
135
  * @throws Forminator_Addon_Hubspot_Wp_Api_Exception
136
  * @throws Forminator_Addon_Hubspot_Wp_Api_Not_Found_Exception
137
  */
138
- private function _request( $verb = 'GET', $path, $args = array(), $access_token, $json = false ) {
139
  // Adding extra user agent for wp remote request
140
  add_filter( 'http_headers_useragent', array( $this, 'filter_user_agent' ) );
141
 
@@ -156,7 +156,7 @@ class Forminator_Addon_Hubspot_Wp_Api {
156
  $this->_last_url_request = $url;
157
 
158
  $headers = array(
159
- 'Authorization' => 'Bearer ' . ( ! empty( $access_token ) ? $access_token : self::HAPIKEY )
160
  );
161
 
162
  if ( 'GET' !== $verb && ! $json ) {
@@ -194,7 +194,7 @@ class Forminator_Addon_Hubspot_Wp_Api {
194
  */
195
  $args = apply_filters( 'forminator_addon_hubspot_api_request_data', $request_data, $verb, $path );
196
  if ( $json ) {
197
- $args = json_encode( $args );
198
  }
199
  if ( 'GET' === $verb ) {
200
  $url .= ( '?' . http_build_query( $args ) );
@@ -223,9 +223,10 @@ class Forminator_Addon_Hubspot_Wp_Api {
223
  }
224
 
225
  if ( 404 === $status_code ) {
 
226
  throw new Forminator_Addon_Hubspot_Wp_Api_Not_Found_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
227
  }
228
- // /* translators: ... */
229
  throw new Forminator_Addon_Hubspot_Wp_Api_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
230
  }
231
  }
@@ -240,6 +241,7 @@ class Forminator_Addon_Hubspot_Wp_Api {
240
  if ( isset( $res->error ) ) {
241
  $msg = $res->error;
242
  }
 
243
  throw new Forminator_Addon_Hubspot_Wp_Api_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
244
  }
245
  }
@@ -413,7 +415,7 @@ class Forminator_Addon_Hubspot_Wp_Api {
413
  );
414
  $args = array_merge( $default_args, $args );
415
 
416
- $response = $this->_request(
417
  'POST',
418
  'oauth/v1/token',
419
  $args,
@@ -450,7 +452,7 @@ class Forminator_Addon_Hubspot_Wp_Api {
450
  $access_token = $this->refresh_access_token();
451
  }
452
 
453
- return $this->_request( $verb, $end_point, $query_args, $access_token, $json );
454
  }
455
 
456
  /**
@@ -586,7 +588,7 @@ class Forminator_Addon_Hubspot_Wp_Api {
586
  'content' => $ticket['ticket_description'],
587
  'hs_pipeline' => $ticket['pipeline_id'],
588
  'hs_pipeline_stage' => $ticket['status_id'],
589
- 'hs_file_upload' => $ticket['supported_file'],
590
  );
591
  $i = 0;
592
  foreach ( $request as $key => $value ) {
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-hubspot-wp-api-exception.php';
4
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-hubspot-wp-api-not-found-exception.php';
5
 
6
  /**
7
  * Class Forminator_Addon_Hubspot_Wp_Api
9
  class Forminator_Addon_Hubspot_Wp_Api {
10
 
11
  const AUTHORIZE_URL = 'https://app.hubspot.com/oauth/authorize';
12
+ const CLIENT_ID = 'd4c00215-5579-414c-a831-95be7218239b';
13
  const CLIENT_SECRET = '502c3a75-38fe-4a1f-9fc4-ff2464b639bf';
14
+ const HAPIKEY = '7cf97e44-4037-4708-a032-0955318e0e76';
15
 
16
  public static $oauth_scopes = 'contacts%20tickets';
17
 
135
  * @throws Forminator_Addon_Hubspot_Wp_Api_Exception
136
  * @throws Forminator_Addon_Hubspot_Wp_Api_Not_Found_Exception
137
  */
138
+ private function request( $verb = 'GET', $path, $args = array(), $access_token, $json = false ) {
139
  // Adding extra user agent for wp remote request
140
  add_filter( 'http_headers_useragent', array( $this, 'filter_user_agent' ) );
141
 
156
  $this->_last_url_request = $url;
157
 
158
  $headers = array(
159
+ 'Authorization' => 'Bearer ' . ( ! empty( $access_token ) ? $access_token : self::HAPIKEY ),
160
  );
161
 
162
  if ( 'GET' !== $verb && ! $json ) {
194
  */
195
  $args = apply_filters( 'forminator_addon_hubspot_api_request_data', $request_data, $verb, $path );
196
  if ( $json ) {
197
+ $args = wp_json_encode( $args );
198
  }
199
  if ( 'GET' === $verb ) {
200
  $url .= ( '?' . http_build_query( $args ) );
223
  }
224
 
225
  if ( 404 === $status_code ) {
226
+ /* translators: ... */
227
  throw new Forminator_Addon_Hubspot_Wp_Api_Not_Found_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
228
  }
229
+ /* translators: ... */
230
  throw new Forminator_Addon_Hubspot_Wp_Api_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
231
  }
232
  }
241
  if ( isset( $res->error ) ) {
242
  $msg = $res->error;
243
  }
244
+ /* translators: ... */
245
  throw new Forminator_Addon_Hubspot_Wp_Api_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
246
  }
247
  }
415
  );
416
  $args = array_merge( $default_args, $args );
417
 
418
+ $response = $this->request(
419
  'POST',
420
  'oauth/v1/token',
421
  $args,
452
  $access_token = $this->refresh_access_token();
453
  }
454
 
455
+ return $this->request( $verb, $end_point, $query_args, $access_token, $json );
456
  }
457
 
458
  /**
588
  'content' => $ticket['ticket_description'],
589
  'hs_pipeline' => $ticket['pipeline_id'],
590
  'hs_pipeline_stage' => $ticket['status_id'],
591
+ 'hs_file_upload' => $ticket['supported_file'],
592
  );
593
  $i = 0;
594
  foreach ( $request as $key => $value ) {
addons/pro/hubspot/views/form-settings/create-contact.php CHANGED
@@ -95,62 +95,65 @@ if ( empty( $vars['lists'] ) ) {
95
 
96
  <tbody>
97
 
98
- <?php
99
- if ( ! empty( $vars['fields'] ) ) :
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
 
101
- foreach ( $vars['fields'] as $key => $field_title ) : ?>
102
 
103
- <tr>
104
 
105
- <td>
106
- <?php echo esc_html( $field_title ); ?>
107
- <?php if ( 'email' === $key ) : ?>
108
- <span class="integrations-required-field">*</span>
109
- <?php endif; ?>
110
- </td>
111
-
112
- <td>
113
- <?php
114
- $forminator_fields = $vars['form_fields'];
115
- if ( 'email' === $key ) {
116
- $forminator_fields = $vars['email_fields'];
117
- }
118
- $current_error = '';
119
- $current_selected = '';
120
- if ( isset( $vars[ $key . '_error' ] ) && ! empty( $vars[ $key . '_error' ] ) ) {
121
- $current_error = $vars[ $key . '_error' ];
122
- }
123
- if ( isset( $vars['fields_map'][ $key ] ) && ! empty( $vars['fields_map'][ $key ] ) ) {
124
- $current_selected = $vars['fields_map'][ $key ];
125
- }
126
- ?>
127
- <div class="sui-form-field <?php echo esc_attr( ! empty( $current_error ) ? 'sui-form-field-error' : '' ); ?>"<?php echo ( ! empty( $current_error ) ) ? ' style="padding-top: 5px;"' : ''; ?>>
128
- <select class="sui-select" name="fields_map[<?php echo esc_attr( $key ); ?>]">
129
- <option value=""><?php esc_html_e( 'None', Forminator::DOMAIN ); ?></option>
130
- <?php
131
- if ( ! empty( $forminator_fields ) ) :
132
- foreach ( $forminator_fields as $forminator_field ) : ?>
133
- <option value="<?php echo esc_attr( $forminator_field['element_id'] ); ?>"
134
- <?php selected( $current_selected, $forminator_field['element_id'] ); ?>>
135
- <?php echo esc_html( $forminator_field['field_label'] . ' | ' . $forminator_field['element_id'] ); ?>
136
- </option>
137
- <?php endforeach;
138
- endif;
139
- ?>
140
- </select>
141
- <?php if ( ! empty( $current_error ) ) : ?>
142
- <span class="sui-error-message"
143
- style="margin-top: 5px; margin-bottom: 5px;"><?php echo esc_html( $current_error ); ?></span>
144
- <?php endif; ?>
145
- </div>
146
- </td>
147
-
148
- </tr>
149
-
150
- <?php endforeach;
151
-
152
- endif;
153
- ?>
154
 
155
  </tbody>
156
 
95
 
96
  <tbody>
97
 
98
+ <?php
99
+ if ( ! empty( $vars['fields'] ) ) :
100
+
101
+ foreach ( $vars['fields'] as $key => $field_title ) :
102
+ ?>
103
+
104
+ <tr>
105
+
106
+ <td>
107
+ <?php echo esc_html( $field_title ); ?>
108
+ <?php if ( 'email' === $key ) : ?>
109
+ <span class="integrations-required-field">*</span>
110
+ <?php endif; ?>
111
+ </td>
112
+
113
+ <td>
114
+ <?php
115
+ $forminator_fields = $vars['form_fields'];
116
+ if ( 'email' === $key ) {
117
+ $forminator_fields = $vars['email_fields'];
118
+ }
119
+ $current_error = '';
120
+ $current_selected = '';
121
+ if ( isset( $vars[ $key . '_error' ] ) && ! empty( $vars[ $key . '_error' ] ) ) {
122
+ $current_error = $vars[ $key . '_error' ];
123
+ }
124
+ if ( isset( $vars['fields_map'][ $key ] ) && ! empty( $vars['fields_map'][ $key ] ) ) {
125
+ $current_selected = $vars['fields_map'][ $key ];
126
+ }
127
+ ?>
128
+ <div class="sui-form-field <?php echo esc_attr( ! empty( $current_error ) ? 'sui-form-field-error' : '' ); ?>"<?php echo ( ! empty( $current_error ) ) ? ' style="padding-top: 5px;"' : ''; ?>>
129
+ <select class="sui-select" name="fields_map[<?php echo esc_attr( $key ); ?>]">
130
+ <option value=""><?php esc_html_e( 'None', Forminator::DOMAIN ); ?></option>
131
+ <?php
132
+ if ( ! empty( $forminator_fields ) ) :
133
+ foreach ( $forminator_fields as $forminator_field ) :
134
+ ?>
135
+ <option value="<?php echo esc_attr( $forminator_field['element_id'] ); ?>"
136
+ <?php selected( $current_selected, $forminator_field['element_id'] ); ?>>
137
+ <?php echo esc_html( $forminator_field['field_label'] . ' | ' . $forminator_field['element_id'] ); ?>
138
+ </option>
139
+ <?php
140
+ endforeach;
141
+ endif;
142
+ ?>
143
+ </select>
144
+ <?php if ( ! empty( $current_error ) ) : ?>
145
+ <span class="sui-error-message"
146
+ style="margin-top: 5px; margin-bottom: 5px;"><?php echo esc_html( $current_error ); ?></span>
147
+ <?php endif; ?>
148
+ </div>
149
+ </td>
150
 
151
+ <tr>
152
 
153
+ <?php endforeach;
154
 
155
+ endif;
156
+ ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
157
 
158
  </tbody>
159
 
addons/pro/hubspot/views/form-settings/create-ticket.php CHANGED
@@ -313,7 +313,7 @@ foreach ( $template_vars as $key => $val ) {
313
  $('#hubspot-support-request').on('change', function () {
314
  let value = $(this).val();
315
  $.ajax({
316
- url: '<?php echo forminator_ajax_url(); ?>',
317
  type: "POST",
318
  data: {
319
  action: "forminator_hubspot_support_request",
313
  $('#hubspot-support-request').on('change', function () {
314
  let value = $(this).val();
315
  $.ajax({
316
+ url: '<?php echo forminator_ajax_url();// phpcs:ignore ?>',
317
  type: "POST",
318
  data: {
319
  action: "forminator_hubspot_support_request",
addons/pro/hubspot/views/sections/authorize.php CHANGED
@@ -13,12 +13,12 @@ foreach ( $template_vars as $key => $val ) {
13
  <div id="forminator-integrations" class="wpmudev-settings--box">
14
  <div class="sui-box">
15
  <div class="sui-box-header">
16
- <h2 class="sui-box-title"><?php esc_html_e( "Authorizing HubSpot", Forminator::DOMAIN ); ?></h2>
17
  </div>
18
  <div class="sui-box-body">
19
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
20
  <span class="sui-notice sui-notice-error"><p><?php echo esc_html( $vars['error_message'] ); ?></p></span>
21
- <?php elseif ( $vars['is_close'] ): ?>
22
  <span class="sui-notice sui-notice-success">
23
  <p>
24
  <?php esc_html_e( 'Successfully authorized HubSpot, you can go back to integration settings.', Forminator::DOMAIN ); ?>
@@ -36,7 +36,7 @@ foreach ( $template_vars as $key => $val ) {
36
  <script>
37
  (function ($) {
38
  $(document).ready(function (e) {
39
- <?php if ($vars['is_close']): ?>
40
  setTimeout(function () {
41
  window.close();
42
  }, 3000);
13
  <div id="forminator-integrations" class="wpmudev-settings--box">
14
  <div class="sui-box">
15
  <div class="sui-box-header">
16
+ <h2 class="sui-box-title"><?php esc_html_e( 'Authorizing HubSpot', Forminator::DOMAIN ); ?></h2>
17
  </div>
18
  <div class="sui-box-body">
19
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
20
  <span class="sui-notice sui-notice-error"><p><?php echo esc_html( $vars['error_message'] ); ?></p></span>
21
+ <?php elseif ( $vars['is_close'] ) : ?>
22
  <span class="sui-notice sui-notice-success">
23
  <p>
24
  <?php esc_html_e( 'Successfully authorized HubSpot, you can go back to integration settings.', Forminator::DOMAIN ); ?>
36
  <script>
37
  (function ($) {
38
  $(document).ready(function (e) {
39
+ <?php if ( $vars['is_close'] ) : ?>
40
  setTimeout(function () {
41
  window.close();
42
  }, 3000);
addons/pro/hubspot/views/settings/authorize.php CHANGED
@@ -3,7 +3,7 @@
3
  $vars = array(
4
  'auth_url' => '',
5
  'token' => '',
6
- 'user' => '',
7
  );
8
 
9
  /** @var array $template_vars */
@@ -13,17 +13,27 @@ foreach ( $template_vars as $key => $val ) {
13
 
14
  <div class="integration-header">
15
 
16
- <h3 id="dialogTitle2" class="sui-box-title"><?php echo esc_html( sprintf( __( 'Connect %1$s', Forminator::DOMAIN ), 'HubSpot' ) ); ?></h3>
 
 
 
 
 
17
 
18
  <?php if ( ! empty( $vars['token'] ) ) : ?>
19
 
20
  <span class="sui-description" style="color: #666666; margin-top: 20px; line-height: 22px;"><?php esc_html_e( 'You are already connected to the HubSpot. You can disconnect your HubSpot Integration (if you need to) using the button below.', Forminator::DOMAIN ); ?></span>
21
 
22
  <div class="sui-notice sui-notice-success" style="margin-bottom: -30px;">
23
- <p><?php echo sprintf( esc_html__( 'You are connected to %2$s%1$s%3$s.', Forminator::DOMAIN ), esc_html( $vars['user'] ), '<strong>', '</strong>' ); ?></p>
 
 
 
 
 
24
  </div>
25
 
26
- <?php else : ?>
27
 
28
  <span class="sui-description" style="color: #666666; margin-top: 20px; line-height: 22px;"><?php esc_html_e( "Authenticate your HubSpot account using the button below. Note that you'll be taken to the HubSpot website to grant access to Forminator and then redirected back.", Forminator::DOMAIN ); ?></span>
29
 
3
  $vars = array(
4
  'auth_url' => '',
5
  'token' => '',
6
+ 'user' => '',
7
  );
8
 
9
  /** @var array $template_vars */
13
 
14
  <div class="integration-header">
15
 
16
+ <h3 id="dialogTitle2" class="sui-box-title">
17
+ <?php
18
+ /* translators: ... */
19
+ echo esc_html( sprintf( __( 'Connect %1$s', Forminator::DOMAIN ), 'HubSpot' ) );
20
+ ?>
21
+ </h3>
22
 
23
  <?php if ( ! empty( $vars['token'] ) ) : ?>
24
 
25
  <span class="sui-description" style="color: #666666; margin-top: 20px; line-height: 22px;"><?php esc_html_e( 'You are already connected to the HubSpot. You can disconnect your HubSpot Integration (if you need to) using the button below.', Forminator::DOMAIN ); ?></span>
26
 
27
  <div class="sui-notice sui-notice-success" style="margin-bottom: -30px;">
28
+ <p>
29
+ <?php
30
+ /* translators: ... */
31
+ echo sprintf( esc_html__( 'You are connected to %2$s%1$s%3$s.', Forminator::DOMAIN ), esc_html( $vars['user'] ), '<strong>', '</strong>' );
32
+ ?>
33
+ </p>
34
  </div>
35
 
36
+ <?php else : ?>
37
 
38
  <span class="sui-description" style="color: #666666; margin-top: 20px; line-height: 22px;"><?php esc_html_e( "Authenticate your HubSpot account using the button below. Note that you'll be taken to the HubSpot website to grant access to Forminator and then redirected back.", Forminator::DOMAIN ); ?></span>
39
 
addons/pro/hubspot/views/settings/error-authorize.php CHANGED
@@ -12,7 +12,12 @@ foreach ( $template_vars as $key => $val ) {
12
 
13
  <div class="integration-header">
14
 
15
- <h3 id="dialogTitle2" class="sui-box-title"><?php echo esc_html( sprintf( __( 'Connect %1$s', Forminator::DOMAIN ), 'HubSpot' ) ); ?></h3>
 
 
 
 
 
16
 
17
  <span class="sui-description" style="color: #666666; margin-top: 20px; line-height: 22px;"><?php esc_html_e( "Authenticate your HubSpot account using the button below. Note that you'll be taken to the HubSpot website to grant access to Forminator and then redirected back.", Forminator::DOMAIN ); ?></span>
18
 
12
 
13
  <div class="integration-header">
14
 
15
+ <h3 id="dialogTitle2" class="sui-box-title">
16
+ <?php
17
+ /* translators: ... */
18
+ echo esc_html( sprintf( __( 'Connect %1$s', Forminator::DOMAIN ), 'HubSpot' ) );
19
+ ?>
20
+ </h3>
21
 
22
  <span class="sui-description" style="color: #666666; margin-top: 20px; line-height: 22px;"><?php esc_html_e( "Authenticate your HubSpot account using the button below. Note that you'll be taken to the HubSpot website to grant access to Forminator and then redirected back.", Forminator::DOMAIN ); ?></span>
23
 
addons/pro/hubspot/views/settings/success-authorize.php CHANGED
@@ -1,7 +1,12 @@
1
  <div class="integration-header">
2
 
3
- <h3 class="sui-box-title" id="dialogTitle2"><?php echo esc_html( sprintf( __( '%1$s Connected', Forminator::DOMAIN ), 'HubSpot' ) ); ?></h3>
 
 
 
 
 
4
 
5
- <span class="sui-description" style="color: #666666; margin-top: 20px; margin-bottom: -30px; line-height: 22px;"><?php esc_html_e( 'Awesome! You are connected to HubSpot. You can now go to your forms and activate HubSpot integration to collect data.', Forminator::DOMAIN ); ?></span>
6
 
7
  </div>
1
  <div class="integration-header">
2
 
3
+ <h3 class="sui-box-title" id="dialogTitle2">
4
+ <?php
5
+ /* translators: ... */
6
+ echo esc_html( sprintf( __( '%1$s Connected', Forminator::DOMAIN ), 'HubSpot' ) );
7
+ ?>
8
+ </h3>
9
 
10
+ <span class="sui-description" style="color: #666666; margin-top: 20px; margin-bottom: -30px; line-height: 22px;"><?php esc_html_e( 'Awesome! You are connected to HubSpot. You can now go to your forms and activate HubSpot integration to collect data.', Forminator::DOMAIN ); ?></span>
11
 
12
  </div>
addons/pro/hubspot/views/settings/wait-authorize.php CHANGED
@@ -11,11 +11,21 @@ foreach ( $template_vars as $key => $val ) {
11
 
12
  <div class="integration-header">
13
 
14
- <h3 id="dialogTitle2" class="sui-box-title"><?php echo esc_html( sprintf( __( 'Connect %1$s', Forminator::DOMAIN ), 'HubSpot' ) ); ?></h3>
 
 
 
 
 
15
 
16
  <?php if ( ! empty( $vars['token'] ) ) : ?>
17
  <div class="sui-notice sui-notice-success" style="margin-bottom: -30px;">
18
- <p><?php echo esc_html( sprintf( __( 'Your %1$s account is already authorized.', Forminator::DOMAIN ), 'HubSpot' ) ); ?></p>
 
 
 
 
 
19
  </div>
20
  <?php else : ?>
21
  <span class="sui-description" style="color: #666666; margin-top: 20px; line-height: 22px;"><?php esc_html_e( "Authenticate your HubSpot account using the button below. Note that you'll be taken to the HubSpot website to grant access to Forminator and then redirected back.", Forminator::DOMAIN ); ?></span>
@@ -28,9 +38,9 @@ foreach ( $template_vars as $key => $val ) {
28
  <div class="sui-block-content-center" style="margin-top: -10px; margin-bottom: -20px;">
29
 
30
  <button type="button" class="sui-button">
31
- <span class="sui-loading-text"><?php esc_html_e( 'Authenticating', Forminator::DOMAIN ); ?></span>
32
- <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
33
- </button>
34
 
35
  </div>
36
 
11
 
12
  <div class="integration-header">
13
 
14
+ <h3 id="dialogTitle2" class="sui-box-title">
15
+ <?php
16
+ /* translators: ... */
17
+ echo esc_html( sprintf( __( 'Connect %1$s', Forminator::DOMAIN ), 'HubSpot' ) );
18
+ ?>
19
+ </h3>
20
 
21
  <?php if ( ! empty( $vars['token'] ) ) : ?>
22
  <div class="sui-notice sui-notice-success" style="margin-bottom: -30px;">
23
+ <p>
24
+ <?php
25
+ /* translators: ... */
26
+ echo esc_html( sprintf( __( 'Your %1$s account is already authorized.', Forminator::DOMAIN ), 'HubSpot' ) );
27
+ ?>
28
+ </p>
29
  </div>
30
  <?php else : ?>
31
  <span class="sui-description" style="color: #666666; margin-top: 20px; line-height: 22px;"><?php esc_html_e( "Authenticate your HubSpot account using the button below. Note that you'll be taken to the HubSpot website to grant access to Forminator and then redirected back.", Forminator::DOMAIN ); ?></span>
38
  <div class="sui-block-content-center" style="margin-top: -10px; margin-bottom: -20px;">
39
 
40
  <button type="button" class="sui-button">
41
+ <span class="sui-loading-text"><?php esc_html_e( 'Authenticating', Forminator::DOMAIN ); ?></span>
42
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
43
+ </button>
44
 
45
  </div>
46
 
addons/pro/mailchimp/{forminator-addon-mailchimp-exception.php → class-forminator-addon-mailchimp-exception.php} RENAMED
File without changes
addons/pro/mailchimp/{forminator-addon-mailchimp-form-hooks.php → class-forminator-addon-mailchimp-form-hooks.php} RENAMED
@@ -46,7 +46,7 @@ class Forminator_Addon_Mailchimp_Form_Hooks extends Forminator_Addon_Form_Hooks_
46
  */
47
  public function __construct( Forminator_Addon_Abstract $addon, $form_id ) {
48
  parent::__construct( $addon, $form_id );
49
- $this->_submit_form_error_message = __( 'MailChimp failed to process submitted data. Please check your form and try again', Forminator::DOMAIN );
50
  }
51
 
52
  /**
@@ -96,8 +96,8 @@ class Forminator_Addon_Mailchimp_Form_Hooks extends Forminator_Addon_Form_Hooks_
96
  $input_name = 'forminator-addon-mailchimp-gdpr';
97
  $input_id = $input_name . '-' . $uniq_id;
98
  $html = '<div class="forminator-row"><div id="field-' . $input_id . '" class="forminator-col forminator-col-12"><div class="forminator-field">';
99
- $html .= '<div class="forminator-field--label"><label class="forminator-label" id="forminator-label-' . $input_id . '">' . esc_html_e( 'MailChimp GDPR', Forminator::DOMAIN )
100
- . '</label></div>';
101
  // matching checkbox with design
102
  $form_settings = $this->form_settings_instance->get_form_settings();
103
  $design_class = self::get_form_setting_value_as( $form_settings, 'form-style', 'default', 'string' );
@@ -134,7 +134,7 @@ class Forminator_Addon_Mailchimp_Form_Hooks extends Forminator_Addon_Form_Hooks_
134
  }
135
  $html .= '</div></div></div>';
136
 
137
- echo wp_kses_post( $html );// WPCS: XSS ok. html output intended
138
  }
139
 
140
  /**
@@ -169,7 +169,7 @@ class Forminator_Addon_Mailchimp_Form_Hooks extends Forminator_Addon_Form_Hooks_
169
  */
170
  private static function convert_value_to( $value, $type ) {
171
  switch ( $type ) {
172
- case 'array' :
173
  if ( ! is_array( $value ) ) {
174
  if ( is_scalar( $value ) ) {
175
  return array( $value );
@@ -179,15 +179,15 @@ class Forminator_Addon_Mailchimp_Form_Hooks extends Forminator_Addon_Form_Hooks_
179
  }
180
 
181
  return $value;
182
- case 'string' :
183
  if ( ! is_scalar( $value ) ) {
184
  return wp_json_encode( $value );
185
  }
186
 
187
  return (string) trim( $value );
188
- case 'boolean' :
189
  return filter_var( trim( $value ), FILTER_VALIDATE_BOOLEAN );
190
- case 'int' :
191
  if ( ! is_scalar( $value ) ) {
192
  return 1;
193
  }
@@ -266,7 +266,7 @@ class Forminator_Addon_Mailchimp_Form_Hooks extends Forminator_Addon_Form_Hooks_
266
  }
267
 
268
  // Only flag check for gdpr
269
- if ( ! isset( $submitted_data['forminator-addon-mailchimp-gdpr'] ) || "1" !== $submitted_data['forminator-addon-mailchimp-gdpr'] ) {
270
  $this->gdpr_is_checked = false;
271
  }
272
 
@@ -324,7 +324,7 @@ class Forminator_Addon_Mailchimp_Form_Hooks extends Forminator_Addon_Form_Hooks_
324
  //GDPR not checked, add error
325
  throw new Forminator_Addon_Mailchimp_Exception(
326
  __(
327
- 'Forminator Addon MailChimp was not sending subscriber to mailchimp as GDPR field is not checked on input',
328
  Forminator::DOMAIN
329
  )
330
  );
@@ -334,29 +334,16 @@ class Forminator_Addon_Mailchimp_Form_Hooks extends Forminator_Addon_Form_Hooks_
334
  }
335
  }
336
 
337
-
338
  // EMAIL : super required**
339
  if ( ! isset( $addon_setting_values['fields_map']['EMAIL'] ) ) {
340
- throw new Forminator_Addon_Mailchimp_Exception(
341
- sprintf(
342
- __(
343
- 'Required Field %1$s not mapped yet to Forminator Form Field, Please check your MailChimp Configuration on Form Settings',
344
- Forminator::DOMAIN
345
- ),
346
- 'EMAIL'
347
- )
348
  );
349
  }
350
 
351
  if ( ! isset( $submitted_data[ $addon_setting_values['fields_map']['EMAIL'] ] ) || empty( $submitted_data[ $addon_setting_values['fields_map']['EMAIL'] ] ) ) {
352
- throw new Forminator_Addon_Mailchimp_Exception(
353
- sprintf(
354
- __(
355
- 'Required Field %1$s is not filled by user',
356
- Forminator::DOMAIN
357
- ),
358
- 'EMAIL'
359
- )
360
  );
361
  }
362
 
@@ -382,41 +369,23 @@ class Forminator_Addon_Mailchimp_Form_Hooks extends Forminator_Addon_Form_Hooks_
382
  $address_fields = $this->form_settings_instance->mail_address_fields();
383
  foreach ( $address_fields as $addr => $address ) {
384
  if ( ! isset( $addon_setting_values['fields_map'][ $mailchimp_required_field->tag ][ $addr ] ) ) {
385
- throw new Forminator_Addon_Mailchimp_Exception(
386
- sprintf(
387
- __(
388
- 'Required Field %1$s not mapped yet to Forminator Form Field, Please check your MailChimp Configuration on Form Settings',
389
- Forminator::DOMAIN
390
- ),
391
- $mailchimp_required_field->name
392
- )
393
  );
394
  }
395
 
396
  if ( ! isset( $submitted_data[ $addon_setting_values['fields_map'][ $mailchimp_required_field->tag ][ $addr ] ] )
397
- || empty( $submitted_data[ $addon_setting_values['fields_map'][ $mailchimp_required_field->tag ][ $addr ] ] ) ) {
398
- throw new Forminator_Addon_Mailchimp_Exception(
399
- sprintf(
400
- __(
401
- 'Required Field %1$s not filled by user',
402
- Forminator::DOMAIN
403
- ),
404
- $mailchimp_required_field->name
405
- )
406
  );
407
  }
408
  }
409
  } else {
410
 
411
  if ( ! isset( $addon_setting_values['fields_map'][ $mailchimp_required_field->tag ] ) ) {
412
- throw new Forminator_Addon_Mailchimp_Exception(
413
- sprintf(
414
- __(
415
- 'Required Field %1$s not mapped yet to Forminator Form Field, Please check your MailChimp Configuration on Form Settings',
416
- Forminator::DOMAIN
417
- ),
418
- $mailchimp_required_field->name
419
- )
420
  );
421
  }
422
 
@@ -425,16 +394,9 @@ class Forminator_Addon_Mailchimp_Form_Hooks extends Forminator_Addon_Form_Hooks_
425
  $is_stripe = self::element_is_stripe( $element_id );
426
  $has_submit_data = isset( $submitted_data[ $element_id ] ) && ! empty( $submitted_data[ $element_id ] );
427
 
428
-
429
  if ( ! $is_calculation && ! $is_stripe && ! $has_submit_data ) {
430
- throw new Forminator_Addon_Mailchimp_Exception(
431
- sprintf(
432
- __(
433
- 'Required Field %1$s not filled by user',
434
- Forminator::DOMAIN
435
- ),
436
- $mailchimp_required_field->name
437
- )
438
  );
439
  }
440
  }
@@ -465,7 +427,6 @@ class Forminator_Addon_Mailchimp_Form_Hooks extends Forminator_Addon_Form_Hooks_
465
  }
466
  }
467
 
468
-
469
  $args = array(
470
  'status' => $status,
471
  'status_if_new' => $status,
@@ -475,7 +436,7 @@ class Forminator_Addon_Mailchimp_Form_Hooks extends Forminator_Addon_Form_Hooks_
475
  $merge_fields = array();
476
  foreach ( $mailchimp_fields_list as $item ) {
477
  // its mapped ?
478
- if( 'address' === $item->type ) {
479
  $address_fields = $this->form_settings_instance->mail_address_fields();
480
  foreach ( $address_fields as $addr => $address ) {
481
  if ( isset( $addon_setting_values['fields_map'][ $item->tag ] ) && ! empty( $addon_setting_values['fields_map'][ $item->tag ] ) ) {
@@ -503,7 +464,6 @@ class Forminator_Addon_Mailchimp_Form_Hooks extends Forminator_Addon_Form_Hooks_
503
  }
504
  }
505
  }
506
-
507
  }
508
 
509
  forminator_addon_maybe_log( __METHOD__, $mailchimp_fields_list, $addon_setting_values, $submitted_data, $merge_fields );
@@ -581,7 +541,7 @@ class Forminator_Addon_Mailchimp_Form_Hooks extends Forminator_Addon_Form_Hooks_
581
  if ( ! isset( $add_member_request->id ) || ! $add_member_request->id ) {
582
  throw new Forminator_Addon_Mailchimp_Exception(
583
  __(
584
- 'Failed adding or updating member on MailChimp list',
585
  Forminator::DOMAIN
586
  )
587
  );
@@ -594,7 +554,7 @@ class Forminator_Addon_Mailchimp_Form_Hooks extends Forminator_Addon_Form_Hooks_
594
  'name' => 'status',
595
  'value' => array(
596
  'is_sent' => true,
597
- 'description' => __( 'Successfully added or updated member on MailChimp list', Forminator::DOMAIN ),
598
  'data_sent' => $mailchimp_api->get_last_data_sent(),
599
  'data_received' => $mailchimp_api->get_last_data_received(),
600
  'url_request' => $mailchimp_api->get_last_url_request(),
@@ -736,7 +696,7 @@ class Forminator_Addon_Mailchimp_Form_Hooks extends Forminator_Addon_Form_Hooks_
736
  }
737
 
738
  $additional_entry_item = array(
739
- 'label' => __( 'MailChimp Integration', Forminator::DOMAIN ),
740
  'value' => '',
741
  );
742
 
@@ -745,7 +705,7 @@ class Forminator_Addon_Mailchimp_Form_Hooks extends Forminator_Addon_Form_Hooks_
745
  if ( isset( $status['is_sent'] ) ) {
746
  $is_sent = true === $status['is_sent'] ? __( 'Yes', Forminator::DOMAIN ) : __( 'No', Forminator::DOMAIN );
747
  $sub_entries[] = array(
748
- 'label' => __( 'Sent To MailChimp', Forminator::DOMAIN ),
749
  'value' => $is_sent,
750
  );
751
  }
@@ -778,20 +738,19 @@ class Forminator_Addon_Mailchimp_Form_Hooks extends Forminator_Addon_Form_Hooks_
778
 
779
  if ( isset( $status['data_sent'] ) ) {
780
  $sub_entries[] = array(
781
- 'label' => __( 'Data sent to MailChimp', Forminator::DOMAIN ),
782
  'value' => '<pre class="sui-code-snippet">' . wp_json_encode( $status['data_sent'], JSON_PRETTY_PRINT ) . '</pre>',
783
  );
784
  }
785
 
786
  if ( isset( $status['data_received'] ) ) {
787
  $sub_entries[] = array(
788
- 'label' => __( 'Data received from MailChimp', Forminator::DOMAIN ),
789
  'value' => '<pre class="sui-code-snippet">' . wp_json_encode( $status['data_received'], JSON_PRETTY_PRINT ) . '</pre>',
790
  );
791
  }
792
  }
793
 
794
-
795
  $additional_entry_item['sub_entries'] = $sub_entries;
796
 
797
  // return single array
@@ -806,7 +765,7 @@ class Forminator_Addon_Mailchimp_Form_Hooks extends Forminator_Addon_Form_Hooks_
806
  */
807
  public function on_export_render_title_row() {
808
  $export_headers = array(
809
- 'info' => 'MailChimp Info',
810
  );
811
 
812
  $form_id = $this->form_id;
46
  */
47
  public function __construct( Forminator_Addon_Abstract $addon, $form_id ) {
48
  parent::__construct( $addon, $form_id );
49
+ $this->_submit_form_error_message = __( 'Mailchimp failed to process submitted data. Please check your form and try again', Forminator::DOMAIN );
50
  }
51
 
52
  /**
96
  $input_name = 'forminator-addon-mailchimp-gdpr';
97
  $input_id = $input_name . '-' . $uniq_id;
98
  $html = '<div class="forminator-row"><div id="field-' . $input_id . '" class="forminator-col forminator-col-12"><div class="forminator-field">';
99
+ $html .= '<div class="forminator-field--label"><label class="forminator-label" id="forminator-label-' . $input_id . '">' . esc_html_e( 'Mailchimp GDPR', Forminator::DOMAIN )
100
+ . '</label></div>';
101
  // matching checkbox with design
102
  $form_settings = $this->form_settings_instance->get_form_settings();
103
  $design_class = self::get_form_setting_value_as( $form_settings, 'form-style', 'default', 'string' );
134
  }
135
  $html .= '</div></div></div>';
136
 
137
+ echo wp_kses_post( $html );// phpcs:ignore Standard.Category.SniffName.ErrorCode
138
  }
139
 
140
  /**
169
  */
170
  private static function convert_value_to( $value, $type ) {
171
  switch ( $type ) {
172
+ case 'array':
173
  if ( ! is_array( $value ) ) {
174
  if ( is_scalar( $value ) ) {
175
  return array( $value );
179
  }
180
 
181
  return $value;
182
+ case 'string':
183
  if ( ! is_scalar( $value ) ) {
184
  return wp_json_encode( $value );
185
  }
186
 
187
  return (string) trim( $value );
188
+ case 'boolean':
189
  return filter_var( trim( $value ), FILTER_VALIDATE_BOOLEAN );
190
+ case 'int':
191
  if ( ! is_scalar( $value ) ) {
192
  return 1;
193
  }
266
  }
267
 
268
  // Only flag check for gdpr
269
+ if ( ! isset( $submitted_data['forminator-addon-mailchimp-gdpr'] ) || '1' !== $submitted_data['forminator-addon-mailchimp-gdpr'] ) {
270
  $this->gdpr_is_checked = false;
271
  }
272
 
324
  //GDPR not checked, add error
325
  throw new Forminator_Addon_Mailchimp_Exception(
326
  __(
327
+ 'Forminator Addon Mailchimp was not sending subscriber to mailchimp as GDPR field is not checked on input',
328
  Forminator::DOMAIN
329
  )
330
  );
334
  }
335
  }
336
 
 
337
  // EMAIL : super required**
338
  if ( ! isset( $addon_setting_values['fields_map']['EMAIL'] ) ) {
339
+ throw new Forminator_Addon_Mailchimp_Exception(/* translators: ... */
340
+ sprintf( __( 'Required Field %1$s not mapped yet to Forminator Form Field, Please check your Mailchimp Configuration on Form Settings', Forminator::DOMAIN ), 'EMAIL' )
 
 
 
 
 
 
341
  );
342
  }
343
 
344
  if ( ! isset( $submitted_data[ $addon_setting_values['fields_map']['EMAIL'] ] ) || empty( $submitted_data[ $addon_setting_values['fields_map']['EMAIL'] ] ) ) {
345
+ throw new Forminator_Addon_Mailchimp_Exception(/* translators: ... */
346
+ sprintf( __( 'Required Field %1$s is not filled by user', Forminator::DOMAIN ), 'EMAIL' )
 
 
 
 
 
 
347
  );
348
  }
349
 
369
  $address_fields = $this->form_settings_instance->mail_address_fields();
370
  foreach ( $address_fields as $addr => $address ) {
371
  if ( ! isset( $addon_setting_values['fields_map'][ $mailchimp_required_field->tag ][ $addr ] ) ) {
372
+ throw new Forminator_Addon_Mailchimp_Exception(/* translators: ... */
373
+ sprintf( __( 'Required Field %1$s not mapped yet to Forminator Form Field, Please check your Mailchimp Configuration on Form Settings', Forminator::DOMAIN ), $mailchimp_required_field->name )
 
 
 
 
 
 
374
  );
375
  }
376
 
377
  if ( ! isset( $submitted_data[ $addon_setting_values['fields_map'][ $mailchimp_required_field->tag ][ $addr ] ] )
378
+ || empty( $submitted_data[ $addon_setting_values['fields_map'][ $mailchimp_required_field->tag ][ $addr ] ] ) ) {
379
+ throw new Forminator_Addon_Mailchimp_Exception(/* translators: ... */
380
+ sprintf( __( 'Required Field %1$s not filled by user', Forminator::DOMAIN ), $mailchimp_required_field->name )
 
 
 
 
 
 
381
  );
382
  }
383
  }
384
  } else {
385
 
386
  if ( ! isset( $addon_setting_values['fields_map'][ $mailchimp_required_field->tag ] ) ) {
387
+ throw new Forminator_Addon_Mailchimp_Exception(/* translators: ... */
388
+ sprintf( __( 'Required Field %1$s not mapped yet to Forminator Form Field, Please check your Mailchimp Configuration on Form Settings', Forminator::DOMAIN ), $mailchimp_required_field->name )
 
 
 
 
 
 
389
  );
390
  }
391
 
394
  $is_stripe = self::element_is_stripe( $element_id );
395
  $has_submit_data = isset( $submitted_data[ $element_id ] ) && ! empty( $submitted_data[ $element_id ] );
396
 
 
397
  if ( ! $is_calculation && ! $is_stripe && ! $has_submit_data ) {
398
+ throw new Forminator_Addon_Mailchimp_Exception(/* translators: ... */
399
+ sprintf( __( 'Required Field %1$s not filled by user', Forminator::DOMAIN ), $mailchimp_required_field->name )
 
 
 
 
 
 
400
  );
401
  }
402
  }
427
  }
428
  }
429
 
 
430
  $args = array(
431
  'status' => $status,
432
  'status_if_new' => $status,
436
  $merge_fields = array();
437
  foreach ( $mailchimp_fields_list as $item ) {
438
  // its mapped ?
439
+ if ( 'address' === $item->type ) {
440
  $address_fields = $this->form_settings_instance->mail_address_fields();
441
  foreach ( $address_fields as $addr => $address ) {
442
  if ( isset( $addon_setting_values['fields_map'][ $item->tag ] ) && ! empty( $addon_setting_values['fields_map'][ $item->tag ] ) ) {
464
  }
465
  }
466
  }
 
467
  }
468
 
469
  forminator_addon_maybe_log( __METHOD__, $mailchimp_fields_list, $addon_setting_values, $submitted_data, $merge_fields );
541
  if ( ! isset( $add_member_request->id ) || ! $add_member_request->id ) {
542
  throw new Forminator_Addon_Mailchimp_Exception(
543
  __(
544
+ 'Failed adding or updating member on Mailchimp list',
545
  Forminator::DOMAIN
546
  )
547
  );
554
  'name' => 'status',
555
  'value' => array(
556
  'is_sent' => true,
557
+ 'description' => __( 'Successfully added or updated member on Mailchimp list', Forminator::DOMAIN ),
558
  'data_sent' => $mailchimp_api->get_last_data_sent(),
559
  'data_received' => $mailchimp_api->get_last_data_received(),
560
  'url_request' => $mailchimp_api->get_last_url_request(),
696
  }
697
 
698
  $additional_entry_item = array(
699
+ 'label' => __( 'Mailchimp Integration', Forminator::DOMAIN ),
700
  'value' => '',
701
  );
702
 
705
  if ( isset( $status['is_sent'] ) ) {
706
  $is_sent = true === $status['is_sent'] ? __( 'Yes', Forminator::DOMAIN ) : __( 'No', Forminator::DOMAIN );
707
  $sub_entries[] = array(
708
+ 'label' => __( 'Sent To Mailchimp', Forminator::DOMAIN ),
709
  'value' => $is_sent,
710
  );
711
  }
738
 
739
  if ( isset( $status['data_sent'] ) ) {
740
  $sub_entries[] = array(
741
+ 'label' => __( 'Data sent to Mailchimp', Forminator::DOMAIN ),
742
  'value' => '<pre class="sui-code-snippet">' . wp_json_encode( $status['data_sent'], JSON_PRETTY_PRINT ) . '</pre>',
743
  );
744
  }
745
 
746
  if ( isset( $status['data_received'] ) ) {
747
  $sub_entries[] = array(
748
+ 'label' => __( 'Data received from Mailchimp', Forminator::DOMAIN ),
749
  'value' => '<pre class="sui-code-snippet">' . wp_json_encode( $status['data_received'], JSON_PRETTY_PRINT ) . '</pre>',
750
  );
751
  }
752
  }
753
 
 
754
  $additional_entry_item['sub_entries'] = $sub_entries;
755
 
756
  // return single array
765
  */
766
  public function on_export_render_title_row() {
767
  $export_headers = array(
768
+ 'info' => 'Mailchimp Info',
769
  );
770
 
771
  $form_id = $this->form_id;
addons/pro/mailchimp/{forminator-addon-mailchimp-form-settings-exception.php → class-forminator-addon-mailchimp-form-settings-exception.php} RENAMED
File without changes
addons/pro/mailchimp/{forminator-addon-mailchimp-form-settings.php → class-forminator-addon-mailchimp-form-settings.php} RENAMED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/forminator-addon-mailchimp-form-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Mailchimp_Form_Settings
@@ -83,7 +83,7 @@ class Forminator_Addon_Mailchimp_Form_Settings extends Forminator_Addon_Form_Set
83
  $current_data['mail_list_limit'] = $this->addon_form_settings['mail_list_limit'];
84
  } else {
85
  $current_data['mail_list_limit'] = 10;
86
- }
87
 
88
  forminator_addon_maybe_log( __METHOD__, 'current_data', $current_data );
89
 
@@ -99,15 +99,16 @@ class Forminator_Addon_Mailchimp_Form_Settings extends Forminator_Addon_Form_Set
99
  $buttons = array();
100
  // add disconnect button if already is_form_connected
101
  if ( $this->addon->is_form_connected( $this->form_id ) ) {
102
- $buttons['disconnect']['markup'] = Forminator_Addon_Mailchimp::get_button_markup( esc_html__( 'DISCONNECT', Forminator::DOMAIN ),
 
103
  'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
104
- esc_html__( 'Disconnect MailChimp from this Form.', Forminator::DOMAIN )
105
  );
106
  }
107
 
108
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
109
- Forminator_Addon_Mailchimp::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
110
- '</div>';
111
 
112
  return array(
113
  'html' => '<div class="sui-box-content integration-header"><h3 class="sui-box-title" id="dialogTitle2">' . __( 'Enter list limit', Forminator::DOMAIN ) . '</h3></div>
@@ -116,7 +117,7 @@ class Forminator_Addon_Mailchimp_Form_Settings extends Forminator_Addon_Form_Set
116
  <label class="sui-label">' . __( 'List limit', Forminator::DOMAIN ) . '</label>
117
  <div class="sui-form-field">
118
  <input name="mail_list_limit"
119
- placeholder="' . sprintf( __( 'Example: 10', Forminator::DOMAIN ), 'MailChimp' ) . '"
120
  value="' . esc_attr( $current_data['mail_list_limit'] ) . '"
121
  class="sui-form-control" />
122
  <span class="sui-description">' . __( 'By default list limit will be 10.', Forminator::DOMAIN ) . '</spna>
@@ -171,20 +172,20 @@ class Forminator_Addon_Mailchimp_Form_Settings extends Forminator_Addon_Form_Set
171
  $list_array = array();
172
 
173
  try {
174
- $api = $this->addon->get_api();
175
- if( ! empty( $this->addon_form_settings['mail_list_limit'] ) ) {
176
  $list_array['count'] = $this->addon_form_settings['mail_list_limit'];
177
  }
178
  $request_mail_lists = $api->get_lists( $list_array );
179
 
180
  // Get mailchimp list to be selected, bail on empty
181
  if ( ! isset( $request_mail_lists->lists ) || empty( $request_mail_lists->lists ) || ! is_array( $request_mail_lists->lists ) ) {
182
- throw new Forminator_Addon_Mailchimp_Exception( 'Your MailChimp Lists is empty, please create one.' );
183
  }
184
  $mail_lists = $request_mail_lists->lists;
185
 
186
  // build html select for mail list
187
- $html_select_mail_list = '<select name="mail_list_id" class="sui-select sui-form-control">';
188
  $html_select_mail_list .= '<option value="">' . __( 'None', Forminator::DOMAIN ) . '</option>';
189
 
190
  foreach ( $mail_lists as $mail_list ) {
@@ -226,7 +227,6 @@ class Forminator_Addon_Mailchimp_Form_Settings extends Forminator_Addon_Form_Set
226
  }
227
  }
228
 
229
-
230
  $this->save_form_settings_values( $this->addon_form_settings );
231
  }
232
 
@@ -236,7 +236,6 @@ class Forminator_Addon_Mailchimp_Form_Settings extends Forminator_Addon_Form_Set
236
  ' . $html_select_mail_list . '
237
  </div>';
238
 
239
-
240
  } catch ( Forminator_Addon_Mailchimp_Form_Settings_Exception $e ) {
241
  // send errors with related input
242
  $input_error_messages = $e->get_input_exceptions();
@@ -256,21 +255,21 @@ class Forminator_Addon_Mailchimp_Form_Settings extends Forminator_Addon_Form_Set
256
  $buttons = array();
257
  // add disconnect button if already is_form_connected
258
  if ( $this->addon->is_form_connected( $this->form_id ) ) {
259
- $buttons['disconnect']['markup'] = Forminator_Addon_Mailchimp::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
260
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
261
- esc_html__( 'Deactivate MailChimp from this Form.', Forminator::DOMAIN )
 
262
  );
263
  }
264
 
265
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
266
- Forminator_Addon_Mailchimp::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
267
- '</div>';
268
-
269
 
270
  $gdpr_fields = '';
271
  if ( Forminator_Addon_Mailchimp::is_enable_gdpr() ) {
272
  $gdpr_fields = '<div class="sui-form-field">' .
273
- '<label class="sui-label">' . __( 'Enable GDPR', Forminator::DOMAIN ) . '</label>
274
  <input type="checkbox" name="enable_gdpr" value="1" ' . checked( 1, $current_data['enable_double_opt_in'], false ) . '>
275
  </div>
276
 
@@ -342,9 +341,9 @@ class Forminator_Addon_Mailchimp_Form_Settings extends Forminator_Addon_Form_Set
342
  $mailchimp_required_fields [] = $item;
343
  $mailchimp_required_fields_ids[] = $item->merge_id;
344
  }
345
- if( 'address' === $item->type ) {
346
  $address_fields = $this->mail_address_fields();
347
- foreach ( $address_fields as $addr=>$address ){
348
  $current_data['fields_map'][ $item->tag ][ $addr ] = '';
349
  }
350
  } else {
@@ -369,15 +368,14 @@ class Forminator_Addon_Mailchimp_Form_Settings extends Forminator_Addon_Form_Set
369
  }
370
 
371
  foreach ( $current_data['fields_map'] as $key => $current_field ) {
372
- if( is_array( $current_field ) ) {
373
- foreach ( $current_field as $a=>$current ){
374
  if ( isset( $submitted_data['fields_map'][ $key ][ $a ] ) ) {
375
  $current_data['fields_map'][ $key ][ $a ] = $submitted_data['fields_map'][ $key ][ $a ];
376
  } elseif ( isset( $this->addon_form_settings['fields_map'][ $key ] ) ) {
377
  $current_data['fields_map'][ $key ][ $a ] = $this->addon_form_settings['fields_map'][ $key ][ $a ];
378
  }
379
  }
380
-
381
  } else {
382
  if ( isset( $submitted_data['fields_map'][ $key ] ) ) {
383
  $current_data['fields_map'][ $key ] = $submitted_data['fields_map'][ $key ];
@@ -397,16 +395,14 @@ class Forminator_Addon_Mailchimp_Form_Settings extends Forminator_Addon_Form_Set
397
  $this->save_form_settings_values( $this->addon_form_settings );
398
  $is_close = true;
399
  }
400
-
401
-
402
  } catch ( Forminator_Addon_Mailchimp_Form_Settings_Exception $e ) {
403
  $input_error_messages = $e->get_input_exceptions();
404
  if ( ! empty( $html_input_map_fields ) ) {
405
  foreach ( $input_error_messages as $input_id => $message ) {
406
- if( is_array( $message ) ) {
407
- foreach ( $message as $addr => $m ){
408
  $html_input_map_fields = str_replace( '{{$error_css_class_' . $input_id . '_' . $addr . '}}', 'sui-form-field-error', $html_input_map_fields );
409
- $html_input_map_fields = str_replace( '{{$error_message_' . $input_id . '_' . $addr .'}}', '<span class="sui-error-message">' . esc_html( $m ) . '</span>', $html_input_map_fields );
410
  }
411
  } else {
412
  $html_input_map_fields = str_replace( '{{$error_css_class_' . $input_id . '}}', 'sui-form-field-error', $html_input_map_fields );
@@ -414,7 +410,6 @@ class Forminator_Addon_Mailchimp_Form_Settings extends Forminator_Addon_Form_Set
414
  }
415
  }
416
  }
417
-
418
  } catch ( Forminator_Addon_Mailchimp_Exception $e ) {
419
  $error_message = '<div class="sui-notice sui-notice-error"><p>' . $e->getMessage() . '</p></div>';
420
  }
@@ -431,15 +426,16 @@ class Forminator_Addon_Mailchimp_Form_Settings extends Forminator_Addon_Form_Set
431
 
432
  $buttons = array();
433
  if ( $this->addon->is_form_connected( $this->form_id ) ) {
434
- $buttons['disconnect']['markup'] = Forminator_Addon_Mailchimp::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
435
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
436
- esc_html__( 'Deactivate MailChimp from this Form.', Forminator::DOMAIN )
 
437
  );
438
  }
439
 
440
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
441
- Forminator_Addon_Mailchimp::get_button_markup( esc_html__( 'Save', Forminator::DOMAIN ), 'sui-button-primary forminator-addon-finish' ) .
442
- '</div>';
443
 
444
  $notification = array();
445
 
@@ -482,7 +478,7 @@ class Forminator_Addon_Mailchimp_Form_Settings extends Forminator_Addon_Form_Set
482
  <table class="sui-table">
483
  <thead>
484
  <tr>
485
- <th>MailChimp Field</th>
486
  <th>Forminator Field</th>
487
  </tr>
488
  </thead>
@@ -509,14 +505,14 @@ class Forminator_Addon_Mailchimp_Form_Settings extends Forminator_Addon_Form_Set
509
  </tr>
510
  <?php
511
  foreach ( $mailchimp_fields_list as $item ) {
512
- $require_sign = $item->required ? '<span class="integrations-required-field">*</span>' : '';
513
- if( 'address' === $item->type ) {
514
  $address_fields = $this->mail_address_fields();
515
  foreach ( $address_fields as $addr => $address ) {
516
  $address_require_sign = 'addr2' === $addr ? '' : $require_sign;
517
  ?>
518
  <tr>
519
- <td><?php echo esc_html( $item->name . ' - ' . $address ); ?> <?php echo $address_require_sign; ?></td>
520
  <td>
521
  <div class="sui-form-field {{$error_css_class_<?php echo esc_attr( $item->tag ); ?>_<?php echo esc_attr( $addr ); ?>}}">
522
  <select class="sui-select" name="fields_map[<?php echo esc_attr( $item->tag ); ?>][<?php echo esc_attr( $addr ); ?>]">
@@ -532,10 +528,12 @@ class Forminator_Addon_Mailchimp_Form_Settings extends Forminator_Addon_Form_Set
532
  </div>
533
  </td>
534
  </tr>
535
- <?php }
536
- } else { ?>
 
 
537
  <tr>
538
- <td><?php echo esc_html( $item->name ); ?> <?php echo $require_sign; ?></td>
539
  <td>
540
  <div class="sui-form-field {{$error_css_class_<?php echo esc_attr( $item->tag ); ?>}}">
541
  <select class="sui-select" name="fields_map[<?php echo esc_attr( $item->tag ); ?>]">
@@ -551,8 +549,10 @@ class Forminator_Addon_Mailchimp_Form_Settings extends Forminator_Addon_Form_Set
551
  </div>
552
  </td>
553
  </tr>
554
- <?php }
555
- } ?>
 
 
556
  </tbody>
557
  </table>
558
  <?php
@@ -598,7 +598,7 @@ class Forminator_Addon_Mailchimp_Form_Settings extends Forminator_Addon_Form_Set
598
  public function step_map_fields_validate( $mailchimp_fields_list, $mailchimp_required_fields, $post_data ) {
599
 
600
  $forminator_field_element_ids = array();
601
- $address_value = array();
602
  foreach ( $this->form_fields as $form_field ) {
603
  $forminator_field_element_ids[] = $form_field['element_id'];
604
  }
@@ -633,19 +633,23 @@ class Forminator_Addon_Mailchimp_Form_Settings extends Forminator_Addon_Form_Set
633
 
634
  //check required fields fulfilled
635
  foreach ( $mailchimp_required_fields as $mailchimp_required_field ) {
636
- if( 'address' === $mailchimp_required_field->type ) {
637
  $address_fields = $this->mail_address_fields();
638
- foreach ( $address_fields as $addr => $address ){
639
- if( 'addr2' !== $addr ) {
640
  if ( ! isset( $post_data[ $mailchimp_required_field->tag ][ $addr ] ) || empty( $post_data[ $mailchimp_required_field->tag ][ $addr ] ) ) {
641
- $this->_update_form_settings_error_message = sprintf( __( '%s is required by MailChimp, please choose valid Forminator field.', Forminator::DOMAIN ), $mailchimp_required_field->name );
 
 
642
  $input_exceptions->add_sub_input_exception( $this->_update_form_settings_error_message, $mailchimp_required_field->tag, $addr );
643
  }
644
  }
645
  }
646
  }
647
  if ( ! isset( $post_data[ $mailchimp_required_field->tag ] ) || empty( $post_data[ $mailchimp_required_field->tag ] ) ) {
648
- $this->_update_form_settings_error_message = sprintf( __( '%s is required by MailChimp, please choose valid Forminator field.', Forminator::DOMAIN ), $mailchimp_required_field->name );
 
 
649
  $input_exceptions->add_input_exception( $this->_update_form_settings_error_message, $mailchimp_required_field->tag );
650
  }
651
  }
@@ -655,10 +659,10 @@ class Forminator_Addon_Mailchimp_Form_Settings extends Forminator_Addon_Form_Set
655
  if ( empty( $forminator_field_id ) ) {
656
  continue;
657
  }
658
- if( is_array( $forminator_field_id ) ) {
659
  foreach ( $forminator_field_id as $addr => $field_id ) {
660
- if( ! empty( $field_id ) ) {
661
- $address_value[ $mailchimp_field_tag ][ $addr ] = $field_id;
662
  }
663
  }
664
  foreach ( $forminator_field_id as $addr => $field_id ) {
@@ -669,7 +673,9 @@ class Forminator_Addon_Mailchimp_Form_Settings extends Forminator_Addon_Form_Set
669
  $mailchimp_field = $tag_maped_mailchimp_fields[ $mailchimp_field_tag ];
670
  $mailchimp_field_name = $mailchimp_field->name;
671
 
672
- $this->_update_form_settings_error_message = sprintf( __( 'Please choose valid Forminator field for %s.', Forminator::DOMAIN ), $mailchimp_field_name );
 
 
673
  $input_exceptions->add_sub_input_exception( $this->_update_form_settings_error_message, $mailchimp_field_tag, $addr );
674
  }
675
  }
@@ -682,7 +688,9 @@ class Forminator_Addon_Mailchimp_Form_Settings extends Forminator_Addon_Form_Set
682
  $mailchimp_field_name = $mailchimp_field->name;
683
  }
684
 
685
- $this->_update_form_settings_error_message = sprintf( __( 'Please choose valid Forminator field for %s.', Forminator::DOMAIN ), $mailchimp_field_name );
 
 
686
  $input_exceptions->add_input_exception( $this->_update_form_settings_error_message, $mailchimp_field_tag );
687
  }
688
  }
@@ -728,7 +736,6 @@ class Forminator_Addon_Mailchimp_Form_Settings extends Forminator_Addon_Form_Set
728
  * save_force_form_disconnect_reason();
729
  */
730
 
731
-
732
  return true;
733
 
734
  }
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-mailchimp-form-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Mailchimp_Form_Settings
83
  $current_data['mail_list_limit'] = $this->addon_form_settings['mail_list_limit'];
84
  } else {
85
  $current_data['mail_list_limit'] = 10;
86
+ }
87
 
88
  forminator_addon_maybe_log( __METHOD__, 'current_data', $current_data );
89
 
99
  $buttons = array();
100
  // add disconnect button if already is_form_connected
101
  if ( $this->addon->is_form_connected( $this->form_id ) ) {
102
+ $buttons['disconnect']['markup'] = Forminator_Addon_Mailchimp::get_button_markup(
103
+ esc_html__( 'DISCONNECT', Forminator::DOMAIN ),
104
  'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
105
+ esc_html__( 'Disconnect Mailchimp from this Form.', Forminator::DOMAIN )
106
  );
107
  }
108
 
109
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
110
+ Forminator_Addon_Mailchimp::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
111
+ '</div>';
112
 
113
  return array(
114
  'html' => '<div class="sui-box-content integration-header"><h3 class="sui-box-title" id="dialogTitle2">' . __( 'Enter list limit', Forminator::DOMAIN ) . '</h3></div>
117
  <label class="sui-label">' . __( 'List limit', Forminator::DOMAIN ) . '</label>
118
  <div class="sui-form-field">
119
  <input name="mail_list_limit"
120
+ placeholder="' . sprintf( __( 'Example: 10', Forminator::DOMAIN ), 'Mailchimp' ) . '"
121
  value="' . esc_attr( $current_data['mail_list_limit'] ) . '"
122
  class="sui-form-control" />
123
  <span class="sui-description">' . __( 'By default list limit will be 10.', Forminator::DOMAIN ) . '</spna>
172
  $list_array = array();
173
 
174
  try {
175
+ $api = $this->addon->get_api();
176
+ if ( ! empty( $this->addon_form_settings['mail_list_limit'] ) ) {
177
  $list_array['count'] = $this->addon_form_settings['mail_list_limit'];
178
  }
179
  $request_mail_lists = $api->get_lists( $list_array );
180
 
181
  // Get mailchimp list to be selected, bail on empty
182
  if ( ! isset( $request_mail_lists->lists ) || empty( $request_mail_lists->lists ) || ! is_array( $request_mail_lists->lists ) ) {
183
+ throw new Forminator_Addon_Mailchimp_Exception( 'Your Mailchimp Lists is empty, please create one.' );
184
  }
185
  $mail_lists = $request_mail_lists->lists;
186
 
187
  // build html select for mail list
188
+ $html_select_mail_list = '<select name="mail_list_id" class="sui-select sui-form-control">';
189
  $html_select_mail_list .= '<option value="">' . __( 'None', Forminator::DOMAIN ) . '</option>';
190
 
191
  foreach ( $mail_lists as $mail_list ) {
227
  }
228
  }
229
 
 
230
  $this->save_form_settings_values( $this->addon_form_settings );
231
  }
232
 
236
  ' . $html_select_mail_list . '
237
  </div>';
238
 
 
239
  } catch ( Forminator_Addon_Mailchimp_Form_Settings_Exception $e ) {
240
  // send errors with related input
241
  $input_error_messages = $e->get_input_exceptions();
255
  $buttons = array();
256
  // add disconnect button if already is_form_connected
257
  if ( $this->addon->is_form_connected( $this->form_id ) ) {
258
+ $buttons['disconnect']['markup'] = Forminator_Addon_Mailchimp::get_button_markup(
259
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
260
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
261
+ esc_html__( 'Deactivate Mailchimp from this Form.', Forminator::DOMAIN )
262
  );
263
  }
264
 
265
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
266
+ Forminator_Addon_Mailchimp::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
267
+ '</div>';
 
268
 
269
  $gdpr_fields = '';
270
  if ( Forminator_Addon_Mailchimp::is_enable_gdpr() ) {
271
  $gdpr_fields = '<div class="sui-form-field">' .
272
+ '<label class="sui-label">' . __( 'Enable GDPR', Forminator::DOMAIN ) . '</label>
273
  <input type="checkbox" name="enable_gdpr" value="1" ' . checked( 1, $current_data['enable_double_opt_in'], false ) . '>
274
  </div>
275
 
341
  $mailchimp_required_fields [] = $item;
342
  $mailchimp_required_fields_ids[] = $item->merge_id;
343
  }
344
+ if ( 'address' === $item->type ) {
345
  $address_fields = $this->mail_address_fields();
346
+ foreach ( $address_fields as $addr => $address ) {
347
  $current_data['fields_map'][ $item->tag ][ $addr ] = '';
348
  }
349
  } else {
368
  }
369
 
370
  foreach ( $current_data['fields_map'] as $key => $current_field ) {
371
+ if ( is_array( $current_field ) ) {
372
+ foreach ( $current_field as $a => $current ) {
373
  if ( isset( $submitted_data['fields_map'][ $key ][ $a ] ) ) {
374
  $current_data['fields_map'][ $key ][ $a ] = $submitted_data['fields_map'][ $key ][ $a ];
375
  } elseif ( isset( $this->addon_form_settings['fields_map'][ $key ] ) ) {
376
  $current_data['fields_map'][ $key ][ $a ] = $this->addon_form_settings['fields_map'][ $key ][ $a ];
377
  }
378
  }
 
379
  } else {
380
  if ( isset( $submitted_data['fields_map'][ $key ] ) ) {
381
  $current_data['fields_map'][ $key ] = $submitted_data['fields_map'][ $key ];
395
  $this->save_form_settings_values( $this->addon_form_settings );
396
  $is_close = true;
397
  }
 
 
398
  } catch ( Forminator_Addon_Mailchimp_Form_Settings_Exception $e ) {
399
  $input_error_messages = $e->get_input_exceptions();
400
  if ( ! empty( $html_input_map_fields ) ) {
401
  foreach ( $input_error_messages as $input_id => $message ) {
402
+ if ( is_array( $message ) ) {
403
+ foreach ( $message as $addr => $m ) {
404
  $html_input_map_fields = str_replace( '{{$error_css_class_' . $input_id . '_' . $addr . '}}', 'sui-form-field-error', $html_input_map_fields );
405
+ $html_input_map_fields = str_replace( '{{$error_message_' . $input_id . '_' . $addr . '}}', '<span class="sui-error-message">' . esc_html( $m ) . '</span>', $html_input_map_fields );
406
  }
407
  } else {
408
  $html_input_map_fields = str_replace( '{{$error_css_class_' . $input_id . '}}', 'sui-form-field-error', $html_input_map_fields );
410
  }
411
  }
412
  }
 
413
  } catch ( Forminator_Addon_Mailchimp_Exception $e ) {
414
  $error_message = '<div class="sui-notice sui-notice-error"><p>' . $e->getMessage() . '</p></div>';
415
  }
426
 
427
  $buttons = array();
428
  if ( $this->addon->is_form_connected( $this->form_id ) ) {
429
+ $buttons['disconnect']['markup'] = Forminator_Addon_Mailchimp::get_button_markup(
430
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
431
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
432
+ esc_html__( 'Deactivate Mailchimp from this Form.', Forminator::DOMAIN )
433
  );
434
  }
435
 
436
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
437
+ Forminator_Addon_Mailchimp::get_button_markup( esc_html__( 'Save', Forminator::DOMAIN ), 'sui-button-primary forminator-addon-finish' ) .
438
+ '</div>';
439
 
440
  $notification = array();
441
 
478
  <table class="sui-table">
479
  <thead>
480
  <tr>
481
+ <th>Mailchimp Field</th>
482
  <th>Forminator Field</th>
483
  </tr>
484
  </thead>
505
  </tr>
506
  <?php
507
  foreach ( $mailchimp_fields_list as $item ) {
508
+ $require_sign = $item->required ? '<span class="integrations-required-field">*</span>' : '';
509
+ if ( 'address' === $item->type ) {
510
  $address_fields = $this->mail_address_fields();
511
  foreach ( $address_fields as $addr => $address ) {
512
  $address_require_sign = 'addr2' === $addr ? '' : $require_sign;
513
  ?>
514
  <tr>
515
+ <td><?php echo esc_html( $item->name . ' - ' . $address ); ?> <?php echo esc_html( $address_require_sign ); ?></td>
516
  <td>
517
  <div class="sui-form-field {{$error_css_class_<?php echo esc_attr( $item->tag ); ?>_<?php echo esc_attr( $addr ); ?>}}">
518
  <select class="sui-select" name="fields_map[<?php echo esc_attr( $item->tag ); ?>][<?php echo esc_attr( $addr ); ?>]">
528
  </div>
529
  </td>
530
  </tr>
531
+ <?php
532
+ }
533
+ } else {
534
+ ?>
535
  <tr>
536
+ <td><?php echo esc_html( $item->name ); ?> <?php echo esc_html( $require_sign ); ?></td>
537
  <td>
538
  <div class="sui-form-field {{$error_css_class_<?php echo esc_attr( $item->tag ); ?>}}">
539
  <select class="sui-select" name="fields_map[<?php echo esc_attr( $item->tag ); ?>]">
549
  </div>
550
  </td>
551
  </tr>
552
+ <?php
553
+ }
554
+ }
555
+ ?>
556
  </tbody>
557
  </table>
558
  <?php
598
  public function step_map_fields_validate( $mailchimp_fields_list, $mailchimp_required_fields, $post_data ) {
599
 
600
  $forminator_field_element_ids = array();
601
+ $address_value = array();
602
  foreach ( $this->form_fields as $form_field ) {
603
  $forminator_field_element_ids[] = $form_field['element_id'];
604
  }
633
 
634
  //check required fields fulfilled
635
  foreach ( $mailchimp_required_fields as $mailchimp_required_field ) {
636
+ if ( 'address' === $mailchimp_required_field->type ) {
637
  $address_fields = $this->mail_address_fields();
638
+ foreach ( $address_fields as $addr => $address ) {
639
+ if ( 'addr2' !== $addr ) {
640
  if ( ! isset( $post_data[ $mailchimp_required_field->tag ][ $addr ] ) || empty( $post_data[ $mailchimp_required_field->tag ][ $addr ] ) ) {
641
+ $this->_update_form_settings_error_message =
642
+ /* translators: ... */
643
+ sprintf( __( '%s is required by Mailchimp, please choose valid Forminator field.', Forminator::DOMAIN ), $mailchimp_required_field->name );
644
  $input_exceptions->add_sub_input_exception( $this->_update_form_settings_error_message, $mailchimp_required_field->tag, $addr );
645
  }
646
  }
647
  }
648
  }
649
  if ( ! isset( $post_data[ $mailchimp_required_field->tag ] ) || empty( $post_data[ $mailchimp_required_field->tag ] ) ) {
650
+ $this->_update_form_settings_error_message =
651
+ /* translators: ... */
652
+ sprintf( __( '%s is required by Mailchimp, please choose valid Forminator field.', Forminator::DOMAIN ), $mailchimp_required_field->name );
653
  $input_exceptions->add_input_exception( $this->_update_form_settings_error_message, $mailchimp_required_field->tag );
654
  }
655
  }
659
  if ( empty( $forminator_field_id ) ) {
660
  continue;
661
  }
662
+ if ( is_array( $forminator_field_id ) ) {
663
  foreach ( $forminator_field_id as $addr => $field_id ) {
664
+ if ( ! empty( $field_id ) ) {
665
+ $address_value[ $mailchimp_field_tag ][ $addr ] = $field_id;
666
  }
667
  }
668
  foreach ( $forminator_field_id as $addr => $field_id ) {
673
  $mailchimp_field = $tag_maped_mailchimp_fields[ $mailchimp_field_tag ];
674
  $mailchimp_field_name = $mailchimp_field->name;
675
 
676
+ $this->_update_form_settings_error_message =
677
+ /* translators: ... */
678
+ sprintf( __( 'Please choose valid Forminator field for %s.', Forminator::DOMAIN ), $mailchimp_field_name );
679
  $input_exceptions->add_sub_input_exception( $this->_update_form_settings_error_message, $mailchimp_field_tag, $addr );
680
  }
681
  }
688
  $mailchimp_field_name = $mailchimp_field->name;
689
  }
690
 
691
+ $this->_update_form_settings_error_message =
692
+ /* translators: ... */
693
+ sprintf( __( 'Please choose valid Forminator field for %s.', Forminator::DOMAIN ), $mailchimp_field_name );
694
  $input_exceptions->add_input_exception( $this->_update_form_settings_error_message, $mailchimp_field_tag );
695
  }
696
  }
736
  * save_force_form_disconnect_reason();
737
  */
738
 
 
739
  return true;
740
 
741
  }
addons/pro/mailchimp/{forminator-addon-mailchimp.php → class-forminator-addon-mailchimp.php} RENAMED
@@ -1,8 +1,8 @@
1
  <?php
2
  /** @noinspection HtmlUnknownTarget */
3
 
4
- require_once dirname( __FILE__ ) . '/forminator-addon-mailchimp-exception.php';
5
- require_once dirname( __FILE__ ) . '/lib/class-wp-mailchimp-api.php';
6
 
7
  /**
8
  * Class Forminator_Addon_Mailchimp
@@ -51,13 +51,13 @@ class Forminator_Addon_Mailchimp extends Forminator_Addon_Abstract {
51
  * @since 1.0 Mailchimp Addon
52
  * @var string
53
  */
54
- protected $_short_title = 'MailChimp';
55
 
56
  /**
57
  * @since 1.0 Mailchimp Addon
58
  * @var string
59
  */
60
- protected $_title = 'MailChimp';
61
 
62
  /**
63
  * @since 1.0 Mailchimp Addon
@@ -97,7 +97,7 @@ class Forminator_Addon_Mailchimp extends Forminator_Addon_Abstract {
97
  */
98
  private $_connected_account = array();
99
 
100
- protected $_position = 2;
101
 
102
  /**
103
  * Forminator_Addon_Mailchimp constructor.
@@ -108,9 +108,9 @@ class Forminator_Addon_Mailchimp extends Forminator_Addon_Abstract {
108
  */
109
  public function __construct() {
110
  // late init to allow translation
111
- $this->_description = __( 'Make form data as MailChimp List', Forminator::DOMAIN );
112
- $this->_activation_error_message = __( 'Sorry but we failed to activate MailChimp Integration, don\'t hesitate to contact us', Forminator::DOMAIN );
113
- $this->_deactivation_error_message = __( 'Sorry but we failed to deactivate MailChimp Integration, plese try again', Forminator::DOMAIN );
114
 
115
  $this->_update_settings_error_message = __(
116
  'Sorry, we failed to update settings, please check your form and try again',
@@ -168,7 +168,7 @@ class Forminator_Addon_Mailchimp extends Forminator_Addon_Abstract {
168
  try {
169
  // check if its active
170
  if ( ! $this->is_active() ) {
171
- throw new Forminator_Addon_Mailchimp_Exception( __( 'MailChimp is not active', Forminator::DOMAIN ) );
172
  }
173
 
174
  // if user completed settings
@@ -219,7 +219,7 @@ class Forminator_Addon_Mailchimp extends Forminator_Addon_Abstract {
219
  // initialize with null
220
  $form_settings_instance = null;
221
  if ( ! $this->is_connected() ) {
222
- throw new Forminator_Addon_Mailchimp_Exception( __( 'MailChimp addon not connected.', Forminator::DOMAIN ) );
223
  }
224
 
225
  $form_settings_instance = $this->get_addon_form_settings( $form_id );
@@ -270,7 +270,7 @@ class Forminator_Addon_Mailchimp extends Forminator_Addon_Abstract {
270
  */
271
  protected function validate_api_key( $api_key ) {
272
  if ( empty( $api_key ) ) {
273
- $this->_update_settings_error_message = __( 'Please add valid MailChimp API Key.', Forminator::DOMAIN );
274
 
275
  return false;
276
  }
@@ -343,7 +343,7 @@ class Forminator_Addon_Mailchimp extends Forminator_Addon_Abstract {
343
 
344
  // Display how to get mailchimp API Key by default
345
  /* translators: placeholder is URL to get API Key of MailChimp */
346
- $help = sprintf( __( 'Please get your MailChimp API key %1$s', Forminator::DOMAIN ), '<a href="https://admin.mailchimp.com/account/api-key-popup" target="_blank">here</a>' );
347
 
348
  $help = '<span class="sui-description" style="margin-top: 20px;">' . $help . '</span>';
349
 
@@ -360,7 +360,7 @@ class Forminator_Addon_Mailchimp extends Forminator_Addon_Abstract {
360
 
361
  // Show currently connected mailchimp account if its already connected
362
  /* translators: placeholder is Name and Email of Connected MailChimp Account */
363
- $help = '<span class="sui-description" style="margin-top: 20px;">' . __( 'Change your API Key or disconnect this MailChimp Integration below.' ) . '</span>';
364
 
365
  }
366
 
@@ -409,9 +409,9 @@ class Forminator_Addon_Mailchimp extends Forminator_Addon_Abstract {
409
  $connected_account = $setting_values['connected_account'];
410
 
411
  // Show currently connected mailchimp account if its already connected
412
- /* translators: placeholder is Name and Email of Connected MailChimp Account */
413
  $myaccount .= sprintf(
414
- __( 'Your MailChimp is connected to %1$s: %2$s.', Forminator::DOMAIN ),
 
415
  '<strong>' . $connected_account['account_name'] . '</strong>',
416
  $connected_account['email']
417
  );
@@ -543,7 +543,10 @@ class Forminator_Addon_Mailchimp extends Forminator_Addon_Abstract {
543
  }
544
 
545
  return array(
546
- 'html' => '<div class="integration-header"><h3 class="sui-box-title" id="dialogTitle2">' . sprintf( __( '%1$s Added', Forminator::DOMAIN ), 'MailChimp' ) . '</h3></div>
 
 
 
547
  <div class="sui-block-content-center">
548
  <p><small style="color: #666;">' . __( 'You can now go to your forms and assign them to this integration.' ) . '</small></p>
549
  </div>',
@@ -560,7 +563,6 @@ class Forminator_Addon_Mailchimp extends Forminator_Addon_Abstract {
560
  ),
561
  );
562
  }
563
-
564
  }
565
  }
566
 
@@ -578,18 +580,21 @@ class Forminator_Addon_Mailchimp extends Forminator_Addon_Abstract {
578
 
579
  $buttons['submit'] = array(
580
  'markup' => '<div class="sui-actions-right">' .
581
- self::get_button_markup( esc_html__( 'Save', Forminator::DOMAIN ), 'forminator-addon-connect' ) .
582
- '</div>',
583
  );
584
  } else {
585
  $buttons['submit'] = array(
586
- 'markup' => self::get_button_markup( esc_html__( 'Connect', Forminator::DOMAIN ), 'forminator-addon-connect' )
587
  );
588
  }
589
 
590
  return array(
591
  'html' => '<div class="integration-header">
592
- <h3 class="sui-box-title" id="dialogTitle2">' . sprintf( __( 'Configure %1$s', Forminator::DOMAIN ), 'MailChimp' ) . '</h3>
 
 
 
593
  ' . $this->settings_help() . '
594
  ' . $error_message . '
595
  </div>
@@ -598,7 +603,10 @@ class Forminator_Addon_Mailchimp extends Forminator_Addon_Abstract {
598
  <label class="sui-label">' . __( 'API Key', Forminator::DOMAIN ) . '</label>
599
  <div class="sui-control-with-icon">
600
  <input name="api_key"
601
- placeholder="' . sprintf( __( 'Enter %1$s API Key', Forminator::DOMAIN ), 'MailChimp' ) . '"
 
 
 
602
  value="' . esc_attr( $api_key ) . '"
603
  class="sui-form-control" />
604
  <i class="sui-icon-key" aria-hidden="true"></i>
1
  <?php
2
  /** @noinspection HtmlUnknownTarget */
3
 
4
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-mailchimp-exception.php';
5
+ require_once dirname( __FILE__ ) . '/lib/class-forminator-addon-mailchimp-wp-api.php';
6
 
7
  /**
8
  * Class Forminator_Addon_Mailchimp
51
  * @since 1.0 Mailchimp Addon
52
  * @var string
53
  */
54
+ protected $_short_title = 'Mailchimp';
55
 
56
  /**
57
  * @since 1.0 Mailchimp Addon
58
  * @var string
59
  */
60
+ protected $_title = 'Mailchimp';
61
 
62
  /**
63
  * @since 1.0 Mailchimp Addon
97
  */
98
  private $_connected_account = array();
99
 
100
+ protected $_position = 2;
101
 
102
  /**
103
  * Forminator_Addon_Mailchimp constructor.
108
  */
109
  public function __construct() {
110
  // late init to allow translation
111
+ $this->_description = __( 'Make form data as Mailchimp List', Forminator::DOMAIN );
112
+ $this->_activation_error_message = __( 'Sorry but we failed to activate Mailchimp Integration, don\'t hesitate to contact us', Forminator::DOMAIN );
113
+ $this->_deactivation_error_message = __( 'Sorry but we failed to deactivate Mailchimp Integration, plese try again', Forminator::DOMAIN );
114
 
115
  $this->_update_settings_error_message = __(
116
  'Sorry, we failed to update settings, please check your form and try again',
168
  try {
169
  // check if its active
170
  if ( ! $this->is_active() ) {
171
+ throw new Forminator_Addon_Mailchimp_Exception( __( 'Mailchimp is not active', Forminator::DOMAIN ) );
172
  }
173
 
174
  // if user completed settings
219
  // initialize with null
220
  $form_settings_instance = null;
221
  if ( ! $this->is_connected() ) {
222
+ throw new Forminator_Addon_Mailchimp_Exception( __( 'Mailchimp addon not connected.', Forminator::DOMAIN ) );
223
  }
224
 
225
  $form_settings_instance = $this->get_addon_form_settings( $form_id );
270
  */
271
  protected function validate_api_key( $api_key ) {
272
  if ( empty( $api_key ) ) {
273
+ $this->_update_settings_error_message = __( 'Please add valid Mailchimp API Key.', Forminator::DOMAIN );
274
 
275
  return false;
276
  }
343
 
344
  // Display how to get mailchimp API Key by default
345
  /* translators: placeholder is URL to get API Key of MailChimp */
346
+ $help = sprintf( __( 'Please get your Mailchimp API key %1$s', Forminator::DOMAIN ), '<a href="https://admin.mailchimp.com/account/api-key-popup" target="_blank">here</a>' );
347
 
348
  $help = '<span class="sui-description" style="margin-top: 20px;">' . $help . '</span>';
349
 
360
 
361
  // Show currently connected mailchimp account if its already connected
362
  /* translators: placeholder is Name and Email of Connected MailChimp Account */
363
+ $help = '<span class="sui-description" style="margin-top: 20px;">' . __( 'Change your API Key or disconnect this Mailchimp Integration below.' ) . '</span>';
364
 
365
  }
366
 
409
  $connected_account = $setting_values['connected_account'];
410
 
411
  // Show currently connected mailchimp account if its already connected
 
412
  $myaccount .= sprintf(
413
+ /* translators: placeholder is Name and Email of Connected MailChimp Account */
414
+ __( 'Your Mailchimp is connected to %1$s: %2$s.', Forminator::DOMAIN ),
415
  '<strong>' . $connected_account['account_name'] . '</strong>',
416
  $connected_account['email']
417
  );
543
  }
544
 
545
  return array(
546
+ 'html' => '<div class="integration-header"><h3 class="sui-box-title" id="dialogTitle2">' .
547
+ /* translators: ... */
548
+ sprintf( __( '%1$s Added', Forminator::DOMAIN ), 'Mailchimp' ) .
549
+ '</h3></div>
550
  <div class="sui-block-content-center">
551
  <p><small style="color: #666;">' . __( 'You can now go to your forms and assign them to this integration.' ) . '</small></p>
552
  </div>',
563
  ),
564
  );
565
  }
 
566
  }
567
  }
568
 
580
 
581
  $buttons['submit'] = array(
582
  'markup' => '<div class="sui-actions-right">' .
583
+ self::get_button_markup( esc_html__( 'Save', Forminator::DOMAIN ), 'forminator-addon-connect' ) .
584
+ '</div>',
585
  );
586
  } else {
587
  $buttons['submit'] = array(
588
+ 'markup' => self::get_button_markup( esc_html__( 'Connect', Forminator::DOMAIN ), 'forminator-addon-connect' ),
589
  );
590
  }
591
 
592
  return array(
593
  'html' => '<div class="integration-header">
594
+ <h3 class="sui-box-title" id="dialogTitle2">' .
595
+ /* translators: ... */
596
+ sprintf( __( 'Configure %1$s', Forminator::DOMAIN ), 'Mailchimp' ) .
597
+ '</h3>
598
  ' . $this->settings_help() . '
599
  ' . $error_message . '
600
  </div>
603
  <label class="sui-label">' . __( 'API Key', Forminator::DOMAIN ) . '</label>
604
  <div class="sui-control-with-icon">
605
  <input name="api_key"
606
+ placeholder="' .
607
+ /* translators: ... */
608
+ sprintf( __( 'Enter %1$s API Key', Forminator::DOMAIN ), 'Mailchimp' ) .
609
+ '"
610
  value="' . esc_attr( $api_key ) . '"
611
  class="sui-form-control" />
612
  <i class="sui-icon-key" aria-hidden="true"></i>
addons/pro/mailchimp/lib/{class-wp-mailchimp-api-exception.php → class-forminator-addon-mailchimp-wp-api-exception.php} RENAMED
File without changes
addons/pro/mailchimp/lib/{class-wp-mailchimp-api-not-found-exception.php → class-forminator-addon-mailchimp-wp-api-not-found-exception.php} RENAMED
File without changes
addons/pro/mailchimp/lib/{class-wp-mailchimp-api.php → class-forminator-addon-mailchimp-wp-api.php} RENAMED
@@ -1,7 +1,7 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/class-wp-mailchimp-api-exception.php';
4
- require_once dirname( __FILE__ ) . '/class-wp-mailchimp-api-not-found-exception.php';
5
 
6
  /**
7
  * Class Forminator_Addon_Mailchimp_Wp_Api
@@ -139,12 +139,11 @@ class Forminator_Addon_Mailchimp_Wp_Api {
139
  * @throws Forminator_Addon_Mailchimp_Wp_Api_Exception
140
  * @throws Forminator_Addon_Mailchimp_Wp_Api_Not_Found_Exception
141
  */
142
- private function _request( $verb = 'GET', $path, $args = array() ) {
143
  // Adding extra user agent for wp remote request
144
  add_filter( 'http_headers_useragent', array( $this, 'filter_user_agent' ) );
145
  $url = trailingslashit( $this->_endpoint ) . $path;
146
 
147
-
148
  /**
149
  * Filter mailchimp url to be used on sending api request
150
  *
@@ -218,8 +217,12 @@ class Forminator_Addon_Mailchimp_Wp_Api {
218
  // Got no response from API
219
  if ( empty( $body ) ) {
220
  forminator_addon_maybe_log( __METHOD__, $res );
221
- throw new Forminator_Addon_Mailchimp_Wp_Api_Exception( __( 'Failed to process request, make sure API KEY is correct and your server has internet connection.',
222
- Forminator::DOMAIN ) );
 
 
 
 
223
  }
224
  }
225
 
@@ -237,6 +240,7 @@ class Forminator_Addon_Mailchimp_Wp_Api {
237
  }
238
  $this->_last_data_received = $response;
239
  if ( 404 === $response->status ) {
 
240
  throw new Forminator_Addon_Mailchimp_Wp_Api_Not_Found_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
241
  }
242
  /* translators: ... */
@@ -290,7 +294,7 @@ class Forminator_Addon_Mailchimp_Wp_Api {
290
  $fields = array( 'account_id', 'account_name', 'email' );
291
  }
292
 
293
- return $this->_request(
294
  'GET',
295
  '',
296
  array(
@@ -319,7 +323,7 @@ class Forminator_Addon_Mailchimp_Wp_Api {
319
 
320
  $args = array_merge( $default_args, $args );
321
 
322
- return $this->_request(
323
  'GET',
324
  'lists',
325
  $args
@@ -347,7 +351,7 @@ class Forminator_Addon_Mailchimp_Wp_Api {
347
 
348
  $args = array_merge( $default_args, $args );
349
 
350
- return $this->_request(
351
  'GET',
352
  'lists/' . $list_id . '/merge-fields/',
353
  $args
@@ -390,7 +394,7 @@ class Forminator_Addon_Mailchimp_Wp_Api {
390
  throw new Forminator_Addon_Mailchimp_Wp_Api_Exception( __( 'Invalid Field Type', Forminator::DOMAIN ) );
391
  }
392
 
393
- return $this->_request(
394
  'POST',
395
  'lists/' . $list_id . '/merge-fields/',
396
  $args
@@ -418,7 +422,7 @@ class Forminator_Addon_Mailchimp_Wp_Api {
418
 
419
  $args = array_merge( $default_args, $args );
420
 
421
- return $this->_request(
422
  'GET',
423
  'lists/' . $list_id . '/interest-categories',
424
  $args
@@ -447,7 +451,7 @@ class Forminator_Addon_Mailchimp_Wp_Api {
447
 
448
  $args = array_merge( $default_args, $args );
449
 
450
- return $this->_request(
451
  'GET',
452
  'lists/' . $list_id . '/interest-categories/' . $category_id . '/interests',
453
  $args
@@ -474,8 +478,7 @@ class Forminator_Addon_Mailchimp_Wp_Api {
474
 
475
  $args = array_merge( $default_args, $args );
476
 
477
-
478
- return $this->_request(
479
  'GET',
480
  'lists/' . $list_id . '/members/' . $subscriber_hash,
481
  $args
@@ -506,7 +509,7 @@ class Forminator_Addon_Mailchimp_Wp_Api {
506
  throw new Forminator_Addon_Mailchimp_Wp_Api_Exception( __( 'email_address are required for mailchimp', Forminator::DOMAIN ) );
507
  }
508
 
509
- return $this->_request(
510
  'POST',
511
  'lists/' . $list_id . '/members/',
512
  $args
@@ -554,7 +557,7 @@ class Forminator_Addon_Mailchimp_Wp_Api {
554
  unset( $args['interests'] );
555
  }
556
 
557
- return $this->_request(
558
  'PUT',
559
  'lists/' . $list_id . '/members/' . $subscriber_hash,
560
  $args
@@ -574,7 +577,7 @@ class Forminator_Addon_Mailchimp_Wp_Api {
574
  * @throws Forminator_Addon_Mailchimp_Wp_Api_Not_Found_Exception
575
  */
576
  public function delete_member( $list_id, $subscriber_hash ) {
577
- return $this->_request(
578
  'DELETE',
579
  'lists/' . $list_id . '/members/' . $subscriber_hash,
580
  array()
@@ -597,7 +600,7 @@ class Forminator_Addon_Mailchimp_Wp_Api {
597
  public function delete_( $url ) {
598
  $path = str_ireplace( $this->_endpoint, '', $url );
599
 
600
- return $this->_request( 'DELETE', $path );
601
  }
602
 
603
  /**
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-mailchimp-wp-api-exception.php';
4
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-mailchimp-wp-api-not-found-exception.php';
5
 
6
  /**
7
  * Class Forminator_Addon_Mailchimp_Wp_Api
139
  * @throws Forminator_Addon_Mailchimp_Wp_Api_Exception
140
  * @throws Forminator_Addon_Mailchimp_Wp_Api_Not_Found_Exception
141
  */
142
+ private function request( $verb = 'GET', $path, $args = array() ) {
143
  // Adding extra user agent for wp remote request
144
  add_filter( 'http_headers_useragent', array( $this, 'filter_user_agent' ) );
145
  $url = trailingslashit( $this->_endpoint ) . $path;
146
 
 
147
  /**
148
  * Filter mailchimp url to be used on sending api request
149
  *
217
  // Got no response from API
218
  if ( empty( $body ) ) {
219
  forminator_addon_maybe_log( __METHOD__, $res );
220
+ throw new Forminator_Addon_Mailchimp_Wp_Api_Exception(
221
+ __(
222
+ 'Failed to process request, make sure API KEY is correct and your server has internet connection.',
223
+ Forminator::DOMAIN
224
+ )
225
+ );
226
  }
227
  }
228
 
240
  }
241
  $this->_last_data_received = $response;
242
  if ( 404 === $response->status ) {
243
+ /* translators: ... */
244
  throw new Forminator_Addon_Mailchimp_Wp_Api_Not_Found_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
245
  }
246
  /* translators: ... */
294
  $fields = array( 'account_id', 'account_name', 'email' );
295
  }
296
 
297
+ return $this->request(
298
  'GET',
299
  '',
300
  array(
323
 
324
  $args = array_merge( $default_args, $args );
325
 
326
+ return $this->request(
327
  'GET',
328
  'lists',
329
  $args
351
 
352
  $args = array_merge( $default_args, $args );
353
 
354
+ return $this->request(
355
  'GET',
356
  'lists/' . $list_id . '/merge-fields/',
357
  $args
394
  throw new Forminator_Addon_Mailchimp_Wp_Api_Exception( __( 'Invalid Field Type', Forminator::DOMAIN ) );
395
  }
396
 
397
+ return $this->request(
398
  'POST',
399
  'lists/' . $list_id . '/merge-fields/',
400
  $args
422
 
423
  $args = array_merge( $default_args, $args );
424
 
425
+ return $this->request(
426
  'GET',
427
  'lists/' . $list_id . '/interest-categories',
428
  $args
451
 
452
  $args = array_merge( $default_args, $args );
453
 
454
+ return $this->request(
455
  'GET',
456
  'lists/' . $list_id . '/interest-categories/' . $category_id . '/interests',
457
  $args
478
 
479
  $args = array_merge( $default_args, $args );
480
 
481
+ return $this->request(
 
482
  'GET',
483
  'lists/' . $list_id . '/members/' . $subscriber_hash,
484
  $args
509
  throw new Forminator_Addon_Mailchimp_Wp_Api_Exception( __( 'email_address are required for mailchimp', Forminator::DOMAIN ) );
510
  }
511
 
512
+ return $this->request(
513
  'POST',
514
  'lists/' . $list_id . '/members/',
515
  $args
557
  unset( $args['interests'] );
558
  }
559
 
560
+ return $this->request(
561
  'PUT',
562
  'lists/' . $list_id . '/members/' . $subscriber_hash,
563
  $args
577
  * @throws Forminator_Addon_Mailchimp_Wp_Api_Not_Found_Exception
578
  */
579
  public function delete_member( $list_id, $subscriber_hash ) {
580
+ return $this->request(
581
  'DELETE',
582
  'lists/' . $list_id . '/members/' . $subscriber_hash,
583
  array()
600
  public function delete_( $url ) {
601
  $path = str_ireplace( $this->_endpoint, '', $url );
602
 
603
+ return $this->request( 'DELETE', $path );
604
  }
605
 
606
  /**
addons/pro/mailchimp/mailchimp.php CHANGED
@@ -18,8 +18,8 @@ function forminator_addon_mailchimp_assets_url() {
18
  return trailingslashit( forminator_addon_mailchimp_url() . 'assets' );
19
  }
20
 
21
- require_once dirname( __FILE__ ) . '/forminator-addon-mailchimp.php';
22
- require_once dirname( __FILE__ ) . '/forminator-addon-mailchimp-form-settings.php';
23
- require_once dirname( __FILE__ ) . '/forminator-addon-mailchimp-form-hooks.php';
24
  //Direct Load
25
  Forminator_Addon_Loader::get_instance()->register( 'Forminator_Addon_Mailchimp' );
18
  return trailingslashit( forminator_addon_mailchimp_url() . 'assets' );
19
  }
20
 
21
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-mailchimp.php';
22
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-mailchimp-form-settings.php';
23
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-mailchimp-form-hooks.php';
24
  //Direct Load
25
  Forminator_Addon_Loader::get_instance()->register( 'Forminator_Addon_Mailchimp' );
addons/pro/slack/{forminator-addon-slack-exception.php → class-forminator-addon-slack-exception.php} RENAMED
File without changes
addons/pro/slack/{forminator-addon-slack-form-hooks.php → class-forminator-addon-slack-form-hooks.php} RENAMED
@@ -97,7 +97,6 @@ class Forminator_Addon_Slack_Form_Hooks extends Forminator_Addon_Form_Hooks_Abst
97
  'value' => $this->get_status_on_send_message( $key, $submitted_data, $addon_setting_value, $form_entry_fields ),
98
  );
99
  }
100
-
101
  }
102
 
103
  $entry_fields = $data;
@@ -267,7 +266,7 @@ class Forminator_Addon_Slack_Form_Hooks extends Forminator_Addon_Form_Hooks_Abst
267
  $all_fields_attachments_fields = array();
268
  $form_fields = $this->form_settings_instance->get_form_fields();
269
  $field_format = array();
270
- $post_element_ids = array();
271
  foreach ( $form_fields as $form_field ) {
272
  $element_id = $form_field['element_id'];
273
  $field_type = $form_field['type'];
@@ -275,12 +274,12 @@ class Forminator_Addon_Slack_Form_Hooks extends Forminator_Addon_Form_Hooks_Abst
275
 
276
  $post_element_id = $element_id;
277
  if ( stripos( $field_type, 'postdata' ) !== false ) {
278
- $post_type = $form_field['post_type'];
279
- $category_list = forminator_post_categories( $post_type );
280
  $post_element_id = str_ireplace( '-post-title', '', $post_element_id );
281
  $post_element_id = str_ireplace( '-post-content', '', $post_element_id );
282
  $post_element_id = str_ireplace( '-post-excerpt', '', $post_element_id );
283
- if( ! empty ( $category_list ) ) {
284
  foreach ( $category_list as $category ) {
285
  $post_element_id = str_ireplace( '-' . $category['value'], '', $post_element_id );
286
  $field_format[] = 'postdata-' . $category['value'];
@@ -320,7 +319,7 @@ class Forminator_Addon_Slack_Form_Hooks extends Forminator_Addon_Form_Hooks_Abst
320
  break;
321
  }
322
 
323
- if( in_array( $field_type, $field_format, true ) ) {
324
 
325
  $field_value = '{' . $post_element_id . '}';
326
  $field_value = forminator_addon_replace_custom_vars( $field_value, $submitted_data, $this->custom_form, $form_entry_fields, false );
@@ -372,7 +371,6 @@ class Forminator_Addon_Slack_Form_Hooks extends Forminator_Addon_Form_Hooks_Abst
372
  $form_settings_instance
373
  );
374
 
375
-
376
  $addon_meta_datas = $addon_meta_data;
377
  if ( ! isset( $addon_meta_data[0] ) || ! is_array( $addon_meta_data[0] ) ) {
378
  return array();
@@ -428,7 +426,6 @@ class Forminator_Addon_Slack_Form_Hooks extends Forminator_Addon_Form_Hooks_Abst
428
  'value' => '',
429
  );
430
 
431
-
432
  $sub_entries = array();
433
  if ( isset( $status['connection_name'] ) ) {
434
  $sub_entries[] = array(
@@ -476,7 +473,6 @@ class Forminator_Addon_Slack_Form_Hooks extends Forminator_Addon_Form_Hooks_Abst
476
  }
477
  }
478
 
479
-
480
  $additional_entry_item['sub_entries'] = $sub_entries;
481
 
482
  // return single array
97
  'value' => $this->get_status_on_send_message( $key, $submitted_data, $addon_setting_value, $form_entry_fields ),
98
  );
99
  }
 
100
  }
101
 
102
  $entry_fields = $data;
266
  $all_fields_attachments_fields = array();
267
  $form_fields = $this->form_settings_instance->get_form_fields();
268
  $field_format = array();
269
+ $post_element_ids = array();
270
  foreach ( $form_fields as $form_field ) {
271
  $element_id = $form_field['element_id'];
272
  $field_type = $form_field['type'];
274
 
275
  $post_element_id = $element_id;
276
  if ( stripos( $field_type, 'postdata' ) !== false ) {
277
+ $post_type = $form_field['post_type'];
278
+ $category_list = forminator_post_categories( $post_type );
279
  $post_element_id = str_ireplace( '-post-title', '', $post_element_id );
280
  $post_element_id = str_ireplace( '-post-content', '', $post_element_id );
281
  $post_element_id = str_ireplace( '-post-excerpt', '', $post_element_id );
282
+ if ( ! empty( $category_list ) ) {
283
  foreach ( $category_list as $category ) {
284
  $post_element_id = str_ireplace( '-' . $category['value'], '', $post_element_id );
285
  $field_format[] = 'postdata-' . $category['value'];
319
  break;
320
  }
321
 
322
+ if ( in_array( $field_type, $field_format, true ) ) {
323
 
324
  $field_value = '{' . $post_element_id . '}';
325
  $field_value = forminator_addon_replace_custom_vars( $field_value, $submitted_data, $this->custom_form, $form_entry_fields, false );
371
  $form_settings_instance
372
  );
373
 
 
374
  $addon_meta_datas = $addon_meta_data;
375
  if ( ! isset( $addon_meta_data[0] ) || ! is_array( $addon_meta_data[0] ) ) {
376
  return array();
426
  'value' => '',
427
  );
428
 
 
429
  $sub_entries = array();
430
  if ( isset( $status['connection_name'] ) ) {
431
  $sub_entries[] = array(
473
  }
474
  }
475
 
 
476
  $additional_entry_item['sub_entries'] = $sub_entries;
477
 
478
  // return single array
addons/pro/slack/{forminator-addon-slack-form-settings-exception.php → class-forminator-addon-slack-form-settings-exception.php} RENAMED
File without changes
addons/pro/slack/{forminator-addon-slack-form-settings.php → class-forminator-addon-slack-form-settings.php} RENAMED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/forminator-addon-slack-form-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Slack_Form_Settings
@@ -125,15 +125,16 @@ class Forminator_Addon_Slack_Form_Settings extends Forminator_Addon_Form_Setting
125
 
126
  $buttons = array();
127
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
128
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
129
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
130
- esc_html__( 'Deactivate this Slack Integration from this Form.', Forminator::DOMAIN )
 
131
  );
132
  }
133
 
134
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
135
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
136
- '</div>';
137
 
138
  return array(
139
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -197,7 +198,6 @@ class Forminator_Addon_Slack_Form_Settings extends Forminator_Addon_Form_Setting
197
  'error_message' => '',
198
  );
199
 
200
-
201
  $is_submit = ! empty( $submitted_data );
202
  $has_errors = false;
203
 
@@ -233,15 +233,16 @@ class Forminator_Addon_Slack_Form_Settings extends Forminator_Addon_Form_Setting
233
 
234
  $buttons = array();
235
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
236
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
237
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
238
- esc_html__( 'Deactivate this Slack Integration from this Form.', Forminator::DOMAIN )
 
239
  );
240
  }
241
 
242
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
243
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
244
- '</div>';
245
 
246
  return array(
247
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -312,7 +313,6 @@ class Forminator_Addon_Slack_Form_Settings extends Forminator_Addon_Form_Setting
312
  'help_message' => '',
313
  );
314
 
315
-
316
  $type = $this->get_multi_id_form_settings_value( $multi_id, 'type', '' );
317
  switch ( $type ) {
318
  case Forminator_Addon_Slack::TARGET_TYPE_PRIVATE_CHANNEL:
@@ -332,7 +332,6 @@ class Forminator_Addon_Slack_Form_Settings extends Forminator_Addon_Form_Setting
332
  break;
333
  }
334
 
335
-
336
  $is_submit = ! empty( $submitted_data );
337
  $has_errors = false;
338
 
@@ -389,15 +388,16 @@ class Forminator_Addon_Slack_Form_Settings extends Forminator_Addon_Form_Setting
389
 
390
  $buttons = array();
391
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
392
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
393
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
394
- esc_html__( 'Deactivate this Slack Integration from this Form.', Forminator::DOMAIN )
 
395
  );
396
  }
397
 
398
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
399
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
400
- '</div>';
401
 
402
  return array(
403
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -499,15 +499,16 @@ class Forminator_Addon_Slack_Form_Settings extends Forminator_Addon_Form_Setting
499
 
500
  $buttons = array();
501
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
502
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
503
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
504
- esc_html__( 'Deactivate this Slack Integration from this Form.', Forminator::DOMAIN )
 
505
  );
506
  }
507
 
508
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
509
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'CONNECT', Forminator::DOMAIN ), 'forminator-addon-next' ) .
510
- '</div>';
511
 
512
  return array(
513
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-slack-form-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Slack_Form_Settings
125
 
126
  $buttons = array();
127
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
128
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
129
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
130
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
131
+ esc_html__( 'Deactivate this Slack Integration from this Form.', Forminator::DOMAIN )
132
  );
133
  }
134
 
135
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
136
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
137
+ '</div>';
138
 
139
  return array(
140
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
198
  'error_message' => '',
199
  );
200
 
 
201
  $is_submit = ! empty( $submitted_data );
202
  $has_errors = false;
203
 
233
 
234
  $buttons = array();
235
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
236
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
237
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
238
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
239
+ esc_html__( 'Deactivate this Slack Integration from this Form.', Forminator::DOMAIN )
240
  );
241
  }
242
 
243
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
244
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
245
+ '</div>';
246
 
247
  return array(
248
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
313
  'help_message' => '',
314
  );
315
 
 
316
  $type = $this->get_multi_id_form_settings_value( $multi_id, 'type', '' );
317
  switch ( $type ) {
318
  case Forminator_Addon_Slack::TARGET_TYPE_PRIVATE_CHANNEL:
332
  break;
333
  }
334
 
 
335
  $is_submit = ! empty( $submitted_data );
336
  $has_errors = false;
337
 
388
 
389
  $buttons = array();
390
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
391
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
392
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
393
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
394
+ esc_html__( 'Deactivate this Slack Integration from this Form.', Forminator::DOMAIN )
395
  );
396
  }
397
 
398
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
399
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
400
+ '</div>';
401
 
402
  return array(
403
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
499
 
500
  $buttons = array();
501
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
502
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
503
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
504
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
505
+ esc_html__( 'Deactivate this Slack Integration from this Form.', Forminator::DOMAIN )
506
  );
507
  }
508
 
509
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
510
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'CONNECT', Forminator::DOMAIN ), 'forminator-addon-next' ) .
511
+ '</div>';
512
 
513
  return array(
514
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
addons/pro/slack/{forminator-addon-slack-poll-hooks.php → class-forminator-addon-slack-poll-hooks.php} RENAMED
@@ -82,7 +82,6 @@ class Forminator_Addon_Slack_Poll_Hooks extends Forminator_Addon_Poll_Hooks_Abst
82
  'value' => $this->get_status_on_send_message( $key, $submitted_data, $addon_setting_value, $form_entry_fields ),
83
  );
84
  }
85
-
86
  }
87
 
88
  $entry_fields = $data;
@@ -143,7 +142,7 @@ class Forminator_Addon_Slack_Poll_Hooks extends Forminator_Addon_Poll_Hooks_Abst
143
  $text_message = $connection_settings['message'];
144
  $text_message = forminator_replace_variables( $text_message );
145
 
146
- // {poll_name_replace}
147
  $text_message = str_ireplace( '{poll_name}', forminator_get_name_from_model( $this->poll ), $text_message );
148
 
149
  $attachments = $this->get_poll_data_as_attachments( $submitted_data, $poll_entry_fields );
@@ -321,7 +320,6 @@ class Forminator_Addon_Slack_Poll_Hooks extends Forminator_Addon_Poll_Hooks_Abst
321
  'short' => false,
322
  );
323
  }
324
-
325
  }
326
 
327
  $attachments[] = array(
@@ -329,7 +327,6 @@ class Forminator_Addon_Slack_Poll_Hooks extends Forminator_Addon_Poll_Hooks_Abst
329
  'fields' => $attachment_fields,
330
  );
331
 
332
-
333
  return $attachments;
334
  }
335
 
82
  'value' => $this->get_status_on_send_message( $key, $submitted_data, $addon_setting_value, $form_entry_fields ),
83
  );
84
  }
 
85
  }
86
 
87
  $entry_fields = $data;
142
  $text_message = $connection_settings['message'];
143
  $text_message = forminator_replace_variables( $text_message );
144
 
145
+ // {poll_name_replace} //phpcs:ignore
146
  $text_message = str_ireplace( '{poll_name}', forminator_get_name_from_model( $this->poll ), $text_message );
147
 
148
  $attachments = $this->get_poll_data_as_attachments( $submitted_data, $poll_entry_fields );
320
  'short' => false,
321
  );
322
  }
 
323
  }
324
 
325
  $attachments[] = array(
327
  'fields' => $attachment_fields,
328
  );
329
 
 
330
  return $attachments;
331
  }
332
 
addons/pro/slack/{forminator-addon-slack-poll-settings-exception.php → class-forminator-addon-slack-poll-settings-exception.php} RENAMED
File without changes
addons/pro/slack/{forminator-addon-slack-poll-settings.php → class-forminator-addon-slack-poll-settings.php} RENAMED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/forminator-addon-slack-poll-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Slack_Poll_Settings
@@ -124,15 +124,16 @@ class Forminator_Addon_Slack_Poll_Settings extends Forminator_Addon_Poll_Setting
124
 
125
  $buttons = array();
126
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
127
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
128
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
129
- esc_html__( 'Deactivate this Slack Integration from this Poll.', Forminator::DOMAIN )
 
130
  );
131
  }
132
 
133
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
134
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
135
- '</div>';
136
 
137
  return array(
138
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -196,7 +197,6 @@ class Forminator_Addon_Slack_Poll_Settings extends Forminator_Addon_Poll_Setting
196
  'error_message' => '',
197
  );
198
 
199
-
200
  $is_submit = ! empty( $submitted_data );
201
  $has_errors = false;
202
 
@@ -232,15 +232,16 @@ class Forminator_Addon_Slack_Poll_Settings extends Forminator_Addon_Poll_Setting
232
 
233
  $buttons = array();
234
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
235
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
236
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
237
- esc_html__( 'Deactivate this Slack Integration from this Poll.', Forminator::DOMAIN )
 
238
  );
239
  }
240
 
241
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
242
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
243
- '</div>';
244
 
245
  return array(
246
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -311,7 +312,6 @@ class Forminator_Addon_Slack_Poll_Settings extends Forminator_Addon_Poll_Setting
311
  'help_message' => '',
312
  );
313
 
314
-
315
  $type = $this->get_multi_id_poll_settings_value( $multi_id, 'type', '' );
316
  switch ( $type ) {
317
  case Forminator_Addon_Slack::TARGET_TYPE_PRIVATE_CHANNEL:
@@ -331,7 +331,6 @@ class Forminator_Addon_Slack_Poll_Settings extends Forminator_Addon_Poll_Setting
331
  break;
332
  }
333
 
334
-
335
  $is_submit = ! empty( $submitted_data );
336
  $has_errors = false;
337
 
@@ -388,15 +387,16 @@ class Forminator_Addon_Slack_Poll_Settings extends Forminator_Addon_Poll_Setting
388
 
389
  $buttons = array();
390
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
391
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
392
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
393
- esc_html__( 'Deactivate this Slack Integration from this Poll.', Forminator::DOMAIN )
 
394
  );
395
  }
396
 
397
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
398
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
399
- '</div>';
400
 
401
  return array(
402
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -501,15 +501,16 @@ class Forminator_Addon_Slack_Poll_Settings extends Forminator_Addon_Poll_Setting
501
 
502
  $buttons = array();
503
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
504
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
505
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
506
- esc_html__( 'Deactivate this Slack Integration from this Poll.', Forminator::DOMAIN )
 
507
  );
508
  }
509
 
510
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
511
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'CONNECT', Forminator::DOMAIN ), 'forminator-addon-next' ) .
512
- '</div>';
513
 
514
  return array(
515
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-slack-poll-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Slack_Poll_Settings
124
 
125
  $buttons = array();
126
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
127
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
128
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
129
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
130
+ esc_html__( 'Deactivate this Slack Integration from this Poll.', Forminator::DOMAIN )
131
  );
132
  }
133
 
134
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
135
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
136
+ '</div>';
137
 
138
  return array(
139
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
197
  'error_message' => '',
198
  );
199
 
 
200
  $is_submit = ! empty( $submitted_data );
201
  $has_errors = false;
202
 
232
 
233
  $buttons = array();
234
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
235
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
236
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
237
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
238
+ esc_html__( 'Deactivate this Slack Integration from this Poll.', Forminator::DOMAIN )
239
  );
240
  }
241
 
242
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
243
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
244
+ '</div>';
245
 
246
  return array(
247
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
312
  'help_message' => '',
313
  );
314
 
 
315
  $type = $this->get_multi_id_poll_settings_value( $multi_id, 'type', '' );
316
  switch ( $type ) {
317
  case Forminator_Addon_Slack::TARGET_TYPE_PRIVATE_CHANNEL:
331
  break;
332
  }
333
 
 
334
  $is_submit = ! empty( $submitted_data );
335
  $has_errors = false;
336
 
387
 
388
  $buttons = array();
389
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
390
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
391
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
392
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
393
+ esc_html__( 'Deactivate this Slack Integration from this Poll.', Forminator::DOMAIN )
394
  );
395
  }
396
 
397
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
398
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
399
+ '</div>';
400
 
401
  return array(
402
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
501
 
502
  $buttons = array();
503
  if ( $this->pick_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
504
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
505
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
506
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
507
+ esc_html__( 'Deactivate this Slack Integration from this Poll.', Forminator::DOMAIN )
508
  );
509
  }
510
 
511
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
512
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'CONNECT', Forminator::DOMAIN ), 'forminator-addon-next' ) .
513
+ '</div>';
514
 
515
  return array(
516
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
addons/pro/slack/{forminator-addon-slack-quiz-hooks.php → class-forminator-addon-slack-quiz-hooks.php} RENAMED
@@ -82,7 +82,6 @@ class Forminator_Addon_Slack_Quiz_Hooks extends Forminator_Addon_Quiz_Hooks_Abst
82
  'value' => $this->get_status_on_send_message( $key, $submitted_data, $addon_setting_value, $form_entry_fields ),
83
  );
84
  }
85
-
86
  }
87
 
88
  $entry_fields = $data;
@@ -143,7 +142,7 @@ class Forminator_Addon_Slack_Quiz_Hooks extends Forminator_Addon_Quiz_Hooks_Abst
143
  $text_message = $connection_settings['message'];
144
  $text_message = forminator_replace_variables( $text_message );
145
 
146
- // {quiz_name_replace}
147
  $text_message = str_ireplace( '{quiz_name}', forminator_get_name_from_model( $this->quiz ), $text_message );
148
 
149
  $attachments = $this->get_quiz_data_as_attachments( $submitted_data, $quiz_entry_fields );
@@ -252,7 +251,6 @@ class Forminator_Addon_Slack_Quiz_Hooks extends Forminator_Addon_Quiz_Hooks_Abst
252
  public function get_quiz_data_as_attachments( $submitted_data, $quiz_entry_fields ) {
253
  $attachments = array();
254
 
255
-
256
  /**
257
  * Attachment 1
258
  * Answers
@@ -288,9 +286,9 @@ class Forminator_Addon_Slack_Quiz_Hooks extends Forminator_Addon_Quiz_Hooks_Abst
288
  }
289
  } elseif ( 'nowrong' === $this->quiz->quiz_type ) {
290
  if ( isset( $quiz_entry['value'][0] )
291
- && is_array( $quiz_entry['value'][0] )
292
- && isset( $quiz_entry['value'][0]['value'] )
293
- && is_array( $quiz_entry['value'][0]['value'] ) ) {
294
 
295
  $quiz_entry = $quiz_entry['value'][0]['value'];
296
 
@@ -311,7 +309,6 @@ class Forminator_Addon_Slack_Quiz_Hooks extends Forminator_Addon_Quiz_Hooks_Abst
311
  }
312
  }
313
  }
314
-
315
  }
316
  }
317
  }
@@ -334,7 +331,6 @@ class Forminator_Addon_Slack_Quiz_Hooks extends Forminator_Addon_Quiz_Hooks_Abst
334
  $attachments[] = $attachment;
335
  }
336
 
337
-
338
  /**
339
  * Attachment 2
340
  * Result
@@ -366,7 +362,6 @@ class Forminator_Addon_Slack_Quiz_Hooks extends Forminator_Addon_Quiz_Hooks_Abst
366
  'color' => 'warning',
367
  );
368
 
369
-
370
  return $attachments;
371
  }
372
 
@@ -499,7 +494,6 @@ class Forminator_Addon_Slack_Quiz_Hooks extends Forminator_Addon_Quiz_Hooks_Abst
499
  $quiz_settings_instance
500
  );
501
 
502
-
503
  $addon_meta_datas = $addon_meta_data;
504
  if ( ! isset( $addon_meta_data[0] ) || ! is_array( $addon_meta_data[0] ) ) {
505
  return array();
@@ -555,7 +549,6 @@ class Forminator_Addon_Slack_Quiz_Hooks extends Forminator_Addon_Quiz_Hooks_Abst
555
  'value' => '',
556
  );
557
 
558
-
559
  $sub_entries = array();
560
  if ( isset( $status['connection_name'] ) ) {
561
  $sub_entries[] = array(
@@ -603,7 +596,6 @@ class Forminator_Addon_Slack_Quiz_Hooks extends Forminator_Addon_Quiz_Hooks_Abst
603
  }
604
  }
605
 
606
-
607
  $additional_entry_item['sub_entries'] = $sub_entries;
608
 
609
  // return single array
82
  'value' => $this->get_status_on_send_message( $key, $submitted_data, $addon_setting_value, $form_entry_fields ),
83
  );
84
  }
 
85
  }
86
 
87
  $entry_fields = $data;
142
  $text_message = $connection_settings['message'];
143
  $text_message = forminator_replace_variables( $text_message );
144
 
145
+ // {quiz_name_replace} //phpcs:ignore
146
  $text_message = str_ireplace( '{quiz_name}', forminator_get_name_from_model( $this->quiz ), $text_message );
147
 
148
  $attachments = $this->get_quiz_data_as_attachments( $submitted_data, $quiz_entry_fields );
251
  public function get_quiz_data_as_attachments( $submitted_data, $quiz_entry_fields ) {
252
  $attachments = array();
253
 
 
254
  /**
255
  * Attachment 1
256
  * Answers
286
  }
287
  } elseif ( 'nowrong' === $this->quiz->quiz_type ) {
288
  if ( isset( $quiz_entry['value'][0] )
289
+ && is_array( $quiz_entry['value'][0] )
290
+ && isset( $quiz_entry['value'][0]['value'] )
291
+ && is_array( $quiz_entry['value'][0]['value'] ) ) {
292
 
293
  $quiz_entry = $quiz_entry['value'][0]['value'];
294
 
309
  }
310
  }
311
  }
 
312
  }
313
  }
314
  }
331
  $attachments[] = $attachment;
332
  }
333
 
 
334
  /**
335
  * Attachment 2
336
  * Result
362
  'color' => 'warning',
363
  );
364
 
 
365
  return $attachments;
366
  }
367
 
494
  $quiz_settings_instance
495
  );
496
 
 
497
  $addon_meta_datas = $addon_meta_data;
498
  if ( ! isset( $addon_meta_data[0] ) || ! is_array( $addon_meta_data[0] ) ) {
499
  return array();
549
  'value' => '',
550
  );
551
 
 
552
  $sub_entries = array();
553
  if ( isset( $status['connection_name'] ) ) {
554
  $sub_entries[] = array(
596
  }
597
  }
598
 
 
599
  $additional_entry_item['sub_entries'] = $sub_entries;
600
 
601
  // return single array
addons/pro/slack/{forminator-addon-slack-quiz-settings-exception.php → class-forminator-addon-slack-quiz-settings-exception.php} RENAMED
File without changes
addons/pro/slack/{forminator-addon-slack-quiz-settings.php → class-forminator-addon-slack-quiz-settings.php} RENAMED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/forminator-addon-slack-quiz-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Slack_Quiz_Settings
@@ -132,8 +132,8 @@ class Forminator_Addon_Slack_Quiz_Settings extends Forminator_Addon_Quiz_Setting
132
  }
133
 
134
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
135
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
136
- '</div>';
137
 
138
  return array(
139
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -197,7 +197,6 @@ class Forminator_Addon_Slack_Quiz_Settings extends Forminator_Addon_Quiz_Setting
197
  'error_message' => '',
198
  );
199
 
200
-
201
  $is_submit = ! empty( $submitted_data );
202
  $has_errors = false;
203
 
@@ -241,8 +240,8 @@ class Forminator_Addon_Slack_Quiz_Settings extends Forminator_Addon_Quiz_Setting
241
  }
242
 
243
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
244
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
245
- '</div>';
246
 
247
  return array(
248
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -313,7 +312,6 @@ class Forminator_Addon_Slack_Quiz_Settings extends Forminator_Addon_Quiz_Setting
313
  'help_message' => '',
314
  );
315
 
316
-
317
  $type = $this->get_multi_id_quiz_settings_value( $multi_id, 'type', '' );
318
  switch ( $type ) {
319
  case Forminator_Addon_Slack::TARGET_TYPE_PRIVATE_CHANNEL:
@@ -333,7 +331,6 @@ class Forminator_Addon_Slack_Quiz_Settings extends Forminator_Addon_Quiz_Setting
333
  break;
334
  }
335
 
336
-
337
  $is_submit = ! empty( $submitted_data );
338
  $has_errors = false;
339
 
@@ -398,8 +395,8 @@ class Forminator_Addon_Slack_Quiz_Settings extends Forminator_Addon_Quiz_Setting
398
  }
399
 
400
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
401
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
402
- '</div>';
403
 
404
  return array(
405
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -512,8 +509,8 @@ class Forminator_Addon_Slack_Quiz_Settings extends Forminator_Addon_Quiz_Setting
512
  }
513
 
514
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
515
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'CONNECT', Forminator::DOMAIN ), 'forminator-addon-next' ) .
516
- '</div>';
517
 
518
  return array(
519
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-slack-quiz-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Slack_Quiz_Settings
132
  }
133
 
134
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
135
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
136
+ '</div>';
137
 
138
  return array(
139
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
197
  'error_message' => '',
198
  );
199
 
 
200
  $is_submit = ! empty( $submitted_data );
201
  $has_errors = false;
202
 
240
  }
241
 
242
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
243
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
244
+ '</div>';
245
 
246
  return array(
247
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
312
  'help_message' => '',
313
  );
314
 
 
315
  $type = $this->get_multi_id_quiz_settings_value( $multi_id, 'type', '' );
316
  switch ( $type ) {
317
  case Forminator_Addon_Slack::TARGET_TYPE_PRIVATE_CHANNEL:
331
  break;
332
  }
333
 
 
334
  $is_submit = ! empty( $submitted_data );
335
  $has_errors = false;
336
 
395
  }
396
 
397
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
398
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
399
+ '</div>';
400
 
401
  return array(
402
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
509
  }
510
 
511
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
512
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'CONNECT', Forminator::DOMAIN ), 'forminator-addon-next' ) .
513
+ '</div>';
514
 
515
  return array(
516
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
addons/pro/slack/{forminator-addon-slack.php → class-forminator-addon-slack.php} RENAMED
@@ -1,7 +1,7 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/forminator-addon-slack-exception.php';
4
- require_once dirname( __FILE__ ) . '/lib/class-wp-slack-api.php';
5
 
6
  /**
7
  * Class Forminator_Addon_Slack
@@ -46,7 +46,7 @@ final class Forminator_Addon_Slack extends Forminator_Addon_Abstract {
46
  protected $_quiz_settings = 'Forminator_Addon_Slack_Quiz_Settings';
47
  protected $_quiz_hooks = 'Forminator_Addon_Slack_Quiz_Hooks';
48
 
49
- protected $_position = 4;
50
 
51
  /**
52
  * Forminator_Addon_Slack constructor.
@@ -108,7 +108,6 @@ final class Forminator_Addon_Slack extends Forminator_Addon_Abstract {
108
  if ( isset( $setting_values['token'] ) && ! empty( $setting_values['token'] ) ) {
109
  $is_connected = true;
110
  }
111
-
112
  } catch ( Forminator_Addon_Slack_Exception $e ) {
113
  $is_connected = false;
114
  }
@@ -282,12 +281,12 @@ final class Forminator_Addon_Slack extends Forminator_Addon_Abstract {
282
  'markup' => self::get_button_markup( esc_html__( 'Disconnect', Forminator::DOMAIN ), 'sui-button-ghost forminator-addon-disconnect' ),
283
  );
284
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
285
- self::get_button_markup( esc_html__( 'RE-AUTHORIZE', Forminator::DOMAIN ), 'forminator-addon-next' ) .
286
- '</div>';
287
  } else {
288
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
289
- self::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
290
- '</div>';
291
  }
292
 
293
  $template_params = array(
@@ -326,7 +325,6 @@ final class Forminator_Addon_Slack extends Forminator_Addon_Abstract {
326
  }
327
  }
328
 
329
-
330
  if ( $is_submit ) {
331
  $client_id = isset( $submitted_data['client_id'] ) ? $submitted_data['client_id'] : '';
332
  $client_secret = isset( $submitted_data['client_secret'] ) ? $submitted_data['client_secret'] : '';
@@ -358,7 +356,6 @@ final class Forminator_Addon_Slack extends Forminator_Addon_Abstract {
358
  $has_errors = true;
359
  }
360
  }
361
-
362
  }
363
 
364
  return array(
@@ -405,7 +402,6 @@ final class Forminator_Addon_Slack extends Forminator_Addon_Abstract {
405
  );
406
  }
407
 
408
-
409
  $template_params = array(
410
  'auth_url' => $this->get_auth_url(),
411
  'token' => $this->_token,
@@ -676,7 +672,6 @@ final class Forminator_Addon_Slack extends Forminator_Addon_Abstract {
676
  // catch all exception
677
  $template_params['error_message'] = $e->getMessage();
678
  }
679
-
680
  } else {
681
  $template_params['error_message'] = __( 'Failed to get authorization code.', Forminator::DOMAIN );
682
  // todo : translate $query_args[error]
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-slack-exception.php';
4
+ require_once dirname( __FILE__ ) . '/lib/class-forminator-addon-slack-wp-api.php';
5
 
6
  /**
7
  * Class Forminator_Addon_Slack
46
  protected $_quiz_settings = 'Forminator_Addon_Slack_Quiz_Settings';
47
  protected $_quiz_hooks = 'Forminator_Addon_Slack_Quiz_Hooks';
48
 
49
+ protected $_position = 4;
50
 
51
  /**
52
  * Forminator_Addon_Slack constructor.
108
  if ( isset( $setting_values['token'] ) && ! empty( $setting_values['token'] ) ) {
109
  $is_connected = true;
110
  }
 
111
  } catch ( Forminator_Addon_Slack_Exception $e ) {
112
  $is_connected = false;
113
  }
281
  'markup' => self::get_button_markup( esc_html__( 'Disconnect', Forminator::DOMAIN ), 'sui-button-ghost forminator-addon-disconnect' ),
282
  );
283
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
284
+ self::get_button_markup( esc_html__( 'RE-AUTHORIZE', Forminator::DOMAIN ), 'forminator-addon-next' ) .
285
+ '</div>';
286
  } else {
287
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
288
+ self::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
289
+ '</div>';
290
  }
291
 
292
  $template_params = array(
325
  }
326
  }
327
 
 
328
  if ( $is_submit ) {
329
  $client_id = isset( $submitted_data['client_id'] ) ? $submitted_data['client_id'] : '';
330
  $client_secret = isset( $submitted_data['client_secret'] ) ? $submitted_data['client_secret'] : '';
356
  $has_errors = true;
357
  }
358
  }
 
359
  }
360
 
361
  return array(
402
  );
403
  }
404
 
 
405
  $template_params = array(
406
  'auth_url' => $this->get_auth_url(),
407
  'token' => $this->_token,
672
  // catch all exception
673
  $template_params['error_message'] = $e->getMessage();
674
  }
 
675
  } else {
676
  $template_params['error_message'] = __( 'Failed to get authorization code.', Forminator::DOMAIN );
677
  // todo : translate $query_args[error]
addons/pro/slack/lib/{class-wp-slack-api-exception.php → class-forminator-addon-slack-wp-api-exception.php} RENAMED
File without changes
addons/pro/slack/lib/{class-wp-slack-api-not-found-exception.php → class-forminator-addon-slack-wp-api-not-found-exception.php} RENAMED
File without changes
addons/pro/slack/lib/{class-wp-slack-api.php → class-forminator-addon-slack-wp-api.php} RENAMED
@@ -1,7 +1,7 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/class-wp-slack-api-exception.php';
4
- require_once dirname( __FILE__ ) . '/class-wp-slack-api-not-found-exception.php';
5
 
6
  /**
7
  * Class Forminator_Addon_Slack_Wp_Api
@@ -133,7 +133,7 @@ class Forminator_Addon_Slack_Wp_Api {
133
  * @throws Forminator_Addon_Slack_Wp_Api_Exception
134
  * @throws Forminator_Addon_Slack_Wp_Api_Not_Found_Exception
135
  */
136
- private function _request( $verb = 'GET', $path, $args = array() ) {
137
  // Adding extra user agent for wp remote request
138
  add_filter( 'http_headers_useragent', array( $this, 'filter_user_agent' ) );
139
 
@@ -218,9 +218,10 @@ class Forminator_Addon_Slack_Wp_Api {
218
  }
219
 
220
  if ( 404 === $status_code ) {
 
221
  throw new Forminator_Addon_Slack_Wp_Api_Not_Found_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
222
  }
223
- // /* translators: ... */
224
  throw new Forminator_Addon_Slack_Wp_Api_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
225
  }
226
  }
@@ -235,6 +236,7 @@ class Forminator_Addon_Slack_Wp_Api {
235
  if ( isset( $res->error ) ) {
236
  $msg = $res->error;
237
  }
 
238
  throw new Forminator_Addon_Slack_Wp_Api_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
239
  }
240
  }
@@ -272,7 +274,7 @@ class Forminator_Addon_Slack_Wp_Api {
272
  );
273
  $args = array_merge( $default_args, $args );
274
 
275
- return $this->_request(
276
  'GET',
277
  'oauth.access',
278
  $args
@@ -296,7 +298,7 @@ class Forminator_Addon_Slack_Wp_Api {
296
  );
297
  $args = array_merge( $default_args, $args );
298
 
299
- return $this->_request(
300
  'GET',
301
  'users.list',
302
  $args
@@ -322,7 +324,7 @@ class Forminator_Addon_Slack_Wp_Api {
322
  );
323
  $args = array_merge( $default_args, $args );
324
 
325
- return $this->_request(
326
  'GET',
327
  'channels.list',
328
  $args
@@ -347,7 +349,7 @@ class Forminator_Addon_Slack_Wp_Api {
347
  );
348
  $args = array_merge( $default_args, $args );
349
 
350
- return $this->_request(
351
  'GET',
352
  'groups.list',
353
  $args
@@ -374,7 +376,7 @@ class Forminator_Addon_Slack_Wp_Api {
374
  );
375
  $args = array_merge( $default_args, $args );
376
 
377
- return $this->_request(
378
  'POST',
379
  'chat.postMessage',
380
  $args
@@ -401,7 +403,7 @@ class Forminator_Addon_Slack_Wp_Api {
401
  );
402
  $args = array_merge( $default_args, $args );
403
 
404
- return $this->_request(
405
  'POST',
406
  'chat.delete',
407
  $args
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-slack-wp-api-exception.php';
4
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-slack-wp-api-not-found-exception.php';
5
 
6
  /**
7
  * Class Forminator_Addon_Slack_Wp_Api
133
  * @throws Forminator_Addon_Slack_Wp_Api_Exception
134
  * @throws Forminator_Addon_Slack_Wp_Api_Not_Found_Exception
135
  */
136
+ private function request( $verb = 'GET', $path, $args = array() ) {
137
  // Adding extra user agent for wp remote request
138
  add_filter( 'http_headers_useragent', array( $this, 'filter_user_agent' ) );
139
 
218
  }
219
 
220
  if ( 404 === $status_code ) {
221
+ /* translators: ... */
222
  throw new Forminator_Addon_Slack_Wp_Api_Not_Found_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
223
  }
224
+ /* translators: ... */
225
  throw new Forminator_Addon_Slack_Wp_Api_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
226
  }
227
  }
236
  if ( isset( $res->error ) ) {
237
  $msg = $res->error;
238
  }
239
+ /* translators: ... */
240
  throw new Forminator_Addon_Slack_Wp_Api_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
241
  }
242
  }
274
  );
275
  $args = array_merge( $default_args, $args );
276
 
277
+ return $this->request(
278
  'GET',
279
  'oauth.access',
280
  $args
298
  );
299
  $args = array_merge( $default_args, $args );
300
 
301
+ return $this->request(
302
  'GET',
303
  'users.list',
304
  $args
324
  );
325
  $args = array_merge( $default_args, $args );
326
 
327
+ return $this->request(
328
  'GET',
329
  'channels.list',
330
  $args
349
  );
350
  $args = array_merge( $default_args, $args );
351
 
352
+ return $this->request(
353
  'GET',
354
  'groups.list',
355
  $args
376
  );
377
  $args = array_merge( $default_args, $args );
378
 
379
+ return $this->request(
380
  'POST',
381
  'chat.postMessage',
382
  $args
403
  );
404
  $args = array_merge( $default_args, $args );
405
 
406
+ return $this->request(
407
  'POST',
408
  'chat.delete',
409
  $args
addons/pro/slack/slack.php CHANGED
@@ -23,16 +23,16 @@ function forminator_addon_slack_assets_url() {
23
  return trailingslashit( forminator_addon_slack_url() . 'assets' );
24
  }
25
 
26
- require_once dirname( __FILE__ ) . '/forminator-addon-slack.php';
27
 
28
- require_once dirname( __FILE__ ) . '/forminator-addon-slack-form-settings.php';
29
- require_once dirname( __FILE__ ) . '/forminator-addon-slack-form-hooks.php';
30
 
31
- require_once dirname( __FILE__ ) . '/forminator-addon-slack-poll-settings.php';
32
- require_once dirname( __FILE__ ) . '/forminator-addon-slack-poll-hooks.php';
33
 
34
- require_once dirname( __FILE__ ) . '/forminator-addon-slack-quiz-settings.php';
35
- require_once dirname( __FILE__ ) . '/forminator-addon-slack-quiz-hooks.php';
36
 
37
  //Direct Load
38
  Forminator_Addon_Loader::get_instance()->register( 'Forminator_Addon_Slack' );
23
  return trailingslashit( forminator_addon_slack_url() . 'assets' );
24
  }
25
 
26
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-slack.php';
27
 
28
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-slack-form-settings.php';
29
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-slack-form-hooks.php';
30
 
31
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-slack-poll-settings.php';
32
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-slack-poll-hooks.php';
33
 
34
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-slack-quiz-settings.php';
35
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-slack-quiz-hooks.php';
36
 
37
  //Direct Load
38
  Forminator_Addon_Loader::get_instance()->register( 'Forminator_Addon_Slack' );
addons/pro/slack/views/form-settings/setup-message.php CHANGED
@@ -29,9 +29,9 @@ foreach ( $template_vars as $key => $val ) {
29
  <div class="sui-insert-variables">
30
 
31
  <textarea id="slack_message"
32
- class="sui-form-control"
33
- name="message"
34
- placeholder="<?php echo esc_attr( __( 'Message', Forminator::DOMAIN ) ); ?>"><?php echo esc_html( $vars['message'] ); ?></textarea>
35
 
36
  <select data-textarea-id="slack_message">
37
  <?php foreach ( $vars['fields'] as $field ) : ?>
@@ -48,8 +48,12 @@ foreach ( $template_vars as $key => $val ) {
48
  <a href="https://get.slack.help/hc/en-us/articles/202288908-how-can-i-add-formatting-to-my-messages" target="_blank"><?php esc_html_e( 'here.', Forminator::DOMAIN ); ?></a>.
49
  </span>
50
  <span class="sui-description">
51
- <?php esc_html_e( 'By default sent message will include ALL FIELDS as attachment using Forminator Format to ease you up, more information about attachment can be found ',
52
- Forminator::DOMAIN ); ?>
 
 
 
 
53
  <a href="https://api.slack.com/docs/message-attachments" target="_blank"><?php esc_html_e( 'here.', Forminator::DOMAIN ); ?></a>.
54
  </span>
55
 
29
  <div class="sui-insert-variables">
30
 
31
  <textarea id="slack_message"
32
+ class="sui-form-control"
33
+ name="message"
34
+ placeholder="<?php echo esc_attr( __( 'Message', Forminator::DOMAIN ) ); ?>"><?php echo esc_html( $vars['message'] ); ?></textarea>
35
 
36
  <select data-textarea-id="slack_message">
37
  <?php foreach ( $vars['fields'] as $field ) : ?>
48
  <a href="https://get.slack.help/hc/en-us/articles/202288908-how-can-i-add-formatting-to-my-messages" target="_blank"><?php esc_html_e( 'here.', Forminator::DOMAIN ); ?></a>.
49
  </span>
50
  <span class="sui-description">
51
+ <?php
52
+ esc_html_e(
53
+ 'By default sent message will include ALL FIELDS as attachment using Forminator Format to ease you up, more information about attachment can be found ',
54
+ Forminator::DOMAIN
55
+ );
56
+ ?>
57
  <a href="https://api.slack.com/docs/message-attachments" target="_blank"><?php esc_html_e( 'here.', Forminator::DOMAIN ); ?></a>.
58
  </span>
59
 
addons/pro/slack/views/poll-settings/setup-message.php CHANGED
@@ -29,14 +29,14 @@ foreach ( $template_vars as $key => $val ) {
29
  <div class="sui-insert-variables">
30
 
31
  <textarea id="slack_message"
32
- class="sui-form-control"
33
- name="message"
34
- placeholder="<?php echo esc_attr( __( 'Message', Forminator::DOMAIN ) ); ?>"><?php echo esc_html( $vars['message'] ); ?></textarea>
35
 
36
  <select data-textarea-id="slack_message">
37
- <?php foreach ( $vars['tags'] as $tag => $label ) : ?>
38
- <option value="{<?php echo esc_attr( $tag ); ?>}"
39
- data-content="{<?php echo esc_attr( $tag ); ?>}"><?php echo esc_html( $label ); ?></option>
40
  <?php endforeach; ?></select>
41
 
42
  </div>
@@ -49,8 +49,12 @@ foreach ( $template_vars as $key => $val ) {
49
  <a href="https://get.slack.help/hc/en-us/articles/202288908-how-can-i-add-formatting-to-my-messages" target="_blank"><?php esc_html_e( 'here.', Forminator::DOMAIN ); ?></a>.
50
  </span>
51
  <span class="sui-description">
52
- <?php esc_html_e( 'By default sent message will include Poll Answer and Poll Results as attachment using Forminator Format to ease you up, more information about attachment can be found ',
53
- Forminator::DOMAIN ); ?>
 
 
 
 
54
  <a href="https://api.slack.com/docs/message-attachments" target="_blank"><?php esc_html_e( 'here', Forminator::DOMAIN ); ?></a>
55
  </span>
56
 
29
  <div class="sui-insert-variables">
30
 
31
  <textarea id="slack_message"
32
+ class="sui-form-control"
33
+ name="message"
34
+ placeholder="<?php echo esc_attr( __( 'Message', Forminator::DOMAIN ) ); ?>"><?php echo esc_html( $vars['message'] ); ?></textarea>
35
 
36
  <select data-textarea-id="slack_message">
37
+ <?php foreach ( $vars['tags'] as $key => $label ) : ?>
38
+ <option value="{<?php echo esc_attr( $key ); ?>}"
39
+ data-content="{<?php echo esc_attr( $key ); ?>}"><?php echo esc_html( $label ); ?></option>
40
  <?php endforeach; ?></select>
41
 
42
  </div>
49
  <a href="https://get.slack.help/hc/en-us/articles/202288908-how-can-i-add-formatting-to-my-messages" target="_blank"><?php esc_html_e( 'here.', Forminator::DOMAIN ); ?></a>.
50
  </span>
51
  <span class="sui-description">
52
+ <?php
53
+ esc_html_e(
54
+ 'By default sent message will include Poll Answer and Poll Results as attachment using Forminator Format to ease you up, more information about attachment can be found ',
55
+ Forminator::DOMAIN
56
+ );
57
+ ?>
58
  <a href="https://api.slack.com/docs/message-attachments" target="_blank"><?php esc_html_e( 'here', Forminator::DOMAIN ); ?></a>
59
  </span>
60
 
addons/pro/slack/views/quiz-settings/setup-message.php CHANGED
@@ -29,14 +29,14 @@ foreach ( $template_vars as $key => $val ) {
29
  <div class="sui-insert-variables">
30
 
31
  <textarea id="slack_message"
32
- class="sui-form-control"
33
- name="message"
34
- placeholder="<?php echo esc_attr( __( 'Message', Forminator::DOMAIN ) ); ?>"><?php echo esc_html( $vars['message'] ); ?></textarea>
35
 
36
  <select data-textarea-id="slack_message">
37
  <?php foreach ( $vars['tags'] as $short_tag => $label ) : ?>
38
  <option value="{<?php echo esc_attr( $short_tag ); ?>}"
39
- data-content="{<?php echo esc_attr( $short_tag ); ?>}"><?php echo esc_html( $label ); ?></option>
40
  <?php endforeach; ?></select>
41
 
42
  </div>
@@ -49,10 +49,12 @@ foreach ( $template_vars as $key => $val ) {
49
  <a href="https://get.slack.help/hc/en-us/articles/202288908-how-can-i-add-formatting-to-my-messages" target="_blank"><?php esc_html_e( 'here.', Forminator::DOMAIN ); ?></a>.
50
  </span>
51
  <span class="sui-description">
52
- <?php esc_html_e(
 
53
  'By default sent message will include Quiz Answer and Quiz Result as attachment using Forminator Format to ease you up, more information about attachment can be found ',
54
  Forminator::DOMAIN
55
- ); ?>
 
56
  <a href="https://api.slack.com/docs/message-attachments" target="_blank"><?php esc_html_e( 'here', Forminator::DOMAIN ); ?></a>
57
  </span>
58
 
29
  <div class="sui-insert-variables">
30
 
31
  <textarea id="slack_message"
32
+ class="sui-form-control"
33
+ name="message"
34
+ placeholder="<?php echo esc_attr( __( 'Message', Forminator::DOMAIN ) ); ?>"><?php echo esc_html( $vars['message'] ); ?></textarea>
35
 
36
  <select data-textarea-id="slack_message">
37
  <?php foreach ( $vars['tags'] as $short_tag => $label ) : ?>
38
  <option value="{<?php echo esc_attr( $short_tag ); ?>}"
39
+ data-content="{<?php echo esc_attr( $short_tag ); ?>}"><?php echo esc_html( $label ); ?></option>
40
  <?php endforeach; ?></select>
41
 
42
  </div>
49
  <a href="https://get.slack.help/hc/en-us/articles/202288908-how-can-i-add-formatting-to-my-messages" target="_blank"><?php esc_html_e( 'here.', Forminator::DOMAIN ); ?></a>.
50
  </span>
51
  <span class="sui-description">
52
+ <?php
53
+ esc_html_e(
54
  'By default sent message will include Quiz Answer and Quiz Result as attachment using Forminator Format to ease you up, more information about attachment can be found ',
55
  Forminator::DOMAIN
56
+ );
57
+ ?>
58
  <a href="https://api.slack.com/docs/message-attachments" target="_blank"><?php esc_html_e( 'here', Forminator::DOMAIN ); ?></a>
59
  </span>
60
 
addons/pro/slack/views/sections/authorize.php CHANGED
@@ -13,17 +13,18 @@ foreach ( $template_vars as $key => $val ) {
13
  <div id="forminator-integrations" class="wpmudev-settings--box">
14
  <div class="sui-box">
15
  <div class="sui-box-header">
16
- <h2 class="sui-box-title"><?php esc_html_e( "Authorizing Slack", Forminator::DOMAIN ); ?></h2>
17
  </div>
18
  <div class="sui-box-body">
19
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
20
  <span class="sui-notice sui-notice-error"><p><?php echo esc_html( $vars['error_message'] ); ?></p></span>
21
- <?php elseif ( $vars['is_close'] ): ?>
22
  <span class="sui-notice sui-notice-success">
23
  <p>
24
  <?php
25
- esc_html_e( 'Successfully authorized Slack, you can go back to integration settings.',
26
- Forminator::DOMAIN
 
27
  );
28
  ?>
29
  </p>
@@ -40,7 +41,7 @@ foreach ( $template_vars as $key => $val ) {
40
  <script>
41
  (function ($) {
42
  $(document).ready(function (e) {
43
- <?php if ($vars['is_close']): ?>
44
  setTimeout(function () {
45
  window.close();
46
  }, 3000);
13
  <div id="forminator-integrations" class="wpmudev-settings--box">
14
  <div class="sui-box">
15
  <div class="sui-box-header">
16
+ <h2 class="sui-box-title"><?php esc_html_e( 'Authorizing Slack', Forminator::DOMAIN ); ?></h2>
17
  </div>
18
  <div class="sui-box-body">
19
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
20
  <span class="sui-notice sui-notice-error"><p><?php echo esc_html( $vars['error_message'] ); ?></p></span>
21
+ <?php elseif ( $vars['is_close'] ) : ?>
22
  <span class="sui-notice sui-notice-success">
23
  <p>
24
  <?php
25
+ esc_html_e(
26
+ 'Successfully authorized Slack, you can go back to integration settings.',
27
+ Forminator::DOMAIN
28
  );
29
  ?>
30
  </p>
41
  <script>
42
  (function ($) {
43
  $(document).ready(function (e) {
44
+ <?php if ( $vars['is_close'] ) : ?>
45
  setTimeout(function () {
46
  window.close();
47
  }, 3000);
addons/pro/slack/views/settings/authorize.php CHANGED
@@ -10,7 +10,12 @@ foreach ( $template_vars as $key => $val ) {
10
  }
11
  ?>
12
  <div class="integration-header">
13
- <h3 class="sui-box-title" id="dialogTitle2"><?php echo esc_html( sprintf( __( 'Connect %1$s', Forminator::DOMAIN ), 'Slack' ) ); ?></h3>
 
 
 
 
 
14
  <?php if ( ! empty( $vars['token'] ) ) : ?>
15
  <p><?php esc_html_e( 'Click button below to re-authorize.', Forminator::DOMAIN ); ?> </p>
16
  <?php else : ?>
10
  }
11
  ?>
12
  <div class="integration-header">
13
+ <h3 class="sui-box-title" id="dialogTitle2">
14
+ <?php
15
+ /* translators: ... */
16
+ echo esc_html( sprintf( __( 'Connect %1$s', Forminator::DOMAIN ), 'Slack' ) );
17
+ ?>
18
+ </h3>
19
  <?php if ( ! empty( $vars['token'] ) ) : ?>
20
  <p><?php esc_html_e( 'Click button below to re-authorize.', Forminator::DOMAIN ); ?> </p>
21
  <?php else : ?>
addons/pro/slack/views/settings/error-authorize.php CHANGED
@@ -11,7 +11,10 @@ foreach ( $template_vars as $key => $val ) {
11
  ?>
12
  <div class="integration-header">
13
  <h3 class="sui-box-title" id="dialogTitle2">
14
- <?php echo esc_html( sprintf( __( 'Failed to add %1$s', Forminator::DOMAIN ), 'Slack' ) ); ?>
 
 
 
15
  </h3>
16
  <p>
17
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
11
  ?>
12
  <div class="integration-header">
13
  <h3 class="sui-box-title" id="dialogTitle2">
14
+ <?php
15
+ /* translators: ... */
16
+ echo esc_html( sprintf( __( 'Failed to add %1$s', Forminator::DOMAIN ), 'Slack' ) );
17
+ ?>
18
  </h3>
19
  <p>
20
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
addons/pro/slack/views/settings/setup-client.php CHANGED
@@ -15,7 +15,12 @@ foreach ( $template_vars as $key => $val ) {
15
  }
16
  ?>
17
  <div class="integration-header">
18
- <h3 class="sui-box-title" id="dialogTitle2"><?php echo esc_html( sprintf( __( 'Setup %1$s Client', Forminator::DOMAIN ), 'Slack' ) ); ?></h3>
 
 
 
 
 
19
  <?php if ( ! empty( $vars['token'] ) ) : ?>
20
  <p><?php esc_html_e( 'Your Slack account is already authorized. Edit info below to re-authorize.', Forminator::DOMAIN ); ?> </p>
21
  <?php else : ?>
@@ -49,54 +54,79 @@ foreach ( $template_vars as $key => $val ) {
49
  <?php esc_html_e( 'Follow these instructions to retrieve your Client ID and Secret.', Forminator::DOMAIN ); ?>
50
  <ol class="instructions" id="clientid-instructions">
51
  <li>
52
- <?php echo sprintf(
53
- __( 'Go %1$s to create new Slack App.', Forminator::DOMAIN ),
54
- '<a href="https://api.slack.com/apps?new_app=1" target="_blank">' . __( 'here', Forminator::DOMAIN ) . '</a>'
55
- ); //wpcs: xss ok?>
 
 
 
56
  </li>
57
  <li>
58
- <?php esc_html_e(
 
59
  'You will need to enter App Name and Development Slack Workspace.',
60
  Forminator::DOMAIN
61
- ); ?>
 
62
  </li>
63
  <li>
64
- <?php echo sprintf(
65
- __( 'Once the Project creation is completed go to the %1$s. Then scroll through %2$s, to take a note of %3$s and %4$s.', Forminator::DOMAIN ),
66
- '<strong>' . __( 'Basic Information', Forminator::DOMAIN ) . '</strong>',
67
- '<strong>' . __( 'App Credentials', Forminator::DOMAIN ) . '</strong>',
68
- '<strong>' . __( 'Client ID', Forminator::DOMAIN ) . '</strong>',
69
- '<strong>' . __( 'Client Secret', Forminator::DOMAIN ) . '</strong>'
70
- ); //wpcs: xss ok?>
 
 
 
 
 
 
71
  </li>
72
  <li>
73
- <?php echo sprintf(
74
- __( 'Next, go to the %1$s &gt; %2$s &gt; %3$s section.', Forminator::DOMAIN ),
75
- '<strong>' . __( 'Features', Forminator::DOMAIN ) . '</strong>',
76
- '<strong>' . __( 'OAuth & Permissions', Forminator::DOMAIN ) . '</strong>',
77
- '<strong>' . __( 'Redirect URLs', Forminator::DOMAIN ) . '</strong>'
78
- ); //wpcs: xss ok?>
 
 
 
 
 
79
  <ol>
80
  <li>
81
- <?php echo sprintf(
82
- __( 'Click %1$s.', Forminator::DOMAIN ),
83
- '<strong>' . __( 'Add a new Redirect URL', Forminator::DOMAIN ) . '</strong>'
84
- ); //wpcs: xss ok?>
 
 
 
85
  </li>
86
  <li>
87
  <?php esc_html_e( 'In the shown input field, put this value below', Forminator::DOMAIN ); ?>
88
  <pre class="sui-code-snippet"><?php echo esc_html( ! empty( $vars['redirect_url'] ) ? $vars['redirect_url'] : '' ); ?></pre>.</li>
89
  <li>
90
- <?php echo sprintf(
91
- __( 'Then click the %1$s button.', Forminator::DOMAIN ),
92
- '<strong>' . __( 'Add', Forminator::DOMAIN ) . '</strong>'
93
- ); //wpcs: xss ok?>
 
 
 
94
  </li>
95
  <li>
96
- <?php echo sprintf(
97
- __( 'Then click the %1$s button.', Forminator::DOMAIN ),
98
- '<strong>' . __( 'Save URLs', Forminator::DOMAIN ) . '</strong>'
99
- ); //wpcs: xss ok?>
 
 
 
100
  </li>
101
  </ol>
102
  </ol>
15
  }
16
  ?>
17
  <div class="integration-header">
18
+ <h3 class="sui-box-title" id="dialogTitle2">
19
+ <?php
20
+ /* translators: ... */
21
+ echo esc_html( sprintf( __( 'Setup %1$s Client', Forminator::DOMAIN ), 'Slack' ) );
22
+ ?>
23
+ </h3>
24
  <?php if ( ! empty( $vars['token'] ) ) : ?>
25
  <p><?php esc_html_e( 'Your Slack account is already authorized. Edit info below to re-authorize.', Forminator::DOMAIN ); ?> </p>
26
  <?php else : ?>
54
  <?php esc_html_e( 'Follow these instructions to retrieve your Client ID and Secret.', Forminator::DOMAIN ); ?>
55
  <ol class="instructions" id="clientid-instructions">
56
  <li>
57
+ <?php
58
+ echo sprintf(/* translators: ... */
59
+ esc_html__( 'Go %1$shere%2$s to create new Slack App.', Forminator::DOMAIN ),
60
+ '<a href="https://api.slack.com/apps?new_app=1" target="_blank">',
61
+ '</a>'
62
+ ); //phpcs:ignore Standard.Category.SniffName.ErrorCode
63
+ ?>
64
  </li>
65
  <li>
66
+ <?php
67
+ esc_html_e(
68
  'You will need to enter App Name and Development Slack Workspace.',
69
  Forminator::DOMAIN
70
+ );
71
+ ?>
72
  </li>
73
  <li>
74
+ <?php
75
+ echo sprintf(/* translators: ... */
76
+ esc_html__( 'Once the Project creation is completed go to the %1$sBasic Information%2$s. Then scroll through %3$sApp Credentials%4$s, to take a note of %5$sClient ID%6$s and %7$sClient Secret%8$s.', Forminator::DOMAIN ),
77
+ '<strong>',
78
+ '</strong>',
79
+ '<strong>',
80
+ '</strong>',
81
+ '<strong>',
82
+ '</strong>',
83
+ '<strong>',
84
+ '</strong>'
85
+ ); //phpcs:ignore Standard.Category.SniffName.ErrorCode
86
+ ?>
87
  </li>
88
  <li>
89
+ <?php
90
+ echo sprintf(/* translators: ... */
91
+ esc_html__( 'Next, go to the %1$sFeatures%2$s &gt; %3$sOAuth & Permissions%4$s &gt; %5$sRedirect URLs%6$s section.', Forminator::DOMAIN ),
92
+ '<strong>',
93
+ '</strong>',
94
+ '<strong>',
95
+ '</strong>',
96
+ '<strong>',
97
+ '</strong>'
98
+ ); //phpcs:ignore Standard.Category.SniffName.ErrorCode
99
+ ?>
100
  <ol>
101
  <li>
102
+ <?php
103
+ echo sprintf(/* translators: ... */
104
+ esc_html__( 'Click %1$sAdd a new Redirect URL%2$s.', Forminator::DOMAIN ),
105
+ '<strong>',
106
+ '</strong>'
107
+ ); //phpcs:ignore Standard.Category.SniffName.ErrorCode
108
+ ?>
109
  </li>
110
  <li>
111
  <?php esc_html_e( 'In the shown input field, put this value below', Forminator::DOMAIN ); ?>
112
  <pre class="sui-code-snippet"><?php echo esc_html( ! empty( $vars['redirect_url'] ) ? $vars['redirect_url'] : '' ); ?></pre>.</li>
113
  <li>
114
+ <?php
115
+ echo sprintf(/* translators: ... */
116
+ esc_html__( 'Then click the %1$sAdd%2$s button.', Forminator::DOMAIN ),
117
+ '<strong>',
118
+ '</strong>'
119
+ ); //phpcs:ignore Standard.Category.SniffName.ErrorCode
120
+ ?>
121
  </li>
122
  <li>
123
+ <?php
124
+ echo sprintf(/* translators: ... */
125
+ esc_html__( 'Then click the %1$sSave URLs%2$s button.', Forminator::DOMAIN ),
126
+ '<strong>',
127
+ '</strong>'
128
+ ); //phpcs:ignore Standard.Category.SniffName.ErrorCode
129
+ ?>
130
  </li>
131
  </ol>
132
  </ol>
addons/pro/slack/views/settings/success-authorize.php CHANGED
@@ -1,6 +1,9 @@
1
  <div class="integration-header">
2
  <h3 class="sui-box-title" id="dialogTitle2">
3
- <?php echo esc_html( sprintf( __( '%1$s Added', Forminator::DOMAIN ), 'Slack' ) ); ?>
 
 
 
4
  </h3>
5
  <p><?php esc_html_e( 'You can now go to your forms and assign them to this integration', Forminator::DOMAIN ); ?></p>
6
  </div>
1
  <div class="integration-header">
2
  <h3 class="sui-box-title" id="dialogTitle2">
3
+ <?php
4
+ /* translators: ... */
5
+ echo esc_html( sprintf( __( '%1$s Added', Forminator::DOMAIN ), 'Slack' ) );
6
+ ?>
7
  </h3>
8
  <p><?php esc_html_e( 'You can now go to your forms and assign them to this integration', Forminator::DOMAIN ); ?></p>
9
  </div>
addons/pro/slack/views/settings/wait-authorize.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  // defaults
3
  $vars = array(
4
- 'auth_url' => '',
5
- 'token' => '',
6
  );
7
  /** @var array $template_vars */
8
  foreach ( $template_vars as $key => $val ) {
1
  <?php
2
  // defaults
3
  $vars = array(
4
+ 'auth_url' => '',
5
+ 'token' => '',
6
  );
7
  /** @var array $template_vars */
8
  foreach ( $template_vars as $key => $val ) {
addons/pro/trello/{forminator-addon-trello-exception.php → class-forminator-addon-trello-exception.php} RENAMED
File without changes
addons/pro/trello/{forminator-addon-trello-form-hooks.php → class-forminator-addon-trello-form-hooks.php} RENAMED
@@ -119,7 +119,6 @@ class Forminator_Addon_Trello_Form_Hooks extends Forminator_Addon_Form_Hooks_Abs
119
  'value' => $this->get_status_on_create_card( $key, $submitted_data, $addon_setting_value, $form_entry_fields ),
120
  );
121
  }
122
-
123
  }
124
 
125
  $entry_fields = $data;
@@ -333,12 +332,12 @@ class Forminator_Addon_Trello_Form_Hooks extends Forminator_Addon_Form_Hooks_Abs
333
 
334
  $post_element_id = $element_id;
335
  if ( stripos( $field_type, 'postdata' ) !== false ) {
336
- $post_type = $form_field['post_type'];
337
- $category_list = forminator_post_categories( $post_type );
338
  $post_element_id = str_ireplace( '-post-title', '', $post_element_id );
339
  $post_element_id = str_ireplace( '-post-content', '', $post_element_id );
340
  $post_element_id = str_ireplace( '-post-excerpt', '', $post_element_id );
341
- if( ! empty ( $category_list ) ) {
342
  foreach ( $category_list as $category ) {
343
  $post_element_id = str_ireplace( '-' . $category['value'], '', $post_element_id );
344
  $field_format[] = 'postdata-' . $category['value'];
@@ -346,7 +345,6 @@ class Forminator_Addon_Trello_Form_Hooks extends Forminator_Addon_Form_Hooks_Abs
346
  }
347
  $post_element_id = str_ireplace( '-post-image', '', $post_element_id );
348
 
349
-
350
  // only add postdata as single
351
  if ( in_array( $post_element_id, $post_element_ids, true ) ) {
352
  continue;
@@ -372,7 +370,7 @@ class Forminator_Addon_Trello_Form_Hooks extends Forminator_Addon_Form_Hooks_Abs
372
  break;
373
  }
374
 
375
- if( in_array( $field_type, $field_format, true ) ) {
376
 
377
  $value_format = '[' . __( 'Edit Post', Forminator::DOMAIN ) . ']({' . $post_element_id . '})';
378
  }
@@ -465,7 +463,6 @@ class Forminator_Addon_Trello_Form_Hooks extends Forminator_Addon_Form_Hooks_Abs
465
  $form_settings_instance
466
  );
467
 
468
-
469
  $addon_meta_datas = $addon_meta_data;
470
  if ( ! isset( $addon_meta_data[0] ) || ! is_array( $addon_meta_data[0] ) ) {
471
  return array();
@@ -521,7 +518,6 @@ class Forminator_Addon_Trello_Form_Hooks extends Forminator_Addon_Form_Hooks_Abs
521
  'value' => '',
522
  );
523
 
524
-
525
  $sub_entries = array();
526
  if ( isset( $status['connection_name'] ) ) {
527
  $sub_entries[] = array(
@@ -569,7 +565,6 @@ class Forminator_Addon_Trello_Form_Hooks extends Forminator_Addon_Form_Hooks_Abs
569
  }
570
  }
571
 
572
-
573
  $additional_entry_item['sub_entries'] = $sub_entries;
574
 
575
  // return single array
119
  'value' => $this->get_status_on_create_card( $key, $submitted_data, $addon_setting_value, $form_entry_fields ),
120
  );
121
  }
 
122
  }
123
 
124
  $entry_fields = $data;
332
 
333
  $post_element_id = $element_id;
334
  if ( stripos( $field_type, 'postdata' ) !== false ) {
335
+ $post_type = $form_field['post_type'];
336
+ $category_list = forminator_post_categories( $post_type );
337
  $post_element_id = str_ireplace( '-post-title', '', $post_element_id );
338
  $post_element_id = str_ireplace( '-post-content', '', $post_element_id );
339
  $post_element_id = str_ireplace( '-post-excerpt', '', $post_element_id );
340
+ if ( ! empty( $category_list ) ) {
341
  foreach ( $category_list as $category ) {
342
  $post_element_id = str_ireplace( '-' . $category['value'], '', $post_element_id );
343
  $field_format[] = 'postdata-' . $category['value'];
345
  }
346
  $post_element_id = str_ireplace( '-post-image', '', $post_element_id );
347
 
 
348
  // only add postdata as single
349
  if ( in_array( $post_element_id, $post_element_ids, true ) ) {
350
  continue;
370
  break;
371
  }
372
 
373
+ if ( in_array( $field_type, $field_format, true ) ) {
374
 
375
  $value_format = '[' . __( 'Edit Post', Forminator::DOMAIN ) . ']({' . $post_element_id . '})';
376
  }
463
  $form_settings_instance
464
  );
465
 
 
466
  $addon_meta_datas = $addon_meta_data;
467
  if ( ! isset( $addon_meta_data[0] ) || ! is_array( $addon_meta_data[0] ) ) {
468
  return array();
518
  'value' => '',
519
  );
520
 
 
521
  $sub_entries = array();
522
  if ( isset( $status['connection_name'] ) ) {
523
  $sub_entries[] = array(
565
  }
566
  }
567
 
 
568
  $additional_entry_item['sub_entries'] = $sub_entries;
569
 
570
  // return single array
addons/pro/trello/{forminator-addon-trello-form-settings-exception.php → class-forminator-addon-trello-form-settings-exception.php} RENAMED
File without changes
addons/pro/trello/{forminator-addon-trello-form-settings.php → class-forminator-addon-trello-form-settings.php} RENAMED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/forminator-addon-trello-form-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Trello_Form_Settings
@@ -116,15 +116,16 @@ class Forminator_Addon_Trello_Form_Settings extends Forminator_Addon_Form_Settin
116
 
117
  $buttons = array();
118
  if ( $this->setup_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
119
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
120
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
121
- esc_html__( 'Deactivate this Trello Integration from this Form.', Forminator::DOMAIN )
 
122
  );
123
  }
124
 
125
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
126
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
127
- '</div>';
128
 
129
  return array(
130
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -189,7 +190,6 @@ class Forminator_Addon_Trello_Form_Settings extends Forminator_Addon_Form_Settin
189
  'boards' => array(),
190
  );
191
 
192
-
193
  $is_submit = ! empty( $submitted_data );
194
  $has_errors = false;
195
 
@@ -249,15 +249,16 @@ class Forminator_Addon_Trello_Form_Settings extends Forminator_Addon_Form_Settin
249
 
250
  $buttons = array();
251
  if ( $this->setup_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
252
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
253
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
254
- esc_html__( 'Deactivate this Trello Integration from this Form.', Forminator::DOMAIN )
 
255
  );
256
  }
257
 
258
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
259
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
260
- '</div>';
261
 
262
  return array(
263
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -345,6 +346,7 @@ class Forminator_Addon_Trello_Form_Settings extends Forminator_Addon_Form_Settin
345
  }
346
 
347
  if ( empty( $lists ) ) {
 
348
  throw new Forminator_Addon_Trello_Exception( sprintf( __( 'No list found on Trello Board of %1$s. Please create one.', Forminator::DOMAIN ), $board_name ) );
349
  }
350
 
@@ -387,15 +389,16 @@ class Forminator_Addon_Trello_Form_Settings extends Forminator_Addon_Form_Settin
387
 
388
  $buttons = array();
389
  if ( $this->setup_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
390
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
391
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
392
- esc_html__( 'Deactivate this Trello Integration from this Form.', Forminator::DOMAIN )
 
393
  );
394
  }
395
 
396
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
397
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
398
- '</div>';
399
 
400
  return array(
401
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -523,7 +526,6 @@ class Forminator_Addon_Trello_Form_Settings extends Forminator_Addon_Form_Settin
523
  $members[ $data->id ] = $display_name;
524
  }
525
  }
526
-
527
  } catch ( Forminator_Addon_Trello_Exception $e ) {
528
  $template_params['error_message'] = $e->getMessage();
529
  $has_errors = true;
@@ -625,15 +627,16 @@ class Forminator_Addon_Trello_Form_Settings extends Forminator_Addon_Form_Settin
625
 
626
  $buttons = array();
627
  if ( $this->setup_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
628
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
629
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
630
- esc_html__( 'Deactivate this Trello Integration from this Form.', Forminator::DOMAIN )
 
631
  );
632
  }
633
 
634
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
635
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Save', Forminator::DOMAIN ), 'sui-button-primary forminator-addon-finish' ) .
636
- '</div>';
637
 
638
  return array(
639
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -765,7 +768,6 @@ class Forminator_Addon_Trello_Form_Settings extends Forminator_Addon_Form_Settin
765
  return false;
766
  }
767
 
768
-
769
  return true;
770
  }
771
  }
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-trello-form-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Trello_Form_Settings
116
 
117
  $buttons = array();
118
  if ( $this->setup_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
119
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
120
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
121
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
122
+ esc_html__( 'Deactivate this Trello Integration from this Form.', Forminator::DOMAIN )
123
  );
124
  }
125
 
126
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
127
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
128
+ '</div>';
129
 
130
  return array(
131
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
190
  'boards' => array(),
191
  );
192
 
 
193
  $is_submit = ! empty( $submitted_data );
194
  $has_errors = false;
195
 
249
 
250
  $buttons = array();
251
  if ( $this->setup_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
252
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
253
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
254
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
255
+ esc_html__( 'Deactivate this Trello Integration from this Form.', Forminator::DOMAIN )
256
  );
257
  }
258
 
259
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
260
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
261
+ '</div>';
262
 
263
  return array(
264
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
346
  }
347
 
348
  if ( empty( $lists ) ) {
349
+ /* translators: ... */
350
  throw new Forminator_Addon_Trello_Exception( sprintf( __( 'No list found on Trello Board of %1$s. Please create one.', Forminator::DOMAIN ), $board_name ) );
351
  }
352
 
389
 
390
  $buttons = array();
391
  if ( $this->setup_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
392
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
393
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
394
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
395
+ esc_html__( 'Deactivate this Trello Integration from this Form.', Forminator::DOMAIN )
396
  );
397
  }
398
 
399
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
400
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
401
+ '</div>';
402
 
403
  return array(
404
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
526
  $members[ $data->id ] = $display_name;
527
  }
528
  }
 
529
  } catch ( Forminator_Addon_Trello_Exception $e ) {
530
  $template_params['error_message'] = $e->getMessage();
531
  $has_errors = true;
627
 
628
  $buttons = array();
629
  if ( $this->setup_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
630
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
631
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
632
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
633
+ esc_html__( 'Deactivate this Trello Integration from this Form.', Forminator::DOMAIN )
634
  );
635
  }
636
 
637
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
638
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Save', Forminator::DOMAIN ), 'sui-button-primary forminator-addon-finish' ) .
639
+ '</div>';
640
 
641
  return array(
642
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
768
  return false;
769
  }
770
 
 
771
  return true;
772
  }
773
  }
addons/pro/trello/{forminator-addon-trello-poll-hooks.php → class-forminator-addon-trello-poll-hooks.php} RENAMED
@@ -93,7 +93,6 @@ class Forminator_Addon_Trello_Poll_Hooks extends Forminator_Addon_Poll_Hooks_Abs
93
  $poll_settings_instance
94
  );
95
 
96
-
97
  $addon_setting_values = $this->poll_settings_instance->get_poll_settings_values();
98
 
99
  $data = array();
@@ -118,7 +117,6 @@ class Forminator_Addon_Trello_Poll_Hooks extends Forminator_Addon_Poll_Hooks_Abs
118
  'value' => $this->get_status_on_create_card( $key, $submitted_data, $addon_setting_value, $current_entry_fields ),
119
  );
120
  }
121
-
122
  }
123
 
124
  $entry_fields = $data;
@@ -180,7 +178,7 @@ class Forminator_Addon_Trello_Poll_Hooks extends Forminator_Addon_Poll_Hooks_Abs
180
  $card_name = $connection_settings['card_name'];
181
  // disable all_fields here
182
  $card_name = forminator_replace_variables( $card_name );
183
- // {poll_name_replace}
184
  $card_name = str_ireplace( '{poll_name}', forminator_get_name_from_model( $this->poll ), $card_name );
185
  $card_name = str_ireplace( '{poll_answer}', $this->poll_answer_to_plain_text( $submitted_data ), $card_name );
186
  $card_name = str_ireplace( '{poll_result}', $this->poll_result_to_plain_text( $submitted_data ), $card_name );
@@ -332,7 +330,7 @@ class Forminator_Addon_Trello_Poll_Hooks extends Forminator_Addon_Poll_Hooks_Abs
332
 
333
  $poll_name = forminator_get_name_from_model( $this->poll );
334
 
335
- $markdown = "##" . $poll_name . "\n";
336
 
337
  /**
338
  * Filter markdown for `poll_answer`
@@ -369,13 +367,12 @@ class Forminator_Addon_Trello_Poll_Hooks extends Forminator_Addon_Poll_Hooks_Abs
369
  $answer = isset( $fields_labels[ $answer_data ] ) ? $fields_labels[ $answer_data ] : $answer_data;
370
  $extra = $extra_field;
371
 
372
- $markdown = "##" . __( 'Poll Answer', Forminator::DOMAIN ) . "\n";
373
  $markdown .= '**' . __( 'Vote', Forminator::DOMAIN ) . ':** ' . $answer;
374
  if ( ! empty( $extra ) ) {
375
  $markdown .= "\n**" . __( 'Extra', Forminator::DOMAIN ) . ':** ' . $extra;
376
  }
377
 
378
-
379
  /**
380
  * Filter markdown for `poll_answer`
381
  *
@@ -439,7 +436,6 @@ class Forminator_Addon_Trello_Poll_Hooks extends Forminator_Addon_Poll_Hooks_Abs
439
  }
440
  }
441
 
442
-
443
  /**
444
  * Filter markdown for `poll_result`
445
  *
@@ -482,7 +478,6 @@ class Forminator_Addon_Trello_Poll_Hooks extends Forminator_Addon_Poll_Hooks_Abs
482
  $plain_text .= ', ' . $extra;
483
  }
484
 
485
-
486
  /**
487
  * Filter plain text for `poll_answer`
488
  *
@@ -546,7 +541,6 @@ class Forminator_Addon_Trello_Poll_Hooks extends Forminator_Addon_Poll_Hooks_Abs
546
  }
547
  }
548
 
549
-
550
  /**
551
  * Filter markdown for `poll_result`
552
  *
93
  $poll_settings_instance
94
  );
95
 
 
96
  $addon_setting_values = $this->poll_settings_instance->get_poll_settings_values();
97
 
98
  $data = array();
117
  'value' => $this->get_status_on_create_card( $key, $submitted_data, $addon_setting_value, $current_entry_fields ),
118
  );
119
  }
 
120
  }
121
 
122
  $entry_fields = $data;
178
  $card_name = $connection_settings['card_name'];
179
  // disable all_fields here
180
  $card_name = forminator_replace_variables( $card_name );
181
+ // {poll_name_replace} //phpcs:ignore
182
  $card_name = str_ireplace( '{poll_name}', forminator_get_name_from_model( $this->poll ), $card_name );
183
  $card_name = str_ireplace( '{poll_answer}', $this->poll_answer_to_plain_text( $submitted_data ), $card_name );
184
  $card_name = str_ireplace( '{poll_result}', $this->poll_result_to_plain_text( $submitted_data ), $card_name );
330
 
331
  $poll_name = forminator_get_name_from_model( $this->poll );
332
 
333
+ $markdown = '##' . $poll_name . "\n";
334
 
335
  /**
336
  * Filter markdown for `poll_answer`
367
  $answer = isset( $fields_labels[ $answer_data ] ) ? $fields_labels[ $answer_data ] : $answer_data;
368
  $extra = $extra_field;
369
 
370
+ $markdown = '##' . __( 'Poll Answer', Forminator::DOMAIN ) . "\n";
371
  $markdown .= '**' . __( 'Vote', Forminator::DOMAIN ) . ':** ' . $answer;
372
  if ( ! empty( $extra ) ) {
373
  $markdown .= "\n**" . __( 'Extra', Forminator::DOMAIN ) . ':** ' . $extra;
374
  }
375
 
 
376
  /**
377
  * Filter markdown for `poll_answer`
378
  *
436
  }
437
  }
438
 
 
439
  /**
440
  * Filter markdown for `poll_result`
441
  *
478
  $plain_text .= ', ' . $extra;
479
  }
480
 
 
481
  /**
482
  * Filter plain text for `poll_answer`
483
  *
541
  }
542
  }
543
 
 
544
  /**
545
  * Filter markdown for `poll_result`
546
  *
addons/pro/trello/{forminator-addon-trello-poll-settings-exception.php → class-forminator-addon-trello-poll-settings-exception.php} RENAMED
File without changes
addons/pro/trello/{forminator-addon-trello-poll-settings.php → class-forminator-addon-trello-poll-settings.php} RENAMED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/forminator-addon-trello-poll-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Trello_Poll_Settings
@@ -116,15 +116,16 @@ class Forminator_Addon_Trello_Poll_Settings extends Forminator_Addon_Poll_Settin
116
 
117
  $buttons = array();
118
  if ( $this->setup_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
119
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
120
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
121
- esc_html__( 'Deactivate this Trello Integration from this Poll.', Forminator::DOMAIN )
 
122
  );
123
  }
124
 
125
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
126
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
127
- '</div>';
128
 
129
  return array(
130
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -189,7 +190,6 @@ class Forminator_Addon_Trello_Poll_Settings extends Forminator_Addon_Poll_Settin
189
  'boards' => array(),
190
  );
191
 
192
-
193
  $is_submit = ! empty( $submitted_data );
194
  $has_errors = false;
195
 
@@ -249,15 +249,16 @@ class Forminator_Addon_Trello_Poll_Settings extends Forminator_Addon_Poll_Settin
249
 
250
  $buttons = array();
251
  if ( $this->setup_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
252
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
253
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
254
- esc_html__( 'Deactivate this Trello Integration from this Poll.', Forminator::DOMAIN )
 
255
  );
256
  }
257
 
258
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
259
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
260
- '</div>';
261
 
262
  return array(
263
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -345,6 +346,7 @@ class Forminator_Addon_Trello_Poll_Settings extends Forminator_Addon_Poll_Settin
345
  }
346
 
347
  if ( empty( $lists ) ) {
 
348
  throw new Forminator_Addon_Trello_Exception( sprintf( __( 'No list found on Trello Board of %1$s. Please create one.', Forminator::DOMAIN ), $board_name ) );
349
  }
350
 
@@ -387,15 +389,16 @@ class Forminator_Addon_Trello_Poll_Settings extends Forminator_Addon_Poll_Settin
387
 
388
  $buttons = array();
389
  if ( $this->setup_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
390
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
391
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
392
- esc_html__( 'Deactivate this Trello Integration from this Poll.', Forminator::DOMAIN )
 
393
  );
394
  }
395
 
396
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
397
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
398
- '</div>';
399
 
400
  return array(
401
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -461,7 +464,6 @@ class Forminator_Addon_Trello_Poll_Settings extends Forminator_Addon_Poll_Settin
461
  //todo: validate this, step wizard back if needed
462
  $board_id = $this->get_multi_id_poll_settings_value( $multi_id, 'board_id', '' );
463
 
464
-
465
  $template_params = array(
466
  'card_name' => $this->get_multi_id_poll_settings_value( $multi_id, 'card_name', 'New votes from {poll_name}' ),
467
  'card_name_error' => '',
@@ -531,7 +533,6 @@ class Forminator_Addon_Trello_Poll_Settings extends Forminator_Addon_Poll_Settin
531
  $members[ $data->id ] = $display_name;
532
  }
533
  }
534
-
535
  } catch ( Forminator_Addon_Trello_Exception $e ) {
536
  $template_params['error_message'] = $e->getMessage();
537
  $has_errors = true;
@@ -633,15 +634,16 @@ class Forminator_Addon_Trello_Poll_Settings extends Forminator_Addon_Poll_Settin
633
 
634
  $buttons = array();
635
  if ( $this->setup_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
636
- $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
637
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
638
- esc_html__( 'Deactivate this Trello Integration from this Poll.', Forminator::DOMAIN )
 
639
  );
640
  }
641
 
642
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
643
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Save', Forminator::DOMAIN ), 'sui-button-primary forminator-addon-finish' ) .
644
- '</div>';
645
 
646
  return array(
647
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -773,7 +775,6 @@ class Forminator_Addon_Trello_Poll_Settings extends Forminator_Addon_Poll_Settin
773
  return false;
774
  }
775
 
776
-
777
  return true;
778
  }
779
  }
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-trello-poll-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Trello_Poll_Settings
116
 
117
  $buttons = array();
118
  if ( $this->setup_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
119
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
120
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
121
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
122
+ esc_html__( 'Deactivate this Trello Integration from this Poll.', Forminator::DOMAIN )
123
  );
124
  }
125
 
126
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
127
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
128
+ '</div>';
129
 
130
  return array(
131
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
190
  'boards' => array(),
191
  );
192
 
 
193
  $is_submit = ! empty( $submitted_data );
194
  $has_errors = false;
195
 
249
 
250
  $buttons = array();
251
  if ( $this->setup_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
252
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
253
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
254
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
255
+ esc_html__( 'Deactivate this Trello Integration from this Poll.', Forminator::DOMAIN )
256
  );
257
  }
258
 
259
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
260
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
261
+ '</div>';
262
 
263
  return array(
264
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
346
  }
347
 
348
  if ( empty( $lists ) ) {
349
+ /* translators: ... */
350
  throw new Forminator_Addon_Trello_Exception( sprintf( __( 'No list found on Trello Board of %1$s. Please create one.', Forminator::DOMAIN ), $board_name ) );
351
  }
352
 
389
 
390
  $buttons = array();
391
  if ( $this->setup_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
392
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
393
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
394
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
395
+ esc_html__( 'Deactivate this Trello Integration from this Poll.', Forminator::DOMAIN )
396
  );
397
  }
398
 
399
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
400
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
401
+ '</div>';
402
 
403
  return array(
404
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
464
  //todo: validate this, step wizard back if needed
465
  $board_id = $this->get_multi_id_poll_settings_value( $multi_id, 'board_id', '' );
466
 
 
467
  $template_params = array(
468
  'card_name' => $this->get_multi_id_poll_settings_value( $multi_id, 'card_name', 'New votes from {poll_name}' ),
469
  'card_name_error' => '',
533
  $members[ $data->id ] = $display_name;
534
  }
535
  }
 
536
  } catch ( Forminator_Addon_Trello_Exception $e ) {
537
  $template_params['error_message'] = $e->getMessage();
538
  $has_errors = true;
634
 
635
  $buttons = array();
636
  if ( $this->setup_name_is_completed( array( 'multi_id' => $multi_id ) ) ) {
637
+ $buttons['disconnect']['markup'] = Forminator_Addon_Abstract::get_button_markup(
638
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
639
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
640
+ esc_html__( 'Deactivate this Trello Integration from this Poll.', Forminator::DOMAIN )
641
  );
642
  }
643
 
644
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
645
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Save', Forminator::DOMAIN ), 'sui-button-primary forminator-addon-finish' ) .
646
+ '</div>';
647
 
648
  return array(
649
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
775
  return false;
776
  }
777
 
 
778
  return true;
779
  }
780
  }
addons/pro/trello/{forminator-addon-trello-quiz-hooks.php → class-forminator-addon-trello-quiz-hooks.php} RENAMED
@@ -93,7 +93,6 @@ class Forminator_Addon_Trello_Quiz_Hooks extends Forminator_Addon_Quiz_Hooks_Abs
93
  $quiz_settings_instance
94
  );
95
 
96
-
97
  $addon_setting_values = $this->quiz_settings_instance->get_quiz_settings_values();
98
 
99
  $data = array();
@@ -118,7 +117,6 @@ class Forminator_Addon_Trello_Quiz_Hooks extends Forminator_Addon_Quiz_Hooks_Abs
118
  'value' => $this->get_status_on_create_card( $key, $submitted_data, $addon_setting_value, $current_entry_fields ),
119
  );
120
  }
121
-
122
  }
123
 
124
  $entry_fields = $data;
@@ -180,7 +178,7 @@ class Forminator_Addon_Trello_Quiz_Hooks extends Forminator_Addon_Quiz_Hooks_Abs
180
  $card_name = $connection_settings['card_name'];
181
  // disable all_fields here
182
  $card_name = forminator_replace_variables( $card_name );
183
- // {quizname_replace}
184
  $card_name = str_ireplace( '{quiz_name}', forminator_get_name_from_model( $this->quiz ), $card_name );
185
 
186
  /**
@@ -338,18 +336,17 @@ class Forminator_Addon_Trello_Quiz_Hooks extends Forminator_Addon_Quiz_Hooks_Abs
338
  $answer = isset( $data['answer'] ) ? $data['answer'] : '';
339
  $is_correct = isset( $data['isCorrect'] ) ? $data['isCorrect'] : false;
340
 
341
- $markdown .= "###" . $question . "\n";
342
  $markdown .= $answer . "\n";
343
  $markdown .= __( 'Correct : ', Forminator::DOMAIN )
344
- . '**' . ( $is_correct ? __( 'Yes', Forminator::DOMAIN ) : __( 'No', Forminator::DOMAIN ) ) . '**'
345
- . "\n";
346
  }
347
-
348
  } elseif ( 'nowrong' === $this->quiz->quiz_type ) {
349
  if ( isset( $quiz_entry['value'][0] )
350
- && is_array( $quiz_entry['value'][0] )
351
- && isset( $quiz_entry['value'][0]['value'] )
352
- && is_array( $quiz_entry['value'][0]['value'] ) ) {
353
 
354
  $quiz_entry = $quiz_entry['value'][0]['value'];
355
 
@@ -359,7 +356,7 @@ class Forminator_Addon_Trello_Quiz_Hooks extends Forminator_Addon_Quiz_Hooks_Abs
359
  $question = isset( $entry_question['question'] ) ? $entry_question['question'] : '';
360
  $answer = isset( $entry_question['answer'] ) ? $entry_question['answer'] : '';
361
 
362
- $markdown .= "###" . $question . "\n";
363
  $markdown .= $answer . "\n";
364
  }
365
  }
@@ -414,24 +411,24 @@ class Forminator_Addon_Trello_Quiz_Hooks extends Forminator_Addon_Quiz_Hooks_Abs
414
 
415
  $markdown .= '##' . __( 'Quiz Result', Forminator::DOMAIN ) . "\n";
416
  $markdown .= __( 'Correct Answers : ', Forminator::DOMAIN )
417
- . '**' . $total_correct . '**'
418
- . "\n";
419
  $markdown .= __( 'Total Answers : ', Forminator::DOMAIN )
420
- . '**' . $total_answers . '**'
421
- . "\n";
422
 
423
  } elseif ( 'nowrong' === $this->quiz->quiz_type ) {
424
  if ( isset( $quiz_entry['value'][0] )
425
- && is_array( $quiz_entry['value'][0] )
426
- && isset( $quiz_entry['value'][0]['value'] )
427
- && is_array( $quiz_entry['value'][0]['value'] ) ) {
428
 
429
  $quiz_entry = $quiz_entry['value'][0]['value'];
430
  $nowrong_result = ( isset( $quiz_entry['result'] ) && isset( $quiz_entry['result']['title'] ) ) ? $quiz_entry['result']['title'] : '';
431
 
432
  $markdown .= '##' . __( 'Quiz Result', Forminator::DOMAIN ) . "\n";
433
  $markdown .= '**' . $nowrong_result . '**'
434
- . "\n";
435
 
436
  }
437
  }
@@ -584,7 +581,6 @@ class Forminator_Addon_Trello_Quiz_Hooks extends Forminator_Addon_Quiz_Hooks_Abs
584
  $quiz_settings_instance
585
  );
586
 
587
-
588
  $addon_meta_datas = $addon_meta_data;
589
  if ( ! isset( $addon_meta_data[0] ) || ! is_array( $addon_meta_data[0] ) ) {
590
  return array();
@@ -640,7 +636,6 @@ class Forminator_Addon_Trello_Quiz_Hooks extends Forminator_Addon_Quiz_Hooks_Abs
640
  'value' => '',
641
  );
642
 
643
-
644
  $sub_entries = array();
645
  if ( isset( $status['connection_name'] ) ) {
646
  $sub_entries[] = array(
@@ -688,7 +683,6 @@ class Forminator_Addon_Trello_Quiz_Hooks extends Forminator_Addon_Quiz_Hooks_Abs
688
  }
689
  }
690
 
691
-
692
  $additional_entry_item['sub_entries'] = $sub_entries;
693
 
694
  // return single array
93
  $quiz_settings_instance
94
  );
95
 
 
96
  $addon_setting_values = $this->quiz_settings_instance->get_quiz_settings_values();
97
 
98
  $data = array();
117
  'value' => $this->get_status_on_create_card( $key, $submitted_data, $addon_setting_value, $current_entry_fields ),
118
  );
119
  }
 
120
  }
121
 
122
  $entry_fields = $data;
178
  $card_name = $connection_settings['card_name'];
179
  // disable all_fields here
180
  $card_name = forminator_replace_variables( $card_name );
181
+ // {quizname_replace} //phpcs:ignore
182
  $card_name = str_ireplace( '{quiz_name}', forminator_get_name_from_model( $this->quiz ), $card_name );
183
 
184
  /**
336
  $answer = isset( $data['answer'] ) ? $data['answer'] : '';
337
  $is_correct = isset( $data['isCorrect'] ) ? $data['isCorrect'] : false;
338
 
339
+ $markdown .= '###' . $question . "\n";
340
  $markdown .= $answer . "\n";
341
  $markdown .= __( 'Correct : ', Forminator::DOMAIN )
342
+ . '**' . ( $is_correct ? __( 'Yes', Forminator::DOMAIN ) : __( 'No', Forminator::DOMAIN ) ) . '**'
343
+ . "\n";
344
  }
 
345
  } elseif ( 'nowrong' === $this->quiz->quiz_type ) {
346
  if ( isset( $quiz_entry['value'][0] )
347
+ && is_array( $quiz_entry['value'][0] )
348
+ && isset( $quiz_entry['value'][0]['value'] )
349
+ && is_array( $quiz_entry['value'][0]['value'] ) ) {
350
 
351
  $quiz_entry = $quiz_entry['value'][0]['value'];
352
 
356
  $question = isset( $entry_question['question'] ) ? $entry_question['question'] : '';
357
  $answer = isset( $entry_question['answer'] ) ? $entry_question['answer'] : '';
358
 
359
+ $markdown .= '###' . $question . "\n";
360
  $markdown .= $answer . "\n";
361
  }
362
  }
411
 
412
  $markdown .= '##' . __( 'Quiz Result', Forminator::DOMAIN ) . "\n";
413
  $markdown .= __( 'Correct Answers : ', Forminator::DOMAIN )
414
+ . '**' . $total_correct . '**'
415
+ . "\n";
416
  $markdown .= __( 'Total Answers : ', Forminator::DOMAIN )
417
+ . '**' . $total_answers . '**'
418
+ . "\n";
419
 
420
  } elseif ( 'nowrong' === $this->quiz->quiz_type ) {
421
  if ( isset( $quiz_entry['value'][0] )
422
+ && is_array( $quiz_entry['value'][0] )
423
+ && isset( $quiz_entry['value'][0]['value'] )
424
+ && is_array( $quiz_entry['value'][0]['value'] ) ) {
425
 
426
  $quiz_entry = $quiz_entry['value'][0]['value'];
427
  $nowrong_result = ( isset( $quiz_entry['result'] ) && isset( $quiz_entry['result']['title'] ) ) ? $quiz_entry['result']['title'] : '';
428
 
429
  $markdown .= '##' . __( 'Quiz Result', Forminator::DOMAIN ) . "\n";
430
  $markdown .= '**' . $nowrong_result . '**'
431
+ . "\n";
432
 
433
  }
434
  }
581
  $quiz_settings_instance
582
  );
583
 
 
584
  $addon_meta_datas = $addon_meta_data;
585
  if ( ! isset( $addon_meta_data[0] ) || ! is_array( $addon_meta_data[0] ) ) {
586
  return array();
636
  'value' => '',
637
  );
638
 
 
639
  $sub_entries = array();
640
  if ( isset( $status['connection_name'] ) ) {
641
  $sub_entries[] = array(
683
  }
684
  }
685
 
 
686
  $additional_entry_item['sub_entries'] = $sub_entries;
687
 
688
  // return single array
addons/pro/trello/{forminator-addon-trello-quiz-settings-exception.php → class-forminator-addon-trello-quiz-settings-exception.php} RENAMED
File without changes
addons/pro/trello/{forminator-addon-trello-quiz-settings.php → class-forminator-addon-trello-quiz-settings.php} RENAMED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/forminator-addon-trello-quiz-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Trello_Quiz_Settings
@@ -124,8 +124,8 @@ class Forminator_Addon_Trello_Quiz_Settings extends Forminator_Addon_Quiz_Settin
124
  }
125
 
126
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
127
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
128
- '</div>';
129
 
130
  return array(
131
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -190,7 +190,6 @@ class Forminator_Addon_Trello_Quiz_Settings extends Forminator_Addon_Quiz_Settin
190
  'boards' => array(),
191
  );
192
 
193
-
194
  $is_submit = ! empty( $submitted_data );
195
  $has_errors = false;
196
 
@@ -258,8 +257,8 @@ class Forminator_Addon_Trello_Quiz_Settings extends Forminator_Addon_Quiz_Settin
258
  }
259
 
260
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
261
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
262
- '</div>';
263
 
264
  return array(
265
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -347,6 +346,7 @@ class Forminator_Addon_Trello_Quiz_Settings extends Forminator_Addon_Quiz_Settin
347
  }
348
 
349
  if ( empty( $lists ) ) {
 
350
  throw new Forminator_Addon_Trello_Exception( sprintf( __( 'No list found on Trello Board of %1$s. Please create one.', Forminator::DOMAIN ), $board_name ) );
351
  }
352
 
@@ -397,8 +397,8 @@ class Forminator_Addon_Trello_Quiz_Settings extends Forminator_Addon_Quiz_Settin
397
  }
398
 
399
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
400
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
401
- '</div>';
402
 
403
  return array(
404
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -464,7 +464,6 @@ class Forminator_Addon_Trello_Quiz_Settings extends Forminator_Addon_Quiz_Settin
464
  //todo: validate this, step wizard back if needed
465
  $board_id = $this->get_multi_id_quiz_settings_value( $multi_id, 'board_id', '' );
466
 
467
-
468
  $template_params = array(
469
  'card_name' => $this->get_multi_id_quiz_settings_value( $multi_id, 'card_name', 'New submission from {quiz_name}' ),
470
  'card_name_error' => '',
@@ -534,7 +533,6 @@ class Forminator_Addon_Trello_Quiz_Settings extends Forminator_Addon_Quiz_Settin
534
  $members[ $data->id ] = $display_name;
535
  }
536
  }
537
-
538
  } catch ( Forminator_Addon_Trello_Exception $e ) {
539
  $template_params['error_message'] = $e->getMessage();
540
  $has_errors = true;
@@ -644,8 +642,8 @@ class Forminator_Addon_Trello_Quiz_Settings extends Forminator_Addon_Quiz_Settin
644
  }
645
 
646
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
647
- Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Save', Forminator::DOMAIN ), 'sui-button-primary forminator-addon-finish' ) .
648
- '</div>';
649
 
650
  return array(
651
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -777,7 +775,6 @@ class Forminator_Addon_Trello_Quiz_Settings extends Forminator_Addon_Quiz_Settin
777
  return false;
778
  }
779
 
780
-
781
  return true;
782
  }
783
  }
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-trello-quiz-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Trello_Quiz_Settings
124
  }
125
 
126
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
127
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
128
+ '</div>';
129
 
130
  return array(
131
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
190
  'boards' => array(),
191
  );
192
 
 
193
  $is_submit = ! empty( $submitted_data );
194
  $has_errors = false;
195
 
257
  }
258
 
259
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
260
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
261
+ '</div>';
262
 
263
  return array(
264
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
346
  }
347
 
348
  if ( empty( $lists ) ) {
349
+ /* translators: ... */
350
  throw new Forminator_Addon_Trello_Exception( sprintf( __( 'No list found on Trello Board of %1$s. Please create one.', Forminator::DOMAIN ), $board_name ) );
351
  }
352
 
397
  }
398
 
399
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
400
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Next', Forminator::DOMAIN ), 'forminator-addon-next' ) .
401
+ '</div>';
402
 
403
  return array(
404
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
464
  //todo: validate this, step wizard back if needed
465
  $board_id = $this->get_multi_id_quiz_settings_value( $multi_id, 'board_id', '' );
466
 
 
467
  $template_params = array(
468
  'card_name' => $this->get_multi_id_quiz_settings_value( $multi_id, 'card_name', 'New submission from {quiz_name}' ),
469
  'card_name_error' => '',
533
  $members[ $data->id ] = $display_name;
534
  }
535
  }
 
536
  } catch ( Forminator_Addon_Trello_Exception $e ) {
537
  $template_params['error_message'] = $e->getMessage();
538
  $has_errors = true;
642
  }
643
 
644
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
645
+ Forminator_Addon_Abstract::get_button_markup( esc_html__( 'Save', Forminator::DOMAIN ), 'sui-button-primary forminator-addon-finish' ) .
646
+ '</div>';
647
 
648
  return array(
649
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
775
  return false;
776
  }
777
 
 
778
  return true;
779
  }
780
  }
addons/pro/trello/{forminator-addon-trello.php → class-forminator-addon-trello.php} RENAMED
@@ -1,7 +1,7 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/forminator-addon-trello-exception.php';
4
- require_once dirname( __FILE__ ) . '/lib/class-wp-trello-api.php';
5
 
6
  /**
7
  * Class Forminator_Addon_Trello
@@ -27,7 +27,7 @@ final class Forminator_Addon_Trello extends Forminator_Addon_Abstract {
27
  protected $_form_settings = 'Forminator_Addon_Trello_Form_Settings';
28
  protected $_form_hooks = 'Forminator_Addon_Trello_Form_Hooks';
29
 
30
- protected $_position = 5;
31
 
32
  private $_app_key = '770a78f0ec0d8749df82fbbe150d80da';
33
 
@@ -118,7 +118,6 @@ final class Forminator_Addon_Trello extends Forminator_Addon_Abstract {
118
  if ( isset( $setting_values['token'] ) && ! empty( $setting_values['token'] ) ) {
119
  $is_connected = true;
120
  }
121
-
122
  } catch ( Forminator_Addon_Trello_Exception $e ) {
123
  $is_connected = false;
124
  }
@@ -475,7 +474,6 @@ final class Forminator_Addon_Trello extends Forminator_Addon_Abstract {
475
  } catch ( Forminator_Addon_Trello_Exception $e ) {
476
  $template_params['error_message'] = $e->getMessage();
477
  }
478
-
479
  }
480
 
481
  return self::get_template( $template, $template_params );
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-trello-exception.php';
4
+ require_once dirname( __FILE__ ) . '/lib/class-forminator-addon-trello-wp-api.php';
5
 
6
  /**
7
  * Class Forminator_Addon_Trello
27
  protected $_form_settings = 'Forminator_Addon_Trello_Form_Settings';
28
  protected $_form_hooks = 'Forminator_Addon_Trello_Form_Hooks';
29
 
30
+ protected $_position = 5;
31
 
32
  private $_app_key = '770a78f0ec0d8749df82fbbe150d80da';
33
 
118
  if ( isset( $setting_values['token'] ) && ! empty( $setting_values['token'] ) ) {
119
  $is_connected = true;
120
  }
 
121
  } catch ( Forminator_Addon_Trello_Exception $e ) {
122
  $is_connected = false;
123
  }
474
  } catch ( Forminator_Addon_Trello_Exception $e ) {
475
  $template_params['error_message'] = $e->getMessage();
476
  }
 
477
  }
478
 
479
  return self::get_template( $template, $template_params );
addons/pro/trello/lib/{class-wp-trello-api-exception.php → class-forminator-addon-trello-wp-api-exception.php} RENAMED
File without changes
addons/pro/trello/lib/{class-wp-trello-api-not-found-exception.php → class-forminator-addon-trello-wp-api-not-found-exception.php} RENAMED
File without changes
addons/pro/trello/lib/{class-wp-trello-api.php → class-forminator-addon-trello-wp-api.php} RENAMED
@@ -1,7 +1,7 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/class-wp-trello-api-exception.php';
4
- require_once dirname( __FILE__ ) . '/class-wp-trello-api-not-found-exception.php';
5
 
6
  /**
7
  * Class Forminator_Addon_Trello_Wp_Api
@@ -114,7 +114,7 @@ class Forminator_Addon_Trello_Wp_Api {
114
  * @throws Forminator_Addon_Trello_Wp_Api_Exception
115
  * @throws Forminator_Addon_Trello_Wp_Api_Not_Found_Exception
116
  */
117
- private function _request( $verb = 'GET', $path, $args = array() ) {
118
  // Adding extra user agent for wp remote request
119
  add_filter( 'http_headers_useragent', array( $this, 'filter_user_agent' ) );
120
 
@@ -194,9 +194,10 @@ class Forminator_Addon_Trello_Wp_Api {
194
  }
195
 
196
  if ( 404 === $status_code ) {
 
197
  throw new Forminator_Addon_Trello_Wp_Api_Not_Found_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
198
  }
199
- // /* translators: ... */
200
  throw new Forminator_Addon_Trello_Wp_Api_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
201
  }
202
  }
@@ -249,7 +250,7 @@ class Forminator_Addon_Trello_Wp_Api {
249
 
250
  $args = array_merge( $default_args, $args );
251
 
252
- return $this->_request(
253
  'POST',
254
  $path,
255
  $args
@@ -276,7 +277,7 @@ class Forminator_Addon_Trello_Wp_Api {
276
 
277
  $args = array_merge( $default_args, $args );
278
 
279
- return $this->_request(
280
  'GET',
281
  $path,
282
  $args
@@ -303,7 +304,7 @@ class Forminator_Addon_Trello_Wp_Api {
303
 
304
  $args = array_merge( $default_args, $args );
305
 
306
- return $this->_request(
307
  'PUT',
308
  $path,
309
  $args
@@ -330,7 +331,7 @@ class Forminator_Addon_Trello_Wp_Api {
330
 
331
  $args = array_merge( $default_args, $args );
332
 
333
- return $this->_request(
334
  'DELETE',
335
  $path,
336
  $args
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-trello-wp-api-exception.php';
4
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-trello-wp-api-not-found-exception.php';
5
 
6
  /**
7
  * Class Forminator_Addon_Trello_Wp_Api
114
  * @throws Forminator_Addon_Trello_Wp_Api_Exception
115
  * @throws Forminator_Addon_Trello_Wp_Api_Not_Found_Exception
116
  */
117
+ private function request( $verb = 'GET', $path, $args = array() ) {
118
  // Adding extra user agent for wp remote request
119
  add_filter( 'http_headers_useragent', array( $this, 'filter_user_agent' ) );
120
 
194
  }
195
 
196
  if ( 404 === $status_code ) {
197
+ /* translators: ... */
198
  throw new Forminator_Addon_Trello_Wp_Api_Not_Found_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
199
  }
200
+ /* translators: ... */
201
  throw new Forminator_Addon_Trello_Wp_Api_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
202
  }
203
  }
250
 
251
  $args = array_merge( $default_args, $args );
252
 
253
+ return $this->request(
254
  'POST',
255
  $path,
256
  $args
277
 
278
  $args = array_merge( $default_args, $args );
279
 
280
+ return $this->request(
281
  'GET',
282
  $path,
283
  $args
304
 
305
  $args = array_merge( $default_args, $args );
306
 
307
+ return $this->request(
308
  'PUT',
309
  $path,
310
  $args
331
 
332
  $args = array_merge( $default_args, $args );
333
 
334
+ return $this->request(
335
  'DELETE',
336
  $path,
337
  $args
addons/pro/trello/trello.php CHANGED
@@ -23,16 +23,16 @@ function forminator_addon_trello_assets_url() {
23
  return trailingslashit( forminator_addon_trello_url() . 'assets' );
24
  }
25
 
26
- require_once dirname( __FILE__ ) . '/forminator-addon-trello.php';
27
 
28
- require_once dirname( __FILE__ ) . '/forminator-addon-trello-form-settings.php';
29
- require_once dirname( __FILE__ ) . '/forminator-addon-trello-form-hooks.php';
30
 
31
- require_once dirname( __FILE__ ) . '/forminator-addon-trello-poll-settings.php';
32
- require_once dirname( __FILE__ ) . '/forminator-addon-trello-poll-hooks.php';
33
 
34
- require_once dirname( __FILE__ ) . '/forminator-addon-trello-quiz-settings.php';
35
- require_once dirname( __FILE__ ) . '/forminator-addon-trello-quiz-hooks.php';
36
 
37
  //Direct Load
38
  Forminator_Addon_Loader::get_instance()->register( 'Forminator_Addon_Trello' );
23
  return trailingslashit( forminator_addon_trello_url() . 'assets' );
24
  }
25
 
26
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-trello.php';
27
 
28
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-trello-form-settings.php';
29
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-trello-form-hooks.php';
30
 
31
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-trello-poll-settings.php';
32
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-trello-poll-hooks.php';
33
 
34
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-trello-quiz-settings.php';
35
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-trello-quiz-hooks.php';
36
 
37
  //Direct Load
38
  Forminator_Addon_Loader::get_instance()->register( 'Forminator_Addon_Trello' );
addons/pro/trello/views/form-settings/setup-card.php CHANGED
@@ -75,7 +75,7 @@ foreach ( $template_vars as $key => $val ) {
75
  <div class="sui-col-12">
76
 
77
  <div class="sui-form-field <?php echo esc_attr( ! empty( $vars['card_description_error'] ) ? 'sui-form-field-error' : '' ); ?>">
78
-
79
  <label class="sui-label" for="card_description"><?php esc_html_e( 'Card Description', Forminator::DOMAIN ); ?></label>
80
 
81
  <div class="sui-insert-variables">
@@ -123,14 +123,14 @@ foreach ( $template_vars as $key => $val ) {
123
  <div class="sui-form-field <?php echo esc_attr( ! empty( $vars['label_ids_error'] ) ? 'sui-form-field-error' : '' ); ?>">
124
  <label class="sui-label" for="label_ids"><?php esc_html_e( 'Labels', Forminator::DOMAIN ); ?></label>
125
  <select class="sui-select fui-multi-select" name="label_ids[]" id="label_ids"
126
- multiple="multiple"
127
- data-reorder="1"
128
- data-tags="false"
129
- data-token-separators="[',']"
130
- data-placeholder="<?php esc_html_e( 'Enter label name', Forminator::DOMAIN ); ?>"
131
- data-allow-clear="false">
132
  <?php foreach ( $vars['label_ids'] as $label_id ) : ?>
133
- <?php if ( isset( $vars['labels'][ $label_id ] ) ): ?>
134
  <option
135
  value="<?php echo esc_attr( $label_id ); ?>"
136
  selected="selected"
@@ -141,7 +141,7 @@ foreach ( $template_vars as $key => $val ) {
141
  <?php endforeach; ?>
142
 
143
  <?php foreach ( $vars['labels'] as $label_id => $label ) : ?>
144
- <?php if ( ! in_array( $label_id, $vars['label_ids'], true ) ): ?>
145
  <option
146
  value="<?php echo esc_attr( $label_id ); ?>"
147
  data-color="<?php echo esc_attr( $label['color'] ); ?>"
@@ -162,14 +162,14 @@ foreach ( $template_vars as $key => $val ) {
162
  <div class="sui-form-field <?php echo esc_attr( ! empty( $vars['member_ids_error'] ) ? 'sui-form-field-error' : '' ); ?>">
163
  <label class="sui-label" for="member_ids"><?php esc_html_e( 'Members', Forminator::DOMAIN ); ?></label>
164
  <select class="sui-select fui-multi-select" name="member_ids[]" id="member_ids"
165
- multiple="multiple"
166
- data-reorder="1"
167
- data-tags="false"
168
- data-token-separators="[',']"
169
- data-placeholder="<?php esc_html_e( 'Enter member name', Forminator::DOMAIN ); ?>"
170
- data-allow-clear="false">
171
  <?php foreach ( $vars['member_ids'] as $member_id ) : ?>
172
- <?php if ( isset( $vars['members'][ $member_id ] ) ): ?>
173
  <option
174
  value="<?php echo esc_attr( $member_id ); ?>"
175
  selected="selected"
@@ -178,7 +178,7 @@ foreach ( $template_vars as $key => $val ) {
178
  <?php endforeach; ?>
179
 
180
  <?php foreach ( $vars['members'] as $member_id => $name ) : ?>
181
- <?php if ( ! in_array( $member_id, $vars['member_ids'], true ) ): ?>
182
  <option
183
  value="<?php echo esc_attr( $member_id ); ?>"
184
  ><?php echo esc_html( $name ); ?></option>
75
  <div class="sui-col-12">
76
 
77
  <div class="sui-form-field <?php echo esc_attr( ! empty( $vars['card_description_error'] ) ? 'sui-form-field-error' : '' ); ?>">
78
+
79
  <label class="sui-label" for="card_description"><?php esc_html_e( 'Card Description', Forminator::DOMAIN ); ?></label>
80
 
81
  <div class="sui-insert-variables">
123
  <div class="sui-form-field <?php echo esc_attr( ! empty( $vars['label_ids_error'] ) ? 'sui-form-field-error' : '' ); ?>">
124
  <label class="sui-label" for="label_ids"><?php esc_html_e( 'Labels', Forminator::DOMAIN ); ?></label>
125
  <select class="sui-select fui-multi-select" name="label_ids[]" id="label_ids"
126
+ multiple="multiple"
127
+ data-reorder="1"
128
+ data-tags="false"
129
+ data-token-separators="[',']"
130
+ data-placeholder="<?php esc_html_e( 'Enter label name', Forminator::DOMAIN ); ?>"
131
+ data-allow-clear="false">
132
  <?php foreach ( $vars['label_ids'] as $label_id ) : ?>
133
+ <?php if ( isset( $vars['labels'][ $label_id ] ) ) : ?>
134
  <option
135
  value="<?php echo esc_attr( $label_id ); ?>"
136
  selected="selected"
141
  <?php endforeach; ?>
142
 
143
  <?php foreach ( $vars['labels'] as $label_id => $label ) : ?>
144
+ <?php if ( ! in_array( $label_id, $vars['label_ids'], true ) ) : ?>
145
  <option
146
  value="<?php echo esc_attr( $label_id ); ?>"
147
  data-color="<?php echo esc_attr( $label['color'] ); ?>"
162
  <div class="sui-form-field <?php echo esc_attr( ! empty( $vars['member_ids_error'] ) ? 'sui-form-field-error' : '' ); ?>">
163
  <label class="sui-label" for="member_ids"><?php esc_html_e( 'Members', Forminator::DOMAIN ); ?></label>
164
  <select class="sui-select fui-multi-select" name="member_ids[]" id="member_ids"
165
+ multiple="multiple"
166
+ data-reorder="1"
167
+ data-tags="false"
168
+ data-token-separators="[',']"
169
+ data-placeholder="<?php esc_html_e( 'Enter member name', Forminator::DOMAIN ); ?>"
170
+ data-allow-clear="false">
171
  <?php foreach ( $vars['member_ids'] as $member_id ) : ?>
172
+ <?php if ( isset( $vars['members'][ $member_id ] ) ) : ?>
173
  <option
174
  value="<?php echo esc_attr( $member_id ); ?>"
175
  selected="selected"
178
  <?php endforeach; ?>
179
 
180
  <?php foreach ( $vars['members'] as $member_id => $name ) : ?>
181
+ <?php if ( ! in_array( $member_id, $vars['member_ids'], true ) ) : ?>
182
  <option
183
  value="<?php echo esc_attr( $member_id ); ?>"
184
  ><?php echo esc_html( $name ); ?></option>
addons/pro/trello/views/form-settings/setup-list.php CHANGED
@@ -16,14 +16,15 @@ foreach ( $template_vars as $key => $val ) {
16
  }
17
 
18
  $vars['step_description'] = sprintf(
19
- __( 'Which list from %1$s do you want auto-generated cards to be added to?', Forminator::DOMAIN ),
 
20
  '<b>' . $vars['board_name'] . '</b>'
21
  );
22
 
23
  ?>
24
  <div class="integration-header">
25
  <h3 class="sui-box-title" id="dialogTitle2"><?php echo esc_html( __( 'Assign List', Forminator::DOMAIN ) ); ?></h3>
26
- <p><?php echo $vars['step_description']; // wpcs: xss ok ?></p>
27
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
28
  <span class="sui-notice sui-notice-error"><p><?php echo esc_html( $vars['error_message'] ); ?></p></span>
29
  <?php endif; ?>
16
  }
17
 
18
  $vars['step_description'] = sprintf(
19
+ /* translators: ... */
20
+ esc_html__( 'Which list from %1$s do you want auto-generated cards to be added to?', Forminator::DOMAIN ),
21
  '<b>' . $vars['board_name'] . '</b>'
22
  );
23
 
24
  ?>
25
  <div class="integration-header">
26
  <h3 class="sui-box-title" id="dialogTitle2"><?php echo esc_html( __( 'Assign List', Forminator::DOMAIN ) ); ?></h3>
27
+ <p><?php echo $vars['step_description']; // phpcs:ignore ?></p>
28
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
29
  <span class="sui-notice sui-notice-error"><p><?php echo esc_html( $vars['error_message'] ); ?></p></span>
30
  <?php endif; ?>
addons/pro/trello/views/poll-settings/setup-card.php CHANGED
@@ -50,10 +50,10 @@ foreach ( $template_vars as $key => $val ) {
50
  <div class="sui-insert-variables">
51
 
52
  <input id="card_name"
53
- class="sui-form-control"
54
- name="card_name"
55
- placeholder="<?php echo esc_attr( __( 'Card Name', Forminator::DOMAIN ) ); ?>"
56
- value="<?php echo esc_attr( $vars['card_name'] ); ?>">
57
 
58
  <select data-textarea-id="card_name"><?php foreach ( $vars['name_fields'] as $key => $field ) : ?>
59
  <option value="{<?php echo esc_attr( $key ); ?>}" data-content="{<?php echo esc_attr( $key ); ?>}"><?php echo esc_html( $field ); ?></option>
@@ -124,14 +124,14 @@ foreach ( $template_vars as $key => $val ) {
124
  <div class="sui-form-field <?php echo esc_attr( ! empty( $vars['label_ids_error'] ) ? 'sui-form-field-error' : '' ); ?>">
125
  <label class="sui-label" for="label_ids"><?php esc_html_e( 'Labels', Forminator::DOMAIN ); ?></label>
126
  <select class="sui-select fui-multi-select" name="label_ids[]" id="label_ids"
127
- multiple="multiple"
128
- data-reorder="1"
129
- data-tags="false"
130
- data-token-separators="[',']"
131
- data-placeholder="<?php esc_html_e( 'Enter label name', Forminator::DOMAIN ); ?>"
132
- data-allow-clear="false">
133
  <?php foreach ( $vars['label_ids'] as $label_id ) : ?>
134
- <?php if ( isset( $vars['labels'][ $label_id ] ) ): ?>
135
  <option
136
  value="<?php echo esc_attr( $label_id ); ?>"
137
  selected="selected"
@@ -142,7 +142,7 @@ foreach ( $template_vars as $key => $val ) {
142
  <?php endforeach; ?>
143
 
144
  <?php foreach ( $vars['labels'] as $label_id => $label ) : ?>
145
- <?php if ( ! in_array( $label_id, $vars['label_ids'], true ) ): ?>
146
  <option
147
  value="<?php echo esc_attr( $label_id ); ?>"
148
  data-color="<?php echo esc_attr( $label['color'] ); ?>"
@@ -163,14 +163,14 @@ foreach ( $template_vars as $key => $val ) {
163
  <div class="sui-form-field <?php echo esc_attr( ! empty( $vars['member_ids_error'] ) ? 'sui-form-field-error' : '' ); ?>">
164
  <label class="sui-label" for="member_ids"><?php esc_html_e( 'Members', Forminator::DOMAIN ); ?></label>
165
  <select class="sui-select fui-multi-select" name="member_ids[]" id="member_ids"
166
- multiple="multiple"
167
- data-reorder="1"
168
- data-tags="false"
169
- data-token-separators="[',']"
170
- data-placeholder="<?php esc_html_e( 'Enter member name', Forminator::DOMAIN ); ?>"
171
- data-allow-clear="false">
172
  <?php foreach ( $vars['member_ids'] as $member_id ) : ?>
173
- <?php if ( isset( $vars['members'][ $member_id ] ) ): ?>
174
  <option
175
  value="<?php echo esc_attr( $member_id ); ?>"
176
  selected="selected"
@@ -179,7 +179,7 @@ foreach ( $template_vars as $key => $val ) {
179
  <?php endforeach; ?>
180
 
181
  <?php foreach ( $vars['members'] as $member_id => $name ) : ?>
182
- <?php if ( ! in_array( $member_id, $vars['member_ids'], true ) ): ?>
183
  <option
184
  value="<?php echo esc_attr( $member_id ); ?>"
185
  ><?php echo esc_html( $name ); ?></option>
50
  <div class="sui-insert-variables">
51
 
52
  <input id="card_name"
53
+ class="sui-form-control"
54
+ name="card_name"
55
+ placeholder="<?php echo esc_attr( __( 'Card Name', Forminator::DOMAIN ) ); ?>"
56
+ value="<?php echo esc_attr( $vars['card_name'] ); ?>">
57
 
58
  <select data-textarea-id="card_name"><?php foreach ( $vars['name_fields'] as $key => $field ) : ?>
59
  <option value="{<?php echo esc_attr( $key ); ?>}" data-content="{<?php echo esc_attr( $key ); ?>}"><?php echo esc_html( $field ); ?></option>
124
  <div class="sui-form-field <?php echo esc_attr( ! empty( $vars['label_ids_error'] ) ? 'sui-form-field-error' : '' ); ?>">
125
  <label class="sui-label" for="label_ids"><?php esc_html_e( 'Labels', Forminator::DOMAIN ); ?></label>
126
  <select class="sui-select fui-multi-select" name="label_ids[]" id="label_ids"
127
+ multiple="multiple"
128
+ data-reorder="1"
129
+ data-tags="false"
130
+ data-token-separators="[',']"
131
+ data-placeholder="<?php esc_html_e( 'Enter label name', Forminator::DOMAIN ); ?>"
132
+ data-allow-clear="false">
133
  <?php foreach ( $vars['label_ids'] as $label_id ) : ?>
134
+ <?php if ( isset( $vars['labels'][ $label_id ] ) ) : ?>
135
  <option
136
  value="<?php echo esc_attr( $label_id ); ?>"
137
  selected="selected"
142
  <?php endforeach; ?>
143
 
144
  <?php foreach ( $vars['labels'] as $label_id => $label ) : ?>
145
+ <?php if ( ! in_array( $label_id, $vars['label_ids'], true ) ) : ?>
146
  <option
147
  value="<?php echo esc_attr( $label_id ); ?>"
148
  data-color="<?php echo esc_attr( $label['color'] ); ?>"
163
  <div class="sui-form-field <?php echo esc_attr( ! empty( $vars['member_ids_error'] ) ? 'sui-form-field-error' : '' ); ?>">
164
  <label class="sui-label" for="member_ids"><?php esc_html_e( 'Members', Forminator::DOMAIN ); ?></label>
165
  <select class="sui-select fui-multi-select" name="member_ids[]" id="member_ids"
166
+ multiple="multiple"
167
+ data-reorder="1"
168
+ data-tags="false"
169
+ data-token-separators="[',']"
170
+ data-placeholder="<?php esc_html_e( 'Enter member name', Forminator::DOMAIN ); ?>"
171
+ data-allow-clear="false">
172
  <?php foreach ( $vars['member_ids'] as $member_id ) : ?>
173
+ <?php if ( isset( $vars['members'][ $member_id ] ) ) : ?>
174
  <option
175
  value="<?php echo esc_attr( $member_id ); ?>"
176
  selected="selected"
179
  <?php endforeach; ?>
180
 
181
  <?php foreach ( $vars['members'] as $member_id => $name ) : ?>
182
+ <?php if ( ! in_array( $member_id, $vars['member_ids'], true ) ) : ?>
183
  <option
184
  value="<?php echo esc_attr( $member_id ); ?>"
185
  ><?php echo esc_html( $name ); ?></option>
addons/pro/trello/views/poll-settings/setup-list.php CHANGED
@@ -16,14 +16,15 @@ foreach ( $template_vars as $key => $val ) {
16
  }
17
 
18
  $vars['step_description'] = sprintf(
19
- __( 'Which list from %1$s do you want auto-generated cards to be added to?', Forminator::DOMAIN ),
 
20
  '<b>' . $vars['board_name'] . '</b>'
21
  );
22
 
23
  ?>
24
  <div class="integration-header">
25
  <h3 class="sui-box-title" id="dialogTitle2"><?php echo esc_html( __( 'Assign List', Forminator::DOMAIN ) ); ?></h3>
26
- <p><?php echo $vars['step_description']; // wpcs: xss ok ?></p>
27
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
28
  <span class="sui-notice sui-notice-error"><p><?php echo esc_html( $vars['error_message'] ); ?></p></span>
29
  <?php endif; ?>
16
  }
17
 
18
  $vars['step_description'] = sprintf(
19
+ /* translators: ... */
20
+ esc_html__( 'Which list from %1$s do you want auto-generated cards to be added to?', Forminator::DOMAIN ),
21
  '<b>' . $vars['board_name'] . '</b>'
22
  );
23
 
24
  ?>
25
  <div class="integration-header">
26
  <h3 class="sui-box-title" id="dialogTitle2"><?php echo esc_html( __( 'Assign List', Forminator::DOMAIN ) ); ?></h3>
27
+ <p><?php echo $vars['step_description']; // phpcs:ignore ?></p>
28
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
29
  <span class="sui-notice sui-notice-error"><p><?php echo esc_html( $vars['error_message'] ); ?></p></span>
30
  <?php endif; ?>
addons/pro/trello/views/quiz-settings/setup-card.php CHANGED
@@ -50,10 +50,10 @@ foreach ( $template_vars as $key => $val ) {
50
  <div class="sui-insert-variables">
51
 
52
  <input id="card_name"
53
- class="sui-form-control"
54
- name="card_name"
55
- placeholder="<?php echo esc_attr( __( 'Card Name', Forminator::DOMAIN ) ); ?>"
56
- value="<?php echo esc_attr( $vars['card_name'] ); ?>">
57
 
58
  <select data-textarea-id="card_name"><?php foreach ( $vars['name_fields'] as $key => $field ) : ?>
59
  <option value="{<?php echo esc_attr( $key ); ?>}" data-content="{<?php echo esc_attr( $key ); ?>}"><?php echo esc_html( $field ); ?></option>
@@ -124,14 +124,14 @@ foreach ( $template_vars as $key => $val ) {
124
  <div class="sui-form-field <?php echo esc_attr( ! empty( $vars['label_ids_error'] ) ? 'sui-form-field-error' : '' ); ?>">
125
  <label class="sui-label" for="label_ids"><?php esc_html_e( 'Labels', Forminator::DOMAIN ); ?></label>
126
  <select class="sui-select fui-multi-select" name="label_ids[]" id="label_ids"
127
- multiple="multiple"
128
- data-reorder="1"
129
- data-tags="false"
130
- data-token-separators="[',']"
131
- data-placeholder="<?php esc_html_e( 'Enter label name', Forminator::DOMAIN ); ?>"
132
- data-allow-clear="false">
133
  <?php foreach ( $vars['label_ids'] as $label_id ) : ?>
134
- <?php if ( isset( $vars['labels'][ $label_id ] ) ): ?>
135
  <option
136
  value="<?php echo esc_attr( $label_id ); ?>"
137
  selected="selected"
@@ -142,7 +142,7 @@ foreach ( $template_vars as $key => $val ) {
142
  <?php endforeach; ?>
143
 
144
  <?php foreach ( $vars['labels'] as $label_id => $label ) : ?>
145
- <?php if ( ! in_array( $label_id, $vars['label_ids'], true ) ): ?>
146
  <option
147
  value="<?php echo esc_attr( $label_id ); ?>"
148
  data-color="<?php echo esc_attr( $label['color'] ); ?>"
@@ -163,14 +163,14 @@ foreach ( $template_vars as $key => $val ) {
163
  <div class="sui-form-field <?php echo esc_attr( ! empty( $vars['member_ids_error'] ) ? 'sui-form-field-error' : '' ); ?>">
164
  <label class="sui-label" for="member_ids"><?php esc_html_e( 'Members', Forminator::DOMAIN ); ?></label>
165
  <select class="sui-select fui-multi-select" name="member_ids[]" id="member_ids"
166
- multiple="multiple"
167
- data-reorder="1"
168
- data-tags="false"
169
- data-token-separators="[',']"
170
- data-placeholder="<?php esc_html_e( 'Enter member name', Forminator::DOMAIN ); ?>"
171
- data-allow-clear="false">
172
  <?php foreach ( $vars['member_ids'] as $member_id ) : ?>
173
- <?php if ( isset( $vars['members'][ $member_id ] ) ): ?>
174
  <option
175
  value="<?php echo esc_attr( $member_id ); ?>"
176
  selected="selected"
@@ -179,7 +179,7 @@ foreach ( $template_vars as $key => $val ) {
179
  <?php endforeach; ?>
180
 
181
  <?php foreach ( $vars['members'] as $member_id => $name ) : ?>
182
- <?php if ( ! in_array( $member_id, $vars['member_ids'], true ) ): ?>
183
  <option
184
  value="<?php echo esc_attr( $member_id ); ?>"
185
  ><?php echo esc_html( $name ); ?></option>
50
  <div class="sui-insert-variables">
51
 
52
  <input id="card_name"
53
+ class="sui-form-control"
54
+ name="card_name"
55
+ placeholder="<?php echo esc_attr( __( 'Card Name', Forminator::DOMAIN ) ); ?>"
56
+ value="<?php echo esc_attr( $vars['card_name'] ); ?>">
57
 
58
  <select data-textarea-id="card_name"><?php foreach ( $vars['name_fields'] as $key => $field ) : ?>
59
  <option value="{<?php echo esc_attr( $key ); ?>}" data-content="{<?php echo esc_attr( $key ); ?>}"><?php echo esc_html( $field ); ?></option>
124
  <div class="sui-form-field <?php echo esc_attr( ! empty( $vars['label_ids_error'] ) ? 'sui-form-field-error' : '' ); ?>">
125
  <label class="sui-label" for="label_ids"><?php esc_html_e( 'Labels', Forminator::DOMAIN ); ?></label>
126
  <select class="sui-select fui-multi-select" name="label_ids[]" id="label_ids"
127
+ multiple="multiple"
128
+ data-reorder="1"
129
+ data-tags="false"
130
+ data-token-separators="[',']"
131
+ data-placeholder="<?php esc_html_e( 'Enter label name', Forminator::DOMAIN ); ?>"
132
+ data-allow-clear="false">
133
  <?php foreach ( $vars['label_ids'] as $label_id ) : ?>
134
+ <?php if ( isset( $vars['labels'][ $label_id ] ) ) : ?>
135
  <option
136
  value="<?php echo esc_attr( $label_id ); ?>"
137
  selected="selected"
142
  <?php endforeach; ?>
143
 
144
  <?php foreach ( $vars['labels'] as $label_id => $label ) : ?>
145
+ <?php if ( ! in_array( $label_id, $vars['label_ids'], true ) ) : ?>
146
  <option
147
  value="<?php echo esc_attr( $label_id ); ?>"
148
  data-color="<?php echo esc_attr( $label['color'] ); ?>"
163
  <div class="sui-form-field <?php echo esc_attr( ! empty( $vars['member_ids_error'] ) ? 'sui-form-field-error' : '' ); ?>">
164
  <label class="sui-label" for="member_ids"><?php esc_html_e( 'Members', Forminator::DOMAIN ); ?></label>
165
  <select class="sui-select fui-multi-select" name="member_ids[]" id="member_ids"
166
+ multiple="multiple"
167
+ data-reorder="1"
168
+ data-tags="false"
169
+ data-token-separators="[',']"
170
+ data-placeholder="<?php esc_html_e( 'Enter member name', Forminator::DOMAIN ); ?>"
171
+ data-allow-clear="false">
172
  <?php foreach ( $vars['member_ids'] as $member_id ) : ?>
173
+ <?php if ( isset( $vars['members'][ $member_id ] ) ) : ?>
174
  <option
175
  value="<?php echo esc_attr( $member_id ); ?>"
176
  selected="selected"
179
  <?php endforeach; ?>
180
 
181
  <?php foreach ( $vars['members'] as $member_id => $name ) : ?>
182
+ <?php if ( ! in_array( $member_id, $vars['member_ids'], true ) ) : ?>
183
  <option
184
  value="<?php echo esc_attr( $member_id ); ?>"
185
  ><?php echo esc_html( $name ); ?></option>
addons/pro/trello/views/quiz-settings/setup-list.php CHANGED
@@ -16,14 +16,15 @@ foreach ( $template_vars as $key => $val ) {
16
  }
17
 
18
  $vars['step_description'] = sprintf(
19
- __( 'Which list from %1$s do you want auto-generated cards to be added to?', Forminator::DOMAIN ),
 
20
  '<b>' . $vars['board_name'] . '</b>'
21
  );
22
 
23
  ?>
24
  <div class="integration-header">
25
  <h3 class="sui-box-title" id="dialogTitle2"><?php echo esc_html( __( 'Assign List', Forminator::DOMAIN ) ); ?></h3>
26
- <p><?php echo $vars['step_description']; // wpcs: xss ok ?></p>
27
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
28
  <span class="sui-notice sui-notice-error"><p><?php echo esc_html( $vars['error_message'] ); ?></p></span>
29
  <?php endif; ?>
16
  }
17
 
18
  $vars['step_description'] = sprintf(
19
+ /* translators: ... */
20
+ esc_html__( 'Which list from %1$s do you want auto-generated cards to be added to?', Forminator::DOMAIN ),
21
  '<b>' . $vars['board_name'] . '</b>'
22
  );
23
 
24
  ?>
25
  <div class="integration-header">
26
  <h3 class="sui-box-title" id="dialogTitle2"><?php echo esc_html( __( 'Assign List', Forminator::DOMAIN ) ); ?></h3>
27
+ <p><?php echo $vars['step_description']; // phpcs:ignore ?></p>
28
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
29
  <span class="sui-notice sui-notice-error"><p><?php echo esc_html( $vars['error_message'] ); ?></p></span>
30
  <?php endif; ?>
addons/pro/trello/views/sections/authorize.php CHANGED
@@ -13,17 +13,18 @@ foreach ( $template_vars as $key => $val ) {
13
  <div id="forminator-integrations" class="wpmudev-settings--box">
14
  <div class="sui-box">
15
  <div class="sui-box-header">
16
- <h2 class="sui-box-title"><?php esc_html_e( "Authorizing Trello", Forminator::DOMAIN ); ?></h2>
17
  </div>
18
  <div class="sui-box-body">
19
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
20
  <span class="sui-notice sui-notice-error"><p><?php echo esc_html( $vars['error_message'] ); ?></p></span>
21
- <?php elseif ( $vars['is_close'] ): ?>
22
  <span class="sui-notice sui-notice-success">
23
  <p>
24
  <?php
25
- esc_html_e( 'Successfully authorized Trello, you can go back to integration settings.',
26
- Forminator::DOMAIN
 
27
  );
28
  ?>
29
  </p>
@@ -43,12 +44,12 @@ foreach ( $template_vars as $key => $val ) {
43
 
44
  var hashParams = {};
45
  var e,
46
- a = /\+/g, // Regex for replacing addition symbol with a space
47
- r = /([^&;=]+)=?([^&;]*)/g,
48
- d = function (s) {
49
- return decodeURIComponent(s.replace(a, " "));
50
- },
51
- q = window.location.hash.substring(1);
52
 
53
  while (e = r.exec(q))
54
  hashParams[d(e[1])] = d(e[2]);
@@ -58,7 +59,7 @@ foreach ( $template_vars as $key => $val ) {
58
 
59
  (function ($) {
60
  $(document).ready(function (e) {
61
- <?php if ($vars['is_close']): ?>
62
 
63
  setTimeout(function () {
64
  window.close();
13
  <div id="forminator-integrations" class="wpmudev-settings--box">
14
  <div class="sui-box">
15
  <div class="sui-box-header">
16
+ <h2 class="sui-box-title"><?php esc_html_e( 'Authorizing Trello', Forminator::DOMAIN ); ?></h2>
17
  </div>
18
  <div class="sui-box-body">
19
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
20
  <span class="sui-notice sui-notice-error"><p><?php echo esc_html( $vars['error_message'] ); ?></p></span>
21
+ <?php elseif ( $vars['is_close'] ) : ?>
22
  <span class="sui-notice sui-notice-success">
23
  <p>
24
  <?php
25
+ esc_html_e(
26
+ 'Successfully authorized Trello, you can go back to integration settings.',
27
+ Forminator::DOMAIN
28
  );
29
  ?>
30
  </p>
44
 
45
  var hashParams = {};
46
  var e,
47
+ a = /\+/g, // Regex for replacing addition symbol with a space
48
+ r = /([^&;=]+)=?([^&;]*)/g,
49
+ d = function (s) {
50
+ return decodeURIComponent(s.replace(a, " "));
51
+ },
52
+ q = window.location.hash.substring(1);
53
 
54
  while (e = r.exec(q))
55
  hashParams[d(e[1])] = d(e[2]);
59
 
60
  (function ($) {
61
  $(document).ready(function (e) {
62
+ <?php if ( $vars['is_close'] ) : ?>
63
 
64
  setTimeout(function () {
65
  window.close();
addons/pro/trello/views/settings/authorize.php CHANGED
@@ -4,7 +4,7 @@ $vars = array(
4
  'connected_account' => array(),
5
  'auth_url' => '',
6
  'token' => '',
7
- 'is_connected' => false,
8
  );
9
  /** @var array $template_vars */
10
  foreach ( $template_vars as $key => $val ) {
@@ -12,7 +12,12 @@ foreach ( $template_vars as $key => $val ) {
12
  }
13
  ?>
14
  <div class="integration-header">
15
- <h3 class="sui-box-title" id="dialogTitle2"><?php echo esc_html( sprintf( __( 'Connect %1$s', Forminator::DOMAIN ), 'Trello' ) ); ?></h3>
 
 
 
 
 
16
  <?php if ( ! empty( $vars['connected_account'] ) ) : ?>
17
  <p><?php esc_html_e( 'Your Trello account is now authorized', Forminator::DOMAIN ); ?> </p>
18
  <strong><?php echo esc_html( $vars['connected_account']['email'] ); ?></strong>
@@ -26,4 +31,3 @@ foreach ( $template_vars as $key => $val ) {
26
  <?php if ( $vars['is_connected'] ) : ?>
27
  <button class="sui-button sui-button-ghost forminator-addon-disconnect"><?php esc_html_e( 'DISCONNECT', Forminator::DOMAIN ); ?></button>
28
  <?php endif ?>
29
-
4
  'connected_account' => array(),
5
  'auth_url' => '',
6
  'token' => '',
7
+ 'is_connected' => false,
8
  );
9
  /** @var array $template_vars */
10
  foreach ( $template_vars as $key => $val ) {
12
  }
13
  ?>
14
  <div class="integration-header">
15
+ <h3 class="sui-box-title" id="dialogTitle2">
16
+ <?php
17
+ /* translators: ... */
18
+ echo esc_html( sprintf( __( 'Connect %1$s', Forminator::DOMAIN ), 'Trello' ) );
19
+ ?>
20
+ </h3>
21
  <?php if ( ! empty( $vars['connected_account'] ) ) : ?>
22
  <p><?php esc_html_e( 'Your Trello account is now authorized', Forminator::DOMAIN ); ?> </p>
23
  <strong><?php echo esc_html( $vars['connected_account']['email'] ); ?></strong>
31
  <?php if ( $vars['is_connected'] ) : ?>
32
  <button class="sui-button sui-button-ghost forminator-addon-disconnect"><?php esc_html_e( 'DISCONNECT', Forminator::DOMAIN ); ?></button>
33
  <?php endif ?>
 
addons/pro/trello/views/settings/success-authorize.php CHANGED
@@ -1,6 +1,9 @@
1
  <div class="integration-header">
2
  <h3 class="sui-box-title" id="dialogTitle2">
3
- <?php echo esc_html( sprintf( __( '%1$s Added', Forminator::DOMAIN ), 'Trello' ) ); ?>
 
 
 
4
  </h3>
5
  <p><?php esc_html_e( 'You can now go to your forms and assign them to this integration', Forminator::DOMAIN ); ?></p>
6
  </div>
1
  <div class="integration-header">
2
  <h3 class="sui-box-title" id="dialogTitle2">
3
+ <?php
4
+ /* translators: ... */
5
+ echo esc_html( sprintf( __( '%1$s Added', Forminator::DOMAIN ), 'Trello' ) );
6
+ ?>
7
  </h3>
8
  <p><?php esc_html_e( 'You can now go to your forms and assign them to this integration', Forminator::DOMAIN ); ?></p>
9
  </div>
addons/pro/trello/views/settings/wait-authorize.php CHANGED
@@ -20,4 +20,3 @@ foreach ( $template_vars as $key => $val ) {
20
  <?php if ( empty( $vars['token'] ) ) : ?>
21
  <a href="<?php echo esc_attr( $vars['auth_url'] ); ?>" target="_blank" class="sui-button disable-loader"><?php esc_html_e( 'RETRY', Forminator::DOMAIN ); ?></a>
22
  <?php endif ?>
23
-
20
  <?php if ( empty( $vars['token'] ) ) : ?>
21
  <a href="<?php echo esc_attr( $vars['auth_url'] ); ?>" target="_blank" class="sui-button disable-loader"><?php esc_html_e( 'RETRY', Forminator::DOMAIN ); ?></a>
22
  <?php endif ?>
 
addons/pro/zapier/{forminator-addon-zapier-exception.php → class-forminator-addon-zapier-exception.php} RENAMED
File without changes
addons/pro/zapier/{forminator-addon-zapier-form-hooks.php → class-forminator-addon-zapier-form-hooks.php} RENAMED
@@ -120,7 +120,6 @@ class Forminator_Addon_Zapier_Form_Hooks extends Forminator_Addon_Form_Hooks_Abs
120
  $form_settings_instance
121
  );
122
 
123
-
124
  return $data;
125
 
126
  }
@@ -171,7 +170,6 @@ class Forminator_Addon_Zapier_Form_Hooks extends Forminator_Addon_Form_Hooks_Abs
171
 
172
  $zapier_api = $this->addon->get_api( $endpoint );
173
 
174
-
175
  $args = $submitted_data;
176
 
177
  // find calculation fields on entry
@@ -273,7 +271,6 @@ class Forminator_Addon_Zapier_Form_Hooks extends Forminator_Addon_Form_Hooks_Abs
273
  $form_settings_instance
274
  );
275
 
276
-
277
  $addon_meta_datas = $addon_meta_data;
278
  if ( ! isset( $addon_meta_data[0] ) || ! is_array( $addon_meta_data[0] ) ) {
279
  return array();
@@ -347,7 +344,6 @@ class Forminator_Addon_Zapier_Form_Hooks extends Forminator_Addon_Form_Hooks_Abs
347
  'value' => '',
348
  );
349
 
350
-
351
  $sub_entries = array();
352
  if ( isset( $status['connection_name'] ) ) {
353
  $sub_entries[] = array(
@@ -395,7 +391,6 @@ class Forminator_Addon_Zapier_Form_Hooks extends Forminator_Addon_Form_Hooks_Abs
395
  }
396
  }
397
 
398
-
399
  $additional_entry_item['sub_entries'] = $sub_entries;
400
 
401
  // return single array
120
  $form_settings_instance
121
  );
122
 
 
123
  return $data;
124
 
125
  }
170
 
171
  $zapier_api = $this->addon->get_api( $endpoint );
172
 
 
173
  $args = $submitted_data;
174
 
175
  // find calculation fields on entry
271
  $form_settings_instance
272
  );
273
 
 
274
  $addon_meta_datas = $addon_meta_data;
275
  if ( ! isset( $addon_meta_data[0] ) || ! is_array( $addon_meta_data[0] ) ) {
276
  return array();
344
  'value' => '',
345
  );
346
 
 
347
  $sub_entries = array();
348
  if ( isset( $status['connection_name'] ) ) {
349
  $sub_entries[] = array(
391
  }
392
  }
393
 
 
394
  $additional_entry_item['sub_entries'] = $sub_entries;
395
 
396
  // return single array
addons/pro/zapier/{forminator-addon-zapier-form-settings-exception.php → class-forminator-addon-zapier-form-settings-exception.php} RENAMED
File without changes
addons/pro/zapier/{forminator-addon-zapier-form-settings.php → class-forminator-addon-zapier-form-settings.php} RENAMED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/forminator-addon-zapier-form-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Zapier_Form_Settings
@@ -126,10 +126,9 @@ class Forminator_Addon_Zapier_Form_Settings extends Forminator_Addon_Form_Settin
126
  $notification = array(
127
  'type' => 'success',
128
  'text' => '<strong>' . $this->addon->get_title() . ' [' . esc_html( $submitted_data['name'] ) . ']</strong> '
129
- . __( 'Successfully connected and sent sample data to your ZAP' ),
130
  );
131
  }
132
-
133
  } catch ( Forminator_Addon_Zapier_Form_Settings_Exception $e ) {
134
  $input_error_messages = $e->get_input_exceptions();
135
  } catch ( Forminator_Addon_Zapier_Exception $e ) {
@@ -138,19 +137,21 @@ class Forminator_Addon_Zapier_Form_Settings extends Forminator_Addon_Form_Settin
138
 
139
  $buttons = array();
140
  if ( $this->setup_webhook_url_is_completed( $current_data ) ) {
141
- $buttons['disconnect']['markup'] = Forminator_Addon_Zapier::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
142
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
143
- esc_html__( 'Deactivate Zapier from this Form.', Forminator::DOMAIN )
 
144
  );
145
  }
146
 
147
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
148
- Forminator_Addon_Zapier::get_button_markup( esc_html__( 'Save', Forminator::DOMAIN ), 'sui-button-primary forminator-addon-finish' ) .
149
- '</div>';
150
 
151
  $help_message = esc_html__( 'Put your ZAP Webhook URL below.', Forminator::DOMAIN );
152
 
153
  $notice_message = sprintf(
 
154
  __( 'Please go %1$shere%2$s if you do not have any ZAP created. Remember to choose %3$s as Trigger App.', Forminator::DOMAIN ),
155
  '<a href="' . $this->new_zap_url . '" target="_blank">',
156
  '</a>',
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-zapier-form-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Zapier_Form_Settings
126
  $notification = array(
127
  'type' => 'success',
128
  'text' => '<strong>' . $this->addon->get_title() . ' [' . esc_html( $submitted_data['name'] ) . ']</strong> '
129
+ . __( 'Successfully connected and sent sample data to your ZAP' ),
130
  );
131
  }
 
132
  } catch ( Forminator_Addon_Zapier_Form_Settings_Exception $e ) {
133
  $input_error_messages = $e->get_input_exceptions();
134
  } catch ( Forminator_Addon_Zapier_Exception $e ) {
137
 
138
  $buttons = array();
139
  if ( $this->setup_webhook_url_is_completed( $current_data ) ) {
140
+ $buttons['disconnect']['markup'] = Forminator_Addon_Zapier::get_button_markup(
141
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
142
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
143
+ esc_html__( 'Deactivate Zapier from this Form.', Forminator::DOMAIN )
144
  );
145
  }
146
 
147
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
148
+ Forminator_Addon_Zapier::get_button_markup( esc_html__( 'Save', Forminator::DOMAIN ), 'sui-button-primary forminator-addon-finish' ) .
149
+ '</div>';
150
 
151
  $help_message = esc_html__( 'Put your ZAP Webhook URL below.', Forminator::DOMAIN );
152
 
153
  $notice_message = sprintf(
154
+ /* translators: ... */
155
  __( 'Please go %1$shere%2$s if you do not have any ZAP created. Remember to choose %3$s as Trigger App.', Forminator::DOMAIN ),
156
  '<a href="' . $this->new_zap_url . '" target="_blank">',
157
  '</a>',
addons/pro/zapier/{forminator-addon-zapier-poll-hooks.php → class-forminator-addon-zapier-poll-hooks.php} RENAMED
@@ -118,7 +118,6 @@ class Forminator_Addon_Zapier_Poll_Hooks extends Forminator_Addon_Poll_Hooks_Abs
118
  $poll_settings_instance
119
  );
120
 
121
-
122
  return $data;
123
 
124
  }
@@ -167,7 +166,6 @@ class Forminator_Addon_Zapier_Poll_Hooks extends Forminator_Addon_Poll_Hooks_Abs
167
 
168
  $zapier_api = $this->addon->get_api( $endpoint );
169
 
170
-
171
  $args = array();
172
  $args['poll-name'] = forminator_get_name_from_model( $this->poll );
173
 
@@ -175,7 +173,6 @@ class Forminator_Addon_Zapier_Poll_Hooks extends Forminator_Addon_Poll_Hooks_Abs
175
  $extra_field = isset( $submitted_data[ $this->poll_id . '-extra' ] ) ? $submitted_data[ $this->poll_id . '-extra' ] : '';
176
  $fields_labels = $this->poll->pluck_fields_array( 'title', 'element_id', '1' );
177
 
178
-
179
  $answer = isset( $fields_labels[ $answer_data ] ) ? $fields_labels[ $answer_data ] : $answer_data;
180
  $extra = $extra_field;
181
 
@@ -219,7 +216,6 @@ class Forminator_Addon_Zapier_Poll_Hooks extends Forminator_Addon_Poll_Hooks_Abs
219
  }
220
  }
221
 
222
-
223
  /**
224
  * Filter arguments to passed on to Zapier Webhook API
225
  *
118
  $poll_settings_instance
119
  );
120
 
 
121
  return $data;
122
 
123
  }
166
 
167
  $zapier_api = $this->addon->get_api( $endpoint );
168
 
 
169
  $args = array();
170
  $args['poll-name'] = forminator_get_name_from_model( $this->poll );
171
 
173
  $extra_field = isset( $submitted_data[ $this->poll_id . '-extra' ] ) ? $submitted_data[ $this->poll_id . '-extra' ] : '';
174
  $fields_labels = $this->poll->pluck_fields_array( 'title', 'element_id', '1' );
175
 
 
176
  $answer = isset( $fields_labels[ $answer_data ] ) ? $fields_labels[ $answer_data ] : $answer_data;
177
  $extra = $extra_field;
178
 
216
  }
217
  }
218
 
 
219
  /**
220
  * Filter arguments to passed on to Zapier Webhook API
221
  *
addons/pro/zapier/{forminator-addon-zapier-poll-settings-exception.php → class-forminator-addon-zapier-poll-settings-exception.php} RENAMED
File without changes
addons/pro/zapier/{forminator-addon-zapier-poll-settings.php → class-forminator-addon-zapier-poll-settings.php} RENAMED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/forminator-addon-zapier-poll-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Zapier_Poll_Settings
@@ -92,7 +92,6 @@ class Forminator_Addon_Zapier_Poll_Settings extends Forminator_Addon_Poll_Settin
92
  $is_close = false;
93
  $notification = array();
94
 
95
-
96
  if ( $is_submit ) {
97
  $name = isset( $submitted_data['name'] ) ? trim( $submitted_data['name'] ) : '';
98
  $template_params['name'] = $name;
@@ -100,7 +99,6 @@ class Forminator_Addon_Zapier_Poll_Settings extends Forminator_Addon_Poll_Settin
100
  $webhook_url = isset( $submitted_data['webhook_url'] ) ? trim( $submitted_data['webhook_url'] ) : '';
101
  $template_params['webhook_url'] = $webhook_url;
102
 
103
-
104
  try {
105
  $input_exceptions = new Forminator_Addon_Zapier_Poll_Settings_Exception();
106
 
@@ -141,15 +139,16 @@ class Forminator_Addon_Zapier_Poll_Settings extends Forminator_Addon_Poll_Settin
141
 
142
  $buttons = array();
143
  if ( $this->setup_webhook_url_is_completed( array( 'multi_id' => $multi_id ) ) ) {
144
- $buttons['disconnect']['markup'] = Forminator_Addon_Zapier::get_button_markup( esc_html__( 'Deactivate', Forminator::DOMAIN ),
145
- 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
146
- esc_html__( 'Deactivate Zapier from this Poll.', Forminator::DOMAIN )
 
147
  );
148
  }
149
 
150
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
151
- Forminator_Addon_Zapier::get_button_markup( esc_html__( 'Save', Forminator::DOMAIN ), 'sui-button-primary forminator-addon-finish' ) .
152
- '</div>';
153
 
154
  return array(
155
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -268,7 +267,6 @@ class Forminator_Addon_Zapier_Poll_Settings extends Forminator_Addon_Poll_Settin
268
  $sample['vote-extra'] = 'Vote Extra';
269
  $sample['results'] = array();
270
 
271
-
272
  $fields_array = $this->poll->get_fields_as_array();
273
  $map_entries = Forminator_Form_Entry_Model::map_polls_entries( $this->poll_id, $fields_array );
274
  $fields = $this->poll->get_fields();
@@ -287,7 +285,6 @@ class Forminator_Addon_Zapier_Poll_Settings extends Forminator_Addon_Poll_Settin
287
  );
288
  }
289
 
290
-
291
  // wrap in array as zapier best practices
292
  return array( $sample );
293
  }
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-zapier-poll-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Zapier_Poll_Settings
92
  $is_close = false;
93
  $notification = array();
94
 
 
95
  if ( $is_submit ) {
96
  $name = isset( $submitted_data['name'] ) ? trim( $submitted_data['name'] ) : '';
97
  $template_params['name'] = $name;
99
  $webhook_url = isset( $submitted_data['webhook_url'] ) ? trim( $submitted_data['webhook_url'] ) : '';
100
  $template_params['webhook_url'] = $webhook_url;
101
 
 
102
  try {
103
  $input_exceptions = new Forminator_Addon_Zapier_Poll_Settings_Exception();
104
 
139
 
140
  $buttons = array();
141
  if ( $this->setup_webhook_url_is_completed( array( 'multi_id' => $multi_id ) ) ) {
142
+ $buttons['disconnect']['markup'] = Forminator_Addon_Zapier::get_button_markup(
143
+ esc_html__( 'Deactivate', Forminator::DOMAIN ),
144
+ 'sui-button-ghost sui-tooltip sui-tooltip-top-center forminator-addon-form-disconnect',
145
+ esc_html__( 'Deactivate Zapier from this Poll.', Forminator::DOMAIN )
146
  );
147
  }
148
 
149
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
150
+ Forminator_Addon_Zapier::get_button_markup( esc_html__( 'Save', Forminator::DOMAIN ), 'sui-button-primary forminator-addon-finish' ) .
151
+ '</div>';
152
 
153
  return array(
154
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
267
  $sample['vote-extra'] = 'Vote Extra';
268
  $sample['results'] = array();
269
 
 
270
  $fields_array = $this->poll->get_fields_as_array();
271
  $map_entries = Forminator_Form_Entry_Model::map_polls_entries( $this->poll_id, $fields_array );
272
  $fields = $this->poll->get_fields();
285
  );
286
  }
287
 
 
288
  // wrap in array as zapier best practices
289
  return array( $sample );
290
  }
addons/pro/zapier/{forminator-addon-zapier-quiz-hooks.php → class-forminator-addon-zapier-quiz-hooks.php} RENAMED
@@ -118,7 +118,6 @@ class Forminator_Addon_Zapier_Quiz_Hooks extends Forminator_Addon_Quiz_Hooks_Abs
118
  $quiz_settings_instance
119
  );
120
 
121
-
122
  return $data;
123
 
124
  }
@@ -168,7 +167,6 @@ class Forminator_Addon_Zapier_Quiz_Hooks extends Forminator_Addon_Quiz_Hooks_Abs
168
 
169
  $zapier_api = $this->addon->get_api( $endpoint );
170
 
171
-
172
  $args = $this->build_post_data( $current_entry_fields );
173
 
174
  /**
@@ -270,9 +268,9 @@ class Forminator_Addon_Zapier_Quiz_Hooks extends Forminator_Addon_Quiz_Hooks_Abs
270
  }
271
  } elseif ( 'nowrong' === $this->quiz->quiz_type ) {
272
  if ( isset( $quiz_entry['value'][0] )
273
- && is_array( $quiz_entry['value'][0] )
274
- && isset( $quiz_entry['value'][0]['value'] )
275
- && is_array( $quiz_entry['value'][0]['value'] ) ) {
276
 
277
  $quiz_entry = $quiz_entry['value'][0]['value'];
278
 
@@ -295,7 +293,6 @@ class Forminator_Addon_Zapier_Quiz_Hooks extends Forminator_Addon_Quiz_Hooks_Abs
295
  }
296
  }
297
  }
298
-
299
  }
300
  }
301
  }
@@ -313,7 +310,6 @@ class Forminator_Addon_Zapier_Quiz_Hooks extends Forminator_Addon_Quiz_Hooks_Abs
313
 
314
  $sample['result'] = $result;
315
 
316
-
317
  // wrap in array as zapier best practices
318
  return array( $sample );
319
  }
@@ -446,7 +442,6 @@ class Forminator_Addon_Zapier_Quiz_Hooks extends Forminator_Addon_Quiz_Hooks_Abs
446
  $quiz_settings_instance
447
  );
448
 
449
-
450
  $addon_meta_datas = $addon_meta_data;
451
  if ( ! isset( $addon_meta_data[0] ) || ! is_array( $addon_meta_data[0] ) ) {
452
  return array();
@@ -502,7 +497,6 @@ class Forminator_Addon_Zapier_Quiz_Hooks extends Forminator_Addon_Quiz_Hooks_Abs
502
  'value' => '',
503
  );
504
 
505
-
506
  $sub_entries = array();
507
  if ( isset( $status['connection_name'] ) ) {
508
  $sub_entries[] = array(
118
  $quiz_settings_instance
119
  );
120
 
 
121
  return $data;
122
 
123
  }
167
 
168
  $zapier_api = $this->addon->get_api( $endpoint );
169
 
 
170
  $args = $this->build_post_data( $current_entry_fields );
171
 
172
  /**
268
  }
269
  } elseif ( 'nowrong' === $this->quiz->quiz_type ) {
270
  if ( isset( $quiz_entry['value'][0] )
271
+ && is_array( $quiz_entry['value'][0] )
272
+ && isset( $quiz_entry['value'][0]['value'] )
273
+ && is_array( $quiz_entry['value'][0]['value'] ) ) {
274
 
275
  $quiz_entry = $quiz_entry['value'][0]['value'];
276
 
293
  }
294
  }
295
  }
 
296
  }
297
  }
298
  }
310
 
311
  $sample['result'] = $result;
312
 
 
313
  // wrap in array as zapier best practices
314
  return array( $sample );
315
  }
442
  $quiz_settings_instance
443
  );
444
 
 
445
  $addon_meta_datas = $addon_meta_data;
446
  if ( ! isset( $addon_meta_data[0] ) || ! is_array( $addon_meta_data[0] ) ) {
447
  return array();
497
  'value' => '',
498
  );
499
 
 
500
  $sub_entries = array();
501
  if ( isset( $status['connection_name'] ) ) {
502
  $sub_entries[] = array(
addons/pro/zapier/{forminator-addon-zapier-quiz-settings-exception.php → class-forminator-addon-zapier-quiz-settings-exception.php} RENAMED
File without changes
addons/pro/zapier/{forminator-addon-zapier-quiz-settings.php → class-forminator-addon-zapier-quiz-settings.php} RENAMED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/forminator-addon-zapier-quiz-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Zapier_Quiz_Settings
@@ -92,7 +92,6 @@ class Forminator_Addon_Zapier_Quiz_Settings extends Forminator_Addon_Quiz_Settin
92
  $is_close = false;
93
  $notification = array();
94
 
95
-
96
  if ( $is_submit ) {
97
  $name = isset( $submitted_data['name'] ) ? trim( $submitted_data['name'] ) : '';
98
  $template_params['name'] = $name;
@@ -100,7 +99,6 @@ class Forminator_Addon_Zapier_Quiz_Settings extends Forminator_Addon_Quiz_Settin
100
  $webhook_url = isset( $submitted_data['webhook_url'] ) ? trim( $submitted_data['webhook_url'] ) : '';
101
  $template_params['webhook_url'] = $webhook_url;
102
 
103
-
104
  try {
105
  $input_exceptions = new Forminator_Addon_Zapier_Quiz_Settings_Exception();
106
 
@@ -149,8 +147,8 @@ class Forminator_Addon_Zapier_Quiz_Settings extends Forminator_Addon_Quiz_Settin
149
  }
150
 
151
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
152
- Forminator_Addon_Zapier::get_button_markup( esc_html__( 'Save', Forminator::DOMAIN ), 'sui-button-primary forminator-addon-finish' ) .
153
- '</div>';
154
 
155
  return array(
156
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
@@ -280,8 +278,8 @@ class Forminator_Addon_Zapier_Quiz_Settings extends Forminator_Addon_Quiz_Settin
280
  $answer_title = 'Sample Answer';
281
 
282
  $answer = array(
283
- 'question' => $question_title,
284
- 'answer' => $answer_title,
285
  );
286
 
287
  if ( 'knowledge' === $this->quiz->quiz_type ) {
@@ -311,7 +309,6 @@ class Forminator_Addon_Zapier_Quiz_Settings extends Forminator_Addon_Quiz_Settin
311
 
312
  $sample['result'] = $result;
313
 
314
-
315
  // wrap in array as zapier best practices
316
  return array( $sample );
317
  }
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-zapier-quiz-settings-exception.php';
4
 
5
  /**
6
  * Class Forminator_Addon_Zapier_Quiz_Settings
92
  $is_close = false;
93
  $notification = array();
94
 
 
95
  if ( $is_submit ) {
96
  $name = isset( $submitted_data['name'] ) ? trim( $submitted_data['name'] ) : '';
97
  $template_params['name'] = $name;
99
  $webhook_url = isset( $submitted_data['webhook_url'] ) ? trim( $submitted_data['webhook_url'] ) : '';
100
  $template_params['webhook_url'] = $webhook_url;
101
 
 
102
  try {
103
  $input_exceptions = new Forminator_Addon_Zapier_Quiz_Settings_Exception();
104
 
147
  }
148
 
149
  $buttons['next']['markup'] = '<div class="sui-actions-right">' .
150
+ Forminator_Addon_Zapier::get_button_markup( esc_html__( 'Save', Forminator::DOMAIN ), 'sui-button-primary forminator-addon-finish' ) .
151
+ '</div>';
152
 
153
  return array(
154
  'html' => Forminator_Addon_Abstract::get_template( $template, $template_params ),
278
  $answer_title = 'Sample Answer';
279
 
280
  $answer = array(
281
+ 'question' => $question_title,
282
+ 'answer' => $answer_title,
283
  );
284
 
285
  if ( 'knowledge' === $this->quiz->quiz_type ) {
309
 
310
  $sample['result'] = $result;
311
 
 
312
  // wrap in array as zapier best practices
313
  return array( $sample );
314
  }
addons/pro/zapier/{forminator-addon-zapier.php → class-forminator-addon-zapier.php} RENAMED
@@ -1,7 +1,7 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/forminator-addon-zapier-exception.php';
4
- require_once dirname( __FILE__ ) . '/lib/class-wp-zapier-api.php';
5
 
6
  /**
7
  * Class Forminator_Addon_Zapier
@@ -42,8 +42,14 @@ final class Forminator_Addon_Zapier extends Forminator_Addon_Abstract {
42
  */
43
  public function __construct() {
44
  // late init to allow translation
45
- $this->_description = __( 'Make your form Zap-able', Forminator::DOMAIN );
46
- $this->_promotion = sprintf( __( 'Zapier connects Forminator with %1$s1000+ apps%3$s. You can use it to send your submissions to third party apps not natively supported in Forminator and automate your after-submission workflows. Refer to this %2$sarticle%3$s for tips and tricks on using Zapier integration and creating automated workflows. Happy automating!', Forminator::DOMAIN ), '<a href="https://zapier.com/apps" target="_blank">', '<a href="https://premium.wpmudev.org/blog/zapier-wordpress-form-integrations/" target="_blank">', '</a>' );
 
 
 
 
 
 
47
 
48
  $this->_activation_error_message = __( 'Sorry but we failed to activate Zapier Integration, don\'t hesitate to contact us', Forminator::DOMAIN );
49
  $this->_deactivation_error_message = __( 'Sorry but we failed to deactivate Zapier Integration, please try again', Forminator::DOMAIN );
@@ -141,7 +147,6 @@ final class Forminator_Addon_Zapier extends Forminator_Addon_Abstract {
141
  if ( empty( $form_id ) ) {
142
  $show_success = true;
143
  }
144
-
145
  } catch ( Forminator_Addon_Zapier_Exception $e ) {
146
  $template_params['error_message'] = $e->getMessage();
147
  $has_errors = true;
@@ -168,8 +173,6 @@ final class Forminator_Addon_Zapier extends Forminator_Addon_Abstract {
168
  'markup' => self::get_button_markup( esc_html__( 'Activate', Forminator::DOMAIN ), 'forminator-addon-connect' ),
169
  );
170
  }
171
-
172
-
173
  }
174
 
175
  return array(
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-zapier-exception.php';
4
+ require_once dirname( __FILE__ ) . '/lib/class-forminator-addon-zapier-wp-api.php';
5
 
6
  /**
7
  * Class Forminator_Addon_Zapier
42
  */
43
  public function __construct() {
44
  // late init to allow translation
45
+ $this->_description = __( 'Make your form Zap-able', Forminator::DOMAIN );
46
+ $this->_promotion = sprintf(
47
+ /* translators: ... */
48
+ __( 'Zapier connects Forminator with %1$s1000+ apps%3$s. You can use it to send your submissions to third party apps not natively supported in Forminator and automate your after-submission workflows. Refer to this %2$sarticle%3$s for tips and tricks on using Zapier integration and creating automated workflows. Happy automating!', Forminator::DOMAIN ),
49
+ '<a href="https://zapier.com/apps" target="_blank">',
50
+ '<a href="https://premium.wpmudev.org/blog/zapier-wordpress-form-integrations/" target="_blank">',
51
+ '</a>'
52
+ );
53
 
54
  $this->_activation_error_message = __( 'Sorry but we failed to activate Zapier Integration, don\'t hesitate to contact us', Forminator::DOMAIN );
55
  $this->_deactivation_error_message = __( 'Sorry but we failed to deactivate Zapier Integration, please try again', Forminator::DOMAIN );
147
  if ( empty( $form_id ) ) {
148
  $show_success = true;
149
  }
 
150
  } catch ( Forminator_Addon_Zapier_Exception $e ) {
151
  $template_params['error_message'] = $e->getMessage();
152
  $has_errors = true;
173
  'markup' => self::get_button_markup( esc_html__( 'Activate', Forminator::DOMAIN ), 'forminator-addon-connect' ),
174
  );
175
  }
 
 
176
  }
177
 
178
  return array(
addons/pro/zapier/lib/{class-wp-zapier-api-exception.php → class-forminator-addon-zapier-wp-api-exception.php} RENAMED
File without changes
addons/pro/zapier/lib/{class-wp-zapier-api-not-found-exception.php → class-forminator-addon-zapier-wp-api-not-found-exception.php} RENAMED
File without changes
addons/pro/zapier/lib/{class-wp-zapier-api.php → class-forminator-addon-zapier-wp-api.php} RENAMED
@@ -1,7 +1,7 @@
1
  <?php
2
 
3
- require_once dirname( __FILE__ ) . '/class-wp-zapier-api-exception.php';
4
- require_once dirname( __FILE__ ) . '/class-wp-zapier-api-not-found-exception.php';
5
 
6
  /**
7
  * Class Forminator_Addon_Zapier_Wp_Api
@@ -122,7 +122,7 @@ class Forminator_Addon_Zapier_Wp_Api {
122
  * @throws Forminator_Addon_Zapier_Wp_Api_Exception
123
  * @throws Forminator_Addon_Zapier_Wp_Api_Not_Found_Exception
124
  */
125
- private function _request( $verb = 'GET', $path, $args = array() ) {
126
  // Adding extra user agent for wp remote request
127
  add_filter( 'http_headers_useragent', array( $this, 'filter_user_agent' ) );
128
 
@@ -215,9 +215,10 @@ class Forminator_Addon_Zapier_Wp_Api {
215
  }
216
 
217
  if ( 404 === $status_code ) {
 
218
  throw new Forminator_Addon_Zapier_Wp_Api_Not_Found_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
219
  }
220
- // /* translators: ... */
221
  throw new Forminator_Addon_Zapier_Wp_Api_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
222
  }
223
  }
@@ -263,7 +264,7 @@ class Forminator_Addon_Zapier_Wp_Api {
263
  */
264
  public function post_( $args ) {
265
 
266
- return $this->_request(
267
  'POST',
268
  '',
269
  $args
1
  <?php
2
 
3
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-zapier-wp-api-exception.php';
4
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-zapier-wp-api-not-found-exception.php';
5
 
6
  /**
7
  * Class Forminator_Addon_Zapier_Wp_Api
122
  * @throws Forminator_Addon_Zapier_Wp_Api_Exception
123
  * @throws Forminator_Addon_Zapier_Wp_Api_Not_Found_Exception
124
  */
125
+ private function request( $verb = 'GET', $path, $args = array() ) {
126
  // Adding extra user agent for wp remote request
127
  add_filter( 'http_headers_useragent', array( $this, 'filter_user_agent' ) );
128
 
215
  }
216
 
217
  if ( 404 === $status_code ) {
218
+ /* translators: ... */
219
  throw new Forminator_Addon_Zapier_Wp_Api_Not_Found_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
220
  }
221
+ /* translators: ... */
222
  throw new Forminator_Addon_Zapier_Wp_Api_Exception( sprintf( __( 'Failed to processing request : %s', Forminator::DOMAIN ), $msg ) );
223
  }
224
  }
264
  */
265
  public function post_( $args ) {
266
 
267
+ return $this->request(
268
  'POST',
269
  '',
270
  $args
addons/pro/zapier/views/poll-settings/setup-webhook.php CHANGED
@@ -27,10 +27,10 @@ foreach ( $template_vars as $key => $val ) {
27
  <label class="sui-label"><?php esc_html_e( 'Zapier Integration Name', Forminator::DOMAIN ); ?></label>
28
  <div class="sui-control-with-icon">
29
  <input type="text"
30
- name="name"
31
- placeholder="<?php esc_attr_e( 'Friendly Name', Forminator::DOMAIN ); ?>"
32
- value="<?php echo esc_attr( $vars['name'] ); ?>"
33
- class="sui-form-control"
34
  />
35
  <i class="sui-icon-web-globe-world" aria-hidden="true"></i>
36
  </div>
@@ -57,11 +57,14 @@ foreach ( $template_vars as $key => $val ) {
57
  </form>
58
  <div class="sui-notice sui-notice-warning">
59
  <p>
60
- <?php echo sprintf(//wpcs xss ok.
61
- __( 'Please go %1$shere%2$s if you do not have any ZAP created. Remember to choose %3$s as Trigger App.', Forminator::DOMAIN ),
62
- '<a href="' . $vars['new_zap_url'] . '" target="_blank">',
 
63
  '</a>',
64
- '<strong>Webhooks by Zapier</strong>'
65
- ); ?>
 
 
66
  </p>
67
  </div>
27
  <label class="sui-label"><?php esc_html_e( 'Zapier Integration Name', Forminator::DOMAIN ); ?></label>
28
  <div class="sui-control-with-icon">
29
  <input type="text"
30
+ name="name"
31
+ placeholder="<?php esc_attr_e( 'Friendly Name', Forminator::DOMAIN ); ?>"
32
+ value="<?php echo esc_attr( $vars['name'] ); ?>"
33
+ class="sui-form-control"
34
  />
35
  <i class="sui-icon-web-globe-world" aria-hidden="true"></i>
36
  </div>
57
  </form>
58
  <div class="sui-notice sui-notice-warning">
59
  <p>
60
+ <?php
61
+ echo sprintf(/* translators: ... */
62
+ esc_html__( 'Please go %1$shere%2$s if you do not have any ZAP created. Remember to choose %3$sWebhooks by Zapier%4$s as Trigger App.', Forminator::DOMAIN ),
63
+ '<a href="' . esc_url( $vars['new_zap_url'] ) . '" target="_blank">',
64
  '</a>',
65
+ '<strong>',
66
+ '</strong>'
67
+ );
68
+ ?>
69
  </p>
70
  </div>
addons/pro/zapier/views/quiz-settings/setup-webhook.php CHANGED
@@ -27,10 +27,10 @@ foreach ( $template_vars as $key => $val ) {
27
  <label class="sui-label"><?php esc_html_e( 'Zapier Integration Name', Forminator::DOMAIN ); ?></label>
28
  <div class="sui-control-with-icon">
29
  <input type="text"
30
- name="name"
31
- placeholder="<?php esc_attr_e( 'Friendly Name', Forminator::DOMAIN ); ?>"
32
- value="<?php echo esc_attr( $vars['name'] ); ?>"
33
- class="sui-form-control"
34
  />
35
  <i class="sui-icon-web-globe-world" aria-hidden="true"></i>
36
  </div>
@@ -57,11 +57,14 @@ foreach ( $template_vars as $key => $val ) {
57
  </form>
58
  <div class="sui-notice sui-notice-warning">
59
  <p>
60
- <?php echo sprintf(//wpcs xss ok.
61
- __( 'Please go %1$shere%2$s if you do not have any ZAP created. Remember to choose %3$s as Trigger App.', Forminator::DOMAIN ),
62
- '<a href="' . $vars['new_zap_url'] . '" target="_blank">',
 
63
  '</a>',
64
- '<strong>Webhooks by Zapier</strong>'
65
- ); ?>
 
 
66
  </p>
67
  </div>
27
  <label class="sui-label"><?php esc_html_e( 'Zapier Integration Name', Forminator::DOMAIN ); ?></label>
28
  <div class="sui-control-with-icon">
29
  <input type="text"
30
+ name="name"
31
+ placeholder="<?php esc_attr_e( 'Friendly Name', Forminator::DOMAIN ); ?>"
32
+ value="<?php echo esc_attr( $vars['name'] ); ?>"
33
+ class="sui-form-control"
34
  />
35
  <i class="sui-icon-web-globe-world" aria-hidden="true"></i>
36
  </div>
57
  </form>
58
  <div class="sui-notice sui-notice-warning">
59
  <p>
60
+ <?php
61
+ echo sprintf(/* translators: ... */
62
+ esc_html__( 'Please go %1$shere%2$s if you do not have any ZAP created. Remember to choose %3$sWebhooks by Zapier%4$s as Trigger App.', Forminator::DOMAIN ),
63
+ '<a href="' . esc_url( $vars['new_zap_url'] ) . '" target="_blank">',
64
  '</a>',
65
+ '<strong>',
66
+ '</strong>'
67
+ );
68
+ ?>
69
  </p>
70
  </div>
addons/pro/zapier/views/settings/setup-connect-success.php CHANGED
@@ -1,6 +1,9 @@
1
  <div class="integration-header">
2
  <h3 class="sui-box-title" id="dialogTitle2">
3
- <?php echo esc_html( sprintf( __( '%1$s Added', Forminator::DOMAIN ), 'Zapier' ) ); ?>
 
 
 
4
  </h3>
5
  <span class="sui-description" style="margin-top: 20px;"><?php esc_html_e( 'You can now go to your forms and assign them to this integration', Forminator::DOMAIN ); ?></span>
6
  </div>
1
  <div class="integration-header">
2
  <h3 class="sui-box-title" id="dialogTitle2">
3
+ <?php
4
+ /* translators: ... */
5
+ echo esc_html( sprintf( __( '%1$s Added', Forminator::DOMAIN ), 'Zapier' ) );
6
+ ?>
7
  </h3>
8
  <span class="sui-description" style="margin-top: 20px;"><?php esc_html_e( 'You can now go to your forms and assign them to this integration', Forminator::DOMAIN ); ?></span>
9
  </div>
addons/pro/zapier/views/settings/setup-connect.php CHANGED
@@ -12,7 +12,12 @@ foreach ( $template_vars as $key => $val ) {
12
 
13
  <div class="integration-header">
14
 
15
- <h3 id="dialogTitle2" class="sui-box-title"><?php echo esc_html( sprintf( __( 'Activate %1$s', Forminator::DOMAIN ), 'Zapier' ) ); ?></h3>
 
 
 
 
 
16
 
17
  <span class="sui-description" style="margin-top: 20px;"><?php esc_html_e( 'Activate Zapier to start using it on your forms.', Forminator::DOMAIN ); ?></span>
18
 
12
 
13
  <div class="integration-header">
14
 
15
+ <h3 id="dialogTitle2" class="sui-box-title">
16
+ <?php
17
+ /* translators: ... */
18
+ echo esc_html( sprintf( __( 'Activate %1$s', Forminator::DOMAIN ), 'Zapier' ) );
19
+ ?>
20
+ </h3>
21
 
22
  <span class="sui-description" style="margin-top: 20px;"><?php esc_html_e( 'Activate Zapier to start using it on your forms.', Forminator::DOMAIN ); ?></span>
23
 
addons/pro/zapier/zapier.php CHANGED
@@ -23,16 +23,16 @@ function forminator_addon_zapier_dir() {
23
  return trailingslashit( dirname( __FILE__ ) );
24
  }
25
 
26
- require_once dirname( __FILE__ ) . '/forminator-addon-zapier.php';
27
 
28
- require_once dirname( __FILE__ ) . '/forminator-addon-zapier-form-settings.php';
29
- require_once dirname( __FILE__ ) . '/forminator-addon-zapier-form-hooks.php';
30
 
31
- require_once dirname( __FILE__ ) . '/forminator-addon-zapier-poll-settings.php';
32
- require_once dirname( __FILE__ ) . '/forminator-addon-zapier-poll-hooks.php';
33
 
34
- require_once dirname( __FILE__ ) . '/forminator-addon-zapier-quiz-settings.php';
35
- require_once dirname( __FILE__ ) . '/forminator-addon-zapier-quiz-hooks.php';
36
 
37
  //Direct Load
38
  Forminator_Addon_Loader::get_instance()->register( 'Forminator_Addon_Zapier' );
23
  return trailingslashit( dirname( __FILE__ ) );
24
  }
25
 
26
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-zapier.php';
27
 
28
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-zapier-form-settings.php';
29
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-zapier-form-hooks.php';
30
 
31
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-zapier-poll-settings.php';
32
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-zapier-poll-hooks.php';
33
 
34
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-zapier-quiz-settings.php';
35
+ require_once dirname( __FILE__ ) . '/class-forminator-addon-zapier-quiz-hooks.php';
36
 
37
  //Direct Load
38
  Forminator_Addon_Loader::get_instance()->register( 'Forminator_Addon_Zapier' );
admin/abstracts/class-admin-import-mediator.php CHANGED
@@ -101,6 +101,8 @@ abstract class Forminator_Import_Mediator {
101
  case 'user_display_name':
102
  $value = "wp_user.display_name";
103
  break;
 
 
104
  }
105
  }
106
 
101
  case 'user_display_name':
102
  $value = "wp_user.display_name";
103
  break;
104
+ default:
105
+ break;
106
  }
107
  }
108
 
admin/abstracts/class-admin-module.php CHANGED
@@ -40,14 +40,14 @@ abstract class Forminator_Admin_Module {
40
  $this->includes();
41
 
42
  add_action( 'admin_menu', array( $this, 'add_menu_pages' ) );
43
- add_action( 'admin_head', array( $this, "hide_menu_pages" ) );
44
 
45
  // admin-menu-editor compat
46
- add_action( 'admin_menu_editor-menu_replaced', array( $this, "hide_menu_pages" ) );
47
 
48
- add_filter( 'forminator_data', array( $this, "add_js_defaults" ) );
49
- add_filter( 'forminator_l10n', array( $this, "add_l10n_strings" ) );
50
- add_filter( 'submenu_file', array( $this, "admin_submenu_file" ), 10, 2 );
51
  }
52
 
53
  /**
@@ -109,7 +109,7 @@ abstract class Forminator_Admin_Module {
109
  * @return mixed
110
  */
111
  public static function is_edit() {
112
- return (bool) filter_input( INPUT_GET, "id", FILTER_VALIDATE_INT );
113
  }
114
 
115
  /**
40
  $this->includes();
41
 
42
  add_action( 'admin_menu', array( $this, 'add_menu_pages' ) );
43
+ add_action( 'admin_head', array( $this, 'hide_menu_pages' ) );
44
 
45
  // admin-menu-editor compat
46
+ add_action( 'admin_menu_editor-menu_replaced', array( $this, 'hide_menu_pages' ) );
47
 
48
+ add_filter( 'forminator_data', array( $this, 'add_js_defaults' ) );
49
+ add_filter( 'forminator_l10n', array( $this, 'add_l10n_strings' ) );
50
+ add_filter( 'submenu_file', array( $this, 'admin_submenu_file' ), 10, 2 );
51
  }
52
 
53
  /**
109
  * @return mixed
110
  */
111
  public static function is_edit() {
112
+ return (bool) filter_input( INPUT_GET, 'id', FILTER_VALIDATE_INT );
113
  }
114
 
115
  /**
admin/abstracts/class-admin-page.php CHANGED
@@ -67,7 +67,7 @@ abstract class Forminator_Admin_Page {
67
  $page_slug,
68
  $render ? array( $this, 'render' ) : null,
69
  'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzNDAiIGhlaWdodD0iMzAyIj48ZyBmaWxsPSIjODg4IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yMjkuMjc4IDI0Ljg3OGwtMjAuMjEtMjAuMjE3di0uMDAzYy0zLjM1Ni0zLjMzOC04Ljc3OC0zLjMzNS0xMi4xMS4wMDNMNjQuNTIzIDEzNy4xMDFhOC41MDcgOC41MDcgMCAwIDAtMi41MDggNi4wNTJjMCAyLjI4OC44OTIgNC40NCAyLjUwOCA2LjA1MmwyMC4yMTEgMjAuMjE3YTguNTQgOC41NCAwIDAgMCA2LjA1MiAyLjUwNCA4LjU0IDguNTQgMCAwIDAgNi4wNTctMi41MDRsMTMyLjQzNS0xMzIuNDRjMy4zMzgtMy4zMzkgMy4zMzgtOC43NjYgMC0xMi4xMDRtMTA4LjIyMyAyMS43OTRsLTIwLjIxNy0yMC4yMTRjLTMuMzMyLTMuMzM4LTguNzcxLTMuMzM4LTEyLjEwMyAwTDEyOS41MjYgMjAyLjEwN2MtMy4zMzggMy4zMzgtMy4zMzggOC43NjggMCAxMi4xMDZsMjAuMjE3IDIwLjIxNGE4LjUyOCA4LjUyOCAwIDAgMCA2LjA1MiAyLjUwMmMyLjE5IDAgNC4zODUtLjgzMyA2LjA1LTIuNTAyTDMzNy41MDIgNTguNzc1YzMuMzMyLTMuMzM1IDMuMzMyLTguNzYyIDAtMTIuMTAzTTUxLjEyIDIxMC44NTZjLTEuNDQyLTEuNDM4LTMuNDY1LTIuMDM0LTUuNDc3LTEuNTQ0YTUuNzkgNS43OSAwIDAgMC00LjE4NSAzLjg1OWwtMTcuODkzIDU0Ljg2NGE1Ljc5NiA1Ljc5NiAwIDAgMCAxLjQxNiA1LjkyOSA1LjggNS44IDAgMCAwIDUuOTI5IDEuNDJsNTQuODcyLTE3Ljg5NXYtLjAwM2E1Ljc4NCA1Ljc4NCAwIDAgMCAzLjg1Ni00LjE4MiA1Ljc5MSA1Ljc5MSAwIDAgMC0xLjU1LTUuNDc1bC0zNi45NjctMzYuOTczem0yNDguNzIxLTc2Ljc4M2wtMzMuMTA2IDMzLjEwNmE4LjMxMSA4LjMxMSAwIDAgMC0yLjMzNSA0LjUxNmMtOS43OTYgNTUuNDA0LTU3LjczIDk1LjYxOC0xMTMuOTc5IDk1LjYxOC01LjYwNSAwLTExLjMwNi0uNDYzLTE3LjQxOS0xLjQxMy0yLjY1OC0uNDIzLTUuNDU1LjQ2Ni03LjM3MiAyLjM4M2wtMTQuODc5IDE0Ljg3OGMtMi4yMTggMi4yMjEtMy4wMzcgNS4zNTItMi4xOSA4LjM4MS44NDcgMy4wMzQgMy4xODIgNS4yOTEgNi4yNDEgNi4wMzhhMTUwLjY3NCAxNTAuNjc0IDAgMCAwIDM1LjYyIDQuMjcxYzgyLjk0NSAwIDE1MC40MjgtNjcuNDggMTUwLjQyOC0xNTAuNDI1IDAtMy40MzYtLjI0Ni02LjgxMy0uNDktMTAuMTg3bC0uNTE5LTcuMTY2ek0xNjIuNDU1IDEuNWwtMzUuNjQyIDM1LjYxNGMtMS4yNDQgMS4yMS0zLjAwNCAxLjY5OS00LjcxNyAyLjEwNC00Ni4zNjcgMTAuOTY4LTg2LjM4IDUzLjk3LTg3LjQ2NyAxMDcuOTUtLjExMiA1LjYwNC0uMDk0IDExLjE1My43NDkgMTcuMjgyLjM3NiAyLjY2NS0uNTYxIDUuNDQ2LTIuNTExIDcuMzNMMTcuNzMgMTg2LjM5NWMtMi4yNiAyLjE4LTQuOTE1IDMuMDQ4LTguNDE4IDIuMDQ0LTMuNTAzLTEuMDA0LTUuNC0zLjM3Mi02LjA5My02LjQ0My0yLjYzLTExLjY3OC0zLjU5My0yMy43MDItMy4xLTM1Ljg5M0MzLjQ3NiA2My4yMzUgNzAuMDY1IDIuNjcgMTQ3LjAyMyAxLjAwOGMzLjQzNi0uMDc0IDMuODU1LS4xMzQgNy4yMjUuMTdsOC4yMDguMzIyeiIvPjwvZz48L3N2Zz4='
70
- //'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj48cGF0aCBmaWxsPSIjODg4IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNDkuNDQ2IDI2Ny42MmExMTcuNzYgMTE3Ljc2IDAgMCAxLTI3Ljg1LTMuMzQgNi42NDMgNi42NDMgMCAwIDEtNC44ODEtNC43MmMtLjY2MS0yLjM2OS0uMDIxLTQuODE4IDEuNzEzLTYuNTU0bDExLjYzNC0xMS42MzRjMS40OTgtMS40OTkgMy42ODYtMi4xOTMgNS43NjUtMS44NjMgNC43NzkuNzQzIDkuMjM1IDEuMTA1IDEzLjYxOSAxLjEwNSA0My45ODIgMCA4MS40NjItMzEuNDQ0IDg5LjEyMy03NC43NjVhNi40OTIgNi40OTIgMCAwIDEgMS44MjUtMy41M2wyNS44ODUtMjUuODg3LjQwNiA1LjYwM2MuMTkzIDIuNjQuMzg0IDUuMjguMzg0IDcuOTY1IDAgNjQuODU3LTUyLjc2NiAxMTcuNjItMTE3LjYyMyAxMTcuNjJtLTQ2LjYzLTEwMS41OWE2LjY4NCA2LjY4NCAwIDAgMS00LjczMi0xLjk1OGwtMTUuODAyLTE1LjgwOGE2LjY0IDYuNjQgMCAwIDEtMS45NjItNC43MzJjMC0xLjc4Ny42OTctMy40NjggMS45NjItNC43MzJsMTAzLjU1LTEwMy41NTdjMi42MDctMi42MSA2Ljg0Ny0yLjYxMiA5LjQ3LS4wMDJ2LjAwMmwxNS44MDMgMTUuODA3YTYuNyA2LjcgMCAwIDEgMCA5LjQ2NUwxMDcuNTUzIDE2NC4wNzJhNi42ODYgNi42ODYgMCAwIDEtNC43MzcgMS45NThtLS44OTcgNjMuNjNhNC41MjQgNC41MjQgMCAwIDEtMy4wMTUgMy4yN3YuMDAybC00Mi45MDUgMTMuOTkzYTQuNTI4IDQuNTI4IDAgMCAxLTQuNjM2LTEuMTExIDQuNTI4IDQuNTI4IDAgMCAxLTEuMTA3LTQuNjM2bDEzLjk5LTQyLjg5OWE0LjUyMiA0LjUyMiAwIDAgMSAzLjI3My0zLjAxNmMxLjU3Mi0uMzg0IDMuMTU0LjA4MiA0LjI4MiAxLjIwNmwyOC45MDcgMjguOTFhNC41MjggNC41MjggMCAwIDEgMS4yMSA0LjI4MW0tNjEtNTAuNDM0YTYuNzk1IDYuNzk1IDAgMCAxLTEuOTIxLS4yNzljLTIuMzg4LS43MS00LjEyMy0yLjU4Ni00LjYzNi01LjAxNS0xLjY3OC03LjkzOS0yLjUzMi0xNS45OS0yLjUzMi0yMy45MzIgMC02NC44NTcgNTIuNzYtMTE3LjYyIDExNy42MTctMTE3LjYyLjg5NCAwIDEuNzc0LjA2IDIuNjUuMTIuNTQ5LjAzNyAxLjA5OC4wNzYgMS42NS4wOTZsNS4xMjYuMTgxLTI3LjQyIDI3LjQyYTYuNTk3IDYuNTk3IDAgMCAxLTMuMTE2IDEuNzM2aC0uMDA1Qzg3LjQxNCA3MS43MSA1OC44MzQgMTA3LjkyNSA1OC44MzQgMTUwYzAgMy4wNTUuMjA2IDYuMjgzLjYyNCA5Ljg3MWE2LjY1OCA2LjY1OCAwIDAgMS0xLjkwNCA1LjUwM2wtMTEuODg3IDExLjg4N2E2LjcxNSA2LjcxNSAwIDAgMS00Ljc1IDEuOTY1bTI0NS4yNTgtOTIuMTJMMTU4LjM3OSAyMTQuOWE2LjY2OCA2LjY2OCAwIDAgMS00LjczMSAxLjk1NiA2LjY2OCA2LjY2OCAwIDAgMS00LjczMy0xLjk1NmwtMTUuODA4LTE1LjgwNWE2LjcgNi43IDAgMCAxIDAtOS40NjZMMjY2LjgwNiA1NS45MzNDMjM5LjMxIDIxLjgzNCAxOTcuMjE1IDAgMTUwIDAgNjcuMTU3IDAgMCA2Ny4xNTcgMCAxNTBjMCA4Mi44NDIgNjcuMTU3IDE1MCAxNTAgMTUwczE1MC02Ny4xNTggMTUwLTE1MGMwLTIyLjQ2Ny00Ljk3My00My43NjItMTMuODI1LTYyLjg5NCIvPjwvc3ZnPg=='
71
  );
72
  } else {
73
  $this->page_id = add_submenu_page(
@@ -231,7 +231,10 @@ abstract class Forminator_Admin_Page {
231
  protected function render_footer() {
232
 
233
  $hide_footer = false;
234
- $footer_text = sprintf( __( 'Made with %s by WPMU DEV', 'wpmudev' ), ' <i class="sui-icon-heart"></i>' );
 
 
 
235
  if ( Forminator::is_wpmudev_member() ) {
236
  $hide_footer = apply_filters( 'wpmudev_branding_change_footer', $hide_footer );
237
  $footer_text = apply_filters( 'wpmudev_branding_footer_text', $footer_text );
@@ -239,8 +242,9 @@ abstract class Forminator_Admin_Page {
239
 
240
  if ( $this->template_exists( $this->folder . '/footer' ) ) {
241
  $this->template( $this->folder . '/footer' );
242
- } ?>
243
- <div class="sui-footer"><?php echo $footer_text; // wpcs xss ok. ?></div>
 
244
 
245
  <?php if ( FORMINATOR_PRO ) { ?>
246
 
@@ -290,7 +294,8 @@ abstract class Forminator_Admin_Page {
290
  </ul>
291
  <?php endif; ?>
292
 
293
- <?php }
 
294
 
295
  /**
296
  * Render page container
@@ -358,8 +363,8 @@ abstract class Forminator_Admin_Page {
358
  }
359
 
360
  if ( $echo ) {
361
- echo $content;
362
- }// WPCS: XSS ok.
363
 
364
  return $content;
365
  }
67
  $page_slug,
68
  $render ? array( $this, 'render' ) : null,
69
  'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzNDAiIGhlaWdodD0iMzAyIj48ZyBmaWxsPSIjODg4IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yMjkuMjc4IDI0Ljg3OGwtMjAuMjEtMjAuMjE3di0uMDAzYy0zLjM1Ni0zLjMzOC04Ljc3OC0zLjMzNS0xMi4xMS4wMDNMNjQuNTIzIDEzNy4xMDFhOC41MDcgOC41MDcgMCAwIDAtMi41MDggNi4wNTJjMCAyLjI4OC44OTIgNC40NCAyLjUwOCA2LjA1MmwyMC4yMTEgMjAuMjE3YTguNTQgOC41NCAwIDAgMCA2LjA1MiAyLjUwNCA4LjU0IDguNTQgMCAwIDAgNi4wNTctMi41MDRsMTMyLjQzNS0xMzIuNDRjMy4zMzgtMy4zMzkgMy4zMzgtOC43NjYgMC0xMi4xMDRtMTA4LjIyMyAyMS43OTRsLTIwLjIxNy0yMC4yMTRjLTMuMzMyLTMuMzM4LTguNzcxLTMuMzM4LTEyLjEwMyAwTDEyOS41MjYgMjAyLjEwN2MtMy4zMzggMy4zMzgtMy4zMzggOC43NjggMCAxMi4xMDZsMjAuMjE3IDIwLjIxNGE4LjUyOCA4LjUyOCAwIDAgMCA2LjA1MiAyLjUwMmMyLjE5IDAgNC4zODUtLjgzMyA2LjA1LTIuNTAyTDMzNy41MDIgNTguNzc1YzMuMzMyLTMuMzM1IDMuMzMyLTguNzYyIDAtMTIuMTAzTTUxLjEyIDIxMC44NTZjLTEuNDQyLTEuNDM4LTMuNDY1LTIuMDM0LTUuNDc3LTEuNTQ0YTUuNzkgNS43OSAwIDAgMC00LjE4NSAzLjg1OWwtMTcuODkzIDU0Ljg2NGE1Ljc5NiA1Ljc5NiAwIDAgMCAxLjQxNiA1LjkyOSA1LjggNS44IDAgMCAwIDUuOTI5IDEuNDJsNTQuODcyLTE3Ljg5NXYtLjAwM2E1Ljc4NCA1Ljc4NCAwIDAgMCAzLjg1Ni00LjE4MiA1Ljc5MSA1Ljc5MSAwIDAgMC0xLjU1LTUuNDc1bC0zNi45NjctMzYuOTczem0yNDguNzIxLTc2Ljc4M2wtMzMuMTA2IDMzLjEwNmE4LjMxMSA4LjMxMSAwIDAgMC0yLjMzNSA0LjUxNmMtOS43OTYgNTUuNDA0LTU3LjczIDk1LjYxOC0xMTMuOTc5IDk1LjYxOC01LjYwNSAwLTExLjMwNi0uNDYzLTE3LjQxOS0xLjQxMy0yLjY1OC0uNDIzLTUuNDU1LjQ2Ni03LjM3MiAyLjM4M2wtMTQuODc5IDE0Ljg3OGMtMi4yMTggMi4yMjEtMy4wMzcgNS4zNTItMi4xOSA4LjM4MS44NDcgMy4wMzQgMy4xODIgNS4yOTEgNi4yNDEgNi4wMzhhMTUwLjY3NCAxNTAuNjc0IDAgMCAwIDM1LjYyIDQuMjcxYzgyLjk0NSAwIDE1MC40MjgtNjcuNDggMTUwLjQyOC0xNTAuNDI1IDAtMy40MzYtLjI0Ni02LjgxMy0uNDktMTAuMTg3bC0uNTE5LTcuMTY2ek0xNjIuNDU1IDEuNWwtMzUuNjQyIDM1LjYxNGMtMS4yNDQgMS4yMS0zLjAwNCAxLjY5OS00LjcxNyAyLjEwNC00Ni4zNjcgMTAuOTY4LTg2LjM4IDUzLjk3LTg3LjQ2NyAxMDcuOTUtLjExMiA1LjYwNC0uMDk0IDExLjE1My43NDkgMTcuMjgyLjM3NiAyLjY2NS0uNTYxIDUuNDQ2LTIuNTExIDcuMzNMMTcuNzMgMTg2LjM5NWMtMi4yNiAyLjE4LTQuOTE1IDMuMDQ4LTguNDE4IDIuMDQ0LTMuNTAzLTEuMDA0LTUuNC0zLjM3Mi02LjA5My02LjQ0My0yLjYzLTExLjY3OC0zLjU5My0yMy43MDItMy4xLTM1Ljg5M0MzLjQ3NiA2My4yMzUgNzAuMDY1IDIuNjcgMTQ3LjAyMyAxLjAwOGMzLjQzNi0uMDc0IDMuODU1LS4xMzQgNy4yMjUuMTdsOC4yMDguMzIyeiIvPjwvZz48L3N2Zz4='
70
+ //'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj48cGF0aCBmaWxsPSIjODg4IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNDkuNDQ2IDI2Ny42MmExMTcuNzYgMTE3Ljc2IDAgMCAxLTI3Ljg1LTMuMzQgNi42NDMgNi42NDMgMCAwIDEtNC44ODEtNC43MmMtLjY2MS0yLjM2OS0uMDIxLTQuODE4IDEuNzEzLTYuNTU0bDExLjYzNC0xMS42MzRjMS40OTgtMS40OTkgMy42ODYtMi4xOTMgNS43NjUtMS44NjMgNC43NzkuNzQzIDkuMjM1IDEuMTA1IDEzLjYxOSAxLjEwNSA0My45ODIgMCA4MS40NjItMzEuNDQ0IDg5LjEyMy03NC43NjVhNi40OTIgNi40OTIgMCAwIDEgMS44MjUtMy41M2wyNS44ODUtMjUuODg3LjQwNiA1LjYwM2MuMTkzIDIuNjQuMzg0IDUuMjguMzg0IDcuOTY1IDAgNjQuODU3LTUyLjc2NiAxMTcuNjItMTE3LjYyMyAxMTcuNjJtLTQ2LjYzLTEwMS41OWE2LjY4NCA2LjY4NCAwIDAgMS00LjczMi0xLjk1OGwtMTUuODAyLTE1LjgwOGE2LjY0IDYuNjQgMCAwIDEtMS45NjItNC43MzJjMC0xLjc4Ny42OTctMy40NjggMS45NjItNC43MzJsMTAzLjU1LTEwMy41NTdjMi42MDctMi42MSA2Ljg0Ny0yLjYxMiA5LjQ3LS4wMDJ2LjAwMmwxNS44MDMgMTUuODA3YTYuNyA2LjcgMCAwIDEgMCA5LjQ2NUwxMDcuNTUzIDE2NC4wNzJhNi42ODYgNi42ODYgMCAwIDEtNC43MzcgMS45NThtLS44OTcgNjMuNjNhNC41MjQgNC41MjQgMCAwIDEtMy4wMTUgMy4yN3YuMDAybC00Mi45MDUgMTMuOTkzYTQuNTI4IDQuNTI4IDAgMCAxLTQuNjM2LTEuMTExIDQuNTI4IDQuNTI4IDAgMCAxLTEuMTA3LTQuNjM2bDEzLjk5LTQyLjg5OWE0LjUyMiA0LjUyMiAwIDAgMSAzLjI3My0zLjAxNmMxLjU3Mi0uMzg0IDMuMTU0LjA4MiA0LjI4MiAxLjIwNmwyOC45MDcgMjguOTFhNC41MjggNC41MjggMCAwIDEgMS4yMSA0LjI4MW0tNjEtNTAuNDM0YTYuNzk1IDYuNzk1IDAgMCAxLTEuOTIxLS4yNzljLTIuMzg4LS43MS00LjEyMy0yLjU4Ni00LjYzNi01LjAxNS0xLjY3OC03LjkzOS0yLjUzMi0xNS45OS0yLjUzMi0yMy45MzIgMC02NC44NTcgNTIuNzYtMTE3LjYyIDExNy42MTctMTE3LjYyLjg5NCAwIDEuNzc0LjA2IDIuNjUuMTIuNTQ5LjAzNyAxLjA5OC4wNzYgMS42NS4wOTZsNS4xMjYuMTgxLTI3LjQyIDI3LjQyYTYuNTk3IDYuNTk3IDAgMCAxLTMuMTE2IDEuNzM2aC0uMDA1Qzg3LjQxNCA3MS43MSA1OC44MzQgMTA3LjkyNSA1OC44MzQgMTUwYzAgMy4wNTUuMjA2IDYuMjgzLjYyNCA5Ljg3MWE2LjY1OCA2LjY1OCAwIDAgMS0xLjkwNCA1LjUwM2wtMTEuODg3IDExLjg4N2E2LjcxNSA2LjcxNSAwIDAgMS00Ljc1IDEuOTY1bTI0NS4yNTgtOTIuMTJMMTU4LjM3OSAyMTQuOWE2LjY2OCA2LjY2OCAwIDAgMS00LjczMSAxLjk1NiA2LjY2OCA2LjY2OCAwIDAgMS00LjczMy0xLjk1NmwtMTUuODA4LTE1LjgwNWE2LjcgNi43IDAgMCAxIDAtOS40NjZMMjY2LjgwNiA1NS45MzNDMjM5LjMxIDIxLjgzNCAxOTcuMjE1IDAgMTUwIDAgNjcuMTU3IDAgMCA2Ny4xNTcgMCAxNTBjMCA4Mi44NDIgNjcuMTU3IDE1MCAxNTAgMTUwczE1MC02Ny4xNTggMTUwLTE1MGMwLTIyLjQ2Ny00Ljk3My00My43NjItMTMuODI1LTYyLjg5NCIvPjwvc3ZnPg=='
71
  );
72
  } else {
73
  $this->page_id = add_submenu_page(
231
  protected function render_footer() {
232
 
233
  $hide_footer = false;
234
+ $footer_text = sprintf(/* translators: ... */
235
+ __( 'Made with %s by WPMU DEV', 'wpmudev' ),
236
+ ' <i class="sui-icon-heart"></i>'
237
+ );
238
  if ( Forminator::is_wpmudev_member() ) {
239
  $hide_footer = apply_filters( 'wpmudev_branding_change_footer', $hide_footer );
240
  $footer_text = apply_filters( 'wpmudev_branding_footer_text', $footer_text );
242
 
243
  if ( $this->template_exists( $this->folder . '/footer' ) ) {
244
  $this->template( $this->folder . '/footer' );
245
+ }
246
+ ?>
247
+ <div class="sui-footer"><?php echo $footer_text; // phpcs:ignore ?></div>
248
 
249
  <?php if ( FORMINATOR_PRO ) { ?>
250
 
294
  </ul>
295
  <?php endif; ?>
296
 
297
+ <?php
298
+ }
299
 
300
  /**
301
  * Render page container
363
  }
364
 
365
  if ( $echo ) {
366
+ echo $content;// phpcs:ignore
367
+ }
368
 
369
  return $content;
370
  }
admin/classes/class-admin-ajax.php CHANGED
@@ -17,58 +17,58 @@ class Forminator_Admin_AJAX {
17
  */
18
  public function __construct() {
19
  // Handle close welcome box
20
- add_action( "wp_ajax_forminator_dismiss_welcome", array( $this, "dismiss_welcome" ) );
21
- add_action( "wp_ajax_nopriv_forminator_dismiss_welcome", array( $this, "dismiss_welcome" ) );
22
 
23
  // Handle load google fonts
24
- add_action( "wp_ajax_forminator_load_google_fonts", array( $this, "load_google_fonts" ) );
25
 
26
  // Handle load reCaptcha preview
27
- add_action( "wp_ajax_forminator_load_recaptcha_preview", array( $this, "load_recaptcha_preview" ) );
28
 
29
  // Handle save settings
30
- add_action( "wp_ajax_forminator_save_builder", array( $this, "save_builder" ) );
31
- add_action( "wp_ajax_forminator_save_poll", array( $this, "save_poll_form" ) );
32
- add_action( "wp_ajax_forminator_save_quiz_nowrong", array( $this, "save_quiz" ) );
33
- add_action( "wp_ajax_forminator_save_quiz_knowledge", array( $this, "save_quiz" ) );
34
- add_action( "wp_ajax_forminator_save_login", array( $this, "save_login" ) );
35
- add_action( "wp_ajax_forminator_save_register", array( $this, "save_register" ) );
36
 
37
  // Handle settings popups
38
- add_action( "wp_ajax_forminator_load_captcha_popup", array( $this, "load_captcha" ) );
39
- add_action( "wp_ajax_forminator_save_captcha_popup", array( $this, "save_captcha" ) );
40
 
41
- add_action( "wp_ajax_forminator_load_currency_popup", array( $this, "load_currency" ) );
42
- add_action( "wp_ajax_forminator_save_currency_popup", array( $this, "save_currency" ) );
43
 
44
- add_action( "wp_ajax_forminator_load_pagination_entries_popup", array( $this, "load_pagination_entries" ) );
45
- add_action( "wp_ajax_forminator_save_pagination_entries_popup", array( $this, "save_pagination_entries" ) );
46
 
47
- add_action( "wp_ajax_forminator_load_pagination_listings_popup", array( $this, "load_pagination_listings" ) );
48
- add_action( "wp_ajax_forminator_save_pagination_listings_popup", array( $this, "save_pagination_listings" ) );
49
 
50
- add_action( "wp_ajax_forminator_load_email_settings_popup", array( $this, "load_email_form" ) );
51
 
52
- add_action( "wp_ajax_forminator_load_uninstall_settings_popup", array( $this, "load_uninstall_form" ) );
53
- add_action( "wp_ajax_forminator_save_uninstall_settings_popup", array( $this, "save_uninstall_form" ) );
54
 
55
- add_action( "wp_ajax_forminator_load_preview_cforms_popup", array( $this, "preview_custom_forms" ) );
56
- add_action( "wp_ajax_forminator_load_preview_polls_popup", array( $this, "preview_polls" ) );
57
- add_action( "wp_ajax_forminator_load_preview_quizzes_popup", array( $this, "preview_quizzes" ) );
58
 
59
  // Handle exports popup
60
- add_action( "wp_ajax_forminator_load_exports_popup", array( $this, "load_exports" ) );
61
- add_action( "wp_ajax_forminator_clear_exports_popup", array( $this, "clear_exports" ) );
62
 
63
  // Handle search user email
64
- add_action( "wp_ajax_forminator_builder_search_emails", array( $this, "search_emails" ) );
65
 
66
- add_action( "wp_ajax_forminator_load_privacy_settings_popup", array( $this, "load_privacy_settings" ) );
67
- add_action( "wp_ajax_forminator_save_privacy_settings_popup", array( $this, "save_privacy_settings" ) );
68
 
69
- add_action( "wp_ajax_forminator_load_export_custom_form_popup", array( $this, "load_export_custom_form" ) );
70
- add_action( "wp_ajax_forminator_load_import_custom_form_popup", array( $this, "load_import_custom_form" ) );
71
- add_action( "wp_ajax_forminator_save_import_custom_form_popup", array( $this, "save_import_custom_form" ) );
72
 
73
  add_action( "wp_ajax_forminator_load_import_custom_form_cf7_popup", array( $this, "load_import_custom_form_cf7" ) );
74
  add_action( "wp_ajax_forminator_save_import_custom_form_cf7_popup", array( $this, "save_import_custom_form_cf7" ) );
@@ -83,29 +83,29 @@ class Forminator_Admin_AJAX {
83
  add_action( "wp_ajax_forminator_load_import_poll_popup", array( $this, "load_import_poll" ) );
84
  add_action( "wp_ajax_forminator_save_import_poll_popup", array( $this, "save_import_poll" ) );
85
 
86
- add_action( "wp_ajax_forminator_delete_poll_submissions", array( $this, "delete_poll_submissions" ) );
87
 
88
- add_action( "wp_ajax_forminator_load_export_quiz_popup", array( $this, "load_export_quiz" ) );
89
- add_action( "wp_ajax_forminator_load_import_quiz_popup", array( $this, "load_import_quiz" ) );
90
- add_action( "wp_ajax_forminator_save_import_quiz_popup", array( $this, "save_import_quiz" ) );
91
 
92
- add_action( "wp_ajax_forminator_save_accessibility_settings_popup", array( $this, "save_accessibility_settings" ) );
93
 
94
- add_action( "wp_ajax_forminator_validate_calculation_formula", array( $this, "validate_calculation_formula" ) );
95
- add_action( "wp_ajax_forminator_save_dashboard_settings_popup", array( $this, "save_dashboard_settings" ) );
96
 
97
- add_action( "wp_ajax_forminator_stripe_settings_modal", array( $this, "stripe_settings_modal" ) );
98
- add_action( "wp_ajax_forminator_stripe_update_page", array( $this, "stripe_update_page" ) );
99
- add_action( "wp_ajax_forminator_disconnect_stripe", array( $this, "stripe_disconnect" ) );
100
 
101
- add_action( "wp_ajax_forminator_paypal_settings_modal", array( $this, "paypal_settings_modal" ) );
102
- add_action( "wp_ajax_forminator_paypal_update_page", array( $this, "paypal_update_page" ) );
103
- add_action( "wp_ajax_forminator_disconnect_paypal", array( $this, "paypal_disconnect" ) );
104
 
105
- add_action( "wp_ajax_forminator_save_payments_settings_popup", array( $this, "save_payments" ) );
106
- add_action( "wp_ajax_forminator_dismiss_notification", array( $this, "dismiss_notice" ) );
107
 
108
- add_action( "wp_ajax_forminator_later_notification", array( $this, "later_notice" ) );
109
  }
110
 
111
  /**
@@ -119,19 +119,19 @@ class Forminator_Admin_AJAX {
119
  return;
120
  }
121
 
122
- forminator_validate_ajax( "forminator_save_quiz" );
123
 
124
  $submitted_data = $this->get_post_data();
125
 
126
- $quiz_data = array();
127
  if ( isset( $submitted_data['data'] ) ) {
128
  $quiz_data = $submitted_data['data'];
129
  $quiz_data = json_decode( stripslashes( $quiz_data ), true );
130
  }
131
 
132
- $questions = array();
133
- $results = array();
134
- $settings = array();
135
  $msg_count = false;
136
  $id = isset( $submitted_data['form_id'] ) ? $submitted_data['form_id'] : null;
137
  $id = intval( $id );
@@ -205,7 +205,7 @@ class Forminator_Admin_AJAX {
205
  // Handle quiz questions
206
  $form_model->questions = $questions;
207
 
208
- if( isset( $quiz_data['settings']['msg_count'] ) ) {
209
  $msg_count = $quiz_data['settings']['msg_count']; //Backup, we allow html here
210
  }
211
 
@@ -229,7 +229,7 @@ class Forminator_Admin_AJAX {
229
  }
230
 
231
  // Update with backuped version
232
- if( $msg_count ) {
233
  $settings['msg_count'] = $msg_count;
234
  }
235
 
@@ -277,7 +277,7 @@ class Forminator_Admin_AJAX {
277
  return;
278
  }
279
 
280
- forminator_validate_ajax( "forminator_save_poll" );
281
 
282
  $submitted_data = $this->get_post_data();
283
  $poll_data = array();
@@ -399,12 +399,12 @@ class Forminator_Admin_AJAX {
399
  return;
400
  }
401
 
402
- forminator_validate_ajax( "forminator_save_builder_fields" );
403
 
404
  $submitted_data = $this->get_post_data();
405
  $form_data = $submitted_data['data'];
406
  $form_data = json_decode( stripslashes( $form_data ), true );
407
- $fields = array();
408
  $notifications = array();
409
  $id = isset( $submitted_data['form_id'] ) ? $submitted_data['form_id'] : null;
410
  $id = intval( $id );
@@ -457,6 +457,7 @@ class Forminator_Admin_AJAX {
457
 
458
  // Sanitize settings
459
  $settings = forminator_sanitize_field( $form_data['settings'] );
 
460
 
461
  // Sanitize custom css
462
  if ( isset( $form_data['settings']['custom_css'] ) ) {
@@ -554,7 +555,7 @@ class Forminator_Admin_AJAX {
554
  return;
555
  }
556
 
557
- forminator_validate_ajax( "forminator_save_builder_fields" );
558
 
559
  $submitted_data = $this->get_post_data();
560
  $fields = array();
@@ -647,7 +648,7 @@ class Forminator_Admin_AJAX {
647
  */
648
  public function load_existing_cfields() {
649
 
650
- forminator_validate_ajax( "forminator_load_existing_cfields" );
651
 
652
  $keys = array();
653
  $html = '';
@@ -665,8 +666,8 @@ class Forminator_Admin_AJAX {
665
  * @since 1.0
666
  */
667
  public function dismiss_welcome() {
668
- forminator_validate_ajax( "forminator_dismiss_welcome" );
669
- update_option( "forminator_welcome_dismissed", true );
670
  wp_send_json_success();
671
  }
672
 
@@ -676,7 +677,7 @@ class Forminator_Admin_AJAX {
676
  * @since 1.0
677
  */
678
  public function load_fonts() {
679
- forminator_validate_ajax( "forminator_load_fonts" );
680
  _deprecated_function( 'load_fonts', '1.0.5', 'load_google_fonts' );
681
  wp_send_json_error( array() );
682
  }
@@ -688,13 +689,10 @@ class Forminator_Admin_AJAX {
688
  * @since 1.0.5
689
  */
690
  public function load_google_fonts() {
691
- forminator_validate_ajax( "forminator_load_google_fonts" );
692
 
693
- $is_object = false;
694
 
695
- if ( isset( $_POST['data']['isObject'] ) ) {
696
- $is_object = sanitize_text_field( $_POST['data']['isObject'] );
697
- }
698
  $fonts = forminator_get_font_families( $is_object );
699
  wp_send_json_success( $fonts );
700
  }
@@ -706,7 +704,7 @@ class Forminator_Admin_AJAX {
706
  */
707
  public function load_captcha() {
708
  // Validate nonce
709
- forminator_validate_ajax( "forminator_popup_captcha" );
710
 
711
  $html = forminator_template( 'settings/popup/edit-captcha-content' );
712
 
@@ -720,7 +718,7 @@ class Forminator_Admin_AJAX {
720
  */
721
  public function save_captcha() {
722
  // Validate nonce
723
- forminator_validate_ajax( "forminator_save_popup_captcha" );
724
 
725
  update_option( "forminator_captcha_key", sanitize_text_field( $_POST['v2_captcha_key'] ) );
726
  update_option( "forminator_captcha_secret", sanitize_text_field( $_POST['v2_captcha_secret'] ) );
@@ -742,7 +740,7 @@ class Forminator_Admin_AJAX {
742
  * @since 1.0
743
  */
744
  public function load_currency() {
745
- forminator_validate_ajax( "forminator_popup_currency" );
746
 
747
  $html = forminator_template( 'settings/popup/edit-currency-content' );
748
 
@@ -756,9 +754,10 @@ class Forminator_Admin_AJAX {
756
  */
757
  public function save_currency() {
758
  // Validate nonce
759
- forminator_validate_ajax( "forminator_save_popup_currency" );
760
 
761
  update_option( "forminator_currency", sanitize_text_field( $_POST['currency'] ) );
 
762
  wp_send_json_success();
763
  }
764
 
@@ -769,7 +768,7 @@ class Forminator_Admin_AJAX {
769
  */
770
  public function load_pagination_entries() {
771
  // Validate nonce
772
- forminator_validate_ajax( "forminator_popup_pagination_entries" );
773
 
774
  $html = forminator_template( 'settings/popup/edit-pagination-entries-content' );
775
 
@@ -783,21 +782,21 @@ class Forminator_Admin_AJAX {
783
  */
784
  public function load_recaptcha_preview() {
785
  $site_language = get_locale();
786
- $language = get_option( "forminator_captcha_language", "" );
787
  $language = ! empty( $language ) ? $language : $site_language;
788
 
789
- $captcha = sanitize_text_field( $_POST['captcha'] );
790
 
791
  if ( 'v2-invisible' === $captcha ) {
792
- $captcha_key = get_option( "forminator_v2_invisible_captcha_key", "" );
793
  $captcha_size = 'invisible';
794
  $onload = 'forminator_render_admin_captcha_v2_invisible';
795
  } elseif ( 'v3' === $captcha ) {
796
- $captcha_key = get_option( "forminator_v3_captcha_key", "" );
797
  $captcha_size = 'invisible';
798
  $onload = 'forminator_render_admin_captcha_v3';
799
  } else {
800
- $captcha_key = get_option( "forminator_captcha_key", "" );
801
  $captcha_size = 'normal';
802
  $onload = 'forminator_render_admin_captcha_v2';
803
  }
@@ -824,7 +823,7 @@ class Forminator_Admin_AJAX {
824
  */
825
  public function load_pagination_listings() {
826
  // Validate nonce
827
- forminator_validate_ajax( "forminator_popup_pagination_listings" );
828
 
829
  $html = forminator_template( 'settings/popup/edit-pagination-listings-content' );
830
 
@@ -838,18 +837,18 @@ class Forminator_Admin_AJAX {
838
  */
839
  public function save_pagination_listings() {
840
  // Validate nonce
841
- forminator_validate_ajax( "forminator_save_popup_pagination_listings" );
842
 
843
  $pagination = intval( sanitize_text_field( $_POST['pagination_listings'] ) );
844
 
845
  if ( 0 < $pagination ) {
846
 
847
- update_option( "forminator_pagination_listings", $pagination );
848
  wp_send_json_success();
849
 
850
  } else {
851
 
852
- wp_send_json_error( __( "Limit per page can not be less than one.", Forminator::DOMAIN ) );
853
 
854
  }
855
 
@@ -862,7 +861,7 @@ class Forminator_Admin_AJAX {
862
  */
863
  public function load_email_form() {
864
  // Validate nonce
865
- forminator_validate_ajax( "forminator_load_popup_email_settings" );
866
 
867
  $html = forminator_template( 'settings/popup/edit-email-content' );
868
 
@@ -876,7 +875,7 @@ class Forminator_Admin_AJAX {
876
  */
877
  public function load_uninstall_form() {
878
  // Validate nonce
879
- forminator_validate_ajax( "forminator_popup_uninstall_form" );
880
 
881
  $html = forminator_template( 'settings/popup/edit-uninstall-content' );
882
 
@@ -891,12 +890,12 @@ class Forminator_Admin_AJAX {
891
  */
892
  public function save_uninstall_form() {
893
  // Validate nonce
894
- forminator_validate_ajax( "forminator_save_popup_uninstall_settings" );
895
 
896
  $delete_uninstall = isset( $_POST['delete_uninstall'] ) ? sanitize_text_field( $_POST['delete_uninstall'] ) : false;
897
  $delete_uninstall = filter_var( $delete_uninstall, FILTER_VALIDATE_BOOLEAN );
898
 
899
- update_option( "forminator_uninstall_clear_data", $delete_uninstall );
900
  wp_send_json_success();
901
 
902
  }
@@ -908,7 +907,7 @@ class Forminator_Admin_AJAX {
908
  */
909
  public function preview_custom_forms() {
910
  // Validate nonce
911
- //forminator_validate_ajax( "forminator_popup_preview_cforms" );
912
 
913
  $preview_data = false;
914
  $form_id = false;
@@ -920,10 +919,11 @@ class Forminator_Admin_AJAX {
920
  // Check if preview data set
921
  if ( isset( $_POST['data'] ) && ! empty( $_POST['data'] ) ) {
922
  $data = $_POST['data']; // WPCS: CSRF ok by forminator_validate_ajax.
 
923
  if ( ! is_array( $data ) ) {
924
  $data = json_decode( stripslashes( $data ), true );
925
  }
926
- $preview_data = forminator_data_to_model_form( $data );// WPCS: CSRF ok by forminator_validate_ajax.
927
  }
928
 
929
  $html = forminator_form_preview( $form_id, true, $preview_data );
@@ -938,11 +938,11 @@ class Forminator_Admin_AJAX {
938
  */
939
  public function preview_polls() {
940
  // Validate nonce
941
- //forminator_validate_ajax( "forminator_popup_preview_polls" );
942
 
943
  $preview_data = false;
944
  // force -1 for preview
945
- $form_id = - 1;
946
 
947
  if ( isset( $_POST['id'] ) ) {
948
  $form_id = intval( $_POST['id'] );
@@ -952,10 +952,11 @@ class Forminator_Admin_AJAX {
952
  // Check if preview data set
953
  if ( isset( $_POST['data'] ) && ! empty( $_POST['data'] ) ) {
954
  $data = $_POST['data'];
 
955
  if ( ! is_array( $data ) ) {
956
  $data = json_decode( stripslashes( $data ), true );
957
  }
958
- $preview_data = forminator_data_to_model_poll( $data );// WPCS: CSRF ok by forminator_validate_ajax.
959
  }
960
 
961
  $html = forminator_poll_preview( $form_id, true, $preview_data );
@@ -970,9 +971,8 @@ class Forminator_Admin_AJAX {
970
  */
971
  public function preview_quizzes() {
972
  // Validate nonce
973
- forminator_validate_ajax( "forminator_popup_preview_quizzes" );
974
 
975
- $preview_data = false;
976
  // force -1 for preview
977
  $form_id = - 1;
978
 
@@ -997,9 +997,10 @@ class Forminator_Admin_AJAX {
997
  */
998
  public function load_exports() {
999
  // Validate nonce
1000
- forminator_validate_ajax( "forminator_load_exports" );
1001
 
1002
  $form_id = isset( $_POST['id'] ) && $_POST['id'] >= 0 ? intval( $_POST['id'] ) : false;
 
1003
  if ( $form_id ) {
1004
  $args = array(
1005
  'form_id' => $form_id,
@@ -1007,7 +1008,7 @@ class Forminator_Admin_AJAX {
1007
  $html = forminator_template( 'settings/popup/exports-content', $args );
1008
  wp_send_json_success( $html );
1009
  } else {
1010
- wp_send_json_error( __( "Not valid module ID provided.", Forminator::DOMAIN ) );
1011
  }
1012
  }
1013
 
@@ -1023,13 +1024,13 @@ class Forminator_Admin_AJAX {
1023
  $form_id = isset( $_POST['id'] ) && $_POST['id'] >= 0 ? intval( $_POST['id'] ) : false;
1024
 
1025
  if ( ! $form_id ) {
1026
- wp_send_json_error( __( "No ID was provided.", Forminator::DOMAIN ) );
1027
  }
1028
 
1029
  $was_cleared = delete_export_logs( $form_id );
1030
 
1031
  if ( $was_cleared ) {
1032
- wp_send_json_success( __( "Exports cleared.", Forminator::DOMAIN ) );
1033
  } else {
1034
  wp_send_json_error( __( "Exports couldn't be cleared.", Forminator::DOMAIN ) );
1035
  }
@@ -1042,7 +1043,7 @@ class Forminator_Admin_AJAX {
1042
  * @since 1.1 change $_POST to `get_post_data`
1043
  */
1044
  public function search_emails() {
1045
- forminator_validate_ajax( "forminator_search_emails" );
1046
  if ( ! current_user_can( 'manage_options' ) ) {
1047
  wp_send_json_error( array() );
1048
  }
@@ -1130,7 +1131,7 @@ class Forminator_Admin_AJAX {
1130
  }
1131
 
1132
  // TODO : mark this as phpcs comply after checking usages of this function
1133
- $post_data = $_POST; // WPCS: CSRF OK
1134
 
1135
  // do some sanitize
1136
  foreach ( $sanitize_callbacks as $field => $sanitize_func ) {
@@ -1153,7 +1154,7 @@ class Forminator_Admin_AJAX {
1153
  */
1154
  public function load_privacy_settings() {
1155
  // Validate nonce
1156
- forminator_validate_ajax( "forminator_popup_privacy_settings" );
1157
 
1158
  $html = forminator_template( 'settings/popup/edit-privacy-settings' );
1159
 
@@ -1167,8 +1168,8 @@ class Forminator_Admin_AJAX {
1167
  */
1168
  public function save_privacy_settings() {
1169
  // Validate nonce
1170
- forminator_validate_ajax( "forminator_save_privacy_settings" );
1171
- $post_data = $_POST; // WPCS: CSRF OK by forminator_validate_ajax
1172
 
1173
  /**
1174
  * CUSTOM FORMS
@@ -1183,6 +1184,7 @@ class Forminator_Admin_AJAX {
1183
 
1184
  // Submissions Retention
1185
  $cform_retain_forever = filter_var( $post_data['retain_submission_forever'], FILTER_VALIDATE_BOOLEAN );
 
1186
  if ( $cform_retain_forever ) {
1187
  $post_data['submissions_retention_number'] = 0;
1188
  }
@@ -1200,6 +1202,7 @@ class Forminator_Admin_AJAX {
1200
 
1201
  // IP Retention
1202
  $cform_retain_ip_forever = filter_var( $post_data['retain_ip_forever'], FILTER_VALIDATE_BOOLEAN );
 
1203
  if ( $cform_retain_ip_forever ) {
1204
  $post_data['cform_retention_ip_number'] = 0;
1205
  }
@@ -1215,12 +1218,12 @@ class Forminator_Admin_AJAX {
1215
  update_option( 'forminator_retain_ip_interval_unit', $post_data['cform_retention_ip_unit'] );
1216
  // IP Retention
1217
 
1218
-
1219
  /**
1220
  * POLLS
1221
  */
1222
  // Submissions Retention
1223
  $poll_retain_submissions_forever = filter_var( $post_data['poll_retain_submission_forever'], FILTER_VALIDATE_BOOLEAN );
 
1224
  if ( $poll_retain_submissions_forever ) {
1225
  $post_data['poll_submissions_retention_number'] = 0;
1226
  }
@@ -1239,6 +1242,7 @@ class Forminator_Admin_AJAX {
1239
 
1240
  // IP Retention
1241
  $poll_retain_ip_forever = filter_var( $post_data['retain_poll_forever'], FILTER_VALIDATE_BOOLEAN );
 
1242
  if ( $poll_retain_ip_forever ) {
1243
  $post_data['votes_retention_number'] = 0;
1244
  }
@@ -1259,6 +1263,7 @@ class Forminator_Admin_AJAX {
1259
  */
1260
  // Submissions Retention
1261
  $quiz_retain_submissions_forever = filter_var( $post_data['quiz_retain_submission_forever'], FILTER_VALIDATE_BOOLEAN );
 
1262
  if ( $quiz_retain_submissions_forever ) {
1263
  $post_data['quiz_submissions_retention_number'] = 0;
1264
  }
@@ -1287,7 +1292,7 @@ class Forminator_Admin_AJAX {
1287
  wp_send_json_success( '' );
1288
  }
1289
  // Validate nonce
1290
- forminator_validate_ajax( "forminator_popup_export_cform" );
1291
 
1292
  $html = forminator_template( 'custom-form/popup/export' );
1293
 
@@ -1304,7 +1309,7 @@ class Forminator_Admin_AJAX {
1304
  wp_send_json_success( '' );
1305
  }
1306
  // Validate nonce
1307
- forminator_validate_ajax( "forminator_popup_import_cform" );
1308
 
1309
  $html = forminator_template( 'custom-form/popup/import' );
1310
 
@@ -1321,7 +1326,7 @@ class Forminator_Admin_AJAX {
1321
  wp_send_json_error( __( 'Import Export Feature disabled.', Forminator::DOMAIN ) );
1322
  }
1323
  // Validate nonce
1324
- forminator_validate_ajax( "forminator_save_import_custom_form" );
1325
 
1326
  $post_data = $this->get_post_data();
1327
  $importable = isset( $post_data['importable'] ) ? $post_data['importable'] : '';// wpcs: CSRF ok
@@ -1622,7 +1627,7 @@ class Forminator_Admin_AJAX {
1622
  wp_send_json_success( '' );
1623
  }
1624
  // Validate nonce
1625
- forminator_validate_ajax( "forminator_popup_export_poll" );
1626
 
1627
  $html = forminator_template( 'poll/popup/export' );
1628
 
@@ -1639,7 +1644,7 @@ class Forminator_Admin_AJAX {
1639
  wp_send_json_success( '' );
1640
  }
1641
  // Validate nonce
1642
- forminator_validate_ajax( "forminator_popup_import_poll" );
1643
 
1644
  $html = forminator_template( 'poll/popup/import' );
1645
 
@@ -1656,7 +1661,7 @@ class Forminator_Admin_AJAX {
1656
  wp_send_json_error( __( 'Import Export Feature disabled.', Forminator::DOMAIN ) );
1657
  }
1658
  // Validate nonce
1659
- forminator_validate_ajax( "forminator_save_import_poll" );
1660
 
1661
  $post_data = $this->get_post_data();
1662
  $importable = isset( $post_data['importable'] ) ? $post_data['importable'] : '';// wpcs: CSRF ok
@@ -1712,7 +1717,7 @@ class Forminator_Admin_AJAX {
1712
  wp_send_json_success( '' );
1713
  }
1714
  // Validate nonce
1715
- forminator_validate_ajax( "forminator_popup_export_quiz" );
1716
 
1717
  $html = forminator_template( 'quiz/popup/export' );
1718
 
@@ -1729,7 +1734,7 @@ class Forminator_Admin_AJAX {
1729
  wp_send_json_success( '' );
1730
  }
1731
  // Validate nonce
1732
- forminator_validate_ajax( "forminator_popup_import_quiz" );
1733
 
1734
  $html = forminator_template( 'quiz/popup/import' );
1735
 
@@ -1746,7 +1751,7 @@ class Forminator_Admin_AJAX {
1746
  wp_send_json_error( __( 'Import Export Feature disabled.', Forminator::DOMAIN ) );
1747
  }
1748
  // Validate nonce
1749
- forminator_validate_ajax( "forminator_save_import_quiz" );
1750
 
1751
  $post_data = $this->get_post_data();
1752
  $importable = isset( $post_data['importable'] ) ? $post_data['importable'] : '';// wpcs: CSRF ok
@@ -1800,17 +1805,17 @@ class Forminator_Admin_AJAX {
1800
  */
1801
  public function save_pagination() {
1802
  // Validate nonce
1803
- forminator_validate_ajax( "forminator_save_popup_pagination" );
1804
 
1805
  $pagination = intval( sanitize_text_field( $_POST['pagination_entries'] ) );
1806
  $pagination_listing = intval( sanitize_text_field( $_POST['pagination_listings'] ) );
1807
 
1808
  if ( 1 > $pagination || 1 > $pagination_listing ) {
1809
- wp_send_json_error( __( "Limit per page can not be less than one.", Forminator::DOMAIN ) );
1810
  }
1811
 
1812
- update_option( "forminator_pagination_entries", $pagination );
1813
- update_option( "forminator_pagination_listings", $pagination_listing );
1814
  wp_send_json_success();
1815
 
1816
  }
@@ -1822,12 +1827,12 @@ class Forminator_Admin_AJAX {
1822
  */
1823
  public function save_accessibility_settings() {
1824
  // Validate nonce
1825
- forminator_validate_ajax( "forminator_save_accessibility_settings" );
1826
 
1827
  $enable_accessibility = isset( $_POST['enable_accessibility'] ) ? $_POST['enable_accessibility'] : false;
1828
  $enable_accessibility = filter_var( $enable_accessibility, FILTER_VALIDATE_BOOLEAN );
1829
 
1830
- update_option( "forminator_enable_accessibility", $enable_accessibility );
1831
  wp_send_json_success();
1832
  }
1833
 
@@ -1838,14 +1843,14 @@ class Forminator_Admin_AJAX {
1838
  */
1839
  public function save_dashboard_settings() {
1840
  // Validate nonce
1841
- forminator_validate_ajax( "forminator_save_dashboard_settings" );
1842
 
1843
  $dashboard_settings = forminator_get_dashboard_settings();
1844
  $widgets = array( 'forms', 'polls', 'quizzes' );
1845
 
1846
- $num_recents = isset( $_POST['num_recent'] ) ? $_POST['num_recent'] : array();
1847
- $publisheds = isset( $_POST['published'] ) ? $_POST['published'] : array();
1848
- $drafts = isset( $_POST['draft'] ) ? $_POST['draft'] : array();
1849
 
1850
  // value based settings
1851
  foreach ( $num_recents as $widget => $value ) {
@@ -1881,12 +1886,13 @@ class Forminator_Admin_AJAX {
1881
  $pagination = intval( sanitize_text_field( $_POST['pagination_entries'] ) );
1882
  $pagination_listing = intval( sanitize_text_field( $_POST['pagination_listings'] ) );
1883
 
 
1884
  if ( 1 > $pagination || 1 > $pagination_listing ) {
1885
- wp_send_json_error( __( "Limit per page can not be less than one.", Forminator::DOMAIN ) );
1886
  }
1887
 
1888
- update_option( "forminator_pagination_entries", $pagination );
1889
- update_option( "forminator_pagination_listings", $pagination_listing );
1890
 
1891
  wp_send_json_success();
1892
  }
@@ -1902,7 +1908,7 @@ class Forminator_Admin_AJAX {
1902
  forminator_validate_ajax( 'forminator_validate_calculation_formula' );
1903
 
1904
  try {
1905
- $formula = isset( $_POST['formula'] ) ? $_POST['formula'] : '';// WPCS: CSRF ok by forminator_validate_ajax.
1906
 
1907
  $formula = forminator_calculator_maybe_dummify_fields_on_formula( $formula );
1908
  $calculator = new Forminator_Calculator( $formula );
@@ -1930,11 +1936,11 @@ class Forminator_Admin_AJAX {
1930
  Forminator_Gateway_Stripe::store_settings( array() );
1931
  }
1932
  $data['notification'] = array(
1933
- 'type' => 'success',
1934
- 'text' => __( 'Stripe account disconnected successfully.', Forminator::DOMAIN ),
1935
- 'duration' => '4000',
1936
  );
1937
- $file = forminator_plugin_dir() . "admin/views/settings/payments/section-stripe.php";
1938
 
1939
  ob_start();
1940
  /** @noinspection PhpIncludeInspection */
@@ -1957,11 +1963,11 @@ class Forminator_Admin_AJAX {
1957
  Forminator_PayPal_Express::store_settings( array() );
1958
  }
1959
  $data['notification'] = array(
1960
- 'type' => 'success',
1961
- 'text' => __( 'PayPal account disconnected successfully.', Forminator::DOMAIN ),
1962
- 'duration' => '4000',
1963
  );
1964
- $file = forminator_plugin_dir() . "admin/views/settings/payments/section-paypal.php";
1965
 
1966
  ob_start();
1967
  /** @noinspection PhpIncludeInspection */
@@ -1980,7 +1986,7 @@ class Forminator_Admin_AJAX {
1980
  // Validate nonce
1981
  forminator_validate_ajax( 'forminator_stripe_settings_modal' );
1982
 
1983
- $file = forminator_plugin_dir() . "admin/views/settings/payments/section-stripe.php";
1984
 
1985
  ob_start();
1986
  /** @noinspection PhpIncludeInspection */
@@ -1999,7 +2005,7 @@ class Forminator_Admin_AJAX {
1999
  // Validate nonce
2000
  forminator_validate_ajax( 'forminator_paypal_settings_modal' );
2001
 
2002
- $file = forminator_plugin_dir() . "admin/views/settings/payments/section-paypal.php";
2003
 
2004
  ob_start();
2005
  /** @noinspection PhpIncludeInspection */
@@ -2024,7 +2030,7 @@ class Forminator_Admin_AJAX {
2024
 
2025
  $data = array();
2026
 
2027
- $post_data = $_POST;// WPCS: CSRF ok by forminator_validate_ajax.
2028
  $is_connect_request = isset( $post_data['connect'] ) ? filter_var( $post_data['connect'] ) : false;
2029
  $template_vars = array();
2030
  try {
@@ -2041,7 +2047,6 @@ class Forminator_Admin_AJAX {
2041
  $template_vars['live_key'] = $live_key;
2042
  $template_vars['live_secret'] = $live_secret;
2043
 
2044
-
2045
  if ( ! empty( $is_connect_request ) ) {
2046
  if ( empty( $test_key ) ) {
2047
  throw new Forminator_Gateway_Exception(
@@ -2083,7 +2088,6 @@ class Forminator_Admin_AJAX {
2083
  )
2084
  );
2085
 
2086
-
2087
  $data['notification'] = array(
2088
  'type' => 'success',
2089
  'text' => __( 'Stripe account connected successfully. You can now add the Stripe field to your forms and start collecting payments.', Forminator::DOMAIN ),
@@ -2091,8 +2095,6 @@ class Forminator_Admin_AJAX {
2091
  );
2092
 
2093
  }
2094
-
2095
-
2096
  } catch ( Forminator_Gateway_Exception $e ) {
2097
  forminator_maybe_log( __METHOD__, $e->getMessage(), $e->getTrace() );
2098
  $template_vars['error_message'] = $e->getMessage();
@@ -2137,7 +2139,7 @@ class Forminator_Admin_AJAX {
2137
  '<span class="sui-loading-text">' . esc_html__( 'Connect', Forminator::DOMAIN ) . '</span>' .
2138
  '<i class="sui-icon-loader sui-loading" aria-hidden="true"></i>' .
2139
  '</button>' .
2140
- '</div>';
2141
 
2142
  wp_send_json_success( $data );
2143
  }
@@ -2149,29 +2151,27 @@ class Forminator_Admin_AJAX {
2149
  */
2150
  public function paypal_settings_modal() {
2151
  // Validate nonce
2152
-
2153
  forminator_validate_ajax( 'forminator_paypal_settings_modal' );
2154
 
2155
  $data = array();
2156
 
2157
- $post_data = $_POST;// WPCS: CSRF ok by forminator_validate_ajax.
2158
  $is_connect_request = isset( $post_data['connect'] ) ? filter_var( $post_data['connect'] ) : false;
2159
  $template_vars = array();
2160
 
2161
  try {
2162
  $paypal = new Forminator_PayPal_Express();
2163
 
2164
- $sandbox_id = isset( $post_data['sandbox_id'] ) ? $post_data['sandbox_id'] : $paypal->get_sandbox_id();// WPCS: CSRF ok by forminator_validate_ajax.
2165
- $sandbox_secret = isset( $post_data['sandbox_secret'] ) ? $post_data['sandbox_secret'] : $paypal->get_sandbox_secret();// WPCS: CSRF ok by forminator_validate_ajax.
2166
- $live_id = isset( $post_data['live_id'] ) ? $post_data['live_id'] : $paypal->get_live_id();// WPCS: CSRF ok by forminator_validate_ajax.
2167
  $live_secret = isset( $post_data['live_secret'] ) ? $post_data['live_secret'] : $paypal->get_live_secret();// WPCS: CSRF ok by forminator_validate_ajax.
2168
  $default_currency = $paypal->get_default_currency();
2169
 
2170
- $template_vars['sandbox_id'] = $sandbox_id;
2171
  $template_vars['sandbox_secret'] = $sandbox_secret;
2172
- $template_vars['live_id'] = $live_id;
2173
- $template_vars['live_secret'] = $live_secret;
2174
-
2175
 
2176
  if ( ! empty( $is_connect_request ) ) {
2177
  if ( empty( $sandbox_id ) ) {
@@ -2206,15 +2206,14 @@ class Forminator_Admin_AJAX {
2206
 
2207
  Forminator_PayPal_Express::store_settings(
2208
  array(
2209
- 'sandbox_id' => $sandbox_id,
2210
- 'sandbox_secret' => $sandbox_secret,
2211
- 'live_id' => $live_id,
2212
- 'live_secret' => $live_secret,
2213
- 'currency' => $default_currency,
2214
  )
2215
  );
2216
 
2217
-
2218
  $data['notification'] = array(
2219
  'type' => 'success',
2220
  'text' => __( 'PayPal account connected successfully. You can now add the PayPal field to your forms and start collecting payments.', Forminator::DOMAIN ),
@@ -2222,8 +2221,6 @@ class Forminator_Admin_AJAX {
2222
  );
2223
 
2224
  }
2225
-
2226
-
2227
  } catch ( Forminator_Gateway_Exception $e ) {
2228
  forminator_maybe_log( __METHOD__, $e->getMessage(), $e->getTrace() );
2229
  $template_vars['error_message'] = $e->getMessage();
@@ -2264,11 +2261,11 @@ class Forminator_Admin_AJAX {
2264
  $data['buttons'] = array();
2265
 
2266
  $data['buttons']['connect']['markup'] = '<div class="sui-actions-right">' .
2267
- '<button class="sui-button forminator-paypal-connect" type="button" data-nonce="' . wp_create_nonce( 'forminator_paypal_settings_modal' ) . '">' .
2268
- '<span class="sui-loading-text">' . esc_html__( 'Connect', Forminator::DOMAIN ) . '</span>' .
2269
- '<i class="sui-icon-loader sui-loading" aria-hidden="true"></i>' .
2270
- '</button>' .
2271
- '</div>';
2272
 
2273
  wp_send_json_success( $data );
2274
  }
@@ -2279,7 +2276,7 @@ class Forminator_Admin_AJAX {
2279
  * @since 1.9
2280
  */
2281
  public function dismiss_notice() {
2282
- forminator_validate_ajax( "forminator_dismiss_notification" );
2283
 
2284
  $notification_name = filter_input( INPUT_POST, 'prop', FILTER_SANITIZE_STRING );
2285
 
@@ -2310,7 +2307,7 @@ class Forminator_Admin_AJAX {
2310
  * @since 1.7
2311
  */
2312
  public function save_payments() {
2313
- forminator_validate_ajax( "forminator_save_payments_settings" );
2314
 
2315
  // stripe
2316
  if ( isset( $_POST['stripe-default-currency'] ) && ! empty( $_POST['stripe-default-currency'] ) ) {
@@ -2334,7 +2331,6 @@ class Forminator_Admin_AJAX {
2334
  )
2335
  );
2336
 
2337
-
2338
  } catch ( Forminator_Gateway_Exception $e ) {
2339
  wp_send_json_error( $e->getMessage() );
2340
  }
@@ -2347,10 +2343,10 @@ class Forminator_Admin_AJAX {
2347
  try {
2348
  $paypal = new Forminator_PayPal_Express();
2349
 
2350
- $sandbox_id = $paypal->get_sandbox_id();
2351
  $sandbox_secret = $paypal->get_sandbox_secret();
2352
- $live_id = $paypal->get_live_id();
2353
- $live_secret = $paypal->get_live_secret();
2354
 
2355
  Forminator_PayPal_Express::store_settings(
2356
  array(
@@ -2362,7 +2358,6 @@ class Forminator_Admin_AJAX {
2362
  )
2363
  );
2364
 
2365
-
2366
  } catch ( Forminator_Gateway_Exception $e ) {
2367
  wp_send_json_error( $e->getMessage() );
2368
  }
@@ -2379,11 +2374,13 @@ class Forminator_Admin_AJAX {
2379
  */
2380
  public function delete_poll_submissions() {
2381
  forminator_validate_ajax( 'forminatorPollEntries' );
 
2382
  if ( ! empty( $_POST['id'] ) ) {
2383
  $form_id = intval( $_POST['id'] );
 
2384
  Forminator_Form_Entry_Model::delete_by_form( $form_id );
2385
 
2386
- $file = forminator_plugin_dir() . "admin/views/poll/entries/content-none.php";
2387
 
2388
  ob_start();
2389
  /** @noinspection PhpIncludeInspection */
17
  */
18
  public function __construct() {
19
  // Handle close welcome box
20
+ add_action( 'wp_ajax_forminator_dismiss_welcome', array( $this, 'dismiss_welcome' ) );
21
+ add_action( 'wp_ajax_nopriv_forminator_dismiss_welcome', array( $this, 'dismiss_welcome' ) );
22
 
23
  // Handle load google fonts
24
+ add_action( 'wp_ajax_forminator_load_google_fonts', array( $this, 'load_google_fonts' ) );
25
 
26
  // Handle load reCaptcha preview
27
+ add_action( 'wp_ajax_forminator_load_recaptcha_preview', array( $this, 'load_recaptcha_preview' ) );
28
 
29
  // Handle save settings
30
+ add_action( 'wp_ajax_forminator_save_builder', array( $this, 'save_builder' ) );
31
+ add_action( 'wp_ajax_forminator_save_poll', array( $this, 'save_poll_form' ) );
32
+ add_action( 'wp_ajax_forminator_save_quiz_nowrong', array( $this, 'save_quiz' ) );
33
+ add_action( 'wp_ajax_forminator_save_quiz_knowledge', array( $this, 'save_quiz' ) );
34
+ add_action( 'wp_ajax_forminator_save_login', array( $this, 'save_login' ) );
35
+ add_action( 'wp_ajax_forminator_save_register', array( $this, 'save_register' ) );
36
 
37
  // Handle settings popups
38
+ add_action( 'wp_ajax_forminator_load_captcha_popup', array( $this, 'load_captcha' ) );
39
+ add_action( 'wp_ajax_forminator_save_captcha_popup', array( $this, 'save_captcha' ) );
40
 
41
+ add_action( 'wp_ajax_forminator_load_currency_popup', array( $this, 'load_currency' ) );
42
+ add_action( 'wp_ajax_forminator_save_currency_popup', array( $this, 'save_currency' ) );
43
 
44
+ add_action( 'wp_ajax_forminator_load_pagination_entries_popup', array( $this, 'load_pagination_entries' ) );
45
+ add_action( 'wp_ajax_forminator_save_pagination_entries_popup', array( $this, 'save_pagination_entries' ) );
46
 
47
+ add_action( 'wp_ajax_forminator_load_pagination_listings_popup', array( $this, 'load_pagination_listings' ) );
48
+ add_action( 'wp_ajax_forminator_save_pagination_listings_popup', array( $this, 'save_pagination_listings' ) );
49
 
50
+ add_action( 'wp_ajax_forminator_load_email_settings_popup', array( $this, 'load_email_form' ) );
51
 
52
+ add_action( 'wp_ajax_forminator_load_uninstall_settings_popup', array( $this, 'load_uninstall_form' ) );
53
+ add_action( 'wp_ajax_forminator_save_uninstall_settings_popup', array( $this, 'save_uninstall_form' ) );
54
 
55
+ add_action( 'wp_ajax_forminator_load_preview_cforms_popup', array( $this, 'preview_custom_forms' ) );
56
+ add_action( 'wp_ajax_forminator_load_preview_polls_popup', array( $this, 'preview_polls' ) );
57
+ add_action( 'wp_ajax_forminator_load_preview_quizzes_popup', array( $this, 'preview_quizzes' ) );
58
 
59
  // Handle exports popup
60
+ add_action( 'wp_ajax_forminator_load_exports_popup', array( $this, 'load_exports' ) );
61
+ add_action( 'wp_ajax_forminator_clear_exports_popup', array( $this, 'clear_exports' ) );
62
 
63
  // Handle search user email
64
+ add_action( 'wp_ajax_forminator_builder_search_emails', array( $this, 'search_emails' ) );
65
 
66
+ add_action( 'wp_ajax_forminator_load_privacy_settings_popup', array( $this, 'load_privacy_settings' ) );
67
+ add_action( 'wp_ajax_forminator_save_privacy_settings_popup', array( $this, 'save_privacy_settings' ) );
68
 
69
+ add_action( 'wp_ajax_forminator_load_export_custom_form_popup', array( $this, 'load_export_custom_form' ) );
70
+ add_action( 'wp_ajax_forminator_load_import_custom_form_popup', array( $this, 'load_import_custom_form' ) );
71
+ add_action( 'wp_ajax_forminator_save_import_custom_form_popup', array( $this, 'save_import_custom_form' ) );
72
 
73
  add_action( "wp_ajax_forminator_load_import_custom_form_cf7_popup", array( $this, "load_import_custom_form_cf7" ) );
74
  add_action( "wp_ajax_forminator_save_import_custom_form_cf7_popup", array( $this, "save_import_custom_form_cf7" ) );
83
  add_action( "wp_ajax_forminator_load_import_poll_popup", array( $this, "load_import_poll" ) );
84
  add_action( "wp_ajax_forminator_save_import_poll_popup", array( $this, "save_import_poll" ) );
85
 
86
+ add_action( 'wp_ajax_forminator_delete_poll_submissions', array( $this, 'delete_poll_submissions' ) );
87
 
88
+ add_action( 'wp_ajax_forminator_load_export_quiz_popup', array( $this, 'load_export_quiz' ) );
89
+ add_action( 'wp_ajax_forminator_load_import_quiz_popup', array( $this, 'load_import_quiz' ) );
90
+ add_action( 'wp_ajax_forminator_save_import_quiz_popup', array( $this, 'save_import_quiz' ) );
91
 
92
+ add_action( 'wp_ajax_forminator_save_accessibility_settings_popup', array( $this, 'save_accessibility_settings' ) );
93
 
94
+ add_action( 'wp_ajax_forminator_validate_calculation_formula', array( $this, 'validate_calculation_formula' ) );
95
+ add_action( 'wp_ajax_forminator_save_dashboard_settings_popup', array( $this, 'save_dashboard_settings' ) );
96
 
97
+ add_action( 'wp_ajax_forminator_stripe_settings_modal', array( $this, 'stripe_settings_modal' ) );
98
+ add_action( 'wp_ajax_forminator_stripe_update_page', array( $this, 'stripe_update_page' ) );
99
+ add_action( 'wp_ajax_forminator_disconnect_stripe', array( $this, 'stripe_disconnect' ) );
100
 
101
+ add_action( 'wp_ajax_forminator_paypal_settings_modal', array( $this, 'paypal_settings_modal' ) );
102
+ add_action( 'wp_ajax_forminator_paypal_update_page', array( $this, 'paypal_update_page' ) );
103
+ add_action( 'wp_ajax_forminator_disconnect_paypal', array( $this, 'paypal_disconnect' ) );
104
 
105
+ add_action( 'wp_ajax_forminator_save_payments_settings_popup', array( $this, 'save_payments' ) );
106
+ add_action( 'wp_ajax_forminator_dismiss_notification', array( $this, 'dismiss_notice' ) );
107
 
108
+ add_action( 'wp_ajax_forminator_later_notification', array( $this, 'later_notice' ) );
109
  }
110
 
111
  /**
119
  return;
120
  }
121
 
122
+ forminator_validate_ajax( 'forminator_save_quiz' );
123
 
124
  $submitted_data = $this->get_post_data();
125
 
126
+ $quiz_data = array();
127
  if ( isset( $submitted_data['data'] ) ) {
128
  $quiz_data = $submitted_data['data'];
129
  $quiz_data = json_decode( stripslashes( $quiz_data ), true );
130
  }
131
 
132
+ $questions = array();
133
+ $results = array();
134
+ $settings = array();
135
  $msg_count = false;
136
  $id = isset( $submitted_data['form_id'] ) ? $submitted_data['form_id'] : null;
137
  $id = intval( $id );
205
  // Handle quiz questions
206
  $form_model->questions = $questions;
207
 
208
+ if ( isset( $quiz_data['settings']['msg_count'] ) ) {
209
  $msg_count = $quiz_data['settings']['msg_count']; //Backup, we allow html here
210
  }
211
 
229
  }
230
 
231
  // Update with backuped version
232
+ if ( $msg_count ) {
233
  $settings['msg_count'] = $msg_count;
234
  }
235
 
277
  return;
278
  }
279
 
280
+ forminator_validate_ajax( 'forminator_save_poll' );
281
 
282
  $submitted_data = $this->get_post_data();
283
  $poll_data = array();
399
  return;
400
  }
401
 
402
+ forminator_validate_ajax( 'forminator_save_builder_fields' );
403
 
404
  $submitted_data = $this->get_post_data();
405
  $form_data = $submitted_data['data'];
406
  $form_data = json_decode( stripslashes( $form_data ), true );
407
+ $fields = array();
408
  $notifications = array();
409
  $id = isset( $submitted_data['form_id'] ) ? $submitted_data['form_id'] : null;
410
  $id = intval( $id );
457
 
458
  // Sanitize settings
459
  $settings = forminator_sanitize_field( $form_data['settings'] );
460
+ $settings = apply_filters( 'forminator_builder_data_settings_before_saving', $settings, $form_data['settings'] );
461
 
462
  // Sanitize custom css
463
  if ( isset( $form_data['settings']['custom_css'] ) ) {
555
  return;
556
  }
557
 
558
+ forminator_validate_ajax( 'forminator_save_builder_fields' );
559
 
560
  $submitted_data = $this->get_post_data();
561
  $fields = array();
648
  */
649
  public function load_existing_cfields() {
650
 
651
+ forminator_validate_ajax( 'forminator_load_existing_cfields' );
652
 
653
  $keys = array();
654
  $html = '';
666
  * @since 1.0
667
  */
668
  public function dismiss_welcome() {
669
+ forminator_validate_ajax( 'forminator_dismiss_welcome' );
670
+ update_option( 'forminator_welcome_dismissed', true );
671
  wp_send_json_success();
672
  }
673
 
677
  * @since 1.0
678
  */
679
  public function load_fonts() {
680
+ forminator_validate_ajax( 'forminator_load_fonts' );
681
  _deprecated_function( 'load_fonts', '1.0.5', 'load_google_fonts' );
682
  wp_send_json_error( array() );
683
  }
689
  * @since 1.0.5
690
  */
691
  public function load_google_fonts() {
692
+ forminator_validate_ajax( 'forminator_load_google_fonts' );
693
 
694
+ $is_object = isset( $_POST['data']['isObject'] ) ? sanitize_text_field( $_POST['data']['isObject'] ) : false;// phpcs:ignore -- by forminator_validate_ajax
695
 
 
 
 
696
  $fonts = forminator_get_font_families( $is_object );
697
  wp_send_json_success( $fonts );
698
  }
704
  */
705
  public function load_captcha() {
706
  // Validate nonce
707
+ forminator_validate_ajax( 'forminator_popup_captcha' );
708
 
709
  $html = forminator_template( 'settings/popup/edit-captcha-content' );
710
 
718
  */
719
  public function save_captcha() {
720
  // Validate nonce
721
+ forminator_validate_ajax( 'forminator_save_popup_captcha' );
722
 
723
  update_option( "forminator_captcha_key", sanitize_text_field( $_POST['v2_captcha_key'] ) );
724
  update_option( "forminator_captcha_secret", sanitize_text_field( $_POST['v2_captcha_secret'] ) );
740
  * @since 1.0
741
  */
742
  public function load_currency() {
743
+ forminator_validate_ajax( 'forminator_popup_currency' );
744
 
745
  $html = forminator_template( 'settings/popup/edit-currency-content' );
746
 
754
  */
755
  public function save_currency() {
756
  // Validate nonce
757
+ forminator_validate_ajax( 'forminator_save_popup_currency' );
758
 
759
  update_option( "forminator_currency", sanitize_text_field( $_POST['currency'] ) );
760
+
761
  wp_send_json_success();
762
  }
763
 
768
  */
769
  public function load_pagination_entries() {
770
  // Validate nonce
771
+ forminator_validate_ajax( 'forminator_popup_pagination_entries' );
772
 
773
  $html = forminator_template( 'settings/popup/edit-pagination-entries-content' );
774
 
782
  */
783
  public function load_recaptcha_preview() {
784
  $site_language = get_locale();
785
+ $language = get_option( 'forminator_captcha_language', '' );
786
  $language = ! empty( $language ) ? $language : $site_language;
787
 
788
+ $captcha = sanitize_text_field( $_POST['captcha'] );// phpcs:ignore -- data without nonce verification
789
 
790
  if ( 'v2-invisible' === $captcha ) {
791
+ $captcha_key = get_option( 'forminator_v2_invisible_captcha_key', '' );
792
  $captcha_size = 'invisible';
793
  $onload = 'forminator_render_admin_captcha_v2_invisible';
794
  } elseif ( 'v3' === $captcha ) {
795
+ $captcha_key = get_option( 'forminator_v3_captcha_key', '' );
796
  $captcha_size = 'invisible';
797
  $onload = 'forminator_render_admin_captcha_v3';
798
  } else {
799
+ $captcha_key = get_option( 'forminator_captcha_key', '' );
800
  $captcha_size = 'normal';
801
  $onload = 'forminator_render_admin_captcha_v2';
802
  }
823
  */
824
  public function load_pagination_listings() {
825
  // Validate nonce
826
+ forminator_validate_ajax( 'forminator_popup_pagination_listings' );
827
 
828
  $html = forminator_template( 'settings/popup/edit-pagination-listings-content' );
829
 
837
  */
838
  public function save_pagination_listings() {
839
  // Validate nonce
840
+ forminator_validate_ajax( 'forminator_save_popup_pagination_listings' );
841
 
842
  $pagination = intval( sanitize_text_field( $_POST['pagination_listings'] ) );
843
 
844
  if ( 0 < $pagination ) {
845
 
846
+ update_option( 'forminator_pagination_listings', $pagination );
847
  wp_send_json_success();
848
 
849
  } else {
850
 
851
+ wp_send_json_error( __( 'Limit per page can not be less than one.', Forminator::DOMAIN ) );
852
 
853
  }
854
 
861
  */
862
  public function load_email_form() {
863
  // Validate nonce
864
+ forminator_validate_ajax( 'forminator_load_popup_email_settings' );
865
 
866
  $html = forminator_template( 'settings/popup/edit-email-content' );
867
 
875
  */
876
  public function load_uninstall_form() {
877
  // Validate nonce
878
+ forminator_validate_ajax( 'forminator_popup_uninstall_form' );
879
 
880
  $html = forminator_template( 'settings/popup/edit-uninstall-content' );
881
 
890
  */
891
  public function save_uninstall_form() {
892
  // Validate nonce
893
+ forminator_validate_ajax( 'forminator_save_popup_uninstall_settings' );
894
 
895
  $delete_uninstall = isset( $_POST['delete_uninstall'] ) ? sanitize_text_field( $_POST['delete_uninstall'] ) : false;
896
  $delete_uninstall = filter_var( $delete_uninstall, FILTER_VALIDATE_BOOLEAN );
897
 
898
+ update_option( 'forminator_uninstall_clear_data', $delete_uninstall );
899
  wp_send_json_success();
900
 
901
  }
907
  */
908
  public function preview_custom_forms() {
909
  // Validate nonce
910
+ forminator_validate_ajax( 'forminator_popup_preview_cforms' );
911
 
912
  $preview_data = false;
913
  $form_id = false;
919
  // Check if preview data set
920
  if ( isset( $_POST['data'] ) && ! empty( $_POST['data'] ) ) {
921
  $data = $_POST['data']; // WPCS: CSRF ok by forminator_validate_ajax.
922
+
923
  if ( ! is_array( $data ) ) {
924
  $data = json_decode( stripslashes( $data ), true );
925
  }
926
+ $preview_data = forminator_data_to_model_form( $data );// phpcs:ignore -- by forminator_validate_ajax
927
  }
928
 
929
  $html = forminator_form_preview( $form_id, true, $preview_data );
938
  */
939
  public function preview_polls() {
940
  // Validate nonce
941
+ forminator_validate_ajax( 'forminator_popup_preview_polls' );
942
 
943
  $preview_data = false;
944
  // force -1 for preview
945
+ $form_id = isset( $_POST['id'] ) ? intval( $_POST['id'] ) : -1;// phpcs:ignore -- by forminator_validate_ajax
946
 
947
  if ( isset( $_POST['id'] ) ) {
948
  $form_id = intval( $_POST['id'] );
952
  // Check if preview data set
953
  if ( isset( $_POST['data'] ) && ! empty( $_POST['data'] ) ) {
954
  $data = $_POST['data'];
955
+
956
  if ( ! is_array( $data ) ) {
957
  $data = json_decode( stripslashes( $data ), true );
958
  }
959
+ $preview_data = forminator_data_to_model_poll( $data );// phpcs:ignore -- by forminator_validate_ajax
960
  }
961
 
962
  $html = forminator_poll_preview( $form_id, true, $preview_data );
971
  */
972
  public function preview_quizzes() {
973
  // Validate nonce
974
+ forminator_validate_ajax( 'forminator_popup_preview_quizzes' );
975
 
 
976
  // force -1 for preview
977
  $form_id = - 1;
978
 
997
  */
998
  public function load_exports() {
999
  // Validate nonce
1000
+ forminator_validate_ajax( 'forminator_load_exports' );
1001
 
1002
  $form_id = isset( $_POST['id'] ) && $_POST['id'] >= 0 ? intval( $_POST['id'] ) : false;
1003
+
1004
  if ( $form_id ) {
1005
  $args = array(
1006
  'form_id' => $form_id,
1008
  $html = forminator_template( 'settings/popup/exports-content', $args );
1009
  wp_send_json_success( $html );
1010
  } else {
1011
+ wp_send_json_error( __( 'Not valid module ID provided.', Forminator::DOMAIN ) );
1012
  }
1013
  }
1014
 
1024
  $form_id = isset( $_POST['id'] ) && $_POST['id'] >= 0 ? intval( $_POST['id'] ) : false;
1025
 
1026
  if ( ! $form_id ) {
1027
+ wp_send_json_error( __( 'No ID was provided.', Forminator::DOMAIN ) );
1028
  }
1029
 
1030
  $was_cleared = delete_export_logs( $form_id );
1031
 
1032
  if ( $was_cleared ) {
1033
+ wp_send_json_success( __( 'Exports cleared.', Forminator::DOMAIN ) );
1034
  } else {
1035
  wp_send_json_error( __( "Exports couldn't be cleared.", Forminator::DOMAIN ) );
1036
  }
1043
  * @since 1.1 change $_POST to `get_post_data`
1044
  */
1045
  public function search_emails() {
1046
+ forminator_validate_ajax( 'forminator_search_emails' );
1047
  if ( ! current_user_can( 'manage_options' ) ) {
1048
  wp_send_json_error( array() );
1049
  }
1131
  }
1132
 
1133
  // TODO : mark this as phpcs comply after checking usages of this function
1134
+ $post_data = $_POST;// phpcs:ignore -- by forminator_validate_ajax
1135
 
1136
  // do some sanitize
1137
  foreach ( $sanitize_callbacks as $field => $sanitize_func ) {
1154
  */
1155
  public function load_privacy_settings() {
1156
  // Validate nonce
1157
+ forminator_validate_ajax( 'forminator_popup_privacy_settings' );
1158
 
1159
  $html = forminator_template( 'settings/popup/edit-privacy-settings' );
1160
 
1168
  */
1169
  public function save_privacy_settings() {
1170
  // Validate nonce
1171
+ forminator_validate_ajax( 'forminator_save_privacy_settings' );
1172
+ $post_data = $_POST;// phpcs:ignore -- by forminator_validate_ajax
1173
 
1174
  /**
1175
  * CUSTOM FORMS
1184
 
1185
  // Submissions Retention
1186
  $cform_retain_forever = filter_var( $post_data['retain_submission_forever'], FILTER_VALIDATE_BOOLEAN );
1187
+ update_option( 'retain_submission_forever', $cform_retain_forever );
1188
  if ( $cform_retain_forever ) {
1189
  $post_data['submissions_retention_number'] = 0;
1190
  }
1202
 
1203
  // IP Retention
1204
  $cform_retain_ip_forever = filter_var( $post_data['retain_ip_forever'], FILTER_VALIDATE_BOOLEAN );
1205
+ update_option( 'retain_ip_forever', $cform_retain_ip_forever );
1206
  if ( $cform_retain_ip_forever ) {
1207
  $post_data['cform_retention_ip_number'] = 0;
1208
  }
1218
  update_option( 'forminator_retain_ip_interval_unit', $post_data['cform_retention_ip_unit'] );
1219
  // IP Retention
1220
 
 
1221
  /**
1222
  * POLLS
1223
  */
1224
  // Submissions Retention
1225
  $poll_retain_submissions_forever = filter_var( $post_data['poll_retain_submission_forever'], FILTER_VALIDATE_BOOLEAN );
1226
+ update_option( 'poll_retain_submission_forever', $poll_retain_submissions_forever );
1227
  if ( $poll_retain_submissions_forever ) {
1228
  $post_data['poll_submissions_retention_number'] = 0;
1229
  }
1242
 
1243
  // IP Retention
1244
  $poll_retain_ip_forever = filter_var( $post_data['retain_poll_forever'], FILTER_VALIDATE_BOOLEAN );
1245
+ update_option( 'retain_poll_forever', $poll_retain_ip_forever );
1246
  if ( $poll_retain_ip_forever ) {
1247
  $post_data['votes_retention_number'] = 0;
1248
  }
1263
  */
1264
  // Submissions Retention
1265
  $quiz_retain_submissions_forever = filter_var( $post_data['quiz_retain_submission_forever'], FILTER_VALIDATE_BOOLEAN );
1266
+ update_option( 'quiz_retain_submission_forever', $quiz_retain_submissions_forever );
1267
  if ( $quiz_retain_submissions_forever ) {
1268
  $post_data['quiz_submissions_retention_number'] = 0;
1269
  }
1292
  wp_send_json_success( '' );
1293
  }
1294
  // Validate nonce
1295
+ forminator_validate_ajax( 'forminator_popup_export_cform' );
1296
 
1297
  $html = forminator_template( 'custom-form/popup/export' );
1298
 
1309
  wp_send_json_success( '' );
1310
  }
1311
  // Validate nonce
1312
+ forminator_validate_ajax( 'forminator_popup_import_cform' );
1313
 
1314
  $html = forminator_template( 'custom-form/popup/import' );
1315
 
1326
  wp_send_json_error( __( 'Import Export Feature disabled.', Forminator::DOMAIN ) );
1327
  }
1328
  // Validate nonce
1329
+ forminator_validate_ajax( 'forminator_save_import_custom_form' );
1330
 
1331
  $post_data = $this->get_post_data();
1332
  $importable = isset( $post_data['importable'] ) ? $post_data['importable'] : '';// wpcs: CSRF ok
1627
  wp_send_json_success( '' );
1628
  }
1629
  // Validate nonce
1630
+ forminator_validate_ajax( 'forminator_popup_export_poll' );
1631
 
1632
  $html = forminator_template( 'poll/popup/export' );
1633
 
1644
  wp_send_json_success( '' );
1645
  }
1646
  // Validate nonce
1647
+ forminator_validate_ajax( 'forminator_popup_import_poll' );
1648
 
1649
  $html = forminator_template( 'poll/popup/import' );
1650
 
1661
  wp_send_json_error( __( 'Import Export Feature disabled.', Forminator::DOMAIN ) );
1662
  }
1663
  // Validate nonce
1664
+ forminator_validate_ajax( 'forminator_save_import_poll' );
1665
 
1666
  $post_data = $this->get_post_data();
1667
  $importable = isset( $post_data['importable'] ) ? $post_data['importable'] : '';// wpcs: CSRF ok
1717
  wp_send_json_success( '' );
1718
  }
1719
  // Validate nonce
1720
+ forminator_validate_ajax( 'forminator_popup_export_quiz' );
1721
 
1722
  $html = forminator_template( 'quiz/popup/export' );
1723
 
1734
  wp_send_json_success( '' );
1735
  }
1736
  // Validate nonce
1737
+ forminator_validate_ajax( 'forminator_popup_import_quiz' );
1738
 
1739
  $html = forminator_template( 'quiz/popup/import' );
1740
 
1751
  wp_send_json_error( __( 'Import Export Feature disabled.', Forminator::DOMAIN ) );
1752
  }
1753
  // Validate nonce
1754
+ forminator_validate_ajax( 'forminator_save_import_quiz' );
1755
 
1756
  $post_data = $this->get_post_data();
1757
  $importable = isset( $post_data['importable'] ) ? $post_data['importable'] : '';// wpcs: CSRF ok
1805
  */
1806
  public function save_pagination() {
1807
  // Validate nonce
1808
+ forminator_validate_ajax( 'forminator_save_popup_pagination' );
1809
 
1810
  $pagination = intval( sanitize_text_field( $_POST['pagination_entries'] ) );
1811
  $pagination_listing = intval( sanitize_text_field( $_POST['pagination_listings'] ) );
1812
 
1813
  if ( 1 > $pagination || 1 > $pagination_listing ) {
1814
+ wp_send_json_error( __( 'Limit per page can not be less than one.', Forminator::DOMAIN ) );
1815
  }
1816
 
1817
+ update_option( 'forminator_pagination_entries', $pagination );
1818
+ update_option( 'forminator_pagination_listings', $pagination_listing );
1819
  wp_send_json_success();
1820
 
1821
  }
1827
  */
1828
  public function save_accessibility_settings() {
1829
  // Validate nonce
1830
+ forminator_validate_ajax( 'forminator_save_accessibility_settings' );
1831
 
1832
  $enable_accessibility = isset( $_POST['enable_accessibility'] ) ? $_POST['enable_accessibility'] : false;
1833
  $enable_accessibility = filter_var( $enable_accessibility, FILTER_VALIDATE_BOOLEAN );
1834
 
1835
+ update_option( 'forminator_enable_accessibility', $enable_accessibility );
1836
  wp_send_json_success();
1837
  }
1838
 
1843
  */
1844
  public function save_dashboard_settings() {
1845
  // Validate nonce
1846
+ forminator_validate_ajax( 'forminator_save_dashboard_settings' );
1847
 
1848
  $dashboard_settings = forminator_get_dashboard_settings();
1849
  $widgets = array( 'forms', 'polls', 'quizzes' );
1850
 
1851
+ $num_recents = isset( $_POST['num_recent'] ) ? $_POST['num_recent'] : array();// phpcs:ignore -- by forminator_validate_ajax
1852
+ $publisheds = isset( $_POST['published'] ) ? $_POST['published'] : array();// phpcs:ignore -- by forminator_validate_ajax
1853
+ $drafts = isset( $_POST['draft'] ) ? $_POST['draft'] : array();// phpcs:ignore -- by forminator_validate_ajax
1854
 
1855
  // value based settings
1856
  foreach ( $num_recents as $widget => $value ) {
1886
  $pagination = intval( sanitize_text_field( $_POST['pagination_entries'] ) );
1887
  $pagination_listing = intval( sanitize_text_field( $_POST['pagination_listings'] ) );
1888
 
1889
+
1890
  if ( 1 > $pagination || 1 > $pagination_listing ) {
1891
+ wp_send_json_error( __( 'Limit per page can not be less than one.', Forminator::DOMAIN ) );
1892
  }
1893
 
1894
+ update_option( 'forminator_pagination_entries', $pagination );
1895
+ update_option( 'forminator_pagination_listings', $pagination_listing );
1896
 
1897
  wp_send_json_success();
1898
  }
1908
  forminator_validate_ajax( 'forminator_validate_calculation_formula' );
1909
 
1910
  try {
1911
+ $formula = isset( $_POST['formula'] ) ? $_POST['formula'] : '';// phpcs:ignore -- by forminator_validate_ajax
1912
 
1913
  $formula = forminator_calculator_maybe_dummify_fields_on_formula( $formula );
1914
  $calculator = new Forminator_Calculator( $formula );
1936
  Forminator_Gateway_Stripe::store_settings( array() );
1937
  }
1938
  $data['notification'] = array(
1939
+ 'type' => 'success',
1940
+ 'text' => __( 'Stripe account disconnected successfully.', Forminator::DOMAIN ),
1941
+ 'duration' => '4000',
1942
  );
1943
+ $file = forminator_plugin_dir() . 'admin/views/settings/payments/section-stripe.php';
1944
 
1945
  ob_start();
1946
  /** @noinspection PhpIncludeInspection */
1963
  Forminator_PayPal_Express::store_settings( array() );
1964
  }
1965
  $data['notification'] = array(
1966
+ 'type' => 'success',
1967
+ 'text' => __( 'PayPal account disconnected successfully.', Forminator::DOMAIN ),
1968
+ 'duration' => '4000',
1969
  );
1970
+ $file = forminator_plugin_dir() . 'admin/views/settings/payments/section-paypal.php';
1971
 
1972
  ob_start();
1973
  /** @noinspection PhpIncludeInspection */
1986
  // Validate nonce
1987
  forminator_validate_ajax( 'forminator_stripe_settings_modal' );
1988
 
1989
+ $file = forminator_plugin_dir() . 'admin/views/settings/payments/section-stripe.php';
1990
 
1991
  ob_start();
1992
  /** @noinspection PhpIncludeInspection */
2005
  // Validate nonce
2006
  forminator_validate_ajax( 'forminator_paypal_settings_modal' );
2007
 
2008
+ $file = forminator_plugin_dir() . 'admin/views/settings/payments/section-paypal.php';
2009
 
2010
  ob_start();
2011
  /** @noinspection PhpIncludeInspection */
2030
 
2031
  $data = array();
2032
 
2033
+ $post_data = $_POST;// phpcs:ignore -- by forminator_validate_ajax
2034
  $is_connect_request = isset( $post_data['connect'] ) ? filter_var( $post_data['connect'] ) : false;
2035
  $template_vars = array();
2036
  try {
2047
  $template_vars['live_key'] = $live_key;
2048
  $template_vars['live_secret'] = $live_secret;
2049
 
 
2050
  if ( ! empty( $is_connect_request ) ) {
2051
  if ( empty( $test_key ) ) {
2052
  throw new Forminator_Gateway_Exception(
2088
  )
2089
  );
2090
 
 
2091
  $data['notification'] = array(
2092
  'type' => 'success',
2093
  'text' => __( 'Stripe account connected successfully. You can now add the Stripe field to your forms and start collecting payments.', Forminator::DOMAIN ),
2095
  );
2096
 
2097
  }
 
 
2098
  } catch ( Forminator_Gateway_Exception $e ) {
2099
  forminator_maybe_log( __METHOD__, $e->getMessage(), $e->getTrace() );
2100
  $template_vars['error_message'] = $e->getMessage();
2139
  '<span class="sui-loading-text">' . esc_html__( 'Connect', Forminator::DOMAIN ) . '</span>' .
2140
  '<i class="sui-icon-loader sui-loading" aria-hidden="true"></i>' .
2141
  '</button>' .
2142
+ '</div>';
2143
 
2144
  wp_send_json_success( $data );
2145
  }
2151
  */
2152
  public function paypal_settings_modal() {
2153
  // Validate nonce
 
2154
  forminator_validate_ajax( 'forminator_paypal_settings_modal' );
2155
 
2156
  $data = array();
2157
 
2158
+ $post_data = $_POST;// phpcs:ignore -- by forminator_validate_ajax
2159
  $is_connect_request = isset( $post_data['connect'] ) ? filter_var( $post_data['connect'] ) : false;
2160
  $template_vars = array();
2161
 
2162
  try {
2163
  $paypal = new Forminator_PayPal_Express();
2164
 
2165
+ $sandbox_id = isset( $post_data['sandbox_id'] ) ? $post_data['sandbox_id'] : $paypal->get_sandbox_id();// WPCS: CSRF ok by forminator_validate_ajax.
2166
+ $sandbox_secret = isset( $post_data['sandbox_secret'] ) ? $post_data['sandbox_secret'] : $paypal->get_sandbox_secret();// WPCS: CSRF ok by forminator_validate_ajax.
2167
+ $live_id = isset( $post_data['live_id'] ) ? $post_data['live_id'] : $paypal->get_live_id();// WPCS: CSRF ok by forminator_validate_ajax.
2168
  $live_secret = isset( $post_data['live_secret'] ) ? $post_data['live_secret'] : $paypal->get_live_secret();// WPCS: CSRF ok by forminator_validate_ajax.
2169
  $default_currency = $paypal->get_default_currency();
2170
 
2171
+ $template_vars['sandbox_id'] = $sandbox_id;
2172
  $template_vars['sandbox_secret'] = $sandbox_secret;
2173
+ $template_vars['live_id'] = $live_id;
2174
+ $template_vars['live_secret'] = $live_secret;
 
2175
 
2176
  if ( ! empty( $is_connect_request ) ) {
2177
  if ( empty( $sandbox_id ) ) {
2206
 
2207
  Forminator_PayPal_Express::store_settings(
2208
  array(
2209
+ 'sandbox_id' => $sandbox_id,
2210
+ 'sandbox_secret' => $sandbox_secret,
2211
+ 'live_id' => $live_id,
2212
+ 'live_secret' => $live_secret,
2213
+ 'currency' => $default_currency,
2214
  )
2215
  );
2216
 
 
2217
  $data['notification'] = array(
2218
  'type' => 'success',
2219
  'text' => __( 'PayPal account connected successfully. You can now add the PayPal field to your forms and start collecting payments.', Forminator::DOMAIN ),
2221
  );
2222
 
2223
  }
 
 
2224
  } catch ( Forminator_Gateway_Exception $e ) {
2225
  forminator_maybe_log( __METHOD__, $e->getMessage(), $e->getTrace() );
2226
  $template_vars['error_message'] = $e->getMessage();
2261
  $data['buttons'] = array();
2262
 
2263
  $data['buttons']['connect']['markup'] = '<div class="sui-actions-right">' .
2264
+ '<button class="sui-button forminator-paypal-connect" type="button" data-nonce="' . wp_create_nonce( 'forminator_paypal_settings_modal' ) . '">' .
2265
+ '<span class="sui-loading-text">' . esc_html__( 'Connect', Forminator::DOMAIN ) . '</span>' .
2266
+ '<i class="sui-icon-loader sui-loading" aria-hidden="true"></i>' .
2267
+ '</button>' .
2268
+ '</div>';
2269
 
2270
  wp_send_json_success( $data );
2271
  }
2276
  * @since 1.9
2277
  */
2278
  public function dismiss_notice() {
2279
+ forminator_validate_ajax( 'forminator_dismiss_notification' );
2280
 
2281
  $notification_name = filter_input( INPUT_POST, 'prop', FILTER_SANITIZE_STRING );
2282
 
2307
  * @since 1.7
2308
  */
2309
  public function save_payments() {
2310
+ forminator_validate_ajax( 'forminator_save_payments_settings' );
2311
 
2312
  // stripe
2313
  if ( isset( $_POST['stripe-default-currency'] ) && ! empty( $_POST['stripe-default-currency'] ) ) {
2331
  )
2332
  );
2333
 
 
2334
  } catch ( Forminator_Gateway_Exception $e ) {
2335
  wp_send_json_error( $e->getMessage() );
2336
  }
2343
  try {
2344
  $paypal = new Forminator_PayPal_Express();
2345
 
2346
+ $sandbox_id = $paypal->get_sandbox_id();
2347
  $sandbox_secret = $paypal->get_sandbox_secret();
2348
+ $live_id = $paypal->get_live_id();
2349
+ $live_secret = $paypal->get_live_secret();
2350
 
2351
  Forminator_PayPal_Express::store_settings(
2352
  array(
2358
  )
2359
  );
2360
 
 
2361
  } catch ( Forminator_Gateway_Exception $e ) {
2362
  wp_send_json_error( $e->getMessage() );
2363
  }
2374
  */
2375
  public function delete_poll_submissions() {
2376
  forminator_validate_ajax( 'forminatorPollEntries' );
2377
+
2378
  if ( ! empty( $_POST['id'] ) ) {
2379
  $form_id = intval( $_POST['id'] );
2380
+
2381
  Forminator_Form_Entry_Model::delete_by_form( $form_id );
2382
 
2383
+ $file = forminator_plugin_dir() . 'admin/views/poll/entries/content-none.php';
2384
 
2385
  ob_start();
2386
  /** @noinspection PhpIncludeInspection */
admin/classes/class-admin-data.php CHANGED
@@ -34,7 +34,7 @@ class Forminator_Admin_Data {
34
  */
35
  public function get_options_data() {
36
  $data = $this->admin_js_defaults();
37
- $data = apply_filters( "forminator_data", $data );
38
  $data['fields'] = forminator_get_fields_sorted( 'position', SORT_ASC );
39
 
40
  return $data;
@@ -59,6 +59,37 @@ class Forminator_Admin_Data {
59
  return $this->_nonce;
60
  }
61
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62
  /**
63
  * Default Admin properties
64
  *
@@ -75,9 +106,9 @@ class Forminator_Admin_Data {
75
  'is_touch' => wp_is_mobile(),
76
  'dashboardUrl' => menu_page_url( 'forminator', false ),
77
  'formEditUrl' => menu_page_url( 'forminator-cform-wizard', false ),
78
- 'noWrongEditUrl' => menu_page_url( 'forminator-nowrong-wizard', false ),
79
  'knowledgeEditUrl' => menu_page_url( 'forminator-knowledge-wizard', false ),
80
- 'pollEditUrl' => menu_page_url( 'forminator-poll-wizard', false ),
81
  'settingsUrl' => menu_page_url( 'forminator-settings', false ),
82
  'integrationsUrl' => menu_page_url( 'forminator-integrations', false ),
83
  'hasCaptcha' => forminator_has_captcha_settings(),
@@ -116,8 +147,12 @@ class Forminator_Admin_Data {
116
  'postTypeList' => forminator_post_type_list(),
117
  'postCategories' => forminator_post_categories(),
118
  'isPro' => FORMINATOR_PRO,
 
 
119
  'hasPayPal' => forminator_has_paypal_settings(),
120
  'pollAnswerColors' => forminator_get_poll_chart_colors(),
 
 
121
  );
122
  }
123
  }
34
  */
35
  public function get_options_data() {
36
  $data = $this->admin_js_defaults();
37
+ $data = apply_filters( 'forminator_data', $data );
38
  $data['fields'] = forminator_get_fields_sorted( 'position', SORT_ASC );
39
 
40
  return $data;
59
  return $this->_nonce;
60
  }
61
 
62
+ /**
63
+ * Return published pages
64
+ *
65
+ * @since 1.8
66
+ *
67
+ * @return mixed
68
+ */
69
+ public function get_pages() {
70
+ $args = array(
71
+ 'sort_order' => 'DESC',
72
+ 'sort_column' => 'ID',
73
+ 'hierarchical' => 1,
74
+ 'exclude' => '',
75
+ 'include' => '',
76
+ 'meta_key' => '',
77
+ 'meta_value' => '',
78
+ 'authors' => '',
79
+ 'child_of' => 0,
80
+ 'parent' => -1,
81
+ 'exclude_tree' => '',
82
+ 'number' => '',
83
+ 'offset' => 0,
84
+ 'post_type' => 'page',
85
+ 'post_status' => 'publish'
86
+ );
87
+
88
+ $pages = get_pages($args);
89
+
90
+ return $pages;
91
+ }
92
+
93
  /**
94
  * Default Admin properties
95
  *
106
  'is_touch' => wp_is_mobile(),
107
  'dashboardUrl' => menu_page_url( 'forminator', false ),
108
  'formEditUrl' => menu_page_url( 'forminator-cform-wizard', false ),
109
+ 'noWrongEditUrl' => menu_page_url( 'forminator-nowrong-wizard', false ),
110
  'knowledgeEditUrl' => menu_page_url( 'forminator-knowledge-wizard', false ),
111
+ 'pollEditUrl' => menu_page_url( 'forminator-poll-wizard', false ),
112
  'settingsUrl' => menu_page_url( 'forminator-settings', false ),
113
  'integrationsUrl' => menu_page_url( 'forminator-integrations', false ),
114
  'hasCaptcha' => forminator_has_captcha_settings(),
147
  'postTypeList' => forminator_post_type_list(),
148
  'postCategories' => forminator_post_categories(),
149
  'isPro' => FORMINATOR_PRO,
150
+ 'userRoles' => get_editable_roles(),
151
+ 'pages' => $this->get_pages(),
152
  'hasPayPal' => forminator_has_paypal_settings(),
153
  'pollAnswerColors' => forminator_get_poll_chart_colors(),
154
+ 'isMainSite' => forminator_is_main_site(),
155
+ 'isSubdomainNetwork' => forminator_is_subdomain_network(),
156
  );
157
  }
158
  }
admin/classes/class-admin-l10n.php CHANGED
@@ -18,9 +18,9 @@ class Forminator_Admin_L10n {
18
  public function get_l10n_strings() {
19
  $l10n = $this->admin_l10n();
20
 
21
- $admin_locale = require_once forminator_plugin_dir() . 'admin/locale.php';
22
 
23
- $locale = array(
24
  '' => array(
25
  'localeSlug' => 'default',
26
  ),
@@ -28,7 +28,6 @@ class Forminator_Admin_L10n {
28
 
29
  $l10n['locale'] = array_merge( $locale, (array) $admin_locale );
30
 
31
-
32
  return apply_filters( 'forminator_l10n', $l10n );
33
  }
34
 
@@ -114,8 +113,8 @@ class Forminator_Admin_L10n {
114
  "disable" => __( 'Disable', Forminator::DOMAIN ),
115
  "enable" => __( 'Enable', Forminator::DOMAIN ),
116
  "enter_name" => __( 'Enter a name', Forminator::DOMAIN ),
117
- "new_form_desc2" => __( 'Name your new form, then lets start building!', Forminator::DOMAIN ),
118
- "new_poll_desc2" => __( 'Name your new poll, then lets start building!', Forminator::DOMAIN ),
119
  "new_quiz_desc2" => __( 'Choose a name for your new quiz, then start adding questions and answers!'),
120
  "input_label" => __( 'Input Label', Forminator::DOMAIN ),
121
  "form_name_validation" => __( 'Form name cannot be empty.', Forminator::DOMAIN ),
@@ -128,102 +127,107 @@ class Forminator_Admin_L10n {
128
  'reset' => __( 'RESET', Forminator::DOMAIN ),
129
  "disconnect" => __( 'Disconnect', Forminator::DOMAIN ),
130
  "apply_submission_filter" => __( 'Apply Submission Filters', Forminator::DOMAIN ),
 
 
 
 
 
131
  ),
132
- "quiz" => array(
133
- "choose_quiz_title" => __( 'Choose Quiz Type', Forminator::DOMAIN ),
134
- "choose_quiz_description" => __( "Let's start by choosing an appropriate quiz type based on your goal.", Forminator::DOMAIN ),
135
- "knowledge_label" => __( 'Knowledge Quiz', Forminator::DOMAIN ),
136
- "knowledge_description" => __( 'Test the knowledge of your visitors on a subject and final score is calculated based on number of right answers. E.g. Test your music knowledge.', Forminator::DOMAIN ),
137
- "nowrong_label" => __( 'Personality Quiz', Forminator::DOMAIN ),
138
- "nowrong_description" => __( "Show different outcomes depending on the visitor's answers. There are no wrong answers. E.g. Which superhero are you?", Forminator::DOMAIN ),
139
- "continue_button" => __( 'Continue', Forminator::DOMAIN ),
140
  ),
141
- "form" => array(
142
- "form_template_title" => __( "Choose a template", Forminator::DOMAIN ),
143
- "form_template_description" => __( "Customize one of our pre-made form templates, or start from scratch."),
144
- "continue_button" => __( 'Continue', Forminator::DOMAIN ),
145
  ),
146
- "sidebar" => array(
147
- "label" => __( "Label", Forminator::DOMAIN ),
148
- "value" => __( "Value", Forminator::DOMAIN ),
149
- "add_option" => __( "Add Option", Forminator::DOMAIN ),
150
- "delete" => __( "Delete", Forminator::DOMAIN ),
151
- "pick_field" => __( "Pick a field", Forminator::DOMAIN ),
152
- "field_will_be" => __( "This field will be", Forminator::DOMAIN ),
153
- "if" => __( "if", Forminator::DOMAIN ),
154
- "shown" => __( "Shown", Forminator::DOMAIN ),
155
- "hidden" => __( "Hidden", Forminator::DOMAIN ),
156
  ),
157
- "colors" => array(
158
- "poll_shadow" => __( "Poll shadow", Forminator::DOMAIN ),
159
- "title" => __( "Title text", Forminator::DOMAIN ),
160
- "question" => __( "Question text", Forminator::DOMAIN ),
161
- "answer" => __( "Answer text", Forminator::DOMAIN ),
162
- "input_background" => __( "Input field bg", Forminator::DOMAIN ),
163
- "input_border" => __( "Input field border", Forminator::DOMAIN ),
164
- "input_placeholder" => __( "Input field placeholder", Forminator::DOMAIN ),
165
- "input_text" => __( "Input field text", Forminator::DOMAIN ),
166
- "btn_background" => __( "Button background", Forminator::DOMAIN ),
167
- "btn_text" => __( "Button text", Forminator::DOMAIN ),
168
- "link_res" => __( "Results link", Forminator::DOMAIN ),
169
  ),
170
- "options" => array(
171
- "browse" => __( "Browse", Forminator::DOMAIN ),
172
- "clear" => __( "Clear", Forminator::DOMAIN ),
173
- "no_results" => __( "You don't have any results yet.", Forminator::DOMAIN ),
174
- "select_result" => __( "Select result", Forminator::DOMAIN ),
175
- "no_answers" => __( "You don't have any answer yet.", Forminator::DOMAIN ),
176
- "placeholder_image" => __( "Click browse to add image...", Forminator::DOMAIN ),
177
- "placeholder_image_alt" => __( "Click on browse to add an image", Forminator::DOMAIN ),
178
- "placeholder_answer" => __( "Add an answer here", Forminator::DOMAIN ),
179
- "multiqs_empty" => __( "You don't have any questions yet.", Forminator::DOMAIN ),
180
- "add_question" => __( "Add Question", Forminator::DOMAIN ),
181
- "add_new_question" => __( "Add New Question", Forminator::DOMAIN ),
182
- "question_title" => __( "Question title", Forminator::DOMAIN ),
183
- "question_title_error" => __( "Question title cannot be empty! Please, add some content to your question.", Forminator::DOMAIN ),
184
- "answers" => __( "Answers", Forminator::DOMAIN ),
185
- "add_answer" => __( "Add Answer", Forminator::DOMAIN ),
186
- "add_new_answer" => __( "Add New Answer", Forminator::DOMAIN ),
187
- "add_result" => __( "Add Result", Forminator::DOMAIN ),
188
- "delete_result" => __( "Delete Result", Forminator::DOMAIN ),
189
- "title" => __( "Title", Forminator::DOMAIN ),
190
- "image" => __( "Image (optional)", Forminator::DOMAIN ),
191
- "description" => __( "Description", Forminator::DOMAIN ),
192
- "trash_answer" => __( "Delete this answer", Forminator::DOMAIN ),
193
- "correct" => __( "Correct answer", Forminator::DOMAIN ),
194
- "no_options" => __( "You don't have any options yet.", Forminator::DOMAIN ),
195
- "delete" => __( "Delete", Forminator::DOMAIN ),
196
- "restricted_dates" => __( "Restricted dates:", Forminator::DOMAIN ),
197
- "add" => __( "Add", Forminator::DOMAIN ),
198
- "custom_date" => __( "Pick custom date(s) to restrict:", Forminator::DOMAIN ),
199
- "form_data" => __( "Form Data", Forminator::DOMAIN ),
200
- "required_form_fields" => __( "Required Fields", Forminator::DOMAIN ),
201
- "optional_form_fields" => __( "Optional Fields", Forminator::DOMAIN ),
202
- "all_fields" => __( "All Submitted Fields", Forminator::DOMAIN ),
203
- "form_name" => __( "Form Name", Forminator::DOMAIN ),
204
- "misc_data" => __( "Misc Data", Forminator::DOMAIN ),
205
- "form_based_data" => __( "Add form data", Forminator::DOMAIN ),
206
- "been_saved" => __( "has been saved.", Forminator::DOMAIN ),
207
- "been_published" => __( "has been published.", Forminator::DOMAIN ),
208
- "error_saving" => __( "Error! Form cannot be saved." ),
209
- "default_value" => __( "Default Value", Forminator::DOMAIN ),
210
- "admin_email" => get_option( 'admin_email' ),
211
- "delete_question" => __( "Delete this question", Forminator::DOMAIN ),
212
- "remove_image" => __( "Remove image", Forminator::DOMAIN ),
213
- "answer_settings" => __( "Show extra settings", Forminator::DOMAIN ),
214
- "add_new_result" => __( "Add New Result", Forminator::DOMAIN ),
215
- "multiorder_validation" => __( "You need to add at least one result for this quiz so you can re-order the results priority.", Forminator::DOMAIN ),
216
- "user_ip_address" => __( "User IP Address", Forminator::DOMAIN ),
217
- "date" => __( "Date", Forminator::DOMAIN ),
218
- "embed_id" => __( "Embed Post/Page ID", Forminator::DOMAIN ),
219
- "embed_title" => __( "Embed Post/Page Title", Forminator::DOMAIN ),
220
- "embed_url" => __( "Embed URL", Forminator::DOMAIN ),
221
- "user_agent" => __( "HTTP User Agent", Forminator::DOMAIN ),
222
- "refer_url" => __( "HTTP Refer URL", Forminator::DOMAIN ),
223
- "display_name" => __( "User Display Name", Forminator::DOMAIN ),
224
- "user_email" => __( "User Email", Forminator::DOMAIN ),
225
- "user_login" => __( "User Login", Forminator::DOMAIN ),
226
- "shortcode_copied" => __( "Shortcode has been copied successfully.", Forminator::DOMAIN )
227
  ),
228
  "commons" => array(
229
  "color" => __( "Color", Forminator::DOMAIN ),
@@ -301,16 +305,18 @@ class Forminator_Admin_L10n {
301
  "vanilla_message" => __( "Vanilla Theme will provide you a clean design (with no styles) and simple markup.", Forminator::DOMAIN ),
302
  "no_file_chosen" => __( "No file chosen", Forminator::DOMAIN ),
303
  "update_successfully" => __( "saved succesfully!", Forminator::DOMAIN ),
304
- "update_unsuccessfull" => __( "Error! Settings were not saved.", Forminator::DOMAIN )
 
 
305
  ),
306
- "social" => array(
307
- "facebook" => __( "Facebook", Forminator::DOMAIN ),
308
- "twitter" => __( "Twitter", Forminator::DOMAIN ),
309
- "google_plus" => __( "Google+", Forminator::DOMAIN ),
310
- "linkedin" => __( "LinkedIn", Forminator::DOMAIN ),
311
  ),
312
- "calendar" => array(
313
- "day_names_min" => array(
314
  esc_html__( 'Su', Forminator::DOMAIN ),
315
  esc_html__( 'Mo', Forminator::DOMAIN ),
316
  esc_html__( 'Tu', Forminator::DOMAIN ),
@@ -319,7 +325,7 @@ class Forminator_Admin_L10n {
319
  esc_html__( 'Fr', Forminator::DOMAIN ),
320
  esc_html__( 'Sa', Forminator::DOMAIN ),
321
  ),
322
- "month_names" => array(
323
  esc_html__( 'January', Forminator::DOMAIN ),
324
  esc_html__( 'February', Forminator::DOMAIN ),
325
  esc_html__( 'March', Forminator::DOMAIN ),
@@ -333,24 +339,24 @@ class Forminator_Admin_L10n {
333
  esc_html__( 'November', Forminator::DOMAIN ),
334
  esc_html__( 'December', Forminator::DOMAIN ),
335
  ),
336
- "day_names_min" => self::get_short_days_names(),
337
- "month_names" => self::get_months_names(),
338
  ),
339
- "exporter" => array(
340
- "export_nonce" => wp_create_nonce( 'forminator_export' ),
341
- "form_id" => forminator_get_form_id_helper(),
342
- "form_type" => forminator_get_form_type_helper(),
343
- "enabled" => filter_var( forminator_get_exporter_info( 'enabled', forminator_get_form_id_helper() . forminator_get_form_type_helper() ), FILTER_VALIDATE_BOOLEAN ),
344
- "interval" => forminator_get_exporter_info( 'interval', forminator_get_form_id_helper() . forminator_get_form_type_helper() ),
345
- "month_day" => forminator_get_exporter_info( 'month_day', forminator_get_form_id_helper() . forminator_get_form_type_helper() ),
346
- "day" => forminator_get_exporter_info( 'day', forminator_get_form_id_helper() . forminator_get_form_type_helper() ),
347
- "hour" => forminator_get_exporter_info( 'hour', forminator_get_form_id_helper() . forminator_get_form_type_helper() ),
348
- "email" => forminator_get_exporter_info( 'email', forminator_get_form_id_helper() . forminator_get_form_type_helper() ),
349
  'if_new' => forminator_get_exporter_info( 'if_new', forminator_get_form_id_helper() . forminator_get_form_type_helper() ),
350
  'noResults' => esc_html__( 'No Result Found', Forminator::DOMAIN ),
351
  'searching' => esc_html__( 'Searching', Forminator::DOMAIN ),
352
  ),
353
- "exporter_logs" => forminator_get_export_logs( forminator_get_form_id_helper() ),
354
  );
355
  }
356
 
@@ -394,7 +400,6 @@ class Forminator_Admin_L10n {
394
  esc_html__( 'December', Forminator::DOMAIN ),
395
  );
396
 
397
-
398
  }
399
 
400
  }
18
  public function get_l10n_strings() {
19
  $l10n = $this->admin_l10n();
20
 
21
+ $admin_locale = require_once forminator_plugin_dir() . 'admin/locale.php';
22
 
23
+ $locale = array(
24
  '' => array(
25
  'localeSlug' => 'default',
26
  ),
28
 
29
  $l10n['locale'] = array_merge( $locale, (array) $admin_locale );
30
 
 
31
  return apply_filters( 'forminator_l10n', $l10n );
32
  }
33
 
113
  "disable" => __( 'Disable', Forminator::DOMAIN ),
114
  "enable" => __( 'Enable', Forminator::DOMAIN ),
115
  "enter_name" => __( 'Enter a name', Forminator::DOMAIN ),
116
+ "new_form_desc2" => __( 'Name your new form, then let\'s start building!', Forminator::DOMAIN ),
117
+ "new_poll_desc2" => __( 'Name your new poll, then let\'s start building!', Forminator::DOMAIN ),
118
  "new_quiz_desc2" => __( 'Choose a name for your new quiz, then start adding questions and answers!'),
119
  "input_label" => __( 'Input Label', Forminator::DOMAIN ),
120
  "form_name_validation" => __( 'Form name cannot be empty.', Forminator::DOMAIN ),
127
  'reset' => __( 'RESET', Forminator::DOMAIN ),
128
  "disconnect" => __( 'Disconnect', Forminator::DOMAIN ),
129
  "apply_submission_filter" => __( 'Apply Submission Filters', Forminator::DOMAIN ),
130
+ 'registration_notice' => __( "This template allows you to create your own registration form and insert it on a custom page. This doesn't modify the default registration form.", Forminator::DOMAIN ),
131
+ 'login_notice' => __( "This template allows you to create your own login form and insert it on a custom page. This doesn't modify the default login form.", Forminator::DOMAIN ),
132
+ 'approve_user' => __( 'Approve', Forminator::DOMAIN ),
133
+ 'registration_name' => __( 'User Registration', Forminator::DOMAIN ),
134
+ 'login_name' => __( 'User Login', Forminator::DOMAIN ),
135
  ),
136
+ 'quiz' => array(
137
+ 'choose_quiz_title' => __( 'Choose Quiz Type', Forminator::DOMAIN ),
138
+ 'choose_quiz_description' => __( "Let's start by choosing an appropriate quiz type based on your goal.", Forminator::DOMAIN ),
139
+ 'knowledge_label' => __( 'Knowledge Quiz', Forminator::DOMAIN ),
140
+ 'knowledge_description' => __( 'Test the knowledge of your visitors on a subject and final score is calculated based on number of right answers. E.g. Test your music knowledge.', Forminator::DOMAIN ),
141
+ 'nowrong_label' => __( 'Personality Quiz', Forminator::DOMAIN ),
142
+ 'nowrong_description' => __( "Show different outcomes depending on the visitor's answers. There are no wrong answers. E.g. Which superhero are you?", Forminator::DOMAIN ),
143
+ 'continue_button' => __( 'Continue', Forminator::DOMAIN ),
144
  ),
145
+ 'form' => array(
146
+ 'form_template_title' => __( 'Choose a template', Forminator::DOMAIN ),
147
+ 'form_template_description' => __( 'Customize one of our pre-made form templates, or start from scratch.' ),
148
+ 'continue_button' => __( 'Continue', Forminator::DOMAIN ),
149
  ),
150
+ 'sidebar' => array(
151
+ 'label' => __( 'Label', Forminator::DOMAIN ),
152
+ 'value' => __( 'Value', Forminator::DOMAIN ),
153
+ 'add_option' => __( 'Add Option', Forminator::DOMAIN ),
154
+ 'delete' => __( 'Delete', Forminator::DOMAIN ),
155
+ 'pick_field' => __( 'Pick a field', Forminator::DOMAIN ),
156
+ 'field_will_be' => __( 'This field will be', Forminator::DOMAIN ),
157
+ 'if' => __( 'if', Forminator::DOMAIN ),
158
+ 'shown' => __( 'Shown', Forminator::DOMAIN ),
159
+ 'hidden' => __( 'Hidden', Forminator::DOMAIN ),
160
  ),
161
+ 'colors' => array(
162
+ 'poll_shadow' => __( 'Poll shadow', Forminator::DOMAIN ),
163
+ 'title' => __( 'Title text', Forminator::DOMAIN ),
164
+ 'question' => __( 'Question text', Forminator::DOMAIN ),
165
+ 'answer' => __( 'Answer text', Forminator::DOMAIN ),
166
+ 'input_background' => __( 'Input field bg', Forminator::DOMAIN ),
167
+ 'input_border' => __( 'Input field border', Forminator::DOMAIN ),
168
+ 'input_placeholder' => __( 'Input field placeholder', Forminator::DOMAIN ),
169
+ 'input_text' => __( 'Input field text', Forminator::DOMAIN ),
170
+ 'btn_background' => __( 'Button background', Forminator::DOMAIN ),
171
+ 'btn_text' => __( 'Button text', Forminator::DOMAIN ),
172
+ 'link_res' => __( 'Results link', Forminator::DOMAIN ),
173
  ),
174
+ 'options' => array(
175
+ 'browse' => __( 'Browse', Forminator::DOMAIN ),
176
+ 'clear' => __( 'Clear', Forminator::DOMAIN ),
177
+ 'no_results' => __( "You don't have any results yet.", Forminator::DOMAIN ),
178
+ 'select_result' => __( 'Select result', Forminator::DOMAIN ),
179
+ 'no_answers' => __( "You don't have any answer yet.", Forminator::DOMAIN ),
180
+ 'placeholder_image' => __( 'Click browse to add image...', Forminator::DOMAIN ),
181
+ 'placeholder_image_alt' => __( 'Click on browse to add an image', Forminator::DOMAIN ),
182
+ 'placeholder_answer' => __( 'Add an answer here', Forminator::DOMAIN ),
183
+ 'multiqs_empty' => __( "You don't have any questions yet.", Forminator::DOMAIN ),
184
+ 'add_question' => __( 'Add Question', Forminator::DOMAIN ),
185
+ 'add_new_question' => __( 'Add New Question', Forminator::DOMAIN ),
186
+ 'question_title' => __( 'Question title', Forminator::DOMAIN ),
187
+ 'question_title_error' => __( 'Question title cannot be empty! Please, add some content to your question.', Forminator::DOMAIN ),
188
+ 'answers' => __( 'Answers', Forminator::DOMAIN ),
189
+ 'add_answer' => __( 'Add Answer', Forminator::DOMAIN ),
190
+ 'add_new_answer' => __( 'Add New Answer', Forminator::DOMAIN ),
191
+ 'add_result' => __( 'Add Result', Forminator::DOMAIN ),
192
+ 'delete_result' => __( 'Delete Result', Forminator::DOMAIN ),
193
+ 'title' => __( 'Title', Forminator::DOMAIN ),
194
+ 'image' => __( 'Image (optional)', Forminator::DOMAIN ),
195
+ 'description' => __( 'Description', Forminator::DOMAIN ),
196
+ 'trash_answer' => __( 'Delete this answer', Forminator::DOMAIN ),
197
+ 'correct' => __( 'Correct answer', Forminator::DOMAIN ),
198
+ 'no_options' => __( "You don't have any options yet.", Forminator::DOMAIN ),
199
+ 'delete' => __( 'Delete', Forminator::DOMAIN ),
200
+ 'restricted_dates' => __( 'Restricted dates:', Forminator::DOMAIN ),
201
+ 'add' => __( 'Add', Forminator::DOMAIN ),
202
+ 'custom_date' => __( 'Pick custom date(s) to restrict:', Forminator::DOMAIN ),
203
+ 'form_data' => __( 'Form Data', Forminator::DOMAIN ),
204
+ 'required_form_fields' => __( 'Required Fields', Forminator::DOMAIN ),
205
+ 'optional_form_fields' => __( 'Optional Fields', Forminator::DOMAIN ),
206
+ 'all_fields' => __( 'All Submitted Fields', Forminator::DOMAIN ),
207
+ 'form_name' => __( 'Form Name', Forminator::DOMAIN ),
208
+ 'misc_data' => __( 'Misc Data', Forminator::DOMAIN ),
209
+ 'form_based_data' => __( 'Add form data', Forminator::DOMAIN ),
210
+ 'been_saved' => __( 'has been saved.', Forminator::DOMAIN ),
211
+ 'been_published' => __( 'has been published.', Forminator::DOMAIN ),
212
+ 'error_saving' => __( 'Error! Form cannot be saved.' ),
213
+ 'default_value' => __( 'Default Value', Forminator::DOMAIN ),
214
+ 'admin_email' => get_option( 'admin_email' ),
215
+ 'delete_question' => __( 'Delete this question', Forminator::DOMAIN ),
216
+ 'remove_image' => __( 'Remove image', Forminator::DOMAIN ),
217
+ 'answer_settings' => __( 'Show extra settings', Forminator::DOMAIN ),
218
+ 'add_new_result' => __( 'Add New Result', Forminator::DOMAIN ),
219
+ 'multiorder_validation' => __( 'You need to add at least one result for this quiz so you can re-order the results priority.', Forminator::DOMAIN ),
220
+ 'user_ip_address' => __( 'User IP Address', Forminator::DOMAIN ),
221
+ 'date' => __( 'Date', Forminator::DOMAIN ),
222
+ 'embed_id' => __( 'Embed Post/Page ID', Forminator::DOMAIN ),
223
+ 'embed_title' => __( 'Embed Post/Page Title', Forminator::DOMAIN ),
224
+ 'embed_url' => __( 'Embed URL', Forminator::DOMAIN ),
225
+ 'user_agent' => __( 'HTTP User Agent', Forminator::DOMAIN ),
226
+ 'refer_url' => __( 'HTTP Refer URL', Forminator::DOMAIN ),
227
+ 'display_name' => __( 'User Display Name', Forminator::DOMAIN ),
228
+ 'user_email' => __( 'User Email', Forminator::DOMAIN ),
229
+ 'user_login' => __( 'User Login', Forminator::DOMAIN ),
230
+ 'shortcode_copied' => __( 'Shortcode has been copied successfully.', Forminator::DOMAIN ),
231
  ),
232
  "commons" => array(
233
  "color" => __( "Color", Forminator::DOMAIN ),
305
  "vanilla_message" => __( "Vanilla Theme will provide you a clean design (with no styles) and simple markup.", Forminator::DOMAIN ),
306
  "no_file_chosen" => __( "No file chosen", Forminator::DOMAIN ),
307
  "update_successfully" => __( "saved succesfully!", Forminator::DOMAIN ),
308
+ "update_unsuccessfull" => __( "Error! Settings were not saved.", Forminator::DOMAIN ),
309
+ "approve_user_successfull" => __( "User approved succesfully.", Forminator::DOMAIN ),
310
+ "approve_user_unsuccessfull" => __( "Error! User was not approved.", Forminator::DOMAIN )
311
  ),
312
+ 'social' => array(
313
+ 'facebook' => __( 'Facebook', Forminator::DOMAIN ),
314
+ 'twitter' => __( 'Twitter', Forminator::DOMAIN ),
315
+ 'google_plus' => __( 'Google+', Forminator::DOMAIN ),
316
+ 'linkedin' => __( 'LinkedIn', Forminator::DOMAIN ),
317
  ),
318
+ 'calendar' => array(
319
+ 'day_names_min' => array(
320
  esc_html__( 'Su', Forminator::DOMAIN ),
321
  esc_html__( 'Mo', Forminator::DOMAIN ),
322
  esc_html__( 'Tu', Forminator::DOMAIN ),
325
  esc_html__( 'Fr', Forminator::DOMAIN ),
326
  esc_html__( 'Sa', Forminator::DOMAIN ),
327
  ),
328
+ 'month_names' => array(
329
  esc_html__( 'January', Forminator::DOMAIN ),
330
  esc_html__( 'February', Forminator::DOMAIN ),
331
  esc_html__( 'March', Forminator::DOMAIN ),
339
  esc_html__( 'November', Forminator::DOMAIN ),
340
  esc_html__( 'December', Forminator::DOMAIN ),
341
  ),
342
+ 'day_names_min' => self::get_short_days_names(),
343
+ 'month_names' => self::get_months_names(),
344
  ),
345
+ 'exporter' => array(
346
+ 'export_nonce' => wp_create_nonce( 'forminator_export' ),
347
+ 'form_id' => forminator_get_form_id_helper(),
348
+ 'form_type' => forminator_get_form_type_helper(),
349
+ 'enabled' => filter_var( forminator_get_exporter_info( 'enabled', forminator_get_form_id_helper() . forminator_get_form_type_helper() ), FILTER_VALIDATE_BOOLEAN ),
350
+ 'interval' => forminator_get_exporter_info( 'interval', forminator_get_form_id_helper() . forminator_get_form_type_helper() ),
351
+ 'month_day' => forminator_get_exporter_info( 'month_day', forminator_get_form_id_helper() . forminator_get_form_type_helper() ),
352
+ 'day' => forminator_get_exporter_info( 'day', forminator_get_form_id_helper() . forminator_get_form_type_helper() ),
353
+ 'hour' => forminator_get_exporter_info( 'hour', forminator_get_form_id_helper() . forminator_get_form_type_helper() ),
354
+ 'email' => forminator_get_exporter_info( 'email', forminator_get_form_id_helper() . forminator_get_form_type_helper() ),
355
  'if_new' => forminator_get_exporter_info( 'if_new', forminator_get_form_id_helper() . forminator_get_form_type_helper() ),
356
  'noResults' => esc_html__( 'No Result Found', Forminator::DOMAIN ),
357
  'searching' => esc_html__( 'Searching', Forminator::DOMAIN ),
358
  ),
359
+ 'exporter_logs' => forminator_get_export_logs( forminator_get_form_id_helper() ),
360
  );
361
  }
362
 
400
  esc_html__( 'December', Forminator::DOMAIN ),
401
  );
402
 
 
403
  }
404
 
405
  }
admin/classes/class-admin.php CHANGED
@@ -81,11 +81,11 @@ class Forminator_Admin {
81
  */
82
  public function add_dashboard_page() {
83
  $title = __( 'Forminator', Forminator::DOMAIN );
84
- if( FORMINATOR_PRO ) {
85
  $title = __( 'Forminator Pro', Forminator::DOMAIN );
86
  }
87
 
88
- $this->pages['forminator'] = new Forminator_Dashboard_Page( 'forminator', 'dashboard', $title, $title, false, false );
89
  $this->pages['forminator-dashboard'] = new Forminator_Dashboard_Page( 'forminator', 'dashboard', __( 'Forminator Dashboard', Forminator::DOMAIN ), __( 'Dashboard', Forminator::DOMAIN ), 'forminator' );
90
  }
91
 
@@ -114,11 +114,11 @@ class Forminator_Admin {
114
 
115
  //TODO: remove this after converted to JS
116
  $addons = Forminator_Addon_Loader::get_instance()->get_addons()->to_array();
117
- foreach ($addons as $slug => $addon_array) {
118
- $addon_class = forminator_get_addon($slug);
119
 
120
- if ($addon_class && is_callable( array( $addon_class, 'admin_hook_html_version' ))) {
121
- call_user_func( array( $addon_class, 'admin_hook_html_version' ));
122
  }
123
  }
124
 
@@ -176,7 +176,7 @@ class Forminator_Admin {
176
  public function has_stripe_forms() {
177
  $forms = Forminator_Custom_Form_Model::model()->get_models_by_field( 'stripe-1' );
178
 
179
- if( count( $forms ) > 0 ) {
180
  return true;
181
  }
182
 
@@ -304,7 +304,7 @@ class Forminator_Admin {
304
  e.preventDefault();
305
 
306
  var $notice = jQuery( e.currentTarget ).closest( '.forminator-notice' );
307
- var ajaxUrl = '<?php echo forminator_ajax_url(); ?>';
308
 
309
  jQuery.post(
310
  ajaxUrl,
@@ -349,82 +349,82 @@ class Forminator_Admin {
349
  return;
350
  }
351
 
352
- $notice_success = get_option( 'forminator_rating_success', false );
353
  $notice_dismissed = get_option( 'forminator_rating_dismissed', false );
354
 
355
  if ( $notice_dismissed || $notice_success ) {
356
- return;
357
  }
358
 
359
  $published_modules = forminator_total_forms( 'publish' );
360
- $publish_later = get_option( 'forminator_publish_rating_later', false );
361
- $publish_later_dismiss = get_option( 'forminator_publish_rating_later_dismiss', false );
362
 
363
- if ( ( ( 5 < $published_modules && 10 >= $published_modules ) && ! $publish_later ) || ( 10 < $published_modules && ! $publish_later_dismiss ) ) {
364
 
365
- $milestone = ( 10 >= $published_modules ) ? 5 : 10;
366
  ?>
367
 
368
- <div id="forminator-free-publish-notice" class="forminator-rating-notice notice notice-info fui-wordpress-notice" data-nonce="<?php echo esc_attr( wp_create_nonce( 'forminator_dismiss_notification' ) ); ?>">
369
 
370
- <p style="color: #72777C; line-height: 22px;"><?php printf( __( 'Awesome! You\'ve published more than %d modules with Forminator. Hope you are enjoying it so far. We have spent countless hours developing this free plugin for you, and we would really appreciate it if you could drop us a rating on wp.org to help us spread the word and boost our motivation.', Forminator::DOMAIN ), $milestone ); ?></p>
371
 
372
- <p>
373
- <a type="button" href="#" target="_blank" class="button button-primary button-large" data-prop="forminator_rating_success"><?php esc_html_e( 'Rate Forminator', Forminator::DOMAIN ); ?></a>
374
 
375
- <button type="button" class="button button-large" style="margin-left: 11px;" data-prop="<?php echo 10 > $published_modules ? 'forminator_publish_rating_later' : 'forminator_publish_rating_later_dismiss'; ?>"><?php esc_html_e( 'Maybe later', Forminator::DOMAIN ); ?></button>
376
 
377
- <a href="#" class="dismiss" style="margin-left: 11px; color: #555; line-height: 16px; font-weight: 500; text-decoration: none;" data-prop="forminator_rating_dismissed"><?php esc_html_e( 'No Thanks', Forminator::DOMAIN ); ?></a>
378
- </p>
379
 
380
  </div>
381
 
382
- <?php } else {
383
 
384
  $install_date = get_site_option( 'forminator_free_install_date' );
385
 
386
  if ( $install_date && current_time( 'timestamp' ) > strtotime( '+30 days', $install_date ) && ! $publish_later && ! $publish_later_dismiss ) { ?>
387
 
388
- <div id="forminator-free-usage-notice" class="forminator-rating-notice notice notice-info fui-wordpress-notice" data-nonce="<?php echo esc_attr( wp_create_nonce( 'forminator_dismiss_notification' ) ); ?>">
389
 
390
- <p style="color: #72777C; line-height: 22px;"><?php esc_html_e( 'Excellent! You\'ve been using Forminator for over a month. Hope you are enjoying it so far. We have spent countless hours developing this free plugin for you, and we would really appreciate it if you could drop us a rating on wp.org to help us spread the word and boost our motivation.', Forminator::DOMAIN ); ?></p>
391
 
392
- <p>
393
- <a type="button" href="#" target="_blank" class="button button-primary button-large" data-prop="forminator_rating_success"><?php esc_html_e( 'Rate Forminator', Forminator::DOMAIN ); ?></a>
394
 
395
- <a href="#" class="dismiss" style="margin-left: 11px; color: #555; line-height: 16px; font-weight: 500; text-decoration: none;" data-prop="forminator_rating_dismissed"><?php esc_html_e( 'No Thanks', Forminator::DOMAIN ); ?></a>
396
- </p>
397
 
398
  </div>
399
 
400
  <?php
401
  }
402
- }
403
  ?>
404
 
405
  <script type="text/javascript">
406
- jQuery( '.forminator-rating-notice a, .forminator-rating-notice button' ).on('click', function (e) {
407
- e.preventDefault();
408
-
409
- var $notice = jQuery(e.currentTarget).closest('.forminator-rating-notice'),
410
- prop = jQuery(this).data('prop'),
411
- ajaxUrl = '<?php echo forminator_ajax_url(); ?>';
412
-
413
- if ('forminator_rating_success' === prop) {
414
- window.open('https://wordpress.org/support/plugin/forminator/reviews/#new-post', '_blank');
415
- }
416
-
417
- jQuery.post(
418
- ajaxUrl,
419
- {
420
- action: 'forminator_dismiss_notification',
421
- prop: prop,
422
- _ajax_nonce: $notice.data('nonce')
423
- }
424
- ).always(function () {
425
- $notice.hide();
426
- });
427
- });
428
  </script>
429
 
430
  <?php }
81
  */
82
  public function add_dashboard_page() {
83
  $title = __( 'Forminator', Forminator::DOMAIN );
84
+ if ( FORMINATOR_PRO ) {
85
  $title = __( 'Forminator Pro', Forminator::DOMAIN );
86
  }
87
 
88
+ $this->pages['forminator'] = new Forminator_Dashboard_Page( 'forminator', 'dashboard', $title, $title, false, false );
89
  $this->pages['forminator-dashboard'] = new Forminator_Dashboard_Page( 'forminator', 'dashboard', __( 'Forminator Dashboard', Forminator::DOMAIN ), __( 'Dashboard', Forminator::DOMAIN ), 'forminator' );
90
  }
91
 
114
 
115
  //TODO: remove this after converted to JS
116
  $addons = Forminator_Addon_Loader::get_instance()->get_addons()->to_array();
117
+ foreach ( $addons as $slug => $addon_array ) {
118
+ $addon_class = forminator_get_addon( $slug );
119
 
120
+ if ( $addon_class && is_callable( array( $addon_class, 'admin_hook_html_version' ) ) ) {
121
+ call_user_func( array( $addon_class, 'admin_hook_html_version' ) );
122
  }
123
  }
124
 
176
  public function has_stripe_forms() {
177
  $forms = Forminator_Custom_Form_Model::model()->get_models_by_field( 'stripe-1' );
178
 
179
+ if ( count( $forms ) > 0 ) {
180
  return true;
181
  }
182
 
304
  e.preventDefault();
305
 
306
  var $notice = jQuery( e.currentTarget ).closest( '.forminator-notice' );
307
+ var ajaxUrl = '<?php echo forminator_ajax_url();// phpcs:ignore ?>';
308
 
309
  jQuery.post(
310
  ajaxUrl,
349
  return;
350
  }
351
 
352
+ $notice_success = get_option( 'forminator_rating_success', false );
353
  $notice_dismissed = get_option( 'forminator_rating_dismissed', false );
354
 
355
  if ( $notice_dismissed || $notice_success ) {
356
+ return;
357
  }
358
 
359
  $published_modules = forminator_total_forms( 'publish' );
360
+ $publish_later = get_option( 'forminator_publish_rating_later', false );
361
+ $publish_later_dismiss = get_option( 'forminator_publish_rating_later_dismiss', false );
362
 
363
+ if ( ( ( 5 < $published_modules && 10 >= $published_modules ) && ! $publish_later ) || ( 10 < $published_modules && ! $publish_later_dismiss ) ) {
364
 
365
+ $milestone = ( 10 >= $published_modules ) ? 5 : 10;
366
  ?>
367
 
368
+ <div id="forminator-free-publish-notice" class="forminator-rating-notice notice notice-info fui-wordpress-notice" data-nonce="<?php echo esc_attr( wp_create_nonce( 'forminator_dismiss_notification' ) ); ?>">
369
 
370
+ <p style="color: #72777C; line-height: 22px;"><?php printf( __( 'Awesome! You\'ve published more than %d modules with Forminator. Hope you are enjoying it so far. We have spent countless hours developing this free plugin for you, and we would really appreciate it if you could drop us a rating on wp.org to help us spread the word and boost our motivation.', Forminator::DOMAIN ), $milestone ); ?></p>
371
 
372
+ <p>
373
+ <a type="button" href="#" target="_blank" class="button button-primary button-large" data-prop="forminator_rating_success"><?php esc_html_e( 'Rate Forminator', Forminator::DOMAIN ); ?></a>
374
 
375
+ <button type="button" class="button button-large" style="margin-left: 11px;" data-prop="<?php echo 10 > $published_modules ? 'forminator_publish_rating_later' : 'forminator_publish_rating_later_dismiss'; ?>"><?php esc_html_e( 'Maybe later', Forminator::DOMAIN ); ?></button>
376
 
377
+ <a href="#" class="dismiss" style="margin-left: 11px; color: #555; line-height: 16px; font-weight: 500; text-decoration: none;" data-prop="forminator_rating_dismissed"><?php esc_html_e( 'No Thanks', Forminator::DOMAIN ); ?></a>
378
+ </p>
379
 
380
  </div>
381
 
382
+ <?php } else {
383
 
384
  $install_date = get_site_option( 'forminator_free_install_date' );
385
 
386
  if ( $install_date && current_time( 'timestamp' ) > strtotime( '+30 days', $install_date ) && ! $publish_later && ! $publish_later_dismiss ) { ?>
387
 
388
+ <div id="forminator-free-usage-notice" class="forminator-rating-notice notice notice-info fui-wordpress-notice" data-nonce="<?php echo esc_attr( wp_create_nonce( 'forminator_dismiss_notification' ) ); ?>">
389
 
390
+ <p style="color: #72777C; line-height: 22px;"><?php esc_html_e( 'Excellent! You\'ve been using Forminator for over a month. Hope you are enjoying it so far. We have spent countless hours developing this free plugin for you, and we would really appreciate it if you could drop us a rating on wp.org to help us spread the word and boost our motivation.', Forminator::DOMAIN ); ?></p>
391
 
392
+ <p>
393
+ <a type="button" href="#" target="_blank" class="button button-primary button-large" data-prop="forminator_rating_success"><?php esc_html_e( 'Rate Forminator', Forminator::DOMAIN ); ?></a>
394
 
395
+ <a href="#" class="dismiss" style="margin-left: 11px; color: #555; line-height: 16px; font-weight: 500; text-decoration: none;" data-prop="forminator_rating_dismissed"><?php esc_html_e( 'No Thanks', Forminator::DOMAIN ); ?></a>
396
+ </p>
397
 
398
  </div>
399
 
400
  <?php
401
  }
402
+ }
403
  ?>
404
 
405
  <script type="text/javascript">
406
+ jQuery( '.forminator-rating-notice a, .forminator-rating-notice button' ).on('click', function (e) {
407
+ e.preventDefault();
408
+
409
+ var $notice = jQuery(e.currentTarget).closest('.forminator-rating-notice'),
410
+ prop = jQuery(this).data('prop'),
411
+ ajaxUrl = '<?php echo forminator_ajax_url(); ?>';
412
+
413
+ if ('forminator_rating_success' === prop) {
414
+ window.open('https://wordpress.org/support/plugin/forminator/reviews/#new-post', '_blank');
415
+ }
416
+
417
+ jQuery.post(
418
+ ajaxUrl,
419
+ {
420
+ action: 'forminator_dismiss_notification',
421
+ prop: prop,
422
+ _ajax_nonce: $notice.data('nonce')
423
+ }
424
+ ).always(function () {
425
+ $notice.hide();
426
+ });
427
+ });
428
  </script>
429
 
430
  <?php }
admin/locale.php CHANGED
@@ -1,11 +1,13 @@
1
  <?php
2
  /* THIS IS A GENERATED FILE. DO NOT EDIT DIRECTLY. */
3
  $forminator_admin_locale = array(
4
- "Appearance" => array( null, __("Appearance", "forminator" ), ), // src/form/components/appearance.js:74
5
- "Fields" => array( null, __("Fields", "forminator" ), ), // src/form/components/appearance.js:102
6
- "Behaviour" => array( null, __("Behaviour", "forminator" ), ), // src/form/components/appearance.js:110
 
 
7
  "Colors" => array( null, __("Colors", "forminator" ), ), // src/form/components/appearance/colors.js:169
8
- "Adjust de default colour combinations to match your theme styling." => array( null, __("Adjust de default colour combinations to match your theme styling.", "forminator" ), ), // src/form/components/appearance/colors.js:170
9
  "Use Default Colors" => array( null, __("Use Default Colors", "forminator" ), ), // src/form/components/appearance/colors.js:184
10
  "Custom" => array( null, __("Custom", "forminator" ), ), // src/form/components/appearance/colors.js:187
11
  "Element" => array( null, __("Element", "forminator" ), ), // src/form/components/appearance/colors.js:192
@@ -36,41 +38,41 @@ $forminator_admin_locale = array(
36
  "Container" => array( null, __("Container", "forminator" ), ), // src/form/components/appearance/colors/calendar-basics.js:22
37
  "Border" => array( null, __("Border", "forminator" ), ), // src/form/components/appearance/colors/calendar-basics.js:28
38
  "Header background" => array( null, __("Header background", "forminator" ), ), // src/form/components/appearance/colors/calendar-basics.js:29
39
- "Background" => array( null, __("Background", "forminator" ), ), // src/form/components/appearance/colors/calendar-basics.js:37
40
- "Main background" => array( null, __("Main background", "forminator" ), ), // src/form/components/appearance/colors/calendar-basics.js:38
41
- "Navigation" => array( null, __("Navigation", "forminator" ), ), // src/form/components/appearance/colors/calendar-basics.js:46
42
- "Arrows background" => array( null, __("Arrows background", "forminator" ), ), // src/form/components/appearance/colors/calendar-basics.js:51
43
- "Arrows color" => array( null, __("Arrows color", "forminator" ), ), // src/form/components/appearance/colors/calendar-basics.js:58
44
- "Color" => array( null, __("Color", "forminator" ), ), // src/form/components/appearance/colors/calendar-basics.js:84
45
  "Default" => array( null, __("Default", "forminator" ), ), // src/form/components/appearance/colors/calendar-table.js:22
46
  "Table head color" => array( null, __("Table head color", "forminator" ), ), // src/form/components/appearance/colors/calendar-table.js:27
47
- "Table cell border" => array( null, __("Table cell border", "forminator" ), ), // src/form/components/appearance/colors/calendar-table.js:34
48
- "Table cell BG" => array( null, __("Table cell BG", "forminator" ), ), // src/form/components/appearance/colors/calendar-table.js:42
49
- "Table cell color" => array( null, __("Table cell color", "forminator" ), ), // src/form/components/appearance/colors/calendar-table.js:49
50
- "Hover" => array( null, __("Hover", "forminator" ), ), // src/form/components/appearance/colors/calendar-table.js:57
51
  "Active" => array( null, __("Active", "forminator" ), ), // src/form/components/appearance/colors/calendar-table.js:86
52
- "Current" => array( null, __("Current", "forminator" ), ), // src/form/components/appearance/colors/calendar-table.js:115
53
  "Border color" => array( null, __("Border color", "forminator" ), ), // src/form/components/appearance/colors/dropdown-search.js:23
54
- "Background color" => array( null, __("Background color", "forminator" ), ), // src/form/components/appearance/colors/dropdown-search.js:30
55
- "Text color" => array( null, __("Text color", "forminator" ), ), // src/form/components/appearance/colors/dropdown-search.js:36
56
  "Container border" => array( null, __("Container border", "forminator" ), ), // src/form/components/appearance/colors/dropdown.js:33
57
- "Container BG" => array( null, __("Container BG", "forminator" ), ), // src/form/components/appearance/colors/dropdown.js:40
58
- "Option color" => array( null, __("Option color", "forminator" ), ), // src/form/components/appearance/colors/dropdown.js:46
59
- "Option background" => array( null, __("Option background", "forminator" ), ), // src/form/components/appearance/colors/dropdown.js:58
60
- "Selected" => array( null, __("Selected", "forminator" ), ), // src/form/components/appearance/colors/dropdown.js:69
61
  "Label" => array( null, __("Label", "forminator" ), ), // src/form/components/appearance/colors/fields-basics.js:18
62
  "Required asterisk" => array( null, __("Required asterisk", "forminator" ), ), // src/form/components/appearance/colors/fields-basics.js:24
63
  "Description" => array( null, __("Description", "forminator" ), ), // src/form/components/appearance/colors/fields-basics.js:30
64
  "Error message BG" => array( null, __("Error message BG", "forminator" ), ), // src/form/components/appearance/colors/fields-basics.js:37
65
- "Error message color" => array( null, __("Error message color", "forminator" ), ), // src/form/components/appearance/colors/fields-basics.js:45
66
- "Global error color" => array( null, __("Global error color", "forminator" ), ), // src/form/components/appearance/colors/fields-basics.js:46
67
- "This color will be used when fields throw an error as text color, border color, etc." => array( null, __("This color will be used when fields throw an error as text color, border color, etc.", "forminator" ), ), // src/form/components/appearance/colors/fields-basics.js:49
68
  "Icon color" => array( null, __("Icon color", "forminator" ), ), // src/form/components/appearance/colors/file-delete.js:36
69
  "Focus" => array( null, __("Focus", "forminator" ), ), // src/form/components/appearance/colors/file-delete.js:60
70
  "Suffix color" => array( null, __("Suffix color", "forminator" ), ), // src/form/components/appearance/colors/inputs-extra.js:48
71
  "Only Stripe card icon will show this color variation." => array( null, __("Only Stripe card icon will show this color variation.", "forminator" ), ), // src/form/components/appearance/colors/inputs-extra.js:96
72
- "Placeholder" => array( null, __("Placeholder", "forminator" ), ), // src/form/components/appearance/colors/inputs.js:42
73
- "Error" => array( null, __("Error", "forminator" ), ), // src/form/components/appearance/colors/inputs.js:97
74
  "Option border" => array( null, __("Option border", "forminator" ), ), // src/form/components/appearance/colors/multi-select.js:32
75
  "Label color" => array( null, __("Label color", "forminator" ), ), // src/form/components/appearance/colors/pagination-back.js:33
76
  "Progress bar BG" => array( null, __("Progress bar BG", "forminator" ), ), // src/form/components/appearance/colors/pagination-progress.js:24
@@ -80,7 +82,7 @@ $forminator_admin_locale = array(
80
  "Page number color" => array( null, __("Page number color", "forminator" ), ), // src/form/components/appearance/colors/pagination-steps.js:95
81
  "Current state colors" => array( null, __("Current state colors", "forminator" ), ), // src/form/components/appearance/colors/pagination-steps.js:106
82
  "Footer border color" => array( null, __("Footer border color", "forminator" ), ), // src/form/components/appearance/colors/pagination.js:15
83
- "Checked" => array( null, __("Checked", "forminator" ), ), // src/form/components/appearance/colors/radio.js:46
84
  "Title color" => array( null, __("Title color", "forminator" ), ), // src/form/components/appearance/colors/section.js:15
85
  "Subtitle color" => array( null, __("Subtitle color", "forminator" ), ), // src/form/components/appearance/colors/section.js:19
86
  "Custom CSS" => array( null, __("Custom CSS", "forminator" ), ), // src/form/components/appearance/custom-css.js:16
@@ -126,7 +128,7 @@ $forminator_admin_locale = array(
126
  "Solid" => array( null, __("Solid", "forminator" ), ), // src/form/components/appearance/form-container/border-custom.js:44
127
  "Dashed" => array( null, __("Dashed", "forminator" ), ), // src/form/components/appearance/form-container/border-custom.js:47
128
  "Dotted" => array( null, __("Dotted", "forminator" ), ), // src/form/components/appearance/form-container/border-custom.js:50
129
- "Note: Set the colour of the border in the Colors settings area above." => array( null, __("Note: Set the colour of the border in the Colors settings area above.", "forminator" ), ), // src/form/components/appearance/form-container/border-custom.js:58
130
  "Top" => array( null, __("Top", "forminator" ), ), // src/form/components/appearance/form-container/padding-custom.js:20
131
  "Bottom" => array( null, __("Bottom", "forminator" ), ), // src/form/components/appearance/form-container/padding-custom.js:29
132
  "Left" => array( null, __("Left", "forminator" ), ), // src/form/components/appearance/form-container/padding-custom.js:38
@@ -144,7 +146,7 @@ $forminator_admin_locale = array(
144
  "Show" => array( null, __("Show", "forminator" ), ), // src/form/components/appearance/pagination.js:63
145
  "Progress Bar" => array( null, __("Progress Bar", "forminator" ), ), // src/form/components/appearance/pagination.js:72
146
  "Steps" => array( null, __("Steps", "forminator" ), ), // src/form/components/appearance/pagination.js:78
147
- "Email Notifications" => array( null, __("Email Notifications", "forminator" ), ), // src/form/components/behaviour.js:75
148
  "Form does not have fields that can be autofilled." => array( null, __("Form does not have fields that can be autofilled.", "forminator" ), ), // src/form/components/behaviour/autofill.js:61
149
  "Autofill" => array( null, __("Autofill", "forminator" ), ), // src/form/components/behaviour/autofill.js:159
150
  "If the user filling out the form is logged in, we can auto-fill fields with any available data." => array( null, __("If the user filling out the form is logged in, we can auto-fill fields with any available data.", "forminator" ), ), // src/form/components/behaviour/autofill.js:161
@@ -155,7 +157,7 @@ $forminator_admin_locale = array(
155
  "No" => array( null, __("No", "forminator" ), ), // src/form/components/behaviour/autofill.js:234
156
  "Yes" => array( null, __("Yes", "forminator" ), ), // src/form/components/behaviour/autofill.js:237
157
  "Lifespan" => array( null, __("Lifespan", "forminator" ), ), // src/form/components/behaviour/lifespan.js:17
158
- "By default this form will always be available for submissions. however you can lock down if need be." => array( null, __("By default this form will always be available for submissions. however you can lock down if need be.", "forminator" ), ), // src/form/components/behaviour/lifespan.js:20
159
  "Expiry" => array( null, __("Expiry", "forminator" ), ), // src/form/components/behaviour/lifespan.js:31
160
  "Date" => array( null, __("Date", "forminator" ), ), // src/form/components/behaviour/lifespan.js:46
161
  "20 April 2018" => array( null, __("20 April 2018", "forminator" ), ), // src/form/components/behaviour/lifespan.js:49
@@ -173,52 +175,53 @@ $forminator_admin_locale = array(
173
  "Enabling this feature will load the form via AJAX after the page has loaded up, effectively speeding up your page load time. This method can also (in most cases) avoid page caching issues with your form." => array( null, __("Enabling this feature will load the form via AJAX after the page has loaded up, effectively speeding up your page load time. This method can also (in most cases) avoid page caching issues with your form.", "forminator" ), ), // src/form/components/behaviour/render.js:23
174
  "Prevent page caching on form pages" => array( null, __("Prevent page caching on form pages", "forminator" ), ), // src/form/components/behaviour/render.js:34
175
  "Page caching plugins serve a static HTML version of the page which can cause issues to your dynamic forms. By enabling this, we'll use {{strong}}DONOTCACHEPAGE{{/strong}} constant to prevent pages with this form on it from being cached." => array( null, __("Page caching plugins serve a static HTML version of the page which can cause issues to your dynamic forms. By enabling this, we'll use {{strong}}DONOTCACHEPAGE{{/strong}} constant to prevent pages with this form on it from being cached.", "forminator" ), ), // src/form/components/behaviour/render.js:35
176
- "Security" => array( null, __("Security", "forminator" ), ), // src/form/components/behaviour/security.js:13
177
- "Added layers of security to prevent spam submissions." => array( null, __("Added layers of security to prevent spam submissions.", "forminator" ), ), // src/form/components/behaviour/security.js:15
178
- "Enable Honeypot protection" => array( null, __("Enable Honeypot protection", "forminator" ), ), // src/form/components/behaviour/security.js:23
179
- "Enabling this feature tricks spam bots by giving them a hidden challenge only bots will see. If the bot tries the challenge we know it's not a human and prevent the form being submitted." => array( null, __("Enabling this feature tricks spam bots by giving them a hidden challenge only bots will see. If the bot tries the challenge we know it's not a human and prevent the form being submitted.", "forminator" ), ), // src/form/components/behaviour/security.js:25
180
- "Enable logged in submission only" => array( null, __("Enable logged in submission only", "forminator" ), ), // src/form/components/behaviour/security.js:34
181
- "Lock down your form submissions to registered users only." => array( null, __("Lock down your form submissions to registered users only.", "forminator" ), ), // src/form/components/behaviour/security.js:36
182
- "Submission Behaviour" => array( null, __("Submission Behaviour", "forminator" ), ), // src/form/components/behaviour/submission.js:29
183
- "Choose what you want to happen after your visitor has successfully submitted this form." => array( null, __("Choose what you want to happen after your visitor has successfully submitted this form.", "forminator" ), ), // src/form/components/behaviour/submission.js:32
184
- "Method" => array( null, __("Method", "forminator" ), ), // src/form/components/behaviour/submission.js:44
185
- "Choose whether you want to use AJAX to send this form without reloading the page, or use the more traditional method of reloading the page." => array( null, __("Choose whether you want to use AJAX to send this form without reloading the page, or use the more traditional method of reloading the page.", "forminator" ), ), // src/form/components/behaviour/submission.js:45
186
- "Ajax" => array( null, __("Ajax", "forminator" ), ), // src/form/components/behaviour/submission.js:53
187
- "Ajax method, when used with the Stripe field, will hide your form after the successful submission and show your inline success message only. The form will be available again when the page is reloaded." => array( null, __("Ajax method, when used with the Stripe field, will hide your form after the successful submission and show your inline success message only. The form will be available again when the page is reloaded.", "forminator" ), ), // src/form/components/behaviour/submission.js:58
188
- "Page Reload" => array( null, __("Page Reload", "forminator" ), ), // src/form/components/behaviour/submission.js:70
189
- "After submission" => array( null, __("After submission", "forminator" ), ), // src/form/components/behaviour/submission.js:76
190
- "Choose what happens after a user successfully submits your form." => array( null, __("Choose what happens after a user successfully submits your form.", "forminator" ), ), // src/form/components/behaviour/submission.js:78
191
- "Inline Message" => array( null, __("Inline Message", "forminator" ), ), // src/form/components/behaviour/submission.js:86
192
- "Display a success message after form submitted." => array( null, __("Display a success message after form submitted.", "forminator" ), ), // src/form/components/behaviour/submission.js:92
193
- "Auto-close success message after" => array( null, __("Auto-close success message after", "forminator" ), ), // src/form/components/behaviour/submission.js:119
194
- "E.g. 5" => array( null, __("E.g. 5", "forminator" ), ), // src/form/components/behaviour/submission.js:126
195
- "seconds." => array( null, __("seconds.", "forminator" ), ), // src/form/components/behaviour/submission.js:136
196
- "Redirect user to a URL" => array( null, __("Redirect user to a URL", "forminator" ), ), // src/form/components/behaviour/submission.js:147
197
- "Redirect URL" => array( null, __("Redirect URL", "forminator" ), ), // src/form/components/behaviour/submission.js:152
198
- "https://www.mywebsite.com" => array( null, __("https://www.mywebsite.com", "forminator" ), ), // src/form/components/behaviour/submission.js:153
199
- "URL Redirect" => array( null, __("URL Redirect", "forminator" ), ), // src/form/components/behaviour/submission.js:157
200
  "Redirection Option" => array( null, __("Redirection Option", "forminator" ), ), // src/form/components/behaviour/submission.js:167
201
- "Redirect on the same tab" => array( null, __("Redirect on the same tab", "forminator" ), ), // src/form/components/behaviour/submission.js:172
202
- "Redirect on new tab and show thank you message on form page" => array( null, __("Redirect on new tab and show thank you message on form page", "forminator" ), ), // src/form/components/behaviour/submission.js:173
203
- "Redirect on new tab and hide form on the form page" => array( null, __("Redirect on new tab and hide form on the form page", "forminator" ), ), // src/form/components/behaviour/submission.js:174
204
- "Hide form" => array( null, __("Hide form", "forminator" ), ), // src/form/components/behaviour/submission.js:184
205
- "Submit Message" => array( null, __("Submit Message", "forminator" ), ), // src/form/components/behaviour/submission.js:196
206
- "Validation" => array( null, __("Validation", "forminator" ), ), // src/form/components/behaviour/submission.js:244
207
- "For fields that you’ve chosen to validate, choose how you want the validation to behave. On submission will run validation checks when the user submits the form using Ajax (recommended). The Live method will check fields at the same time as the user fills them out. Serverside does the validation using PHP and returns any error messages after a page reload." => array( null, __("For fields that you’ve chosen to validate, choose how you want the validation to behave. On submission will run validation checks when the user submits the form using Ajax (recommended). The Live method will check fields at the same time as the user fills them out. Serverside does the validation using PHP and returns any error messages after a page reload.", "forminator" ), ), // src/form/components/behaviour/submission.js:245
208
- "On Submit" => array( null, __("On Submit", "forminator" ), ), // src/form/components/behaviour/submission.js:255
209
- "Server Side" => array( null, __("Server Side", "forminator" ), ), // src/form/components/behaviour/submission.js:256
210
- "Enable inline validation (as user types)" => array( null, __("Enable inline validation (as user types)", "forminator" ), ), // src/form/components/behaviour/submission.js:260
211
- "Choose whether you want to show a loader on your form until it is submitted. We highly recommend using this on long forms or forms with payment field since they may take a few seconds to submit." => array( null, __("Choose whether you want to show a loader on your form until it is submitted. We highly recommend using this on long forms or forms with payment field since they may take a few seconds to submit.", "forminator" ), ), // src/form/components/behaviour/submission.js:270
212
- "Show Loader" => array( null, __("Show Loader", "forminator" ), ), // src/form/components/behaviour/submission.js:280
213
- "E.g. Submitting..." => array( null, __("E.g. Submitting...", "forminator" ), ), // src/form/components/behaviour/submission.js:285
214
- "Choose the text to show on the right of loading icon" => array( null, __("Choose the text to show on the right of loading icon", "forminator" ), ), // src/form/components/behaviour/submission.js:288
215
- "null" => array( null, __("null", "forminator" ), ), // src/form/components/builder/field.js:637
216
- "more condition(s)" => array( null, __("more condition(s)", "forminator" ), ), // src/form/components/builder/field.js:684
217
- "if" => array( null, __("if", "forminator" ), ), // src/form/components/builder/field.js:689
218
- "Field options" => array( null, __("Field options", "forminator" ), ), // src/form/components/builder/field.js:802
219
- "Edit Field" => array( null, __("Edit Field", "forminator" ), ), // src/form/components/builder/field.js:813
220
- "Duplicate" => array( null, __("Duplicate", "forminator" ), ), // src/form/components/builder/field.js:821
221
- "Delete" => array( null, __("Delete", "forminator" ), ), // src/form/components/builder/field.js:828
 
 
 
 
 
222
  "Insert Fields" => array( null, __("Insert Fields", "forminator" ), ), // src/form/components/builder/insert-fields.js:17
223
  " Insert Fields" => array( null, __(" Insert Fields", "forminator" ), ), // src/form/components/builder/insert-fields.js:43
224
  "A form without fields isn’t going to be very useful… Add your first field above!" => array( null, __("A form without fields isn’t going to be very useful… Add your first field above!", "forminator" ), ), // src/form/components/builder/insert-fields.js:58
@@ -276,7 +279,7 @@ $forminator_admin_locale = array(
276
  "0.9" => array( null, __("0.9", "forminator" ), ), // src/form/components/fields/captcha.js:199
277
  "1.0" => array( null, __("1.0", "forminator" ), ), // src/form/components/fields/captcha.js:200
278
  "Language" => array( null, __("Language", "forminator" ), ), // src/form/components/fields/captcha.js:219
279
- "By default, we will use the language choosen in the global reCAPTCHA settings. However, you can choose a different language for this reCAPTCHA." => array( null, __("By default, we will use the language choosen in the global reCAPTCHA settings. However, you can choose a different language for this reCAPTCHA.", "forminator" ), ), // src/form/components/fields/captcha.js:224
280
  "Automatic" => array( null, __("Automatic", "forminator" ), ), // src/form/components/fields/captcha.js:237
281
  "Error Message" => array( null, __("Error Message", "forminator" ), ), // src/form/components/fields/captcha.js:255
282
  "Choose the error message you want to display on your form when reCAPTCHA verification fails." => array( null, __("Choose the error message you want to display on your form when reCAPTCHA verification fails.", "forminator" ), ), // src/form/components/fields/captcha.js:260
@@ -362,6 +365,21 @@ $forminator_admin_locale = array(
362
  "Previous Button" => array( null, __("Previous Button", "forminator" ), ), // src/form/components/fields/pagination.js:49
363
  "Enter text" => array( null, __("Enter text", "forminator" ), ), // src/form/components/fields/pagination.js:50
364
  "Next Button" => array( null, __("Next Button", "forminator" ), ), // src/form/components/fields/pagination.js:55
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
365
  "In %s" => array( null, __("In %s", "forminator" ), ), // src/form/components/fields/paypal.js:49
366
  "You have not connected your PayPal account with Forminator. Connect your PayPal account {{link}}here{{/link}} and then come back to configure this field." => array( null, __("You have not connected your PayPal account with Forminator. Connect your PayPal account {{link}}here{{/link}} and then come back to configure this field.", "forminator" ), ), // src/form/components/fields/paypal.js:69
367
  "Mode of payment" => array( null, __("Mode of payment", "forminator" ), ), // src/form/components/fields/paypal.js:88
@@ -410,12 +428,9 @@ $forminator_admin_locale = array(
410
  "Elo" => array( null, __("Elo", "forminator" ), ), // src/form/components/fields/paypal.js:491
411
  "Hiper" => array( null, __("Hiper", "forminator" ), ), // src/form/components/fields/paypal.js:498
412
  "Debug Mode" => array( null, __("Debug Mode", "forminator" ), ), // src/form/components/fields/paypal.js:509
413
- "PayPal debug mode helps troubleshoot any issues. However, it`s recommended to disable this in production as it causes a significant increase in the script size and performance decrease." => array( null, __("PayPal debug mode helps troubleshoot any issues. However, it`s recommended to disable this in production as it causes a significant increase in the script size and performance decrease.", "forminator" ), ), // src/form/components/fields/paypal.js:516
414
  "Disable" => array( null, __("Disable", "forminator" ), ), // src/form/components/fields/paypal.js:531
415
  "Enable" => array( null, __("Enable", "forminator" ), ), // src/form/components/fields/paypal.js:532
416
- "Validate" => array( null, __("Validate", "forminator" ), ), // src/form/components/fields/phone.js:34
417
- "Make sure the user has filled out this field correctly and warn them when they haven't." => array( null, __("Make sure the user has filled out this field correctly and warn them when they haven't.", "forminator" ), ), // src/form/components/fields/phone.js:36
418
- "Validate Field" => array( null, __("Validate Field", "forminator" ), ), // src/form/components/fields/phone.js:55
419
  "Validation Type" => array( null, __("Validation Type", "forminator" ), ), // src/form/components/fields/phone.js:61
420
  "National" => array( null, __("National", "forminator" ), ), // src/form/components/fields/phone.js:64
421
  "International" => array( null, __("International", "forminator" ), ), // src/form/components/fields/phone.js:65
@@ -423,8 +438,6 @@ $forminator_admin_locale = array(
423
  "Limit to:" => array( null, __("Limit to:", "forminator" ), ), // src/form/components/fields/phone.js:73
424
  "10" => array( null, __("10", "forminator" ), ), // src/form/components/fields/phone.js:75
425
  "Select country" => array( null, __("Select country", "forminator" ), ), // src/form/components/fields/phone.js:84
426
- "Validation message" => array( null, __("Validation message", "forminator" ), ), // src/form/components/fields/phone.js:96
427
- "Enter validation message" => array( null, __("Enter validation message", "forminator" ), ), // src/form/components/fields/phone.js:98
428
  "Title" => array( null, __("Title", "forminator" ), ), // src/form/components/fields/postdata.js:24
429
  "Content" => array( null, __("Content", "forminator" ), ), // src/form/components/fields/postdata.js:29
430
  "Excerpt" => array( null, __("Excerpt", "forminator" ), ), // src/form/components/fields/postdata.js:34
@@ -443,7 +456,7 @@ $forminator_admin_locale = array(
443
  "Pending Review" => array( null, __("Pending Review", "forminator" ), ), // src/form/components/fields/postdata.js:293
444
  "Published" => array( null, __("Published", "forminator" ), ), // src/form/components/fields/postdata.js:296
445
  "Default author" => array( null, __("Default author", "forminator" ), ), // src/form/components/fields/postdata.js:309
446
- "By default well assign posts to users if theyre logged in, and fall back to the user specified below if youre allowing visitors to make posts. You can also override this to always assign posts to a specified user." => array( null, __("By default well assign posts to users if theyre logged in, and fall back to the user specified below if youre allowing visitors to make posts. You can also override this to always assign posts to a specified user.", "forminator" ), ), // src/form/components/fields/postdata.js:312
447
  "Always assign posts to this user" => array( null, __("Always assign posts to this user", "forminator" ), ), // src/form/components/fields/postdata.js:341
448
  "Taxonomies limits" => array( null, __("Taxonomies limits", "forminator" ), ), // src/form/components/fields/postdata.js:356
449
  "Choose whether to allow single or multiple categories or tags on this post." => array( null, __("Choose whether to allow single or multiple categories or tags on this post.", "forminator" ), ), // src/form/components/fields/postdata.js:359
@@ -460,74 +473,76 @@ $forminator_admin_locale = array(
460
  "Choose whether to allow this field to be used in calculations or not. The value used in calculations is the same as the input value of this field." => array( null, __("Choose whether to allow this field to be used in calculations or not. The value used in calculations is the same as the input value of this field.", "forminator" ), ), // src/form/components/fields/singlevalue.js:209
461
  "Credit / Debit Card" => array( null, __("Credit / Debit Card", "forminator" ), ), // src/form/components/fields/stripe.js:115
462
  "Choose your preferred language for the Stripe field. This will affect the placeholders language, and the card validation errors returned by the Stripe." => array( null, __("Choose your preferred language for the Stripe field. This will affect the placeholders language, and the card validation errors returned by the Stripe.", "forminator" ), ), // src/form/components/fields/stripe.js:140
463
- "Auto" => array( null, __("Auto", "forminator" ), ), // src/form/components/fields/stripe.js:144
464
- "English (en)" => array( null, __("English (en)", "forminator" ), ), // src/form/components/fields/stripe.js:145
465
- "Simplified Chinese (zh)" => array( null, __("Simplified Chinese (zh)", "forminator" ), ), // src/form/components/fields/stripe.js:146
466
- "Danish (da)" => array( null, __("Danish (da)", "forminator" ), ), // src/form/components/fields/stripe.js:147
467
- "Dutch (nl)" => array( null, __("Dutch (nl)", "forminator" ), ), // src/form/components/fields/stripe.js:148
468
- "Finnish (fi)" => array( null, __("Finnish (fi)", "forminator" ), ), // src/form/components/fields/stripe.js:149
469
- "French (fr)" => array( null, __("French (fr)", "forminator" ), ), // src/form/components/fields/stripe.js:150
470
- "German (de)" => array( null, __("German (de)", "forminator" ), ), // src/form/components/fields/stripe.js:151
471
- "Italian (it)" => array( null, __("Italian (it)", "forminator" ), ), // src/form/components/fields/stripe.js:152
472
- "Japanese (ja)" => array( null, __("Japanese (ja)", "forminator" ), ), // src/form/components/fields/stripe.js:153
473
- "Norwegian (no)" => array( null, __("Norwegian (no)", "forminator" ), ), // src/form/components/fields/stripe.js:154
474
- "Spanish (es)" => array( null, __("Spanish (es)", "forminator" ), ), // src/form/components/fields/stripe.js:155
475
- "Swedish (sv)" => array( null, __("Swedish (sv)", "forminator" ), ), // src/form/components/fields/stripe.js:156
476
- "Card icon" => array( null, __("Card icon", "forminator" ), ), // src/form/components/fields/stripe.js:167
477
- "Choose whether you want to show the card icon on the Stripe field." => array( null, __("Choose whether you want to show the card icon on the Stripe field.", "forminator" ), ), // src/form/components/fields/stripe.js:168
478
- "Postal code" => array( null, __("Postal code", "forminator" ), ), // src/form/components/fields/stripe.js:184
479
- "Choose whether you want to collect the postal code on the Stripe field." => array( null, __("Choose whether you want to collect the postal code on the Stripe field.", "forminator" ), ), // src/form/components/fields/stripe.js:185
480
- "Prefill (optional)" => array( null, __("Prefill (optional)", "forminator" ), ), // src/form/components/fields/stripe.js:204
481
- "If you are already collecting ZIP code on your form, you can pre-fill it on the Stripe field." => array( null, __("If you are already collecting ZIP code on your form, you can pre-fill it on the Stripe field.", "forminator" ), ), // src/form/components/fields/stripe.js:226
482
- "You have not connected your Stripe account with Forminator. Connect your Stripe account {{link}}here{{/link}} and then come back to configure this field." => array( null, __("You have not connected your Stripe account with Forminator. Connect your Stripe account {{link}}here{{/link}} and then come back to configure this field.", "forminator" ), ), // src/form/components/fields/stripe.js:251
483
- "We recommend using test mode to ensure the payments are working as expected and when you are ready to start collecting live payments, switch to Live payments mode." => array( null, __("We recommend using test mode to ensure the payments are working as expected and when you are ready to start collecting live payments, switch to Live payments mode.", "forminator" ), ), // src/form/components/fields/stripe.js:273
484
- "Test" => array( null, __("Test", "forminator" ), ), // src/form/components/fields/stripe.js:279
485
- "It's recommended to charge in your customers' currency to drive more sales and avoid foreign exchange fee to your customers. Read more about Stripe’s currency conversions {{link}}here{{/link}}." => array( null, __("It's recommended to charge in your customers' currency to drive more sales and avoid foreign exchange fee to your customers. Read more about Stripe’s currency conversions {{link}}here{{/link}}.", "forminator" ), ), // src/form/components/fields/stripe.js:288
486
- "Minimum amount required to process Stripe payments is equivalent to {{strong}}0.5 USD{{/strong}}." => array( null, __("Minimum amount required to process Stripe payments is equivalent to {{strong}}0.5 USD{{/strong}}.", "forminator" ), ), // src/form/components/fields/stripe.js:343
487
- "Payment Receipt" => array( null, __("Payment Receipt", "forminator" ), ), // src/form/components/fields/stripe.js:413
488
- "Choose whether you want Stripe to email a receipt to your customers on successful payment. Note that Stripe sends the email receipt only for live payments. {{link}}Customize email template{{/link}}." => array( null, __("Choose whether you want Stripe to email a receipt to your customers on successful payment. Note that Stripe sends the email receipt only for live payments. {{link}}Customize email template{{/link}}.", "forminator" ), ), // src/form/components/fields/stripe.js:421
489
- "Email address" => array( null, __("Email address", "forminator" ), ), // src/form/components/fields/stripe.js:450
490
- "E.g. john@doe.com" => array( null, __("E.g. john@doe.com", "forminator" ), ), // src/form/components/fields/stripe.js:452
491
- "Select an email field" => array( null, __("Select an email field", "forminator" ), ), // src/form/components/fields/stripe.js:454
492
- "Payment Details (optional)" => array( null, __("Payment Details (optional)", "forminator" ), ), // src/form/components/fields/stripe.js:479
493
- "You can add a statement decipher and a description to help you and your customers recongnizing the transactions made on this form." => array( null, __("You can add a statement decipher and a description to help you and your customers recongnizing the transactions made on this form.", "forminator" ), ), // src/form/components/fields/stripe.js:487
494
- "Statement decipher" => array( null, __("Statement decipher", "forminator" ), ), // src/form/components/fields/stripe.js:497
495
- "E.g. Company Name" => array( null, __("E.g. Company Name", "forminator" ), ), // src/form/components/fields/stripe.js:500
496
- "this is the business name your customers will see on their card statement." => array( null, __("this is the business name your customers will see on their card statement.", "forminator" ), ), // src/form/components/fields/stripe.js:503
497
- "Up to 22 characters only" => array( null, __("Up to 22 characters only", "forminator" ), ), // src/form/components/fields/stripe.js:508
498
- "Payment description" => array( null, __("Payment description", "forminator" ), ), // src/form/components/fields/stripe.js:515
499
- "Enter your payment description here" => array( null, __("Enter your payment description here", "forminator" ), ), // src/form/components/fields/stripe.js:516
500
- "This appears on your Stripe account and on the payment receipt sent to your customers." => array( null, __("This appears on your Stripe account and on the payment receipt sent to your customers.", "forminator" ), ), // src/form/components/fields/stripe.js:519
501
- "Card Validation" => array( null, __("Card Validation", "forminator" ), ), // src/form/components/fields/stripe.js:529
502
- "Note: Stripe field automatically validates the card as the user fills the card details regardless of the validation behaviour set on the Behaviours tab." => array( null, __("Note: Stripe field automatically validates the card as the user fills the card details regardless of the validation behaviour set on the Behaviours tab.", "forminator" ), ), // src/form/components/fields/stripe.js:535
503
- "Billing Details" => array( null, __("Billing Details", "forminator" ), ), // src/form/components/fields/stripe.js:547
504
- "If you are collection billing details on your forms, you can send that data to Stripe. The billing details will appear on your Stripe dashboard for each payment." => array( null, __("If you are collection billing details on your forms, you can send that data to Stripe. The billing details will appear on your Stripe dashboard for each payment.", "forminator" ), ), // src/form/components/fields/stripe.js:555
505
- "Customer name (optional)" => array( null, __("Customer name (optional)", "forminator" ), ), // src/form/components/fields/stripe.js:579
506
- "Select a name field" => array( null, __("Select a name field", "forminator" ), ), // src/form/components/fields/stripe.js:581
507
- "Customer email address (optional)" => array( null, __("Customer email address (optional)", "forminator" ), ), // src/form/components/fields/stripe.js:596
508
- "Select an name field" => array( null, __("Select an name field", "forminator" ), ), // src/form/components/fields/stripe.js:598
509
- "Billing address (optional)" => array( null, __("Billing address (optional)", "forminator" ), ), // src/form/components/fields/stripe.js:613
510
- "Select an address field" => array( null, __("Select an address field", "forminator" ), ), // src/form/components/fields/stripe.js:615
511
- "Meta Data" => array( null, __("Meta Data", "forminator" ), ), // src/form/components/fields/stripe.js:639
512
- "You can send custom meta data to Stripe. This would appear under the MetaData section of every payment. A maximun of 20 meta keys can be sent. The key name must be 20 characters or less, and the mapped data will be truncated to 500 characters as Stripe's requirements." => array( null, __("You can send custom meta data to Stripe. This would appear under the MetaData section of every payment. A maximun of 20 meta keys can be sent. The key name must be 20 characters or less, and the mapped data will be truncated to 500 characters as Stripe's requirements.", "forminator" ), ), // src/form/components/fields/stripe.js:647
513
- "MetaData" => array( null, __("MetaData", "forminator" ), ), // src/form/components/fields/stripe.js:688
514
- "Additional CSS Classes" => array( null, __("Additional CSS Classes", "forminator" ), ), // src/form/components/fields/stripe.js:704
515
- "Stripe automatically adds classes to the container DOM element based on the field state. However, you can customize them here. {{link}}Read more{{/link}}" => array( null, __("Stripe automatically adds classes to the container DOM element based on the field state. However, you can customize them here. {{link}}Read more{{/link}}", "forminator" ), ), // src/form/components/fields/stripe.js:707
516
- "Base class" => array( null, __("Base class", "forminator" ), ), // src/form/components/fields/stripe.js:723
517
- "Complete" => array( null, __("Complete", "forminator" ), ), // src/form/components/fields/stripe.js:731
518
- "Empty" => array( null, __("Empty", "forminator" ), ), // src/form/components/fields/stripe.js:739
519
- "Focused" => array( null, __("Focused", "forminator" ), ), // src/form/components/fields/stripe.js:747
520
- "Invalid" => array( null, __("Invalid", "forminator" ), ), // src/form/components/fields/stripe.js:755
521
- "Autofilled (Chrome and Safari only)" => array( null, __("Autofilled (Chrome and Safari only)", "forminator" ), ), // src/form/components/fields/stripe.js:763
522
  "Max characters" => array( null, __("Max characters", "forminator" ), ), // src/form/components/fields/text.js:80
523
  "By default the user can enter as many characters as they want. Use this setting to limit the number of characters the user can enter. Leave field blank to allow unlimited characters." => array( null, __("By default the user can enter as many characters as they want. Use this setting to limit the number of characters the user can enter. Leave field blank to allow unlimited characters.", "forminator" ), ), // src/form/components/fields/text.js:81
524
  "Character limit" => array( null, __("Character limit", "forminator" ), ), // src/form/components/fields/text.js:89
525
  "E.g. 100" => array( null, __("E.g. 100", "forminator" ), ), // src/form/components/fields/text.js:96
526
  "Characters" => array( null, __("Characters", "forminator" ), ), // src/form/components/fields/text.js:106
527
  "Words" => array( null, __("Words", "forminator" ), ), // src/form/components/fields/text.js:107
528
- "Content Editor" => array( null, __("Content Editor", "forminator" ), ), // src/form/components/fields/textarea.js:80
529
- "Enable TinyMCE editor to submit formatted text." => array( null, __("Enable TinyMCE editor to submit formatted text.", "forminator" ), ), // src/form/components/fields/textarea.js:81
530
- "Note: The query parameter’s value passed in URL should match with the selected time format." => array( null, __("Note: The query parameter’s value passed in URL should match with the selected time format.", "forminator" ), ), // src/form/components/fields/time.js:36
 
 
531
  "Number inputs" => array( null, __("Number inputs", "forminator" ), ), // src/form/components/fields/time.js:56
532
  "12 hour" => array( null, __("12 hour", "forminator" ), ), // src/form/components/fields/time.js:64
533
  "24 hour" => array( null, __("24 hour", "forminator" ), ), // src/form/components/fields/time.js:65
@@ -541,11 +556,14 @@ $forminator_admin_locale = array(
541
  "Use this feature to specify a default selected time." => array( null, __("Use this feature to specify a default selected time.", "forminator" ), ), // src/form/components/fields/time.js:208
542
  "AM" => array( null, __("AM", "forminator" ), ), // src/form/components/fields/time.js:260
543
  "PM" => array( null, __("PM", "forminator" ), ), // src/form/components/fields/time.js:261
544
- "Filesize limit" => array( null, __("Filesize limit", "forminator" ), ), // src/form/components/fields/upload.js:55
545
- "We've detected your server will all uploads up to %sMB in size currently. You can set a lower limit than this using the input below, however if you want uploads of more than %sMB you'll need to adjust this in your server PHP.ini settings." => array( null, __("We've detected your server will all uploads up to %sMB in size currently. You can set a lower limit than this using the input below, however if you want uploads of more than %sMB you'll need to adjust this in your server PHP.ini settings.", "forminator" ), ), // src/form/components/fields/upload.js:59
546
- "The file size you have entered exceeds what your current hosting settings are capped to. You need to increase your max filesize limit at the server level first." => array( null, __("The file size you have entered exceeds what your current hosting settings are capped to. You need to increase your max filesize limit at the server level first.", "forminator" ), ), // src/form/components/fields/upload.js:86
547
- "Show files in media library" => array( null, __("Show files in media library", "forminator" ), ), // src/form/components/fields/upload.js:105
548
- "Choose whether you want to show the files uploaded by your visitors using this field in your media library." => array( null, __("Choose whether you want to show the files uploaded by your visitors using this field in your media library.", "forminator" ), ), // src/form/components/fields/upload.js:109
 
 
 
549
  "Edit Form" => array( null, __("Edit Form", "forminator" ), ), // src/form/components/header.js:9
550
  "View Documentation" => array( null, __("View Documentation", "forminator" ), ), // src/form/components/header/documentation.js:14
551
  "Name your form" => array( null, __("Name your form", "forminator" ), ), // src/form/components/header/title.js:35
@@ -558,6 +576,29 @@ $forminator_admin_locale = array(
558
  "Applications" => array( null, __("Applications", "forminator" ), ), // src/form/components/integrations.js:138
559
  "You can send this form’s data to any of the connected third party apps. Connect to more apps on the {{link}}Integrations{{/link}} page." => array( null, __("You can send this form’s data to any of the connected third party apps. Connect to more apps on the {{link}}Integrations{{/link}} page.", "forminator" ), ), // src/form/components/integrations.js:139
560
  "Settings" => array( null, __("Settings", "forminator" ), ), // src/form/components/integrations.js:165
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
561
  "Unpublish" => array( null, __("Unpublish", "forminator" ), ), // src/form/components/meta/buttons.js:71
562
  "Save Draft" => array( null, __("Save Draft", "forminator" ), ), // src/form/components/meta/buttons.js:73
563
  "Update" => array( null, __("Update", "forminator" ), ), // src/form/components/meta/buttons.js:88
@@ -588,32 +629,35 @@ $forminator_admin_locale = array(
588
  "Please enter recipients" => array( null, __("Please enter recipients", "forminator" ), ), // src/form/components/modals/notification.js:200
589
  "Please select rule" => array( null, __("Please select rule", "forminator" ), ), // src/form/components/modals/notification.js:212
590
  "Please add email routing" => array( null, __("Please add email routing", "forminator" ), ), // src/form/components/modals/notification.js:217
591
- "Add Email Notification" => array( null, __("Add Email Notification", "forminator" ), ), // src/form/components/modals/notification.js:227
592
- "Email" => array( null, __("Email", "forminator" ), ), // src/form/components/modals/notification.js:252
593
- "Recipients" => array( null, __("Recipients", "forminator" ), ), // src/form/components/modals/notification.js:261
594
- "Advanced" => array( null, __("Advanced", "forminator" ), ), // src/form/components/modals/notification.js:270
595
- "Conditions" => array( null, __("Conditions", "forminator" ), ), // src/form/components/modals/notification.js:279
596
- "The label is to help you identify this email and won't appear anywhere in the email." => array( null, __("The label is to help you identify this email and won't appear anywhere in the email.", "forminator" ), ), // src/form/components/modals/notification.js:306
597
- "E.g. Sales Team Notification" => array( null, __("E.g. Sales Team Notification", "forminator" ), ), // src/form/components/modals/notification.js:311
598
- "E.g. New Form Submission" => array( null, __("E.g. New Form Submission", "forminator" ), ), // src/form/components/modals/notification.js:325
599
- "Subject" => array( null, __("Subject", "forminator" ), ), // src/form/components/modals/notification.js:328
600
- "Body" => array( null, __("Body", "forminator" ), ), // src/form/components/modals/notification.js:359
601
- "The default behavior is to send the email to the same recipients. If you want to send this email to different recipients conditionally, you can enable the email routing and change the recipients of this email based on the user input." => array( null, __("The default behavior is to send the email to the same recipients. If you want to send this email to different recipients conditionally, you can enable the email routing and change the recipients of this email based on the user input.", "forminator" ), ), // src/form/components/modals/notification.js:377
602
- "E.g. sales@website.com" => array( null, __("E.g. sales@website.com", "forminator" ), ), // src/form/components/modals/notification.js:411
603
- "Separate multiple emails with a comma" => array( null, __("Separate multiple emails with a comma", "forminator" ), ), // src/form/components/modals/notification.js:416
604
- "Email Routing" => array( null, __("Email Routing", "forminator" ), ), // src/form/components/modals/notification.js:436
605
- "Enter from name here" => array( null, __("Enter from name here", "forminator" ), ), // src/form/components/modals/notification.js:463
606
- "From Name" => array( null, __("From Name", "forminator" ), ), // src/form/components/modals/notification.js:464
607
- "Enter from email here" => array( null, __("Enter from email here", "forminator" ), ), // src/form/components/modals/notification.js:485
608
- "From Email" => array( null, __("From Email", "forminator" ), ), // src/form/components/modals/notification.js:486
609
- "Enter reply-to email here" => array( null, __("Enter reply-to email here", "forminator" ), ), // src/form/components/modals/notification.js:507
610
- "Reply-to Email" => array( null, __("Reply-to Email", "forminator" ), ), // src/form/components/modals/notification.js:508
611
- "Enter CC email here" => array( null, __("Enter CC email here", "forminator" ), ), // src/form/components/modals/notification.js:529
612
- "CC Emails" => array( null, __("CC Emails", "forminator" ), ), // src/form/components/modals/notification.js:530
613
- "Enter BCC email here" => array( null, __("Enter BCC email here", "forminator" ), ), // src/form/components/modals/notification.js:551
614
- "BCC Emails" => array( null, __("BCC Emails", "forminator" ), ), // src/form/components/modals/notification.js:552
615
- "Discard Changes" => array( null, __("Discard Changes", "forminator" ), ), // src/form/components/modals/notification.js:597
616
- "Add" => array( null, __("Add", "forminator" ), ), // src/form/components/modals/notification.js:609
 
 
 
617
  "Labels" => array( null, __("Labels", "forminator" ), ), // src/form/components/modals/pagination.js:79
618
  "Your form is divided into multiple pages by Page Break field(s), and you can customize the label of each page here. Page names appear on your form header along with the progress indicator." => array( null, __("Your form is divided into multiple pages by Page Break field(s), and you can customize the label of each page here. Page names appear on your form header along with the progress indicator.", "forminator" ), ), // src/form/components/modals/pagination.js:107
619
  "Finish" => array( null, __("Finish", "forminator" ), ), // src/form/components/modals/pagination.js:134
@@ -622,21 +666,22 @@ $forminator_admin_locale = array(
622
  "Loading preview…" => array( null, __("Loading preview…", "forminator" ), ), // src/form/components/modals/preview.js:73
623
  "Publishing form…" => array( null, __("Publishing form…", "forminator" ), ), // src/form/components/modals/publish.js:18
624
  "Great work! Please hold tight a few moments while we publish your form to the world." => array( null, __("Great work! Please hold tight a few moments while we publish your form to the world.", "forminator" ), ), // src/form/components/modals/publish.js:25
625
- "Please fill required fields" => array( null, __("Please fill required fields", "forminator" ), ), // src/form/components/modals/settings.js:129
626
- "Calculation values are requred!" => array( null, __("Calculation values are requred!", "forminator" ), ), // src/form/components/modals/settings.js:147
627
- "Option labels are required!" => array( null, __("Option labels are required!", "forminator" ), ), // src/form/components/modals/settings.js:156
628
- "Please, connect your Stripe account first!" => array( null, __("Please, connect your Stripe account first!", "forminator" ), ), // src/form/components/modals/settings.js:164
629
- "Please, enter Stripe payment amount!" => array( null, __("Please, enter Stripe payment amount!", "forminator" ), ), // src/form/components/modals/settings.js:169
630
- "Please, select Stripe payment variable field!" => array( null, __("Please, select Stripe payment variable field!", "forminator" ), ), // src/form/components/modals/settings.js:174
631
- "Empty labels are not allowed for meta values!" => array( null, __("Empty labels are not allowed for meta values!", "forminator" ), ), // src/form/components/modals/settings.js:183
632
- "Please, connect your PayPal account first!" => array( null, __("Please, connect your PayPal account first!", "forminator" ), ), // src/form/components/modals/settings.js:191
633
- "Calculation formula is required!" => array( null, __("Calculation formula is required!", "forminator" ), ), // src/form/components/modals/settings.js:199
634
- "Limit Min value should be less than Max value." => array( null, __("Limit Min value should be less than Max value.", "forminator" ), ), // src/form/components/modals/settings.js:207
635
- "Please enter API keys." => array( null, __("Please enter API keys.", "forminator" ), ), // src/form/components/modals/settings.js:214
636
- "Calculations" => array( null, __("Calculations", "forminator" ), ), // src/form/components/modals/settings.js:332
637
- "Styling" => array( null, __("Styling", "forminator" ), ), // src/form/components/modals/settings.js:352
638
- "Customize" => array( null, __("Customize", "forminator" ), ), // src/form/components/modals/settings.js:362
639
- "Visibility" => array( null, __("Visibility", "forminator" ), ), // src/form/components/modals/settings.js:372
 
640
  "Shortcode has been copied successfully." => array( null, __("Shortcode has been copied successfully.", "forminator" ), ), // src/form/components/modals/shortcode.js:20
641
  "Ready to go!" => array( null, __("Ready to go!", "forminator" ), ), // src/form/components/modals/shortcode.js:31
642
  "Your form is now ready to be embedded into a page or template of your choice. Simply copy and paste the shortcode below to display it!" => array( null, __("Your form is now ready to be embedded into a page or template of your choice. Simply copy and paste the shortcode below to display it!", "forminator" ), ), // src/form/components/modals/shortcode.js:37
@@ -644,7 +689,7 @@ $forminator_admin_locale = array(
644
  "Copy shortcode" => array( null, __("Copy shortcode", "forminator" ), ), // src/form/components/modals/shortcode.js:49
645
  "Button text" => array( null, __("Button text", "forminator" ), ), // src/form/components/modals/submit.js:102
646
  "Enter message" => array( null, __("Enter message", "forminator" ), ), // src/form/components/modals/submit.js:115
647
- "Navigate" => array( null, __("Navigate", "forminator" ), ), // src/form/components/navigation/menu.js:76
648
  "Preview" => array( null, __("Preview", "forminator" ), ), // src/form/components/navigation/preview.js:16
649
  "You can send customized email notifications to your site admins and visitors on successful form submission. Advanced features like email routing and conditional emails provide granular control over the email notifications." => array( null, __("You can send customized email notifications to your site admins and visitors on successful form submission. Advanced features like email routing and conditional emails provide granular control over the email notifications.", "forminator" ), ), // src/form/components/notifications.js:36
650
  "Admin Email" => array( null, __("Admin Email", "forminator" ), ), // src/form/components/notifications/admin-email.js:294
@@ -689,41 +734,78 @@ $forminator_admin_locale = array(
689
  "Send a confirmation email to the user" => array( null, __("Send a confirmation email to the user", "forminator" ), ), // src/form/components/notifications/confirmation-email.js:308
690
  "If you leave it blank, we will automatically find first email field in the form as recipient. If there is no email field and user is logged in we will use their email." => array( null, __("If you leave it blank, we will automatically find first email field in the form as recipient. If there is no email field and user is logged in we will use their email.", "forminator" ), ), // src/form/components/notifications/confirmation-email.js:353
691
  "Send to {{strong}}\"%(label)s\"{{/strong}} if {{strong}}%(field)s{{/strong}} %(rule)s {{strong}}%(value)s{{/strong}}" => array( null, __("Send to {{strong}}\"%(label)s\"{{/strong}} if {{strong}}%(field)s{{/strong}} %(rule)s {{strong}}%(value)s{{/strong}}", "forminator" ), ), // src/form/components/notifications/email-routing-rule.js:168
692
- "Routing Condition" => array( null, __("Routing Condition", "forminator" ), ), // src/form/components/notifications/email-routing-rule.js:233
693
- "Enter value" => array( null, __("Enter value", "forminator" ), ), // src/form/components/notifications/email-routing-rule.js:364
694
  "You haven't defined any email routing rules yet. Click on the \"+ Add Rule\" button to add the recipients along with the routing rules." => array( null, __("You haven't defined any email routing rules yet. Click on the \"+ Add Rule\" button to add the recipients along with the routing rules.", "forminator" ), ), // src/form/components/notifications/email-routing.js:142
695
  "Email routing is enabled" => array( null, __("Email routing is enabled", "forminator" ), ), // src/form/components/notifications/notification.js:195
696
  "more recipient(s)" => array( null, __("more recipient(s)", "forminator" ), ), // src/form/components/notifications/notification.js:203
697
  "Open field settings" => array( null, __("Open field settings", "forminator" ), ), // src/form/components/notifications/notification.js:246
698
  "Edit" => array( null, __("Edit", "forminator" ), ), // src/form/components/notifications/notification.js:253
699
- "forever" => array( null, __("forever", "forminator" ), ), // src/form/components/settings.js:36
700
- "retain" => array( null, __("retain", "forminator" ), ), // src/form/components/settings.js:46
701
- "remove" => array( null, __("remove", "forminator" ), ), // src/form/components/settings.js:46
702
- "Data Storage" => array( null, __("Data Storage", "forminator" ), ), // src/form/components/settings.js:57
703
- "By default we will store all submissions in your database." => array( null, __("By default we will store all submissions in your database.", "forminator" ), ), // src/form/components/settings.js:59
704
- "Disable store submissions in my database" => array( null, __("Disable store submissions in my database", "forminator" ), ), // src/form/components/settings.js:67
705
- "If you do not want to store submissions in your database you can disable this feature. Alternately you can also schedule automatic deletion of submissions after a period of time below." => array( null, __("If you do not want to store submissions in your database you can disable this feature. Alternately you can also schedule automatic deletion of submissions after a period of time below.", "forminator" ), ), // src/form/components/settings.js:69
706
- "Privacy" => array( null, __("Privacy", "forminator" ), ), // src/form/components/settings.js:77
707
- "Choose how you want to handle this form’s data storage." => array( null, __("Choose how you want to handle this form’s data storage.", "forminator" ), ), // src/form/components/settings.js:80
708
- "By default we will use the configuration you have set in your" => array( null, __("By default we will use the configuration you have set in your", "forminator" ), ), // src/form/components/settings.js:85
709
- "global privacy settings." => array( null, __("global privacy settings.", "forminator" ), ), // src/form/components/settings.js:91
710
- "How long do you want to retain this forms submissions for?" => array( null, __("How long do you want to retain this forms submissions for?", "forminator" ), ), // src/form/components/settings.js:102
711
- "Use default" => array( null, __("Use default", "forminator" ), ), // src/form/components/settings.js:112
712
- "Your default setting value is to keep the submissions" => array( null, __("Your default setting value is to keep the submissions", "forminator" ), ), // src/form/components/settings.js:115
713
- "Days" => array( null, __("Days", "forminator" ), ), // src/form/components/settings.js:144
714
- "Weeks" => array( null, __("Weeks", "forminator" ), ), // src/form/components/settings.js:147
715
- "Months" => array( null, __("Months", "forminator" ), ), // src/form/components/settings.js:150
716
- "Years" => array( null, __("Years", "forminator" ), ), // src/form/components/settings.js:153
717
- "Leave the field blank to retain submissions forever." => array( null, __("Leave the field blank to retain submissions forever.", "forminator" ), ), // src/form/components/settings.js:159
718
- "Account Erasure Requests" => array( null, __("Account Erasure Requests", "forminator" ), ), // src/form/components/settings.js:169
719
- "When handling an account erasure request that contains an email associated with a submission, what do you want to do?" => array( null, __("When handling an account erasure request that contains an email associated with a submission, what do you want to do?", "forminator" ), ), // src/form/components/settings.js:172
720
- "Your default setting value is to " => array( null, __("Your default setting value is to ", "forminator" ), ), // src/form/components/settings.js:185
721
- " the submission." => array( null, __(" the submission.", "forminator" ), ), // src/form/components/settings.js:186
722
- "Retain Submissions" => array( null, __("Retain Submissions", "forminator" ), ), // src/form/components/settings.js:202
723
- "Remove Submissions" => array( null, __("Remove Submissions", "forminator" ), ), // src/form/components/settings.js:205
724
- "Submission Files" => array( null, __("Submission Files", "forminator" ), ), // src/form/components/settings.js:213
725
- "If your form has file upload field(s), choose whether to delete the file(s) related to a submission when that submission gets deleted." => array( null, __("If your form has file upload field(s), choose whether to delete the file(s) related to a submission when that submission gets deleted.", "forminator" ), ), // src/form/components/settings.js:216
726
- "Keep" => array( null, __("Keep", "forminator" ), ), // src/form/components/settings.js:226
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
727
  "Unknown setting" => array( null, __("Unknown setting", "forminator" ), ), // src/form/components/settings/advanced.js:108
728
  "Assign a calculation value to each option. These values will not be shown on the form. You can assign only a numeric value." => array( null, __("Assign a calculation value to each option. These values will not be shown on the form. You can assign only a numeric value.", "forminator" ), ), // src/form/components/settings/calculations/options.js:39
729
  "Calculation value" => array( null, __("Calculation value", "forminator" ), ), // src/form/components/settings/calculations/options.js:58
@@ -732,16 +814,16 @@ $forminator_admin_locale = array(
732
  "Pick a date" => array( null, __("Pick a date", "forminator" ), ), // src/form/components/settings/date-multiple.js:74
733
  "Add selected date" => array( null, __("Add selected date", "forminator" ), ), // src/form/components/settings/date-multiple.js:81
734
  "Restricted dates" => array( null, __("Restricted dates", "forminator" ), ), // src/form/components/settings/date-multiple.js:92
735
- "Allowed filetypes" => array( null, __("Allowed filetypes", "forminator" ), ), // src/form/components/settings/filetypes.js:116
736
- "By default we will use {{a}}WordPress Default Allowed Mime Types{{/a}}. You can choose which types of files you want to allow users to upload." => array( null, __("By default we will use {{a}}WordPress Default Allowed Mime Types{{/a}}. You can choose which types of files you want to allow users to upload.", "forminator" ), ), // src/form/components/settings/filetypes.js:118
737
- "Images" => array( null, __("Images", "forminator" ), ), // src/form/components/settings/filetypes.js:154
738
- "Documents" => array( null, __("Documents", "forminator" ), ), // src/form/components/settings/filetypes.js:163
739
- "Audio" => array( null, __("Audio", "forminator" ), ), // src/form/components/settings/filetypes.js:172
740
- "Video" => array( null, __("Video", "forminator" ), ), // src/form/components/settings/filetypes.js:181
741
- "Archive" => array( null, __("Archive", "forminator" ), ), // src/form/components/settings/filetypes.js:192
742
- "Spreadsheet" => array( null, __("Spreadsheet", "forminator" ), ), // src/form/components/settings/filetypes.js:210
743
- "Interactive" => array( null, __("Interactive", "forminator" ), ), // src/form/components/settings/filetypes.js:219
744
- "If you're having trouble uploading one of these filetypes, it may be an issue with your hosting provider." => array( null, __("If you're having trouble uploading one of these filetypes, it may be an issue with your hosting provider.", "forminator" ), ), // src/form/components/settings/filetypes.js:227
745
  "Roboto" => array( null, __("Roboto", "forminator" ), ), // src/form/components/settings/fonts.js:55
746
  "Font Family" => array( null, __("Font Family", "forminator" ), ), // src/form/components/settings/fonts.js:56
747
  "Custom user font" => array( null, __("Custom user font", "forminator" ), ), // src/form/components/settings/fonts.js:70
@@ -751,13 +833,12 @@ $forminator_admin_locale = array(
751
  "Font Size" => array( null, __("Font Size", "forminator" ), ), // src/form/components/settings/fonts.js:135
752
  "Font Weight" => array( null, __("Font Weight", "forminator" ), ), // src/form/components/settings/fonts.js:142
753
  "Select font weight" => array( null, __("Select font weight", "forminator" ), ), // src/form/components/settings/fonts.js:143
754
- "Select a Field" => array( null, __("Select a Field", "forminator" ), ), // src/form/components/settings/metadata-option.js:78
755
  "Delete MetaData" => array( null, __("Delete MetaData", "forminator" ), ), // src/form/components/settings/metadata-option.js:97
756
  "Add Custom Meta" => array( null, __("Add Custom Meta", "forminator" ), ), // src/form/components/settings/metadata-value.js:131
757
  "No custom meta data created yet. Click on \"+ Add Custom to create custom meta and map form fields to it." => array( null, __("No custom meta data created yet. Click on \"+ Add Custom to create custom meta and map form fields to it.", "forminator" ), ), // src/form/components/settings/metadata-value.js:140
758
- "Delete option" => array( null, __("Delete option", "forminator" ), ), // src/form/components/settings/multi-custom-field-option.js:90
759
- "Add Custom Field" => array( null, __("Add Custom Field", "forminator" ), ), // src/form/components/settings/multi-custom-field-value.js:137
760
  "Default value" => array( null, __("Default value", "forminator" ), ), // src/form/components/settings/multi-name.js:54
 
761
  "Submission limit" => array( null, __("Submission limit", "forminator" ), ), // src/form/components/settings/multi-option.js:97
762
  "Options" => array( null, __("Options", "forminator" ), ), // src/form/components/settings/multi-value.js:139
763
  "Add Option" => array( null, __("Add Option", "forminator" ), ), // src/form/components/settings/multi-value.js:159
@@ -769,10 +850,13 @@ $forminator_admin_locale = array(
769
  "Pre-populate" => array( null, __("Pre-populate", "forminator" ), ), // src/form/components/settings/prefill.js:25
770
  "You can pre-populate this field dynamically using the query parameter passed in your form URL. Enter the query parameter key to fetch its value from your form URL below." => array( null, __("You can pre-populate this field dynamically using the query parameter passed in your form URL. Enter the query parameter key to fetch its value from your form URL below.", "forminator" ), ), // src/form/components/settings/prefill.js:33
771
  "Query parameter (optional)" => array( null, __("Query parameter (optional)", "forminator" ), ), // src/form/components/settings/prefill.js:45
772
- "Require" => array( null, __("Require", "forminator" ), ), // src/form/components/settings/required.js:37
773
- "Optional" => array( null, __("Optional", "forminator" ), ), // src/form/components/settings/required.js:51
774
- "Required" => array( null, __("Required", "forminator" ), ), // src/form/components/settings/required.js:58
775
- "Options without a value will be treated as empty options" => array( null, __("Options without a value will be treated as empty options", "forminator" ), ), // src/form/components/settings/required.js:95
 
 
 
776
  "Add classes that will be output on this field’s container to aid your theme's default styling." => array( null, __("Add classes that will be output on this field’s container to aid your theme's default styling.", "forminator" ), ), // src/form/components/settings/styling.js:21
777
  "E.g. form-field" => array( null, __("E.g. form-field", "forminator" ), ), // src/form/components/settings/styling.js:30
778
  "These will be output as you see them here." => array( null, __("These will be output as you see them here.", "forminator" ), ), // src/form/components/settings/styling.js:38
@@ -780,9 +864,8 @@ $forminator_admin_locale = array(
780
  "You need more than one field to configure visibility conditions. Add more fields!" => array( null, __("You need more than one field to configure visibility conditions. Add more fields!", "forminator" ), ), // src/form/components/settings/visibility.js:171
781
  "Rules" => array( null, __("Rules", "forminator" ), ), // src/form/components/settings/visibility.js:182
782
  "By default field will always be visible. If you want to hide or show fields based on user input you can add conditions." => array( null, __("By default field will always be visible. If you want to hide or show fields based on user input you can add conditions.", "forminator" ), ), // src/form/components/settings/visibility.js:196
783
- "You have unsaved changes, are you sure want to leave this page" => array( null, __("You have unsaved changes, are you sure want to leave this page", "forminator" ), ), // src/form/containers/main.js:46
784
  "Details" => array( null, __("Details", "forminator" ), ), // src/poll/components/appearance.js:51
785
- "Adjust the default colour combinations to match your theme styling." => array( null, __("Adjust the default colour combinations to match your theme styling.", "forminator" ), ), // src/poll/components/appearance/colors.js:33
786
  "Use default colors" => array( null, __("Use default colors", "forminator" ), ), // src/poll/components/appearance/colors.js:47
787
  "Poll Container" => array( null, __("Poll Container", "forminator" ), ), // src/poll/components/appearance/colors.js:63
788
  "Poll Basics" => array( null, __("Poll Basics", "forminator" ), ), // src/poll/components/appearance/colors.js:70
@@ -817,10 +900,6 @@ $forminator_admin_locale = array(
817
  "Allow Multiple" => array( null, __("Allow Multiple", "forminator" ), ), // src/poll/components/behaviour/limits.js:69
818
  "minute(s)" => array( null, __("minute(s)", "forminator" ), ), // src/poll/components/behaviour/limits.js:90
819
  "hour(s)" => array( null, __("hour(s)", "forminator" ), ), // src/poll/components/behaviour/limits.js:91
820
- "day(s)" => array( null, __("day(s)", "forminator" ), ), // src/poll/components/behaviour/limits.js:92
821
- "week(s)" => array( null, __("week(s)", "forminator" ), ), // src/poll/components/behaviour/limits.js:93
822
- "month(s)" => array( null, __("month(s)", "forminator" ), ), // src/poll/components/behaviour/limits.js:94
823
- "year(s)" => array( null, __("year(s)", "forminator" ), ), // src/poll/components/behaviour/limits.js:95
824
  "Choose the method you want to use to limit the number of votes." => array( null, __("Choose the method you want to use to limit the number of votes.", "forminator" ), ), // src/poll/components/behaviour/limits.js:109
825
  "User IP" => array( null, __("User IP", "forminator" ), ), // src/poll/components/behaviour/limits.js:117
826
  "Browser Cookie" => array( null, __("Browser Cookie", "forminator" ), ), // src/poll/components/behaviour/limits.js:118
@@ -885,10 +964,24 @@ $forminator_admin_locale = array(
885
  "Option Unselected" => array( null, __("Option Unselected", "forminator" ), ), // src/quiz/global/components/appearance/design-style/bold.js:20
886
  "Option Selected" => array( null, __("Option Selected", "forminator" ), ), // src/quiz/global/components/appearance/design-style/bold.js:32
887
  "You have opted for no stylesheet to be enqueued. The quiz will inherit styles from your theme's CSS." => array( null, __("You have opted for no stylesheet to be enqueued. The quiz will inherit styles from your theme's CSS.", "forminator" ), ), // src/quiz/global/components/appearance/design-style/none.js:13
888
- "Options Layout" => array( null, __("Options Layout", "forminator" ), ), // src/quiz/global/components/appearance/options-layout.js:12
889
- "Choose how you want to display the quiz options to the viewers." => array( null, __("Choose how you want to display the quiz options to the viewers.", "forminator" ), ), // src/quiz/global/components/appearance/options-layout.js:13
890
- "List" => array( null, __("List", "forminator" ), ), // src/quiz/global/components/appearance/options-layout.js:30
891
- "Grid" => array( null, __("Grid", "forminator" ), ), // src/quiz/global/components/appearance/options-layout.js:39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
892
  "Messages" => array( null, __("Messages", "forminator" ), ), // src/quiz/global/components/behaviour/messages.js:12
893
  "Choose the copy of the messages for the correct and wrong answers and also for the final score count." => array( null, __("Choose the copy of the messages for the correct and wrong answers and also for the final score count.", "forminator" ), ), // src/quiz/global/components/behaviour/messages.js:15
894
  "Correct Answer Message" => array( null, __("Correct Answer Message", "forminator" ), ), // src/quiz/global/components/behaviour/messages.js:22
@@ -899,13 +992,20 @@ $forminator_admin_locale = array(
899
  "Quiz Name" => array( null, __("Quiz Name", "forminator" ), ), // src/quiz/global/components/behaviour/messages.js:73
900
  "Quiz Answer" => array( null, __("Quiz Answer", "forminator" ), ), // src/quiz/global/components/behaviour/messages.js:74
901
  "Quiz Result" => array( null, __("Quiz Result", "forminator" ), ), // src/quiz/global/components/behaviour/messages.js:75
 
902
  "Load quiz using AJAX" => array( null, __("Load quiz using AJAX", "forminator" ), ), // src/quiz/global/components/behaviour/render.js:22
903
  "Enabling this feature will load the quiz via AJAX after the page has loaded up, effectively speeding up your page load time. This method can also (in most cases) avoid page caching issues with your quiz." => array( null, __("Enabling this feature will load the quiz via AJAX after the page has loaded up, effectively speeding up your page load time. This method can also (in most cases) avoid page caching issues with your quiz.", "forminator" ), ), // src/quiz/global/components/behaviour/render.js:23
904
  "Prevent page caching on quiz pages" => array( null, __("Prevent page caching on quiz pages", "forminator" ), ), // src/quiz/global/components/behaviour/render.js:34
905
  "Page caching plugins serve a static HTML version of the page which can cause issues to your dynamic quizzes. By enabling this, we'll use {{strong}}DONOTCACHEPAGE{{/strong}} constant to prevent pages with this quiz on it from being cached." => array( null, __("Page caching plugins serve a static HTML version of the page which can cause issues to your dynamic quizzes. By enabling this, we'll use {{strong}}DONOTCACHEPAGE{{/strong}} constant to prevent pages with this quiz on it from being cached.", "forminator" ), ), // src/quiz/global/components/behaviour/render.js:35
906
- "Choose whether to display the correct answer as the user answers each question or after the quiz is submitted." => array( null, __("Choose whether to display the correct answer as the user answers each question or after the quiz is submitted.", "forminator" ), ), // src/quiz/global/components/behaviour/results.js:14
907
- "Real Time" => array( null, __("Real Time", "forminator" ), ), // src/quiz/global/components/behaviour/results.js:24
908
- "On Submission" => array( null, __("On Submission", "forminator" ), ), // src/quiz/global/components/behaviour/results.js:25
 
 
 
 
 
 
909
  "Social Sharing" => array( null, __("Social Sharing", "forminator" ), ), // src/quiz/global/components/behaviour/share.js:14
910
  "Choose whether you want to allow the quiz participants to share their results on social media." => array( null, __("Choose whether you want to allow the quiz participants to share their results on social media.", "forminator" ), ), // src/quiz/global/components/behaviour/share.js:15
911
  "Social Sharing Platforms" => array( null, __("Social Sharing Platforms", "forminator" ), ), // src/quiz/global/components/behaviour/social-sharing/social-enable.js:20
@@ -945,8 +1045,11 @@ $forminator_admin_locale = array(
945
  "Please validate your fields!" => array( null, __("Please validate your fields!", "forminator" ), ), // src/quiz/global/components/modals/personality.js:167
946
  "Publishing quiz…" => array( null, __("Publishing quiz…", "forminator" ), ), // src/quiz/global/components/modals/publish.js:18
947
  "Great work! Please hold tight a few moments while we publish your quiz to the world." => array( null, __("Great work! Please hold tight a few moments while we publish your quiz to the world.", "forminator" ), ), // src/quiz/global/components/modals/publish.js:24
948
- "Edit Question" => array( null, __("Edit Question", "forminator" ), ), // src/quiz/global/components/modals/question.js:105
949
- "You can choose multiple correct answers if that applies to this question. Note that the user's selection will be considered as right when any one of the correct answers is selected." => array( null, __("You can choose multiple correct answers if that applies to this question. Note that the user's selection will be considered as right when any one of the correct answers is selected.", "forminator" ), ), // src/quiz/global/components/modals/question.js:166
 
 
 
950
  "Your quiz is now ready to be embedded into a page or template of your choice. Simply copy and paste the shortcode below to display it!" => array( null, __("Your quiz is now ready to be embedded into a page or template of your choice. Simply copy and paste the shortcode below to display it!", "forminator" ), ), // src/quiz/global/components/modals/shortcode.js:37
951
  "Button Processing Text" => array( null, __("Button Processing Text", "forminator" ), ), // src/quiz/global/components/modals/submit.js:64
952
  "Sending..." => array( null, __("Sending...", "forminator" ), ), // src/quiz/global/components/modals/submit.js:65
@@ -959,7 +1062,9 @@ $forminator_admin_locale = array(
959
  "e.g. 0.75em" => array( null, __("e.g. 0.75em", "forminator" ), ), // src/quiz/global/components/settings/fonts.js:102
960
  "Choose how you want to handle this quiz’s data storage. By default we'll use the configuration you've set in your {{link}}global privacy settings{{/link}}." => array( null, __("Choose how you want to handle this quiz’s data storage. By default we'll use the configuration you've set in your {{link}}global privacy settings{{/link}}.", "forminator" ), ), // src/quiz/global/components/settings/privacy.js:34
961
  "How long do you want to retain this quiz's submissions for?" => array( null, __("How long do you want to retain this quiz's submissions for?", "forminator" ), ), // src/quiz/global/components/settings/privacy.js:52
962
- "Wrong" => array( null, __("Wrong", "forminator" ), ), // src/quiz/knowledge/components/appearance/colors/answer-checkbox.js:91
 
 
963
  "Answer text color" => array( null, __("Answer text color", "forminator" ), ), // src/quiz/knowledge/components/appearance/colors/answer-text.js:28
964
  "Answer result message" => array( null, __("Answer result message", "forminator" ), ), // src/quiz/knowledge/components/appearance/colors/answer-text.js:34
965
  "Quiz result color" => array( null, __("Quiz result color", "forminator" ), ), // src/quiz/knowledge/components/appearance/colors/basic.js:39
@@ -983,10 +1088,10 @@ $forminator_admin_locale = array(
983
  "Large" => array( null, __("Large", "forminator" ), ), // src/quiz/knowledge/components/appearance/fonts/social-icons.js:26
984
  "Retake Button" => array( null, __("Retake Button", "forminator" ), ), // src/quiz/personality/components/appearance/colors/colors-table.js:68
985
  "Main" => array( null, __("Main", "forminator" ), ), // src/quiz/personality/components/appearance/colors/quiz-result.js:24
986
- "Container background" => array( null, __("Container background", "forminator" ), ), // src/quiz/personality/components/appearance/colors/quiz-result.js:37
987
- "Header" => array( null, __("Header", "forminator" ), ), // src/quiz/personality/components/appearance/colors/quiz-result.js:47
988
- "Content background" => array( null, __("Content background", "forminator" ), ), // src/quiz/personality/components/appearance/colors/quiz-result.js:88
989
- "Retake" => array( null, __("Retake", "forminator" ), ), // src/quiz/personality/components/appearance/fonts/quiz-result.js:36
990
  "Let's add the different personalities. Each of the following personality is a possible outcome of your quiz. In case of a tie, the personality is chosen as per their order below." => array( null, __("Let's add the different personalities. Each of the following personality is a possible outcome of your quiz. In case of a tie, the personality is chosen as per their order below.", "forminator" ), ), // src/quiz/personality/components/personalities.js:33
991
  "Reorder the personalities to set the priority order." => array( null, __("Reorder the personalities to set the priority order.", "forminator" ), ), // src/quiz/personality/components/personalities.js:50
992
  "Define the different personalities possible as the outcome of your quiz here." => array( null, __("Define the different personalities possible as the outcome of your quiz here.", "forminator" ), ), // src/quiz/personality/components/personalities/personalities.js:104
@@ -998,9 +1103,9 @@ $forminator_admin_locale = array(
998
  "Poll" => array( null, __("Poll", "forminator" ), ), // src/settings/inputs/ace-editor.js:122
999
  "Answer Input" => array( null, __("Answer Input", "forminator" ), ), // src/settings/inputs/ace-editor.js:132
1000
  "Answer Label" => array( null, __("Answer Label", "forminator" ), ), // src/settings/inputs/ace-editor.js:137
1001
- "Quiz" => array( null, __("Quiz", "forminator" ), ), // src/settings/inputs/ace-editor.js:160
1002
- "Answer Container" => array( null, __("Answer Container", "forminator" ), ), // src/settings/inputs/ace-editor.js:180
1003
- "Answer Text" => array( null, __("Answer Text", "forminator" ), ), // src/settings/inputs/ace-editor.js:187
1004
  "%s does not exist in your form. Please insert a valid field from the merged tags option." => array( null, __("%s does not exist in your form. Please insert a valid field from the merged tags option.", "forminator" ), ), // src/settings/inputs/calculation.js:157
1005
  "Infinity calculation result." => array( null, __("Infinity calculation result.", "forminator" ), ), // src/settings/inputs/calculation.js:193
1006
  "Calculation Formula" => array( null, __("Calculation Formula", "forminator" ), ), // src/settings/inputs/calculation.js:253
@@ -1015,34 +1120,34 @@ $forminator_admin_locale = array(
1015
  "You can preview your form and check if the formula is generating expected results." => array( null, __("You can preview your form and check if the formula is generating expected results.", "forminator" ), ), // src/settings/inputs/calculation.js:361
1016
  "Formula Preview" => array( null, __("Formula Preview", "forminator" ), ), // src/settings/inputs/calculation.js:370
1017
  "Remove this date range" => array( null, __("Remove this date range", "forminator" ), ), // src/settings/inputs/date-picker.js:73
1018
- "This field is required!" => array( null, __("This field is required!", "forminator" ), ), // src/settings/inputs/input.js:40
1019
- "Please enter valid number." => array( null, __("Please enter valid number.", "forminator" ), ), // src/settings/inputs/input.js:114
1020
  "Select image" => array( null, __("Select image", "forminator" ), ), // src/settings/inputs/uploads.js:25
1021
  "Upload image" => array( null, __("Upload image", "forminator" ), ), // src/settings/inputs/uploads.js:134
1022
  "Upload file" => array( null, __("Upload file", "forminator" ), ), // src/settings/inputs/uploads.js:135
1023
  "Remove uploaded image" => array( null, __("Remove uploaded image", "forminator" ), ), // src/settings/inputs/uploads.js:144
1024
  "Remove uploaded file" => array( null, __("Remove uploaded file", "forminator" ), ), // src/settings/inputs/uploads.js:145
1025
- "Required Fields" => array( null, __("Required Fields", "forminator" ), ), // src/settings/inputs/wp-editor.js:168
1026
- "Optional Fields" => array( null, __("Optional Fields", "forminator" ), ), // src/settings/inputs/wp-editor.js:178
1027
- "Misc Data" => array( null, __("Misc Data", "forminator" ), ), // src/settings/inputs/wp-editor.js:194
1028
- "Payment Data" => array( null, __("Payment Data", "forminator" ), ), // src/settings/inputs/wp-editor.js:219
1029
- "Form Name" => array( null, __("Form Name", "forminator" ), ), // src/settings/inputs/wp-editor.js:248
1030
- "All Form Fields" => array( null, __("All Form Fields", "forminator" ), ), // src/settings/inputs/wp-editor.js:258
1031
- "All Non Empty Fields" => array( null, __("All Non Empty Fields", "forminator" ), ), // src/settings/inputs/wp-editor.js:268
1032
- "Add form data" => array( null, __("Add form data", "forminator" ), ), // src/settings/inputs/wp-editor.js:307
1033
- "is having" => array( null, __("is having", "forminator" ), ), // src/utils.js:835
1034
- "is" => array( null, __("is", "forminator" ), ), // src/utils.js:838
1035
- "is not having" => array( null, __("is not having", "forminator" ), ), // src/utils.js:842
1036
- "is not" => array( null, __("is not", "forminator" ), ), // src/utils.js:845
1037
- "day is" => array( null, __("day is", "forminator" ), ), // src/utils.js:849
1038
- "day is not" => array( null, __("day is not", "forminator" ), ), // src/utils.js:851
1039
- "month is not" => array( null, __("month is not", "forminator" ), ), // src/utils.js:853
1040
- "month is" => array( null, __("month is", "forminator" ), ), // src/utils.js:855
1041
- "is greater than" => array( null, __("is greater than", "forminator" ), ), // src/utils.js:857
1042
- "is less than" => array( null, __("is less than", "forminator" ), ), // src/utils.js:859
1043
- "contains" => array( null, __("contains", "forminator" ), ), // src/utils.js:861
1044
- "starts with" => array( null, __("starts with", "forminator" ), ), // src/utils.js:863
1045
- "ends with" => array( null, __("ends with", "forminator" ), ), // src/utils.js:865
1046
  );
1047
  return $forminator_admin_locale;
1048
  /* THIS IS THE END OF THE GENERATED FILE */
1
  <?php
2
  /* THIS IS A GENERATED FILE. DO NOT EDIT DIRECTLY. */
3
  $forminator_admin_locale = array(
4
+ "Appearance" => array( null, __("Appearance", "forminator" ), ), // src/form/components/appearance.js:76
5
+ "Fields" => array( null, __("Fields", "forminator" ), ), // src/form/components/appearance.js:104
6
+ "Behaviour" => array( null, __("Behaviour", "forminator" ), ), // src/form/components/appearance.js:113
7
+ "User Registration" => array( null, __("User Registration", "forminator" ), ), // src/form/components/appearance.js:121
8
+ "User Login" => array( null, __("User Login", "forminator" ), ), // src/form/components/appearance.js:129
9
  "Colors" => array( null, __("Colors", "forminator" ), ), // src/form/components/appearance/colors.js:169
10
+ "Adjust the default color combinations to match your theme styling." => array( null, __("Adjust the default color combinations to match your theme styling.", "forminator" ), ), // src/form/components/appearance/colors.js:170
11
  "Use Default Colors" => array( null, __("Use Default Colors", "forminator" ), ), // src/form/components/appearance/colors.js:184
12
  "Custom" => array( null, __("Custom", "forminator" ), ), // src/form/components/appearance/colors.js:187
13
  "Element" => array( null, __("Element", "forminator" ), ), // src/form/components/appearance/colors.js:192
38
  "Container" => array( null, __("Container", "forminator" ), ), // src/form/components/appearance/colors/calendar-basics.js:22
39
  "Border" => array( null, __("Border", "forminator" ), ), // src/form/components/appearance/colors/calendar-basics.js:28
40
  "Header background" => array( null, __("Header background", "forminator" ), ), // src/form/components/appearance/colors/calendar-basics.js:29
41
+ "Background" => array( null, __("Background", "forminator" ), ), // src/form/components/appearance/colors/calendar-basics.js:38
42
+ "Main background" => array( null, __("Main background", "forminator" ), ), // src/form/components/appearance/colors/calendar-basics.js:39
43
+ "Navigation" => array( null, __("Navigation", "forminator" ), ), // src/form/components/appearance/colors/calendar-basics.js:48
44
+ "Arrows background" => array( null, __("Arrows background", "forminator" ), ), // src/form/components/appearance/colors/calendar-basics.js:53
45
+ "Arrows color" => array( null, __("Arrows color", "forminator" ), ), // src/form/components/appearance/colors/calendar-basics.js:60
46
+ "Color" => array( null, __("Color", "forminator" ), ), // src/form/components/appearance/colors/calendar-basics.js:86
47
  "Default" => array( null, __("Default", "forminator" ), ), // src/form/components/appearance/colors/calendar-table.js:22
48
  "Table head color" => array( null, __("Table head color", "forminator" ), ), // src/form/components/appearance/colors/calendar-table.js:27
49
+ "Table cell border" => array( null, __("Table cell border", "forminator" ), ), // src/form/components/appearance/colors/calendar-table.js:35
50
+ "Table cell BG" => array( null, __("Table cell BG", "forminator" ), ), // src/form/components/appearance/colors/calendar-table.js:43
51
+ "Table cell color" => array( null, __("Table cell color", "forminator" ), ), // src/form/components/appearance/colors/calendar-table.js:50
52
+ "Hover" => array( null, __("Hover", "forminator" ), ), // src/form/components/appearance/colors/calendar-table.js:58
53
  "Active" => array( null, __("Active", "forminator" ), ), // src/form/components/appearance/colors/calendar-table.js:86
54
+ "Current" => array( null, __("Current", "forminator" ), ), // src/form/components/appearance/colors/calendar-table.js:114
55
  "Border color" => array( null, __("Border color", "forminator" ), ), // src/form/components/appearance/colors/dropdown-search.js:23
56
+ "Background color" => array( null, __("Background color", "forminator" ), ), // src/form/components/appearance/colors/dropdown-search.js:31
57
+ "Text color" => array( null, __("Text color", "forminator" ), ), // src/form/components/appearance/colors/dropdown-search.js:38
58
  "Container border" => array( null, __("Container border", "forminator" ), ), // src/form/components/appearance/colors/dropdown.js:33
59
+ "Container BG" => array( null, __("Container BG", "forminator" ), ), // src/form/components/appearance/colors/dropdown.js:41
60
+ "Option color" => array( null, __("Option color", "forminator" ), ), // src/form/components/appearance/colors/dropdown.js:48
61
+ "Option background" => array( null, __("Option background", "forminator" ), ), // src/form/components/appearance/colors/dropdown.js:60
62
+ "Selected" => array( null, __("Selected", "forminator" ), ), // src/form/components/appearance/colors/dropdown.js:72
63
  "Label" => array( null, __("Label", "forminator" ), ), // src/form/components/appearance/colors/fields-basics.js:18
64
  "Required asterisk" => array( null, __("Required asterisk", "forminator" ), ), // src/form/components/appearance/colors/fields-basics.js:24
65
  "Description" => array( null, __("Description", "forminator" ), ), // src/form/components/appearance/colors/fields-basics.js:30
66
  "Error message BG" => array( null, __("Error message BG", "forminator" ), ), // src/form/components/appearance/colors/fields-basics.js:37
67
+ "Error message color" => array( null, __("Error message color", "forminator" ), ), // src/form/components/appearance/colors/fields-basics.js:46
68
+ "Global error color" => array( null, __("Global error color", "forminator" ), ), // src/form/components/appearance/colors/fields-basics.js:47
69
+ "This color will be used when fields throw an error as text color, border color, etc." => array( null, __("This color will be used when fields throw an error as text color, border color, etc.", "forminator" ), ), // src/form/components/appearance/colors/fields-basics.js:50
70
  "Icon color" => array( null, __("Icon color", "forminator" ), ), // src/form/components/appearance/colors/file-delete.js:36
71
  "Focus" => array( null, __("Focus", "forminator" ), ), // src/form/components/appearance/colors/file-delete.js:60
72
  "Suffix color" => array( null, __("Suffix color", "forminator" ), ), // src/form/components/appearance/colors/inputs-extra.js:48
73
  "Only Stripe card icon will show this color variation." => array( null, __("Only Stripe card icon will show this color variation.", "forminator" ), ), // src/form/components/appearance/colors/inputs-extra.js:96
74
+ "Placeholder" => array( null, __("Placeholder", "forminator" ), ), // src/form/components/appearance/colors/inputs.js:44
75
+ "Error" => array( null, __("Error", "forminator" ), ), // src/form/components/appearance/colors/inputs.js:103
76
  "Option border" => array( null, __("Option border", "forminator" ), ), // src/form/components/appearance/colors/multi-select.js:32
77
  "Label color" => array( null, __("Label color", "forminator" ), ), // src/form/components/appearance/colors/pagination-back.js:33
78
  "Progress bar BG" => array( null, __("Progress bar BG", "forminator" ), ), // src/form/components/appearance/colors/pagination-progress.js:24
82
  "Page number color" => array( null, __("Page number color", "forminator" ), ), // src/form/components/appearance/colors/pagination-steps.js:95
83
  "Current state colors" => array( null, __("Current state colors", "forminator" ), ), // src/form/components/appearance/colors/pagination-steps.js:106
84
  "Footer border color" => array( null, __("Footer border color", "forminator" ), ), // src/form/components/appearance/colors/pagination.js:15
85
+ "Checked" => array( null, __("Checked", "forminator" ), ), // src/form/components/appearance/colors/radio.js:48
86
  "Title color" => array( null, __("Title color", "forminator" ), ), // src/form/components/appearance/colors/section.js:15
87
  "Subtitle color" => array( null, __("Subtitle color", "forminator" ), ), // src/form/components/appearance/colors/section.js:19
88
  "Custom CSS" => array( null, __("Custom CSS", "forminator" ), ), // src/form/components/appearance/custom-css.js:16
128
  "Solid" => array( null, __("Solid", "forminator" ), ), // src/form/components/appearance/form-container/border-custom.js:44
129
  "Dashed" => array( null, __("Dashed", "forminator" ), ), // src/form/components/appearance/form-container/border-custom.js:47
130
  "Dotted" => array( null, __("Dotted", "forminator" ), ), // src/form/components/appearance/form-container/border-custom.js:50
131
+ "Note: Set the color of the border in the Colors settings area above." => array( null, __("Note: Set the color of the border in the Colors settings area above.", "forminator" ), ), // src/form/components/appearance/form-container/border-custom.js:58
132
  "Top" => array( null, __("Top", "forminator" ), ), // src/form/components/appearance/form-container/padding-custom.js:20
133
  "Bottom" => array( null, __("Bottom", "forminator" ), ), // src/form/components/appearance/form-container/padding-custom.js:29
134
  "Left" => array( null, __("Left", "forminator" ), ), // src/form/components/appearance/form-container/padding-custom.js:38
146
  "Show" => array( null, __("Show", "forminator" ), ), // src/form/components/appearance/pagination.js:63
147
  "Progress Bar" => array( null, __("Progress Bar", "forminator" ), ), // src/form/components/appearance/pagination.js:72
148
  "Steps" => array( null, __("Steps", "forminator" ), ), // src/form/components/appearance/pagination.js:78
149
+ "Email Notifications" => array( null, __("Email Notifications", "forminator" ), ), // src/form/components/behaviour.js:95
150
  "Form does not have fields that can be autofilled." => array( null, __("Form does not have fields that can be autofilled.", "forminator" ), ), // src/form/components/behaviour/autofill.js:61
151
  "Autofill" => array( null, __("Autofill", "forminator" ), ), // src/form/components/behaviour/autofill.js:159
152
  "If the user filling out the form is logged in, we can auto-fill fields with any available data." => array( null, __("If the user filling out the form is logged in, we can auto-fill fields with any available data.", "forminator" ), ), // src/form/components/behaviour/autofill.js:161
157
  "No" => array( null, __("No", "forminator" ), ), // src/form/components/behaviour/autofill.js:234
158
  "Yes" => array( null, __("Yes", "forminator" ), ), // src/form/components/behaviour/autofill.js:237
159
  "Lifespan" => array( null, __("Lifespan", "forminator" ), ), // src/form/components/behaviour/lifespan.js:17
160
+ "By default this form will always be available for submissions. However you can lock down if need be." => array( null, __("By default this form will always be available for submissions. However you can lock down if need be.", "forminator" ), ), // src/form/components/behaviour/lifespan.js:20
161
  "Expiry" => array( null, __("Expiry", "forminator" ), ), // src/form/components/behaviour/lifespan.js:31
162
  "Date" => array( null, __("Date", "forminator" ), ), // src/form/components/behaviour/lifespan.js:46
163
  "20 April 2018" => array( null, __("20 April 2018", "forminator" ), ), // src/form/components/behaviour/lifespan.js:49
175
  "Enabling this feature will load the form via AJAX after the page has loaded up, effectively speeding up your page load time. This method can also (in most cases) avoid page caching issues with your form." => array( null, __("Enabling this feature will load the form via AJAX after the page has loaded up, effectively speeding up your page load time. This method can also (in most cases) avoid page caching issues with your form.", "forminator" ), ), // src/form/components/behaviour/render.js:23
176
  "Prevent page caching on form pages" => array( null, __("Prevent page caching on form pages", "forminator" ), ), // src/form/components/behaviour/render.js:34
177
  "Page caching plugins serve a static HTML version of the page which can cause issues to your dynamic forms. By enabling this, we'll use {{strong}}DONOTCACHEPAGE{{/strong}} constant to prevent pages with this form on it from being cached." => array( null, __("Page caching plugins serve a static HTML version of the page which can cause issues to your dynamic forms. By enabling this, we'll use {{strong}}DONOTCACHEPAGE{{/strong}} constant to prevent pages with this form on it from being cached.", "forminator" ), ), // src/form/components/behaviour/render.js:35
178
+ "Security" => array( null, __("Security", "forminator" ), ), // src/form/components/behaviour/security.js:16
179
+ "Added layers of security to prevent spam submissions." => array( null, __("Added layers of security to prevent spam submissions.", "forminator" ), ), // src/form/components/behaviour/security.js:18
180
+ "Enable Honeypot protection" => array( null, __("Enable Honeypot protection", "forminator" ), ), // src/form/components/behaviour/security.js:26
181
+ "Enabling this feature tricks spam bots by giving them a hidden challenge only bots will see. If the bot tries the challenge we know it's not a human and prevent the form being submitted." => array( null, __("Enabling this feature tricks spam bots by giving them a hidden challenge only bots will see. If the bot tries the challenge we know it's not a human and prevent the form being submitted.", "forminator" ), ), // src/form/components/behaviour/security.js:28
182
+ "Enable logged in submission only" => array( null, __("Enable logged in submission only", "forminator" ), ), // src/form/components/behaviour/security.js:37
183
+ "Lock down your form submissions to registered users only." => array( null, __("Lock down your form submissions to registered users only.", "forminator" ), ), // src/form/components/behaviour/security.js:39
184
+ "Submission Behaviour" => array( null, __("Submission Behaviour", "forminator" ), ), // src/form/components/behaviour/submission.js:27
185
+ "Choose what you want to happen after your visitor has successfully submitted this form." => array( null, __("Choose what you want to happen after your visitor has successfully submitted this form.", "forminator" ), ), // src/form/components/behaviour/submission.js:30
186
+ "After submission" => array( null, __("After submission", "forminator" ), ), // src/form/components/behaviour/submission.js:42
187
+ "Choose what happens after a user successfully submits your form." => array( null, __("Choose what happens after a user successfully submits your form.", "forminator" ), ), // src/form/components/behaviour/submission.js:44
188
+ "Inline Message" => array( null, __("Inline Message", "forminator" ), ), // src/form/components/behaviour/submission.js:51
189
+ "Display a success message after form submitted." => array( null, __("Display a success message after form submitted.", "forminator" ), ), // src/form/components/behaviour/submission.js:58
190
+ "Auto-close success message after" => array( null, __("Auto-close success message after", "forminator" ), ), // src/form/components/behaviour/submission.js:113
191
+ "E.g. 5" => array( null, __("E.g. 5", "forminator" ), ), // src/form/components/behaviour/submission.js:120
192
+ "seconds." => array( null, __("seconds.", "forminator" ), ), // src/form/components/behaviour/submission.js:129
193
+ "Redirect user to a URL" => array( null, __("Redirect user to a URL", "forminator" ), ), // src/form/components/behaviour/submission.js:139
194
+ "Redirect URL" => array( null, __("Redirect URL", "forminator" ), ), // src/form/components/behaviour/submission.js:144
195
+ "https://www.mywebsite.com" => array( null, __("https://www.mywebsite.com", "forminator" ), ), // src/form/components/behaviour/submission.js:145
196
+ "Provide the absolute URL of the page you want to redirect users to after submitting the login form. For example, to redirect users to the WordPress admin, use the URL {{strong}}http://www.website.com/wp-admin/{{/strong}}." => array( null, __("Provide the absolute URL of the page you want to redirect users to after submitting the login form. For example, to redirect users to the WordPress admin, use the URL {{strong}}http://www.website.com/wp-admin/{{/strong}}.", "forminator" ), ), // src/form/components/behaviour/submission.js:148
197
+ "URL Redirect" => array( null, __("URL Redirect", "forminator" ), ), // src/form/components/behaviour/submission.js:158
 
 
 
 
198
  "Redirection Option" => array( null, __("Redirection Option", "forminator" ), ), // src/form/components/behaviour/submission.js:167
199
+ "Redirect on the same tab" => array( null, __("Redirect on the same tab", "forminator" ), ), // src/form/components/behaviour/submission.js:171
200
+ "Redirect on new tab and show thank you message on form page" => array( null, __("Redirect on new tab and show thank you message on form page", "forminator" ), ), // src/form/components/behaviour/submission.js:172
201
+ "Redirect on new tab and hide form on the form page" => array( null, __("Redirect on new tab and hide form on the form page", "forminator" ), ), // src/form/components/behaviour/submission.js:173
202
+ "Hide form" => array( null, __("Hide form", "forminator" ), ), // src/form/components/behaviour/submission.js:183
203
+ "Submit Message" => array( null, __("Submit Message", "forminator" ), ), // src/form/components/behaviour/submission.js:195
204
+ "Method" => array( null, __("Method", "forminator" ), ), // src/form/components/behaviour/submission.js:237
205
+ "Choose whether you want to use AJAX to send this form without reloading the page, or use the more traditional method of reloading the page." => array( null, __("Choose whether you want to use AJAX to send this form without reloading the page, or use the more traditional method of reloading the page.", "forminator" ), ), // src/form/components/behaviour/submission.js:238
206
+ "Ajax" => array( null, __("Ajax", "forminator" ), ), // src/form/components/behaviour/submission.js:246
207
+ "Ajax method, when used with the Stripe field, will hide your form after the successful submission and show your inline success message only. The form will be available again when the page is reloaded." => array( null, __("Ajax method, when used with the Stripe field, will hide your form after the successful submission and show your inline success message only. The form will be available again when the page is reloaded.", "forminator" ), ), // src/form/components/behaviour/submission.js:251
208
+ "Page Reload" => array( null, __("Page Reload", "forminator" ), ), // src/form/components/behaviour/submission.js:263
209
+ "Validation" => array( null, __("Validation", "forminator" ), ), // src/form/components/behaviour/submission.js:270
210
+ "For fields that you've chosen to validate, choose how you want the validation to behave. On submission will run validation checks when the user submits the form using Ajax (recommended). The Live method will check fields at the same time as the user fills them out. Server side does the validation using PHP and returns any error messages after a page reload." => array( null, __("For fields that you've chosen to validate, choose how you want the validation to behave. On submission will run validation checks when the user submits the form using Ajax (recommended). The Live method will check fields at the same time as the user fills them out. Server side does the validation using PHP and returns any error messages after a page reload.", "forminator" ), ), // src/form/components/behaviour/submission.js:271
211
+ "On Submit" => array( null, __("On Submit", "forminator" ), ), // src/form/components/behaviour/submission.js:281
212
+ "Server Side" => array( null, __("Server Side", "forminator" ), ), // src/form/components/behaviour/submission.js:282
213
+ "Enable inline validation (as user types)" => array( null, __("Enable inline validation (as user types)", "forminator" ), ), // src/form/components/behaviour/submission.js:286
214
+ "Choose whether you want to show a loader on your form until it is submitted. We highly recommend using this on long forms or forms with payment field since they may take a few seconds to submit." => array( null, __("Choose whether you want to show a loader on your form until it is submitted. We highly recommend using this on long forms or forms with payment field since they may take a few seconds to submit.", "forminator" ), ), // src/form/components/behaviour/submission.js:296
215
+ "Show Loader" => array( null, __("Show Loader", "forminator" ), ), // src/form/components/behaviour/submission.js:306
216
+ "E.g. Submitting..." => array( null, __("E.g. Submitting...", "forminator" ), ), // src/form/components/behaviour/submission.js:311
217
+ "Choose the text to show on the right of loading icon" => array( null, __("Choose the text to show on the right of loading icon", "forminator" ), ), // src/form/components/behaviour/submission.js:314
218
+ "null" => array( null, __("null", "forminator" ), ), // src/form/components/builder/field.js:638
219
+ "more condition(s)" => array( null, __("more condition(s)", "forminator" ), ), // src/form/components/builder/field.js:685
220
+ "if" => array( null, __("if", "forminator" ), ), // src/form/components/builder/field.js:690
221
+ "Field options" => array( null, __("Field options", "forminator" ), ), // src/form/components/builder/field.js:829
222
+ "Edit Field" => array( null, __("Edit Field", "forminator" ), ), // src/form/components/builder/field.js:840
223
+ "Duplicate" => array( null, __("Duplicate", "forminator" ), ), // src/form/components/builder/field.js:848
224
+ "Delete" => array( null, __("Delete", "forminator" ), ), // src/form/components/builder/field.js:856
225
  "Insert Fields" => array( null, __("Insert Fields", "forminator" ), ), // src/form/components/builder/insert-fields.js:17
226
  " Insert Fields" => array( null, __(" Insert Fields", "forminator" ), ), // src/form/components/builder/insert-fields.js:43
227
  "A form without fields isn’t going to be very useful… Add your first field above!" => array( null, __("A form without fields isn’t going to be very useful… Add your first field above!", "forminator" ), ), // src/form/components/builder/insert-fields.js:58
279
  "0.9" => array( null, __("0.9", "forminator" ), ), // src/form/components/fields/captcha.js:199
280
  "1.0" => array( null, __("1.0", "forminator" ), ), // src/form/components/fields/captcha.js:200
281
  "Language" => array( null, __("Language", "forminator" ), ), // src/form/components/fields/captcha.js:219
282
+ "By default, we will use the language chosen in the global reCAPTCHA settings. However, you can choose a different language for this reCAPTCHA." => array( null, __("By default, we will use the language chosen in the global reCAPTCHA settings. However, you can choose a different language for this reCAPTCHA.", "forminator" ), ), // src/form/components/fields/captcha.js:224
283
  "Automatic" => array( null, __("Automatic", "forminator" ), ), // src/form/components/fields/captcha.js:237
284
  "Error Message" => array( null, __("Error Message", "forminator" ), ), // src/form/components/fields/captcha.js:255
285
  "Choose the error message you want to display on your form when reCAPTCHA verification fails." => array( null, __("Choose the error message you want to display on your form when reCAPTCHA verification fails.", "forminator" ), ), // src/form/components/fields/captcha.js:260
365
  "Previous Button" => array( null, __("Previous Button", "forminator" ), ), // src/form/components/fields/pagination.js:49
366
  "Enter text" => array( null, __("Enter text", "forminator" ), ), // src/form/components/fields/pagination.js:50
367
  "Next Button" => array( null, __("Next Button", "forminator" ), ), // src/form/components/fields/pagination.js:55
368
+ "Confirm Password" => array( null, __("Confirm Password", "forminator" ), ), // src/form/components/fields/password.js:69
369
+ "Confirm password" => array( null, __("Confirm password", "forminator" ), ), // src/form/components/fields/password.js:80
370
+ "Confirm new password" => array( null, __("Confirm new password", "forminator" ), ), // src/form/components/fields/password.js:89
371
+ "Minimum password strength" => array( null, __("Minimum password strength", "forminator" ), ), // src/form/components/fields/password.js:122
372
+ "Choose a minimum password strength required to force your users to sign up with a password stronger than the minimum requirement." => array( null, __("Choose a minimum password strength required to force your users to sign up with a password stronger than the minimum requirement.", "forminator" ), ), // src/form/components/fields/password.js:123
373
+ "Short" => array( null, __("Short", "forminator" ), ), // src/form/components/fields/password.js:138
374
+ "Bad" => array( null, __("Bad", "forminator" ), ), // src/form/components/fields/password.js:139
375
+ "Good" => array( null, __("Good", "forminator" ), ), // src/form/components/fields/password.js:140
376
+ "Strong" => array( null, __("Strong", "forminator" ), ), // src/form/components/fields/password.js:141
377
+ "This is displayed when the user's password is weaker than the minimum requirement." => array( null, __("This is displayed when the user's password is weaker than the minimum requirement.", "forminator" ), ), // src/form/components/fields/password.js:153
378
+ "Validate" => array( null, __("Validate", "forminator" ), ), // src/form/components/fields/password.js:168
379
+ "Make sure the user has filled out this field correctly and warn them when they haven't." => array( null, __("Make sure the user has filled out this field correctly and warn them when they haven't.", "forminator" ), ), // src/form/components/fields/password.js:170
380
+ "Validate Field" => array( null, __("Validate Field", "forminator" ), ), // src/form/components/fields/password.js:188
381
+ "Validation message" => array( null, __("Validation message", "forminator" ), ), // src/form/components/fields/password.js:194
382
+ "Enter validation message" => array( null, __("Enter validation message", "forminator" ), ), // src/form/components/fields/password.js:196
383
  "In %s" => array( null, __("In %s", "forminator" ), ), // src/form/components/fields/paypal.js:49
384
  "You have not connected your PayPal account with Forminator. Connect your PayPal account {{link}}here{{/link}} and then come back to configure this field." => array( null, __("You have not connected your PayPal account with Forminator. Connect your PayPal account {{link}}here{{/link}} and then come back to configure this field.", "forminator" ), ), // src/form/components/fields/paypal.js:69
385
  "Mode of payment" => array( null, __("Mode of payment", "forminator" ), ), // src/form/components/fields/paypal.js:88
428
  "Elo" => array( null, __("Elo", "forminator" ), ), // src/form/components/fields/paypal.js:491
429
  "Hiper" => array( null, __("Hiper", "forminator" ), ), // src/form/components/fields/paypal.js:498
430
  "Debug Mode" => array( null, __("Debug Mode", "forminator" ), ), // src/form/components/fields/paypal.js:509
431
+ "PayPal debug mode helps troubleshoot any issues. However, it's recommended to disable this in production as it causes a significant increase in the script size and performance decrease." => array( null, __("PayPal debug mode helps troubleshoot any issues. However, it's recommended to disable this in production as it causes a significant increase in the script size and performance decrease.", "forminator" ), ), // src/form/components/fields/paypal.js:516
432
  "Disable" => array( null, __("Disable", "forminator" ), ), // src/form/components/fields/paypal.js:531
433
  "Enable" => array( null, __("Enable", "forminator" ), ), // src/form/components/fields/paypal.js:532
 
 
 
434
  "Validation Type" => array( null, __("Validation Type", "forminator" ), ), // src/form/components/fields/phone.js:61
435
  "National" => array( null, __("National", "forminator" ), ), // src/form/components/fields/phone.js:64
436
  "International" => array( null, __("International", "forminator" ), ), // src/form/components/fields/phone.js:65
438
  "Limit to:" => array( null, __("Limit to:", "forminator" ), ), // src/form/components/fields/phone.js:73
439
  "10" => array( null, __("10", "forminator" ), ), // src/form/components/fields/phone.js:75
440
  "Select country" => array( null, __("Select country", "forminator" ), ), // src/form/components/fields/phone.js:84
 
 
441
  "Title" => array( null, __("Title", "forminator" ), ), // src/form/components/fields/postdata.js:24
442
  "Content" => array( null, __("Content", "forminator" ), ), // src/form/components/fields/postdata.js:29
443
  "Excerpt" => array( null, __("Excerpt", "forminator" ), ), // src/form/components/fields/postdata.js:34
456
  "Pending Review" => array( null, __("Pending Review", "forminator" ), ), // src/form/components/fields/postdata.js:293
457
  "Published" => array( null, __("Published", "forminator" ), ), // src/form/components/fields/postdata.js:296
458
  "Default author" => array( null, __("Default author", "forminator" ), ), // src/form/components/fields/postdata.js:309
459
+ "By default we'll assign posts to users if they're logged in, and fall back to the user specified below if you're allowing visitors to make posts. You can also override this to always assign posts to a specified user." => array( null, __("By default we'll assign posts to users if they're logged in, and fall back to the user specified below if you're allowing visitors to make posts. You can also override this to always assign posts to a specified user.", "forminator" ), ), // src/form/components/fields/postdata.js:312
460
  "Always assign posts to this user" => array( null, __("Always assign posts to this user", "forminator" ), ), // src/form/components/fields/postdata.js:341
461
  "Taxonomies limits" => array( null, __("Taxonomies limits", "forminator" ), ), // src/form/components/fields/postdata.js:356
462
  "Choose whether to allow single or multiple categories or tags on this post." => array( null, __("Choose whether to allow single or multiple categories or tags on this post.", "forminator" ), ), // src/form/components/fields/postdata.js:359
473
  "Choose whether to allow this field to be used in calculations or not. The value used in calculations is the same as the input value of this field." => array( null, __("Choose whether to allow this field to be used in calculations or not. The value used in calculations is the same as the input value of this field.", "forminator" ), ), // src/form/components/fields/singlevalue.js:209
474
  "Credit / Debit Card" => array( null, __("Credit / Debit Card", "forminator" ), ), // src/form/components/fields/stripe.js:115
475
  "Choose your preferred language for the Stripe field. This will affect the placeholders language, and the card validation errors returned by the Stripe." => array( null, __("Choose your preferred language for the Stripe field. This will affect the placeholders language, and the card validation errors returned by the Stripe.", "forminator" ), ), // src/form/components/fields/stripe.js:140
476
+ "Auto" => array( null, __("Auto", "forminator" ), ), // src/form/components/fields/stripe.js:146
477
+ "English (en)" => array( null, __("English (en)", "forminator" ), ), // src/form/components/fields/stripe.js:147
478
+ "Simplified Chinese (zh)" => array( null, __("Simplified Chinese (zh)", "forminator" ), ), // src/form/components/fields/stripe.js:148
479
+ "Danish (da)" => array( null, __("Danish (da)", "forminator" ), ), // src/form/components/fields/stripe.js:149
480
+ "Dutch (nl)" => array( null, __("Dutch (nl)", "forminator" ), ), // src/form/components/fields/stripe.js:150
481
+ "Finnish (fi)" => array( null, __("Finnish (fi)", "forminator" ), ), // src/form/components/fields/stripe.js:151
482
+ "French (fr)" => array( null, __("French (fr)", "forminator" ), ), // src/form/components/fields/stripe.js:152
483
+ "German (de)" => array( null, __("German (de)", "forminator" ), ), // src/form/components/fields/stripe.js:153
484
+ "Italian (it)" => array( null, __("Italian (it)", "forminator" ), ), // src/form/components/fields/stripe.js:154
485
+ "Japanese (ja)" => array( null, __("Japanese (ja)", "forminator" ), ), // src/form/components/fields/stripe.js:155
486
+ "Norwegian (no)" => array( null, __("Norwegian (no)", "forminator" ), ), // src/form/components/fields/stripe.js:156
487
+ "Spanish (es)" => array( null, __("Spanish (es)", "forminator" ), ), // src/form/components/fields/stripe.js:157
488
+ "Swedish (sv)" => array( null, __("Swedish (sv)", "forminator" ), ), // src/form/components/fields/stripe.js:158
489
+ "Card icon" => array( null, __("Card icon", "forminator" ), ), // src/form/components/fields/stripe.js:169
490
+ "Choose whether you want to show the card icon on the Stripe field." => array( null, __("Choose whether you want to show the card icon on the Stripe field.", "forminator" ), ), // src/form/components/fields/stripe.js:170
491
+ "Postal code" => array( null, __("Postal code", "forminator" ), ), // src/form/components/fields/stripe.js:187
492
+ "Choose whether you want to collect the postal code on the Stripe field." => array( null, __("Choose whether you want to collect the postal code on the Stripe field.", "forminator" ), ), // src/form/components/fields/stripe.js:188
493
+ "Prefill (optional)" => array( null, __("Prefill (optional)", "forminator" ), ), // src/form/components/fields/stripe.js:208
494
+ "If you are already collecting ZIP code on your form, you can pre-fill it on the Stripe field." => array( null, __("If you are already collecting ZIP code on your form, you can pre-fill it on the Stripe field.", "forminator" ), ), // src/form/components/fields/stripe.js:230
495
+ "You have not connected your Stripe account with Forminator. Connect your Stripe account {{link}}here{{/link}} and then come back to configure this field." => array( null, __("You have not connected your Stripe account with Forminator. Connect your Stripe account {{link}}here{{/link}} and then come back to configure this field.", "forminator" ), ), // src/form/components/fields/stripe.js:255
496
+ "We recommend using test mode to ensure the payments are working as expected and when you are ready to start collecting live payments, switch to Live payments mode." => array( null, __("We recommend using test mode to ensure the payments are working as expected and when you are ready to start collecting live payments, switch to Live payments mode.", "forminator" ), ), // src/form/components/fields/stripe.js:277
497
+ "Test" => array( null, __("Test", "forminator" ), ), // src/form/components/fields/stripe.js:283
498
+ "It's recommended to charge in your customers' currency to drive more sales and avoid foreign exchange fee to your customers. Read more about Stripe’s currency conversions {{link}}here{{/link}}." => array( null, __("It's recommended to charge in your customers' currency to drive more sales and avoid foreign exchange fee to your customers. Read more about Stripe’s currency conversions {{link}}here{{/link}}.", "forminator" ), ), // src/form/components/fields/stripe.js:292
499
+ "Minimum amount required to process Stripe payments is equivalent to {{strong}}0.5 USD{{/strong}}." => array( null, __("Minimum amount required to process Stripe payments is equivalent to {{strong}}0.5 USD{{/strong}}.", "forminator" ), ), // src/form/components/fields/stripe.js:347
500
+ "Payment Receipt" => array( null, __("Payment Receipt", "forminator" ), ), // src/form/components/fields/stripe.js:417
501
+ "Choose whether you want Stripe to email a receipt to your customers on successful payment. Note that Stripe sends the email receipt only for live payments. {{link}}Customize email template{{/link}}." => array( null, __("Choose whether you want Stripe to email a receipt to your customers on successful payment. Note that Stripe sends the email receipt only for live payments. {{link}}Customize email template{{/link}}.", "forminator" ), ), // src/form/components/fields/stripe.js:425
502
+ "Email address" => array( null, __("Email address", "forminator" ), ), // src/form/components/fields/stripe.js:454
503
+ "E.g. john@doe.com" => array( null, __("E.g. john@doe.com", "forminator" ), ), // src/form/components/fields/stripe.js:456
504
+ "Select an email field" => array( null, __("Select an email field", "forminator" ), ), // src/form/components/fields/stripe.js:458
505
+ "Payment Details (optional)" => array( null, __("Payment Details (optional)", "forminator" ), ), // src/form/components/fields/stripe.js:483
506
+ "You can add a statement decipher and a description to help you and your customers recognizing the transactions made on this form." => array( null, __("You can add a statement decipher and a description to help you and your customers recognizing the transactions made on this form.", "forminator" ), ), // src/form/components/fields/stripe.js:491
507
+ "Statement decipher" => array( null, __("Statement decipher", "forminator" ), ), // src/form/components/fields/stripe.js:501
508
+ "E.g. Company Name" => array( null, __("E.g. Company Name", "forminator" ), ), // src/form/components/fields/stripe.js:504
509
+ "this is the business name your customers will see on their card statement." => array( null, __("this is the business name your customers will see on their card statement.", "forminator" ), ), // src/form/components/fields/stripe.js:507
510
+ "Up to 22 characters only" => array( null, __("Up to 22 characters only", "forminator" ), ), // src/form/components/fields/stripe.js:512
511
+ "Payment description" => array( null, __("Payment description", "forminator" ), ), // src/form/components/fields/stripe.js:519
512
+ "Enter your payment description here" => array( null, __("Enter your payment description here", "forminator" ), ), // src/form/components/fields/stripe.js:520
513
+ "This appears on your Stripe account and on the payment receipt sent to your customers." => array( null, __("This appears on your Stripe account and on the payment receipt sent to your customers.", "forminator" ), ), // src/form/components/fields/stripe.js:523
514
+ "Card Validation" => array( null, __("Card Validation", "forminator" ), ), // src/form/components/fields/stripe.js:533
515
+ "Note: Stripe field automatically validates the card as the user fills the card details regardless of the validation behaviour set on the Behaviours tab." => array( null, __("Note: Stripe field automatically validates the card as the user fills the card details regardless of the validation behaviour set on the Behaviours tab.", "forminator" ), ), // src/form/components/fields/stripe.js:539
516
+ "Billing Details" => array( null, __("Billing Details", "forminator" ), ), // src/form/components/fields/stripe.js:551
517
+ "If you are collection billing details on your forms, you can send that data to Stripe. The billing details will appear on your Stripe dashboard for each payment." => array( null, __("If you are collection billing details on your forms, you can send that data to Stripe. The billing details will appear on your Stripe dashboard for each payment.", "forminator" ), ), // src/form/components/fields/stripe.js:559
518
+ "Customer name (optional)" => array( null, __("Customer name (optional)", "forminator" ), ), // src/form/components/fields/stripe.js:583
519
+ "Select a name field" => array( null, __("Select a name field", "forminator" ), ), // src/form/components/fields/stripe.js:585
520
+ "Customer email address (optional)" => array( null, __("Customer email address (optional)", "forminator" ), ), // src/form/components/fields/stripe.js:600
521
+ "Select an name field" => array( null, __("Select an name field", "forminator" ), ), // src/form/components/fields/stripe.js:602
522
+ "Billing address (optional)" => array( null, __("Billing address (optional)", "forminator" ), ), // src/form/components/fields/stripe.js:617
523
+ "Select an address field" => array( null, __("Select an address field", "forminator" ), ), // src/form/components/fields/stripe.js:619
524
+ "Meta Data" => array( null, __("Meta Data", "forminator" ), ), // src/form/components/fields/stripe.js:643
525
+ "You can send custom meta data to Stripe. This would appear under the MetaData section of every payment. A maximum of 20 meta keys can be sent. The key name must be 20 characters or less, and the mapped data will be truncated to 500 characters as Stripe's requirements." => array( null, __("You can send custom meta data to Stripe. This would appear under the MetaData section of every payment. A maximum of 20 meta keys can be sent. The key name must be 20 characters or less, and the mapped data will be truncated to 500 characters as Stripe's requirements.", "forminator" ), ), // src/form/components/fields/stripe.js:651
526
+ "MetaData" => array( null, __("MetaData", "forminator" ), ), // src/form/components/fields/stripe.js:692
527
+ "Additional CSS Classes" => array( null, __("Additional CSS Classes", "forminator" ), ), // src/form/components/fields/stripe.js:708
528
+ "Stripe automatically adds classes to the container DOM element based on the field state. However, you can customize them here. {{link}}Read more{{/link}}" => array( null, __("Stripe automatically adds classes to the container DOM element based on the field state. However, you can customize them here. {{link}}Read more{{/link}}", "forminator" ), ), // src/form/components/fields/stripe.js:711
529
+ "Base class" => array( null, __("Base class", "forminator" ), ), // src/form/components/fields/stripe.js:727
530
+ "Complete" => array( null, __("Complete", "forminator" ), ), // src/form/components/fields/stripe.js:735
531
+ "Empty" => array( null, __("Empty", "forminator" ), ), // src/form/components/fields/stripe.js:743
532
+ "Focused" => array( null, __("Focused", "forminator" ), ), // src/form/components/fields/stripe.js:751
533
+ "Invalid" => array( null, __("Invalid", "forminator" ), ), // src/form/components/fields/stripe.js:759
534
+ "Autofilled (Chrome and Safari only)" => array( null, __("Autofilled (Chrome and Safari only)", "forminator" ), ), // src/form/components/fields/stripe.js:767
535
  "Max characters" => array( null, __("Max characters", "forminator" ), ), // src/form/components/fields/text.js:80
536
  "By default the user can enter as many characters as they want. Use this setting to limit the number of characters the user can enter. Leave field blank to allow unlimited characters." => array( null, __("By default the user can enter as many characters as they want. Use this setting to limit the number of characters the user can enter. Leave field blank to allow unlimited characters.", "forminator" ), ), // src/form/components/fields/text.js:81
537
  "Character limit" => array( null, __("Character limit", "forminator" ), ), // src/form/components/fields/text.js:89
538
  "E.g. 100" => array( null, __("E.g. 100", "forminator" ), ), // src/form/components/fields/text.js:96
539
  "Characters" => array( null, __("Characters", "forminator" ), ), // src/form/components/fields/text.js:106
540
  "Words" => array( null, __("Words", "forminator" ), ), // src/form/components/fields/text.js:107
541
+ "Rich-Text editor" => array( null, __("Rich-Text editor", "forminator" ), ), // src/form/components/fields/textarea.js:80
542
+ "Enable TinyMCE editor to allow the formatted text." => array( null, __("Enable TinyMCE editor to allow the formatted text.", "forminator" ), ), // src/form/components/fields/textarea.js:81
543
+ "Default height" => array( null, __("Default height", "forminator" ), ), // src/form/components/fields/textarea.js:146
544
+ "Choose the default minimum height of your textarea field." => array( null, __("Choose the default minimum height of your textarea field.", "forminator" ), ), // src/form/components/fields/textarea.js:150
545
+ "Note: The query parameter's value passed in URL should match with the selected time format." => array( null, __("Note: The query parameter's value passed in URL should match with the selected time format.", "forminator" ), ), // src/form/components/fields/time.js:36
546
  "Number inputs" => array( null, __("Number inputs", "forminator" ), ), // src/form/components/fields/time.js:56
547
  "12 hour" => array( null, __("12 hour", "forminator" ), ), // src/form/components/fields/time.js:64
548
  "24 hour" => array( null, __("24 hour", "forminator" ), ), // src/form/components/fields/time.js:65
556
  "Use this feature to specify a default selected time." => array( null, __("Use this feature to specify a default selected time.", "forminator" ), ), // src/form/components/fields/time.js:208
557
  "AM" => array( null, __("AM", "forminator" ), ), // src/form/components/fields/time.js:260
558
  "PM" => array( null, __("PM", "forminator" ), ), // src/form/components/fields/time.js:261
559
+ "Filesize limit" => array( null, __("Filesize limit", "forminator" ), ), // src/form/components/fields/upload.js:56
560
+ "Your server allows uploads up to 8MB. However, you can set a lower limit than this using the input below. To enable uploads of more than 8MB, you'll need to adjust the maximum upload limit in your PHP.ini file." => array( null, __("Your server allows uploads up to 8MB. However, you can set a lower limit than this using the input below. To enable uploads of more than 8MB, you'll need to adjust the maximum upload limit in your PHP.ini file.", "forminator" ), ), // src/form/components/fields/upload.js:60
561
+ "MB" => array( null, __("MB", "forminator" ), ), // src/form/components/fields/upload.js:88
562
+ "KB" => array( null, __("KB", "forminator" ), ), // src/form/components/fields/upload.js:89
563
+ "B" => array( null, __("B", "forminator" ), ), // src/form/components/fields/upload.js:90
564
+ "The file size you have entered exceeds what your current hosting settings are capped to. You need to increase your max filesize limit at the server level first." => array( null, __("The file size you have entered exceeds what your current hosting settings are capped to. You need to increase your max filesize limit at the server level first.", "forminator" ), ), // src/form/components/fields/upload.js:98
565
+ "Show files in media library" => array( null, __("Show files in media library", "forminator" ), ), // src/form/components/fields/upload.js:117
566
+ "Choose whether you want to show the files uploaded by your visitors using this field in your media library." => array( null, __("Choose whether you want to show the files uploaded by your visitors using this field in your media library.", "forminator" ), ), // src/form/components/fields/upload.js:121
567
  "Edit Form" => array( null, __("Edit Form", "forminator" ), ), // src/form/components/header.js:9
568
  "View Documentation" => array( null, __("View Documentation", "forminator" ), ), // src/form/components/header/documentation.js:14
569
  "Name your form" => array( null, __("Name your form", "forminator" ), ), // src/form/components/header/title.js:35
576
  "Applications" => array( null, __("Applications", "forminator" ), ), // src/form/components/integrations.js:138
577
  "You can send this form’s data to any of the connected third party apps. Connect to more apps on the {{link}}Integrations{{/link}} page." => array( null, __("You can send this form’s data to any of the connected third party apps. Connect to more apps on the {{link}}Integrations{{/link}} page.", "forminator" ), ), // src/form/components/integrations.js:139
578
  "Settings" => array( null, __("Settings", "forminator" ), ), // src/form/components/integrations.js:165
579
+ "Login User" => array( null, __("Login User", "forminator" ), ), // src/form/components/login.js:31
580
+ "Additional Settings" => array( null, __("Additional Settings", "forminator" ), ), // src/form/components/login/additional-settings.js:20
581
+ "These settings will add some extra control on your login process." => array( null, __("These settings will add some extra control on your login process.", "forminator" ), ), // src/form/components/login/additional-settings.js:23
582
+ "Hide the form if a user is already logged in" => array( null, __("Hide the form if a user is already logged in", "forminator" ), ), // src/form/components/login/additional-settings.js:34
583
+ "Enabling this will hide the form from logged in users." => array( null, __("Enabling this will hide the form from logged in users.", "forminator" ), ), // src/form/components/login/additional-settings.js:35
584
+ "Message (optional)" => array( null, __("Message (optional)", "forminator" ), ), // src/form/components/login/additional-settings.js:45
585
+ "Type a message for logged in users here..." => array( null, __("Type a message for logged in users here...", "forminator" ), ), // src/form/components/login/additional-settings.js:48
586
+ "You can optionally add a message for logged in users, which appears when the form is hidden." => array( null, __("You can optionally add a message for logged in users, which appears when the form is hidden.", "forminator" ), ), // src/form/components/login/additional-settings.js:49
587
+ "Login Fields" => array( null, __("Login Fields", "forminator" ), ), // src/form/components/login/meta-mapping.js:25
588
+ "Map your form fields to the meta keys and have additional control over the login form fields." => array( null, __("Map your form fields to the meta keys and have additional control over the login form fields.", "forminator" ), ), // src/form/components/login/meta-mapping.js:28
589
+ "Form Fields Mapping" => array( null, __("Form Fields Mapping", "forminator" ), ), // src/form/components/login/meta-mapping.js:38
590
+ "Assign your form fields to the meta keys required to login a user." => array( null, __("Assign your form fields to the meta keys required to login a user.", "forminator" ), ), // src/form/components/login/meta-mapping.js:41
591
+ "Username" => array( null, __("Username", "forminator" ), ), // src/form/components/login/meta-mapping.js:52
592
+ "Password" => array( null, __("Password", "forminator" ), ), // src/form/components/login/meta-mapping.js:66
593
+ "Remember Me Field" => array( null, __("Remember Me Field", "forminator" ), ), // src/form/components/login/meta-mapping.js:82
594
+ "Choose whether to show the {{strong}}Remember Me{{/strong}} field in your form. This option will add a Remember Me checkbox before the submit button." => array( null, __("Choose whether to show the {{strong}}Remember Me{{/strong}} field in your form. This option will add a Remember Me checkbox before the submit button.", "forminator" ), ), // src/form/components/login/meta-mapping.js:84
595
+ "Remember me" => array( null, __("Remember me", "forminator" ), ), // src/form/components/login/meta-mapping.js:103
596
+ "Cookie Expiration" => array( null, __("Cookie Expiration", "forminator" ), ), // src/form/components/login/meta-mapping.js:116
597
+ "day(s)" => array( null, __("day(s)", "forminator" ), ), // src/form/components/login/meta-mapping.js:127
598
+ "week(s)" => array( null, __("week(s)", "forminator" ), ), // src/form/components/login/meta-mapping.js:130
599
+ "month(s)" => array( null, __("month(s)", "forminator" ), ), // src/form/components/login/meta-mapping.js:133
600
+ "year(s)" => array( null, __("year(s)", "forminator" ), ), // src/form/components/login/meta-mapping.js:136
601
+ "Users will have to provide login details again after the selected period." => array( null, __("Users will have to provide login details again after the selected period.", "forminator" ), ), // src/form/components/login/meta-mapping.js:142
602
  "Unpublish" => array( null, __("Unpublish", "forminator" ), ), // src/form/components/meta/buttons.js:71
603
  "Save Draft" => array( null, __("Save Draft", "forminator" ), ), // src/form/components/meta/buttons.js:73
604
  "Update" => array( null, __("Update", "forminator" ), ), // src/form/components/meta/buttons.js:88
629
  "Please enter recipients" => array( null, __("Please enter recipients", "forminator" ), ), // src/form/components/modals/notification.js:200
630
  "Please select rule" => array( null, __("Please select rule", "forminator" ), ), // src/form/components/modals/notification.js:212
631
  "Please add email routing" => array( null, __("Please add email routing", "forminator" ), ), // src/form/components/modals/notification.js:217
632
+ "Please fix the error(s) in the EMAIL tab." => array( null, __("Please fix the error(s) in the EMAIL tab.", "forminator" ), ), // src/form/components/modals/notification.js:223
633
+ "Add Email Notification" => array( null, __("Add Email Notification", "forminator" ), ), // src/form/components/modals/notification.js:261
634
+ "Email" => array( null, __("Email", "forminator" ), ), // src/form/components/modals/notification.js:286
635
+ "Recipients" => array( null, __("Recipients", "forminator" ), ), // src/form/components/modals/notification.js:295
636
+ "Advanced" => array( null, __("Advanced", "forminator" ), ), // src/form/components/modals/notification.js:304
637
+ "Conditions" => array( null, __("Conditions", "forminator" ), ), // src/form/components/modals/notification.js:313
638
+ "The label is to help you identify this email and won't appear anywhere in the email." => array( null, __("The label is to help you identify this email and won't appear anywhere in the email.", "forminator" ), ), // src/form/components/modals/notification.js:340
639
+ "E.g. Sales Team Notification" => array( null, __("E.g. Sales Team Notification", "forminator" ), ), // src/form/components/modals/notification.js:345
640
+ "E.g. New Form Submission" => array( null, __("E.g. New Form Submission", "forminator" ), ), // src/form/components/modals/notification.js:359
641
+ "Subject" => array( null, __("Subject", "forminator" ), ), // src/form/components/modals/notification.js:362
642
+ "Email subject can't be empty" => array( null, __("Email subject can't be empty", "forminator" ), ), // src/form/components/modals/notification.js:365
643
+ "Body" => array( null, __("Body", "forminator" ), ), // src/form/components/modals/notification.js:396
644
+ "Email body can't be empty" => array( null, __("Email body can't be empty", "forminator" ), ), // src/form/components/modals/notification.js:398
645
+ "The default behavior is to send the email to the same recipients. If you want to send this email to different recipients conditionally, you can enable the email routing and change the recipients of this email based on the user input." => array( null, __("The default behavior is to send the email to the same recipients. If you want to send this email to different recipients conditionally, you can enable the email routing and change the recipients of this email based on the user input.", "forminator" ), ), // src/form/components/modals/notification.js:416
646
+ "E.g. sales@website.com" => array( null, __("E.g. sales@website.com", "forminator" ), ), // src/form/components/modals/notification.js:450
647
+ "Separate multiple emails with a comma" => array( null, __("Separate multiple emails with a comma", "forminator" ), ), // src/form/components/modals/notification.js:456
648
+ "Email Routing" => array( null, __("Email Routing", "forminator" ), ), // src/form/components/modals/notification.js:476
649
+ "Enter from name here" => array( null, __("Enter from name here", "forminator" ), ), // src/form/components/modals/notification.js:503
650
+ "From Name" => array( null, __("From Name", "forminator" ), ), // src/form/components/modals/notification.js:504
651
+ "Enter from email here" => array( null, __("Enter from email here", "forminator" ), ), // src/form/components/modals/notification.js:525
652
+ "From Email" => array( null, __("From Email", "forminator" ), ), // src/form/components/modals/notification.js:526
653
+ "Enter reply-to email here" => array( null, __("Enter reply-to email here", "forminator" ), ), // src/form/components/modals/notification.js:547
654
+ "Reply-to Email" => array( null, __("Reply-to Email", "forminator" ), ), // src/form/components/modals/notification.js:548
655
+ "Enter CC email here" => array( null, __("Enter CC email here", "forminator" ), ), // src/form/components/modals/notification.js:569
656
+ "CC Emails" => array( null, __("CC Emails", "forminator" ), ), // src/form/components/modals/notification.js:570
657
+ "Enter BCC email here" => array( null, __("Enter BCC email here", "forminator" ), ), // src/form/components/modals/notification.js:591
658
+ "BCC Emails" => array( null, __("BCC Emails", "forminator" ), ), // src/form/components/modals/notification.js:592
659
+ "Discard Changes" => array( null, __("Discard Changes", "forminator" ), ), // src/form/components/modals/notification.js:637
660
+ "Add" => array( null, __("Add", "forminator" ), ), // src/form/components/modals/notification.js:649
661
  "Labels" => array( null, __("Labels", "forminator" ), ), // src/form/components/modals/pagination.js:79
662
  "Your form is divided into multiple pages by Page Break field(s), and you can customize the label of each page here. Page names appear on your form header along with the progress indicator." => array( null, __("Your form is divided into multiple pages by Page Break field(s), and you can customize the label of each page here. Page names appear on your form header along with the progress indicator.", "forminator" ), ), // src/form/components/modals/pagination.js:107
663
  "Finish" => array( null, __("Finish", "forminator" ), ), // src/form/components/modals/pagination.js:134
666
  "Loading preview…" => array( null, __("Loading preview…", "forminator" ), ), // src/form/components/modals/preview.js:73
667
  "Publishing form…" => array( null, __("Publishing form…", "forminator" ), ), // src/form/components/modals/publish.js:18
668
  "Great work! Please hold tight a few moments while we publish your form to the world." => array( null, __("Great work! Please hold tight a few moments while we publish your form to the world.", "forminator" ), ), // src/form/components/modals/publish.js:25
669
+ "Please fill required fields" => array( null, __("Please fill required fields", "forminator" ), ), // src/form/components/modals/settings.js:130
670
+ "Calculation values are required!" => array( null, __("Calculation values are required!", "forminator" ), ), // src/form/components/modals/settings.js:148
671
+ "Option labels are required!" => array( null, __("Option labels are required!", "forminator" ), ), // src/form/components/modals/settings.js:157
672
+ "Please, connect your Stripe account first!" => array( null, __("Please, connect your Stripe account first!", "forminator" ), ), // src/form/components/modals/settings.js:165
673
+ "Please, enter Stripe payment amount!" => array( null, __("Please, enter Stripe payment amount!", "forminator" ), ), // src/form/components/modals/settings.js:170
674
+ "Please select an email address for payment receipt." => array( null, __("Please select an email address for payment receipt.", "forminator" ), ), // src/form/components/modals/settings.js:175
675
+ "Please, select Stripe payment variable field!" => array( null, __("Please, select Stripe payment variable field!", "forminator" ), ), // src/form/components/modals/settings.js:180
676
+ "Empty labels are not allowed for meta values!" => array( null, __("Empty labels are not allowed for meta values!", "forminator" ), ), // src/form/components/modals/settings.js:189
677
+ "Please, connect your PayPal account first!" => array( null, __("Please, connect your PayPal account first!", "forminator" ), ), // src/form/components/modals/settings.js:197
678
+ "Calculation formula is required!" => array( null, __("Calculation formula is required!", "forminator" ), ), // src/form/components/modals/settings.js:205
679
+ "Limit Min value should be less than Max value." => array( null, __("Limit Min value should be less than Max value.", "forminator" ), ), // src/form/components/modals/settings.js:213
680
+ "Please enter API keys." => array( null, __("Please enter API keys.", "forminator" ), ), // src/form/components/modals/settings.js:220
681
+ "Calculations" => array( null, __("Calculations", "forminator" ), ), // src/form/components/modals/settings.js:338
682
+ "Styling" => array( null, __("Styling", "forminator" ), ), // src/form/components/modals/settings.js:358
683
+ "Customize" => array( null, __("Customize", "forminator" ), ), // src/form/components/modals/settings.js:368
684
+ "Visibility" => array( null, __("Visibility", "forminator" ), ), // src/form/components/modals/settings.js:378
685
  "Shortcode has been copied successfully." => array( null, __("Shortcode has been copied successfully.", "forminator" ), ), // src/form/components/modals/shortcode.js:20
686
  "Ready to go!" => array( null, __("Ready to go!", "forminator" ), ), // src/form/components/modals/shortcode.js:31
687
  "Your form is now ready to be embedded into a page or template of your choice. Simply copy and paste the shortcode below to display it!" => array( null, __("Your form is now ready to be embedded into a page or template of your choice. Simply copy and paste the shortcode below to display it!", "forminator" ), ), // src/form/components/modals/shortcode.js:37
689
  "Copy shortcode" => array( null, __("Copy shortcode", "forminator" ), ), // src/form/components/modals/shortcode.js:49
690
  "Button text" => array( null, __("Button text", "forminator" ), ), // src/form/components/modals/submit.js:102
691
  "Enter message" => array( null, __("Enter message", "forminator" ), ), // src/form/components/modals/submit.js:115
692
+ "Navigate" => array( null, __("Navigate", "forminator" ), ), // src/form/components/navigation/menu.js:92
693
  "Preview" => array( null, __("Preview", "forminator" ), ), // src/form/components/navigation/preview.js:16
694
  "You can send customized email notifications to your site admins and visitors on successful form submission. Advanced features like email routing and conditional emails provide granular control over the email notifications." => array( null, __("You can send customized email notifications to your site admins and visitors on successful form submission. Advanced features like email routing and conditional emails provide granular control over the email notifications.", "forminator" ), ), // src/form/components/notifications.js:36
695
  "Admin Email" => array( null, __("Admin Email", "forminator" ), ), // src/form/components/notifications/admin-email.js:294
734
  "Send a confirmation email to the user" => array( null, __("Send a confirmation email to the user", "forminator" ), ), // src/form/components/notifications/confirmation-email.js:308
735
  "If you leave it blank, we will automatically find first email field in the form as recipient. If there is no email field and user is logged in we will use their email." => array( null, __("If you leave it blank, we will automatically find first email field in the form as recipient. If there is no email field and user is logged in we will use their email.", "forminator" ), ), // src/form/components/notifications/confirmation-email.js:353
736
  "Send to {{strong}}\"%(label)s\"{{/strong}} if {{strong}}%(field)s{{/strong}} %(rule)s {{strong}}%(value)s{{/strong}}" => array( null, __("Send to {{strong}}\"%(label)s\"{{/strong}} if {{strong}}%(field)s{{/strong}} %(rule)s {{strong}}%(value)s{{/strong}}", "forminator" ), ), // src/form/components/notifications/email-routing-rule.js:168
737
+ "Routing Condition" => array( null, __("Routing Condition", "forminator" ), ), // src/form/components/notifications/email-routing-rule.js:234
738
+ "Enter value" => array( null, __("Enter value", "forminator" ), ), // src/form/components/notifications/email-routing-rule.js:365
739
  "You haven't defined any email routing rules yet. Click on the \"+ Add Rule\" button to add the recipients along with the routing rules." => array( null, __("You haven't defined any email routing rules yet. Click on the \"+ Add Rule\" button to add the recipients along with the routing rules.", "forminator" ), ), // src/form/components/notifications/email-routing.js:142
740
  "Email routing is enabled" => array( null, __("Email routing is enabled", "forminator" ), ), // src/form/components/notifications/notification.js:195
741
  "more recipient(s)" => array( null, __("more recipient(s)", "forminator" ), ), // src/form/components/notifications/notification.js:203
742
  "Open field settings" => array( null, __("Open field settings", "forminator" ), ), // src/form/components/notifications/notification.js:246
743
  "Edit" => array( null, __("Edit", "forminator" ), ), // src/form/components/notifications/notification.js:253
744
+ "User Account Activation" => array( null, __("User Account Activation", "forminator" ), ), // src/form/components/registration/account-activation.js:23
745
+ "Choose the activation method and other settings for the user accounts." => array( null, __("Choose the activation method and other settings for the user accounts.", "forminator" ), ), // src/form/components/registration/account-activation.js:26
746
+ "Activation Method" => array( null, __("Activation Method", "forminator" ), ), // src/form/components/registration/account-activation.js:36
747
+ "By default, the user account is activated on form submission. However, you can choose between {{strong}}Email Activation{{/strong}} which requires the user to click on an activation email or {{strong}}Manual Approval{{/strong}} which requires site admin to approve an account." => array( null, __("By default, the user account is activated on form submission. However, you can choose between {{strong}}Email Activation{{/strong}} which requires the user to click on an activation email or {{strong}}Manual Approval{{/strong}} which requires site admin to approve an account.", "forminator" ), ), // src/form/components/registration/account-activation.js:38
748
+ "Email Activation" => array( null, __("Email Activation", "forminator" ), ), // src/form/components/registration/account-activation.js:55
749
+ "Confirmation Page" => array( null, __("Confirmation Page", "forminator" ), ), // src/form/components/registration/account-activation.js:61
750
+ "Choose the page to redirect users when they click on confirmation link." => array( null, __("Choose the page to redirect users when they click on confirmation link.", "forminator" ), ), // src/form/components/registration/account-activation.js:63
751
+ "Manual Approval" => array( null, __("Manual Approval", "forminator" ), ), // src/form/components/registration/account-activation.js:73
752
+ "A site admin will have to manually approve each entry from the submissions page to activate the user accounts." => array( null, __("A site admin will have to manually approve each entry from the submissions page to activate the user accounts.", "forminator" ), ), // src/form/components/registration/account-activation.js:75
753
+ "Activation Email" => array( null, __("Activation Email", "forminator" ), ), // src/form/components/registration/account-activation.js:86
754
+ "By default, WordPress sends an activation email containing user account information after the account activation. However, you can choose not to send this email." => array( null, __("By default, WordPress sends an activation email containing user account information after the account activation. However, you can choose not to send this email.", "forminator" ), ), // src/form/components/registration/account-activation.js:88
755
+ "Since the {{strong}}Password{{/strong}} user meta key is mapped to {{strong}}Auto Generate Password{{/strong}}, it's recommended to keep this option to {{strong}}Default{{/strong}} so the auto-generated password can be sent to the users." => array( null, __("Since the {{strong}}Password{{/strong}} user meta key is mapped to {{strong}}Auto Generate Password{{/strong}}, it's recommended to keep this option to {{strong}}Default{{/strong}} so the auto-generated password can be sent to the users.", "forminator" ), ), // src/form/components/registration/account-activation.js:99
756
+ "Since the activation requires manual approval from site admin, it's recommended to keep this option to {{strong}}Default{{/strong}} to let users know when their account is activated." => array( null, __("Since the activation requires manual approval from site admin, it's recommended to keep this option to {{strong}}Default{{/strong}} to let users know when their account is activated.", "forminator" ), ), // src/form/components/registration/account-activation.js:112
757
+ "These settings will add some extra control on your registration process." => array( null, __("These settings will add some extra control on your registration process.", "forminator" ), ), // src/form/components/registration/additional-settings.js:23
758
+ "Automatically log in newly activated users" => array( null, __("Automatically log in newly activated users", "forminator" ), ), // src/form/components/registration/additional-settings.js:34
759
+ "This will automatically login a user on successful activation of their account." => array( null, __("This will automatically login a user on successful activation of their account.", "forminator" ), ), // src/form/components/registration/additional-settings.js:35
760
+ "Network's Main Site Role" => array( null, __("Network's Main Site Role", "forminator" ), ), // src/form/components/registration/meta-mapping.js:34
761
+ "If you don't want to create a user in network's main site, set this meta key to {{strong}}Don't create a user in Network's main site{{/strong}}." => array( null, __("If you don't want to create a user in network's main site, set this meta key to {{strong}}Don't create a user in Network's main site{{/strong}}.", "forminator" ), ), // src/form/components/registration/meta-mapping.js:35
762
+ "Role" => array( null, __("Role", "forminator" ), ), // src/form/components/registration/meta-mapping.js:51
763
+ "User Meta Mapping" => array( null, __("User Meta Mapping", "forminator" ), ), // src/form/components/registration/meta-mapping.js:58
764
+ "Assign your form fields to the user meta keys to use the data collected from the visitor to create a user profile." => array( null, __("Assign your form fields to the user meta keys to use the data collected from the visitor to create a user profile.", "forminator" ), ), // src/form/components/registration/meta-mapping.js:61
765
+ "Default Meta Keys" => array( null, __("Default Meta Keys", "forminator" ), ), // src/form/components/registration/meta-mapping.js:72
766
+ "Assign form fields to the default WordPress user meta keys (used in Profiles) below. You can assign a form field to multiple meta keys. If you assign a non-required form field to a required user meta, that form field will automatically become required in your form." => array( null, __("Assign form fields to the default WordPress user meta keys (used in Profiles) below. You can assign a form field to multiple meta keys. If you assign a non-required form field to a required user meta, that form field will automatically become required in your form.", "forminator" ), ), // src/form/components/registration/meta-mapping.js:75
767
+ "Select a Field" => array( null, __("Select a Field", "forminator" ), ), // src/form/components/registration/meta-mapping.js:120
768
+ "Website" => array( null, __("Website", "forminator" ), ), // src/form/components/registration/meta-mapping.js:143
769
+ "Auto Generated Password" => array( null, __("Auto Generated Password", "forminator" ), ), // src/form/components/registration/meta-mapping.js:166
770
+ "Custom User Meta" => array( null, __("Custom User Meta", "forminator" ), ), // src/form/components/registration/meta-mapping.js:186
771
+ "Create custom user meta keys and assign your form fields to them to set additional user meta keys on successful user registration." => array( null, __("Create custom user meta keys and assign your form fields to them to set additional user meta keys on successful user registration.", "forminator" ), ), // src/form/components/registration/meta-mapping.js:188
772
+ "Add Custom User Meta" => array( null, __("Add Custom User Meta", "forminator" ), ), // src/form/components/registration/meta-mapping.js:200
773
+ "No custom user meta created yet. Click on \"+ Add Custom User Meta\" to create custom user meta and map form fields to it." => array( null, __("No custom user meta created yet. Click on \"+ Add Custom User Meta\" to create custom user meta and map form fields to it.", "forminator" ), ), // src/form/components/registration/meta-mapping.js:207
774
+ "Site Registration" => array( null, __("Site Registration", "forminator" ), ), // src/form/components/registration/site-registration.js:22
775
+ "Choose whether to allow site registrations on your multisite network and different related settings." => array( null, __("Choose whether to allow site registrations on your multisite network and different related settings.", "forminator" ), ), // src/form/components/registration/site-registration.js:25
776
+ "Assign form fields to the default WordPress site meta keys bellow." => array( null, __("Assign form fields to the default WordPress site meta keys bellow.", "forminator" ), ), // src/form/components/registration/site-registration.js:50
777
+ "Site Name" => array( null, __("Site Name", "forminator" ), ), // src/form/components/registration/site-registration.js:57
778
+ "Site address meta key will be automatically set based on this field as {{strong}}false{{/strong}}" => array( null, __("Site address meta key will be automatically set based on this field as {{strong}}false{{/strong}}", "forminator" ), ), // src/form/components/registration/site-registration.js:61
779
+ "Site Title" => array( null, __("Site Title", "forminator" ), ), // src/form/components/registration/site-registration.js:78
780
+ "Site Role" => array( null, __("Site Role", "forminator" ), ), // src/form/components/registration/site-registration.js:93
781
+ "forever" => array( null, __("forever", "forminator" ), ), // src/form/components/settings.js:38
782
+ "retain" => array( null, __("retain", "forminator" ), ), // src/form/components/settings.js:49
783
+ "remove" => array( null, __("remove", "forminator" ), ), // src/form/components/settings.js:49
784
+ "Data Storage" => array( null, __("Data Storage", "forminator" ), ), // src/form/components/settings.js:60
785
+ "By default we will store all submissions in your database." => array( null, __("By default we will store all submissions in your database.", "forminator" ), ), // src/form/components/settings.js:62
786
+ "Disable store submissions in my database" => array( null, __("Disable store submissions in my database", "forminator" ), ), // src/form/components/settings.js:70
787
+ "If you do not want to store submissions in your database you can disable this feature. Alternately you can also schedule automatic deletion of submissions after a period of time below." => array( null, __("If you do not want to store submissions in your database you can disable this feature. Alternately you can also schedule automatic deletion of submissions after a period of time below.", "forminator" ), ), // src/form/components/settings.js:72
788
+ "Privacy" => array( null, __("Privacy", "forminator" ), ), // src/form/components/settings.js:84
789
+ "Choose how you want to handle this form’s data storage." => array( null, __("Choose how you want to handle this form’s data storage.", "forminator" ), ), // src/form/components/settings.js:87
790
+ "By default we will use the configuration you have set in your" => array( null, __("By default we will use the configuration you have set in your", "forminator" ), ), // src/form/components/settings.js:92
791
+ "global privacy settings." => array( null, __("global privacy settings.", "forminator" ), ), // src/form/components/settings.js:98
792
+ "How long do you want to retain this form's submissions for?" => array( null, __("How long do you want to retain this form's submissions for?", "forminator" ), ), // src/form/components/settings.js:109
793
+ "Use default" => array( null, __("Use default", "forminator" ), ), // src/form/components/settings.js:119
794
+ "Your default setting value is to keep the submissions" => array( null, __("Your default setting value is to keep the submissions", "forminator" ), ), // src/form/components/settings.js:122
795
+ "Days" => array( null, __("Days", "forminator" ), ), // src/form/components/settings.js:151
796
+ "Weeks" => array( null, __("Weeks", "forminator" ), ), // src/form/components/settings.js:154
797
+ "Months" => array( null, __("Months", "forminator" ), ), // src/form/components/settings.js:157
798
+ "Years" => array( null, __("Years", "forminator" ), ), // src/form/components/settings.js:160
799
+ "Leave the field blank to retain submissions forever." => array( null, __("Leave the field blank to retain submissions forever.", "forminator" ), ), // src/form/components/settings.js:166
800
+ "Account Erasure Requests" => array( null, __("Account Erasure Requests", "forminator" ), ), // src/form/components/settings.js:176
801
+ "When handling an account erasure request that contains an email associated with a submission, what do you want to do?" => array( null, __("When handling an account erasure request that contains an email associated with a submission, what do you want to do?", "forminator" ), ), // src/form/components/settings.js:179
802
+ "Your default setting value is to " => array( null, __("Your default setting value is to ", "forminator" ), ), // src/form/components/settings.js:194
803
+ " the submission." => array( null, __(" the submission.", "forminator" ), ), // src/form/components/settings.js:195
804
+ "Retain Submissions" => array( null, __("Retain Submissions", "forminator" ), ), // src/form/components/settings.js:211
805
+ "Remove Submissions" => array( null, __("Remove Submissions", "forminator" ), ), // src/form/components/settings.js:214
806
+ "Submission Files" => array( null, __("Submission Files", "forminator" ), ), // src/form/components/settings.js:222
807
+ "If your form has file upload field(s), choose whether to delete the file(s) related to a submission when that submission gets deleted." => array( null, __("If your form has file upload field(s), choose whether to delete the file(s) related to a submission when that submission gets deleted.", "forminator" ), ), // src/form/components/settings.js:225
808
+ "Keep" => array( null, __("Keep", "forminator" ), ), // src/form/components/settings.js:236
809
  "Unknown setting" => array( null, __("Unknown setting", "forminator" ), ), // src/form/components/settings/advanced.js:108
810
  "Assign a calculation value to each option. These values will not be shown on the form. You can assign only a numeric value." => array( null, __("Assign a calculation value to each option. These values will not be shown on the form. You can assign only a numeric value.", "forminator" ), ), // src/form/components/settings/calculations/options.js:39
811
  "Calculation value" => array( null, __("Calculation value", "forminator" ), ), // src/form/components/settings/calculations/options.js:58
814
  "Pick a date" => array( null, __("Pick a date", "forminator" ), ), // src/form/components/settings/date-multiple.js:74
815
  "Add selected date" => array( null, __("Add selected date", "forminator" ), ), // src/form/components/settings/date-multiple.js:81
816
  "Restricted dates" => array( null, __("Restricted dates", "forminator" ), ), // src/form/components/settings/date-multiple.js:92
817
+ "Allowed filetypes" => array( null, __("Allowed filetypes", "forminator" ), ), // src/form/components/settings/filetypes.js:117
818
+ "By default we will use {{a}}WordPress Default Allowed Mime Types{{/a}}. You can choose which types of files you want to allow users to upload." => array( null, __("By default we will use {{a}}WordPress Default Allowed Mime Types{{/a}}. You can choose which types of files you want to allow users to upload.", "forminator" ), ), // src/form/components/settings/filetypes.js:119
819
+ "Images" => array( null, __("Images", "forminator" ), ), // src/form/components/settings/filetypes.js:155
820
+ "Documents" => array( null, __("Documents", "forminator" ), ), // src/form/components/settings/filetypes.js:164
821
+ "Audio" => array( null, __("Audio", "forminator" ), ), // src/form/components/settings/filetypes.js:173
822
+ "Video" => array( null, __("Video", "forminator" ), ), // src/form/components/settings/filetypes.js:182
823
+ "Archive" => array( null, __("Archive", "forminator" ), ), // src/form/components/settings/filetypes.js:193
824
+ "Spreadsheet" => array( null, __("Spreadsheet", "forminator" ), ), // src/form/components/settings/filetypes.js:211
825
+ "Interactive" => array( null, __("Interactive", "forminator" ), ), // src/form/components/settings/filetypes.js:220
826
+ "If you're having trouble uploading one of these filetypes, it may be an issue with your hosting provider." => array( null, __("If you're having trouble uploading one of these filetypes, it may be an issue with your hosting provider.", "forminator" ), ), // src/form/components/settings/filetypes.js:228
827
  "Roboto" => array( null, __("Roboto", "forminator" ), ), // src/form/components/settings/fonts.js:55
828
  "Font Family" => array( null, __("Font Family", "forminator" ), ), // src/form/components/settings/fonts.js:56
829
  "Custom user font" => array( null, __("Custom user font", "forminator" ), ), // src/form/components/settings/fonts.js:70
833
  "Font Size" => array( null, __("Font Size", "forminator" ), ), // src/form/components/settings/fonts.js:135
834
  "Font Weight" => array( null, __("Font Weight", "forminator" ), ), // src/form/components/settings/fonts.js:142
835
  "Select font weight" => array( null, __("Select font weight", "forminator" ), ), // src/form/components/settings/fonts.js:143
 
836
  "Delete MetaData" => array( null, __("Delete MetaData", "forminator" ), ), // src/form/components/settings/metadata-option.js:97
837
  "Add Custom Meta" => array( null, __("Add Custom Meta", "forminator" ), ), // src/form/components/settings/metadata-value.js:131
838
  "No custom meta data created yet. Click on \"+ Add Custom to create custom meta and map form fields to it." => array( null, __("No custom meta data created yet. Click on \"+ Add Custom to create custom meta and map form fields to it.", "forminator" ), ), // src/form/components/settings/metadata-value.js:140
839
+ "Delete meta" => array( null, __("Delete meta", "forminator" ), ), // src/form/components/settings/multi-custom-field-option.js:110
 
840
  "Default value" => array( null, __("Default value", "forminator" ), ), // src/form/components/settings/multi-name.js:54
841
+ "Delete option" => array( null, __("Delete option", "forminator" ), ), // src/form/components/settings/multi-option.js:80
842
  "Submission limit" => array( null, __("Submission limit", "forminator" ), ), // src/form/components/settings/multi-option.js:97
843
  "Options" => array( null, __("Options", "forminator" ), ), // src/form/components/settings/multi-value.js:139
844
  "Add Option" => array( null, __("Add Option", "forminator" ), ), // src/form/components/settings/multi-value.js:159
850
  "Pre-populate" => array( null, __("Pre-populate", "forminator" ), ), // src/form/components/settings/prefill.js:25
851
  "You can pre-populate this field dynamically using the query parameter passed in your form URL. Enter the query parameter key to fetch its value from your form URL below." => array( null, __("You can pre-populate this field dynamically using the query parameter passed in your form URL. Enter the query parameter key to fetch its value from your form URL below.", "forminator" ), ), // src/form/components/settings/prefill.js:33
852
  "Query parameter (optional)" => array( null, __("Query parameter (optional)", "forminator" ), ), // src/form/components/settings/prefill.js:45
853
+ "Require" => array( null, __("Require", "forminator" ), ), // src/form/components/settings/required.js:47
854
+ "Optional" => array( null, __("Optional", "forminator" ), ), // src/form/components/settings/required.js:61
855
+ "Required" => array( null, __("Required", "forminator" ), ), // src/form/components/settings/required.js:68
856
+ "Password error message" => array( null, __("Password error message", "forminator" ), ), // src/form/components/settings/required.js:83
857
+ "Confirm Password error message" => array( null, __("Confirm Password error message", "forminator" ), ), // src/form/components/settings/required.js:114
858
+ "Enter confirm password message" => array( null, __("Enter confirm password message", "forminator" ), ), // src/form/components/settings/required.js:119
859
+ "Options without a value will be treated as empty options" => array( null, __("Options without a value will be treated as empty options", "forminator" ), ), // src/form/components/settings/required.js:135
860
  "Add classes that will be output on this field’s container to aid your theme's default styling." => array( null, __("Add classes that will be output on this field’s container to aid your theme's default styling.", "forminator" ), ), // src/form/components/settings/styling.js:21
861
  "E.g. form-field" => array( null, __("E.g. form-field", "forminator" ), ), // src/form/components/settings/styling.js:30
862
  "These will be output as you see them here." => array( null, __("These will be output as you see them here.", "forminator" ), ), // src/form/components/settings/styling.js:38
864
  "You need more than one field to configure visibility conditions. Add more fields!" => array( null, __("You need more than one field to configure visibility conditions. Add more fields!", "forminator" ), ), // src/form/components/settings/visibility.js:171
865
  "Rules" => array( null, __("Rules", "forminator" ), ), // src/form/components/settings/visibility.js:182
866
  "By default field will always be visible. If you want to hide or show fields based on user input you can add conditions." => array( null, __("By default field will always be visible. If you want to hide or show fields based on user input you can add conditions.", "forminator" ), ), // src/form/components/settings/visibility.js:196
867
+ "You have unsaved changes, are you sure want to leave this page" => array( null, __("You have unsaved changes, are you sure want to leave this page", "forminator" ), ), // src/form/containers/main.js:52
868
  "Details" => array( null, __("Details", "forminator" ), ), // src/poll/components/appearance.js:51
 
869
  "Use default colors" => array( null, __("Use default colors", "forminator" ), ), // src/poll/components/appearance/colors.js:47
870
  "Poll Container" => array( null, __("Poll Container", "forminator" ), ), // src/poll/components/appearance/colors.js:63
871
  "Poll Basics" => array( null, __("Poll Basics", "forminator" ), ), // src/poll/components/appearance/colors.js:70
900
  "Allow Multiple" => array( null, __("Allow Multiple", "forminator" ), ), // src/poll/components/behaviour/limits.js:69
901
  "minute(s)" => array( null, __("minute(s)", "forminator" ), ), // src/poll/components/behaviour/limits.js:90
902
  "hour(s)" => array( null, __("hour(s)", "forminator" ), ), // src/poll/components/behaviour/limits.js:91
 
 
 
 
903
  "Choose the method you want to use to limit the number of votes." => array( null, __("Choose the method you want to use to limit the number of votes.", "forminator" ), ), // src/poll/components/behaviour/limits.js:109
904
  "User IP" => array( null, __("User IP", "forminator" ), ), // src/poll/components/behaviour/limits.js:117
905
  "Browser Cookie" => array( null, __("Browser Cookie", "forminator" ), ), // src/poll/components/behaviour/limits.js:118
964
  "Option Unselected" => array( null, __("Option Unselected", "forminator" ), ), // src/quiz/global/components/appearance/design-style/bold.js:20
965
  "Option Selected" => array( null, __("Option Selected", "forminator" ), ), // src/quiz/global/components/appearance/design-style/bold.js:32
966
  "You have opted for no stylesheet to be enqueued. The quiz will inherit styles from your theme's CSS." => array( null, __("You have opted for no stylesheet to be enqueued. The quiz will inherit styles from your theme's CSS.", "forminator" ), ), // src/quiz/global/components/appearance/design-style/none.js:13
967
+ "Customize your quiz layout by adjusting the answers layout and overall quiz alignment." => array( null, __("Customize your quiz layout by adjusting the answers layout and overall quiz alignment.", "forminator" ), ), // src/quiz/global/components/appearance/options-layout.js:16
968
+ "Choose whether the quiz answers should appear in a list or a grid." => array( null, __("Choose whether the quiz answers should appear in a list or a grid.", "forminator" ), ), // src/quiz/global/components/appearance/options-layout.js:26
969
+ "List" => array( null, __("List", "forminator" ), ), // src/quiz/global/components/appearance/options-layout.js:38
970
+ "Grid" => array( null, __("Grid", "forminator" ), ), // src/quiz/global/components/appearance/options-layout.js:46
971
+ "Choose the number of columns to fit in one row. Note that grid layout changes to list on smaller screens so this won't affect the smaller screens." => array( null, __("Choose the number of columns to fit in one row. Note that grid layout changes to list on smaller screens so this won't affect the smaller screens.", "forminator" ), ), // src/quiz/global/components/appearance/options-layout.js:53
972
+ "Columns per row" => array( null, __("Columns per row", "forminator" ), ), // src/quiz/global/components/appearance/options-layout.js:64
973
+ "Quiz Alignment" => array( null, __("Quiz Alignment", "forminator" ), ), // src/quiz/global/components/appearance/options-layout.js:83
974
+ "Choose the overall alignment of your quiz. This setting affects everything, including title, description, questions and answers, buttons, and social share message." => array( null, __("Choose the overall alignment of your quiz. This setting affects everything, including title, description, questions and answers, buttons, and social share message.", "forminator" ), ), // src/quiz/global/components/appearance/options-layout.js:84
975
+ "Center" => array( null, __("Center", "forminator" ), ), // src/quiz/global/components/appearance/options-layout.js:96
976
+ "Quiz Container" => array( null, __("Quiz Container", "forminator" ), ), // src/quiz/global/components/appearance/quiz-container.js:20
977
+ "Customize the quiz container as per your liking." => array( null, __("Customize the quiz container as per your liking.", "forminator" ), ), // src/quiz/global/components/appearance/quiz-container.js:21
978
+ "By default the quiz will fill the available space where you insert it. You can add some padding here to better suit your theme." => array( null, __("By default the quiz will fill the available space where you insert it. You can add some padding here to better suit your theme.", "forminator" ), ), // src/quiz/global/components/appearance/quiz-container.js:31
979
+ "Add an optional border around the quiz." => array( null, __("Add an optional border around the quiz.", "forminator" ), ), // src/quiz/global/components/appearance/quiz-container.js:56
980
+ "Choose how much spacing you want between each quiz question." => array( null, __("Choose how much spacing you want between each quiz question.", "forminator" ), ), // src/quiz/global/components/appearance/quiz-container.js:79
981
+ "Maximum Width" => array( null, __("Maximum Width", "forminator" ), ), // src/quiz/global/components/appearance/quiz-container.js:105
982
+ "Choose the maximum container width for your quiz. Full Width means quiz container will fill the 100% available space where you insert it, and the Custom option lets you define a maximum container width." => array( null, __("Choose the maximum container width for your quiz. Full Width means quiz container will fill the 100% available space where you insert it, and the Custom option lets you define a maximum container width.", "forminator" ), ), // src/quiz/global/components/appearance/quiz-container.js:106
983
+ "Full Width" => array( null, __("Full Width", "forminator" ), ), // src/quiz/global/components/appearance/quiz-container.js:115
984
+ "Maximum width" => array( null, __("Maximum width", "forminator" ), ), // src/quiz/global/components/appearance/quiz-container/size.js:19
985
  "Messages" => array( null, __("Messages", "forminator" ), ), // src/quiz/global/components/behaviour/messages.js:12
986
  "Choose the copy of the messages for the correct and wrong answers and also for the final score count." => array( null, __("Choose the copy of the messages for the correct and wrong answers and also for the final score count.", "forminator" ), ), // src/quiz/global/components/behaviour/messages.js:15
987
  "Correct Answer Message" => array( null, __("Correct Answer Message", "forminator" ), ), // src/quiz/global/components/behaviour/messages.js:22
992
  "Quiz Name" => array( null, __("Quiz Name", "forminator" ), ), // src/quiz/global/components/behaviour/messages.js:73
993
  "Quiz Answer" => array( null, __("Quiz Answer", "forminator" ), ), // src/quiz/global/components/behaviour/messages.js:74
994
  "Quiz Result" => array( null, __("Quiz Result", "forminator" ), ), // src/quiz/global/components/behaviour/messages.js:75
995
+ "Choose how you want your quiz to be rendered for users." => array( null, __("Choose how you want your quiz to be rendered for users.", "forminator" ), ), // src/quiz/global/components/behaviour/render.js:14
996
  "Load quiz using AJAX" => array( null, __("Load quiz using AJAX", "forminator" ), ), // src/quiz/global/components/behaviour/render.js:22
997
  "Enabling this feature will load the quiz via AJAX after the page has loaded up, effectively speeding up your page load time. This method can also (in most cases) avoid page caching issues with your quiz." => array( null, __("Enabling this feature will load the quiz via AJAX after the page has loaded up, effectively speeding up your page load time. This method can also (in most cases) avoid page caching issues with your quiz.", "forminator" ), ), // src/quiz/global/components/behaviour/render.js:23
998
  "Prevent page caching on quiz pages" => array( null, __("Prevent page caching on quiz pages", "forminator" ), ), // src/quiz/global/components/behaviour/render.js:34
999
  "Page caching plugins serve a static HTML version of the page which can cause issues to your dynamic quizzes. By enabling this, we'll use {{strong}}DONOTCACHEPAGE{{/strong}} constant to prevent pages with this quiz on it from being cached." => array( null, __("Page caching plugins serve a static HTML version of the page which can cause issues to your dynamic quizzes. By enabling this, we'll use {{strong}}DONOTCACHEPAGE{{/strong}} constant to prevent pages with this quiz on it from being cached.", "forminator" ), ), // src/quiz/global/components/behaviour/render.js:35
1000
+ "Results" => array( null, __("Results", "forminator" ), ), // src/quiz/global/components/behaviour/results.js:19
1001
+ "Choose how do you want to show quiz results to the participants." => array( null, __("Choose how do you want to show quiz results to the participants.", "forminator" ), ), // src/quiz/global/components/behaviour/results.js:21
1002
+ "Display Method" => array( null, __("Display Method", "forminator" ), ), // src/quiz/global/components/behaviour/results.js:33
1003
+ "Choose whether to display the correct answer as the user answers each question or after the quiz is submitted." => array( null, __("Choose whether to display the correct answer as the user answers each question or after the quiz is submitted.", "forminator" ), ), // src/quiz/global/components/behaviour/results.js:34
1004
+ "Real Time" => array( null, __("Real Time", "forminator" ), ), // src/quiz/global/components/behaviour/results.js:44
1005
+ "On Submission" => array( null, __("On Submission", "forminator" ), ), // src/quiz/global/components/behaviour/results.js:49
1006
+ "Evaluation Loader" => array( null, __("Evaluation Loader", "forminator" ), ), // src/quiz/global/components/behaviour/results/evaluation-loader.js:21
1007
+ "Choose whether you want to show a loader while evaluating the selected answer in real-time. We recommend using this on long quizzes since evaluating an answer might take a bit longer." => array( null, __("Choose whether you want to show a loader while evaluating the selected answer in real-time. We recommend using this on long quizzes since evaluating an answer might take a bit longer.", "forminator" ), ), // src/quiz/global/components/behaviour/results/evaluation-loader.js:24
1008
+ "Note: You can change the color of the loader in the Appearance tab." => array( null, __("Note: You can change the color of the loader in the Appearance tab.", "forminator" ), ), // src/quiz/global/components/behaviour/results/show-loader.js:14
1009
  "Social Sharing" => array( null, __("Social Sharing", "forminator" ), ), // src/quiz/global/components/behaviour/share.js:14
1010
  "Choose whether you want to allow the quiz participants to share their results on social media." => array( null, __("Choose whether you want to allow the quiz participants to share their results on social media.", "forminator" ), ), // src/quiz/global/components/behaviour/share.js:15
1011
  "Social Sharing Platforms" => array( null, __("Social Sharing Platforms", "forminator" ), ), // src/quiz/global/components/behaviour/social-sharing/social-enable.js:20
1045
  "Please validate your fields!" => array( null, __("Please validate your fields!", "forminator" ), ), // src/quiz/global/components/modals/personality.js:167
1046
  "Publishing quiz…" => array( null, __("Publishing quiz…", "forminator" ), ), // src/quiz/global/components/modals/publish.js:18
1047
  "Great work! Please hold tight a few moments while we publish your quiz to the world." => array( null, __("Great work! Please hold tight a few moments while we publish your quiz to the world.", "forminator" ), ), // src/quiz/global/components/modals/publish.js:24
1048
+ "Options cannot be empty. You either need to enter answer text or upload an image for the empty options." => array( null, __("Options cannot be empty. You either need to enter answer text or upload an image for the empty options.", "forminator" ), ), // src/quiz/global/components/modals/question.js:86
1049
+ "You need to select at least one correct answer before you can add this question." => array( null, __("You need to select at least one correct answer before you can add this question.", "forminator" ), ), // src/quiz/global/components/modals/question.js:99
1050
+ "You need to select an associated personality for every option." => array( null, __("You need to select an associated personality for every option.", "forminator" ), ), // src/quiz/global/components/modals/question.js:114
1051
+ "Edit Question" => array( null, __("Edit Question", "forminator" ), ), // src/quiz/global/components/modals/question.js:127
1052
+ "You can choose multiple correct answers if that applies to this question. Note that the user's selection will be considered as right when any one of the correct answers is selected." => array( null, __("You can choose multiple correct answers if that applies to this question. Note that the user's selection will be considered as right when any one of the correct answers is selected.", "forminator" ), ), // src/quiz/global/components/modals/question.js:190
1053
  "Your quiz is now ready to be embedded into a page or template of your choice. Simply copy and paste the shortcode below to display it!" => array( null, __("Your quiz is now ready to be embedded into a page or template of your choice. Simply copy and paste the shortcode below to display it!", "forminator" ), ), // src/quiz/global/components/modals/shortcode.js:37
1054
  "Button Processing Text" => array( null, __("Button Processing Text", "forminator" ), ), // src/quiz/global/components/modals/submit.js:64
1055
  "Sending..." => array( null, __("Sending...", "forminator" ), ), // src/quiz/global/components/modals/submit.js:65
1062
  "e.g. 0.75em" => array( null, __("e.g. 0.75em", "forminator" ), ), // src/quiz/global/components/settings/fonts.js:102
1063
  "Choose how you want to handle this quiz’s data storage. By default we'll use the configuration you've set in your {{link}}global privacy settings{{/link}}." => array( null, __("Choose how you want to handle this quiz’s data storage. By default we'll use the configuration you've set in your {{link}}global privacy settings{{/link}}.", "forminator" ), ), // src/quiz/global/components/settings/privacy.js:34
1064
  "How long do you want to retain this quiz's submissions for?" => array( null, __("How long do you want to retain this quiz's submissions for?", "forminator" ), ), // src/quiz/global/components/settings/privacy.js:52
1065
+ "Evaluation loader icon" => array( null, __("Evaluation loader icon", "forminator" ), ), // src/quiz/knowledge/components/appearance/colors/answer-checkbox.js:71
1066
+ "This picker works only when \"Evaluation Loader\" is set to \"Show Loader\"." => array( null, __("This picker works only when \"Evaluation Loader\" is set to \"Show Loader\".", "forminator" ), ), // src/quiz/knowledge/components/appearance/colors/answer-checkbox.js:72
1067
+ "Wrong" => array( null, __("Wrong", "forminator" ), ), // src/quiz/knowledge/components/appearance/colors/answer-checkbox.js:119
1068
  "Answer text color" => array( null, __("Answer text color", "forminator" ), ), // src/quiz/knowledge/components/appearance/colors/answer-text.js:28
1069
  "Answer result message" => array( null, __("Answer result message", "forminator" ), ), // src/quiz/knowledge/components/appearance/colors/answer-text.js:34
1070
  "Quiz result color" => array( null, __("Quiz result color", "forminator" ), ), // src/quiz/knowledge/components/appearance/colors/basic.js:39
1088
  "Large" => array( null, __("Large", "forminator" ), ), // src/quiz/knowledge/components/appearance/fonts/social-icons.js:26
1089
  "Retake Button" => array( null, __("Retake Button", "forminator" ), ), // src/quiz/personality/components/appearance/colors/colors-table.js:68
1090
  "Main" => array( null, __("Main", "forminator" ), ), // src/quiz/personality/components/appearance/colors/quiz-result.js:24
1091
+ "Container background" => array( null, __("Container background", "forminator" ), ), // src/quiz/personality/components/appearance/colors/quiz-result.js:42
1092
+ "Header" => array( null, __("Header", "forminator" ), ), // src/quiz/personality/components/appearance/colors/quiz-result.js:53
1093
+ "Content background" => array( null, __("Content background", "forminator" ), ), // src/quiz/personality/components/appearance/colors/quiz-result.js:96
1094
+ "Retake" => array( null, __("Retake", "forminator" ), ), // src/quiz/personality/components/appearance/fonts/quiz-result.js:38
1095
  "Let's add the different personalities. Each of the following personality is a possible outcome of your quiz. In case of a tie, the personality is chosen as per their order below." => array( null, __("Let's add the different personalities. Each of the following personality is a possible outcome of your quiz. In case of a tie, the personality is chosen as per their order below.", "forminator" ), ), // src/quiz/personality/components/personalities.js:33
1096
  "Reorder the personalities to set the priority order." => array( null, __("Reorder the personalities to set the priority order.", "forminator" ), ), // src/quiz/personality/components/personalities.js:50
1097
  "Define the different personalities possible as the outcome of your quiz here." => array( null, __("Define the different personalities possible as the outcome of your quiz here.", "forminator" ), ), // src/quiz/personality/components/personalities/personalities.js:104
1103
  "Poll" => array( null, __("Poll", "forminator" ), ), // src/settings/inputs/ace-editor.js:122
1104
  "Answer Input" => array( null, __("Answer Input", "forminator" ), ), // src/settings/inputs/ace-editor.js:132
1105
  "Answer Label" => array( null, __("Answer Label", "forminator" ), ), // src/settings/inputs/ace-editor.js:137
1106
+ "Quiz" => array( null, __("Quiz", "forminator" ), ), // src/settings/inputs/ace-editor.js:163
1107
+ "Answer Container" => array( null, __("Answer Container", "forminator" ), ), // src/settings/inputs/ace-editor.js:183
1108
+ "Answer Text" => array( null, __("Answer Text", "forminator" ), ), // src/settings/inputs/ace-editor.js:190
1109
  "%s does not exist in your form. Please insert a valid field from the merged tags option." => array( null, __("%s does not exist in your form. Please insert a valid field from the merged tags option.", "forminator" ), ), // src/settings/inputs/calculation.js:157
1110
  "Infinity calculation result." => array( null, __("Infinity calculation result.", "forminator" ), ), // src/settings/inputs/calculation.js:193
1111
  "Calculation Formula" => array( null, __("Calculation Formula", "forminator" ), ), // src/settings/inputs/calculation.js:253
1120
  "You can preview your form and check if the formula is generating expected results." => array( null, __("You can preview your form and check if the formula is generating expected results.", "forminator" ), ), // src/settings/inputs/calculation.js:361
1121
  "Formula Preview" => array( null, __("Formula Preview", "forminator" ), ), // src/settings/inputs/calculation.js:370
1122
  "Remove this date range" => array( null, __("Remove this date range", "forminator" ), ), // src/settings/inputs/date-picker.js:73
1123
+ "This field is required!" => array( null, __("This field is required!", "forminator" ), ), // src/settings/inputs/input.js:39
1124
+ "Please enter valid number." => array( null, __("Please enter valid number.", "forminator" ), ), // src/settings/inputs/input.js:120
1125
  "Select image" => array( null, __("Select image", "forminator" ), ), // src/settings/inputs/uploads.js:25
1126
  "Upload image" => array( null, __("Upload image", "forminator" ), ), // src/settings/inputs/uploads.js:134
1127
  "Upload file" => array( null, __("Upload file", "forminator" ), ), // src/settings/inputs/uploads.js:135
1128
  "Remove uploaded image" => array( null, __("Remove uploaded image", "forminator" ), ), // src/settings/inputs/uploads.js:144
1129
  "Remove uploaded file" => array( null, __("Remove uploaded file", "forminator" ), ), // src/settings/inputs/uploads.js:145
1130
+ "Required Fields" => array( null, __("Required Fields", "forminator" ), ), // src/settings/inputs/wp-editor.js:175
1131
+ "Optional Fields" => array( null, __("Optional Fields", "forminator" ), ), // src/settings/inputs/wp-editor.js:185
1132
+ "Misc Data" => array( null, __("Misc Data", "forminator" ), ), // src/settings/inputs/wp-editor.js:201
1133
+ "Payment Data" => array( null, __("Payment Data", "forminator" ), ), // src/settings/inputs/wp-editor.js:226
1134
+ "Form Name" => array( null, __("Form Name", "forminator" ), ), // src/settings/inputs/wp-editor.js:255
1135
+ "All Form Fields" => array( null, __("All Form Fields", "forminator" ), ), // src/settings/inputs/wp-editor.js:265
1136
+ "All Non Empty Fields" => array( null, __("All Non Empty Fields", "forminator" ), ), // src/settings/inputs/wp-editor.js:275
1137
+ "Add form data" => array( null, __("Add form data", "forminator" ), ), // src/settings/inputs/wp-editor.js:329
1138
+ "is having" => array( null, __("is having", "forminator" ), ), // src/utils.js:863
1139
+ "is" => array( null, __("is", "forminator" ), ), // src/utils.js:866
1140
+ "is not having" => array( null, __("is not having", "forminator" ), ), // src/utils.js:870
1141
+ "is not" => array( null, __("is not", "forminator" ), ), // src/utils.js:873
1142
+ "day is" => array( null, __("day is", "forminator" ), ), // src/utils.js:877
1143
+ "day is not" => array( null, __("day is not", "forminator" ), ), // src/utils.js:879
1144
+ "month is not" => array( null, __("month is not", "forminator" ), ), // src/utils.js:881
1145
+ "month is" => array( null, __("month is", "forminator" ), ), // src/utils.js:883
1146
+ "is greater than" => array( null, __("is greater than", "forminator" ), ), // src/utils.js:885
1147
+ "is less than" => array( null, __("is less than", "forminator" ), ), // src/utils.js:887
1148
+ "contains" => array( null, __("contains", "forminator" ), ), // src/utils.js:889
1149
+ "starts with" => array( null, __("starts with", "forminator" ), ), // src/utils.js:891
1150
+ "ends with" => array( null, __("ends with", "forminator" ), ), // src/utils.js:893
1151
  );
1152
  return $forminator_admin_locale;
1153
  /* THIS IS THE END OF THE GENERATED FILE */
admin/pages/dashboard-page.php CHANGED
@@ -33,9 +33,12 @@ class Forminator_Dashboard_Page extends Forminator_Admin_Page {
33
  */
34
  public function dashboard_create_screen() {
35
  $modules = forminator_get_modules();
36
- $this->template('dashboard/create-content', array(
37
- 'modules' => $modules
38
- ) );
 
 
 
39
  }
40
 
41
  /**
33
  */
34
  public function dashboard_create_screen() {
35
  $modules = forminator_get_modules();
36
+ $this->template(
37
+ 'dashboard/create-content',
38
+ array(
39
+ 'modules' => $modules,
40
+ )
41
+ );
42
  }
43
 
44
  /**
admin/pages/entries-page.php CHANGED
@@ -75,7 +75,7 @@ class Forminator_Entries_Page extends Forminator_Admin_Page {
75
  'form_id' => 0,
76
  );
77
 
78
- $this->screen_params = array_merge( $screen_params, $_REQUEST );//WPCS CSRF ok.
79
  }
80
 
81
  /**
@@ -148,7 +148,6 @@ class Forminator_Entries_Page extends Forminator_Admin_Page {
148
  $entries_renderer->render();
149
  $this->entries_page = ob_get_clean();
150
  }
151
-
152
  }
153
  }
154
 
@@ -213,7 +212,7 @@ class Forminator_Entries_Page extends Forminator_Admin_Page {
213
  foreach ( $forms as $form ) {
214
  /**@var Forminator_Base_Form_Model $form */
215
  $title = ! empty( $form->settings['formName'] ) ? $form->settings['formName'] : $form->raw->post_title;
216
- $html .= '<option value="' . $form->id . '" ' . selected( $form->id, $this->get_current_form_id(), false ) . '>' . $title . '</option>';
217
  }
218
 
219
  $html .= '</select>';
@@ -277,25 +276,31 @@ class Forminator_Entries_Page extends Forminator_Admin_Page {
277
  * @since 1.5.4
278
  */
279
  public function enqueue_entries_scripts() {
280
- wp_enqueue_script( 'forminator-entries-moment',
281
- forminator_plugin_url() . 'assets/js/library/moment.min.js',
282
- array( 'jquery' ),
283
- '2.22.2',
284
- true );
285
- wp_enqueue_script( 'forminator-entries-datepicker-range',
286
- forminator_plugin_url() . 'assets/js/library/daterangepicker.min.js',
287
- array( 'forminator-entries-moment' ),
288
- '3.0.3',
289
- true );
290
- wp_enqueue_style( 'forminator-entries-datepicker-range',
291
- forminator_plugin_url() . 'assets/css/daterangepicker.min.css',
292
- array(),
293
- '3.0.3' );
 
 
 
 
 
 
294
 
295
  // use inline script to allow hooking into this
296
  $daterangepicker_ranges
297
  = sprintf(
298
- "
299
  var forminator_entries_datepicker_ranges = {
300
  '%s': [moment(), moment()],
301
  '%s': [moment().subtract(1,'days'), moment().subtract(1,'days')],
@@ -304,13 +309,13 @@ class Forminator_Entries_Page extends Forminator_Admin_Page {
304
  '%s': [moment().startOf('month'), moment().endOf('month')],
305
  '%s': [moment().subtract(1,'month').startOf('month'), moment().subtract(1,'month').endOf('month')]
306
  };",
307
- __( 'Today', Forminator::DOMAIN ),
308
- __( 'Yesterday', Forminator::DOMAIN ),
309
- __( 'Last 7 Days', Forminator::DOMAIN ),
310
- __( 'Last 30 Days', Forminator::DOMAIN ),
311
- __( 'This Month', Forminator::DOMAIN ),
312
- __( 'Last Month', Forminator::DOMAIN )
313
- );
314
 
315
  /**
316
  * Filter ranges to be used on submissions date range
@@ -352,7 +357,6 @@ class Forminator_Entries_Page extends Forminator_Admin_Page {
352
  $daterangepicker_lang = apply_filters( 'forminator_l10n_daterangepicker', $daterangepicker_lang );
353
  $l10n['daterangepicker'] = $daterangepicker_lang;
354
 
355
-
356
  return $l10n;
357
  }
358
 
75
  'form_id' => 0,
76
  );
77
 
78
+ $this->screen_params = array_merge( $screen_params, $_REQUEST );//phpcs:ignore -- data without nonce verification
79
  }
80
 
81
  /**
148
  $entries_renderer->render();
149
  $this->entries_page = ob_get_clean();
150
  }
 
151
  }
152
  }
153
 
212
  foreach ( $forms as $form ) {
213
  /**@var Forminator_Base_Form_Model $form */
214
  $title = ! empty( $form->settings['formName'] ) ? $form->settings['formName'] : $form->raw->post_title;
215
+ $html .= '<option value="' . $form->id . '" ' . selected( $form->id, $this->get_current_form_id(), false ) . '>' . $title . '</option>';
216
  }
217
 
218
  $html .= '</select>';
276
  * @since 1.5.4
277
  */
278
  public function enqueue_entries_scripts() {
279
+ wp_enqueue_script(
280
+ 'forminator-entries-moment',
281
+ forminator_plugin_url() . 'assets/js/library/moment.min.js',
282
+ array( 'jquery' ),
283
+ '2.22.2',
284
+ true
285
+ );
286
+ wp_enqueue_script(
287
+ 'forminator-entries-datepicker-range',
288
+ forminator_plugin_url() . 'assets/js/library/daterangepicker.min.js',
289
+ array( 'forminator-entries-moment' ),
290
+ '3.0.3',
291
+ true
292
+ );
293
+ wp_enqueue_style(
294
+ 'forminator-entries-datepicker-range',
295
+ forminator_plugin_url() . 'assets/css/daterangepicker.min.css',
296
+ array(),
297
+ '3.0.3'
298
+ );
299
 
300
  // use inline script to allow hooking into this
301
  $daterangepicker_ranges
302
  = sprintf(
303
+ "
304
  var forminator_entries_datepicker_ranges = {
305
  '%s': [moment(), moment()],
306
  '%s': [moment().subtract(1,'days'), moment().subtract(1,'days')],
309
  '%s': [moment().startOf('month'), moment().endOf('month')],
310
  '%s': [moment().subtract(1,'month').startOf('month'), moment().subtract(1,'month').endOf('month')]
311
  };",
312
+ __( 'Today', Forminator::DOMAIN ),
313
+ __( 'Yesterday', Forminator::DOMAIN ),
314
+ __( 'Last 7 Days', Forminator::DOMAIN ),
315
+ __( 'Last 30 Days', Forminator::DOMAIN ),
316
+ __( 'This Month', Forminator::DOMAIN ),
317
+ __( 'Last Month', Forminator::DOMAIN )
318
+ );
319
 
320
  /**
321
  * Filter ranges to be used on submissions date range
357
  $daterangepicker_lang = apply_filters( 'forminator_l10n_daterangepicker', $daterangepicker_lang );
358
  $l10n['daterangepicker'] = $daterangepicker_lang;
359
 
 
360
  return $l10n;
361
  }
362
 
admin/pages/integrations-page.php CHANGED
@@ -43,7 +43,7 @@ class Forminator_Integrations_Page extends Forminator_Admin_Page {
43
 
44
  Forminator_Addon_Admin_Ajax::get_instance()->generate_nonce();
45
  $this->addon_nonce = Forminator_Addon_Admin_Ajax::get_instance()->get_nonce();
46
- add_filter( 'forminator_data', array( $this, "add_addons_js_data" ) );
47
 
48
  $this->validate_addon_page();
49
  }
@@ -85,7 +85,7 @@ class Forminator_Integrations_Page extends Forminator_Admin_Page {
85
  <div class="sui-actions-right">
86
  <?php if ( forminator_is_show_documentation_link() ) : ?>
87
  <a href="https://premium.wpmudev.org/docs/wpmu-dev-plugins/forminator/#integrations" target="_blank" class="sui-button sui-button-ghost">
88
- <i class="sui-icon-academy"></i> <?php esc_html_e( "View Documentation", Forminator::DOMAIN ); ?>
89
  </a>
90
  <?php endif; ?>
91
  </div>
43
 
44
  Forminator_Addon_Admin_Ajax::get_instance()->generate_nonce();
45
  $this->addon_nonce = Forminator_Addon_Admin_Ajax::get_instance()->get_nonce();
46
+ add_filter( 'forminator_data', array( $this, 'add_addons_js_data' ) );
47
 
48
  $this->validate_addon_page();
49
  }
85
  <div class="sui-actions-right">
86
  <?php if ( forminator_is_show_documentation_link() ) : ?>
87
  <a href="https://premium.wpmudev.org/docs/wpmu-dev-plugins/forminator/#integrations" target="_blank" class="sui-button sui-button-ghost">
88
+ <i class="sui-icon-academy"></i> <?php esc_html_e( 'View Documentation', Forminator::DOMAIN ); ?>
89
  </a>
90
  <?php endif; ?>
91
  </div>
admin/pages/settings-page.php CHANGED
@@ -16,7 +16,7 @@ class Forminator_Settings_Page extends Forminator_Admin_Page {
16
  * @var array
17
  */
18
  private $addons_data = array();
19
- public $addons_list = array();
20
 
21
  public function init() {
22
  $this->process_request();
@@ -54,8 +54,7 @@ class Forminator_Settings_Page extends Forminator_Admin_Page {
54
  return;
55
  }
56
 
57
- $nonce = $_POST['forminatorNonce']; // WPCS: CSRF OK
58
- if ( ! wp_verify_nonce( $nonce, 'forminatorSettingsRequest' ) ) {
59
  return;
60
  }
61
 
16
  * @var array
17
  */
18
  private $addons_data = array();
19
+ public $addons_list = array();
20
 
21
  public function init() {
22
  $this->process_request();
54
  return;
55
  }
56
 
57
+ if ( ! wp_verify_nonce( $_POST['forminatorNonce'], 'forminatorSettingsRequest' ) ) {
 
58
  return;
59
  }
60
 
admin/views/boxes/content-box.php CHANGED
@@ -1,13 +1,13 @@
1
  <div id="forminator-content-box-<?php echo esc_attr( $template_class ); ?>" class="wpmudev-box">
2
- <?php if ( is_callable( $header_callback ) ): ?>
3
  <div class="wpmudev-box-header">
4
  <?php call_user_func( $header_callback ); ?>
5
  </div><!-- end content box header -->
6
- <?php elseif ( $this->template_exists( $template_id . '/content-header' ) ): ?>
7
  <div class="wpmudev-box-header">
8
  <?php $this->template( $template_id . '/content-header', array( 'title' => $title ) ); ?>
9
  </div><!-- end content box header -->
10
- <?php elseif ( $this->template_exists( $template_id . '-content-header' ) ): ?>
11
  <div class="wpmudev-box-header">
12
  <?php $this->template( $template_id . '-content-header', array( 'title' => $title ) ); ?>
13
  </div><!-- end content box header -->
@@ -18,24 +18,24 @@
18
  <?php endif; ?>
19
 
20
  <div class="wpmudev-box-section">
21
- <?php if ( is_callable( $main_callback ) ): ?>
22
  <?php call_user_func( $main_callback ); ?>
23
- <?php elseif ( $this->template_exists( $template_id . '/content' ) ): ?>
24
  <?php $this->template( $template_id . '/content' ); ?>
25
- <?php else: ?>
26
  <?php $this->template( $template_id . '-content' ); ?>
27
  <?php endif; ?>
28
  </div><!-- end content box content -->
29
 
30
- <?php if ( is_callable( $footer_callback ) ): ?>
31
  <div class="wpmudev-box-footer">
32
  <?php call_user_func( $footer_callback ); ?>
33
  </div><!-- end content box footer -->
34
- <?php elseif ( $this->template_exists( $template_id . '/content-footer' ) ): ?>
35
  <div class="wpmudev-box-footer">
36
  <?php $this->template( $template_id . '/content-footer' ); ?>
37
  </div><!-- end content box footer -->
38
- <?php elseif ( $this->template_exists( $template_id . '-content-footer' ) ): ?>
39
  <div class="wpmudev-box-footer">
40
  <?php $this->template( $template_id . '-content-footer' ); ?>
41
  </div><!-- end content box footer -->
1
  <div id="forminator-content-box-<?php echo esc_attr( $template_class ); ?>" class="wpmudev-box">
2
+ <?php if ( is_callable( $header_callback ) ) : ?>
3
  <div class="wpmudev-box-header">
4
  <?php call_user_func( $header_callback ); ?>
5
  </div><!-- end content box header -->
6
+ <?php elseif ( $this->template_exists( $template_id . '/content-header' ) ) : ?>
7
  <div class="wpmudev-box-header">
8
  <?php $this->template( $template_id . '/content-header', array( 'title' => $title ) ); ?>
9
  </div><!-- end content box header -->
10
+ <?php elseif ( $this->template_exists( $template_id . '-content-header' ) ) : ?>
11
  <div class="wpmudev-box-header">
12
  <?php $this->template( $template_id . '-content-header', array( 'title' => $title ) ); ?>
13
  </div><!-- end content box header -->
18
  <?php endif; ?>
19
 
20
  <div class="wpmudev-box-section">
21
+ <?php if ( is_callable( $main_callback ) ) : ?>
22
  <?php call_user_func( $main_callback ); ?>
23
+ <?php elseif ( $this->template_exists( $template_id . '/content' ) ) : ?>
24
  <?php $this->template( $template_id . '/content' ); ?>
25
+ <?php else : ?>
26
  <?php $this->template( $template_id . '-content' ); ?>
27
  <?php endif; ?>
28
  </div><!-- end content box content -->
29
 
30
+ <?php if ( is_callable( $footer_callback ) ) : ?>
31
  <div class="wpmudev-box-footer">
32
  <?php call_user_func( $footer_callback ); ?>
33
  </div><!-- end content box footer -->
34
+ <?php elseif ( $this->template_exists( $template_id . '/content-footer' ) ) : ?>
35
  <div class="wpmudev-box-footer">
36
  <?php $this->template( $template_id . '/content-footer' ); ?>
37
  </div><!-- end content box footer -->
38
+ <?php elseif ( $this->template_exists( $template_id . '-content-footer' ) ) : ?>
39
  <div class="wpmudev-box-footer">
40
  <?php $this->template( $template_id . '-content-footer' ); ?>
41
  </div><!-- end content box footer -->
admin/views/boxes/popup-box.php CHANGED
@@ -1,4 +1,4 @@
1
- <?php $icon_close = forminator_plugin_dir() . "assets/icons/admin-icons/close.php"; ?>
2
 
3
  <div id="forminator-modal-<?php echo esc_attr( $template_class ); ?>" class="wpmudev-modal <?php echo esc_attr( $template_class ); ?>">
4
 
@@ -9,27 +9,27 @@
9
  <div class="wpmudev-box-header">
10
 
11
  <div class="wpmudev-header--text">
12
-
13
  <h2 class="wpmudev-subtitle"><?php echo esc_html( $title ); ?></h2>
14
 
15
  </div>
16
 
17
  <div class="wpmudev-header--action">
18
-
19
  <button class="wpmudev-box--action"><?php require $icon_close; ?></button>
20
 
21
- <button class="wpmudev-sr-only"><?php esc_html_e( "Close modal", Forminator::DOMAIN ); ?></button>
22
 
23
  </div>
24
 
25
  </div>
26
 
27
  <div class="wpmudev-box-body">
28
- <?php if ( is_callable( $main_callback ) ): ?>
29
  <?php call_user_func( $main_callback ); ?>
30
- <?php elseif ( $this->template_exists( $template_id . '/content' ) ): ?>
31
  <?php $this->template( $template_id . '/content' ); ?>
32
- <?php else: ?>
33
  <?php $this->template( $template_id . '-content' ); ?>
34
  <?php endif; ?>
35
  </div>
1
+ <?php $icon_close = forminator_plugin_dir() . 'assets/icons/admin-icons/close.php'; ?>
2
 
3
  <div id="forminator-modal-<?php echo esc_attr( $template_class ); ?>" class="wpmudev-modal <?php echo esc_attr( $template_class ); ?>">
4
 
9
  <div class="wpmudev-box-header">
10
 
11
  <div class="wpmudev-header--text">
12
+
13
  <h2 class="wpmudev-subtitle"><?php echo esc_html( $title ); ?></h2>
14
 
15
  </div>
16
 
17
  <div class="wpmudev-header--action">
18
+
19
  <button class="wpmudev-box--action"><?php require $icon_close; ?></button>
20
 
21
+ <button class="wpmudev-sr-only"><?php esc_html_e( 'Close modal', Forminator::DOMAIN ); ?></button>
22
 
23
  </div>
24
 
25
  </div>
26
 
27
  <div class="wpmudev-box-body">
28
+ <?php if ( is_callable( $main_callback ) ) : ?>
29
  <?php call_user_func( $main_callback ); ?>
30
+ <?php elseif ( $this->template_exists( $template_id . '/content' ) ) : ?>
31
  <?php $this->template( $template_id . '/content' ); ?>
32
+ <?php else : ?>
33
  <?php $this->template( $template_id . '-content' ); ?>
34
  <?php endif; ?>
35
  </div>
admin/views/custom-form/entries/content.php CHANGED
@@ -11,9 +11,11 @@ if ( $this->error_message() ) : ?>
11
 
12
  <span class="sui-notice sui-notice-error"><p><?php echo esc_html( $this->error_message() ); ?></p></span>
13
 
14
- <?php endif;
 
15
 
16
- if ( $this->total_entries() > 0 ) : ?>
 
17
 
18
  <form method="GET" class="forminator-entries-actions">
19
 
@@ -79,10 +81,12 @@ if ( $this->total_entries() > 0 ) : ?>
79
 
80
  <?php if ( isset( $this->filters['search'] ) ) : ?>
81
  <div class="sui-active-filter">
82
- <?php printf(
 
83
  esc_html__( 'Keyword: %s', Forminator::DOMAIN ),
84
  esc_html( $this->filters['search'] )
85
- ); ?>
 
86
  <button class="sui-active-filter-remove" type="submit" name="search" value="">
87
  <span class="sui-screen-reader-text"><?php esc_html_e( 'Remove this keyword', Forminator::DOMAIN ); ?></span>
88
  </button>
@@ -91,10 +95,12 @@ if ( $this->total_entries() > 0 ) : ?>
91
 
92
  <?php if ( isset( $this->filters['min_id'] ) ) : ?>
93
  <div class="sui-active-filter">
94
- <?php printf(
 
95
  esc_html__( 'From ID: %s', Forminator::DOMAIN ),
96
  esc_html( $this->filters['min_id'] )
97
- ); ?>
 
98
  <button class="sui-active-filter-remove" type="submit" name="min_id" value="">
99
  <span class="sui-screen-reader-text"><?php esc_html_e( 'Remove this keyword', Forminator::DOMAIN ); ?></span>
100
  </button>
@@ -103,11 +109,13 @@ if ( $this->total_entries() > 0 ) : ?>
103
 
104
  <?php if ( isset( $this->filters['max_id'] ) ) : ?>
105
  <div class="sui-active-filter">
106
- <?php printf(
 
107
  esc_html__( 'To ID: %s', Forminator::DOMAIN ),
108
  esc_html( $this->filters['max_id'] )
109
- ); ?>
110
- <button class="sui-active-filter-remove" type="submit" name="max_id" value="">
 
111
  <span class="sui-screen-reader-text"><?php esc_html_e( 'Remove this keyword', Forminator::DOMAIN ); ?></span>
112
  </button>
113
  </div>
@@ -115,11 +123,13 @@ if ( $this->total_entries() > 0 ) : ?>
115
 
116
  <?php if ( isset( $this->filters['date_created'][0] ) || isset( $this->filters['date_created'][1] ) ) : ?>
117
  <div class="sui-active-filter">
118
- <?php printf(
 
119
  esc_html__( 'Submission Date Range: %1$s to %2$s', Forminator::DOMAIN ),
120
  esc_html( $this->filters['date_created'][0] ),
121
  esc_html( $this->filters['date_created'][1] )
122
- ); ?>
 
123
  <button class="sui-active-filter-remove" type="submit" name="date_range" value="">
124
  <span class="sui-screen-reader-text"><?php esc_html_e( 'Remove this keyword', Forminator::DOMAIN ); ?></span>
125
  </button>
@@ -134,7 +144,8 @@ if ( $this->total_entries() > 0 ) : ?>
134
  esc_html_e( 'Descending', Forminator::DOMAIN );
135
  } else {
136
  esc_html_e( 'Ascending', Forminator::DOMAIN );
137
- } ?>
 
138
  </div>
139
 
140
  </div>
@@ -150,6 +161,7 @@ if ( $this->total_entries() > 0 ) : ?>
150
  <tbody>
151
 
152
  <?php
 
153
  foreach ( $this->entries_iterator() as $entries ) {
154
 
155
  $entry_id = $entries['id'];
@@ -160,13 +172,16 @@ if ( $this->total_entries() > 0 ) : ?>
160
 
161
  $detail = $entries['detail'];
162
  $detail_items = $detail['items'];
 
 
163
  ?>
164
 
165
- <tr class="sui-accordion-item" data-entry-id="<?php echo esc_attr( $db_entry_id ); ?>">
166
 
167
  <?php foreach ( $summary_items as $key => $summary_item ) { ?>
168
 
169
- <?php if ( ! $summary['num_fields_left'] && ( count( $summary_items ) - 1 ) === $key ) :
 
170
 
171
  echo '<td>';
172
 
@@ -190,7 +205,10 @@ if ( $this->total_entries() > 0 ) : ?>
190
 
191
  echo '<span aria-hidden="true"></span>';
192
 
193
- echo '<span class="sui-screen-reader-text">' . sprintf( esc_html__( 'Select entry number %s', Forminator::DOMAIN ), esc_html( $db_entry_id ) ) . '</span>';
 
 
 
194
 
195
  echo '</label>';
196
 
@@ -210,20 +228,26 @@ if ( $this->total_entries() > 0 ) : ?>
210
 
211
  echo '</td>';
212
 
213
- endif; ?>
 
214
 
215
  <?php } ?>
216
 
217
- <?php if ( $summary['num_fields_left'] ) {
 
218
 
219
  echo '<td>';
220
- echo '' . sprintf( esc_html__( "+ %s other fields", Forminator::DOMAIN ), esc_html( $summary['num_fields_left'] ) ) . '';
 
 
 
221
  echo '<span class="sui-accordion-open-indicator">';
222
  echo '<i class="sui-icon-chevron-down"></i>';
223
  echo '</span>';
224
  echo '</td>';
225
 
226
- } ?>
 
227
 
228
  </tr>
229
 
@@ -243,9 +267,11 @@ if ( $this->total_entries() > 0 ) : ?>
243
 
244
  <div class="sui-box-settings-slim-row sui-sm">
245
 
246
- <?php if ( isset( $detail_item['type'] ) && ( 'stripe' === $detail_item['type'] || 'paypal' === $detail_item['type'] ) ) {
 
247
 
248
- if ( ! empty( $sub_entries ) ) { ?>
 
249
 
250
  <div class="sui-box-settings-col-2">
251
 
@@ -272,8 +298,8 @@ if ( $this->total_entries() > 0 ) : ?>
272
  echo '<th>' . esc_html( $sub_entry['label'] ) . '</th>';
273
 
274
  }
275
-
276
- } ?>
277
 
278
  </tr>
279
 
@@ -291,15 +317,15 @@ if ( $this->total_entries() > 0 ) : ?>
291
 
292
  if ( $sub_key === $end ) {
293
 
294
- echo '<td colspan="2" style="padding-top: 5px; padding-bottom: 5px;">' . ( $sub_entry['value'] ) . '</td>'; // wpcs xss ok. html output intended
295
 
296
  } else {
297
 
298
  echo '<td style="padding-top: 5px; padding-bottom: 5px;">' . esc_html( $sub_entry['value'] ) . '</td>';
299
 
300
  }
301
-
302
- } ?>
303
 
304
  </tr>
305
 
@@ -309,9 +335,10 @@ if ( $this->total_entries() > 0 ) : ?>
309
 
310
  </div>
311
 
312
- <?php }
313
-
314
- } else { ?>
 
315
 
316
  <div class="sui-box-settings-col-1">
317
  <span class="sui-settings-label sui-sm"><?php echo esc_html( $detail_item['label'] ); ?></span>
@@ -321,7 +348,7 @@ if ( $this->total_entries() > 0 ) : ?>
321
 
322
  <?php if ( empty( $sub_entries ) ) { ?>
323
 
324
- <span class="sui-description"><?php echo ( $detail_item['value'] ); // wpcs xss ok. html output intended ?></span>
325
 
326
  <?php } else { ?>
327
 
@@ -329,7 +356,7 @@ if ( $this->total_entries() > 0 ) : ?>
329
 
330
  <div class="sui-form-field">
331
  <span class="sui-settings-label"><?php echo esc_html( $sub_entry['label'] ); ?></span>
332
- <span class="sui-description"><?php echo ( $sub_entry['value'] ); // wpcs xss ok. html output intended ?></span>
333
  </div>
334
 
335
  <?php } ?>
@@ -351,15 +378,47 @@ if ( $this->total_entries() > 0 ) : ?>
351
  <button
352
  type="button"
353
  class="sui-button sui-button-ghost sui-button-red wpmudev-open-modal"
354
- data-modal="delete-module"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
355
  data-modal-title="<?php esc_attr_e( 'Delete Submission', Forminator::DOMAIN ); ?>"
356
  data-modal-content="<?php esc_attr_e( 'Are you sure you wish to permanently delete this submission?', Forminator::DOMAIN ); ?>"
357
- data-form-id="<?php echo esc_attr( $db_entry_id ); ?>"
358
- data-nonce="<?php echo wp_create_nonce( 'forminatorCustomFormEntries' ); // WPCS: XSS ok. ?>"
359
  >
360
- <i class="sui-icon-trash" aria-hidden="true"></i> <?php esc_html_e( "Delete", Forminator::DOMAIN ); ?>
361
  </button>
362
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
363
  </div>
364
 
365
  </div>
@@ -392,19 +451,19 @@ if ( $this->total_entries() > 0 ) : ?>
392
 
393
  <div class="sui-box sui-message">
394
 
395
- <?php if ( forminator_is_show_branding() ): ?>
396
  <img src="<?php echo esc_url( forminator_plugin_url() . 'assets/img/forminator-submissions.png' ); ?>"
397
- srcset="<?php echo esc_url( forminator_plugin_url() . 'assets/img/forminator-submissions.png' ); ?> 1x, <?php echo esc_url( forminator_plugin_url() . 'assets/img/forminator-submissions@2x.png' ); ?> 2x"
398
- alt="<?php esc_html_e( 'Forminator', Forminator::DOMAIN ); ?>"
399
- class="sui-image"
400
- aria-hidden="true"/>
401
  <?php endif; ?>
402
 
403
  <div class="sui-message-content">
404
 
405
- <h2><?php echo forminator_get_form_name( $this->form_id, 'custom_form' ); // WPCS: XSS ok. ?></h2>
406
 
407
- <p><?php esc_html_e( "You haven’t received any submissions for this form yet. When you do, you’ll be able to view all the data here.", Forminator::DOMAIN ); ?></p>
408
 
409
  </div>
410
 
11
 
12
  <span class="sui-notice sui-notice-error"><p><?php echo esc_html( $this->error_message() ); ?></p></span>
13
 
14
+ <?php
15
+ endif;
16
 
17
+ if ( $this->total_entries() > 0 ) :
18
+ ?>
19
 
20
  <form method="GET" class="forminator-entries-actions">
21
 
81
 
82
  <?php if ( isset( $this->filters['search'] ) ) : ?>
83
  <div class="sui-active-filter">
84
+ <?php
85
+ printf(/* translators: ... */
86
  esc_html__( 'Keyword: %s', Forminator::DOMAIN ),
87
  esc_html( $this->filters['search'] )
88
+ );
89
+ ?>
90
  <button class="sui-active-filter-remove" type="submit" name="search" value="">
91
  <span class="sui-screen-reader-text"><?php esc_html_e( 'Remove this keyword', Forminator::DOMAIN ); ?></span>
92
  </button>
95
 
96
  <?php if ( isset( $this->filters['min_id'] ) ) : ?>
97
  <div class="sui-active-filter">
98
+ <?php
99
+ printf(/* translators: ... */
100
  esc_html__( 'From ID: %s', Forminator::DOMAIN ),
101
  esc_html( $this->filters['min_id'] )
102
+ );
103
+ ?>
104
  <button class="sui-active-filter-remove" type="submit" name="min_id" value="">
105
  <span class="sui-screen-reader-text"><?php esc_html_e( 'Remove this keyword', Forminator::DOMAIN ); ?></span>
106
  </button>
109
 
110
  <?php if ( isset( $this->filters['max_id'] ) ) : ?>
111
  <div class="sui-active-filter">
112
+ <?php
113
+ printf(/* translators: ... */
114
  esc_html__( 'To ID: %s', Forminator::DOMAIN ),
115
  esc_html( $this->filters['max_id'] )
116
+ );
117
+ ?>
118
+ <button class="sui-active-filter-remove" type="submit" name="max_id" value="">
119
  <span class="sui-screen-reader-text"><?php esc_html_e( 'Remove this keyword', Forminator::DOMAIN ); ?></span>
120
  </button>
121
  </div>
123
 
124
  <?php if ( isset( $this->filters['date_created'][0] ) || isset( $this->filters['date_created'][1] ) ) : ?>
125
  <div class="sui-active-filter">
126
+ <?php
127
+ printf(/* translators: ... */
128
  esc_html__( 'Submission Date Range: %1$s to %2$s', Forminator::DOMAIN ),
129
  esc_html( $this->filters['date_created'][0] ),
130
  esc_html( $this->filters['date_created'][1] )
131
+ );
132
+ ?>
133
  <button class="sui-active-filter-remove" type="submit" name="date_range" value="">
134
  <span class="sui-screen-reader-text"><?php esc_html_e( 'Remove this keyword', Forminator::DOMAIN ); ?></span>
135
  </button>
144
  esc_html_e( 'Descending', Forminator::DOMAIN );
145
  } else {
146
  esc_html_e( 'Ascending', Forminator::DOMAIN );
147
+ }
148
+ ?>
149
  </div>
150
 
151
  </div>
161
  <tbody>
162
 
163
  <?php
164
+ $url_entry_id = ( isset( $_GET['entry_id'] ) && !empty( $_GET['entry_id'] ) ) ? (int) sanitize_text_field( $_GET['entry_id'] ) : 0;//phpcs:ignore
165
  foreach ( $this->entries_iterator() as $entries ) {
166
 
167
  $entry_id = $entries['id'];
172
 
173
  $detail = $entries['detail'];
174
  $detail_items = $detail['items'];
175
+ //Open entry tab by received submission link
176
+ $cls_open_tab = $url_entry_id === (int)$db_entry_id ? 'sui-accordion-item--open' : '';
177
  ?>
178
 
179
+ <tr class="sui-accordion-item <?php echo esc_attr( $cls_open_tab ); ?>" data-entry-id="<?php echo esc_attr( $db_entry_id ); ?>">
180
 
181
  <?php foreach ( $summary_items as $key => $summary_item ) { ?>
182
 
183
+ <?php
184
+ if ( ! $summary['num_fields_left'] && ( count( $summary_items ) - 1 ) === $key ) :
185
 
186
  echo '<td>';
187
 
205
 
206
  echo '<span aria-hidden="true"></span>';
207
 
208
+ echo '<span class="sui-screen-reader-text">' . sprintf(/* translators: ... */
209
+ esc_html__( 'Select entry number %s', Forminator::DOMAIN ),
210
+ esc_html( $db_entry_id )
211
+ ) . '</span>';
212
 
213
  echo '</label>';
214
 
228
 
229
  echo '</td>';
230
 
231
+ endif;
232
+ ?>
233
 
234
  <?php } ?>
235
 
236
+ <?php
237
+ if ( $summary['num_fields_left'] ) {
238
 
239
  echo '<td>';
240
+ echo '' . sprintf(/* translators: ... */
241
+ esc_html__( '+ %s other fields', Forminator::DOMAIN ),
242
+ esc_html( $summary['num_fields_left'] )
243
+ ) . '';
244
  echo '<span class="sui-accordion-open-indicator">';
245
  echo '<i class="sui-icon-chevron-down"></i>';
246
  echo '</span>';
247
  echo '</td>';
248
 
249
+ }
250
+ ?>
251
 
252
  </tr>
253
 
267
 
268
  <div class="sui-box-settings-slim-row sui-sm">
269
 
270
+ <?php
271
+ if ( isset( $detail_item['type'] ) && ( 'stripe' === $detail_item['type'] || 'paypal' === $detail_item['type'] ) ) {
272
 
273
+ if ( ! empty( $sub_entries ) ) {
274
+ ?>
275
 
276
  <div class="sui-box-settings-col-2">
277
 
298
  echo '<th>' . esc_html( $sub_entry['label'] ) . '</th>';
299
 
300
  }
301
+ }
302
+ ?>
303
 
304
  </tr>
305
 
317
 
318
  if ( $sub_key === $end ) {
319
 
320
+ echo '<td colspan="2" style="padding-top: 5px; padding-bottom: 5px;">' . esc_html( $sub_entry['value'] ) . '</td>';
321
 
322
  } else {
323
 
324
  echo '<td style="padding-top: 5px; padding-bottom: 5px;">' . esc_html( $sub_entry['value'] ) . '</td>';
325
 
326
  }
327
+ }
328
+ ?>
329
 
330
  </tr>
331
 
335
 
336
  </div>
337
 
338
+ <?php
339
+ }
340
+ } else {
341
+ ?>
342
 
343
  <div class="sui-box-settings-col-1">
344
  <span class="sui-settings-label sui-sm"><?php echo esc_html( $detail_item['label'] ); ?></span>
348
 
349
  <?php if ( empty( $sub_entries ) ) { ?>
350
 
351
+ <span class="sui-description"><?php echo ( $detail_item['value'] );//phpcs:ignore -- html output intended ?></span>
352
 
353
  <?php } else { ?>
354
 
356
 
357
  <div class="sui-form-field">
358
  <span class="sui-settings-label"><?php echo esc_html( $sub_entry['label'] ); ?></span>
359
+ <span class="sui-description"><?php echo ( $sub_entry['value'] );//phpcs:ignore -- html output intended ?></span>
360
  </div>
361
 
362
  <?php } ?>
378
  <button
379
  type="button"
380
  class="sui-button sui-button-ghost sui-button-red wpmudev-open-modal"
381
+ <?php if ( isset( $entries['activation_key'] ) ) {
382
+ $button_title = esc_html( 'Delete Submission & User', Forminator::DOMAIN );
383
+ $is_activation_key = true;
384
+ ?>
385
+ data-activation-key="<?php echo $entries['activation_key']; ?>"
386
+ data-modal="delete-unconfirmed-user-module"
387
+ data-entry-id="<?php echo esc_attr( $db_entry_id ); ?>"
388
+ data-form-id="<?php echo esc_attr( $this->model->id ); ?>"
389
+ <?php } else {
390
+ $button_title = esc_html( 'Delete', Forminator::DOMAIN );
391
+ $is_activation_key = false;
392
+ ?>
393
+ data-modal="delete-module"
394
+ data-form-id="<?php echo esc_attr( $db_entry_id ); ?>"
395
+ <?php } ?>
396
  data-modal-title="<?php esc_attr_e( 'Delete Submission', Forminator::DOMAIN ); ?>"
397
  data-modal-content="<?php esc_attr_e( 'Are you sure you wish to permanently delete this submission?', Forminator::DOMAIN ); ?>"
398
+ data-nonce="<?php echo esc_attr( wp_create_nonce( 'forminatorCustomFormEntries' ) ); ?>"
 
399
  >
400
+ <i class="sui-icon-trash" aria-hidden="true"></i> <?php echo $button_title; ?>
401
  </button>
402
 
403
+ <?php if ( isset( $entries['activation_method'] ) && 'manual' === $entries['activation_method'] && $is_activation_key ) { ?>
404
+
405
+ <div class="sui-actions-right">
406
+ <button
407
+ type="button"
408
+ class="sui-button wpmudev-open-modal"
409
+ data-modal="approve-user-module"
410
+ data-modal-title="<?php esc_attr_e( 'Approve User', Forminator::DOMAIN ); ?>"
411
+ data-modal-content="<?php esc_attr_e( 'Are you sure you want to approve and activate this user?', Forminator::DOMAIN ); ?>"
412
+ data-form-id="<?php echo esc_attr( $db_entry_id ); ?>"
413
+ data-activation-key="<?php echo esc_attr( $entries['activation_key'] ); ?>"
414
+ data-nonce="<?php echo wp_create_nonce( 'forminatorCustomFormEntries' ); // WPCS: XSS ok. ?>"
415
+ >
416
+ <?php esc_html_e( 'Approve User', Forminator::DOMAIN ); ?>
417
+ </button>
418
+ </div>
419
+
420
+ <?php } ?>
421
+
422
  </div>
423
 
424
  </div>
451
 
452
  <div class="sui-box sui-message">
453
 
454
+ <?php if ( forminator_is_show_branding() ) : ?>
455
  <img src="<?php echo esc_url( forminator_plugin_url() . 'assets/img/forminator-submissions.png' ); ?>"
456
+ srcset="<?php echo esc_url( forminator_plugin_url() . 'assets/img/forminator-submissions.png' ); ?> 1x, <?php echo esc_url( forminator_plugin_url() . 'assets/img/forminator-submissions@2x.png' ); ?> 2x"
457
+ alt="<?php esc_html_e( 'Forminator', Forminator::DOMAIN ); ?>"
458
+ class="sui-image"
459
+ aria-hidden="true"/>
460
  <?php endif; ?>
461
 
462
  <div class="sui-message-content">
463
 
464
+ <h2><?php echo forminator_get_form_name( $this->form_id, 'custom_form' );// phpcs:ignore ?></h2>
465
 
466
+ <p><?php esc_html_e( 'You haven’t received any submissions for this form yet. When you do, you’ll be able to view all the data here.', Forminator::DOMAIN ); ?></p>
467
 
468
  </div>
469
 
admin/views/custom-form/entries/filter.php CHANGED
@@ -8,15 +8,15 @@ $is_filter_enabled = $this->is_filter_box_enabled();
8
  $date_range = '';
9
  $date_created = isset( $this->filters['date_created'] ) ? $this->filters['date_created'] : '';
10
  if ( is_array( $date_created ) && isset( $date_created[0] ) && isset( $date_created[1] ) ) {
11
- $date_created[0] = date( 'm/d/Y', strtotime($date_created[0]) );
12
- $date_created[1] = date( 'm/d/Y', strtotime($date_created[1]) );
13
- $date_range = implode(' - ', $date_created);
14
  }
15
- $search = isset( $this->filters['search'] ) ? $this->filters['search'] : '';
16
- $min_id = isset( $this->filters['min_id'] ) ? $this->filters['min_id'] : '';
17
- $max_id = isset( $this->filters['max_id'] ) ? $this->filters['max_id'] : '';
18
- $order_by = isset( $this->order['order_by'] ) ? $this->order['order_by'] : '';
19
- $order = isset( $this->order['order'] ) ? $this->order['order'] : '';
20
  ?>
21
  <div class="sui-pagination-filter <?php echo( $is_filter_enabled ? 'sui-open' : '' ); ?>">
22
 
@@ -31,12 +31,12 @@ $order = isset( $this->order['order'] ) ? $this->order['order'] : '';
31
  <div class="sui-date">
32
  <i class="sui-icon-calendar" aria-hidden="true"></i>
33
  <input type="text"
34
- placeholder="<?php esc_html_e( 'Pick a date range', Forminator::DOMAIN ); ?>"
35
- id="forminator-forms-filter--by-date"
36
- name="date_range"
37
- autocomplete="off"
38
- value="<?php echo esc_attr( $date_range ); ?>"
39
- class="sui-form-control forminator-entries-filter-date"/>
40
  </div>
41
 
42
  </div>
@@ -47,12 +47,12 @@ $order = isset( $this->order['order'] ) ? $this->order['order'] : '';
47
 
48
  <label for="forminator-forms-filter--from-id" class="sui-label"><?php esc_html_e( 'From ID', Forminator::DOMAIN ); ?></label>
49
  <input type="number"
50
- name="min_id"
51
- min="0"
52
- value="<?php echo esc_attr( $min_id ); ?>"
53
- placeholder="<?php esc_html_e( 'E.g. 100', Forminator::DOMAIN ); ?>"
54
- id="forminator-forms-filter--from-id"
55
- class="sui-form-control"/>
56
 
57
  </div>
58
 
@@ -60,12 +60,12 @@ $order = isset( $this->order['order'] ) ? $this->order['order'] : '';
60
 
61
  <label for="forminator-forms-filter--to-id" class="sui-label"><?php esc_html_e( 'To ID', Forminator::DOMAIN ); ?></label>
62
  <input type="number"
63
- name="max_id"
64
- min="0"
65
- value="<?php echo esc_attr( $max_id ); ?>"
66
- placeholder="<?php esc_html_e( 'E.g. 100', Forminator::DOMAIN ); ?>"
67
- id="forminator-forms-filte--to-id"
68
- class="sui-form-control"/>
69
 
70
  </div>
71
 
@@ -82,11 +82,11 @@ $order = isset( $this->order['order'] ) ? $this->order['order'] : '';
82
  <div class="sui-control-with-icon">
83
  <i class="sui-icon-magnifying-glass-search" aria-hidden="true"></i>
84
  <input type="text"
85
- name="search"
86
- value="<?php echo esc_attr( $search ); ?>"
87
- placeholder="<?php esc_html_e( 'E.g. search', Forminator::DOMAIN ); ?>"
88
- id="forminator-forms-filter--by-keyword"
89
- class="sui-form-control"/>
90
  </div>
91
 
92
  </div>
@@ -107,8 +107,8 @@ $order = isset( $this->order['order'] ) ? $this->order['order'] : '';
107
 
108
  <label for="forminator-forms-filter--sort-order" class="sui-label"><?php esc_html_e( 'Sort Order', Forminator::DOMAIN ); ?></label>
109
  <select id="forminator-forms-filter--sort-order" name="order">
110
- <option value="DESC" <?php selected( 'DESC', $order ); ?>><?php esc_html_e( 'Descending', Forminator::DOMAIN ); ?></option>
111
- <option value="ASC" <?php selected( 'ASC', $order ); ?>><?php esc_html_e( 'Ascending', Forminator::DOMAIN ); ?></option>
112
  </select>
113
 
114
  </div>
@@ -123,19 +123,19 @@ $order = isset( $this->order['order'] ) ? $this->order['order'] : '';
123
 
124
  <div class="sui-tabs-menu">
125
 
126
- <label for="forminator-forms-filter--display-false" class="sui-tab-item <?php echo ($this->fields_is_filtered ? '' : 'active'); ?>" data-tab-index="1">
127
  <input type="radio"
128
- name="fields_select"
129
- id="forminator-forms-filter--display-false"
130
- value="false"/>
131
  <?php esc_html_e( 'All', Forminator::DOMAIN ); ?>
132
  </label>
133
 
134
- <label for="forminator-forms-filter--display-true" class="sui-tab-item <?php echo ($this->fields_is_filtered ? 'active' : ''); ?>" data-tab-index="2">
135
  <input type="radio"
136
- name="fields_select"
137
- id="forminator-forms-filter--display-true"
138
- value="true"/>
139
  <?php esc_html_e( 'Specified Fields', Forminator::DOMAIN ); ?>
140
  </label>
141
 
@@ -143,15 +143,16 @@ $order = isset( $this->order['order'] ) ? $this->order['order'] : '';
143
 
144
  <div class="sui-tabs-content">
145
 
146
- <div class="sui-tab-content <?php echo ($this->fields_is_filtered ? '' : 'active'); ?>" data-tab-index="1">
147
  </div>
148
- <div class="sui-tab-content sui-tab-boxed <?php echo ($this->fields_is_filtered ? 'active' : ''); ?>" data-tab-index="2">
149
 
150
- <fieldset class="forminator-entries-fields-filter" <?php echo ($this->fields_is_filtered ? '' : 'disabled=disabled'); ?>>
151
  <?php
152
  $ignored_field_types = Forminator_Form_Entry_Model::ignored_fields();
 
153
 
154
- foreach ( $this->get_fields() as $field ) {
155
 
156
  $label = $field->__get( 'field_label' );
157
  $field_type = $field->__get( 'type' );
@@ -168,13 +169,14 @@ $order = isset( $this->order['order'] ) ? $this->order['order'] : '';
168
  $label = ucfirst( $field_type );
169
  }
170
 
171
- $slug = isset( $field->slug ) ? $field->slug : sanitize_title( $label ); ?>
 
172
 
173
  <label class="sui-checkbox" for="<?php echo esc_attr( $slug ); ?>-enable">
174
  <input type="checkbox"
175
- name="field[]"
176
- value="<?php echo esc_attr( $slug ); ?>"
177
- id="<?php echo esc_attr( $slug ); ?>-enable"
178
  <?php $this->checked_field( $slug ); ?> />
179
  <span aria-hidden="true"></span>
180
  <span class="sui-description"><?php echo esc_html( $label ); ?></span>
8
  $date_range = '';
9
  $date_created = isset( $this->filters['date_created'] ) ? $this->filters['date_created'] : '';
10
  if ( is_array( $date_created ) && isset( $date_created[0] ) && isset( $date_created[1] ) ) {
11
+ $date_created[0] = date( 'm/d/Y', strtotime( $date_created[0] ) );// phpcs:ignore
12
+ $date_created[1] = date( 'm/d/Y', strtotime( $date_created[1] ) );// phpcs:ignore
13
+ $date_range = implode( ' - ', $date_created );
14
  }
15
+ $search_filter = isset( $this->filters['search'] ) ? $this->filters['search'] : '';
16
+ $min_id = isset( $this->filters['min_id'] ) ? $this->filters['min_id'] : '';
17
+ $max_id = isset( $this->filters['max_id'] ) ? $this->filters['max_id'] : '';
18
+ $order_by = isset( $this->order['order_by'] ) ? $this->order['order_by'] : '';
19
+ $order_filter = isset( $this->order['order'] ) ? $this->order['order'] : '';
20
  ?>
21
  <div class="sui-pagination-filter <?php echo( $is_filter_enabled ? 'sui-open' : '' ); ?>">
22
 
31
  <div class="sui-date">
32
  <i class="sui-icon-calendar" aria-hidden="true"></i>
33
  <input type="text"
34
+ placeholder="<?php esc_html_e( 'Pick a date range', Forminator::DOMAIN ); ?>"
35
+ id="forminator-forms-filter--by-date"
36
+ name="date_range"
37
+ autocomplete="off"
38
+ value="<?php echo esc_attr( $date_range ); ?>"
39
+ class="sui-form-control forminator-entries-filter-date"/>
40
  </div>
41
 
42
  </div>
47
 
48
  <label for="forminator-forms-filter--from-id" class="sui-label"><?php esc_html_e( 'From ID', Forminator::DOMAIN ); ?></label>
49
  <input type="number"
50
+ name="min_id"
51
+ min="0"
52
+ value="<?php echo esc_attr( $min_id ); ?>"
53
+ placeholder="<?php esc_html_e( 'E.g. 100', Forminator::DOMAIN ); ?>"
54
+ id="forminator-forms-filter--from-id"
55
+ class="sui-form-control"/>
56
 
57
  </div>
58
 
60
 
61
  <label for="forminator-forms-filter--to-id" class="sui-label"><?php esc_html_e( 'To ID', Forminator::DOMAIN ); ?></label>
62
  <input type="number"
63
+ name="max_id"
64
+ min="0"
65
+ value="<?php echo esc_attr( $max_id ); ?>"
66
+ placeholder="<?php esc_html_e( 'E.g. 100', Forminator::DOMAIN ); ?>"
67
+ id="forminator-forms-filte--to-id"
68
+ class="sui-form-control"/>
69
 
70
  </div>
71
 
82
  <div class="sui-control-with-icon">
83
  <i class="sui-icon-magnifying-glass-search" aria-hidden="true"></i>
84
  <input type="text"
85
+ name="search"
86
+ value="<?php echo esc_attr( $search_filter ); ?>"
87
+ placeholder="<?php esc_html_e( 'E.g. search', Forminator::DOMAIN ); ?>"
88
+ id="forminator-forms-filter--by-keyword"
89
+ class="sui-form-control"/>
90
  </div>
91
 
92
  </div>
107
 
108
  <label for="forminator-forms-filter--sort-order" class="sui-label"><?php esc_html_e( 'Sort Order', Forminator::DOMAIN ); ?></label>
109
  <select id="forminator-forms-filter--sort-order" name="order">
110
+ <option value="DESC" <?php selected( 'DESC', $order_filter ); ?>><?php esc_html_e( 'Descending', Forminator::DOMAIN ); ?></option>
111
+ <option value="ASC" <?php selected( 'ASC', $order_filter ); ?>><?php esc_html_e( 'Ascending', Forminator::DOMAIN ); ?></option>
112
  </select>
113
 
114
  </div>
123
 
124
  <div class="sui-tabs-menu">
125
 
126
+ <label for="forminator-forms-filter--display-false" class="sui-tab-item <?php echo ( $this->fields_is_filtered ? '' : 'active' ); ?>" data-tab-index="1">
127
  <input type="radio"
128
+ name="fields_select"
129
+ id="forminator-forms-filter--display-false"
130
+ value="false"/>
131
  <?php esc_html_e( 'All', Forminator::DOMAIN ); ?>
132
  </label>
133
 
134
+ <label for="forminator-forms-filter--display-true" class="sui-tab-item <?php echo ( $this->fields_is_filtered ? 'active' : '' ); ?>" data-tab-index="2">
135
  <input type="radio"
136
+ name="fields_select"
137
+ id="forminator-forms-filter--display-true"
138
+ value="true"/>
139
  <?php esc_html_e( 'Specified Fields', Forminator::DOMAIN ); ?>
140
  </label>
141
 
143
 
144
  <div class="sui-tabs-content">
145
 
146
+ <div class="sui-tab-content <?php echo ( $this->fields_is_filtered ? '' : 'active' ); ?>" data-tab-index="1">
147
  </div>
148
+ <div class="sui-tab-content sui-tab-boxed <?php echo ( $this->fields_is_filtered ? 'active' : '' ); ?>" data-tab-index="2">
149
 
150
+ <fieldset class="forminator-entries-fields-filter" <?php echo ( $this->fields_is_filtered ? '' : 'disabled=disabled' ); ?>>
151
  <?php
152
  $ignored_field_types = Forminator_Form_Entry_Model::ignored_fields();
153
+ $fields = apply_filters( 'forminator_custom_form_filter_fields', $this->get_fields() );
154
 
155
+ foreach ( $fields as $field ) {
156
 
157
  $label = $field->__get( 'field_label' );
158
  $field_type = $field->__get( 'type' );
169
  $label = ucfirst( $field_type );
170
  }
171
 
172
+ $slug = isset( $field->slug ) ? $field->slug : sanitize_title( $label );
173
+ ?>
174
 
175
  <label class="sui-checkbox" for="<?php echo esc_attr( $slug ); ?>-enable">
176
  <input type="checkbox"
177
+ name="field[]"
178
+ value="<?php echo esc_attr( $slug ); ?>"
179
+ id="<?php echo esc_attr( $slug ); ?>-enable"
180
  <?php $this->checked_field( $slug ); ?> />
181
  <span aria-hidden="true"></span>
182
  <span class="sui-description"><?php echo esc_html( $label ); ?></span>
admin/views/custom-form/entries/header.php CHANGED
@@ -1,9 +1,9 @@
1
- <h1 class="sui-header-title"><?php esc_html_e( "Submissions", Forminator::DOMAIN ); ?></h1>
2
 
3
  <div class="sui-actions-right">
4
  <?php if ( forminator_is_show_documentation_link() ) : ?>
5
  <a href="https://premium.wpmudev.org/docs/wpmu-dev-plugins/forminator/#submissions" target="_blank" class="sui-button sui-button-ghost">
6
- <i class="sui-icon-academy"></i> <?php esc_html_e( "View Documentation", Forminator::DOMAIN ); ?>
7
  </a>
8
  <?php endif; ?>
9
  </div>
1
+ <h1 class="sui-header-title"><?php esc_html_e( 'Submissions', Forminator::DOMAIN ); ?></h1>
2
 
3
  <div class="sui-actions-right">
4
  <?php if ( forminator_is_show_documentation_link() ) : ?>
5
  <a href="https://premium.wpmudev.org/docs/wpmu-dev-plugins/forminator/#submissions" target="_blank" class="sui-button sui-button-ghost">
6
+ <i class="sui-icon-academy"></i> <?php esc_html_e( 'View Documentation', Forminator::DOMAIN ); ?>
7
  </a>
8
  <?php endif; ?>
9
  </div>
admin/views/custom-form/entries/popup/schedule-export-content.php CHANGED
@@ -1,91 +1,91 @@
1
  <div class="wpmudev-box-gray">
2
- <form class="forminator_schedule_export" method="post">
3
- <div id="forminator-export-schedule-timeframe" class="wpmudev-row">
4
 
5
- <div class="wpmudev-col col-12 col-md-4">
6
 
7
- <label><?php esc_html_e( "Frequency", Forminator::DOMAIN ); ?></label>
8
 
9
- <select class="wpmudev-select">
10
 
11
- <option><?php esc_html_e( "Daily", Forminator::DOMAIN ); ?></option>
12
- <option><?php esc_html_e( "Weekly", Forminator::DOMAIN ); ?></option>
13
- <option><?php esc_html_e( "Monthly", Forminator::DOMAIN ); ?></option>
14
 
15
- </select>
16
 
17
- </div>
18
 
19
- <div class="wpmudev-col col-12 col-md-4">
20
 
21
- <label><?php esc_html_e( "Day of the week", Forminator::DOMAIN ); ?></label>
22
 
23
- <select class="wpmudev-select">
24
 
25
- <option><?php esc_html_e( "Monday", Forminator::DOMAIN ); ?></option>
26
- <option><?php esc_html_e( "Tuesday", Forminator::DOMAIN ); ?></option>
27
- <option><?php esc_html_e( "Wednesday", Forminator::DOMAIN ); ?></option>
28
- <option><?php esc_html_e( "Thursday", Forminator::DOMAIN ); ?></option>
29
- <option><?php esc_html_e( "Friday", Forminator::DOMAIN ); ?></option>
30
- <option><?php esc_html_e( "Saturday", Forminator::DOMAIN ); ?></option>
31
- <option><?php esc_html_e( "Sunday", Forminator::DOMAIN ); ?></option>
32
 
33
- </select>
34
 
35
- </div>
36
 
37
- <div class="wpmudev-col col-12 col-md-4">
38
 
39
- <label><?php esc_html_e( "Time of the day", Forminator::DOMAIN ); ?></label>
40
 
41
- <select class="wpmudev-select">
42
 
43
- <option>12:00 AM</option>
44
- <option>01:00 AM</option>
45
- <option>02:00 AM</option>
46
- <option>03:00 AM</option>
47
- <option>04:00 AM</option>
48
- <option>05:00 AM</option>
49
- <option>06:00 AM</option>
50
- <option>07:00 AM</option>
51
- <option>08:00 AM</option>
52
- <option>09:00 AM</option>
53
- <option>10:00 AM</option>
54
- <option>11:00 AM</option>
55
- <option>12:00 PM</option>
56
- <option>01:00 PM</option>
57
- <option>02:00 PM</option>
58
- <option>03:00 PM</option>
59
- <option>04:00 PM</option>
60
- <option>05:00 PM</option>
61
- <option>06:00 PM</option>
62
- <option>07:00 PM</option>
63
- <option>08:00 PM</option>
64
- <option>09:00 PM</option>
65
- <option>10:00 PM</option>
66
- <option>11:00 PM</option>
67
 
68
- </select>
69
 
70
- </div>
71
 
72
- </div>
73
 
74
- <div id="forminator-export-schedule-email" class="wpmudev-row">
75
 
76
- <div class="wpmudev-col col-12">
77
 
78
- <label><?php esc_html_e( "Email export data to", Forminator::DOMAIN ); ?></label>
79
 
80
- <input type="email" class="wpmudev-input"
81
- placeholder="<?php esc_html_e( 'admin@website.com', Forminator::DOMAIN ); ?>">
82
 
83
- <label class="wpmudev-helper"><?php esc_html_e( "Leave blank if you don't want to receive exports via email.", Forminator::DOMAIN ); ?></label>
84
 
85
- </div>
86
 
87
- </div>
88
  <?php wp_nonce_field( 'forminator_export_data', '_forminator_nonce' ); ?>
89
- <button class="wpmudev-button wpmudev-button-blue" type="submit"><?php esc_html_e( "Save Changes", Forminator::DOMAIN ); ?></button>
90
- </form>
91
  </div>
1
  <div class="wpmudev-box-gray">
2
+ <form class="forminator_schedule_export" method="post">
3
+ <div id="forminator-export-schedule-timeframe" class="wpmudev-row">
4
 
5
+ <div class="wpmudev-col col-12 col-md-4">
6
 
7
+ <label><?php esc_html_e( 'Frequency', Forminator::DOMAIN ); ?></label>
8
 
9
+ <select class="wpmudev-select">
10
 
11
+ <option><?php esc_html_e( 'Daily', Forminator::DOMAIN ); ?></option>
12
+ <option><?php esc_html_e( 'Weekly', Forminator::DOMAIN ); ?></option>
13
+ <option><?php esc_html_e( 'Monthly', Forminator::DOMAIN ); ?></option>
14
 
15
+ </select>
16
 
17
+ </div>
18
 
19
+ <div class="wpmudev-col col-12 col-md-4">
20
 
21
+ <label><?php esc_html_e( 'Day of the week', Forminator::DOMAIN ); ?></label>
22
 
23
+ <select class="wpmudev-select">
24
 
25
+ <option><?php esc_html_e( 'Monday', Forminator::DOMAIN ); ?></option>
26
+ <option><?php esc_html_e( 'Tuesday', Forminator::DOMAIN ); ?></option>
27
+ <option><?php esc_html_e( 'Wednesday', Forminator::DOMAIN ); ?></option>
28
+ <option><?php esc_html_e( 'Thursday', Forminator::DOMAIN ); ?></option>
29
+ <option><?php esc_html_e( 'Friday', Forminator::DOMAIN ); ?></option>
30
+ <option><?php esc_html_e( 'Saturday', Forminator::DOMAIN ); ?></option>
31
+ <option><?php esc_html_e( 'Sunday', Forminator::DOMAIN ); ?></option>
32
 
33
+ </select>
34
 
35
+ </div>
36
 
37
+ <div class="wpmudev-col col-12 col-md-4">
38
 
39
+ <label><?php esc_html_e( 'Time of the day', Forminator::DOMAIN ); ?></label>
40
 
41
+ <select class="wpmudev-select">
42
 
43
+ <option>12:00 AM</option>
44
+ <option>01:00 AM</option>
45
+ <option>02:00 AM</option>
46
+ <option>03:00 AM</option>
47
+ <option>04:00 AM</option>
48
+ <option>05:00 AM</option>
49
+ <option>06:00 AM</option>
50
+ <option>07:00 AM</option>
51
+ <option>08:00 AM</option>
52
+ <option>09:00 AM</option>
53
+ <option>10:00 AM</option>
54
+ <option>11:00 AM</option>
55
+ <option>12:00 PM</option>
56
+ <option>01:00 PM</option>
57
+ <option>02:00 PM</option>
58
+ <option>03:00 PM</option>
59
+ <option>04:00 PM</option>
60
+ <option>05:00 PM</option>
61
+ <option>06:00 PM</option>
62
+ <option>07:00 PM</option>
63
+ <option>08:00 PM</option>
64
+ <option>09:00 PM</option>
65
+ <option>10:00 PM</option>
66
+ <option>11:00 PM</option>
67
 
68
+ </select>
69
 
70
+ </div>
71
 
72
+ </div>
73
 
74
+ <div id="forminator-export-schedule-email" class="wpmudev-row">
75
 
76
+ <div class="wpmudev-col col-12">
77
 
78
+ <label><?php esc_html_e( 'Email export data to', Forminator::DOMAIN ); ?></label>
79
 
80
+ <input type="email" class="wpmudev-input"
81
+ placeholder="<?php esc_html_e( 'admin@website.com', Forminator::DOMAIN ); ?>">
82
 
83
+ <label class="wpmudev-helper"><?php esc_html_e( "Leave blank if you don't want to receive exports via email.", Forminator::DOMAIN ); ?></label>
84
 
85
+ </div>
86
 
87
+ </div>
88
  <?php wp_nonce_field( 'forminator_export_data', '_forminator_nonce' ); ?>
89
+ <button class="wpmudev-button wpmudev-button-blue" type="submit"><?php esc_html_e( 'Save Changes', Forminator::DOMAIN ); ?></button>
90
+ </form>
91
  </div>
admin/views/custom-form/entries/prompt.php CHANGED
@@ -12,7 +12,7 @@ if ( ! FORMINATOR_PRO ) {
12
  if ( ( 0 < $live_payment_count && 100 >= $submission && ! $submission_later ) ||
13
  ( 0 < $live_payment_count && 100 < $submission && ! $submission_later_dismiss ) ) { ?>
14
  <div class="forminator-rating-notice sui-notice sui-notice-purple fui-notice-rate<?php echo forminator_is_show_branding() ? '' : ' fui-unbranded'; ?>"
15
- data-nonce="<?php echo esc_attr( wp_create_nonce( 'forminator_dismiss_notification' ) ); ?>">
16
  <?php if ( $submission <= 100 ) { ?>
17
  <p><?php printf( esc_html__( "%1\$sCongratulations!%2\$s You have started collecting live payments on this form - that's awesome. We have spent countless hours developing this free plugin for you, and we would really appreciate it if you could drop us a rating on wp.org to help us spread the word and boost our motivation.", Forminator::DOMAIN ), '<strong>', '</strong>' ); ?></p>
18
  <?php } else { ?>
@@ -20,41 +20,41 @@ if ( ! FORMINATOR_PRO ) {
20
  <?php } ?>
21
  <p>
22
  <a type="button" href="#" target="_blank"
23
- class="sui-button sui-button-purple"
24
- data-prop="forminator_rating_success"><?php esc_html_e( 'Rate Forminator', Forminator::DOMAIN ); ?></a>
25
 
26
  <button type="button"
27
  class="sui-button sui-button-ghost"
28
  data-prop="<?php echo 100 > $live_payment_count ? 'forminator_submission_rating_later' : 'forminator_submission_rating_later_dismiss'; ?>"><?php esc_html_e( 'Maybe later', Forminator::DOMAIN ); ?></button>
29
 
30
  <a href="#" style="color: #888;"
31
- data-prop="forminator_rating_dismissed"
32
- data-prop="forminator_rating_dismissed"><?php esc_html_e( 'No Thanks', Forminator::DOMAIN ); ?></a>
33
  </p>
34
 
35
  </div>
36
  <?php }
37
  } else {
38
  if ( ( ( 10 < $submission && 100 >= $submission ) && ! $submission_later )
39
- || ( 100 < $submission && ! $submission_later_dismiss ) ) {
40
  $milestone = ( 100 >= $submission ) ? 10 : 100;
41
  ?>
42
  <div class="forminator-rating-notice sui-notice sui-notice-purple fui-notice-rate<?php echo forminator_is_show_branding() ? '' : ' fui-unbranded'; ?>"
43
- data-nonce="<?php echo esc_attr( wp_create_nonce( 'forminator_dismiss_notification' ) ); ?>">
44
 
45
  <p><?php printf( esc_html__( "Hey, we noticed you just crossed %1\$s submissions%2\$s on this form - that's awesome! We have spent countless hours developing this free plugin for you, and we would really appreciate it if you could drop us a rating on wp.org to help us spread the word and boost our motivation.", Forminator::DOMAIN ), '<strong> ' . $milestone, '</strong>' ); ?></p>
46
  <p>
47
  <a type="button" href="#" target="_blank"
48
- class="sui-button sui-button-purple"
49
- data-prop="forminator_rating_success"><?php esc_html_e( 'Rate Forminator', Forminator::DOMAIN ); ?></a>
50
 
51
  <button type="button"
52
  class="sui-button sui-button-ghost"
53
  data-prop="<?php echo 100 > $submission ? 'forminator_submission_rating_later' : 'forminator_submission_rating_later_dismiss'; ?>"><?php esc_html_e( 'Maybe later', Forminator::DOMAIN ); ?></button>
54
 
55
  <a href="#" style="color: #888;"
56
- data-prop="forminator_rating_dismissed"
57
- data-prop="forminator_rating_dismissed"><?php esc_html_e( 'No Thanks', Forminator::DOMAIN ); ?></a>
58
  </p>
59
 
60
  </div>
@@ -104,4 +104,4 @@ if ( ! FORMINATOR_PRO ) {
104
  </script>
105
  <?php
106
  } ?>
107
- <?php } ?>
12
  if ( ( 0 < $live_payment_count && 100 >= $submission && ! $submission_later ) ||
13
  ( 0 < $live_payment_count && 100 < $submission && ! $submission_later_dismiss ) ) { ?>
14
  <div class="forminator-rating-notice sui-notice sui-notice-purple fui-notice-rate<?php echo forminator_is_show_branding() ? '' : ' fui-unbranded'; ?>"
15
+ data-nonce="<?php echo esc_attr( wp_create_nonce( 'forminator_dismiss_notification' ) ); ?>">
16
  <?php if ( $submission <= 100 ) { ?>
17
  <p><?php printf( esc_html__( "%1\$sCongratulations!%2\$s You have started collecting live payments on this form - that's awesome. We have spent countless hours developing this free plugin for you, and we would really appreciate it if you could drop us a rating on wp.org to help us spread the word and boost our motivation.", Forminator::DOMAIN ), '<strong>', '</strong>' ); ?></p>
18
  <?php } else { ?>
20
  <?php } ?>
21
  <p>
22
  <a type="button" href="#" target="_blank"
23
+ class="sui-button sui-button-purple"
24
+ data-prop="forminator_rating_success"><?php esc_html_e( 'Rate Forminator', Forminator::DOMAIN ); ?></a>
25
 
26
  <button type="button"
27
  class="sui-button sui-button-ghost"
28
  data-prop="<?php echo 100 > $live_payment_count ? 'forminator_submission_rating_later' : 'forminator_submission_rating_later_dismiss'; ?>"><?php esc_html_e( 'Maybe later', Forminator::DOMAIN ); ?></button>
29
 
30
  <a href="#" style="color: #888;"
31
+ data-prop="forminator_rating_dismissed"
32
+ data-prop="forminator_rating_dismissed"><?php esc_html_e( 'No Thanks', Forminator::DOMAIN ); ?></a>
33
  </p>
34
 
35
  </div>
36
  <?php }
37
  } else {
38
  if ( ( ( 10 < $submission && 100 >= $submission ) && ! $submission_later )
39
+ || ( 100 < $submission && ! $submission_later_dismiss ) ) {
40
  $milestone = ( 100 >= $submission ) ? 10 : 100;
41
  ?>
42
  <div class="forminator-rating-notice sui-notice sui-notice-purple fui-notice-rate<?php echo forminator_is_show_branding() ? '' : ' fui-unbranded'; ?>"
43
+ data-nonce="<?php echo esc_attr( wp_create_nonce( 'forminator_dismiss_notification' ) ); ?>">
44
 
45
  <p><?php printf( esc_html__( "Hey, we noticed you just crossed %1\$s submissions%2\$s on this form - that's awesome! We have spent countless hours developing this free plugin for you, and we would really appreciate it if you could drop us a rating on wp.org to help us spread the word and boost our motivation.", Forminator::DOMAIN ), '<strong> ' . $milestone, '</strong>' ); ?></p>
46
  <p>
47
  <a type="button" href="#" target="_blank"
48
+ class="sui-button sui-button-purple"
49
+ data-prop="forminator_rating_success"><?php esc_html_e( 'Rate Forminator', Forminator::DOMAIN ); ?></a>
50
 
51
  <button type="button"
52
  class="sui-button sui-button-ghost"
53
  data-prop="<?php echo 100 > $submission ? 'forminator_submission_rating_later' : 'forminator_submission_rating_later_dismiss'; ?>"><?php esc_html_e( 'Maybe later', Forminator::DOMAIN ); ?></button>
54
 
55
  <a href="#" style="color: #888;"
56
+ data-prop="forminator_rating_dismissed"
57
+ data-prop="forminator_rating_dismissed"><?php esc_html_e( 'No Thanks', Forminator::DOMAIN ); ?></a>
58
  </p>
59
 
60
  </div>
104
  </script>
105
  <?php
106
  } ?>
107
+ <?php } ?>
admin/views/custom-form/list/content.php CHANGED
@@ -6,14 +6,14 @@ $image_empty = forminator_plugin_url() . 'assets/images/forminator-empty-messa
6
  $image_empty2x = forminator_plugin_url() . 'assets/images/forminator-empty-message@2x.png';
7
 
8
  // Count total forms
9
- $count = $this->countModules();
10
  $count_active = $this->countModules( 'publish' );
11
 
12
  // available bulk actions
13
  $bulk_actions = $this->bulk_actions();
14
 
15
  // Start date for retrieving the information of the last 30 days in sql format
16
- $sql_month_start_date = date( 'Y-m-d H:i:s', strtotime( '-30 days midnight' ) );
17
 
18
  // Count total entries from last 30 days
19
  $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_entry_ids( 'custom-forms', $sql_month_start_date ) );
@@ -31,7 +31,7 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
31
 
32
  <span class="sui-summary-large"><?php echo esc_html( $count_active ); ?></span>
33
 
34
- <span class="sui-summary-sub"><?php printf( esc_html( _n( 'Active Form', 'Active Forms', $count_active, Forminator::DOMAIN ) ), $count_active ); // WPCS: XSS ok. ?></span>
35
 
36
  </div>
37
 
@@ -43,7 +43,7 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
43
 
44
  <li>
45
  <span class="sui-list-label"><?php esc_html_e( 'Last Submission', Forminator::DOMAIN ); ?></span>
46
- <span class="sui-list-detail"><?php echo forminator_get_latest_entry_time( 'custom-forms' ); // WPCS: XSS ok. ?></span>
47
  </li>
48
 
49
  <li>
@@ -62,7 +62,7 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
62
 
63
  <div class="fui-pagination-mobile sui-pagination-wrap">
64
 
65
- <span class="sui-pagination-results"><?php echo esc_html( sprintf( _n( '%s result', '%s results', $count, Forminator::DOMAIN ), $count ) ); ?></span>
66
 
67
  <?php $this->pagination(); ?>
68
 
@@ -99,7 +99,7 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
99
  <div class="sui-search-right">
100
 
101
  <div class="sui-pagination-wrap">
102
- <span class="sui-pagination-results"><?php echo esc_html( sprintf( _n( '%s result', '%s results', $count, Forminator::DOMAIN ), $count ) ); ?></span>
103
  <?php $this->pagination(); ?>
104
  </div>
105
 
@@ -116,9 +116,9 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
116
 
117
  <?php
118
  foreach ( $this->getModules() as $module ) {
119
- $module_entries_from_last_month = 0 !== $module["entries"] ? count( Forminator_Form_Entry_Model::get_newer_entry_ids_of_form_id( $module['id'], $sql_month_start_date ) ) : 0;
120
- $opened_class = '';
121
- $opened_chart = '';
122
 
123
  if( isset( $_GET['view-stats'] ) && intval( $_GET['view-stats'] ) === intval( $module['id'] ) ) { // phpcs:ignore
124
  $opened_class = ' sui-accordion-item--open forminator-scroll-to';
@@ -138,28 +138,32 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
138
  <span class="sui-screen-reader-text"><?php esc_html_e( 'Select this form', Forminator::DOMAIN ); ?></span>
139
  </label>
140
 
141
- <span class="sui-trim-text"><?php echo forminator_get_form_name( $module['id'], 'custom_form'); // WPCS: XSS ok. ?></span>
142
 
143
- <?php if ( 'publish' === $module['status'] ) {
 
144
  echo '<span class="sui-tag sui-tag-blue">' . esc_html__( 'Published', Forminator::DOMAIN ) . '</span>';
145
- } ?>
 
146
 
147
- <?php if ( 'draft' === $module['status'] ) {
 
148
  echo '<span class="sui-tag">' . esc_html__( 'Draft', Forminator::DOMAIN ) . '</span>';
149
- } ?>
 
150
 
151
  </div>
152
 
153
- <div class="sui-accordion-item-date"><strong><?php esc_html_e( 'Last Submission', Forminator::DOMAIN ); ?></strong> <?php echo esc_html( $module["last_entry_time"] ); ?></div>
154
 
155
  <div class="sui-accordion-col-auto">
156
 
157
- <a href="<?php echo admin_url( 'admin.php?page=forminator-cform-wizard&id=' . $module['id'] ); // WPCS: XSS ok. ?>"
158
  class="sui-button sui-button-ghost sui-accordion-item-action sui-desktop-visible">
159
- <i class="sui-icon-pencil" aria-hidden="true"></i> <?php esc_html_e( "Edit", Forminator::DOMAIN ); ?>
160
  </a>
161
 
162
- <a href="<?php echo admin_url( 'admin.php?page=forminator-cform-wizard&id=' . $module['id'] ); // WPCS: XSS ok. ?>"
163
  class="sui-button-icon sui-accordion-item-action sui-mobile-visible">
164
  <i class="sui-icon-pencil" aria-hidden="true"></i>
165
  <span class="sui-screen-reader-text"><?php esc_html_e( 'Edit', Forminator::DOMAIN ); ?></span>
@@ -176,15 +180,15 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
176
 
177
  <li><a href="#"
178
  class="wpmudev-open-modal"
179
- data-nonce="<?php echo wp_create_nonce( 'forminator_popup_preview_cforms' ); // WPCS: XSS ok. ?>"
180
  data-form-id="<?php echo esc_attr( $module['id'] ); ?>"
181
  data-modal="preview_cforms"
182
- data-modal-title="<?php echo sprintf( "%s - %s", esc_html__( 'Preview Custom Form', Forminator::DOMAIN ), forminator_get_form_name( $module['id'], 'custom_form' ) ); // WPCS: XSS ok. ?>">
183
  <i class="sui-icon-eye" aria-hidden="true"></i> <?php esc_html_e( 'Preview', Forminator::DOMAIN ); ?>
184
  </a></li>
185
 
186
  <li>
187
- <button class="copy-clipboard" data-shortcode='[forminator_form id="<?php echo esc_attr( $module['id'] ); ?>"]'><i class="sui-icon-code" aria-hidden="true"></i> <?php esc_html_e( "Copy Shortcode", Forminator::DOMAIN ); ?></button>
188
  </li>
189
 
190
  <?php if ( 'publish' === $module['status'] ) { ?>
@@ -223,7 +227,7 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
223
 
224
  <?php } ?>
225
 
226
- <li><a href="<?php echo admin_url( 'admin.php?page=forminator-entries&form_type=forminator_forms&form_id=' . $module['id'] ); // WPCS: XSS ok. ?>">
227
  <i class="sui-icon-community-people" aria-hidden="true"></i> <?php esc_html_e( 'View Submissions', Forminator::DOMAIN ); ?>
228
  </a></li>
229
 
@@ -240,7 +244,7 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
240
  <input type="hidden" name="forminator_action" value="reset-views">
241
  <input type="hidden" name="id" value="<?php echo esc_attr( $module['id'] ); ?>"/>
242
  <?php wp_nonce_field( 'forminatorCustomFormRequest', 'forminatorNonce' ); ?>
243
- <button type="submit"><i class="sui-icon-update" aria-hidden="true"></i> <?php esc_html_e( "Reset Tracking data", Forminator::DOMAIN ); ?></button>
244
  </form></li>
245
 
246
  <?php if ( Forminator::is_import_export_feature_enabled() ) : ?>
@@ -263,7 +267,7 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
263
  data-modal-title="<?php esc_attr_e( 'Delete Form', Forminator::DOMAIN ); ?>"
264
  data-modal-content="<?php esc_attr_e( 'Are you sure you wish to permanently delete this form?', Forminator::DOMAIN ); ?>"
265
  data-form-id="<?php echo esc_attr( $module['id'] ); ?>"
266
- data-nonce="<?php echo wp_create_nonce( 'forminatorCustomFormRequest' ); // WPCS: XSS ok. ?>"
267
  >
268
  <i class="sui-icon-trash" aria-hidden="true"></i> <?php esc_html_e( 'Delete', Forminator::DOMAIN ); ?>
269
  </button>
@@ -285,33 +289,33 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
285
 
286
  <li data-col="large">
287
  <strong><?php esc_html_e( 'Last Submission', Forminator::DOMAIN ); ?></strong>
288
- <span><?php echo esc_html( $module["last_entry_time"] ); ?></span>
289
  </li>
290
 
291
  <li data-col="small">
292
  <strong><?php esc_html_e( 'Views', Forminator::DOMAIN ); ?></strong>
293
- <span><?php echo esc_html( $module["views"] ); ?></span>
294
  </li>
295
 
296
  <li>
297
  <strong><?php esc_html_e( 'Submissions', Forminator::DOMAIN ); ?></strong>
298
- <a href="<?php echo admin_url( 'admin.php?page=forminator-cform-view&form_id=' . $module['id'] ); // WPCS: XSS ok. ?>"><?php echo esc_html( $module["entries"] ); ?></a>
299
  </li>
300
 
301
  <li>
302
  <strong><?php esc_html_e( 'Conversion Rate', Forminator::DOMAIN ); ?></strong>
303
- <span><?php echo $this->getRate( $module ); // WPCS: XSS ok. ?>%</span>
304
  </li>
305
 
306
  </ul>
307
 
308
- <div class="sui-chartjs sui-chartjs-animated<?php echo esc_attr( $opened_chart ); ?>" data-chart-id="<?php echo $module['id']; // WPCS: XSS ok. ?>">
309
 
310
  <div class="sui-chartjs-message sui-chartjs-message--loading">
311
  <p><i class="sui-icon-loader sui-loading" aria-hidden="true"></i> <?php esc_html_e( 'Loading data...', Forminator::DOMAIN ); ?></p>
312
  </div>
313
 
314
- <?php if ( 0 === $module["entries"] ) { ?>
315
 
316
  <div class="sui-chartjs-message sui-chartjs-message--empty">
317
  <p><i class="sui-icon-info" aria-hidden="true"></i> <?php esc_html_e( "Your form doesn't have any submissions yet. Try again in a moment.", Forminator::DOMAIN ); ?></p>
@@ -321,11 +325,13 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
321
 
322
  <?php if ( 0 === $module_entries_from_last_month ) { ?>
323
 
324
- <?php if ( 'draft' === $module['status'] ) {
 
325
  $message = esc_html__( "This form is in draft state, so we've paused collecting data until you publish it live.", Forminator::DOMAIN );
326
  } else {
327
  $message = esc_html__( "Your form didn't collect submissions the past 30 days.", Forminator::DOMAIN );
328
- } ?>
 
329
 
330
  <div class="sui-chartjs-message sui-chartjs-message--empty">
331
  <p><i class="sui-icon-info" aria-hidden="true"></i> <?php echo esc_html( $message ); ?></p>
@@ -347,8 +353,8 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
347
 
348
  <div class="sui-chartjs-canvas">
349
 
350
- <?php if ( ( 0 !== $module["entries"] ) || ( 0 !== $module_entries_from_last_month ) ) { ?>
351
- <canvas id="forminator-form-<?php echo $module['id']; // WPCS: XSS ok. ?>-stats"></canvas>
352
  <?php } ?>
353
 
354
  </div>
@@ -367,12 +373,12 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
367
 
368
  <div class="sui-box sui-message sui-message-lg">
369
 
370
- <?php if ( forminator_is_show_branding() ): ?>
371
  <img src="<?php echo esc_url( $image_empty ); ?>"
372
- srcset="<?php echo esc_url( $image_empty2x ); ?> 1x, <?php echo esc_url( $image_empty2x ); ?> 2x"
373
- alt="<?php esc_html_e( 'Empty forms', Forminator::DOMAIN ); ?>"
374
- class="sui-image sui-image-center"
375
- aria-hidden="true"/>
376
  <?php endif; ?>
377
 
378
  <div class="sui-message-content">
@@ -406,24 +412,24 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
406
  <?php } ?>
407
 
408
  <?php
409
- $days_array = array();
410
  $default_array = array();
411
 
412
  for ( $h = 30; $h >= 0; $h-- ) {
413
- $time = strtotime( '-' . $h . ' days' );
414
- $date = date( 'Y-m-d', $time );
415
  $default_array[ $date ] = 0;
416
- $days_array[] = date( 'M j, Y', $time );
417
  }
418
 
419
  foreach ( $this->getModules() as $module ) {
420
 
421
- if ( 0 === $module["entries"] ) {
422
  $submissions_data = $default_array;
423
  } else {
424
- $submissions = Forminator_Form_Entry_Model::get_form_latest_entries_count_grouped_by_day( $module['id'], $sql_month_start_date );
425
  $submissions_array = wp_list_pluck( $submissions, 'entries_amount', 'date_created' );
426
- $submissions_data = array_merge( $default_array, array_intersect_key( $submissions_array, $default_array ) );
427
  }
428
 
429
  // Get highest value
@@ -435,10 +441,10 @@ foreach ( $this->getModules() as $module ) {
435
 
436
  <script>
437
 
438
- var ctx = document.getElementById( 'forminator-form-<?php echo $module['id']; // WPCS: XSS ok. ?>-stats' );
439
 
440
- var monthDays = [ '<?php echo implode( "', '", $days_array ); // WPCS: XSS ok. ?>' ],
441
- submissions = [ <?php echo implode( ', ', $submissions_data ); // WPCS: XSS ok. ?> ]
442
  ;
443
 
444
  var chartData = {
@@ -508,10 +514,10 @@ foreach ( $this->getModules() as $module ) {
508
  return tooltipItem.xLabel;
509
  },
510
  // Set label text color
511
- labelTextColor:function( tooltipItem, chart ) {
512
- return '#AAAAAA';
513
- }
514
- }
515
  },
516
  plugins: {
517
  datalabels: {
6
  $image_empty2x = forminator_plugin_url() . 'assets/images/forminator-empty-message@2x.png';
7
 
8
  // Count total forms
9
+ $count = $this->countModules();
10
  $count_active = $this->countModules( 'publish' );
11
 
12
  // available bulk actions
13
  $bulk_actions = $this->bulk_actions();
14
 
15
  // Start date for retrieving the information of the last 30 days in sql format
16
+ $sql_month_start_date = date( 'Y-m-d H:i:s', strtotime( '-30 days midnight' ) );// phpcs:ignore
17
 
18
  // Count total entries from last 30 days
19
  $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_entry_ids( 'custom-forms', $sql_month_start_date ) );
31
 
32
  <span class="sui-summary-large"><?php echo esc_html( $count_active ); ?></span>
33
 
34
+ <span class="sui-summary-sub"><?php printf( esc_html( _n( 'Active Form', 'Active Forms', esc_html( $count_active ), Forminator::DOMAIN ) ), esc_html( $count_active ) ); ?></span>
35
 
36
  </div>
37
 
43
 
44
  <li>
45
  <span class="sui-list-label"><?php esc_html_e( 'Last Submission', Forminator::DOMAIN ); ?></span>
46
+ <span class="sui-list-detail"><?php echo esc_html( forminator_get_latest_entry_time( 'custom-forms' ) ); ?></span>
47
  </li>
48
 
49
  <li>
62
 
63
  <div class="fui-pagination-mobile sui-pagination-wrap">
64
 
65
+ <span class="sui-pagination-results"><?php /* translators: ... */ echo esc_html( sprintf( _n( '%s result', '%s results', $count, Forminator::DOMAIN ), $count ) ); ?></span>
66
 
67
  <?php $this->pagination(); ?>
68
 
99
  <div class="sui-search-right">
100
 
101
  <div class="sui-pagination-wrap">
102
+ <span class="sui-pagination-results"><?php /* translators: ... */ echo esc_html( sprintf( _n( '%s result', '%s results', $count, Forminator::DOMAIN ), $count ) ); ?></span>
103
  <?php $this->pagination(); ?>
104
  </div>
105
 
116
 
117
  <?php
118
  foreach ( $this->getModules() as $module ) {
119
+ $module_entries_from_last_month = 0 !== $module['entries'] ? count( Forminator_Form_Entry_Model::get_newer_entry_ids_of_form_id( $module['id'], $sql_month_start_date ) ) : 0;
120
+ $opened_class = '';
121
+ $opened_chart = '';
122
 
123
  if( isset( $_GET['view-stats'] ) && intval( $_GET['view-stats'] ) === intval( $module['id'] ) ) { // phpcs:ignore
124
  $opened_class = ' sui-accordion-item--open forminator-scroll-to';
138
  <span class="sui-screen-reader-text"><?php esc_html_e( 'Select this form', Forminator::DOMAIN ); ?></span>
139
  </label>
140
 
141
+ <span class="sui-trim-text"><?php echo forminator_get_form_name( $module['id'], 'custom_form' );// phpcs:ignore ?></span>
142
 
143
+ <?php
144
+ if ( 'publish' === $module['status'] ) {
145
  echo '<span class="sui-tag sui-tag-blue">' . esc_html__( 'Published', Forminator::DOMAIN ) . '</span>';
146
+ }
147
+ ?>
148
 
149
+ <?php
150
+ if ( 'draft' === $module['status'] ) {
151
  echo '<span class="sui-tag">' . esc_html__( 'Draft', Forminator::DOMAIN ) . '</span>';
152
+ }
153
+ ?>
154
 
155
  </div>
156
 
157
+ <div class="sui-accordion-item-date"><strong><?php esc_html_e( 'Last Submission', Forminator::DOMAIN ); ?></strong> <?php echo esc_html( $module['last_entry_time'] ); ?></div>
158
 
159
  <div class="sui-accordion-col-auto">
160
 
161
+ <a href="<?php echo admin_url( 'admin.php?page=forminator-cform-wizard&id=' . $module['id'] ); // phpcs:ignore ?>"
162
  class="sui-button sui-button-ghost sui-accordion-item-action sui-desktop-visible">
163
+ <i class="sui-icon-pencil" aria-hidden="true"></i> <?php esc_html_e( 'Edit', Forminator::DOMAIN ); ?>
164
  </a>
165
 
166
+ <a href="<?php echo admin_url( 'admin.php?page=forminator-cform-wizard&id=' . $module['id'] ); // phpcs:ignore ?>"
167
  class="sui-button-icon sui-accordion-item-action sui-mobile-visible">
168
  <i class="sui-icon-pencil" aria-hidden="true"></i>
169
  <span class="sui-screen-reader-text"><?php esc_html_e( 'Edit', Forminator::DOMAIN ); ?></span>
180
 
181
  <li><a href="#"
182
  class="wpmudev-open-modal"
183
+ data-nonce="<?php echo esc_attr( wp_create_nonce( 'forminator_popup_preview_cforms' ) ); ?>"
184
  data-form-id="<?php echo esc_attr( $module['id'] ); ?>"
185
  data-modal="preview_cforms"
186
+ data-modal-title="<?php echo sprintf( '%s - %s', esc_html__( 'Preview Custom Form', Forminator::DOMAIN ), forminator_get_form_name( $module['id'], 'custom_form' ) ); // phpcs:ignore ?>">
187
  <i class="sui-icon-eye" aria-hidden="true"></i> <?php esc_html_e( 'Preview', Forminator::DOMAIN ); ?>
188
  </a></li>
189
 
190
  <li>
191
+ <button class="copy-clipboard" data-shortcode='[forminator_form id="<?php echo esc_attr( $module['id'] ); ?>"]'><i class="sui-icon-code" aria-hidden="true"></i> <?php esc_html_e( 'Copy Shortcode', Forminator::DOMAIN ); ?></button>
192
  </li>
193
 
194
  <?php if ( 'publish' === $module['status'] ) { ?>
227
 
228
  <?php } ?>
229
 
230
+ <li><a href="<?php echo admin_url( 'admin.php?page=forminator-entries&form_type=forminator_forms&form_id=' . $module['id'] ); // phpcs:ignore ?>">
231
  <i class="sui-icon-community-people" aria-hidden="true"></i> <?php esc_html_e( 'View Submissions', Forminator::DOMAIN ); ?>
232
  </a></li>
233
 
244
  <input type="hidden" name="forminator_action" value="reset-views">
245
  <input type="hidden" name="id" value="<?php echo esc_attr( $module['id'] ); ?>"/>
246
  <?php wp_nonce_field( 'forminatorCustomFormRequest', 'forminatorNonce' ); ?>
247
+ <button type="submit"><i class="sui-icon-update" aria-hidden="true"></i> <?php esc_html_e( 'Reset Tracking data', Forminator::DOMAIN ); ?></button>
248
  </form></li>
249
 
250
  <?php if ( Forminator::is_import_export_feature_enabled() ) : ?>
267
  data-modal-title="<?php esc_attr_e( 'Delete Form', Forminator::DOMAIN ); ?>"
268
  data-modal-content="<?php esc_attr_e( 'Are you sure you wish to permanently delete this form?', Forminator::DOMAIN ); ?>"
269
  data-form-id="<?php echo esc_attr( $module['id'] ); ?>"
270
+ data-nonce="<?php echo esc_attr( wp_create_nonce( 'forminatorCustomFormRequest' ) ); ?>"
271
  >
272
  <i class="sui-icon-trash" aria-hidden="true"></i> <?php esc_html_e( 'Delete', Forminator::DOMAIN ); ?>
273
  </button>
289
 
290
  <li data-col="large">
291
  <strong><?php esc_html_e( 'Last Submission', Forminator::DOMAIN ); ?></strong>
292
+ <span><?php echo esc_html( $module['last_entry_time'] ); ?></span>
293
  </li>
294
 
295
  <li data-col="small">
296
  <strong><?php esc_html_e( 'Views', Forminator::DOMAIN ); ?></strong>
297
+ <span><?php echo esc_html( $module['views'] ); ?></span>
298
  </li>
299
 
300
  <li>
301
  <strong><?php esc_html_e( 'Submissions', Forminator::DOMAIN ); ?></strong>
302
+ <a href="<?php echo admin_url( 'admin.php?page=forminator-cform-view&form_id=' . $module['id'] ); // phpcs:ignore ?>"><?php echo esc_html( $module['entries'] ); ?></a>
303
  </li>
304
 
305
  <li>
306
  <strong><?php esc_html_e( 'Conversion Rate', Forminator::DOMAIN ); ?></strong>
307
+ <span><?php echo esc_html( $this->getRate( $module ) ); ?>%</span>
308
  </li>
309
 
310
  </ul>
311
 
312
+ <div class="sui-chartjs sui-chartjs-animated<?php echo esc_attr( $opened_chart ); ?>" data-chart-id="<?php echo esc_attr( $module['id'] ); ?>">
313
 
314
  <div class="sui-chartjs-message sui-chartjs-message--loading">
315
  <p><i class="sui-icon-loader sui-loading" aria-hidden="true"></i> <?php esc_html_e( 'Loading data...', Forminator::DOMAIN ); ?></p>
316
  </div>
317
 
318
+ <?php if ( 0 === $module['entries'] ) { ?>
319
 
320
  <div class="sui-chartjs-message sui-chartjs-message--empty">
321
  <p><i class="sui-icon-info" aria-hidden="true"></i> <?php esc_html_e( "Your form doesn't have any submissions yet. Try again in a moment.", Forminator::DOMAIN ); ?></p>
325
 
326
  <?php if ( 0 === $module_entries_from_last_month ) { ?>
327
 
328
+ <?php
329
+ if ( 'draft' === $module['status'] ) {
330
  $message = esc_html__( "This form is in draft state, so we've paused collecting data until you publish it live.", Forminator::DOMAIN );
331
  } else {
332
  $message = esc_html__( "Your form didn't collect submissions the past 30 days.", Forminator::DOMAIN );
333
+ }
334
+ ?>
335
 
336
  <div class="sui-chartjs-message sui-chartjs-message--empty">
337
  <p><i class="sui-icon-info" aria-hidden="true"></i> <?php echo esc_html( $message ); ?></p>
353
 
354
  <div class="sui-chartjs-canvas">
355
 
356
+ <?php if ( ( 0 !== $module['entries'] ) || ( 0 !== $module_entries_from_last_month ) ) { ?>
357
+ <canvas id="forminator-form-<?php echo $module['id']; // phpcs:ignore ?>-stats"></canvas>
358
  <?php } ?>
359
 
360
  </div>
373
 
374
  <div class="sui-box sui-message sui-message-lg">
375
 
376
+ <?php if ( forminator_is_show_branding() ) : ?>
377
  <img src="<?php echo esc_url( $image_empty ); ?>"
378
+ srcset="<?php echo esc_url( $image_empty2x ); ?> 1x, <?php echo esc_url( $image_empty2x ); ?> 2x"
379
+ alt="<?php esc_html_e( 'Empty forms', Forminator::DOMAIN ); ?>"
380
+ class="sui-image sui-image-center"
381
+ aria-hidden="true"/>
382
  <?php endif; ?>
383
 
384
  <div class="sui-message-content">
412
  <?php } ?>
413
 
414
  <?php
415
+ $days_array = array();
416
  $default_array = array();
417
 
418
  for ( $h = 30; $h >= 0; $h-- ) {
419
+ $time = strtotime( '-' . $h . ' days' );
420
+ $date = date( 'Y-m-d', $time );// phpcs:ignore
421
  $default_array[ $date ] = 0;
422
+ $days_array[] = date( 'M j, Y', $time );// phpcs:ignore
423
  }
424
 
425
  foreach ( $this->getModules() as $module ) {
426
 
427
+ if ( 0 === $module['entries'] ) {
428
  $submissions_data = $default_array;
429
  } else {
430
+ $submissions = Forminator_Form_Entry_Model::get_form_latest_entries_count_grouped_by_day( $module['id'], $sql_month_start_date );
431
  $submissions_array = wp_list_pluck( $submissions, 'entries_amount', 'date_created' );
432
+ $submissions_data = array_merge( $default_array, array_intersect_key( $submissions_array, $default_array ) );
433
  }
434
 
435
  // Get highest value
441
 
442
  <script>
443
 
444
+ var ctx = document.getElementById( 'forminator-form-<?php echo $module['id']; // phpcs:ignore ?>-stats' );
445
 
446
+ var monthDays = [ '<?php echo implode( "', '", $days_array ); // phpcs:ignore ?>' ],
447
+ submissions = [ <?php echo implode( ', ', $submissions_data ); // phpcs:ignore ?> ]
448
  ;
449
 
450
  var chartData = {
514
  return tooltipItem.xLabel;
515
  },
516
  // Set label text color
517
+ labelTextColor:function( tooltipItem, chart ) {
518
+ return '#AAAAAA';
519
+ }
520
+ }
521
  },
522
  plugins: {
523
  datalabels: {
admin/views/custom-form/list/header.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php $count = $this->countModules(); ?>
2
 
3
- <h1 class="sui-header-title"><?php esc_html_e( "Forms", Forminator::DOMAIN ); ?></h1>
4
 
5
  <div class="sui-actions-left">
6
 
@@ -21,7 +21,7 @@
21
  <div class="sui-actions-right">
22
  <?php if ( forminator_is_show_documentation_link() ) : ?>
23
  <a href="https://premium.wpmudev.org/docs/wpmu-dev-plugins/forminator/#forms" target="_blank" class="sui-button sui-button-ghost">
24
- <i class="sui-icon-academy"></i> <?php esc_html_e( "View Documentation", Forminator::DOMAIN ); ?>
25
  </a>
26
  <?php endif; ?>
27
  </div>
1
  <?php $count = $this->countModules(); ?>
2
 
3
+ <h1 class="sui-header-title"><?php esc_html_e( 'Forms', Forminator::DOMAIN ); ?></h1>
4
 
5
  <div class="sui-actions-left">
6
 
21
  <div class="sui-actions-right">
22
  <?php if ( forminator_is_show_documentation_link() ) : ?>
23
  <a href="https://premium.wpmudev.org/docs/wpmu-dev-plugins/forminator/#forms" target="_blank" class="sui-button sui-button-ghost">
24
+ <i class="sui-icon-academy"></i> <?php esc_html_e( 'View Documentation', Forminator::DOMAIN ); ?>
25
  </a>
26
  <?php endif; ?>
27
  </div>
admin/views/custom-form/popup/export.php CHANGED
@@ -1,5 +1,5 @@
1
  <?php
2
- $form_id = $_POST['id'];// WPCS: CSRF ok. varified on admin ajax
3
  $nonce = wp_create_nonce( 'forminatorCustomFormRequest' );
4
 
5
  $exportable = array();
@@ -7,7 +7,7 @@ $model = Forminator_Custom_Form_Model::model()->load( $form_id );
7
  if ( $model instanceof Forminator_Custom_Form_Model ) {
8
  $exportable = $model->to_exportable_data();
9
  }
10
- $text_area_id = uniqid('export-text-');
11
  ?>
12
 
13
  <div class="sui-box-body wpmudev-popup-form">
@@ -19,7 +19,8 @@ $text_area_id = uniqid('export-text-');
19
 
20
  <div class="sui-notice sui-notice-info">
21
  <p>
22
- <?php echo(
 
23
  sprintf(
24
  __( 'You can import this %1$s in Forminator %2$s%3$s%4$s or above. The %5$s may break on a version lower than your install.', Forminator::DOMAIN ), //phpcs:ignore
25
  __( 'Form', Forminator::DOMAIN ),//phpcs:ignore
@@ -28,7 +29,8 @@ $text_area_id = uniqid('export-text-');
28
  '</strong>',
29
  __( 'Form', Forminator::DOMAIN )
30
  )
31
- ); ?>
 
32
  </p>
33
  </div>
34
 
1
  <?php
2
+ $form_id = $_POST['id'];// phpcs:ignore -- varified on admin ajax
3
  $nonce = wp_create_nonce( 'forminatorCustomFormRequest' );
4
 
5
  $exportable = array();
7
  if ( $model instanceof Forminator_Custom_Form_Model ) {
8
  $exportable = $model->to_exportable_data();
9
  }
10
+ $text_area_id = uniqid( 'export-text-' );
11
  ?>
12
 
13
  <div class="sui-box-body wpmudev-popup-form">
19
 
20
  <div class="sui-notice sui-notice-info">
21
  <p>
22
+ <?php
23
+ echo(
24
  sprintf(
25
  __( 'You can import this %1$s in Forminator %2$s%3$s%4$s or above. The %5$s may break on a version lower than your install.', Forminator::DOMAIN ), //phpcs:ignore
26
  __( 'Form', Forminator::DOMAIN ),//phpcs:ignore
29
  '</strong>',
30
  __( 'Form', Forminator::DOMAIN )
31
  )
32
+ );
33
+ ?>
34
  </p>
35
  </div>
36
 
admin/views/custom-form/wizard/header.php CHANGED
@@ -0,0 +1 @@
 
1
+ <?php // phpcs:ignore
admin/views/dashboard/content.php CHANGED
@@ -10,7 +10,7 @@
10
 
11
  <?php $this->template( 'dashboard/widgets/widget-quiz' ); ?>
12
 
13
- <?php if ( isset( $_GET['show_stripe_dialog'] ) && ! empty( $_GET['show_stripe_dialog'] ) ) { // WPCS: CSRF ok. ?>
14
 
15
  <?php $this->template( 'dashboard/stripe-notice' ); ?>
16
 
10
 
11
  <?php $this->template( 'dashboard/widgets/widget-quiz' ); ?>
12
 
13
+ <?php if ( isset( $_GET['show_stripe_dialog'] ) && ! empty( $_GET['show_stripe_dialog'] ) ) { // phpcs:ignore ?>
14
 
15
  <?php $this->template( 'dashboard/stripe-notice' ); ?>
16
 
admin/views/dashboard/footer-free.php CHANGED
@@ -65,7 +65,7 @@
65
  </a>
66
 
67
  <img class="sui-image"
68
- src="<?php echo forminator_plugin_url(); // WPCS: XSS ok. ?>assets/images/dev-team.png"
69
- srcset="<?php echo forminator_plugin_url(); // WPCS: XSS ok. ?>assets/images/dev-team@2x.png 2x"
70
  alt="<?php esc_html_e( 'Try pro features for free!', Forminator::DOMAIN ); ?>">
71
  </div>
65
  </a>
66
 
67
  <img class="sui-image"
68
+ src="<?php echo forminator_plugin_url(); // phpcs:ignore ?>assets/images/dev-team.png"
69
+ srcset="<?php echo forminator_plugin_url(); // phpcs:ignore ?>assets/images/dev-team@2x.png 2x"
70
  alt="<?php esc_html_e( 'Try pro features for free!', Forminator::DOMAIN ); ?>">
71
  </div>
admin/views/dashboard/header.php CHANGED
@@ -1,9 +1,9 @@
1
- <h1 class="sui-header-title"><?php esc_html_e( "Dashboard", Forminator::DOMAIN ); ?></h1>
2
 
3
  <div class="sui-actions-right">
4
  <?php if ( forminator_is_show_documentation_link() ) : ?>
5
  <a href="https://premium.wpmudev.org/docs/wpmu-dev-plugins/forminator/#dashboard" target="_blank" class="sui-button sui-button-ghost">
6
- <i class="sui-icon-academy"></i> <?php esc_html_e( "View Documentation", Forminator::DOMAIN ); ?>
7
  </a>
8
  <?php endif; ?>
9
  </div>
1
+ <h1 class="sui-header-title"><?php esc_html_e( 'Dashboard', Forminator::DOMAIN ); ?></h1>
2
 
3
  <div class="sui-actions-right">
4
  <?php if ( forminator_is_show_documentation_link() ) : ?>
5
  <a href="https://premium.wpmudev.org/docs/wpmu-dev-plugins/forminator/#dashboard" target="_blank" class="sui-button sui-button-ghost">
6
+ <i class="sui-icon-academy"></i> <?php esc_html_e( 'View Documentation', Forminator::DOMAIN ); ?>
7
  </a>
8
  <?php endif; ?>
9
  </div>
admin/views/dashboard/stripe-notice.php CHANGED
@@ -23,8 +23,8 @@
23
 
24
  <div class="sui-box-banner" role="banner" aria-hidden="true">
25
  <img
26
- src="<?php echo forminator_plugin_url(); // WPCS: XSS ok. ?>assets/images/sca-cover.png"
27
- srcset="<?php echo forminator_plugin_url(); // WPCS: XSS ok. ?>assets/images/sca-cover@2x.png 2x"
28
  />
29
  </div>
30
 
@@ -64,13 +64,13 @@
64
 
65
  <p class="sui-description" style="margin-bottom: 5px;"><?php esc_html_e( 'Following are the forms which are affected by this updated. We recommend going through each of them and follow the recommendations above:', Forminator::DOMAIN ); ?></p>
66
 
67
- <?php foreach( $this->stripeModules() as $module ) : ?>
68
 
69
  <ul class="fui-list-fields">
70
 
71
  <li>
72
  <span class="fui-list-label"><?php echo esc_html( $module['title'] ); ?></span>
73
- <a href="<?php echo menu_page_url( 'forminator-cform-wizard', false ) . '&id=' . $module['id']; ?>" class="sui-button-icon" target="_blank">
74
  <i class="sui-icon-pencil" aria-hidden="true"></i>
75
  <span class="sui-screen-reader-text"><?php esc_html_e( 'Edit Field', Forminator::DOMAIN ); ?></span>
76
  </a>
23
 
24
  <div class="sui-box-banner" role="banner" aria-hidden="true">
25
  <img
26
+ src="<?php echo forminator_plugin_url(); // phpcs:ignore ?>assets/images/sca-cover.png"
27
+ srcset="<?php echo forminator_plugin_url(); // phpcs:ignore ?>assets/images/sca-cover@2x.png 2x"
28
  />
29
  </div>
30
 
64
 
65
  <p class="sui-description" style="margin-bottom: 5px;"><?php esc_html_e( 'Following are the forms which are affected by this updated. We recommend going through each of them and follow the recommendations above:', Forminator::DOMAIN ); ?></p>
66
 
67
+ <?php foreach ( $this->stripeModules() as $module ) : ?>
68
 
69
  <ul class="fui-list-fields">
70
 
71
  <li>
72
  <span class="fui-list-label"><?php echo esc_html( $module['title'] ); ?></span>
73
+ <a href="<?php echo esc_url( menu_page_url( 'forminator-cform-wizard', false ) . '&id=' . $module['id'] ); ?>" class="sui-button-icon" target="_blank">
74
  <i class="sui-icon-pencil" aria-hidden="true"></i>
75
  <span class="sui-screen-reader-text"><?php esc_html_e( 'Edit Field', Forminator::DOMAIN ); ?></span>
76
  </a>
admin/views/dashboard/widgets/widget-cform.php CHANGED
@@ -34,7 +34,7 @@ if ( 0 === $num_recent ) {
34
 
35
  <?php if ( 0 === forminator_cforms_total() ) { ?>
36
 
37
- <p><button href="/" class="sui-button sui-button-blue wpmudev-open-modal" data-modal="custom_forms"><i class="sui-icon-plus" aria-hidden="true"></i> <?php esc_html_e( "Create", Forminator::DOMAIN ); ?></button></p>
38
 
39
  <?php } ?>
40
 
@@ -58,21 +58,23 @@ if ( 0 === $num_recent ) {
58
 
59
  <tbody>
60
 
61
- <?php foreach( forminator_cform_modules( $num_recent, $statuses ) as $module ) { ?>
62
 
63
  <tr>
64
 
65
- <td class="sui-table-item-title"><?php echo forminator_get_form_name( $module['id'], 'custom_form'); // WPCS: XSS ok. ?></td>
66
 
67
  <td class="fui-col-status">
68
 
69
- <?php if ( 'publish' === $module['status'] ) {
 
70
  $status_class = 'published';
71
  $status_text = esc_html__( 'Published', Forminator::DOMAIN );
72
  } else {
73
  $status_class = 'draft';
74
  $status_text = esc_html__( 'Draft', Forminator::DOMAIN );
75
- } ?>
 
76
 
77
  <span
78
  class="sui-status-dot sui-<?php echo esc_html( $status_class ); ?> sui-tooltip"
@@ -81,7 +83,7 @@ if ( 0 === $num_recent ) {
81
  <span aria-hidden="true"></span>
82
  </span>
83
 
84
- <a href="<?php echo admin_url( 'admin.php?page=forminator-cform&view-stats=' . esc_attr( $module['id'] ) ); // WPCS: XSS ok. ?>"
85
  class="sui-button-icon sui-tooltip sui-tooltip-top-right-mobile"
86
  data-tooltip="<?php esc_html_e( 'View Stats', Forminator::DOMAIN ); ?>">
87
  <i class="sui-icon-graph-line" aria-hidden="true"></i>
@@ -97,23 +99,23 @@ if ( 0 === $num_recent ) {
97
 
98
  <ul>
99
  <li>
100
- <a href="<?php echo admin_url( 'admin.php?page=forminator-cform-wizard&id=' . $module['id'] ); // WPCS: XSS ok. ?>">
101
- <i class="sui-icon-pencil" aria-hidden="true"></i> <?php esc_html_e( "Edit", Forminator::DOMAIN ); ?>
102
  </a>
103
  </li>
104
  <li><button class="wpmudev-open-modal"
105
  data-modal="preview_cforms"
106
- data-modal-title="<?php echo sprintf( '%s - %s', esc_html__( 'Preview Custom Form', Forminator::DOMAIN ), forminator_get_form_name( $module['id'], 'custom_form' ) ); // WPCS: XSS ok. ?>"
107
  data-form-id="<?php echo esc_attr( $module['id'] ); ?>"
108
- data-nonce="<?php echo wp_create_nonce( 'forminator_popup_preview_cforms' ); // WPCS: XSS ok. ?>">
109
  <i class="sui-icon-eye" aria-hidden="true"></i> <?php esc_html_e( 'Preview', Forminator::DOMAIN ); ?>
110
  </button></li>
111
 
112
  <li>
113
- <button class="copy-clipboard" data-shortcode='[forminator_form id="<?php echo esc_attr( $module['id'] ); ?>"]'><i class="sui-icon-code" aria-hidden="true"></i> <?php esc_html_e( "Copy Shortcode", Forminator::DOMAIN ); ?></button>
114
  </li>
115
 
116
- <li><a href="<?php echo admin_url( 'admin.php?page=forminator-entries&form_type=forminator_forms&form_id=' . $module['id'] ); // WPCS: XSS ok. ?>"><i class="sui-icon-community-people" aria-hidden="true"></i> <?php esc_html_e( 'View Submissions', Forminator::DOMAIN ); ?></a></li>
117
 
118
  <li><form method="post">
119
  <input type="hidden" name="forminator_action" value="clone">
@@ -143,7 +145,7 @@ if ( 0 === $num_recent ) {
143
  data-modal-title="<?php esc_attr_e( 'Delete Form', Forminator::DOMAIN ); ?>"
144
  data-modal-content="<?php esc_attr_e( 'Are you sure you wish to permanently delete this form?', Forminator::DOMAIN ); ?>"
145
  data-form-id="<?php echo esc_attr( $module['id'] ); ?>"
146
- data-nonce="<?php echo wp_create_nonce( 'forminatorCustomFormRequest' ); // WPCS: XSS ok. ?>">
147
  <i class="sui-icon-trash" aria-hidden="true"></i> <?php esc_html_e( 'Delete', Forminator::DOMAIN ); ?>
148
  </button>
149
  </li>
@@ -166,11 +168,11 @@ if ( 0 === $num_recent ) {
166
 
167
  <button class="sui-button sui-button-blue wpmudev-open-modal"
168
  data-modal="custom_forms">
169
- <i class="sui-icon-plus" aria-hidden="true"></i> <?php esc_html_e( "Create", Forminator::DOMAIN ); ?>
170
  </button>
171
 
172
  <div class="sui-actions-right">
173
- <p class="sui-description"><a href="<?php echo admin_url( 'admin.php?page=forminator-cform' ); // WPCS: XSS ok. ?>" class="sui-link-gray"><?php esc_html_e( 'View all forms', Forminator::DOMAIN ); ?></a></p>
174
  </div>
175
 
176
  </div>
34
 
35
  <?php if ( 0 === forminator_cforms_total() ) { ?>
36
 
37
+ <p><button href="/" class="sui-button sui-button-blue wpmudev-open-modal" data-modal="custom_forms"><i class="sui-icon-plus" aria-hidden="true"></i> <?php esc_html_e( 'Create', Forminator::DOMAIN ); ?></button></p>
38
 
39
  <?php } ?>
40
 
58
 
59
  <tbody>
60
 
61
+ <?php foreach ( forminator_cform_modules( $num_recent, $statuses ) as $module ) { ?>
62
 
63
  <tr>
64
 
65
+ <td class="sui-table-item-title"><?php echo forminator_get_form_name( $module['id'], 'custom_form' ); // phpcs:ignore ?></td>
66
 
67
  <td class="fui-col-status">
68
 
69
+ <?php
70
+ if ( 'publish' === $module['status'] ) {
71
  $status_class = 'published';
72
  $status_text = esc_html__( 'Published', Forminator::DOMAIN );
73
  } else {
74
  $status_class = 'draft';
75
  $status_text = esc_html__( 'Draft', Forminator::DOMAIN );
76
+ }
77
+ ?>
78
 
79
  <span
80
  class="sui-status-dot sui-<?php echo esc_html( $status_class ); ?> sui-tooltip"
83
  <span aria-hidden="true"></span>
84
  </span>
85
 
86
+ <a href="<?php echo admin_url( 'admin.php?page=forminator-cform&view-stats=' . esc_attr( $module['id'] ) ); // phpcs:ignore ?>"
87
  class="sui-button-icon sui-tooltip sui-tooltip-top-right-mobile"
88
  data-tooltip="<?php esc_html_e( 'View Stats', Forminator::DOMAIN ); ?>">
89
  <i class="sui-icon-graph-line" aria-hidden="true"></i>
99
 
100
  <ul>
101
  <li>
102
+ <a href="<?php echo admin_url( 'admin.php?page=forminator-cform-wizard&id=' . $module['id'] ); // phpcs:ignore ?>">
103
+ <i class="sui-icon-pencil" aria-hidden="true"></i> <?php esc_html_e( 'Edit', Forminator::DOMAIN ); ?>
104
  </a>
105
  </li>
106
  <li><button class="wpmudev-open-modal"
107
  data-modal="preview_cforms"
108
+ data-modal-title="<?php echo sprintf( '%s - %s', esc_html__( 'Preview Custom Form', Forminator::DOMAIN ), forminator_get_form_name( $module['id'], 'custom_form' ) ); // phpcs:ignore ?>"
109
  data-form-id="<?php echo esc_attr( $module['id'] ); ?>"
110
+ data-nonce="<?php echo esc_attr( wp_create_nonce( 'forminator_popup_preview_cforms' ) ); ?>">
111
  <i class="sui-icon-eye" aria-hidden="true"></i> <?php esc_html_e( 'Preview', Forminator::DOMAIN ); ?>
112
  </button></li>
113
 
114
  <li>
115
+ <button class="copy-clipboard" data-shortcode='[forminator_form id="<?php echo esc_attr( $module['id'] ); ?>"]'><i class="sui-icon-code" aria-hidden="true"></i> <?php esc_html_e( 'Copy Shortcode', Forminator::DOMAIN ); ?></button>
116
  </li>
117
 
118
+ <li><a href="<?php echo admin_url( 'admin.php?page=forminator-entries&form_type=forminator_forms&form_id=' . $module['id'] ); // phpcs:ignore ?>"><i class="sui-icon-community-people" aria-hidden="true"></i> <?php esc_html_e( 'View Submissions', Forminator::DOMAIN ); ?></a></li>
119
 
120
  <li><form method="post">
121
  <input type="hidden" name="forminator_action" value="clone">
145
  data-modal-title="<?php esc_attr_e( 'Delete Form', Forminator::DOMAIN ); ?>"
146
  data-modal-content="<?php esc_attr_e( 'Are you sure you wish to permanently delete this form?', Forminator::DOMAIN ); ?>"
147
  data-form-id="<?php echo esc_attr( $module['id'] ); ?>"
148
+ data-nonce="<?php echo esc_attr( wp_create_nonce( 'forminatorCustomFormRequest' ) ); ?>">
149
  <i class="sui-icon-trash" aria-hidden="true"></i> <?php esc_html_e( 'Delete', Forminator::DOMAIN ); ?>
150
  </button>
151
  </li>
168
 
169
  <button class="sui-button sui-button-blue wpmudev-open-modal"
170
  data-modal="custom_forms">
171
+ <i class="sui-icon-plus" aria-hidden="true"></i> <?php esc_html_e( 'Create', Forminator::DOMAIN ); ?>
172
  </button>
173
 
174
  <div class="sui-actions-right">
175
+ <p class="sui-description"><a href="<?php echo admin_url( 'admin.php?page=forminator-cform' ); // phpcs:ignore ?>" class="sui-link-gray"><?php esc_html_e( 'View all forms', Forminator::DOMAIN ); ?></a></p>
176
  </div>
177
 
178
  </div>
admin/views/dashboard/widgets/widget-create.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
- $icon_minus = forminator_plugin_dir() . "assets/icons/admin-icons/minus.php";
3
- $hero_sample = forminator_plugin_dir() . "assets/icons/forminator-icons/hero-sample.php";
4
  ?>
5
 
6
  <div class="wpmudev-row">
@@ -12,8 +12,8 @@ $hero_sample = forminator_plugin_dir() . "assets/icons/forminator-icons/hero-sam
12
  <div class="wpmudev-box-header">
13
 
14
  <div class="wpmudev-header--text">
15
-
16
- <h2 class="wpmudev-title"><?php esc_html_e( "Create Modules", Forminator::DOMAIN ); ?></h2>
17
 
18
  </div>
19
 
@@ -21,7 +21,7 @@ $hero_sample = forminator_plugin_dir() . "assets/icons/forminator-icons/hero-sam
21
 
22
  <button class="wpmudev-box--action" aria-hidden="true"><span class="wpmudev-icon--plus"></span></button>
23
 
24
- <button class="wpmudev-sr-only"><?php esc_html_e( "Hide box", Forminator::DOMAIN ); ?></button>
25
 
26
  </div>
27
 
@@ -35,22 +35,22 @@ $hero_sample = forminator_plugin_dir() . "assets/icons/forminator-icons/hero-sam
35
 
36
  <div class="wpmudev-sitem--header">
37
 
38
- <div class="wpmudev-sitem--icon" aria-hidden="true"><?php echo $module->get_icon(); // WPCS: XSS ok. ?></div>
39
 
40
- <h3 class="wpmudev-sitem--title"><?php echo $module->get_name(); // WPCS: XSS ok. ?></h3>
41
 
42
  </div>
43
 
44
  <div class="wpmudev-sitem--section">
45
 
46
- <p><?php echo $module->get_description(); // WPCS: XSS ok. ?></p>
47
 
48
  </div>
49
 
50
  <div class="wpmudev-sitem--footer">
51
-
52
- <button href="/" class="wpmudev-button wpmudev-button-sm wpmudev-button-ghost wpmudev-open-modal" data-modal="<?php echo esc_attr( $module->get_id() ); ?>"><?php echo $module->get_label(); // WPCS: XSS ok. ?></button>
53
-
54
  </div>
55
 
56
  </div>
1
  <?php
2
+ $icon_minus = forminator_plugin_dir() . 'assets/icons/admin-icons/minus.php';
3
+ $hero_sample = forminator_plugin_dir() . 'assets/icons/forminator-icons/hero-sample.php';
4
  ?>
5
 
6
  <div class="wpmudev-row">
12
  <div class="wpmudev-box-header">
13
 
14
  <div class="wpmudev-header--text">
15
+
16
+ <h2 class="wpmudev-title"><?php esc_html_e( 'Create Modules', Forminator::DOMAIN ); ?></h2>
17
 
18
  </div>
19
 
21
 
22
  <button class="wpmudev-box--action" aria-hidden="true"><span class="wpmudev-icon--plus"></span></button>
23
 
24
+ <button class="wpmudev-sr-only"><?php esc_html_e( 'Hide box', Forminator::DOMAIN ); ?></button>
25
 
26
  </div>
27
 
35
 
36
  <div class="wpmudev-sitem--header">
37
 
38
+ <div class="wpmudev-sitem--icon" aria-hidden="true"><?php echo $module->get_icon(); // phpcs:ignore ?></div>
39
 
40
+ <h3 class="wpmudev-sitem--title"><?php echo $module->get_name(); // phpcs:ignore ?></h3>
41
 
42
  </div>
43
 
44
  <div class="wpmudev-sitem--section">
45
 
46
+ <p><?php echo $module->get_description(); // phpcs:ignore ?></p>
47
 
48
  </div>
49
 
50
  <div class="wpmudev-sitem--footer">
51
+
52
+ <button href="/" class="wpmudev-button wpmudev-button-sm wpmudev-button-ghost wpmudev-open-modal" data-modal="<?php echo esc_attr( $module->get_id() ); ?>"><?php echo $module->get_label(); // phpcs:ignore ?></button>
53
+
54
  </div>
55
 
56
  </div>
admin/views/dashboard/widgets/widget-poll.php CHANGED
@@ -22,13 +22,13 @@ if ( 0 === $num_recent ) {
22
 
23
  <div class="sui-box-header">
24
 
25
- <h3 class="sui-box-title"><i class="sui-icon-graph-bar" aria-hidden="true"></i><?php esc_html_e( "Polls", Forminator::DOMAIN ); ?></h3>
26
 
27
  </div>
28
 
29
  <div class="sui-box-body">
30
 
31
- <p><?php esc_html_e( 'Create interactive polls to collect users opinions, with lots of dynamic options and settings.', Forminator::DOMAIN ); ?></p>
32
 
33
  <?php if ( 0 === forminator_polls_total() ) { ?>
34
 
@@ -55,21 +55,23 @@ if ( 0 === $num_recent ) {
55
 
56
  <tbody>
57
 
58
- <?php foreach( forminator_polls_modules( $num_recent, $statuses ) as $module ) { ?>
59
 
60
  <tr>
61
 
62
- <td class="sui-table-item-title"><?php echo $module['name']; // WPCS: XSS ok. ?></td>
63
 
64
  <td class="fui-col-status">
65
 
66
- <?php if ( 'publish' === $module['status'] ) {
 
67
  $status_class = 'published';
68
  $status_text = esc_html__( 'Published', Forminator::DOMAIN );
69
  } else {
70
  $status_class = 'draft';
71
  $status_text = esc_html__( 'Draft', Forminator::DOMAIN );
72
- } ?>
 
73
 
74
  <span
75
  class="sui-status-dot sui-<?php echo esc_html( $status_class ); ?> sui-tooltip"
@@ -78,7 +80,7 @@ if ( 0 === $num_recent ) {
78
  <span aria-hidden="true"></span>
79
  </span>
80
 
81
- <a href="<?php echo admin_url( 'admin.php?page=forminator-poll&view-stats=' . esc_attr( $module['id'] ) ); // WPCS: XSS ok. ?>"
82
  class="sui-button-icon sui-tooltip"
83
  data-tooltip="<?php esc_html_e( 'View Status', Forminator::DOMAIN ); ?>">
84
  <i class="sui-icon-graph-line" aria-hidden="true"></i>
@@ -94,23 +96,23 @@ if ( 0 === $num_recent ) {
94
 
95
  <ul>
96
  <li>
97
- <a href="<?php echo admin_url( 'admin.php?page=forminator-poll-wizard&id=' . $module['id'] ); // WPCS: XSS ok. ?>">
98
  <i class="sui-icon-pencil" aria-hidden="true"></i> <?php esc_html_e( 'Edit', Forminator::DOMAIN ); ?>
99
  </a>
100
  </li>
101
  <li><button class="wpmudev-open-modal"
102
  data-modal="preview_polls"
103
- data-modal-title="<?php echo sprintf( "%s - %s", __( "Preview Poll", Forminator::DOMAIN ), forminator_get_form_name( $module['id'], 'poll' ) ); // WPCS: XSS ok. ?>"
104
  data-form-id="<?php echo esc_attr( $module['id'] ); ?>"
105
- data-nonce="<?php echo wp_create_nonce( 'forminator_popup_preview_polls' ); // WPCS: XSS ok. ?>">
106
- <i class="sui-icon-eye" aria-hidden="true"></i> <?php esc_html_e( "Preview", Forminator::DOMAIN ); ?>
107
  </button></li>
108
 
109
  <li>
110
- <button class="copy-clipboard" data-shortcode='[forminator_poll id="<?php echo esc_attr( $module['id'] ); ?>"]'><i class="sui-icon-code" aria-hidden="true"></i> <?php esc_html_e( "Copy Shortcode", Forminator::DOMAIN ); ?></button>
111
  </li>
112
 
113
- <li><a href="<?php echo admin_url( 'admin.php?page=forminator-entries&form_type=forminator_polls&form_id=' . $module['id'] ); // WPCS: XSS ok. ?>"><i class="sui-icon-community-people" aria-hidden="true"></i> <?php esc_html_e( 'View Submissions', Forminator::DOMAIN ); ?></a></li>
114
 
115
  <li><form method="post">
116
  <input type="hidden" name="forminator_action" value="clone">
@@ -135,12 +137,12 @@ if ( 0 === $num_recent ) {
135
  <?php endif; ?>
136
 
137
  <li><a href="#"
138
- class="wpmudev-open-modal"
139
- data-modal="delete-module"
140
- data-modal-title="<?php esc_attr_e( 'Delete Poll', Forminator::DOMAIN ); ?>"
141
- data-modal-content="<?php esc_attr_e( 'Are you sure you wish to permanently delete this poll?', Forminator::DOMAIN ); ?>"
142
- data-form-id="<?php echo esc_attr( $module['id'] ); ?>"
143
- data-nonce="<?php echo wp_create_nonce( 'forminatorPollFormRequest' ); // WPCS: XSS ok. ?>">
144
  <i class="sui-icon-trash" aria-hidden="true"></i> <?php esc_html_e( 'Delete', Forminator::DOMAIN ); ?>
145
  </a></li>
146
 
@@ -166,7 +168,7 @@ if ( 0 === $num_recent ) {
166
  </button>
167
 
168
  <div class="sui-actions-right">
169
- <p class="sui-description"><a href="<?php echo admin_url( 'admin.php?page=forminator-poll' ); // WPCS: XSS ok. ?>" class="sui-link-gray"><?php esc_html_e( 'View all polls', Forminator::DOMAIN ); ?></a></p>
170
  </div>
171
 
172
  </div>
22
 
23
  <div class="sui-box-header">
24
 
25
+ <h3 class="sui-box-title"><i class="sui-icon-graph-bar" aria-hidden="true"></i><?php esc_html_e( 'Polls', Forminator::DOMAIN ); ?></h3>
26
 
27
  </div>
28
 
29
  <div class="sui-box-body">
30
 
31
+ <p><?php esc_html_e( 'Create interactive polls to collect users\' opinions, with lots of dynamic options and settings.', Forminator::DOMAIN ); ?></p>
32
 
33
  <?php if ( 0 === forminator_polls_total() ) { ?>
34
 
55
 
56
  <tbody>
57
 
58
+ <?php foreach ( forminator_polls_modules( $num_recent, $statuses ) as $module ) { ?>
59
 
60
  <tr>
61
 
62
+ <td class="sui-table-item-title"><?php echo esc_html( $module['name'] ); ?></td>
63
 
64
  <td class="fui-col-status">
65
 
66
+ <?php
67
+ if ( 'publish' === $module['status'] ) {
68
  $status_class = 'published';
69
  $status_text = esc_html__( 'Published', Forminator::DOMAIN );
70
  } else {
71
  $status_class = 'draft';
72
  $status_text = esc_html__( 'Draft', Forminator::DOMAIN );
73
+ }
74
+ ?>
75
 
76
  <span
77
  class="sui-status-dot sui-<?php echo esc_html( $status_class ); ?> sui-tooltip"
80
  <span aria-hidden="true"></span>
81
  </span>
82
 
83
+ <a href="<?php echo admin_url( 'admin.php?page=forminator-poll&view-stats=' . esc_attr( $module['id'] ) ); // phpcs:ignore ?>"
84
  class="sui-button-icon sui-tooltip"
85
  data-tooltip="<?php esc_html_e( 'View Status', Forminator::DOMAIN ); ?>">
86
  <i class="sui-icon-graph-line" aria-hidden="true"></i>
96
 
97
  <ul>
98
  <li>
99
+ <a href="<?php echo admin_url( 'admin.php?page=forminator-poll-wizard&id=' . $module['id'] ); // phpcs:ignore ?>">
100
  <i class="sui-icon-pencil" aria-hidden="true"></i> <?php esc_html_e( 'Edit', Forminator::DOMAIN ); ?>
101
  </a>
102
  </li>
103
  <li><button class="wpmudev-open-modal"
104
  data-modal="preview_polls"
105
+ data-modal-title="<?php echo sprintf( '%s - %s', __( 'Preview Poll', Forminator::DOMAIN ), forminator_get_form_name( $module['id'], 'poll' ) ); // phpcs:ignore ?>"
106
  data-form-id="<?php echo esc_attr( $module['id'] ); ?>"
107
+ data-nonce="<?php echo esc_attr( wp_create_nonce( 'forminator_popup_preview_polls' ) ); ?>">
108
+ <i class="sui-icon-eye" aria-hidden="true"></i> <?php esc_html_e( 'Preview', Forminator::DOMAIN ); ?>
109
  </button></li>
110
 
111
  <li>
112
+ <button class="copy-clipboard" data-shortcode='[forminator_poll id="<?php echo esc_attr( $module['id'] ); ?>"]'><i class="sui-icon-code" aria-hidden="true"></i> <?php esc_html_e( 'Copy Shortcode', Forminator::DOMAIN ); ?></button>
113
  </li>
114
 
115
+ <li><a href="<?php echo admin_url( 'admin.php?page=forminator-entries&form_type=forminator_polls&form_id=' . $module['id'] ); // phpcs:ignore ?>"><i class="sui-icon-community-people" aria-hidden="true"></i> <?php esc_html_e( 'View Submissions', Forminator::DOMAIN ); ?></a></li>
116
 
117
  <li><form method="post">
118
  <input type="hidden" name="forminator_action" value="clone">
137
  <?php endif; ?>
138
 
139
  <li><a href="#"
140
+ class="wpmudev-open-modal"
141
+ data-modal="delete-module"
142
+ data-modal-title="<?php esc_attr_e( 'Delete Poll', Forminator::DOMAIN ); ?>"
143
+ data-modal-content="<?php esc_attr_e( 'Are you sure you wish to permanently delete this poll?', Forminator::DOMAIN ); ?>"
144
+ data-form-id="<?php echo esc_attr( $module['id'] ); ?>"
145
+ data-nonce="<?php echo esc_attr( wp_create_nonce( 'forminatorPollFormRequest' ) ); ?>">
146
  <i class="sui-icon-trash" aria-hidden="true"></i> <?php esc_html_e( 'Delete', Forminator::DOMAIN ); ?>
147
  </a></li>
148
 
168
  </button>
169
 
170
  <div class="sui-actions-right">
171
+ <p class="sui-description"><a href="<?php echo admin_url( 'admin.php?page=forminator-poll' ); // phpcs:ignore ?>" class="sui-link-gray"><?php esc_html_e( 'View all polls', Forminator::DOMAIN ); ?></a></p>
172
  </div>
173
 
174
  </div>
admin/views/dashboard/widgets/widget-quiz.php CHANGED
@@ -24,7 +24,7 @@ if ( 0 === $num_recent ) {
24
 
25
  <div class="sui-box-header">
26
 
27
- <h3 class="sui-box-title"><i class="sui-icon-academy" aria-hidden="true"></i><?php esc_html_e( "Quizzes", Forminator::DOMAIN ); ?></h3>
28
 
29
  </div>
30
 
@@ -64,17 +64,19 @@ if ( 0 === $num_recent ) {
64
 
65
  <tr>
66
 
67
- <td class="sui-table-item-title"><?php echo $module['name']; // WPCS: XSS ok. ?></td>
68
 
69
  <td class="fui-col-status">
70
 
71
- <?php if ( 'publish' === $module['status'] ) {
 
72
  $status_class = 'published';
73
  $status_text = esc_html__( 'Published', Forminator::DOMAIN );
74
  } else {
75
  $status_class = 'draft';
76
  $status_text = esc_html__( 'Draft', Forminator::DOMAIN );
77
- } ?>
 
78
 
79
  <span
80
  class="sui-status-dot sui-<?php echo esc_html( $status_class ); ?> sui-tooltip"
@@ -83,7 +85,7 @@ if ( 0 === $num_recent ) {
83
  <span aria-hidden="true"></span>
84
  </span>
85
 
86
- <a href="<?php echo admin_url( 'admin.php?page=forminator-quiz&view-stats=' . esc_attr( $module['id'] ) ); // WPCS: XSS ok. ?>"
87
  class="sui-button-icon sui-tooltip"
88
  data-tooltip="<?php esc_html_e( 'View Status', Forminator::DOMAIN ); ?>">
89
  <i class="sui-icon-graph-line" aria-hidden="true"></i>
@@ -99,24 +101,24 @@ if ( 0 === $num_recent ) {
99
 
100
  <ul>
101
  <li>
102
- <a href="<?php echo $this->getAdminEditUrl( $module['type'], $module['id'] ); // WPCS: XSS ok. ?>">
103
  <i class="sui-icon-pencil" aria-hidden="true"></i> <?php esc_html_e( 'Edit', Forminator::DOMAIN ); ?>
104
  </a>
105
  </li>
106
 
107
  <li><button class="wpmudev-open-modal"
108
  data-modal="preview_quizzes"
109
- data-modal-title="<?php echo sprintf( "%s - %s", __( 'Preview Quiz', Forminator::DOMAIN ), forminator_get_form_name( $module['id'], 'quiz' ) ); // WPCS: XSS ok. ?>"
110
  data-form-id="<?php echo esc_attr( $module['id'] ); ?>"
111
- data-nonce="<?php echo wp_create_nonce( 'forminator_popup_preview_quizzes' ); // WPCS: XSS ok. ?>">
112
  <i class="sui-icon-eye" aria-hidden="true"></i> <?php esc_html_e( 'Preview', Forminator::DOMAIN ); ?>
113
  </button></li>
114
 
115
  <li>
116
- <button class="copy-clipboard" data-shortcode='[forminator_quiz id="<?php echo esc_attr( $module['id'] ); ?>"]'><i class="sui-icon-code" aria-hidden="true"></i> <?php esc_html_e( "Copy Shortcode", Forminator::DOMAIN ); ?></button>
117
  </li>
118
 
119
- <li><a href="<?php echo admin_url( 'admin.php?page=forminator-entries&form_type=forminator_quizzes&form_id=' . $module['id'] ); // WPCS: XSS ok. ?>"><i class="sui-icon-community-people" aria-hidden="true"></i> <?php esc_html_e( 'View Submissions', Forminator::DOMAIN ); ?></a></li>
120
 
121
  <li><form method="post">
122
  <input type="hidden" name="forminator_action" value="clone">
@@ -140,12 +142,12 @@ if ( 0 === $num_recent ) {
140
  <?php endif; ?>
141
 
142
  <li><a href="#"
143
- class="wpmudev-open-modal"
144
- data-modal="delete-module"
145
- data-modal-title="<?php esc_attr_e( 'Delete Quiz', Forminator::DOMAIN ); ?>"
146
- data-modal-content="<?php esc_attr_e( 'Are you sure you wish to permanently delete this quiz?', Forminator::DOMAIN ); ?>"
147
- data-form-id="<?php echo esc_attr( $module['id'] ); ?>"
148
- data-nonce="<?php echo wp_create_nonce( 'forminatorQuizFormRequest' ); // WPCS: XSS ok. ?>">
149
  <i class="sui-icon-trash" aria-hidden="true"></i> <?php esc_html_e( 'Delete', Forminator::DOMAIN ); ?>
150
  </a></li>
151
 
@@ -171,7 +173,7 @@ if ( 0 === $num_recent ) {
171
  </button>
172
 
173
  <div class="sui-actions-right">
174
- <p class="sui-description"><a href="<?php echo admin_url( 'admin.php?page=forminator-quiz' ); // WPCS: XSS ok. ?>" class="sui-link-gray"><?php esc_html_e( 'View all quizzes', Forminator::DOMAIN ); ?></a></p>
175
  </div>
176
 
177
  </div>
@@ -180,4 +182,4 @@ if ( 0 === $num_recent ) {
180
 
181
  </div>
182
 
183
- </div>
24
 
25
  <div class="sui-box-header">
26
 
27
+ <h3 class="sui-box-title"><i class="sui-icon-academy" aria-hidden="true"></i><?php esc_html_e( 'Quizzes', Forminator::DOMAIN ); ?></h3>
28
 
29
  </div>
30
 
64
 
65
  <tr>
66
 
67
+ <td class="sui-table-item-title"><?php echo esc_html( $module['name'] ); ?></td>
68
 
69
  <td class="fui-col-status">
70
 
71
+ <?php
72
+ if ( 'publish' === $module['status'] ) {
73
  $status_class = 'published';
74
  $status_text = esc_html__( 'Published', Forminator::DOMAIN );
75
  } else {
76
  $status_class = 'draft';
77
  $status_text = esc_html__( 'Draft', Forminator::DOMAIN );
78
+ }
79
+ ?>
80
 
81
  <span
82
  class="sui-status-dot sui-<?php echo esc_html( $status_class ); ?> sui-tooltip"
85
  <span aria-hidden="true"></span>
86
  </span>
87
 
88
+ <a href="<?php echo admin_url( 'admin.php?page=forminator-quiz&view-stats=' . esc_attr( $module['id'] ) ); // phpcs:ignore ?>"
89
  class="sui-button-icon sui-tooltip"
90
  data-tooltip="<?php esc_html_e( 'View Status', Forminator::DOMAIN ); ?>">
91
  <i class="sui-icon-graph-line" aria-hidden="true"></i>
101
 
102
  <ul>
103
  <li>
104
+ <a href="<?php echo $this->getAdminEditUrl( $module['type'], $module['id'] ); // phpcs:ignore ?>">
105
  <i class="sui-icon-pencil" aria-hidden="true"></i> <?php esc_html_e( 'Edit', Forminator::DOMAIN ); ?>
106
  </a>
107
  </li>
108
 
109
  <li><button class="wpmudev-open-modal"
110
  data-modal="preview_quizzes"
111
+ data-modal-title="<?php echo sprintf( '%s - %s', __( 'Preview Quiz', Forminator::DOMAIN ), forminator_get_form_name( $module['id'], 'quiz' ) ); // phpcs:ignore ?>"
112
  data-form-id="<?php echo esc_attr( $module['id'] ); ?>"
113
+ data-nonce="<?php echo esc_attr( wp_create_nonce( 'forminator_popup_preview_quizzes' ) ); ?>">
114
  <i class="sui-icon-eye" aria-hidden="true"></i> <?php esc_html_e( 'Preview', Forminator::DOMAIN ); ?>
115
  </button></li>
116
 
117
  <li>
118
+ <button class="copy-clipboard" data-shortcode='[forminator_quiz id="<?php echo esc_attr( $module['id'] ); ?>"]'><i class="sui-icon-code" aria-hidden="true"></i> <?php esc_html_e( 'Copy Shortcode', Forminator::DOMAIN ); ?></button>
119
  </li>
120
 
121
+ <li><a href="<?php echo admin_url( 'admin.php?page=forminator-entries&form_type=forminator_quizzes&form_id=' . $module['id'] ); // phpcs:ignore ?>"><i class="sui-icon-community-people" aria-hidden="true"></i> <?php esc_html_e( 'View Submissions', Forminator::DOMAIN ); ?></a></li>
122
 
123
  <li><form method="post">
124
  <input type="hidden" name="forminator_action" value="clone">
142
  <?php endif; ?>
143
 
144
  <li><a href="#"
145
+ class="wpmudev-open-modal"
146
+ data-modal="delete-module"
147
+ data-modal-title="<?php esc_attr_e( 'Delete Quiz', Forminator::DOMAIN ); ?>"
148
+ data-modal-content="<?php esc_attr_e( 'Are you sure you wish to permanently delete this quiz?', Forminator::DOMAIN ); ?>"
149
+ data-form-id="<?php echo esc_attr( $module['id'] ); ?>"
150
+ data-nonce="<?php echo esc_attr( wp_create_nonce( 'forminatorQuizFormRequest' ) ); ?>">
151
  <i class="sui-icon-trash" aria-hidden="true"></i> <?php esc_html_e( 'Delete', Forminator::DOMAIN ); ?>
152
  </a></li>
153
 
173
  </button>
174
 
175
  <div class="sui-actions-right">
176
+ <p class="sui-description"><a href="<?php echo admin_url( 'admin.php?page=forminator-quiz' ); // phpcs:ignore ?>" class="sui-link-gray"><?php esc_html_e( 'View all quizzes', Forminator::DOMAIN ); ?></a></p>
177
  </div>
178
 
179
  </div>
182
 
183
  </div>
184
 
185
+ </div>
admin/views/dashboard/widgets/widget-resume.php CHANGED
@@ -1,11 +1,10 @@
1
  <?php
2
- $path = forminator_plugin_dir();
3
- $total_modules = forminator_total_forms();
4
- $count_active = forminator_total_forms( 'publish' );
5
- $forms_total_submissions = Forminator_Form_Entry_Model::count_all_entries_by_type( 'custom-forms' ); //forminator_cforms_total();
6
- $poll_total_submissions = Forminator_Form_Entry_Model::count_all_entries_by_type( 'poll' );//forminator_polls_total();
7
- $quiz_total_submissions = Forminator_Form_Entry_Model::count_all_entries_by_type( 'quizzes' );//forminator_quizzes_total();
8
- $last_submission = forminator_get_latest_entry_time( 'custom-forms' );
9
  ?>
10
 
11
  <div class="sui-box sui-summary <?php echo esc_attr( $this->get_box_summary_classes() ); ?>">
1
  <?php
2
+ $total_modules = forminator_total_forms();
3
+ $count_active = forminator_total_forms( 'publish' );
4
+ $forms_total_submissions = Forminator_Form_Entry_Model::count_all_entries_by_type( 'custom-forms' ); // phpcs:ignore -- forminator_cforms_total();
5
+ $poll_total_submissions = Forminator_Form_Entry_Model::count_all_entries_by_type( 'poll' );// phpcs:ignore -- forminator_polls_total();
6
+ $quiz_total_submissions = Forminator_Form_Entry_Model::count_all_entries_by_type( 'quizzes' );// phpcs:ignore -- forminator_quizzes_total();
7
+ $last_submission = forminator_get_latest_entry_time( 'custom-forms' );
 
8
  ?>
9
 
10
  <div class="sui-box sui-summary <?php echo esc_attr( $this->get_box_summary_classes() ); ?>">
admin/views/entries/content.php CHANGED
@@ -22,7 +22,7 @@ $count = Forminator_Form_Entry_Model::count_all_entries();
22
  class="sui-select-sm"
23
  >
24
 
25
- <?php foreach ( $this->get_form_types() as $post_type => $name ) { ?>
26
  <option value="<?php echo esc_attr( $post_type ); ?>" <?php echo selected( $post_type, $this->get_current_form_type() ); ?>><?php echo esc_html( $name ); ?></option>
27
  <?php } ?>
28
 
@@ -42,19 +42,19 @@ $count = Forminator_Form_Entry_Model::count_all_entries();
42
 
43
  </form>
44
 
45
- <?php if( $markup ) : ?>
46
 
47
  <?php echo $markup; // phpcs:ignore ?>
48
 
49
- <?php else: ?>
50
 
51
  <div class="sui-box sui-message">
52
 
53
- <?php if ( forminator_is_show_branding() ): ?>
54
  <img src="<?php echo esc_url( forminator_plugin_url() . 'assets/img/forminator-disabled.png' ); ?>"
55
- srcset="<?php echo esc_url( forminator_plugin_url() . 'assets/img/forminator-disabled.png' ); ?> 1x, <?php echo esc_url( forminator_plugin_url() . 'assets/img/forminator-disabled@2x.png' ); ?> 2x"
56
- alt="<?php esc_html_e( 'Forminator', Forminator::DOMAIN ); ?>"
57
- class="sui-image"/>
58
  <?php endif; ?>
59
 
60
  <div class="sui-message-content">
@@ -73,11 +73,11 @@ $count = Forminator_Form_Entry_Model::count_all_entries();
73
 
74
  <div class="sui-box sui-message">
75
 
76
- <?php if ( forminator_is_show_branding() ): ?>
77
  <img src="<?php echo esc_url( forminator_plugin_url() . 'assets/img/forminator-submissions.png' ); ?>"
78
- srcset="<?php echo esc_url( forminator_plugin_url() . 'assets/img/forminator-submissions.png' ); ?> 1x, <?php echo esc_url( forminator_plugin_url() . 'assets/img/forminator-submissions@2x.png' ); ?> 2x"
79
- alt="<?php esc_html_e( 'Forminator', Forminator::DOMAIN ); ?>"
80
- class="sui-image"/>
81
  <?php endif; ?>
82
 
83
  <div class="sui-message-content">
22
  class="sui-select-sm"
23
  >
24
 
25
+ <?php foreach ( $this->get_form_types() as $post_type => $name ) { // phpcs:ignore ?>
26
  <option value="<?php echo esc_attr( $post_type ); ?>" <?php echo selected( $post_type, $this->get_current_form_type() ); ?>><?php echo esc_html( $name ); ?></option>
27
  <?php } ?>
28
 
42
 
43
  </form>
44
 
45
+ <?php if ( $markup ) : ?>
46
 
47
  <?php echo $markup; // phpcs:ignore ?>
48
 
49
+ <?php else : ?>
50
 
51
  <div class="sui-box sui-message">
52
 
53
+ <?php if ( forminator_is_show_branding() ) : ?>
54
  <img src="<?php echo esc_url( forminator_plugin_url() . 'assets/img/forminator-disabled.png' ); ?>"
55
+ srcset="<?php echo esc_url( forminator_plugin_url() . 'assets/img/forminator-disabled.png' ); ?> 1x, <?php echo esc_url( forminator_plugin_url() . 'assets/img/forminator-disabled@2x.png' ); ?> 2x"
56
+ alt="<?php esc_html_e( 'Forminator', Forminator::DOMAIN ); ?>"
57
+ class="sui-image"/>
58
  <?php endif; ?>
59
 
60
  <div class="sui-message-content">
73
 
74
  <div class="sui-box sui-message">
75
 
76
+ <?php if ( forminator_is_show_branding() ) : ?>
77
  <img src="<?php echo esc_url( forminator_plugin_url() . 'assets/img/forminator-submissions.png' ); ?>"
78
+ srcset="<?php echo esc_url( forminator_plugin_url() . 'assets/img/forminator-submissions.png' ); ?> 1x, <?php echo esc_url( forminator_plugin_url() . 'assets/img/forminator-submissions@2x.png' ); ?> 2x"
79
+ alt="<?php esc_html_e( 'Forminator', Forminator::DOMAIN ); ?>"
80
+ class="sui-image"/>
81
  <?php endif; ?>
82
 
83
  <div class="sui-message-content">
admin/views/entries/header.php CHANGED
@@ -1,9 +1,9 @@
1
- <h1 class="sui-header-title"><?php esc_html_e( "Submissions", Forminator::DOMAIN ); ?></h1>
2
 
3
  <div class="sui-actions-right">
4
  <?php if ( forminator_is_show_documentation_link() ) : ?>
5
  <a href="https://premium.wpmudev.org/docs/wpmu-dev-plugins/forminator/#submissions" target="_blank" class="sui-button sui-button-ghost">
6
- <i class="sui-icon-academy"></i> <?php esc_html_e( "View Documentation", Forminator::DOMAIN ); ?>
7
  </a>
8
  <?php endif; ?>
9
  </div>
1
+ <h1 class="sui-header-title"><?php esc_html_e( 'Submissions', Forminator::DOMAIN ); ?></h1>
2
 
3
  <div class="sui-actions-right">
4
  <?php if ( forminator_is_show_documentation_link() ) : ?>
5
  <a href="https://premium.wpmudev.org/docs/wpmu-dev-plugins/forminator/#submissions" target="_blank" class="sui-button sui-button-ghost">
6
+ <i class="sui-icon-academy"></i> <?php esc_html_e( 'View Documentation', Forminator::DOMAIN ); ?>
7
  </a>
8
  <?php endif; ?>
9
  </div>
admin/views/integrations/addon.php CHANGED
@@ -10,14 +10,14 @@ $show_action = false;
10
 
11
  $icon_class_action = 'sui-icon-plus';
12
  $tooltip = __( 'Configure Integration', Forminator::DOMAIN );
13
- $action = 'forminator_addon_settings';
14
 
15
  $multi_id = 0;
16
  $multi_name = false;
17
 
18
  if ( ! empty( $form_id ) ) {
19
 
20
- $action = 'forminator_addon_form_settings';
21
  $show_action = false;
22
  $icon_class_action = 'sui-icon-plus';
23
 
@@ -52,7 +52,6 @@ if ( ! empty( $form_id ) ) {
52
  $tooltip = __( 'Activate App', Forminator::DOMAIN );
53
  }
54
  }
55
-
56
  }
57
  } else {
58
 
@@ -101,7 +100,12 @@ $pro_url_target = '_blank';
101
  <?php endif; ?></td>
102
  */ ?>
103
 
104
- <tr class="<?php if ( ! $is_active && true === $advertising ) { echo 'fui-app--promote '; } ?><?php echo( $is_active ? 'fui-integration-enabled' : '' ); ?>">
 
 
 
 
 
105
 
106
  <td class="sui-table-item-title">
107
 
@@ -135,7 +139,7 @@ $pro_url_target = '_blank';
135
 
136
  <span><?php echo esc_html( $addon['title'] ); ?><?php if ( $show_pro_info && $addon['is_pro'] ) : ?>
137
  <span class="sui-tag sui-tag-pro">
138
- <?php esc_html_e( "PRO", Forminator::DOMAIN ); ?>
139
  </span>
140
  <?php endif; ?></span>
141
 
@@ -150,8 +154,8 @@ $pro_url_target = '_blank';
150
  data-title="<?php echo esc_attr( $addon['title'] ); ?>"
151
  data-image="<?php echo esc_attr( $addon['image'] ); ?>"
152
  data-imagex2="<?php echo esc_attr( $addon['image_x2'] ); ?>"
153
- data-nonce="<?php echo wp_create_nonce( 'forminator_addon_action' ); // WPCS: XSS ok. ?>"
154
- data-action="<?php echo esc_attr( $action ); ?>"
155
  data-form-id="<?php echo esc_attr( $form_id ); ?>"
156
  data-multi-id="<?php echo esc_attr( $multi_id ); ?>">
157
  <i class="<?php echo esc_attr( $icon_class_action ); ?>" aria-hidden="true"></i>
@@ -189,7 +193,7 @@ $pro_url_target = '_blank';
189
 
190
  <span><?php echo esc_html( $addon['title'] ); ?><?php if ( $show_pro_info && $addon['is_pro'] ) : ?>
191
  <span class="sui-tag sui-tag-pro">
192
- <?php esc_html_e( "PRO", Forminator::DOMAIN ); ?>
193
  </span>
194
  <?php endif; ?></span>
195
 
@@ -200,8 +204,8 @@ $pro_url_target = '_blank';
200
  data-title="<?php echo esc_attr( $addon['title'] ); ?>"
201
  data-image="<?php echo esc_attr( $addon['image'] ); ?>"
202
  data-imagex2="<?php echo esc_attr( $addon['image_x2'] ); ?>"
203
- data-nonce="<?php echo wp_create_nonce( 'forminator_addon_action' ); // WPCS: XSS ok. ?>"
204
- data-action="<?php echo esc_attr( $action ); ?>"
205
  data-form-id="<?php echo esc_attr( $form_id ); ?>"
206
  data-multi-id="<?php echo esc_attr( $multi_id ); ?>">
207
  <i class="<?php echo esc_attr( $icon_class_action ); ?>" aria-hidden="true"></i>
10
 
11
  $icon_class_action = 'sui-icon-plus';
12
  $tooltip = __( 'Configure Integration', Forminator::DOMAIN );
13
+ $action_addon = 'forminator_addon_settings';
14
 
15
  $multi_id = 0;
16
  $multi_name = false;
17
 
18
  if ( ! empty( $form_id ) ) {
19
 
20
+ $action_addon = 'forminator_addon_form_settings';
21
  $show_action = false;
22
  $icon_class_action = 'sui-icon-plus';
23
 
52
  $tooltip = __( 'Activate App', Forminator::DOMAIN );
53
  }
54
  }
 
55
  }
56
  } else {
57
 
100
  <?php endif; ?></td>
101
  */ ?>
102
 
103
+ <tr class="
104
+ <?php
105
+ if ( ! $is_active && true === $advertising ) {
106
+ echo 'fui-app--promote '; }
107
+ ?>
108
+ <?php echo( $is_active ? 'fui-integration-enabled' : '' ); ?>">
109
 
110
  <td class="sui-table-item-title">
111
 
139
 
140
  <span><?php echo esc_html( $addon['title'] ); ?><?php if ( $show_pro_info && $addon['is_pro'] ) : ?>
141
  <span class="sui-tag sui-tag-pro">
142
+ <?php esc_html_e( 'PRO', Forminator::DOMAIN ); ?>
143
  </span>
144
  <?php endif; ?></span>
145
 
154
  data-title="<?php echo esc_attr( $addon['title'] ); ?>"
155
  data-image="<?php echo esc_attr( $addon['image'] ); ?>"
156
  data-imagex2="<?php echo esc_attr( $addon['image_x2'] ); ?>"
157
+ data-nonce="<?php echo esc_attr( wp_create_nonce( 'forminator_addon_action' ) ); ?>"
158
+ data-action="<?php echo esc_attr( $action_addon ); ?>"
159
  data-form-id="<?php echo esc_attr( $form_id ); ?>"
160
  data-multi-id="<?php echo esc_attr( $multi_id ); ?>">
161
  <i class="<?php echo esc_attr( $icon_class_action ); ?>" aria-hidden="true"></i>
193
 
194
  <span><?php echo esc_html( $addon['title'] ); ?><?php if ( $show_pro_info && $addon['is_pro'] ) : ?>
195
  <span class="sui-tag sui-tag-pro">
196
+ <?php esc_html_e( 'PRO', Forminator::DOMAIN ); ?>
197
  </span>
198
  <?php endif; ?></span>
199
 
204
  data-title="<?php echo esc_attr( $addon['title'] ); ?>"
205
  data-image="<?php echo esc_attr( $addon['image'] ); ?>"
206
  data-imagex2="<?php echo esc_attr( $addon['image_x2'] ); ?>"
207
+ data-nonce="<?php echo esc_attr( wp_create_nonce( 'forminator_addon_action' ) ); ?>"
208
+ data-action="<?php echo esc_attr( $action_addon ); ?>"
209
  data-form-id="<?php echo esc_attr( $form_id ); ?>"
210
  data-multi-id="<?php echo esc_attr( $multi_id ); ?>">
211
  <i class="<?php echo esc_attr( $icon_class_action ); ?>" aria-hidden="true"></i>
admin/views/integrations/content.php CHANGED
@@ -1,4 +1,4 @@
1
- <?php $path = forminator_plugin_url(); ?>
2
 
3
  <div class="sui-row-with-sidenav forminator-integrations-wrapper">
4
 
@@ -7,11 +7,11 @@
7
  <ul class="sui-vertical-tabs sui-sidenav-hide-md">
8
 
9
  <li class="sui-vertical-tab forminator-integrations" data-tab-id="forminator-integrations">
10
- <a href="#forminator-integrations" role="button"><?php esc_html_e( "Applications", Forminator::DOMAIN ); ?></a>
11
  </li>
12
 
13
  <li class="sui-vertical-tab forminator-api" data-tab-id="forminator-api">
14
- <a href="#forminator-api" role="button"><?php esc_html_e( "API", Forminator::DOMAIN ); ?></a>
15
  </li>
16
 
17
  </ul>
@@ -29,7 +29,7 @@
29
 
30
  <div class="sui-box-header">
31
 
32
- <h2 class="sui-box-title"><?php esc_html_e( "Applications", Forminator::DOMAIN ); ?></h2>
33
 
34
  </div>
35
 
@@ -51,10 +51,10 @@
51
 
52
  <div class="sui-box-header">
53
 
54
- <h2 class="sui-box-title"><?php esc_html_e( "API", Forminator::DOMAIN ); ?></h2>
55
 
56
  <div class="sui-actions-left">
57
- <span class="sui-tag sui-tag-pro"><?php esc_html_e( "PRO", Forminator::DOMAIN ); ?></span>
58
  </div>
59
 
60
  </div>
@@ -63,19 +63,19 @@
63
 
64
  <div class="sui-box-body sui-block-content-center">
65
 
66
- <?php if ( forminator_is_show_branding() ): ?>
67
- <img src="<?php echo $path . 'assets/img/forminator-disabled.png'; // WPCS: XSS ok. ?>"
68
- srcset="<?php echo $path . 'assets/img/forminator-disabled.png'; // WPCS: XSS ok. ?> 1x,
69
- <?php echo $path . 'assets/img/forminator-disabled@2x.png'; // WPCS: XSS ok. ?> 2x"
70
- alt="<?php esc_html_e( 'Forminator APIs', Forminator::DOMAIN ); ?>"
71
- class="sui-image sui-image-center fui-image"/>
72
  <?php endif; ?>
73
 
74
  <div class="fui-limit-block-600 fui-limit-block-center">
75
 
76
  <p>
77
  <?php
78
- esc_html_e( "Build your own integrations and custom Forminator apps using our full featured API! Visit the Forminator API Docs to get started.", Forminator::DOMAIN );
79
  ?>
80
  </p>
81
  <p>
1
+ <?php $url = forminator_plugin_url(); ?>
2
 
3
  <div class="sui-row-with-sidenav forminator-integrations-wrapper">
4
 
7
  <ul class="sui-vertical-tabs sui-sidenav-hide-md">
8
 
9
  <li class="sui-vertical-tab forminator-integrations" data-tab-id="forminator-integrations">
10
+ <a href="#forminator-integrations" role="button"><?php esc_html_e( 'Applications', Forminator::DOMAIN ); ?></a>
11
  </li>
12
 
13
  <li class="sui-vertical-tab forminator-api" data-tab-id="forminator-api">
14
+ <a href="#forminator-api" role="button"><?php esc_html_e( 'API', Forminator::DOMAIN ); ?></a>
15
  </li>
16
 
17
  </ul>
29
 
30
  <div class="sui-box-header">
31
 
32
+ <h2 class="sui-box-title"><?php esc_html_e( 'Applications', Forminator::DOMAIN ); ?></h2>
33
 
34
  </div>
35
 
51
 
52
  <div class="sui-box-header">
53
 
54
+ <h2 class="sui-box-title"><?php esc_html_e( 'API', Forminator::DOMAIN ); ?></h2>
55
 
56
  <div class="sui-actions-left">
57
+ <span class="sui-tag sui-tag-pro"><?php esc_html_e( 'PRO', Forminator::DOMAIN ); ?></span>
58
  </div>
59
 
60
  </div>
63
 
64
  <div class="sui-box-body sui-block-content-center">
65
 
66
+ <?php if ( forminator_is_show_branding() ) : ?>
67
+ <img src="<?php echo $url . 'assets/img/forminator-disabled.png'; // phpcs:ignore ?>"
68
+ srcset="<?php echo $url . 'assets/img/forminator-disabled.png'; // phpcs:ignore ?> 1x,
69
+ <?php echo $url . 'assets/img/forminator-disabled@2x.png'; // phpcs:ignore ?> 2x"
70
+ alt="<?php esc_html_e( 'Forminator APIs', Forminator::DOMAIN ); ?>"
71
+ class="sui-image sui-image-center fui-image"/>
72
  <?php endif; ?>
73
 
74
  <div class="fui-limit-block-600 fui-limit-block-center">
75
 
76
  <p>
77
  <?php
78
+ esc_html_e( 'Build your own integrations and custom Forminator apps using our full featured API! Visit the Forminator API Docs to get started.', Forminator::DOMAIN );
79
  ?>
80
  </p>
81
  <p>
admin/views/integrations/form-content.php CHANGED
@@ -8,7 +8,7 @@ if ( empty( $form_id ) ) {
8
  if ( empty( $addons['form_connected'] ) && empty( $addons['not_form_connected'] ) ) { ?>
9
 
10
  <div class="sui-notice sui-notice-info">
11
- <p><?php printf( esc_html__( 'You are not connected to any third party apps. You can connect to the available apps via their API on the %1$sIntegrations%2$s page and come back to activate them for collecting data of this form.', Forminator::DOMAIN ), '<a href="' . esc_url( $integrations_page ) . '">', '</a>' ); // WPCS: XSS ok. ?></p>
12
  </div>
13
 
14
  <?php } else { ?>
@@ -31,7 +31,7 @@ if ( empty( $addons['form_connected'] ) && empty( $addons['not_form_connected']
31
 
32
  <?php foreach ( $addons['form_connected'] as $key => $provider ) : ?>
33
 
34
- <?php echo forminator_addon_row_html_markup( $provider, $form_id, true, true );// wpcs xss ok. ?>
35
 
36
  <?php endforeach; ?>
37
 
@@ -52,7 +52,7 @@ if ( empty( $addons['form_connected'] ) && empty( $addons['not_form_connected']
52
  <?php if ( empty( $addons['not_form_connected'] ) ) { ?>
53
 
54
  <div class="sui-notice">
55
- <p><?php printf( esc_html__( 'Connect to more third party apps on the %1$sIntegrations%2$s page and activate them to collect the data of this form here.', Forminator::DOMAIN ), '<a href="' . esc_url( $integrations_page ) . '">', '</a>' ); // WPCS: XSS ok. ?></p>
56
  </div>
57
 
58
  <?php } else { ?>
@@ -63,7 +63,7 @@ if ( empty( $addons['form_connected'] ) && empty( $addons['not_form_connected']
63
 
64
  <?php foreach ( $addons['not_form_connected'] as $key => $provider ) : ?>
65
 
66
- <?php echo forminator_addon_row_html_markup( $provider, $form_id, true, true );// wpcs xss ok. ?>
67
 
68
  <?php endforeach; ?>
69
 
@@ -71,10 +71,11 @@ if ( empty( $addons['form_connected'] ) && empty( $addons['not_form_connected']
71
 
72
  </table>
73
 
74
- <span class="sui-description"><?php printf( esc_html__( 'You are connected to these apps via their API. Connect to more apps on the %1$sIntegrations%2$s page.', Forminator::DOMAIN ), '<a href="' . esc_url( $integrations_page ) . '">', '</a>' ); ?></span>
75
 
76
  <?php } ?>
77
 
78
  </div>
79
 
80
- <?php }
 
8
  if ( empty( $addons['form_connected'] ) && empty( $addons['not_form_connected'] ) ) { ?>
9
 
10
  <div class="sui-notice sui-notice-info">
11
+ <p><?php printf( /* translators: ... */ esc_html__( 'You are not connected to any third party apps. You can connect to the available apps via their API on the %1$sIntegrations%2$s page and come back to activate them for collecting data of this form.', Forminator::DOMAIN ), '<a href="' . esc_url( $integrations_page ) . '">', '</a>' ); ?></p>
12
  </div>
13
 
14
  <?php } else { ?>
31
 
32
  <?php foreach ( $addons['form_connected'] as $key => $provider ) : ?>
33
 
34
+ <?php echo forminator_addon_row_html_markup( $provider, $form_id, true, true );// phpcs:ignore ?>
35
 
36
  <?php endforeach; ?>
37
 
52
  <?php if ( empty( $addons['not_form_connected'] ) ) { ?>
53
 
54
  <div class="sui-notice">
55
+ <p><?php printf( /* translators: ... */ esc_html__( 'Connect to more third party apps on the %1$sIntegrations%2$s page and activate them to collect the data of this form here.', Forminator::DOMAIN ), '<a href="' . esc_url( $integrations_page ) . '">', '</a>' ); ?></p>
56
  </div>
57
 
58
  <?php } else { ?>
63
 
64
  <?php foreach ( $addons['not_form_connected'] as $key => $provider ) : ?>
65
 
66
+ <?php echo forminator_addon_row_html_markup( $provider, $form_id, true, true );// phpcs:ignore ?>
67
 
68
  <?php endforeach; ?>
69
 
71
 
72
  </table>
73
 
74
+ <span class="sui-description"><?php printf( /* translators: ... */ esc_html__( 'You are connected to these apps via their API. Connect to more apps on the %1$sIntegrations%2$s page.', Forminator::DOMAIN ), '<a href="' . esc_url( $integrations_page ) . '">', '</a>' ); ?></span>
75
 
76
  <?php } ?>
77
 
78
  </div>
79
 
80
+ <?php
81
+ }
admin/views/integrations/header.php CHANGED
@@ -1,9 +1,9 @@
1
- <h1 class="sui-header-title"><?php esc_html_e( "Integrations", Forminator::DOMAIN ); ?></h1>
2
 
3
  <div class="sui-actions-right">
4
  <?php if ( forminator_is_show_documentation_link() ) : ?>
5
  <a href="https://premium.wpmudev.org/docs/wpmu-dev-plugins/forminator/#integrations" target="_blank" class="sui-button sui-button-ghost">
6
- <i class="sui-icon-academy"></i> <?php esc_html_e( "View Documentation", Forminator::DOMAIN ); ?>
7
  </a>
8
  <?php endif; ?>
9
 
1
+ <h1 class="sui-header-title"><?php esc_html_e( 'Integrations', Forminator::DOMAIN ); ?></h1>
2
 
3
  <div class="sui-actions-right">
4
  <?php if ( forminator_is_show_documentation_link() ) : ?>
5
  <a href="https://premium.wpmudev.org/docs/wpmu-dev-plugins/forminator/#integrations" target="_blank" class="sui-button sui-button-ghost">
6
+ <i class="sui-icon-academy"></i> <?php esc_html_e( 'View Documentation', Forminator::DOMAIN ); ?>
7
  </a>
8
  <?php endif; ?>
9
 
admin/views/integrations/page-content.php CHANGED
@@ -1,8 +1,7 @@
1
- <?php $path = forminator_plugin_url(); ?>
2
  <p>
3
  <?php
4
  esc_html_e( 'Forminator integrates with your favorite third party apps. You can connect to the available apps via their API here and activate them to collect data in the Integrations tab of your forms, polls or quizzes.', Forminator::DOMAIN );
5
- ?>
6
  </p>
7
 
8
  <div class="fui-integrations-block">
@@ -10,7 +9,8 @@
10
  <span class="sui-table-title"><?php esc_html_e( 'Connected Apps', Forminator::DOMAIN ); ?></span>
11
 
12
  <?php
13
- if ( ! empty( $addons['connected'] ) ) { ?>
 
14
 
15
  <table class="sui-table fui-table--apps">
16
 
@@ -18,7 +18,7 @@
18
 
19
  <?php foreach ( $addons['connected'] as $key => $provider ) : ?>
20
 
21
- <?php echo forminator_addon_row_html_markup( $provider, 0, true, true );// wpcs xss ok. ?>
22
 
23
  <?php endforeach; ?>
24
 
@@ -43,7 +43,8 @@
43
  <span class="sui-table-title"><?php esc_html_e( 'Available Apps', Forminator::DOMAIN ); ?></span>
44
 
45
  <?php
46
- if ( ! empty( $addons['not_connected'] ) ) { ?>
 
47
 
48
  <table class="sui-table fui-table--apps">
49
 
@@ -51,7 +52,7 @@
51
 
52
  <?php foreach ( $addons['not_connected'] as $key => $provider ) : ?>
53
 
54
- <?php echo forminator_addon_row_html_markup( $provider, 0, true );// wpcs xss ok. ?>
55
 
56
  <?php endforeach; ?>
57
 
@@ -60,6 +61,7 @@
60
  </table>
61
 
62
  <?php
63
- } ?>
 
64
 
65
  </div>
 
1
  <p>
2
  <?php
3
  esc_html_e( 'Forminator integrates with your favorite third party apps. You can connect to the available apps via their API here and activate them to collect data in the Integrations tab of your forms, polls or quizzes.', Forminator::DOMAIN );
4
+ ?>
5
  </p>
6
 
7
  <div class="fui-integrations-block">
9
  <span class="sui-table-title"><?php esc_html_e( 'Connected Apps', Forminator::DOMAIN ); ?></span>
10
 
11
  <?php
12
+ if ( ! empty( $addons['connected'] ) ) {
13
+ ?>
14
 
15
  <table class="sui-table fui-table--apps">
16
 
18
 
19
  <?php foreach ( $addons['connected'] as $key => $provider ) : ?>
20
 
21
+ <?php echo forminator_addon_row_html_markup( $provider, 0, true, true );// phpcs:ignore ?>
22
 
23
  <?php endforeach; ?>
24
 
43
  <span class="sui-table-title"><?php esc_html_e( 'Available Apps', Forminator::DOMAIN ); ?></span>
44
 
45
  <?php
46
+ if ( ! empty( $addons['not_connected'] ) ) {
47
+ ?>
48
 
49
  <table class="sui-table fui-table--apps">
50
 
52
 
53
  <?php foreach ( $addons['not_connected'] as $key => $provider ) : ?>
54
 
55
+ <?php echo forminator_addon_row_html_markup( $provider, 0, true );// phpcs:ignore ?>
56
 
57
  <?php endforeach; ?>
58
 
61
  </table>
62
 
63
  <?php
64
+ }
65
+ ?>
66
 
67
  </div>
admin/views/integrations/poll-content.php CHANGED
@@ -8,7 +8,7 @@ if ( empty( $poll_id ) ) {
8
  if ( empty( $addons['poll_connected'] ) && empty( $addons['not_poll_connected'] ) ) { ?>
9
 
10
  <div class="sui-notice sui-notice-info">
11
- <p><?php printf( esc_html__( 'You are not connected to any third party apps. You can connect to the available apps via their API on the %1$sIntegrations%2$s page and come back to activate them for collecting data of this poll.', Forminator::DOMAIN ), '<a href="' . esc_url( $integrations_page ) . '">', '</a>' ); // WPCS: XSS ok. ?></p>
12
  </div>
13
 
14
  <?php } else { ?>
@@ -31,7 +31,7 @@ if ( empty( $addons['poll_connected'] ) && empty( $addons['not_poll_connected']
31
 
32
  <?php foreach ( $addons['poll_connected'] as $key => $provider ) : ?>
33
 
34
- <?php echo forminator_addon_poll_row_html_markup( $provider, $poll_id, true, true ); // wpcs xss ok. ?>
35
 
36
  <?php endforeach; ?>
37
 
@@ -52,7 +52,7 @@ if ( empty( $addons['poll_connected'] ) && empty( $addons['not_poll_connected']
52
  <?php if ( empty( $addons['not_poll_connected'] ) ) { ?>
53
 
54
  <div class="sui-notice">
55
- <p><?php printf( esc_html__( 'Connect to more third party apps on the %1$sIntegrations%2$s page and activate them to collect the data of this poll here.', Forminator::DOMAIN ), '<a href="' . esc_url( $integrations_page ) . '">', '</a>' ); // WPCS: XSS ok. ?></p>
56
  </div>
57
 
58
  <?php } else { ?>
@@ -63,12 +63,13 @@ if ( empty( $addons['poll_connected'] ) && empty( $addons['not_poll_connected']
63
 
64
  <?php foreach ( $addons['not_poll_connected'] as $key => $provider ) : ?>
65
 
66
- <?php if ( ! $provider['is_poll_settings_available'] ) {
 
67
  continue;
68
  }
69
  ?>
70
 
71
- <?php echo forminator_addon_poll_row_html_markup( $provider, $poll_id, true, true ); // wpcs xss ok. ?>
72
 
73
  <?php endforeach; ?>
74
 
@@ -76,10 +77,11 @@ if ( empty( $addons['poll_connected'] ) && empty( $addons['not_poll_connected']
76
 
77
  </table>
78
 
79
- <span class="sui-description"><?php printf( esc_html__( 'You are connected to these apps via their API. Connect to more apps on the %1$sIntegrations%2$s page.', Forminator::DOMAIN ), '<a href="' . esc_url( $integrations_page ) . '">', '</a>' ); ?></span>
80
 
81
  <?php } ?>
82
 
83
  </div>
84
 
85
- <?php }
 
8
  if ( empty( $addons['poll_connected'] ) && empty( $addons['not_poll_connected'] ) ) { ?>
9
 
10
  <div class="sui-notice sui-notice-info">
11
+ <p><?php printf( /* translators: ... */ esc_html__( 'You are not connected to any third party apps. You can connect to the available apps via their API on the %1$sIntegrations%2$s page and come back to activate them for collecting data of this poll.', Forminator::DOMAIN ), '<a href="' . esc_url( $integrations_page ) . '">', '</a>' ); ?></p>
12
  </div>
13
 
14
  <?php } else { ?>
31
 
32
  <?php foreach ( $addons['poll_connected'] as $key => $provider ) : ?>
33
 
34
+ <?php echo forminator_addon_poll_row_html_markup( $provider, $poll_id, true, true ); // phpcs:ignore ?>
35
 
36
  <?php endforeach; ?>
37
 
52
  <?php if ( empty( $addons['not_poll_connected'] ) ) { ?>
53
 
54
  <div class="sui-notice">
55
+ <p><?php printf( /* translators: ... */ esc_html__( 'Connect to more third party apps on the %1$sIntegrations%2$s page and activate them to collect the data of this poll here.', Forminator::DOMAIN ), '<a href="' . esc_url( $integrations_page ) . '">', '</a>' ); ?></p>
56
  </div>
57
 
58
  <?php } else { ?>
63
 
64
  <?php foreach ( $addons['not_poll_connected'] as $key => $provider ) : ?>
65
 
66
+ <?php
67
+ if ( ! $provider['is_poll_settings_available'] ) {
68
  continue;
69
  }
70
  ?>
71
 
72
+ <?php echo forminator_addon_poll_row_html_markup( $provider, $poll_id, true, true ); // phpcs:ignore ?>
73
 
74
  <?php endforeach; ?>
75
 
77
 
78
  </table>
79
 
80
+ <span class="sui-description"><?php printf( /* translators: ... */ esc_html__( 'You are connected to these apps via their API. Connect to more apps on the %1$sIntegrations%2$s page.', Forminator::DOMAIN ), '<a href="' . esc_url( $integrations_page ) . '">', '</a>' ); ?></span>
81
 
82
  <?php } ?>
83
 
84
  </div>
85
 
86
+ <?php
87
+ }
admin/views/integrations/quiz-addon.php CHANGED
@@ -42,7 +42,6 @@ if ( ! empty( $quiz_id ) ) {
42
  $tooltip = __( 'Activate App', Forminator::DOMAIN );
43
  }
44
  }
45
-
46
  }
47
  } else {
48
  // on integrations page
@@ -124,7 +123,7 @@ if ( ! $show_action ) {
124
 
125
  <span><?php echo esc_html( $addon['title'] ); ?><?php if ( $show_pro_info && $addon['is_pro'] ) : ?>
126
  <span class="sui-tag sui-tag-pro">
127
- <?php esc_html_e( "PRO", Forminator::DOMAIN ); ?>
128
  </span>
129
  <?php endif; ?></span>
130
 
@@ -132,19 +131,19 @@ if ( ! $show_action ) {
132
  <a href="<?php echo esc_url( $addon['documentation'] ); ?>" target="_blank"><?php esc_html_e( 'View Docs', Forminator::DOMAIN ); ?></a>
133
  <?php } ?>
134
 
135
- <button class="sui-button-icon sui-tooltip sui-tooltip-top-right connect-integration"
136
- data-tooltip="<?php echo esc_attr( $tooltip ); ?>"
137
- data-slug="<?php echo esc_attr( $addon['slug'] ); ?>"
138
- data-title="<?php echo esc_attr( $addon['title'] ); ?>"
139
- data-image="<?php echo esc_attr( $addon['image'] ); ?>"
140
- data-imagex2="<?php echo esc_attr( $addon['image_x2'] ); ?>"
141
- data-nonce="<?php echo wp_create_nonce( 'forminator_addon_action' ); // WPCS: XSS ok. ?>"
142
- data-action="<?php echo esc_attr( $main_action ); ?>"
143
- data-quiz-id="<?php echo esc_attr( $quiz_id ); ?>"
144
- data-multi-id="<?php echo esc_attr( $multi_id ); ?>">
145
- <i class="<?php echo esc_attr( $icon_class_action ); ?>" aria-hidden="true"></i>
146
- <span class="sui-screen-reader-text"><?php esc_html_e( 'Connect this integration', Forminator::DOMAIN ); ?></span>
147
- </button>
148
 
149
  </div>
150
 
@@ -176,23 +175,23 @@ if ( ! $show_action ) {
176
 
177
  <span><?php echo esc_html( $addon['title'] ); ?><?php if ( $show_pro_info && $addon['is_pro'] ) : ?>
178
  <span class="sui-tag sui-tag-pro">
179
- <?php esc_html_e( "PRO", Forminator::DOMAIN ); ?>
180
  </span>
181
  <?php endif; ?></span>
182
 
183
- <button class="sui-button-icon sui-tooltip sui-tooltip-top-right connect-integration"
184
- data-tooltip="<?php echo esc_attr( $tooltip ); ?>"
185
- data-slug="<?php echo esc_attr( $addon['slug'] ); ?>"
186
- data-title="<?php echo esc_attr( $addon['title'] ); ?>"
187
- data-image="<?php echo esc_attr( $addon['image'] ); ?>"
188
- data-imagex2="<?php echo esc_attr( $addon['image_x2'] ); ?>"
189
- data-nonce="<?php echo wp_create_nonce( 'forminator_addon_action' ); // WPCS: XSS ok. ?>"
190
- data-action="<?php echo esc_attr( $main_action ); ?>"
191
- data-quiz-id="<?php echo esc_attr( $quiz_id ); ?>"
192
- data-multi-id="<?php echo esc_attr( $multi_id ); ?>">
193
- <i class="<?php echo esc_attr( $icon_class_action ); ?>" aria-hidden="true"></i>
194
- <span class="sui-screen-reader-text"><?php esc_html_e( 'Connect this integration', Forminator::DOMAIN ); ?></span>
195
- </button>
196
 
197
  <?php } ?>
198
 
42
  $tooltip = __( 'Activate App', Forminator::DOMAIN );
43
  }
44
  }
 
45
  }
46
  } else {
47
  // on integrations page
123
 
124
  <span><?php echo esc_html( $addon['title'] ); ?><?php if ( $show_pro_info && $addon['is_pro'] ) : ?>
125
  <span class="sui-tag sui-tag-pro">
126
+ <?php esc_html_e( 'PRO', Forminator::DOMAIN ); ?>
127
  </span>
128
  <?php endif; ?></span>
129
 
131
  <a href="<?php echo esc_url( $addon['documentation'] ); ?>" target="_blank"><?php esc_html_e( 'View Docs', Forminator::DOMAIN ); ?></a>
132
  <?php } ?>
133
 
134
+ <button class="sui-button-icon sui-tooltip sui-tooltip-top-right connect-integration"
135
+ data-tooltip="<?php echo esc_attr( $tooltip ); ?>"
136
+ data-slug="<?php echo esc_attr( $addon['slug'] ); ?>"
137
+ data-title="<?php echo esc_attr( $addon['title'] ); ?>"
138
+ data-image="<?php echo esc_attr( $addon['image'] ); ?>"
139
+ data-imagex2="<?php echo esc_attr( $addon['image_x2'] ); ?>"
140
+ data-nonce="<?php echo esc_attr( wp_create_nonce( 'forminator_addon_action' ) ); ?>"
141
+ data-action="<?php echo esc_attr( $main_action ); ?>"
142
+ data-quiz-id="<?php echo esc_attr( $quiz_id ); ?>"
143
+ data-multi-id="<?php echo esc_attr( $multi_id ); ?>">
144
+ <i class="<?php echo esc_attr( $icon_class_action ); ?>" aria-hidden="true"></i>
145
+ <span class="sui-screen-reader-text"><?php esc_html_e( 'Connect this integration', Forminator::DOMAIN ); ?></span>
146
+ </button>
147
 
148
  </div>
149
 
175
 
176
  <span><?php echo esc_html( $addon['title'] ); ?><?php if ( $show_pro_info && $addon['is_pro'] ) : ?>
177
  <span class="sui-tag sui-tag-pro">
178
+ <?php esc_html_e( 'PRO', Forminator::DOMAIN ); ?>
179
  </span>
180
  <?php endif; ?></span>
181
 
182
+ <button class="sui-button-icon sui-tooltip sui-tooltip-top-right connect-integration"
183
+ data-tooltip="<?php echo esc_attr( $tooltip ); ?>"
184
+ data-slug="<?php echo esc_attr( $addon['slug'] ); ?>"
185
+ data-title="<?php echo esc_attr( $addon['title'] ); ?>"
186
+ data-image="<?php echo esc_attr( $addon['image'] ); ?>"
187
+ data-imagex2="<?php echo esc_attr( $addon['image_x2'] ); ?>"
188
+ data-nonce="<?php echo esc_attr( wp_create_nonce( 'forminator_addon_action' ) ); ?>"
189
+ data-action="<?php echo esc_attr( $main_action ); ?>"
190
+ data-quiz-id="<?php echo esc_attr( $quiz_id ); ?>"
191
+ data-multi-id="<?php echo esc_attr( $multi_id ); ?>">
192
+ <i class="<?php echo esc_attr( $icon_class_action ); ?>" aria-hidden="true"></i>
193
+ <span class="sui-screen-reader-text"><?php esc_html_e( 'Connect this integration', Forminator::DOMAIN ); ?></span>
194
+ </button>
195
 
196
  <?php } ?>
197
 
admin/views/integrations/quiz-content.php CHANGED
@@ -8,7 +8,7 @@ if ( empty( $quiz_id ) ) {
8
  if ( empty( $addons['quiz_connected'] ) && empty( $addons['not_quiz_connected'] ) ) { ?>
9
 
10
  <div class="sui-notice sui-notice-info">
11
- <p><?php printf( esc_html__( 'You are not connected to any third party apps. You can connect to the available apps via their API on the %1$sIntegrations%2$s page and come back to activate them for collecting data of this quiz.', Forminator::DOMAIN ), '<a href="' . esc_url( $integrations_page ) . '">', '</a>' ); // WPCS: XSS ok. ?></p>
12
  </div>
13
 
14
  <?php } else { ?>
@@ -31,7 +31,7 @@ if ( empty( $addons['quiz_connected'] ) && empty( $addons['not_quiz_connected']
31
 
32
  <?php foreach ( $addons['quiz_connected'] as $key => $provider ) : ?>
33
 
34
- <?php echo forminator_addon_quiz_row_html_markup( $provider, $quiz_id, true, true ); // wpcs xss ok. ?>
35
 
36
  <?php endforeach; ?>
37
 
@@ -52,7 +52,7 @@ if ( empty( $addons['quiz_connected'] ) && empty( $addons['not_quiz_connected']
52
  <?php if ( empty( $addons['not_quiz_connected'] ) ) { ?>
53
 
54
  <div class="sui-notice">
55
- <p><?php printf( esc_html__( 'Connect to more third party apps on the %1$sIntegrations%2$s page and activate them to collect the data of this quiz here.', Forminator::DOMAIN ), '<a href="' . esc_url( $integrations_page ) . '">', '</a>' ); // WPCS: XSS ok. ?></p>
56
  </div>
57
 
58
  <?php } else { ?>
@@ -63,7 +63,7 @@ if ( empty( $addons['quiz_connected'] ) && empty( $addons['not_quiz_connected']
63
 
64
  <?php foreach ( $addons['not_quiz_connected'] as $key => $provider ) : ?>
65
 
66
- <?php echo forminator_addon_quiz_row_html_markup( $provider, $quiz_id, true, true ); // wpcs xss ok. ?>
67
 
68
  <?php endforeach; ?>
69
 
@@ -71,10 +71,10 @@ if ( empty( $addons['quiz_connected'] ) && empty( $addons['not_quiz_connected']
71
 
72
  </table>
73
 
74
- <span class="sui-description"><?php printf( esc_html__( 'You are connected to these apps via their API. Connect to more apps on the %1$sIntegrations%2$s page.', Forminator::DOMAIN ), '<a href="' . esc_url( $integrations_page ) . '">', '</a>' ); ?></span>
75
 
76
  <?php } ?>
77
 
78
  </div>
79
 
80
- <?php } ?>
8
  if ( empty( $addons['quiz_connected'] ) && empty( $addons['not_quiz_connected'] ) ) { ?>
9
 
10
  <div class="sui-notice sui-notice-info">
11
+ <p><?php printf( /* translators: ... */ esc_html__( 'You are not connected to any third party apps. You can connect to the available apps via their API on the %1$sIntegrations%2$s page and come back to activate them for collecting data of this quiz.', Forminator::DOMAIN ), '<a href="' . esc_url( $integrations_page ) . '">', '</a>' ); ?></p>
12
  </div>
13
 
14
  <?php } else { ?>
31
 
32
  <?php foreach ( $addons['quiz_connected'] as $key => $provider ) : ?>
33
 
34
+ <?php echo forminator_addon_quiz_row_html_markup( $provider, $quiz_id, true, true ); // phpcs:ignore ?>
35
 
36
  <?php endforeach; ?>
37
 
52
  <?php if ( empty( $addons['not_quiz_connected'] ) ) { ?>
53
 
54
  <div class="sui-notice">
55
+ <p><?php printf( /* translators: ... */ esc_html__( 'Connect to more third party apps on the %1$sIntegrations%2$s page and activate them to collect the data of this quiz here.', Forminator::DOMAIN ), '<a href="' . esc_url( $integrations_page ) . '">', '</a>' ); ?></p>
56
  </div>
57
 
58
  <?php } else { ?>
63
 
64
  <?php foreach ( $addons['not_quiz_connected'] as $key => $provider ) : ?>
65
 
66
+ <?php echo forminator_addon_quiz_row_html_markup( $provider, $quiz_id, true, true ); // phpcs:ignore ?>
67
 
68
  <?php endforeach; ?>
69
 
71
 
72
  </table>
73
 
74
+ <span class="sui-description"><?php printf( /* translators: ... */ esc_html__( 'You are connected to these apps via their API. Connect to more apps on the %1$sIntegrations%2$s page.', Forminator::DOMAIN ), '<a href="' . esc_url( $integrations_page ) . '">', '</a>' ); ?></span>
75
 
76
  <?php } ?>
77
 
78
  </div>
79
 
80
+ <?php } ?>
admin/views/poll/entries/content-none.php CHANGED
@@ -1,15 +1,15 @@
1
- <?php if ( forminator_is_show_branding() ): ?>
2
- <img src="<?php echo esc_url( forminator_plugin_url() . 'assets/img/forminator-submissions.png' ); // WPCS: XSS ok. ?>"
3
- srcset="<?php echo esc_url( forminator_plugin_url() . 'assets/img/forminator-submissions.png' ); // WPCS: XSS ok. ?> 1x, <?php echo esc_url( forminator_plugin_url() . 'assets/img/forminator-submissions@2x.png' ); // WPCS: XSS ok. ?> 2x"
4
- alt="<?php esc_html_e( 'Forminator', Forminator::DOMAIN ); ?>"
5
- class="sui-image"
6
- aria-hidden="true"/>
7
  <?php endif; ?>
8
 
9
  <div class="sui-message-content">
10
 
11
- <h2><?php echo forminator_get_form_name( $form_id, 'poll'); // WPCS: XSS ok. ?></h2>
12
 
13
- <p><?php esc_html_e( "You haven’t received any submissions for this poll yet. When you do, you’ll be able to view all the data here.", Forminator::DOMAIN ); ?></p>
14
 
15
  </div>
1
+ <?php if ( forminator_is_show_branding() ) : ?>
2
+ <img src="<?php echo esc_url( forminator_plugin_url() . 'assets/img/forminator-submissions.png' ); ?>"
3
+ srcset="<?php echo esc_url( forminator_plugin_url() . 'assets/img/forminator-submissions.png' ); ?> 1x, <?php echo esc_url( forminator_plugin_url() . 'assets/img/forminator-submissions@2x.png' ); ?> 2x"
4
+ alt="<?php esc_html_e( 'Forminator', Forminator::DOMAIN ); ?>"
5
+ class="sui-image"
6
+ aria-hidden="true"/>
7
  <?php endif; ?>
8
 
9
  <div class="sui-message-content">
10
 
11
+ <h2><?php echo forminator_get_form_name( $form_id, 'poll' ); // phpcs:ignore ?></h2>
12
 
13
+ <p><?php esc_html_e( 'You haven’t received any submissions for this poll yet. When you do, you’ll be able to view all the data here.', Forminator::DOMAIN ); ?></p>
14
 
15
  </div>
admin/views/poll/entries/content.php CHANGED
@@ -1,5 +1,5 @@
1
  <?php
2
- $count = Forminator_Form_Entry_Model::count_entries( $this->form_id );
3
 
4
  $poll_question = $this->get_poll_question();
5
  $poll_description = $this->get_poll_description();
@@ -22,16 +22,16 @@ $custom_votes = $this->map_custom_votes();
22
  <div class="sui-block-content-center">
23
  <?php if ( ! empty( $poll_question ) ) { ?>
24
 
25
- <h2><?php echo $poll_question; // WPCS: XSS ok. ?></h2>
26
 
27
  <?php } ?>
28
 
29
  <?php if ( ! empty( $poll_description ) ) { ?>
30
 
31
- <p><?php echo $poll_description; // WPCS: XSS ok. ?></p>
32
 
33
  <?php } ?>
34
- </div>
35
 
36
  </div>
37
 
@@ -41,23 +41,25 @@ $custom_votes = $this->map_custom_votes();
41
 
42
  <?php if ( ! empty( $custom_votes ) && count( $custom_votes ) > 0 ) { ?>
43
 
44
- <?php foreach ( $custom_votes as $element_id => $custom_vote ) {
 
45
 
46
  echo '<div style="margin-top: 30px;">';
47
 
48
- echo '<label class="sui-label">' . $this->get_field_title( $element_id ) . '</label>'; // WPCS: XSS ok.
49
 
50
  echo '<div style="margin-top: 10px;">';
51
 
52
- foreach ( $custom_vote as $answer => $vote ) {
53
- echo '<span class="sui-tag">' . esc_html( sprintf( _n( '%1$s (%2$s) vote', '%1$s (%2$s) votes', $vote, Forminator::DOMAIN ), $answer, $vote ) ) . '</span>';
54
- }
55
 
56
  echo '</div>';
57
 
58
  echo '</div>';
59
 
60
- } ?>
 
61
 
62
  <?php } ?>
63
 
@@ -67,17 +69,17 @@ $custom_votes = $this->map_custom_votes();
67
 
68
  <div class="sui-actions-right">
69
 
70
- <button
71
- type="button"
72
- class="sui-button sui-button-ghost wpmudev-open-modal"
73
- data-modal="delete-poll-submission"
74
- data-modal-title="<?php esc_attr_e( 'Delete Submissions', Forminator::DOMAIN ); ?>"
75
- data-modal-content="<?php esc_attr_e( 'Are you sure you wish to delete the submissions on this poll?', Forminator::DOMAIN ); ?>"
76
- data-form-id="<?php echo esc_attr( $this->form_id ); ?>"
77
- data-nonce="<?php echo wp_create_nonce( 'forminatorPollEntries' ); // WPCS: XSS ok. ?>"
78
- >
79
- <i class="sui-icon-trash" aria-hidden="true"></i> <?php esc_html_e( "Delete Submissions", Forminator::DOMAIN ); ?>
80
- </button>
81
 
82
  </div>
83
 
@@ -88,10 +90,11 @@ $custom_votes = $this->map_custom_votes();
88
  <?php else : ?>
89
 
90
  <div class="sui-box sui-message">
91
- <?php $form_id = $this->form_id;
92
- include_once forminator_plugin_dir() . 'admin/views/poll/entries/content-none.php';
93
- ?>
 
94
  </div>
95
 
96
- <?php
97
  endif;
1
  <?php
2
+ $count = Forminator_Form_Entry_Model::count_entries( $this->form_id );
3
 
4
  $poll_question = $this->get_poll_question();
5
  $poll_description = $this->get_poll_description();
22
  <div class="sui-block-content-center">
23
  <?php if ( ! empty( $poll_question ) ) { ?>
24
 
25
+ <h2><?php echo $poll_question; // WPCS: XSS ok. ?></h2>
26
 
27
  <?php } ?>
28
 
29
  <?php if ( ! empty( $poll_description ) ) { ?>
30
 
31
+ <p><?php echo $poll_description; // WPCS: XSS ok. ?></p>
32
 
33
  <?php } ?>
34
+ </div>
35
 
36
  </div>
37
 
41
 
42
  <?php if ( ! empty( $custom_votes ) && count( $custom_votes ) > 0 ) { ?>
43
 
44
+ <?php
45
+ foreach ( $custom_votes as $element_id => $custom_vote ) {
46
 
47
  echo '<div style="margin-top: 30px;">';
48
 
49
+ echo '<label class="sui-label">' . $this->get_field_title( $element_id ) . '</label>'; // phpcs:ignore
50
 
51
  echo '<div style="margin-top: 10px;">';
52
 
53
+ foreach ( $custom_vote as $answer => $vote ) {
54
+ echo '<span class="sui-tag">' . /* translators: ... */ esc_html( sprintf( _n( '%1$s (%2$s) vote', '%1$s (%2$s) votes', $vote, Forminator::DOMAIN ), $answer, $vote ) ) . '</span>';
55
+ }
56
 
57
  echo '</div>';
58
 
59
  echo '</div>';
60
 
61
+ }
62
+ ?>
63
 
64
  <?php } ?>
65
 
69
 
70
  <div class="sui-actions-right">
71
 
72
+ <button
73
+ type="button"
74
+ class="sui-button sui-button-ghost wpmudev-open-modal"
75
+ data-modal="delete-poll-submission"
76
+ data-modal-title="<?php esc_attr_e( 'Delete Submissions', Forminator::DOMAIN ); ?>"
77
+ data-modal-content="<?php esc_attr_e( 'Are you sure you wish to delete the submissions on this poll?', Forminator::DOMAIN ); ?>"
78
+ data-form-id="<?php echo esc_attr( $this->form_id ); ?>"
79
+ data-nonce="<?php echo esc_attr( wp_create_nonce( 'forminatorPollEntries' ) ); ?>"
80
+ >
81
+ <i class="sui-icon-trash" aria-hidden="true"></i> <?php esc_html_e( 'Delete Submissions', Forminator::DOMAIN ); ?>
82
+ </button>
83
 
84
  </div>
85
 
90
  <?php else : ?>
91
 
92
  <div class="sui-box sui-message">
93
+ <?php
94
+ $form_id = $this->form_id;
95
+ include_once forminator_plugin_dir() . 'admin/views/poll/entries/content-none.php';
96
+ ?>
97
  </div>
98
 
99
+ <?php
100
  endif;
admin/views/poll/entries/header.php CHANGED
@@ -1,9 +1,9 @@
1
- <h1 class="sui-header-title"><?php esc_html_e( "Submissions", Forminator::DOMAIN ); ?></h1>
2
 
3
  <div class="sui-actions-right">
4
  <?php if ( forminator_is_show_documentation_link() ) : ?>
5
  <a href="https://premium.wpmudev.org/docs/wpmu-dev-plugins/forminator/#polls" target="_blank" class="sui-button sui-button-ghost">
6
- <i class="sui-icon-academy"></i> <?php esc_html_e( "View Documentation", Forminator::DOMAIN ); ?>
7
  </a>
8
  <?php endif; ?>
9
  </div>
1
+ <h1 class="sui-header-title"><?php esc_html_e( 'Submissions', Forminator::DOMAIN ); ?></h1>
2
 
3
  <div class="sui-actions-right">
4
  <?php if ( forminator_is_show_documentation_link() ) : ?>
5
  <a href="https://premium.wpmudev.org/docs/wpmu-dev-plugins/forminator/#polls" target="_blank" class="sui-button sui-button-ghost">
6
+ <i class="sui-icon-academy"></i> <?php esc_html_e( 'View Documentation', Forminator::DOMAIN ); ?>
7
  </a>
8
  <?php endif; ?>
9
  </div>
admin/views/poll/list/content.php CHANGED
@@ -6,14 +6,14 @@ $image_empty = forminator_plugin_url() . 'assets/images/forminator-empty-messa
6
  $image_empty2x = forminator_plugin_url() . 'assets/images/forminator-empty-message@2x.png';
7
 
8
  // Count total forms
9
- $count = $this->countModules();
10
  $count_active = $this->countModules( 'publish' );
11
 
12
  // available bulk actions
13
  $bulk_actions = $this->bulk_actions();
14
 
15
  // Start date for retrieving the information of the last 30 days in sql format
16
- $sql_month_start_date = date( 'Y-m-d H:i:s', strtotime( '-30 days midnight' ) );
17
 
18
  // Count total entries from last 30 days
19
  $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_entry_ids( 'poll', $sql_month_start_date ) );
@@ -31,9 +31,9 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
31
 
32
  <span class="sui-summary-large"><?php echo esc_html( $count_active ); ?></span>
33
  <?php if ( $count_active > 1 ) { ?>
34
- <span class="sui-summary-sub"><?php esc_html_e( "Active Polls", Forminator::DOMAIN ); ?></span>
35
  <?php } else { ?>
36
- <span class="sui-summary-sub"><?php esc_html_e( "Active Poll", Forminator::DOMAIN ); ?></span>
37
  <?php } ?>
38
 
39
  </div>
@@ -46,7 +46,7 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
46
 
47
  <li>
48
  <span class="sui-list-label"><?php esc_html_e( 'Last Submission', Forminator::DOMAIN ); ?></span>
49
- <span class="sui-list-detail"><?php echo forminator_get_latest_entry_time( 'poll' ); // WPCS: XSS ok. ?></span>
50
  </li>
51
 
52
  <li>
@@ -65,7 +65,7 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
65
 
66
  <div class="fui-pagination-mobile sui-pagination-wrap">
67
 
68
- <span class="sui-pagination-results"><?php echo esc_html( sprintf( _n( '%s result', '%s results', $count, Forminator::DOMAIN ), $count ) ); ?></span>
69
 
70
  <?php $this->pagination(); ?>
71
 
@@ -106,7 +106,7 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
106
  <div class="sui-search-right">
107
 
108
  <div class="sui-pagination-wrap">
109
- <span class="sui-pagination-results"><?php echo esc_html( sprintf( _n( '%s result', '%s results', $count, Forminator::DOMAIN ), $count ) ); ?></span>
110
  <?php $this->pagination(); ?>
111
  </div>
112
 
@@ -123,9 +123,9 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
123
 
124
  <?php
125
  foreach ( $this->getModules() as $module ) {
126
- $module_entries_from_last_month = 0 !== $module["entries"] ? count( Forminator_Form_Entry_Model::get_newer_entry_ids_of_form_id( $module['id'], $sql_month_start_date ) ) : 0;
127
- $opened_class = '';
128
- $opened_chart = '';
129
 
130
  if( isset( $_GET['view-stats'] ) && intval( $_GET['view-stats'] ) === intval( $module['id'] ) ) { // phpcs:ignore
131
  $opened_class = ' sui-accordion-item--open forminator-scroll-to';
@@ -145,23 +145,27 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
145
  <span class="sui-screen-reader-text"><?php esc_html_e( 'Select this poll', Forminator::DOMAIN ); ?></span>
146
  </label>
147
 
148
- <span class="sui-trim-text"><?php echo forminator_get_form_name( $module['id'], 'poll'); // WPCS: XSS ok. ?></span>
149
 
150
- <?php if ( 'publish' === $module['status'] ) {
 
151
  echo '<span class="sui-tag sui-tag-blue">' . esc_html__( 'Published', Forminator::DOMAIN ) . '</span>';
152
- } ?>
 
153
 
154
- <?php if ( 'draft' === $module['status'] ) {
 
155
  echo '<span class="sui-tag">' . esc_html__( 'Draft', Forminator::DOMAIN ) . '</span>';
156
- } ?>
 
157
 
158
  </div>
159
 
160
- <div class="sui-accordion-item-date"><strong><?php esc_html_e( 'Last Submission', Forminator::DOMAIN ); ?></strong> <?php echo esc_html( $module["last_entry_time"] ); ?></div>
161
 
162
  <div class="sui-accordion-col-auto">
163
 
164
- <a href="<?php echo admin_url( 'admin.php?page=forminator-poll-wizard&id=' . $module['id'] ); // WPCS: XSS ok. ?>"
165
  class="sui-button sui-button-ghost sui-accordion-item-action">
166
  <i class="sui-icon-pencil" aria-hidden="true"></i> <?php esc_html_e( 'Edit', Forminator::DOMAIN ); ?>
167
  </a>
@@ -178,14 +182,14 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
178
  <li><a href="#"
179
  class="wpmudev-open-modal"
180
  data-modal="preview_polls"
181
- data-modal-title="<?php echo sprintf( "%s - %s", __( "Preview Poll", Forminator::DOMAIN ), forminator_get_form_name( $module['id'], 'poll' ) ); // WPCS: XSS ok. ?>"
182
  data-form-id="<?php echo esc_attr( $module['id'] ); ?>"
183
- data-nonce="<?php echo wp_create_nonce( 'forminator_popup_preview_polls' ); // WPCS: XSS ok. ?>">
184
- <i class="sui-icon-eye" aria-hidden="true"></i> <?php esc_html_e( "Preview", Forminator::DOMAIN ); ?>
185
  </a></li>
186
 
187
  <li>
188
- <button class="copy-clipboard" data-shortcode='[forminator_poll id="<?php echo esc_attr( $module['id'] ); ?>"]'><i class="sui-icon-code" aria-hidden="true"></i> <?php esc_html_e( "Copy Shortcode", Forminator::DOMAIN ); ?></button>
189
  </li>
190
 
191
  <li>
@@ -195,7 +199,7 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
195
 
196
  <?php if ( Forminator_Poll_Form_Model::STATUS_PUBLISH === $module['status'] ) : ?>
197
  <input type="hidden" name="status" value="draft"/>
198
- <?php elseif ( Forminator_Poll_Form_Model::STATUS_DRAFT === $module['status'] ): ?>
199
  <input type="hidden" name="status" value="publish"/>
200
  <?php endif; ?>
201
 
@@ -204,7 +208,7 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
204
 
205
  <?php if ( Forminator_Poll_Form_Model::STATUS_PUBLISH === $module['status'] ) : ?>
206
  <i class="sui-icon-unpublish" aria-hidden="true"></i> <?php esc_html_e( 'Unpublish', Forminator::DOMAIN ); ?>
207
- <?php elseif ( Forminator_Poll_Form_Model::STATUS_DRAFT === $module['status'] ): ?>
208
  <i class="sui-icon-upload-cloud" aria-hidden="true"></i> <?php esc_html_e( 'Publish', Forminator::DOMAIN ); ?>
209
  <?php endif; ?>
210
 
@@ -212,20 +216,20 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
212
  </form>
213
  </li>
214
 
215
- <li><a href="<?php echo admin_url( 'admin.php?page=forminator-poll-view&form_id=' . $module['id'] ); // WPCS: XSS ok. ?>"><i class="sui-icon-community-people" aria-hidden="true"></i> <?php esc_html_e( 'View Submissions', Forminator::DOMAIN ); ?></a></li>
216
 
217
  <li><form method="post">
218
  <input type="hidden" name="forminator_action" value="clone">
219
  <input type="hidden" name="id" value="<?php echo esc_attr( $module['id'] ); ?>"/>
220
  <?php wp_nonce_field( 'forminatorPollFormRequest', 'forminatorNonce' ); ?>
221
- <button type="submit"><i class="sui-icon-page-multiple" aria-hidden="true"></i> <?php esc_html_e( "Duplicate", Forminator::DOMAIN ); ?></button>
222
  </form></li>
223
 
224
  <li><form method="post">
225
  <input type="hidden" name="forminator_action" value="reset-views">
226
  <input type="hidden" name="id" value="<?php echo esc_attr( $module['id'] ); ?>"/>
227
  <?php wp_nonce_field( 'forminatorPollFormRequest', 'forminatorNonce' ); ?>
228
- <button type="submit"><i class="sui-icon-update" aria-hidden="true"></i> <?php esc_html_e( "Reset Tracking data", Forminator::DOMAIN ); ?></button>
229
  </form></li>
230
 
231
  <?php if ( Forminator::is_import_export_feature_enabled() ) : ?>
@@ -248,7 +252,7 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
248
  data-modal-title="<?php esc_attr_e( 'Delete Poll', Forminator::DOMAIN ); ?>"
249
  data-modal-content="<?php esc_attr_e( 'Are you sure you wish to permanently delete this poll?', Forminator::DOMAIN ); ?>"
250
  data-form-id="<?php echo esc_attr( $module['id'] ); ?>"
251
- data-nonce="<?php echo wp_create_nonce( 'forminatorPollFormRequest' ); // WPCS: XSS ok. ?>"
252
  >
253
  <i class="sui-icon-trash" aria-hidden="true"></i> <?php esc_html_e( 'Delete', Forminator::DOMAIN ); ?>
254
  </button>
@@ -270,33 +274,33 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
270
 
271
  <li data-col="large">
272
  <strong><?php esc_html_e( 'Last Submission', Forminator::DOMAIN ); ?></strong>
273
- <span><?php echo esc_html( $module["last_entry_time"] ); ?></span>
274
  </li>
275
 
276
  <li data-col="small">
277
  <strong><?php esc_html_e( 'Views', Forminator::DOMAIN ); ?></strong>
278
- <span><?php echo esc_html( $module["views"] ); ?></span>
279
  </li>
280
 
281
  <li>
282
  <strong><?php esc_html_e( 'Submissions', Forminator::DOMAIN ); ?></strong>
283
- <a href="<?php echo admin_url( 'admin.php?page=forminator-poll-view&form_id=' . $module['id'] ); // WPCS: XSS ok. ?>"><?php echo esc_html( $module["entries"] ); ?></a>
284
  </li>
285
 
286
  <li>
287
  <strong><?php esc_html_e( 'Conversion Rate', Forminator::DOMAIN ); ?></strong>
288
- <span><?php echo $this->getRate( $module ); // WPCS: XSS ok. ?>%</span>
289
  </li>
290
 
291
  </ul>
292
 
293
- <div class="sui-chartjs sui-chartjs-animated<?php echo esc_attr( $opened_chart ); ?>" data-chart-id="<?php echo $module['id']; // WPCS: XSS ok. ?>">
294
 
295
  <div class="sui-chartjs-message sui-chartjs-message--loading">
296
  <p><i class="sui-icon-loader sui-loading" aria-hidden="true"></i> <?php esc_html_e( 'Loading data...', Forminator::DOMAIN ); ?></p>
297
  </div>
298
 
299
- <?php if ( 0 === $module["entries"] ) { ?>
300
 
301
  <div class="sui-chartjs-message sui-chartjs-message--empty">
302
  <p><i class="sui-icon-info" aria-hidden="true"></i> <?php esc_html_e( "Your poll doesn't have any submission yet. Try again in a moment.", Forminator::DOMAIN ); ?></p>
@@ -316,8 +320,8 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
316
 
317
  <div class="sui-chartjs-canvas">
318
 
319
- <?php if ( ( 0 !== $module["entries"] ) || ( 0 !== $module_entries_from_last_month ) ) { ?>
320
- <canvas id="forminator-poll-<?php echo $module['id']; // WPCS: XSS ok. ?>-stats"></canvas>
321
  <?php } ?>
322
 
323
  </div>
@@ -336,12 +340,12 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
336
 
337
  <div class="sui-box sui-message">
338
 
339
- <?php if ( forminator_is_show_branding() ): ?>
340
- <img src="<?php echo $image_empty; // WPCS: XSS ok. ?>"
341
- srcset="<?php echo $image_empty2x; // WPCS: XSS ok. ?> 1x, <?php echo $image_empty2x; // WPCS: XSS ok. ?> 2x"
342
- alt="<?php esc_html_e( 'Empty polls', Forminator::DOMAIN ); ?>"
343
- class="sui-image"
344
- aria-hidden="true"/>
345
  <?php endif; ?>
346
 
347
  <div class="sui-message-content">
@@ -375,24 +379,24 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
375
  <?php } ?>
376
 
377
  <?php
378
- $days_array = array();
379
  $default_array = array();
380
 
381
  for ( $h = 30; $h >= 0; $h-- ) {
382
- $time = strtotime( '-' . $h . ' days' );
383
- $date = date( 'Y-m-d', $time );
384
  $default_array[ $date ] = 0;
385
- $days_array[] = date( 'M j, Y', $time );
386
  }
387
 
388
  foreach ( $this->getModules() as $module ) {
389
 
390
- if ( 0 === $module["entries"] ) {
391
  $submissions_data = $default_array;
392
  } else {
393
- $submissions = Forminator_Form_Entry_Model::get_form_latest_entries_count_grouped_by_day( $module['id'], $sql_month_start_date );
394
  $submissions_array = wp_list_pluck( $submissions, 'entries_amount', 'date_created' );
395
- $submissions_data = array_merge( $default_array, array_intersect_key( $submissions_array, $default_array ) );
396
  }
397
 
398
  // Get highest value
@@ -404,10 +408,10 @@ foreach ( $this->getModules() as $module ) {
404
 
405
  <script>
406
 
407
- var ctx = document.getElementById( 'forminator-poll-<?php echo $module['id']; // WPCS: XSS ok. ?>-stats' );
408
 
409
- var monthDays = [ '<?php echo implode( "', '", $days_array ); // WPCS: XSS ok. ?>' ],
410
- submissions = [ <?php echo implode( ', ', $submissions_data ); // WPCS: XSS ok. ?> ];
411
 
412
  var chartData = {
413
  labels: monthDays,
@@ -476,10 +480,10 @@ foreach ( $this->getModules() as $module ) {
476
  return tooltipItem.xLabel;
477
  },
478
  // Set label text color
479
- labelTextColor:function( tooltipItem, chart ){
480
- return '#AAAAAA';
481
- }
482
- }
483
  },
484
  plugins: {
485
  datalabels: {
6
  $image_empty2x = forminator_plugin_url() . 'assets/images/forminator-empty-message@2x.png';
7
 
8
  // Count total forms
9
+ $count = $this->countModules();
10
  $count_active = $this->countModules( 'publish' );
11
 
12
  // available bulk actions
13
  $bulk_actions = $this->bulk_actions();
14
 
15
  // Start date for retrieving the information of the last 30 days in sql format
16
+ $sql_month_start_date = date( 'Y-m-d H:i:s', strtotime( '-30 days midnight' ) );// phpcs:ignore
17
 
18
  // Count total entries from last 30 days
19
  $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_entry_ids( 'poll', $sql_month_start_date ) );
31
 
32
  <span class="sui-summary-large"><?php echo esc_html( $count_active ); ?></span>
33
  <?php if ( $count_active > 1 ) { ?>
34
+ <span class="sui-summary-sub"><?php esc_html_e( 'Active Polls', Forminator::DOMAIN ); ?></span>
35
  <?php } else { ?>
36
+ <span class="sui-summary-sub"><?php esc_html_e( 'Active Poll', Forminator::DOMAIN ); ?></span>
37
  <?php } ?>
38
 
39
  </div>
46
 
47
  <li>
48
  <span class="sui-list-label"><?php esc_html_e( 'Last Submission', Forminator::DOMAIN ); ?></span>
49
+ <span class="sui-list-detail"><?php echo forminator_get_latest_entry_time( 'poll' ); // phpcs:ignore ?></span>
50
  </li>
51
 
52
  <li>
65
 
66
  <div class="fui-pagination-mobile sui-pagination-wrap">
67
 
68
+ <span class="sui-pagination-results"><?php echo /* translators: ... */ esc_html( sprintf( _n( '%s result', '%s results', $count, Forminator::DOMAIN ), $count ) ); ?></span>
69
 
70
  <?php $this->pagination(); ?>
71
 
106
  <div class="sui-search-right">
107
 
108
  <div class="sui-pagination-wrap">
109
+ <span class="sui-pagination-results"><?php /* translators: ... */ echo esc_html( sprintf( _n( '%s result', '%s results', $count, Forminator::DOMAIN ), $count ) ); ?></span>
110
  <?php $this->pagination(); ?>
111
  </div>
112
 
123
 
124
  <?php
125
  foreach ( $this->getModules() as $module ) {
126
+ $module_entries_from_last_month = 0 !== $module['entries'] ? count( Forminator_Form_Entry_Model::get_newer_entry_ids_of_form_id( $module['id'], $sql_month_start_date ) ) : 0;
127
+ $opened_class = '';
128
+ $opened_chart = '';
129
 
130
  if( isset( $_GET['view-stats'] ) && intval( $_GET['view-stats'] ) === intval( $module['id'] ) ) { // phpcs:ignore
131
  $opened_class = ' sui-accordion-item--open forminator-scroll-to';
145
  <span class="sui-screen-reader-text"><?php esc_html_e( 'Select this poll', Forminator::DOMAIN ); ?></span>
146
  </label>
147
 
148
+ <span class="sui-trim-text"><?php echo forminator_get_form_name( $module['id'], 'poll' ); // phpcs:ignore ?></span>
149
 
150
+ <?php
151
+ if ( 'publish' === $module['status'] ) {
152
  echo '<span class="sui-tag sui-tag-blue">' . esc_html__( 'Published', Forminator::DOMAIN ) . '</span>';
153
+ }
154
+ ?>
155
 
156
+ <?php
157
+ if ( 'draft' === $module['status'] ) {
158
  echo '<span class="sui-tag">' . esc_html__( 'Draft', Forminator::DOMAIN ) . '</span>';
159
+ }
160
+ ?>
161
 
162
  </div>
163
 
164
+ <div class="sui-accordion-item-date"><strong><?php esc_html_e( 'Last Submission', Forminator::DOMAIN ); ?></strong> <?php echo esc_html( $module['last_entry_time'] ); ?></div>
165
 
166
  <div class="sui-accordion-col-auto">
167
 
168
+ <a href="<?php echo admin_url( 'admin.php?page=forminator-poll-wizard&id=' . $module['id'] ); //phpcs:ignore ?>"
169
  class="sui-button sui-button-ghost sui-accordion-item-action">
170
  <i class="sui-icon-pencil" aria-hidden="true"></i> <?php esc_html_e( 'Edit', Forminator::DOMAIN ); ?>
171
  </a>
182
  <li><a href="#"
183
  class="wpmudev-open-modal"
184
  data-modal="preview_polls"
185
+ data-modal-title="<?php /* translators: ... */ echo sprintf( '%s - %s', __( 'Preview Poll', Forminator::DOMAIN ), forminator_get_form_name( $module['id'], 'poll' ) ); // phpcs:ignore ?>"
186
  data-form-id="<?php echo esc_attr( $module['id'] ); ?>"
187
+ data-nonce="<?php echo esc_attr( wp_create_nonce( 'forminator_popup_preview_polls' ) ); ?>">
188
+ <i class="sui-icon-eye" aria-hidden="true"></i> <?php esc_html_e( 'Preview', Forminator::DOMAIN ); ?>
189
  </a></li>
190
 
191
  <li>
192
+ <button class="copy-clipboard" data-shortcode='[forminator_poll id="<?php echo esc_attr( $module['id'] ); ?>"]'><i class="sui-icon-code" aria-hidden="true"></i> <?php esc_html_e( 'Copy Shortcode', Forminator::DOMAIN ); ?></button>
193
  </li>
194
 
195
  <li>
199
 
200
  <?php if ( Forminator_Poll_Form_Model::STATUS_PUBLISH === $module['status'] ) : ?>
201
  <input type="hidden" name="status" value="draft"/>
202
+ <?php elseif ( Forminator_Poll_Form_Model::STATUS_DRAFT === $module['status'] ) : ?>
203
  <input type="hidden" name="status" value="publish"/>
204
  <?php endif; ?>
205
 
208
 
209
  <?php if ( Forminator_Poll_Form_Model::STATUS_PUBLISH === $module['status'] ) : ?>
210
  <i class="sui-icon-unpublish" aria-hidden="true"></i> <?php esc_html_e( 'Unpublish', Forminator::DOMAIN ); ?>
211
+ <?php elseif ( Forminator_Poll_Form_Model::STATUS_DRAFT === $module['status'] ) : ?>
212
  <i class="sui-icon-upload-cloud" aria-hidden="true"></i> <?php esc_html_e( 'Publish', Forminator::DOMAIN ); ?>
213
  <?php endif; ?>
214
 
216
  </form>
217
  </li>
218
 
219
+ <li><a href="<?php echo admin_url( 'admin.php?page=forminator-poll-view&form_id=' . $module['id'] ); // phpcs:ignore ?>"><i class="sui-icon-community-people" aria-hidden="true"></i> <?php esc_html_e( 'View Submissions', Forminator::DOMAIN ); ?></a></li>
220
 
221
  <li><form method="post">
222
  <input type="hidden" name="forminator_action" value="clone">
223
  <input type="hidden" name="id" value="<?php echo esc_attr( $module['id'] ); ?>"/>
224
  <?php wp_nonce_field( 'forminatorPollFormRequest', 'forminatorNonce' ); ?>
225
+ <button type="submit"><i class="sui-icon-page-multiple" aria-hidden="true"></i> <?php esc_html_e( 'Duplicate', Forminator::DOMAIN ); ?></button>
226
  </form></li>
227
 
228
  <li><form method="post">
229
  <input type="hidden" name="forminator_action" value="reset-views">
230
  <input type="hidden" name="id" value="<?php echo esc_attr( $module['id'] ); ?>"/>
231
  <?php wp_nonce_field( 'forminatorPollFormRequest', 'forminatorNonce' ); ?>
232
+ <button type="submit"><i class="sui-icon-update" aria-hidden="true"></i> <?php esc_html_e( 'Reset Tracking data', Forminator::DOMAIN ); ?></button>
233
  </form></li>
234
 
235
  <?php if ( Forminator::is_import_export_feature_enabled() ) : ?>
252
  data-modal-title="<?php esc_attr_e( 'Delete Poll', Forminator::DOMAIN ); ?>"
253
  data-modal-content="<?php esc_attr_e( 'Are you sure you wish to permanently delete this poll?', Forminator::DOMAIN ); ?>"
254
  data-form-id="<?php echo esc_attr( $module['id'] ); ?>"
255
+ data-nonce="<?php echo esc_attr( wp_create_nonce( 'forminatorPollFormRequest' ) ); ?>"
256
  >
257
  <i class="sui-icon-trash" aria-hidden="true"></i> <?php esc_html_e( 'Delete', Forminator::DOMAIN ); ?>
258
  </button>
274
 
275
  <li data-col="large">
276
  <strong><?php esc_html_e( 'Last Submission', Forminator::DOMAIN ); ?></strong>
277
+ <span><?php echo esc_html( $module['last_entry_time'] ); ?></span>
278
  </li>
279
 
280
  <li data-col="small">
281
  <strong><?php esc_html_e( 'Views', Forminator::DOMAIN ); ?></strong>
282
+ <span><?php echo esc_html( $module['views'] ); ?></span>
283
  </li>
284
 
285
  <li>
286
  <strong><?php esc_html_e( 'Submissions', Forminator::DOMAIN ); ?></strong>
287
+ <a href="<?php echo admin_url( 'admin.php?page=forminator-poll-view&form_id=' . $module['id'] ); // phpcs:ignore ?>"><?php echo esc_html( $module['entries'] ); ?></a>
288
  </li>
289
 
290
  <li>
291
  <strong><?php esc_html_e( 'Conversion Rate', Forminator::DOMAIN ); ?></strong>
292
+ <span><?php echo $this->getRate( $module ); // phpcs:ignore ?>%</span>
293
  </li>
294
 
295
  </ul>
296
 
297
+ <div class="sui-chartjs sui-chartjs-animated<?php echo esc_attr( $opened_chart ); ?>" data-chart-id="<?php echo esc_attr( $module['id'] ); ?>">
298
 
299
  <div class="sui-chartjs-message sui-chartjs-message--loading">
300
  <p><i class="sui-icon-loader sui-loading" aria-hidden="true"></i> <?php esc_html_e( 'Loading data...', Forminator::DOMAIN ); ?></p>
301
  </div>
302
 
303
+ <?php if ( 0 === $module['entries'] ) { ?>
304
 
305
  <div class="sui-chartjs-message sui-chartjs-message--empty">
306
  <p><i class="sui-icon-info" aria-hidden="true"></i> <?php esc_html_e( "Your poll doesn't have any submission yet. Try again in a moment.", Forminator::DOMAIN ); ?></p>
320
 
321
  <div class="sui-chartjs-canvas">
322
 
323
+ <?php if ( ( 0 !== $module['entries'] ) || ( 0 !== $module_entries_from_last_month ) ) { ?>
324
+ <canvas id="forminator-poll-<?php echo $module['id']; // phpcs:ignore ?>-stats"></canvas>
325
  <?php } ?>
326
 
327
  </div>
340
 
341
  <div class="sui-box sui-message">
342
 
343
+ <?php if ( forminator_is_show_branding() ) : ?>
344
+ <img src="<?php echo $image_empty; // phpcs:ignore ?>"
345
+ srcset="<?php echo $image_empty2x; // phpcs:ignore ?> 1x, <?php echo $image_empty2x; // phpcs:ignore ?> 2x"
346
+ alt="<?php esc_html_e( 'Empty polls', Forminator::DOMAIN ); ?>"
347
+ class="sui-image"
348
+ aria-hidden="true"/>
349
  <?php endif; ?>
350
 
351
  <div class="sui-message-content">
379
  <?php } ?>
380
 
381
  <?php
382
+ $days_array = array();
383
  $default_array = array();
384
 
385
  for ( $h = 30; $h >= 0; $h-- ) {
386
+ $time = strtotime( '-' . $h . ' days' );
387
+ $date = date( 'Y-m-d', $time );//phpcs:ignore
388
  $default_array[ $date ] = 0;
389
+ $days_array[] = date( 'M j, Y', $time );//phpcs:ignore
390
  }
391
 
392
  foreach ( $this->getModules() as $module ) {
393
 
394
+ if ( 0 === $module['entries'] ) {
395
  $submissions_data = $default_array;
396
  } else {
397
+ $submissions = Forminator_Form_Entry_Model::get_form_latest_entries_count_grouped_by_day( $module['id'], $sql_month_start_date );
398
  $submissions_array = wp_list_pluck( $submissions, 'entries_amount', 'date_created' );
399
+ $submissions_data = array_merge( $default_array, array_intersect_key( $submissions_array, $default_array ) );
400
  }
401
 
402
  // Get highest value
408
 
409
  <script>
410
 
411
+ var ctx = document.getElementById( 'forminator-poll-<?php echo $module['id']; // phpcs:ignore ?>-stats' );
412
 
413
+ var monthDays = [ '<?php echo implode( "', '", $days_array ); // phpcs:ignore ?>' ],
414
+ submissions = [ <?php echo implode( ', ', $submissions_data ); // phpcs:ignore ?> ];
415
 
416
  var chartData = {
417
  labels: monthDays,
480
  return tooltipItem.xLabel;
481
  },
482
  // Set label text color
483
+ labelTextColor:function( tooltipItem, chart ){
484
+ return '#AAAAAA';
485
+ }
486
+ }
487
  },
488
  plugins: {
489
  datalabels: {
admin/views/poll/list/header.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php $count = $this->countModules(); ?>
2
 
3
- <h1 class="sui-header-title"><?php esc_html_e( "Polls", Forminator::DOMAIN ); ?></h1>
4
 
5
  <div class="sui-actions-left">
6
 
@@ -23,7 +23,7 @@
23
  <div class="sui-actions-right">
24
  <?php if ( forminator_is_show_documentation_link() ) : ?>
25
  <a href="https://premium.wpmudev.org/docs/wpmu-dev-plugins/forminator/#polls" target="_blank" class="sui-button sui-button-ghost">
26
- <i class="sui-icon-academy"></i> <?php esc_html_e( "View Documentation", Forminator::DOMAIN ); ?>
27
  </a>
28
  <?php endif; ?>
29
  </div>
1
  <?php $count = $this->countModules(); ?>
2
 
3
+ <h1 class="sui-header-title"><?php esc_html_e( 'Polls', Forminator::DOMAIN ); ?></h1>
4
 
5
  <div class="sui-actions-left">
6
 
23
  <div class="sui-actions-right">
24
  <?php if ( forminator_is_show_documentation_link() ) : ?>
25
  <a href="https://premium.wpmudev.org/docs/wpmu-dev-plugins/forminator/#polls" target="_blank" class="sui-button sui-button-ghost">
26
+ <i class="sui-icon-academy"></i> <?php esc_html_e( 'View Documentation', Forminator::DOMAIN ); ?>
27
  </a>
28
  <?php endif; ?>
29
  </div>
admin/views/poll/popup/export.php CHANGED
@@ -1,5 +1,5 @@
1
  <?php
2
- $form_id = $_POST['id'];// WPCS: CSRF ok. varified on admin ajax
3
  $nonce = wp_create_nonce( 'forminatorPollFormRequest' );
4
 
5
  $exportable = array();
@@ -7,7 +7,7 @@ $model = Forminator_Poll_Form_Model::model()->load( $form_id );
7
  if ( $model instanceof Forminator_Poll_Form_Model ) {
8
  $exportable = $model->to_exportable_data();
9
  }
10
- $text_area_id = uniqid('export-text-');
11
  ?>
12
 
13
  <div class="sui-box-body wpmudev-popup-form">
@@ -19,7 +19,8 @@ $text_area_id = uniqid('export-text-');
19
 
20
  <div class="sui-notice sui-notice-info">
21
  <p>
22
- <?php echo(
 
23
  sprintf(
24
  __( 'You can import this %1$s in Forminator %2$s%3$s%4$s or above. The %5$s may break on a version lower than your install.', Forminator::DOMAIN ), //phpcs:ignore
25
  __( 'Poll', Forminator::DOMAIN ),//phpcs:ignore
@@ -28,7 +29,8 @@ $text_area_id = uniqid('export-text-');
28
  '</strong>',
29
  __( 'Poll', Forminator::DOMAIN )
30
  )
31
- ); ?>
 
32
  </p>
33
  </div>
34
 
1
  <?php
2
+ $form_id = $_POST['id'];// phpcs:ignore -- varified on admin ajax
3
  $nonce = wp_create_nonce( 'forminatorPollFormRequest' );
4
 
5
  $exportable = array();
7
  if ( $model instanceof Forminator_Poll_Form_Model ) {
8
  $exportable = $model->to_exportable_data();
9
  }
10
+ $text_area_id = uniqid( 'export-text-' );
11
  ?>
12
 
13
  <div class="sui-box-body wpmudev-popup-form">
19
 
20
  <div class="sui-notice sui-notice-info">
21
  <p>
22
+ <?php
23
+ echo(
24
  sprintf(
25
  __( 'You can import this %1$s in Forminator %2$s%3$s%4$s or above. The %5$s may break on a version lower than your install.', Forminator::DOMAIN ), //phpcs:ignore
26
  __( 'Poll', Forminator::DOMAIN ),//phpcs:ignore
29
  '</strong>',
30
  __( 'Poll', Forminator::DOMAIN )
31
  )
32
+ );
33
+ ?>
34
  </p>
35
  </div>
36
 
admin/views/poll/wizard/header.php CHANGED
@@ -0,0 +1 @@
 
1
+ <?php // phpcs:ignore
admin/views/quiz/entries/content.php CHANGED
@@ -36,11 +36,15 @@ $total_page = ceil( $count / $entries_per_page );
36
  <div class="sui-pagination-wrap">
37
 
38
  <span class="sui-pagination-results">
39
- <?php if ( 1 === $count ) {
 
 
40
  printf( esc_html__( '%s result', Forminator::DOMAIN ), esc_html( $count ) );
41
  } else {
 
42
  printf( esc_html__( '%s results', Forminator::DOMAIN ), esc_html( $count ) );
43
- } // phpcs:ignore ?>
 
44
  </span>
45
 
46
  <?php $this->paginate(); ?>
@@ -61,10 +65,10 @@ $total_page = ceil( $count / $entries_per_page );
61
  <label class="sui-checkbox">
62
  <input id="wpf-cform-check_all" type="checkbox">
63
  <span></span>
64
- <div class="sui-description"><?php esc_html_e( "ID", Forminator::DOMAIN ); ?></div>
65
  </label>
66
  </th>
67
- <th colspan="5"><?php esc_html_e( "Date Submitted", Forminator::DOMAIN ); ?></th>
68
  </tr>
69
 
70
  </thead>
@@ -92,7 +96,7 @@ $total_page = ceil( $count / $entries_per_page );
92
  </td>
93
 
94
  <td colspan="5">
95
- <?php echo date( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), strtotime( $entry->date_created_sql ) ); // WPCS: XSS ok. ?>
96
  <span class="sui-accordion-open-indicator">
97
  <i class="sui-icon-chevron-down"></i>
98
  </span>
@@ -109,7 +113,7 @@ $total_page = ceil( $count / $entries_per_page );
109
  <div class="sui-box-body">
110
 
111
  <h2>
112
- <?php echo forminator_get_form_name( $this->form_id, 'quiz' ); // WPCS: XSS ok. ?>
113
  </h2>
114
 
115
  <?php if ( 'knowledge' === $form_type ) { ?>
@@ -126,9 +130,9 @@ $total_page = ceil( $count / $entries_per_page );
126
 
127
  <tr>
128
 
129
- <th><?php esc_html_e( "Question", Forminator::DOMAIN ); ?></th>
130
 
131
- <th><?php esc_html_e( "Answer", Forminator::DOMAIN ); ?></th>
132
 
133
  </tr>
134
 
@@ -155,11 +159,11 @@ $total_page = ceil( $count / $entries_per_page );
155
  <?php
156
  if ( $answer['isCorrect'] ) {
157
 
158
- echo '<span class="sui-tag sui-tag-success">' . $user_answer . '</span>'; // WPCS: XSS ok.
159
 
160
  } else {
161
 
162
- echo '<span class="sui-tag sui-tag-error">' . $user_answer . '</span>'; // WPCS: XSS ok.
163
 
164
  }
165
  ?>
@@ -173,7 +177,7 @@ $total_page = ceil( $count / $entries_per_page );
173
  <?php if ( ! empty( $integrations_data ) ) : ?>
174
  <?php foreach ( $integrations_data as $integrations_datum ) : ?>
175
  <tr>
176
- <td><?php echo $integrations_datum['label']; // wpcs xss ok. html output intended ?></td>
177
  <td>
178
  <?php
179
  $sub_entries = isset( $integrations_datum['sub_entries'] ) ? $integrations_datum['sub_entries'] : array();
@@ -182,11 +186,11 @@ $total_page = ceil( $count / $entries_per_page );
182
  <?php foreach ( $sub_entries as $sub_entry ) : ?>
183
  <div class="">
184
  <span class="sui-settings-label"><?php echo esc_html( $sub_entry['label'] ); ?></span>
185
- <span class="sui-description"><?php echo( $sub_entry['value'] ); // wpcs xss ok. html output intended ?></span>
186
  </div>
187
  <?php endforeach; ?>
188
- <?php else: ?>
189
- <?php echo( $integrations_datum['value'] ); // wpcs xss ok. html output intended ?>
190
  <?php endif; ?>
191
  </td>
192
  </tr>
@@ -216,9 +220,9 @@ $total_page = ceil( $count / $entries_per_page );
216
 
217
  <tr>
218
 
219
- <th><?php esc_html_e( "Question", Forminator::DOMAIN ); ?></th>
220
 
221
- <th><?php esc_html_e( "Answer", Forminator::DOMAIN ); ?></th>
222
 
223
  </tr>
224
 
@@ -230,9 +234,9 @@ $total_page = ceil( $count / $entries_per_page );
230
 
231
  <tr>
232
 
233
- <td><?php echo $answer['question']; // WPCS: XSS ok. ?></td>
234
 
235
- <td><?php echo $answer['answer']; // WPCS: XSS ok. ?></td>
236
 
237
  </tr>
238
 
@@ -242,7 +246,7 @@ $total_page = ceil( $count / $entries_per_page );
242
  <?php if ( ! empty( $integrations_data ) ) : ?>
243
  <?php foreach ( $integrations_data as $integrations_datum ) : ?>
244
  <tr>
245
- <td><?php echo $integrations_datum['label']; // wpcs xss ok. html output intended ?></td>
246
  <td>
247
  <?php
248
  $sub_entries = isset( $integrations_datum['sub_entries'] ) ? $integrations_datum['sub_entries'] : array();
@@ -251,11 +255,11 @@ $total_page = ceil( $count / $entries_per_page );
251
  <?php foreach ( $sub_entries as $sub_entry ) : ?>
252
  <div class="">
253
  <span class="sui-settings-label"><?php echo esc_html( $sub_entry['label'] ); ?></span>
254
- <span class="sui-description"><?php echo( $sub_entry['value'] ); // wpcs xss ok. html output intended ?></span>
255
  </div>
256
  <?php endforeach; ?>
257
- <?php else: ?>
258
- <?php echo( $integrations_datum['value'] ); // wpcs xss ok. html output intended ?>
259
  <?php endif; ?>
260
  </td>
261
  </tr>
@@ -271,7 +275,7 @@ $total_page = ceil( $count / $entries_per_page );
271
 
272
  <div class="sui-box-footer">
273
 
274
- <p><?php printf( __( "<strong>Quiz Result:</strong> %s", Forminator::DOMAIN ), $meta['result']['title'] ); // WPCS: XSS ok. ?></p>
275
 
276
  </div>
277
 
@@ -310,11 +314,15 @@ $total_page = ceil( $count / $entries_per_page );
310
  <div class="sui-pagination-wrap">
311
 
312
  <span class="sui-pagination-results">
313
- <?php if ( 1 === $count ) {
 
 
314
  printf( esc_html__( '%s result', Forminator::DOMAIN ), esc_html( $count ) );
315
  } else {
 
316
  printf( esc_html__( '%s results', Forminator::DOMAIN ), esc_html( $count ) );
317
- } // phpcs:ignore ?>
 
318
  </span>
319
 
320
  <?php $this->paginate(); ?>
@@ -333,20 +341,20 @@ $total_page = ceil( $count / $entries_per_page );
333
 
334
  <div class="sui-box sui-message">
335
 
336
- <?php if ( forminator_is_show_branding() ): ?>
337
- <img src="<?php echo $plugin_path . 'assets/img/forminator-submissions.png'; // WPCS: XSS ok. ?>"
338
- srcset="<?php echo $plugin_path . 'assets/img/forminator-submissions.png'; // WPCS: XSS ok. ?> 1x,
339
- <?php echo $plugin_path . 'assets/img/forminator-submissions@2x.png'; // WPCS: XSS ok. ?> 2x"
340
- alt="<?php esc_html_e( 'Forminator', Forminator::DOMAIN ); ?>"
341
- class="sui-image"
342
- aria-hidden="true"/>
343
  <?php endif; ?>
344
 
345
  <div class="sui-message-content">
346
 
347
- <h2><?php echo forminator_get_form_name( $this->form_id, 'quiz' ); // WPCS: XSS ok. ?></h2>
348
 
349
- <p><?php esc_html_e( "You haven’t received any submissions for this quiz yet. When you do, you’ll be able to view all the data here.", Forminator::DOMAIN ); ?></p>
350
 
351
  </div>
352
 
36
  <div class="sui-pagination-wrap">
37
 
38
  <span class="sui-pagination-results">
39
+ <?php
40
+ if ( 1 === $count ) {
41
+ /* translators: ... */
42
  printf( esc_html__( '%s result', Forminator::DOMAIN ), esc_html( $count ) );
43
  } else {
44
+ /* translators: ... */
45
  printf( esc_html__( '%s results', Forminator::DOMAIN ), esc_html( $count ) );
46
+ }
47
+ ?>
48
  </span>
49
 
50
  <?php $this->paginate(); ?>
65
  <label class="sui-checkbox">
66
  <input id="wpf-cform-check_all" type="checkbox">
67
  <span></span>
68
+ <div class="sui-description"><?php esc_html_e( 'ID', Forminator::DOMAIN ); ?></div>
69
  </label>
70
  </th>
71
+ <th colspan="5"><?php esc_html_e( 'Date Submitted', Forminator::DOMAIN ); ?></th>
72
  </tr>
73
 
74
  </thead>
96
  </td>
97
 
98
  <td colspan="5">
99
+ <?php echo date( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), strtotime( $entry->date_created_sql ) ); // phpcs:ignore ?>
100
  <span class="sui-accordion-open-indicator">
101
  <i class="sui-icon-chevron-down"></i>
102
  </span>
113
  <div class="sui-box-body">
114
 
115
  <h2>
116
+ <?php echo forminator_get_form_name( $this->form_id, 'quiz' ); // phpcs:ignore ?>
117
  </h2>
118
 
119
  <?php if ( 'knowledge' === $form_type ) { ?>
130
 
131
  <tr>
132
 
133
+ <th><?php esc_html_e( 'Question', Forminator::DOMAIN ); ?></th>
134
 
135
+ <th><?php esc_html_e( 'Answer', Forminator::DOMAIN ); ?></th>
136
 
137
  </tr>
138
 
159
  <?php
160
  if ( $answer['isCorrect'] ) {
161
 
162
+ echo '<span class="sui-tag sui-tag-success">' . esc_html( $user_answer ) . '</span>';
163
 
164
  } else {
165
 
166
+ echo '<span class="sui-tag sui-tag-error">' . esc_html( $user_answer ) . '</span>';
167
 
168
  }
169
  ?>
177
  <?php if ( ! empty( $integrations_data ) ) : ?>
178
  <?php foreach ( $integrations_data as $integrations_datum ) : ?>
179
  <tr>
180
+ <td><?php echo $integrations_datum['label']; // phpcs:ignore -- html output intended ?></td>
181
  <td>
182
  <?php
183
  $sub_entries = isset( $integrations_datum['sub_entries'] ) ? $integrations_datum['sub_entries'] : array();
186
  <?php foreach ( $sub_entries as $sub_entry ) : ?>
187
  <div class="">
188
  <span class="sui-settings-label"><?php echo esc_html( $sub_entry['label'] ); ?></span>
189
+ <span class="sui-description"><?php echo( $sub_entry['value'] ); // phpcs:ignore -- html output intended ?></span>
190
  </div>
191
  <?php endforeach; ?>
192
+ <?php else : ?>
193
+ <?php echo( $integrations_datum['value'] ); // phpcs:ignore -- html output intended ?>
194
  <?php endif; ?>
195
  </td>
196
  </tr>
220
 
221
  <tr>
222
 
223
+ <th><?php esc_html_e( 'Question', Forminator::DOMAIN ); ?></th>
224
 
225
+ <th><?php esc_html_e( 'Answer', Forminator::DOMAIN ); ?></th>
226
 
227
  </tr>
228
 
234
 
235
  <tr>
236
 
237
+ <td><?php echo esc_html( $answer['question'] ); ?></td>
238
 
239
+ <td><?php echo esc_html( $answer['answer'] ); ?></td>
240
 
241
  </tr>
242
 
246
  <?php if ( ! empty( $integrations_data ) ) : ?>
247
  <?php foreach ( $integrations_data as $integrations_datum ) : ?>
248
  <tr>
249
+ <td><?php echo $integrations_datum['label']; // phpcs:ignore -- html output intended ?></td>
250
  <td>
251
  <?php
252
  $sub_entries = isset( $integrations_datum['sub_entries'] ) ? $integrations_datum['sub_entries'] : array();
255
  <?php foreach ( $sub_entries as $sub_entry ) : ?>
256
  <div class="">
257
  <span class="sui-settings-label"><?php echo esc_html( $sub_entry['label'] ); ?></span>
258
+ <span class="sui-description"><?php echo( $sub_entry['value'] ); // phpcs:ignore -- html output intended ?></span>
259
  </div>
260
  <?php endforeach; ?>
261
+ <?php else : ?>
262
+ <?php echo( $integrations_datum['value'] ); // phpcs:ignore -- html output intended ?>
263
  <?php endif; ?>
264
  </td>
265
  </tr>
275
 
276
  <div class="sui-box-footer">
277
 
278
+ <p><?php printf( __( '<strong>Quiz Result:</strong> %s', Forminator::DOMAIN ), $meta['result']['title'] ); // phpcs:ignore ?></p>
279
 
280
  </div>
281
 
314
  <div class="sui-pagination-wrap">
315
 
316
  <span class="sui-pagination-results">
317
+ <?php
318
+ if ( 1 === $count ) {
319
+ /* translators: ... */
320
  printf( esc_html__( '%s result', Forminator::DOMAIN ), esc_html( $count ) );
321
  } else {
322
+ /* translators: ... */
323
  printf( esc_html__( '%s results', Forminator::DOMAIN ), esc_html( $count ) );
324
+ }
325
+ ?>
326
  </span>
327
 
328
  <?php $this->paginate(); ?>
341
 
342
  <div class="sui-box sui-message">
343
 
344
+ <?php if ( forminator_is_show_branding() ) : ?>
345
+ <img src="<?php echo esc_url( $plugin_path . 'assets/img/forminator-submissions.png' ); ?>"
346
+ srcset="<?php echo esc_url( $plugin_path . 'assets/img/forminator-submissions.png' ); ?> 1x,
347
+ <?php echo esc_url( $plugin_path . 'assets/img/forminator-submissions@2x.png' ); ?> 2x"
348
+ alt="<?php esc_html_e( 'Forminator', Forminator::DOMAIN ); ?>"
349
+ class="sui-image"
350
+ aria-hidden="true"/>
351
  <?php endif; ?>
352
 
353
  <div class="sui-message-content">
354
 
355
+ <h2><?php echo forminator_get_form_name( $this->form_id, 'quiz' ); // phpcs:ignore ?></h2>
356
 
357
+ <p><?php esc_html_e( 'You haven’t received any submissions for this quiz yet. When you do, you’ll be able to view all the data here.', Forminator::DOMAIN ); ?></p>
358
 
359
  </div>
360
 
admin/views/quiz/entries/header.php CHANGED
@@ -1,9 +1,9 @@
1
- <h1 class="sui-header-title"><?php esc_html_e( "Submissions", Forminator::DOMAIN ); ?></h1>
2
 
3
  <div class="sui-actions-right">
4
  <?php if ( forminator_is_show_documentation_link() ) : ?>
5
  <a href="https://premium.wpmudev.org/docs/wpmu-dev-plugins/forminator/#quizzes" target="_blank" class="sui-button sui-button-ghost">
6
- <i class="sui-icon-academy"></i> <?php esc_html_e( "View Documentation", Forminator::DOMAIN ); ?>
7
  </a>
8
  <?php endif; ?>
9
  </div>
1
+ <h1 class="sui-header-title"><?php esc_html_e( 'Submissions', Forminator::DOMAIN ); ?></h1>
2
 
3
  <div class="sui-actions-right">
4
  <?php if ( forminator_is_show_documentation_link() ) : ?>
5
  <a href="https://premium.wpmudev.org/docs/wpmu-dev-plugins/forminator/#quizzes" target="_blank" class="sui-button sui-button-ghost">
6
+ <i class="sui-icon-academy"></i> <?php esc_html_e( 'View Documentation', Forminator::DOMAIN ); ?>
7
  </a>
8
  <?php endif; ?>
9
  </div>
admin/views/quiz/knowledge/header.php CHANGED
@@ -0,0 +1 @@
 
1
+ <?php // phpcs:ignore
admin/views/quiz/list/content.php CHANGED
@@ -6,14 +6,14 @@ $image_empty = forminator_plugin_url() . 'assets/images/forminator-empty-messa
6
  $image_empty2x = forminator_plugin_url() . 'assets/images/forminator-empty-message@2x.png';
7
 
8
  // Count total forms
9
- $count = $this->countModules();
10
  $count_active = $this->countModules( 'publish' );
11
 
12
  // available bulk actions
13
  $bulk_actions = $this->bulk_actions();
14
 
15
  // Start date for retrieving the information of the last 30 days in sql format
16
- $sql_month_start_date = date( 'Y-m-d H:i:s', strtotime( '-30 days midnight' ) );
17
 
18
  // Count total entries from last 30 days
19
  $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_entry_ids( 'quizzes', $sql_month_start_date ) );
@@ -31,9 +31,9 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
31
 
32
  <span class="sui-summary-large"><?php echo esc_html( $count_active ); ?></span>
33
  <?php if ( $count_active > 1 ) { ?>
34
- <span class="sui-summary-sub"><?php esc_html_e( "Active Quizzes", Forminator::DOMAIN ); ?></span>
35
  <?php } else { ?>
36
- <span class="sui-summary-sub"><?php esc_html_e( "Active Quiz", Forminator::DOMAIN ); ?></span>
37
  <?php } ?>
38
 
39
  </div>
@@ -46,7 +46,7 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
46
 
47
  <li>
48
  <span class="sui-list-label"><?php esc_html_e( 'Last Submission', Forminator::DOMAIN ); ?></span>
49
- <span class="sui-list-detail"><?php echo forminator_get_latest_entry_time( 'quizzes' ); // WPCS: XSS ok. ?></span>
50
  </li>
51
 
52
  <li>
@@ -65,7 +65,7 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
65
 
66
  <div class="fui-pagination-mobile sui-pagination-wrap">
67
 
68
- <span class="sui-pagination-results"><?php echo esc_html( sprintf( _n( '%s result', '%s results', $count, Forminator::DOMAIN ), $count ) ); ?></span>
69
 
70
  <?php $this->pagination(); ?>
71
 
@@ -102,7 +102,7 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
102
  <div class="sui-search-right">
103
 
104
  <div class="sui-pagination-wrap">
105
- <span class="sui-pagination-results"><?php echo esc_html( sprintf( _n( '%s result', '%s results', $count, Forminator::DOMAIN ), $count ) ); ?></span>
106
  <?php $this->pagination(); ?>
107
  </div>
108
 
@@ -119,9 +119,9 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
119
 
120
  <?php
121
  foreach ( $this->getModules() as $module ) {
122
- $module_entries_from_last_month = 0 !== $module["entries"] ? count( Forminator_Form_Entry_Model::get_newer_entry_ids_of_form_id( $module['id'], $sql_month_start_date ) ) : 0;
123
- $opened_class = '';
124
- $opened_chart = '';
125
 
126
  if( isset( $_GET['view-stats'] ) && intval( $_GET['view-stats'] ) === intval( $module['id'] ) ) { // phpcs:ignore
127
  $opened_class = ' sui-accordion-item--open forminator-scroll-to';
@@ -141,23 +141,27 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
141
  <span class="sui-screen-reader-text"><?php esc_html_e( 'Select this quiz', Forminator::DOMAIN ); ?></span>
142
  </label>
143
 
144
- <span class="sui-trim-text"><?php echo forminator_get_form_name( $module['id'], 'quiz'); // WPCS: XSS ok. ?></span>
145
 
146
- <?php if ( 'publish' === $module['status'] ) {
 
147
  echo '<span class="sui-tag sui-tag-blue">' . esc_html__( 'Published', Forminator::DOMAIN ) . '</span>';
148
- } ?>
 
149
 
150
- <?php if ( 'draft' === $module['status'] ) {
 
151
  echo '<span class="sui-tag">' . esc_html__( 'Draft', Forminator::DOMAIN ) . '</span>';
152
- } ?>
 
153
 
154
  </div>
155
 
156
- <div class="sui-accordion-item-date"><strong><?php esc_html_e( 'Last Submission', Forminator::DOMAIN ); ?></strong> <?php echo esc_html( $module["last_entry_time"] ); ?></div>
157
 
158
  <div class="sui-accordion-col-auto">
159
 
160
- <a href="<?php echo $this->getAdminEditUrl( $module['type'], $module['id'] ); // WPCS: XSS ok. ?>"
161
  class="sui-button sui-button-ghost sui-accordion-item-action">
162
  <i class="sui-icon-pencil" aria-hidden="true"></i> <?php esc_html_e( 'Edit', Forminator::DOMAIN ); ?>
163
  </a>
@@ -174,14 +178,14 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
174
  <li><a href="#"
175
  class="wpmudev-open-modal"
176
  data-modal="preview_quizzes"
177
- data-modal-title="<?php echo sprintf( "%s - %s", __( "Preview Quiz", Forminator::DOMAIN ), forminator_get_form_name( $module['id'], 'quiz' ) ); // WPCS: XSS ok. ?>"
178
  data-form-id="<?php echo esc_attr( $module['id'] ); ?>"
179
- data-nonce="<?php echo wp_create_nonce( 'forminator_popup_preview_quizzes' ); // WPCS: XSS ok. ?>">
180
- <i class="sui-icon-eye" aria-hidden="true"></i> <?php esc_html_e( "Preview", Forminator::DOMAIN ); ?>
181
  </a></li>
182
 
183
  <li>
184
- <button class="copy-clipboard" data-shortcode='[forminator_quiz id="<?php echo esc_attr( $module['id'] ); ?>"]'><i class="sui-icon-code" aria-hidden="true"></i> <?php esc_html_e( "Copy Shortcode", Forminator::DOMAIN ); ?></button>
185
  </li>
186
 
187
  <li>
@@ -191,7 +195,7 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
191
 
192
  <?php if ( Forminator_Poll_Form_Model::STATUS_PUBLISH === $module['status'] ) : ?>
193
  <input type="hidden" name="status" value="draft"/>
194
- <?php elseif ( Forminator_Poll_Form_Model::STATUS_DRAFT === $module['status'] ): ?>
195
  <input type="hidden" name="status" value="publish"/>
196
  <?php endif; ?>
197
 
@@ -200,7 +204,7 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
200
 
201
  <?php if ( Forminator_Poll_Form_Model::STATUS_PUBLISH === $module['status'] ) : ?>
202
  <i class="sui-icon-unpublish" aria-hidden="true"></i> <?php esc_html_e( 'Unpublish', Forminator::DOMAIN ); ?>
203
- <?php elseif ( Forminator_Poll_Form_Model::STATUS_DRAFT === $module['status'] ): ?>
204
  <i class="sui-icon-upload-cloud" aria-hidden="true"></i> <?php esc_html_e( 'Publish', Forminator::DOMAIN ); ?>
205
  <?php endif; ?>
206
 
@@ -209,7 +213,7 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
209
  </li>
210
 
211
  <li>
212
- <a href="<?php echo admin_url( 'admin.php?page=forminator-quiz-view&form_id=' . $module['id'] ); // WPCS: XSS ok. ?>">
213
  <i class="sui-icon-community-people" aria-hidden="true"></i> <?php esc_html_e( 'View Submissions', Forminator::DOMAIN ); ?>
214
  </a>
215
  </li>
@@ -218,14 +222,14 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
218
  <input type="hidden" name="forminator_action" value="clone">
219
  <input type="hidden" name="id" value="<?php echo esc_attr( $module['id'] ); ?>"/>
220
  <?php wp_nonce_field( 'forminatorQuizFormRequest', 'forminatorNonce' ); ?>
221
- <button type="submit"><i class="sui-icon-page-multiple" aria-hidden="true"></i> <?php esc_html_e( "Duplicate", Forminator::DOMAIN ); ?></button>
222
  </form></li>
223
 
224
  <li><form method="post">
225
  <input type="hidden" name="forminator_action" value="reset-views">
226
  <input type="hidden" name="id" value="<?php echo esc_attr( $module['id'] ); ?>"/>
227
  <?php wp_nonce_field( 'forminatorQuizFormRequest', 'forminatorNonce' ); ?>
228
- <button type="submit"><i class="sui-icon-update" aria-hidden="true"></i> <?php esc_html_e( "Reset Tracking data", Forminator::DOMAIN ); ?></button>
229
  </form></li>
230
 
231
  <?php if ( Forminator::is_import_export_feature_enabled() ) : ?>
@@ -248,7 +252,7 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
248
  data-modal-title="<?php esc_attr_e( 'Delete Quiz', Forminator::DOMAIN ); ?>"
249
  data-modal-content="<?php esc_attr_e( 'Are you sure you wish to permanently delete this quiz?', Forminator::DOMAIN ); ?>"
250
  data-form-id="<?php echo esc_attr( $module['id'] ); ?>"
251
- data-nonce="<?php echo wp_create_nonce( 'forminatorQuizFormRequest' ); // WPCS: XSS ok. ?>"
252
  >
253
  <i class="sui-icon-trash" aria-hidden="true"></i> <?php esc_html_e( 'Delete', Forminator::DOMAIN ); ?>
254
  </button>
@@ -270,33 +274,33 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
270
 
271
  <li data-col="large">
272
  <strong><?php esc_html_e( 'Last Submission', Forminator::DOMAIN ); ?></strong>
273
- <span><?php echo esc_html( $module["last_entry_time"] ); ?></span>
274
  </li>
275
 
276
  <li data-col="small">
277
  <strong><?php esc_html_e( 'Views', Forminator::DOMAIN ); ?></strong>
278
- <span><?php echo esc_html( $module["views"] ); ?></span>
279
  </li>
280
 
281
  <li>
282
  <strong><?php esc_html_e( 'Submissions', Forminator::DOMAIN ); ?></strong>
283
- <a href="<?php echo admin_url( 'admin.php?page=forminator-quiz-view&form_id=' . $module['id'] ); // WPCS: XSS ok. ?>"><?php echo esc_html( $module["entries"] ); ?></a>
284
  </li>
285
 
286
  <li>
287
  <strong><?php esc_html_e( 'Conversion Rate', Forminator::DOMAIN ); ?></strong>
288
- <span><?php echo $this->getRate( $module ); // WPCS: XSS ok. ?>%</span>
289
  </li>
290
 
291
  </ul>
292
 
293
- <div class="sui-chartjs sui-chartjs-animated<?php echo esc_attr( $opened_chart ); ?>" data-chart-id="<?php echo $module['id']; // WPCS: XSS ok. ?>">
294
 
295
  <div class="sui-chartjs-message sui-chartjs-message--loading">
296
  <p><i class="sui-icon-loader sui-loading" aria-hidden="true"></i> <?php esc_html_e( 'Loading data...', Forminator::DOMAIN ); ?></p>
297
  </div>
298
 
299
- <?php if ( 0 === $module["entries"] ) { ?>
300
 
301
  <div class="sui-chartjs-message sui-chartjs-message--empty">
302
  <p><i class="sui-icon-info" aria-hidden="true"></i> <?php esc_html_e( "Your quiz doesn't have any submission yet. Try again in a moment.", Forminator::DOMAIN ); ?></p>
@@ -316,8 +320,8 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
316
 
317
  <div class="sui-chartjs-canvas">
318
 
319
- <?php if ( ( 0 !== $module["entries"] ) || ( 0 !== $module_entries_from_last_month ) ) { ?>
320
- <canvas id="forminator-quiz-<?php echo $module['id']; // WPCS: XSS ok. ?>-stats"></canvas>
321
  <?php } ?>
322
 
323
  </div>
@@ -336,12 +340,12 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
336
 
337
  <div class="sui-box sui-message">
338
 
339
- <?php if ( forminator_is_show_branding() ): ?>
340
- <img src="<?php echo $image_empty; // WPCS: XSS ok. ?>"
341
- srcset="<?php echo $image_empty2x; // WPCS: XSS ok. ?> 1x, <?php echo $image_empty2x; // WPCS: XSS ok. ?> 2x"
342
- alt="<?php esc_html_e( 'Empty quizzes', Forminator::DOMAIN ); ?>"
343
- class="sui-image"
344
- aria-hidden="true"/>
345
  <?php endif; ?>
346
 
347
  <div class="sui-message-content">
@@ -375,24 +379,24 @@ $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_e
375
  <?php } ?>
376
 
377
  <?php
378
- $days_array = array();
379
  $default_array = array();
380
 
381
  for ( $h = 30; $h >= 0; $h-- ) {
382
- $time = strtotime( '-' . $h . ' days' );
383
- $date = date( 'Y-m-d', $time );
384
  $default_array[ $date ] = 0;
385
- $days_array[] = date( 'M j, Y', $time );
386
  }
387
 
388
  foreach ( $this->getModules() as $module ) {
389
 
390
- if ( 0 === $module["entries"] ) {
391
  $submissions_data = $default_array;
392
  } else {
393
- $submissions = Forminator_Form_Entry_Model::get_form_latest_entries_count_grouped_by_day( $module['id'], $sql_month_start_date );
394
  $submissions_array = wp_list_pluck( $submissions, 'entries_amount', 'date_created' );
395
- $submissions_data = array_merge( $default_array, array_intersect_key( $submissions_array, $default_array ) );
396
  }
397
 
398
  // Get highest value
@@ -404,10 +408,10 @@ foreach ( $this->getModules() as $module ) {
404
 
405
  <script>
406
 
407
- var ctx = document.getElementById( 'forminator-quiz-<?php echo $module['id']; // WPCS: XSS ok. ?>-stats' );
408
 
409
- var monthDays = [ '<?php echo implode( "', '", $days_array ); // WPCS: XSS ok. ?>' ],
410
- submissions = [ <?php echo implode( ', ', $submissions_data ); // WPCS: XSS ok. ?> ];
411
 
412
  var chartData = {
413
  labels: monthDays,
@@ -476,10 +480,10 @@ foreach ( $this->getModules() as $module ) {
476
  return tooltipItem.xLabel;
477
  },
478
  // Set label text color
479
- labelTextColor:function( tooltipItem, chart ){
480
- return '#AAAAAA';
481
- }
482
- }
483
  },
484
  plugins: {
485
  datalabels: {
6
  $image_empty2x = forminator_plugin_url() . 'assets/images/forminator-empty-message@2x.png';
7
 
8
  // Count total forms
9
+ $count = $this->countModules();
10
  $count_active = $this->countModules( 'publish' );
11
 
12
  // available bulk actions
13
  $bulk_actions = $this->bulk_actions();
14
 
15
  // Start date for retrieving the information of the last 30 days in sql format
16
+ $sql_month_start_date = date( 'Y-m-d H:i:s', strtotime( '-30 days midnight' ) );// phpcs:ignore
17
 
18
  // Count total entries from last 30 days
19
  $total_entries_from_last_month = count( Forminator_Form_Entry_Model::get_newer_entry_ids( 'quizzes', $sql_month_start_date ) );
31
 
32
  <span class="sui-summary-large"><?php echo esc_html( $count_active ); ?></span>
33
  <?php if ( $count_active > 1 ) { ?>
34
+ <span class="sui-summary-sub"><?php esc_html_e( 'Active Quizzes', Forminator::DOMAIN ); ?></span>
35
  <?php } else { ?>
36
+ <span class="sui-summary-sub"><?php esc_html_e( 'Active Quiz', Forminator::DOMAIN ); ?></span>
37
  <?php } ?>
38
 
39
  </div>
46
 
47
  <li>
48
  <span class="sui-list-label"><?php esc_html_e( 'Last Submission', Forminator::DOMAIN ); ?></span>
49
+ <span class="sui-list-detail"><?php echo forminator_get_latest_entry_time( 'quizzes' ); // phpcs:ignore ?></span>
50
  </li>
51
 
52
  <li>
65
 
66
  <div class="fui-pagination-mobile sui-pagination-wrap">
67
 
68
+ <span class="sui-pagination-results"><?php /* translators: ... */ echo esc_html( sprintf( _n( '%s result', '%s results', $count, Forminator::DOMAIN ), $count ) ); ?></span>
69
 
70
  <?php $this->pagination(); ?>
71
 
102
  <div class="sui-search-right">
103
 
104
  <div class="sui-pagination-wrap">
105
+ <span class="sui-pagination-results"><?php /* translators: ... */ echo esc_html( sprintf( _n( '%s result', '%s results', $count, Forminator::DOMAIN ), $count ) ); ?></span>
106
  <?php $this->pagination(); ?>
107
  </div>
108
 
119
 
120
  <?php
121
  foreach ( $this->getModules() as $module ) {
122
+ $module_entries_from_last_month = 0 !== $module['entries'] ? count( Forminator_Form_Entry_Model::get_newer_entry_ids_of_form_id( $module['id'], $sql_month_start_date ) ) : 0;
123
+ $opened_class = '';
124
+ $opened_chart = '';
125
 
126
  if( isset( $_GET['view-stats'] ) && intval( $_GET['view-stats'] ) === intval( $module['id'] ) ) { // phpcs:ignore
127
  $opened_class = ' sui-accordion-item--open forminator-scroll-to';
141
  <span class="sui-screen-reader-text"><?php esc_html_e( 'Select this quiz', Forminator::DOMAIN ); ?></span>
142
  </label>
143
 
144
+ <span class="sui-trim-text"><?php echo forminator_get_form_name( $module['id'], 'quiz' ); // phpcs:ignore ?></span>
145
 
146
+ <?php
147
+ if ( 'publish' === $module['status'] ) {
148
  echo '<span class="sui-tag sui-tag-blue">' . esc_html__( 'Published', Forminator::DOMAIN ) . '</span>';
149
+ }
150
+ ?>
151
 
152
+ <?php
153
+ if ( 'draft' === $module['status'] ) {
154
  echo '<span class="sui-tag">' . esc_html__( 'Draft', Forminator::DOMAIN ) . '</span>';
155
+ }
156
+ ?>
157
 
158
  </div>
159
 
160
+ <div class="sui-accordion-item-date"><strong><?php esc_html_e( 'Last Submission', Forminator::DOMAIN ); ?></strong> <?php echo esc_html( $module['last_entry_time'] ); ?></div>
161
 
162
  <div class="sui-accordion-col-auto">
163
 
164
+ <a href="<?php echo $this->getAdminEditUrl( $module['type'], $module['id'] ); // phpcs:ignore ?>"
165
  class="sui-button sui-button-ghost sui-accordion-item-action">
166
  <i class="sui-icon-pencil" aria-hidden="true"></i> <?php esc_html_e( 'Edit', Forminator::DOMAIN ); ?>
167
  </a>
178
  <li><a href="#"
179
  class="wpmudev-open-modal"
180
  data-modal="preview_quizzes"
181
+ data-modal-title="<?php /* translators: ... */ echo sprintf( '%s - %s', __( 'Preview Quiz', Forminator::DOMAIN ), forminator_get_form_name( $module['id'], 'quiz' ) ); // phpcs:ignore ?>"
182
  data-form-id="<?php echo esc_attr( $module['id'] ); ?>"
183
+ data-nonce="<?php echo esc_attr( wp_create_nonce( 'forminator_popup_preview_quizzes' ) ); ?>">
184
+ <i class="sui-icon-eye" aria-hidden="true"></i> <?php esc_html_e( 'Preview', Forminator::DOMAIN ); ?>
185
  </a></li>
186
 
187
  <li>
188
+ <button class="copy-clipboard" data-shortcode='[forminator_quiz id="<?php echo esc_attr( $module['id'] ); ?>"]'><i class="sui-icon-code" aria-hidden="true"></i> <?php esc_html_e( 'Copy Shortcode', Forminator::DOMAIN ); ?></button>
189
  </li>
190
 
191
  <li>
195
 
196
  <?php if ( Forminator_Poll_Form_Model::STATUS_PUBLISH === $module['status'] ) : ?>
197
  <input type="hidden" name="status" value="draft"/>
198
+ <?php elseif ( Forminator_Poll_Form_Model::STATUS_DRAFT === $module['status'] ) : ?>
199
  <input type="hidden" name="status" value="publish"/>
200
  <?php endif; ?>
201
 
204
 
205
  <?php if ( Forminator_Poll_Form_Model::STATUS_PUBLISH === $module['status'] ) : ?>
206
  <i class="sui-icon-unpublish" aria-hidden="true"></i> <?php esc_html_e( 'Unpublish', Forminator::DOMAIN ); ?>
207
+ <?php elseif ( Forminator_Poll_Form_Model::STATUS_DRAFT === $module['status'] ) : ?>
208
  <i class="sui-icon-upload-cloud" aria-hidden="true"></i> <?php esc_html_e( 'Publish', Forminator::DOMAIN ); ?>
209
  <?php endif; ?>
210
 
213
  </li>
214
 
215
  <li>
216
+ <a href="<?php echo admin_url( 'admin.php?page=forminator-quiz-view&form_id=' . $module['id'] ); // phpcs:ignore ?>">
217
  <i class="sui-icon-community-people" aria-hidden="true"></i> <?php esc_html_e( 'View Submissions', Forminator::DOMAIN ); ?>
218
  </a>
219
  </li>
222
  <input type="hidden" name="forminator_action" value="clone">
223
  <input type="hidden" name="id" value="<?php echo esc_attr( $module['id'] ); ?>"/>
224
  <?php wp_nonce_field( 'forminatorQuizFormRequest', 'forminatorNonce' ); ?>
225
+ <button type="submit"><i class="sui-icon-page-multiple" aria-hidden="true"></i> <?php esc_html_e( 'Duplicate', Forminator::DOMAIN ); ?></button>
226
  </form></li>
227
 
228
  <li><form method="post">
229
  <input type="hidden" name="forminator_action" value="reset-views">
230
  <input type="hidden" name="id" value="<?php echo esc_attr( $module['id'] ); ?>"/>
231
  <?php wp_nonce_field( 'forminatorQuizFormRequest', 'forminatorNonce' ); ?>
232
+ <button type="submit"><i class="sui-icon-update" aria-hidden="true"></i> <?php esc_html_e( 'Reset Tracking data', Forminator::DOMAIN ); ?></button>
233
  </form></li>
234
 
235
  <?php if ( Forminator::is_import_export_feature_enabled() ) : ?>
252
  data-modal-title="<?php esc_attr_e( 'Delete Quiz', Forminator::DOMAIN ); ?>"
253
  data-modal-content="<?php esc_attr_e( 'Are you sure you wish to permanently delete this quiz?', Forminator::DOMAIN ); ?>"
254
  data-form-id="<?php echo esc_attr( $module['id'] ); ?>"
255
+ data-nonce="<?php echo esc_attr( wp_create_nonce( 'forminatorQuizFormRequest' ) ); ?>"
256
  >
257
  <i class="sui-icon-trash" aria-hidden="true"></i> <?php esc_html_e( 'Delete', Forminator::DOMAIN ); ?>
258
  </button>
274
 
275
  <li data-col="large">
276
  <strong><?php esc_html_e( 'Last Submission', Forminator::DOMAIN ); ?></strong>
277
+ <span><?php echo esc_html( $module['last_entry_time'] ); ?></span>
278
  </li>
279
 
280
  <li data-col="small">
281
  <strong><?php esc_html_e( 'Views', Forminator::DOMAIN ); ?></strong>
282
+ <span><?php echo esc_html( $module['views'] ); ?></span>
283
  </li>
284
 
285
  <li>
286
  <strong><?php esc_html_e( 'Submissions', Forminator::DOMAIN ); ?></strong>
287
+ <a href="<?php echo admin_url( 'admin.php?page=forminator-quiz-view&form_id=' . $module['id'] ); // phpcs:ignore ?>"><?php echo esc_html( $module['entries'] ); ?></a>
288
  </li>
289
 
290
  <li>
291
  <strong><?php esc_html_e( 'Conversion Rate', Forminator::DOMAIN ); ?></strong>
292
+ <span><?php echo $this->getRate( $module ); // phpcs:ignore ?>%</span>
293
  </li>
294
 
295
  </ul>
296
 
297
+ <div class="sui-chartjs sui-chartjs-animated<?php echo esc_attr( $opened_chart ); ?>" data-chart-id="<?php echo esc_attr( $module['id'] ); ?>">
298
 
299
  <div class="sui-chartjs-message sui-chartjs-message--loading">
300
  <p><i class="sui-icon-loader sui-loading" aria-hidden="true"></i> <?php esc_html_e( 'Loading data...', Forminator::DOMAIN ); ?></p>
301
  </div>
302
 
303
+ <?php if ( 0 === $module['entries'] ) { ?>
304
 
305
  <div class="sui-chartjs-message sui-chartjs-message--empty">
306
  <p><i class="sui-icon-info" aria-hidden="true"></i> <?php esc_html_e( "Your quiz doesn't have any submission yet. Try again in a moment.", Forminator::DOMAIN ); ?></p>
320
 
321
  <div class="sui-chartjs-canvas">
322
 
323
+ <?php if ( ( 0 !== $module['entries'] ) || ( 0 !== $module_entries_from_last_month ) ) { ?>
324
+ <canvas id="forminator-quiz-<?php echo esc_attr( $module['id'] ); ?>-stats"></canvas>
325
  <?php } ?>
326
 
327
  </div>
340
 
341
  <div class="sui-box sui-message">
342
 
343
+ <?php if ( forminator_is_show_branding() ) : ?>
344
+ <img src="<?php echo esc_url( $image_empty ); ?>"
345
+ srcset="<?php echo esc_url( $image_empty2x ); ?> 1x, <?php echo esc_url( $image_empty2x ); ?> 2x"
346
+ alt="<?php esc_html_e( 'Empty quizzes', Forminator::DOMAIN ); ?>"
347
+ class="sui-image"
348
+ aria-hidden="true"/>
349
  <?php endif; ?>
350
 
351
  <div class="sui-message-content">
379
  <?php } ?>
380
 
381
  <?php
382
+ $days_array = array();
383
  $default_array = array();
384
 
385
  for ( $h = 30; $h >= 0; $h-- ) {
386
+ $time = strtotime( '-' . $h . ' days' );
387
+ $date = date( 'Y-m-d', $time );// phpcs:ignore
388
  $default_array[ $date ] = 0;
389
+ $days_array[] = date( 'M j, Y', $time );// phpcs:ignore
390
  }
391
 
392
  foreach ( $this->getModules() as $module ) {
393
 
394
+ if ( 0 === $module['entries'] ) {
395
  $submissions_data = $default_array;
396
  } else {
397
+ $submissions = Forminator_Form_Entry_Model::get_form_latest_entries_count_grouped_by_day( $module['id'], $sql_month_start_date );
398
  $submissions_array = wp_list_pluck( $submissions, 'entries_amount', 'date_created' );
399
+ $submissions_data = array_merge( $default_array, array_intersect_key( $submissions_array, $default_array ) );
400
  }
401
 
402
  // Get highest value
408
 
409
  <script>
410
 
411
+ var ctx = document.getElementById( 'forminator-quiz-<?php echo $module['id']; // phpcs:ignore ?>-stats' );
412
 
413
+ var monthDays = [ '<?php echo implode( "', '", $days_array ); // phpcs:ignore ?>' ],
414
+ submissions = [ <?php echo implode( ', ', $submissions_data ); // phpcs:ignore ?> ];
415
 
416
  var chartData = {
417
  labels: monthDays,
480
  return tooltipItem.xLabel;
481
  },
482
  // Set label text color
483
+ labelTextColor:function( tooltipItem, chart ){
484
+ return '#AAAAAA';
485
+ }
486
+ }
487
  },
488
  plugins: {
489
  datalabels: {
admin/views/quiz/list/header.php CHANGED
@@ -1,10 +1,10 @@
1
  <?php $count = $this->countModules(); ?>
2
 
3
- <h1 class="sui-header-title"><?php esc_html_e( "Quizzes", Forminator::DOMAIN ); ?></h1>
4
 
5
  <div class="sui-actions-left">
6
 
7
- <button class="sui-button sui-button-blue wpmudev-button-open-modal" data-modal="quizzes"><i class="sui-icon-plus" aria-hidden="true"></i> <?php esc_html_e( "Create", Forminator::DOMAIN ); ?></button>
8
 
9
  <?php if ( Forminator::is_import_export_feature_enabled() ) : ?>
10
 
@@ -23,7 +23,7 @@
23
  <div class="sui-actions-right">
24
  <?php if ( forminator_is_show_documentation_link() ) : ?>
25
  <a href="https://premium.wpmudev.org/docs/wpmu-dev-plugins/forminator/#quizzes" target="_blank" class="sui-button sui-button-ghost">
26
- <i class="sui-icon-academy"></i> <?php esc_html_e( "View Documentation", Forminator::DOMAIN ); ?>
27
  </a>
28
  <?php endif; ?>
29
  </div>
1
  <?php $count = $this->countModules(); ?>
2
 
3
+ <h1 class="sui-header-title"><?php esc_html_e( 'Quizzes', Forminator::DOMAIN ); ?></h1>
4
 
5
  <div class="sui-actions-left">
6
 
7
+ <button class="sui-button sui-button-blue wpmudev-button-open-modal" data-modal="quizzes"><i class="sui-icon-plus" aria-hidden="true"></i> <?php esc_html_e( 'Create', Forminator::DOMAIN ); ?></button>
8
 
9
  <?php if ( Forminator::is_import_export_feature_enabled() ) : ?>
10
 
23
  <div class="sui-actions-right">
24
  <?php if ( forminator_is_show_documentation_link() ) : ?>
25
  <a href="https://premium.wpmudev.org/docs/wpmu-dev-plugins/forminator/#quizzes" target="_blank" class="sui-button sui-button-ghost">
26
+ <i class="sui-icon-academy"></i> <?php esc_html_e( 'View Documentation', Forminator::DOMAIN ); ?>
27
  </a>
28
  <?php endif; ?>
29
  </div>
admin/views/quiz/nowrong/header.php CHANGED
@@ -0,0 +1 @@
 
1
+ <?php // phpcs:ignore
admin/views/quiz/popup/export.php CHANGED
@@ -1,5 +1,5 @@
1
  <?php
2
- $form_id = $_POST['id'];// WPCS: CSRF ok. varified on admin ajax
3
  $nonce = wp_create_nonce( 'forminatorQuizFormRequest' );
4
 
5
  $exportable = array();
@@ -7,7 +7,7 @@ $model = Forminator_Quiz_Form_Model::model()->load( $form_id );
7
  if ( $model instanceof Forminator_Quiz_Form_Model ) {
8
  $exportable = $model->to_exportable_data();
9
  }
10
- $text_area_id = uniqid('export-text-');
11
  ?>
12
 
13
  <div class="sui-box-body wpmudev-popup-form">
@@ -19,7 +19,8 @@ $text_area_id = uniqid('export-text-');
19
 
20
  <div class="sui-notice sui-notice-info">
21
  <p>
22
- <?php echo(
 
23
  sprintf(
24
  __( 'You can import this %1$s in Forminator %2$s%3$s%4$s or above. The %5$s may break on a version lower than your install.', Forminator::DOMAIN ), //phpcs:ignore
25
  __( 'Quiz', Forminator::DOMAIN ),//phpcs:ignore
@@ -28,7 +29,8 @@ $text_area_id = uniqid('export-text-');
28
  '</strong>',
29
  __( 'Quiz', Forminator::DOMAIN )
30
  )
31
- ); ?>
 
32
  </p>
33
  </div>
34
 
1
  <?php
2
+ $form_id = $_POST['id'];// phpcs:ignore -- varified on admin ajax
3
  $nonce = wp_create_nonce( 'forminatorQuizFormRequest' );
4
 
5
  $exportable = array();
7
  if ( $model instanceof Forminator_Quiz_Form_Model ) {
8
  $exportable = $model->to_exportable_data();
9
  }
10
+ $text_area_id = uniqid( 'export-text-' );
11
  ?>
12
 
13
  <div class="sui-box-body wpmudev-popup-form">
19
 
20
  <div class="sui-notice sui-notice-info">
21
  <p>
22
+ <?php
23
+ echo(
24
  sprintf(
25
  __( 'You can import this %1$s in Forminator %2$s%3$s%4$s or above. The %5$s may break on a version lower than your install.', Forminator::DOMAIN ), //phpcs:ignore
26
  __( 'Quiz', Forminator::DOMAIN ),//phpcs:ignore
29
  '</strong>',
30
  __( 'Quiz', Forminator::DOMAIN )
31
  )
32
+ );
33
+ ?>
34
  </p>
35
  </div>
36
 
admin/views/settings/content.php CHANGED
@@ -11,13 +11,13 @@ $section = isset( $_GET['section'] ) ? sanitize_text_field( $_GET['section'] ) :
11
  <a href="#" data-nav="dashboard"><?php esc_html_e( 'General', Forminator::DOMAIN ); ?></a>
12
  </li>
13
 
14
- <li class="sui-vertical-tab <?php echo esc_attr( 'accessibility' === $section ? 'current' : '' ); ?>">
15
- <a href="#" data-nav="accessibility"><?php esc_html_e( 'Accessibility', Forminator::DOMAIN ); ?></a>
16
- </li>
17
 
18
- <li class="sui-vertical-tab <?php echo esc_attr( 'data' === $section ? 'current' : '' ); ?>">
19
- <a href="#" data-nav="data"><?php esc_html_e( 'Data', Forminator::DOMAIN ); ?></a>
20
- </li>
21
 
22
  <li class="sui-vertical-tab <?php echo esc_attr( 'recaptcha' === $section ? 'current' : '' ); ?>">
23
  <a href="#" data-nav="recaptcha"><?php esc_html_e( 'Google reCAPTCHA', Forminator::DOMAIN ); ?></a>
@@ -39,8 +39,8 @@ $section = isset( $_GET['section'] ) ? sanitize_text_field( $_GET['section'] ) :
39
 
40
  <select class="sui-mobile-nav sui-sidenav-hide-lg">
41
  <option value="dashboard"><?php esc_html_e( 'General', Forminator::DOMAIN ); ?></option>
42
- <option value="accessibility"><?php esc_html_e( 'Accessibility', Forminator::DOMAIN ); ?></option>
43
- <option value="data"><?php esc_html_e( 'Data', Forminator::DOMAIN ); ?></option>
44
  <option value="recaptcha"><?php esc_html_e( 'Google reCAPTCHA', Forminator::DOMAIN ); ?></option>
45
  <option value="import"><?php esc_html_e( 'Import', Forminator::DOMAIN ); ?></option>
46
  <option value="submissions"><?php esc_html_e( 'Submissions', Forminator::DOMAIN ); ?></option>
11
  <a href="#" data-nav="dashboard"><?php esc_html_e( 'General', Forminator::DOMAIN ); ?></a>
12
  </li>
13
 
14
+ <li class="sui-vertical-tab <?php echo esc_attr( 'accessibility' === $section ? 'current' : '' ); ?>">
15
+ <a href="#" data-nav="accessibility"><?php esc_html_e( 'Accessibility', Forminator::DOMAIN ); ?></a>
16
+ </li>
17
 
18
+ <li class="sui-vertical-tab <?php echo esc_attr( 'data' === $section ? 'current' : '' ); ?>">
19
+ <a href="#" data-nav="data"><?php esc_html_e( 'Data', Forminator::DOMAIN ); ?></a>
20
+ </li>
21
 
22
  <li class="sui-vertical-tab <?php echo esc_attr( 'recaptcha' === $section ? 'current' : '' ); ?>">
23
  <a href="#" data-nav="recaptcha"><?php esc_html_e( 'Google reCAPTCHA', Forminator::DOMAIN ); ?></a>
39
 
40
  <select class="sui-mobile-nav sui-sidenav-hide-lg">
41
  <option value="dashboard"><?php esc_html_e( 'General', Forminator::DOMAIN ); ?></option>
42
+ <option value="accessibility"><?php esc_html_e( 'Accessibility', Forminator::DOMAIN ); ?></option>
43
+ <option value="data"><?php esc_html_e( 'Data', Forminator::DOMAIN ); ?></option>
44
  <option value="recaptcha"><?php esc_html_e( 'Google reCAPTCHA', Forminator::DOMAIN ); ?></option>
45
  <option value="import"><?php esc_html_e( 'Import', Forminator::DOMAIN ); ?></option>
46
  <option value="submissions"><?php esc_html_e( 'Submissions', Forminator::DOMAIN ); ?></option>
admin/views/settings/dashboard/polls.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  $dashboard_settings = forminator_get_dashboard_settings( 'polls', array() );
3
  $num_recent = isset( $dashboard_settings['num_recent'] ) ? $dashboard_settings['num_recent'] : 5;
4
- $published = isset( $dashboard_settings['published'] ) ? filter_var( $dashboard_settings['published'], FILTER_VALIDATE_BOOLEAN ) : true;
5
- $draft = isset( $dashboard_settings['draft'] ) ? filter_var( $dashboard_settings['draft'], FILTER_VALIDATE_BOOLEAN ) : true;
6
  ?>
7
 
8
  <div class="sui-form-field">
1
  <?php
2
  $dashboard_settings = forminator_get_dashboard_settings( 'polls', array() );
3
  $num_recent = isset( $dashboard_settings['num_recent'] ) ? $dashboard_settings['num_recent'] : 5;
4
+ $published = isset( $dashboard_settings['published'] ) ? filter_var( $dashboard_settings['published'], FILTER_VALIDATE_BOOLEAN ) : true;
5
+ $draft = isset( $dashboard_settings['draft'] ) ? filter_var( $dashboard_settings['draft'], FILTER_VALIDATE_BOOLEAN ) : true;
6
  ?>
7
 
8
  <div class="sui-form-field">
admin/views/settings/data/forms-privacy.php CHANGED
@@ -1,19 +1,13 @@
1
  <?php
2
  $form_submission_erasure_enabled = get_option( 'forminator_enable_erasure_request_erase_form_submissions', false );
3
 
4
- $cform_retain_number = get_option( 'forminator_retain_submissions_interval_number', 0 );
5
- $cfrom_retain_unit = get_option( 'forminator_retain_submissions_interval_unit', 'days' );
6
- $cform_retain_forever = false;
7
- if ( empty( $cform_retain_number ) ) {
8
- $cform_retain_forever = true;
9
- }
10
-
11
- $cform_retain_ip_number = get_option( 'forminator_retain_ip_interval_number', 0 );
12
- $cfrom_retain_ip_unit = get_option( 'forminator_retain_ip_interval_unit', 'days' );
13
- $cform_retain_ip_forever = false;
14
- if ( empty( $cform_retain_ip_number ) ) {
15
- $cform_retain_ip_forever = true;
16
- }
17
 
18
  ?>
19
 
@@ -35,19 +29,19 @@ if ( empty( $cform_retain_ip_number ) ) {
35
 
36
  <label for="retain_submission-true" class="sui-tab-item<?php echo( $cform_retain_forever ? ' active' : '' ); ?>">
37
  <input type="radio"
38
- name="retain_submission_forever"
39
- value="true"
40
- id="retain_submission-true"
41
  <?php checked( $cform_retain_forever, true ); ?> />
42
  <?php esc_html_e( 'Forever', Forminator::DOMAIN ); ?>
43
  </label>
44
 
45
  <label for="retain_submission-false" class="sui-tab-item<?php echo( ! $cform_retain_forever ? ' active' : '' ); ?>">
46
  <input type="radio"
47
- name="retain_submission_forever"
48
- value="false"
49
- id="retain_submission-false"
50
- data-tab-menu="retain_submission"
51
  <?php checked( $cform_retain_forever, false ); ?> />
52
  <?php esc_html_e( 'Custom', Forminator::DOMAIN ); ?>
53
  </label>
@@ -62,11 +56,11 @@ if ( empty( $cform_retain_ip_number ) ) {
62
  <div class="sui-form-field">
63
 
64
  <input type="number"
65
- name="submissions_retention_number"
66
- placeholder="<?php esc_html_e( 'E.g. 10', Forminator::DOMAIN ); ?>"
67
- value="<?php echo esc_attr( $cform_retain_number ); ?>"
68
- min="0"
69
- class="sui-form-control sui-form-control-inline"/>
70
  </div>
71
  </div>
72
  <div class="sui-col-md-6">
@@ -74,13 +68,13 @@ if ( empty( $cform_retain_ip_number ) ) {
74
 
75
  <select name="submissions_retention_unit">
76
  <option value="days" <?php selected( $cfrom_retain_unit, 'days' ); ?>>
77
- <?php esc_html_e( "day(s)", Forminator::DOMAIN ); ?></option>
78
  <option value="weeks" <?php selected( $cfrom_retain_unit, 'weeks' ); ?>>
79
- <?php esc_html_e( "week(s)", Forminator::DOMAIN ); ?></option>
80
  <option value="months" <?php selected( $cfrom_retain_unit, 'months' ); ?>>
81
- <?php esc_html_e( "month(s)", Forminator::DOMAIN ); ?></option>
82
  <option value="years" <?php selected( $cfrom_retain_unit, 'years' ); ?>>
83
- <?php esc_html_e( "years(s)", Forminator::DOMAIN ); ?></option>
84
  </select>
85
 
86
  </div>
@@ -102,19 +96,19 @@ if ( empty( $cform_retain_ip_number ) ) {
102
 
103
  <label for="retain_ip-true" class="sui-tab-item<?php echo( $cform_retain_ip_forever ? ' active' : '' ); ?>">
104
  <input type="radio"
105
- name="retain_ip_forever"
106
- value="true"
107
- id="retain_ip-true"
108
  <?php checked( $cform_retain_ip_forever, true ); ?> />
109
  <?php esc_html_e( 'Forever', Forminator::DOMAIN ); ?>
110
  </label>
111
 
112
  <label for="retain_ip-false" class="sui-tab-item<?php echo( ! $cform_retain_ip_forever ? ' active' : '' ); ?>">
113
  <input type="radio"
114
- name="retain_ip_forever"
115
- value="false"
116
- id="retain_ip-false"
117
- data-tab-menu="retain_ip"
118
  <?php checked( $cform_retain_ip_forever, false ); ?> />
119
  <?php esc_html_e( 'Custom', Forminator::DOMAIN ); ?>
120
  </label>
@@ -129,11 +123,11 @@ if ( empty( $cform_retain_ip_number ) ) {
129
  <div class="sui-form-field">
130
 
131
  <input type="number"
132
- name="cform_retention_ip_number"
133
- placeholder="<?php esc_html_e( 'E.g. 10', Forminator::DOMAIN ); ?>"
134
- value="<?php echo esc_attr( $cform_retain_ip_number ); ?>"
135
- min="0"
136
- class="sui-form-control sui-form-control-inline"/>
137
 
138
  </div>
139
  </div>
@@ -142,13 +136,13 @@ if ( empty( $cform_retain_ip_number ) ) {
142
 
143
  <select name="cform_retention_ip_unit">
144
  <option value="days" <?php selected( $cfrom_retain_ip_unit, 'days' ); ?>>
145
- <?php esc_html_e( "day(s)", Forminator::DOMAIN ); ?></option>
146
  <option value="weeks" <?php selected( $cfrom_retain_ip_unit, 'weeks' ); ?>>
147
- <?php esc_html_e( "week(s)", Forminator::DOMAIN ); ?></option>
148
  <option value="months" <?php selected( $cfrom_retain_ip_unit, 'months' ); ?>>
149
- <?php esc_html_e( "month(s)", Forminator::DOMAIN ); ?></option>
150
  <option value="years" <?php selected( $cfrom_retain_ip_unit, 'years' ); ?>>
151
- <?php esc_html_e( "years(s)", Forminator::DOMAIN ); ?></option>
152
  </select>
153
 
154
  </div>
@@ -164,9 +158,12 @@ if ( empty( $cform_retain_ip_number ) ) {
164
 
165
  <span class="sui-settings-label"><?php esc_html_e( 'Account Erasure Requests', Forminator::DOMAIN ); ?></span>
166
  <span class="sui-description">
167
- <?php echo( sprintf( __( 'When handling an <a href="%s">account erasure request</a> that contains an email associated with a submission, what do you want to do?',
168
- Forminator::DOMAIN ),
169
- esc_url( admin_url( 'tools.php?page=remove_personal_data' ) ) ) ); // wpcs: xss ok. ?>
 
 
 
170
  </span>
171
 
172
  <div class="sui-side-tabs" style="margin-top: 10px;">
@@ -175,18 +172,18 @@ if ( empty( $cform_retain_ip_number ) ) {
175
 
176
  <label for="erase_form_submissions-true" class="sui-tab-item<?php echo $form_submission_erasure_enabled ? ' active' : ''; ?>">
177
  <input type="radio"
178
- name="erase_form_submissions"
179
- value="true"
180
- id="erase_form_submissions-true"
181
  <?php checked( $form_submission_erasure_enabled, true ); ?> />
182
  <?php esc_html_e( 'Retain Submission', Forminator::DOMAIN ); ?>
183
  </label>
184
 
185
  <label for="erase_form_submissions-false" class="sui-tab-item<?php echo $form_submission_erasure_enabled ? '' : ' active'; ?>">
186
  <input type="radio"
187
- name="erase_form_submissions"
188
- value="false"
189
- id="erase_form_submissions-false"
190
  <?php checked( $form_submission_erasure_enabled, false ); ?> />
191
  <?php esc_html_e( 'Remove Submission', Forminator::DOMAIN ); ?>
192
  </label>
1
  <?php
2
  $form_submission_erasure_enabled = get_option( 'forminator_enable_erasure_request_erase_form_submissions', false );
3
 
4
+ $cform_retain_forever = get_option( 'retain_submission_forever' );
5
+ $cform_retain_number = get_option( 'forminator_retain_submissions_interval_number', 0 );
6
+ $cfrom_retain_unit = get_option( 'forminator_retain_submissions_interval_unit', 'days' );
7
+
8
+ $cform_retain_ip_forever = get_option( 'retain_ip_forever' );
9
+ $cform_retain_ip_number = get_option( 'forminator_retain_ip_interval_number', 0 );
10
+ $cfrom_retain_ip_unit = get_option( 'forminator_retain_ip_interval_unit', 'days' );
 
 
 
 
 
 
11
 
12
  ?>
13
 
29
 
30
  <label for="retain_submission-true" class="sui-tab-item<?php echo( $cform_retain_forever ? ' active' : '' ); ?>">
31
  <input type="radio"
32
+ name="retain_submission_forever"
33
+ value="true"
34
+ id="retain_submission-true"
35
  <?php checked( $cform_retain_forever, true ); ?> />
36
  <?php esc_html_e( 'Forever', Forminator::DOMAIN ); ?>
37
  </label>
38
 
39
  <label for="retain_submission-false" class="sui-tab-item<?php echo( ! $cform_retain_forever ? ' active' : '' ); ?>">
40
  <input type="radio"
41
+ name="retain_submission_forever"
42
+ value="false"
43
+ id="retain_submission-false"
44
+ data-tab-menu="retain_submission"
45
  <?php checked( $cform_retain_forever, false ); ?> />
46
  <?php esc_html_e( 'Custom', Forminator::DOMAIN ); ?>
47
  </label>
56
  <div class="sui-form-field">
57
 
58
  <input type="number"
59
+ name="submissions_retention_number"
60
+ placeholder="<?php esc_html_e( 'E.g. 10', Forminator::DOMAIN ); ?>"
61
+ value="<?php echo esc_attr( $cform_retain_number ); ?>"
62
+ min="0"
63
+ class="sui-form-control sui-form-control-inline"/>
64
  </div>
65
  </div>
66
  <div class="sui-col-md-6">
68
 
69
  <select name="submissions_retention_unit">
70
  <option value="days" <?php selected( $cfrom_retain_unit, 'days' ); ?>>
71
+ <?php esc_html_e( 'day(s)', Forminator::DOMAIN ); ?></option>
72
  <option value="weeks" <?php selected( $cfrom_retain_unit, 'weeks' ); ?>>
73
+ <?php esc_html_e( 'week(s)', Forminator::DOMAIN ); ?></option>
74
  <option value="months" <?php selected( $cfrom_retain_unit, 'months' ); ?>>
75
+ <?php esc_html_e( 'month(s)', Forminator::DOMAIN ); ?></option>
76
  <option value="years" <?php selected( $cfrom_retain_unit, 'years' ); ?>>
77
+ <?php esc_html_e( 'years(s)', Forminator::DOMAIN ); ?></option>
78
  </select>
79
 
80
  </div>
96
 
97
  <label for="retain_ip-true" class="sui-tab-item<?php echo( $cform_retain_ip_forever ? ' active' : '' ); ?>">
98
  <input type="radio"
99
+ name="retain_ip_forever"
100
+ value="true"
101
+ id="retain_ip-true"
102
  <?php checked( $cform_retain_ip_forever, true ); ?> />
103
  <?php esc_html_e( 'Forever', Forminator::DOMAIN ); ?>
104
  </label>
105
 
106
  <label for="retain_ip-false" class="sui-tab-item<?php echo( ! $cform_retain_ip_forever ? ' active' : '' ); ?>">
107
  <input type="radio"
108
+ name="retain_ip_forever"
109
+ value="false"
110
+ id="retain_ip-false"
111
+ data-tab-menu="retain_ip"
112
  <?php checked( $cform_retain_ip_forever, false ); ?> />
113
  <?php esc_html_e( 'Custom', Forminator::DOMAIN ); ?>
114
  </label>
123
  <div class="sui-form-field">
124
 
125
  <input type="number"
126
+ name="cform_retention_ip_number"
127
+ placeholder="<?php esc_html_e( 'E.g. 10', Forminator::DOMAIN ); ?>"
128
+ value="<?php echo esc_attr( $cform_retain_ip_number ); ?>"
129
+ min="0"
130
+ class="sui-form-control sui-form-control-inline"/>
131
 
132
  </div>
133
  </div>
136
 
137
  <select name="cform_retention_ip_unit">
138
  <option value="days" <?php selected( $cfrom_retain_ip_unit, 'days' ); ?>>
139
+ <?php esc_html_e( 'day(s)', Forminator::DOMAIN ); ?></option>
140
  <option value="weeks" <?php selected( $cfrom_retain_ip_unit, 'weeks' ); ?>>
141
+ <?php esc_html_e( 'week(s)', Forminator::DOMAIN ); ?></option>
142
  <option value="months" <?php selected( $cfrom_retain_ip_unit, 'months' ); ?>>
143
+ <?php esc_html_e( 'month(s)', Forminator::DOMAIN ); ?></option>
144
  <option value="years" <?php selected( $cfrom_retain_ip_unit, 'years' ); ?>>
145
+ <?php esc_html_e( 'years(s)', Forminator::DOMAIN ); ?></option>
146
  </select>
147
 
148
  </div>
158
 
159
  <span class="sui-settings-label"><?php esc_html_e( 'Account Erasure Requests', Forminator::DOMAIN ); ?></span>
160
  <span class="sui-description">
161
+ <?php
162
+ /* translators: ... */
163
+ echo sprintf( __( 'When handling an <a href="%s" target="_blank">account erasure request</a> that contains an email associated with a submission, what do you want to do?', Forminator::DOMAIN ),
164
+ esc_url( admin_url( 'erase-personal-data.php' ) )
165
+ );
166
+ ?>
167
  </span>
168
 
169
  <div class="sui-side-tabs" style="margin-top: 10px;">
172
 
173
  <label for="erase_form_submissions-true" class="sui-tab-item<?php echo $form_submission_erasure_enabled ? ' active' : ''; ?>">
174
  <input type="radio"
175
+ name="erase_form_submissions"
176
+ value="true"
177
+ id="erase_form_submissions-true"
178
  <?php checked( $form_submission_erasure_enabled, true ); ?> />
179
  <?php esc_html_e( 'Retain Submission', Forminator::DOMAIN ); ?>
180
  </label>
181
 
182
  <label for="erase_form_submissions-false" class="sui-tab-item<?php echo $form_submission_erasure_enabled ? '' : ' active'; ?>">
183
  <input type="radio"
184
+ name="erase_form_submissions"
185
+ value="false"
186
+ id="erase_form_submissions-false"
187
  <?php checked( $form_submission_erasure_enabled, false ); ?> />
188
  <?php esc_html_e( 'Remove Submission', Forminator::DOMAIN ); ?>
189
  </label>
admin/views/settings/data/polls-privacy.php CHANGED
@@ -1,20 +1,13 @@
1
  <?php
2
- // IP
 
3
  $polls_retain_number = get_option( 'forminator_retain_votes_interval_number', 0 );
4
  $polls_retain_unit = get_option( 'forminator_retain_votes_interval_unit', 'days' );
5
- $poll_retain_forever = false;
6
- if ( empty( $polls_retain_number ) ) {
7
- $poll_retain_forever = true;
8
- }
9
 
10
- // Submissions
 
11
  $poll_submissions_retain_number = get_option( 'forminator_retain_poll_submissions_interval_number', 0 );
12
  $poll_submissions_retain_unit = get_option( 'forminator_retain_poll_submissions_interval_unit', 'days' );
13
- $poll_submissions_retain_forever = false;
14
- if ( empty( $poll_submissions_retain_number ) ) {
15
- $poll_submissions_retain_forever = true;
16
- }
17
-
18
  ?>
19
 
20
  <div class="sui-box-settings-row">
@@ -27,28 +20,28 @@ if ( empty( $poll_submissions_retain_number ) ) {
27
  <div class="sui-box-settings-col-2">
28
 
29
  <span class="sui-settings-label"><?php esc_html_e( 'Submissions Retention', Forminator::DOMAIN ); ?></span>
30
- <span class="sui-description"><?php esc_html_e( 'How long do you want to retain the polls submissions for?', Forminator::DOMAIN ); ?></span>
31
 
32
  <div class="sui-side-tabs" style="margin-top: 10px;">
33
 
34
  <div class="sui-tabs-menu">
35
 
36
- <label for="poll_retain_submission-true" class="sui-tab-item<?php echo( $poll_submissions_retain_forever ? ' active' : '' ); ?>">
37
  <input type="radio"
38
- name="poll_retain_submission_forever"
39
- value="true"
40
- id="poll_retain_submission-true"
41
- <?php checked( $poll_submissions_retain_forever, true ); ?> />
42
  <?php esc_html_e( 'Forever', Forminator::DOMAIN ); ?>
43
  </label>
44
 
45
- <label for="poll_retain_submission-false" class="sui-tab-item<?php echo( ! $poll_submissions_retain_forever ? ' active' : '' ); ?>">
46
  <input type="radio"
47
- name="poll_retain_submission_forever"
48
- value="false"
49
- id="poll_retain_submission-false"
50
- data-tab-menu="poll_retain_submission"
51
- <?php checked( $poll_submissions_retain_forever, false ); ?> />
52
  <?php esc_html_e( 'Custom', Forminator::DOMAIN ); ?>
53
  </label>
54
 
@@ -56,18 +49,18 @@ if ( empty( $poll_submissions_retain_number ) ) {
56
 
57
  <div class="sui-tabs-content">
58
 
59
- <div data-tab-content="poll_retain_submission" class="sui-tab-content sui-tab-boxed<?php echo( ! $poll_submissions_retain_forever ? ' active' : '' ); ?>">
60
 
61
  <div class="sui-row">
62
  <div class="sui-col-md-6">
63
  <div class="sui-form-field">
64
 
65
  <input type="number"
66
- name="poll_submissions_retention_number"
67
- placeholder="<?php esc_html_e( 'E.g. 10', Forminator::DOMAIN ); ?>"
68
- value="<?php echo esc_attr( $poll_submissions_retain_number ); ?>"
69
- min="0"
70
- class="sui-form-control sui-form-control-inline"/>
71
 
72
  </div>
73
  </div>
@@ -75,13 +68,13 @@ if ( empty( $poll_submissions_retain_number ) ) {
75
  <div class="sui-form-field">
76
  <select name="poll_submissions_retention_unit">
77
  <option value="days" <?php selected( $poll_submissions_retain_unit, 'days' ); ?>>
78
- <?php esc_html_e( "day(s)", Forminator::DOMAIN ); ?></option>
79
  <option value="weeks" <?php selected( $poll_submissions_retain_unit, 'weeks' ); ?>>
80
- <?php esc_html_e( "week(s)", Forminator::DOMAIN ); ?></option>
81
  <option value="months" <?php selected( $poll_submissions_retain_unit, 'months' ); ?>>
82
- <?php esc_html_e( "month(s)", Forminator::DOMAIN ); ?></option>
83
  <option value="years" <?php selected( $poll_submissions_retain_unit, 'years' ); ?>>
84
- <?php esc_html_e( "years(s)", Forminator::DOMAIN ); ?></option>
85
  </select>
86
 
87
  </div>
@@ -97,30 +90,34 @@ if ( empty( $poll_submissions_retain_number ) ) {
97
 
98
  <span class="sui-settings-label"><?php esc_html_e( 'IP Retention', Forminator::DOMAIN ); ?></span>
99
  <span class="sui-description">
100
- <?php esc_html_e( 'Choose how long to retain IP address before a submission is anonymized. Keep in mind that the IP address is being used in checking multiple votes from same user.',
101
- Forminator::DOMAIN ); ?>
 
 
 
 
102
  </span>
103
 
104
  <div class="sui-side-tabs" style="margin-top: 10px;">
105
 
106
  <div class="sui-tabs-menu">
107
 
108
- <label for="retain_poll_submission-true" class="sui-tab-item<?php echo( $poll_retain_forever ? ' active' : '' ); ?>">
109
  <input type="radio"
110
- name="retain_poll_forever"
111
- value="true"
112
- id="retain_poll_submission-true"
113
- <?php checked( $poll_retain_forever, true ); ?> />
114
  <?php esc_html_e( 'Forever', Forminator::DOMAIN ); ?>
115
  </label>
116
 
117
- <label for="retain_poll_submission-false" class="sui-tab-item<?php echo( ! $poll_retain_forever ? ' active' : '' ); ?>">
118
  <input type="radio"
119
- name="retain_poll_forever"
120
- value="false"
121
- data-tab-menu="retain_poll_submission"
122
- id="retain_poll_submission-false"
123
- <?php checked( $poll_retain_forever, false ); ?> />
124
  <?php esc_html_e( 'Custom', Forminator::DOMAIN ); ?>
125
  </label>
126
 
@@ -128,18 +125,18 @@ if ( empty( $poll_submissions_retain_number ) ) {
128
 
129
  <div class="sui-tabs-content">
130
 
131
- <div data-tab-content="retain_poll_submission" class="sui-tab-content sui-tab-boxed<?php echo( ! $poll_retain_forever ? ' active' : '' ); ?>">
132
 
133
  <div class="sui-row">
134
  <div class="sui-col-md-6">
135
  <div class="sui-form-field">
136
 
137
  <input type="number"
138
- name="votes_retention_number"
139
- placeholder="<?php esc_html_e( 'E.g. 10', Forminator::DOMAIN ); ?>"
140
- value="<?php echo esc_attr( $polls_retain_number ); ?>"
141
- min="0"
142
- class="sui-form-control sui-form-control-inline"/>
143
  </div>
144
  </div>
145
  <div class="sui-col-md-6">
@@ -147,13 +144,13 @@ if ( empty( $poll_submissions_retain_number ) ) {
147
 
148
  <select name="votes_retention_unit">
149
  <option value="days" <?php selected( $polls_retain_unit, 'days' ); ?>>
150
- <?php esc_html_e( "day(s)", Forminator::DOMAIN ); ?></option>
151
  <option value="weeks" <?php selected( $polls_retain_unit, 'weeks' ); ?>>
152
- <?php esc_html_e( "week(s)", Forminator::DOMAIN ); ?></option>
153
  <option value="months" <?php selected( $polls_retain_unit, 'months' ); ?>>
154
- <?php esc_html_e( "month(s)", Forminator::DOMAIN ); ?></option>
155
  <option value="years" <?php selected( $polls_retain_unit, 'years' ); ?>>
156
- <?php esc_html_e( "years(s)", Forminator::DOMAIN ); ?></option>
157
  </select>
158
 
159
  </div>
1
  <?php
2
+ // Submissions
3
+ $poll_retain_forever = get_option( 'poll_retain_submission_forever' );
4
  $polls_retain_number = get_option( 'forminator_retain_votes_interval_number', 0 );
5
  $polls_retain_unit = get_option( 'forminator_retain_votes_interval_unit', 'days' );
 
 
 
 
6
 
7
+ // IP
8
+ $poll_submissions_retain_forever = get_option( 'retain_poll_forever' );
9
  $poll_submissions_retain_number = get_option( 'forminator_retain_poll_submissions_interval_number', 0 );
10
  $poll_submissions_retain_unit = get_option( 'forminator_retain_poll_submissions_interval_unit', 'days' );
 
 
 
 
 
11
  ?>
12
 
13
  <div class="sui-box-settings-row">
20
  <div class="sui-box-settings-col-2">
21
 
22
  <span class="sui-settings-label"><?php esc_html_e( 'Submissions Retention', Forminator::DOMAIN ); ?></span>
23
+ <span class="sui-description"><?php esc_html_e( 'How long do you want to retain the poll\'s submissions for?', Forminator::DOMAIN ); ?></span>
24
 
25
  <div class="sui-side-tabs" style="margin-top: 10px;">
26
 
27
  <div class="sui-tabs-menu">
28
 
29
+ <label for="poll_retain_submission-true" class="sui-tab-item<?php echo( $poll_retain_forever ? ' active' : '' ); ?>">
30
  <input type="radio"
31
+ name="poll_retain_submission_forever"
32
+ value="true"
33
+ id="poll_retain_submission-true"
34
+ <?php checked( $poll_retain_forever, true ); ?> />
35
  <?php esc_html_e( 'Forever', Forminator::DOMAIN ); ?>
36
  </label>
37
 
38
+ <label for="poll_retain_submission-false" class="sui-tab-item<?php echo( ! $poll_retain_forever ? ' active' : '' ); ?>">
39
  <input type="radio"
40
+ name="poll_retain_submission_forever"
41
+ value="false"
42
+ id="poll_retain_submission-false"
43
+ data-tab-menu="poll_retain_submission"
44
+ <?php checked( $poll_retain_forever, false ); ?> />
45
  <?php esc_html_e( 'Custom', Forminator::DOMAIN ); ?>
46
  </label>
47
 
49
 
50
  <div class="sui-tabs-content">
51
 
52
+ <div data-tab-content="poll_retain_submission" class="sui-tab-content sui-tab-boxed<?php echo( ! $poll_retain_forever ? ' active' : '' ); ?>">
53
 
54
  <div class="sui-row">
55
  <div class="sui-col-md-6">
56
  <div class="sui-form-field">
57
 
58
  <input type="number"
59
+ name="poll_submissions_retention_number"
60
+ placeholder="<?php esc_html_e( 'E.g. 10', Forminator::DOMAIN ); ?>"
61
+ value="<?php echo esc_attr( $poll_submissions_retain_number ); ?>"
62
+ min="0"
63
+ class="sui-form-control sui-form-control-inline"/>
64
 
65
  </div>
66
  </div>
68
  <div class="sui-form-field">
69
  <select name="poll_submissions_retention_unit">
70
  <option value="days" <?php selected( $poll_submissions_retain_unit, 'days' ); ?>>
71
+ <?php esc_html_e( 'day(s)', Forminator::DOMAIN ); ?></option>
72
  <option value="weeks" <?php selected( $poll_submissions_retain_unit, 'weeks' ); ?>>
73
+ <?php esc_html_e( 'week(s)', Forminator::DOMAIN ); ?></option>
74
  <option value="months" <?php selected( $poll_submissions_retain_unit, 'months' ); ?>>
75
+ <?php esc_html_e( 'month(s)', Forminator::DOMAIN ); ?></option>
76
  <option value="years" <?php selected( $poll_submissions_retain_unit, 'years' ); ?>>
77
+ <?php esc_html_e( 'years(s)', Forminator::DOMAIN ); ?></option>
78
  </select>
79
 
80
  </div>
90
 
91
  <span class="sui-settings-label"><?php esc_html_e( 'IP Retention', Forminator::DOMAIN ); ?></span>
92
  <span class="sui-description">
93
+ <?php
94
+ esc_html_e(
95
+ 'Choose how long to retain IP address before a submission is anonymized. Keep in mind that the IP address is being used in checking multiple votes from same user.',
96
+ Forminator::DOMAIN
97
+ );
98
+ ?>
99
  </span>
100
 
101
  <div class="sui-side-tabs" style="margin-top: 10px;">
102
 
103
  <div class="sui-tabs-menu">
104
 
105
+ <label for="retain_poll_submission-true" class="sui-tab-item<?php echo( $poll_submissions_retain_forever ? ' active' : '' ); ?>">
106
  <input type="radio"
107
+ name="retain_poll_forever"
108
+ value="true"
109
+ id="retain_poll_submission-true"
110
+ <?php checked( $poll_submissions_retain_forever, true ); ?> />
111
  <?php esc_html_e( 'Forever', Forminator::DOMAIN ); ?>
112
  </label>
113
 
114
+ <label for="retain_poll_submission-false" class="sui-tab-item<?php echo( ! $poll_submissions_retain_forever ? ' active' : '' ); ?>">
115
  <input type="radio"
116
+ name="retain_poll_forever"
117
+ value="false"
118
+ data-tab-menu="retain_poll_submission"
119
+ id="retain_poll_submission-false"
120
+ <?php checked( $poll_submissions_retain_forever, false ); ?> />
121
  <?php esc_html_e( 'Custom', Forminator::DOMAIN ); ?>
122
  </label>
123
 
125
 
126
  <div class="sui-tabs-content">
127
 
128
+ <div data-tab-content="retain_poll_submission" class="sui-tab-content sui-tab-boxed<?php echo( ! $poll_submissions_retain_forever ? ' active' : '' ); ?>">
129
 
130
  <div class="sui-row">
131
  <div class="sui-col-md-6">
132
  <div class="sui-form-field">
133
 
134
  <input type="number"
135
+ name="votes_retention_number"
136
+ placeholder="<?php esc_html_e( 'E.g. 10', Forminator::DOMAIN ); ?>"
137
+ value="<?php echo esc_attr( $polls_retain_number ); ?>"
138
+ min="0"
139
+ class="sui-form-control sui-form-control-inline"/>
140
  </div>
141
  </div>
142
  <div class="sui-col-md-6">
144
 
145
  <select name="votes_retention_unit">
146
  <option value="days" <?php selected( $polls_retain_unit, 'days' ); ?>>
147
+ <?php esc_html_e( 'day(s)', Forminator::DOMAIN ); ?></option>
148
  <option value="weeks" <?php selected( $polls_retain_unit, 'weeks' ); ?>>
149
+ <?php esc_html_e( 'week(s)', Forminator::DOMAIN ); ?></option>
150
  <option value="months" <?php selected( $polls_retain_unit, 'months' ); ?>>
151
+ <?php esc_html_e( 'month(s)', Forminator::DOMAIN ); ?></option>
152
  <option value="years" <?php selected( $polls_retain_unit, 'years' ); ?>>
153
+ <?php esc_html_e( 'years(s)', Forminator::DOMAIN ); ?></option>
154
  </select>
155
 
156
  </div>
admin/views/settings/data/quizzes-privacy.php CHANGED
@@ -1,12 +1,7 @@
1
  <?php
2
-
3
- $quiz_retain_number = get_option( 'forminator_retain_quiz_submissions_interval_number', 0 );
4
- $quiz_retain_unit = get_option( 'forminator_retain_quiz_submissions_interval_unit', 'days' );
5
- $quiz_retain_forever = false;
6
- if ( empty( $quiz_retain_number ) ) {
7
- $quiz_retain_forever = true;
8
- }
9
-
10
  ?>
11
 
12
  <div class="sui-box-settings-row">
@@ -27,19 +22,19 @@ if ( empty( $quiz_retain_number ) ) {
27
 
28
  <label for="quiz_retain_submission-true" class="sui-tab-item<?php echo( $quiz_retain_forever ? ' active' : '' ); ?>">
29
  <input type="radio"
30
- name="quiz_retain_submission_forever"
31
- value="true"
32
- id="quiz_retain_submission-true"
33
  <?php checked( $quiz_retain_forever, true ); ?> />
34
  <?php esc_html_e( 'Forever', Forminator::DOMAIN ); ?>
35
  </label>
36
 
37
  <label for="quiz_retain_submission-false" class="sui-tab-item<?php echo( ! $quiz_retain_forever ? ' active' : '' ); ?>">
38
  <input type="radio"
39
- name="quiz_retain_submission_forever"
40
- value="false"
41
- id="quiz_retain_submission-false"
42
- data-tab-menu="quiz_retain_submission"
43
  <?php checked( $quiz_retain_forever, false ); ?> />
44
  <?php esc_html_e( 'Custom', Forminator::DOMAIN ); ?>
45
  </label>
@@ -54,11 +49,11 @@ if ( empty( $quiz_retain_number ) ) {
54
  <div class="sui-form-field">
55
 
56
  <input type="number"
57
- name="quiz_submissions_retention_number"
58
- placeholder="<?php esc_html_e( 'E.g. 10', Forminator::DOMAIN ); ?>"
59
- value="<?php echo esc_attr( $quiz_retain_number ); ?>"
60
- min="0"
61
- class="sui-form-control sui-form-control-inline"/>
62
  </div>
63
  </div>
64
  <div class="sui-col-md-6">
@@ -66,13 +61,13 @@ if ( empty( $quiz_retain_number ) ) {
66
 
67
  <select name="quiz_submissions_retention_unit">
68
  <option value="days" <?php selected( $quiz_retain_unit, 'days' ); ?>>
69
- <?php esc_html_e( "day(s)", Forminator::DOMAIN ); ?></option>
70
  <option value="weeks" <?php selected( $quiz_retain_unit, 'weeks' ); ?>>
71
- <?php esc_html_e( "week(s)", Forminator::DOMAIN ); ?></option>
72
  <option value="months" <?php selected( $quiz_retain_unit, 'months' ); ?>>
73
- <?php esc_html_e( "month(s)", Forminator::DOMAIN ); ?></option>
74
  <option value="years" <?php selected( $quiz_retain_unit, 'years' ); ?>>
75
- <?php esc_html_e( "years(s)", Forminator::DOMAIN ); ?></option>
76
  </select>
77
 
78
  </div>
1
  <?php
2
+ $quiz_retain_forever = get_option( 'quiz_retain_submission_forever' );
3
+ $quiz_retain_number = get_option( 'forminator_retain_quiz_submissions_interval_number', 0 );
4
+ $quiz_retain_unit = get_option( 'forminator_retain_quiz_submissions_interval_unit', 'days' );
 
 
 
 
 
5
  ?>
6
 
7
  <div class="sui-box-settings-row">
22
 
23
  <label for="quiz_retain_submission-true" class="sui-tab-item<?php echo( $quiz_retain_forever ? ' active' : '' ); ?>">
24
  <input type="radio"
25
+ name="quiz_retain_submission_forever"
26
+ value="true"
27
+ id="quiz_retain_submission-true"
28
  <?php checked( $quiz_retain_forever, true ); ?> />
29
  <?php esc_html_e( 'Forever', Forminator::DOMAIN ); ?>
30
  </label>
31
 
32
  <label for="quiz_retain_submission-false" class="sui-tab-item<?php echo( ! $quiz_retain_forever ? ' active' : '' ); ?>">
33
  <input type="radio"
34
+ name="quiz_retain_submission_forever"
35
+ value="false"
36
+ id="quiz_retain_submission-false"
37
+ data-tab-menu="quiz_retain_submission"
38
  <?php checked( $quiz_retain_forever, false ); ?> />
39
  <?php esc_html_e( 'Custom', Forminator::DOMAIN ); ?>
40
  </label>
49
  <div class="sui-form-field">
50
 
51
  <input type="number"
52
+ name="quiz_submissions_retention_number"
53
+ placeholder="<?php esc_html_e( 'E.g. 10', Forminator::DOMAIN ); ?>"
54
+ value="<?php echo esc_attr( $quiz_retain_number ); ?>"
55
+ min="0"
56
+ class="sui-form-control sui-form-control-inline"/>
57
  </div>
58
  </div>
59
  <div class="sui-col-md-6">
61
 
62
  <select name="quiz_submissions_retention_unit">
63
  <option value="days" <?php selected( $quiz_retain_unit, 'days' ); ?>>
64
+ <?php esc_html_e( 'day(s)', Forminator::DOMAIN ); ?></option>
65
  <option value="weeks" <?php selected( $quiz_retain_unit, 'weeks' ); ?>>
66
+ <?php esc_html_e( 'week(s)', Forminator::DOMAIN ); ?></option>
67
  <option value="months" <?php selected( $quiz_retain_unit, 'months' ); ?>>
68
+ <?php esc_html_e( 'month(s)', Forminator::DOMAIN ); ?></option>
69
  <option value="years" <?php selected( $quiz_retain_unit, 'years' ); ?>>
70
+ <?php esc_html_e( 'years(s)', Forminator::DOMAIN ); ?></option>
71
  </select>
72
 
73
  </div>
admin/views/settings/header.php CHANGED
@@ -1,9 +1,9 @@
1
- <h1 class="sui-header-title"><?php esc_html_e( "Settings", Forminator::DOMAIN ); ?></h1>
2
 
3
  <div class="sui-actions-right">
4
  <?php if ( forminator_is_show_documentation_link() ) : ?>
5
  <a href="https://premium.wpmudev.org/docs/wpmu-dev-plugins/forminator/#settings" target="_blank" class="sui-button sui-button-ghost">
6
- <i class="sui-icon-academy"></i> <?php esc_html_e( "View Documentation", Forminator::DOMAIN ); ?>
7
  </a>
8
  <?php endif; ?>
9
  </div>
1
+ <h1 class="sui-header-title"><?php esc_html_e( 'Settings', Forminator::DOMAIN ); ?></h1>
2
 
3
  <div class="sui-actions-right">
4
  <?php if ( forminator_is_show_documentation_link() ) : ?>
5
  <a href="https://premium.wpmudev.org/docs/wpmu-dev-plugins/forminator/#settings" target="_blank" class="sui-button sui-button-ghost">
6
+ <i class="sui-icon-academy"></i> <?php esc_html_e( 'View Documentation', Forminator::DOMAIN ); ?>
7
  </a>
8
  <?php endif; ?>
9
  </div>
admin/views/settings/payments/paypal.php CHANGED
@@ -1,15 +1,15 @@
1
  <?php
2
  // defaults
3
  $vars = array(
4
- 'error_message' => '',
5
- 'sandbox_id' => '',
6
- 'sandbox_id_error' => '',
7
  'sandbox_secret' => '',
8
  'sandbox_secret_error' => '',
9
- 'live_id' => '',
10
- 'live_id_error' => '',
11
- 'live_secret' => '',
12
- 'live_secret_error' => '',
13
 
14
  );
15
  /** @var array $template_vars */
@@ -18,7 +18,7 @@ foreach ( $template_vars as $key => $val ) {
18
  }
19
  ?>
20
 
21
- <span class="sui-description"><?php printf( esc_html__( 'Enter your PayPal REST API keys to connect your account. You can create a REST API app %1$shere%2$s to grab the credentials.' ), '<a href="https://developer.paypal.com/developer/applications/" target="_blank">', '</a>' ); ?></span>
22
 
23
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
24
 
1
  <?php
2
  // defaults
3
  $vars = array(
4
+ 'error_message' => '',
5
+ 'sandbox_id' => '',
6
+ 'sandbox_id_error' => '',
7
  'sandbox_secret' => '',
8
  'sandbox_secret_error' => '',
9
+ 'live_id' => '',
10
+ 'live_id_error' => '',
11
+ 'live_secret' => '',
12
+ 'live_secret_error' => '',
13
 
14
  );
15
  /** @var array $template_vars */
18
  }
19
  ?>
20
 
21
+ <span class="sui-description"><?php /* translators: ... */ printf( esc_html__( 'Enter your PayPal REST API keys to connect your account. You can create a REST API app %1$shere%2$s to grab the credentials.' ), '<a href="https://developer.paypal.com/developer/applications/" target="_blank">', '</a>' ); ?></span>
22
 
23
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
24
 
admin/views/settings/payments/section-paypal.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  $plugin_url = forminator_plugin_url();
3
  $paypal_min_php_version = apply_filters( 'forminator_payments_paypal_min_php_version', '5.3' );
4
- $paypal_loaded = forminator_payment_lib_paypal_version_loaded('1.14.0');
5
  $paypal_is_configured = false;
6
  $forminator_currencies = forminator_pp_currency_list();
7
  $paypal_default_currency = 'USD';
@@ -34,7 +34,7 @@ if ( $paypal_loaded ) {
34
 
35
  <div class="sui-notice sui-notice-warning">
36
 
37
- <p><?php printf( esc_html__( 'To be able to use PayPal Payments feature please upgrade your PHP to %1$sversion %2$s%3$s or above.', Forminator::DOMAIN ), '<strong>', esc_html( $paypal_min_php_version ), '</strong>' ); ?></p>
38
 
39
  </div>
40
 
@@ -59,8 +59,8 @@ if ( $paypal_loaded ) {
59
  <button
60
  class="sui-button paypal-connect-modal"
61
  type="button"
62
- data-modal-image="<?php echo $plugin_url . 'assets/images/paypal-logo.png'; // WPCS: XSS ok. ?>"
63
- data-modal-image-x2="<?php echo $plugin_url . 'assets/images/paypal-logo@2x.png'; // WPCS: XSS ok. ?>"
64
  data-modal-title="<?php esc_html_e( 'Connect PayPal Account', Forminator::DOMAIN ); ?>"
65
  data-modal-nonce="<?php echo esc_html( wp_create_nonce( 'forminator_paypal_settings_modal' ) ); ?>"
66
  >
@@ -70,97 +70,97 @@ if ( $paypal_loaded ) {
70
  </div>
71
 
72
  <?php } else { ?>
73
- <table class="sui-table" style="margin-top: 10px;">
74
 
75
- <thead>
76
 
77
- <tr>
78
- <th><?php esc_html_e( 'Account Type', Forminator::DOMAIN ); ?></th>
79
- <th colspan="2"><?php esc_html_e( 'Client Id', Forminator::DOMAIN ); ?></th>
80
- </tr>
81
 
82
- </thead>
83
 
84
- <tbody>
85
 
86
- <tr>
87
- <td class="sui-table-title"><?php esc_html_e( 'Sandbox', Forminator::DOMAIN ); ?></td>
88
- <td colspan="2"><span style="display: block; word-break: break-all;"><?php echo esc_html( $paypal->get_sandbox_id() ); ?></span></td>
89
- </tr>
90
 
91
- <tr>
92
- <td class="sui-table-title"><?php esc_html_e( 'Live', Forminator::DOMAIN ); ?></td>
93
- <td colspan="2"><span style="display: block; word-break: break-all;"><?php echo esc_html( $paypal->get_live_id() ); ?></span></td>
94
- </tr>
95
 
96
- </tbody>
97
 
98
- <tfoot>
99
 
100
- <tr>
101
 
102
- <td colspan="3">
103
 
104
- <div class="fui-buttons-alignment">
105
 
106
- <form class="forminator-settings-save">
107
 
108
- <button
109
- class="sui-button sui-button-ghost wpmudev-open-modal"
110
- data-modal="disconnect-paypal"
111
- data-modal-title="<?php esc_attr_e( 'Disconnect PayPal Account', Forminator::DOMAIN ); ?>"
112
- data-modal-content="<?php esc_attr_e( 'Are you sure you want to disconnect your PayPal Account? This will affect the forms using the PayPal field.', Forminator::DOMAIN ); ?>"
113
- data-nonce="<?php echo wp_create_nonce( 'forminatorSettingsRequest' ); // WPCS: XSS ok. ?>"
114
- >
115
 
116
  <span class="sui-loading-text">
117
  <?php esc_html_e( 'Disconnect', Forminator::DOMAIN ); ?>
118
  </span>
119
 
120
- <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
121
 
122
- </button>
123
 
124
- </form>
125
 
126
- <button
127
- class="sui-button paypal-connect-modal"
128
- type="button"
129
- data-modal-image="<?php echo $plugin_url . 'assets/images/paypal-logo.png'; // WPCS: XSS ok. ?>"
130
- data-modal-image-x2="<?php echo $plugin_url . 'assets/images/paypal-logo@2x.png'; // WPCS: XSS ok. ?>"
131
- data-modal-title="<?php esc_html_e( 'Connect PayPal Account', Forminator::DOMAIN ); ?>"
132
- data-modal-nonce="<?php echo esc_html( wp_create_nonce( 'forminator_paypal_settings_modal' ) ); ?>"
133
- >
134
  <?php esc_html_e( 'Configure', Forminator::DOMAIN ); ?>
135
- </button>
136
 
137
- </div>
138
 
139
- </td>
140
 
141
- </tr>
142
 
143
- </tfoot>
144
 
145
  </table>
146
 
147
- <div class="sui-form-field">
148
 
149
- <label for="forminator-stripe-currency" class="sui-settings-label"><?php esc_html_e( 'Default charge currency', Forminator::DOMAIN ); ?></label>
150
 
151
- <span class="sui-description" aria-describedby="forminator-stripe-currency"><?php esc_html_e( 'Choose the default charge currency for your PayPal payments. You can override this while setting up the PayPal field in your forms.', Forminator::DOMAIN ); ?></span>
152
 
153
- <div style="max-width: 240px; display: block; margin-top: 10px;">
154
 
155
- <select class="sui-select" id="forminator-paypal-currency" name="paypal-default-currency">
156
  <?php foreach ( $forminator_currencies as $currency => $currency_nice ) : ?>
157
- <option value="<?php echo esc_attr( $currency ); ?>" <?php echo selected( $currency, $paypal_default_currency ); ?>><?php echo esc_html( $currency ); ?></option>
158
  <?php endforeach; ?>
159
- </select>
160
 
161
- </div>
162
 
163
- </div>
164
  <?php } ?>
165
  <?php endif; ?>
166
 
1
  <?php
2
  $plugin_url = forminator_plugin_url();
3
  $paypal_min_php_version = apply_filters( 'forminator_payments_paypal_min_php_version', '5.3' );
4
+ $paypal_loaded = forminator_payment_lib_paypal_version_loaded( '1.14.0' );
5
  $paypal_is_configured = false;
6
  $forminator_currencies = forminator_pp_currency_list();
7
  $paypal_default_currency = 'USD';
34
 
35
  <div class="sui-notice sui-notice-warning">
36
 
37
+ <p><?php /* translators: ... */ printf( esc_html__( 'To be able to use PayPal Payments feature please upgrade your PHP to %1$sversion %2$s%3$s or above.', Forminator::DOMAIN ), '<strong>', esc_html( $paypal_min_php_version ), '</strong>' ); ?></p>
38
 
39
  </div>
40
 
59
  <button
60
  class="sui-button paypal-connect-modal"
61
  type="button"
62
+ data-modal-image="<?php echo esc_url( $plugin_url . 'assets/images/paypal-logo.png' ); ?>"
63
+ data-modal-image-x2="<?php echo esc_url( $plugin_url . 'assets/images/paypal-logo@2x.png' ); ?>"
64
  data-modal-title="<?php esc_html_e( 'Connect PayPal Account', Forminator::DOMAIN ); ?>"
65
  data-modal-nonce="<?php echo esc_html( wp_create_nonce( 'forminator_paypal_settings_modal' ) ); ?>"
66
  >
70
  </div>
71
 
72
  <?php } else { ?>
73
+ <table class="sui-table" style="margin-top: 10px;">
74
 
75
+ <thead>
76
 
77
+ <tr>
78
+ <th><?php esc_html_e( 'Account Type', Forminator::DOMAIN ); ?></th>
79
+ <th colspan="2"><?php esc_html_e( 'Client Id', Forminator::DOMAIN ); ?></th>
80
+ </tr>
81
 
82
+ </thead>
83
 
84
+ <tbody>
85
 
86
+ <tr>
87
+ <td class="sui-table-title"><?php esc_html_e( 'Sandbox', Forminator::DOMAIN ); ?></td>
88
+ <td colspan="2"><span style="display: block; word-break: break-all;"><?php echo esc_html( $paypal->get_sandbox_id() ); ?></span></td>
89
+ </tr>
90
 
91
+ <tr>
92
+ <td class="sui-table-title"><?php esc_html_e( 'Live', Forminator::DOMAIN ); ?></td>
93
+ <td colspan="2"><span style="display: block; word-break: break-all;"><?php echo esc_html( $paypal->get_live_id() ); ?></span></td>
94
+ </tr>
95
 
96
+ </tbody>
97
 
98
+ <tfoot>
99
 
100
+ <tr>
101
 
102
+ <td colspan="3">
103
 
104
+ <div class="fui-buttons-alignment">
105
 
106
+ <form class="forminator-settings-save">
107
 
108
+ <button
109
+ class="sui-button sui-button-ghost wpmudev-open-modal"
110
+ data-modal="disconnect-paypal"
111
+ data-modal-title="<?php esc_attr_e( 'Disconnect PayPal Account', Forminator::DOMAIN ); ?>"
112
+ data-modal-content="<?php esc_attr_e( 'Are you sure you want to disconnect your PayPal Account? This will affect the forms using the PayPal field.', Forminator::DOMAIN ); ?>"
113
+ data-nonce="<?php echo esc_attr( wp_create_nonce( 'forminatorSettingsRequest' ) ); ?>"
114
+ >
115
 
116
  <span class="sui-loading-text">
117
  <?php esc_html_e( 'Disconnect', Forminator::DOMAIN ); ?>
118
  </span>
119
 
120
+ <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
121
 
122
+ </button>
123
 
124
+ </form>
125
 
126
+ <button
127
+ class="sui-button paypal-connect-modal"
128
+ type="button"
129
+ data-modal-image="<?php echo esc_url( $plugin_url . 'assets/images/paypal-logo.png' ); ?>"
130
+ data-modal-image-x2="<?php echo esc_url( $plugin_url . 'assets/images/paypal-logo@2x.png' ); ?>"
131
+ data-modal-title="<?php esc_html_e( 'Connect PayPal Account', Forminator::DOMAIN ); ?>"
132
+ data-modal-nonce="<?php echo esc_html( wp_create_nonce( 'forminator_paypal_settings_modal' ) ); ?>"
133
+ >
134
  <?php esc_html_e( 'Configure', Forminator::DOMAIN ); ?>
135
+ </button>
136
 
137
+ </div>
138
 
139
+ </td>
140
 
141
+ </tr>
142
 
143
+ </tfoot>
144
 
145
  </table>
146
 
147
+ <div class="sui-form-field">
148
 
149
+ <label for="forminator-stripe-currency" class="sui-settings-label"><?php esc_html_e( 'Default charge currency', Forminator::DOMAIN ); ?></label>
150
 
151
+ <span class="sui-description" aria-describedby="forminator-stripe-currency"><?php esc_html_e( 'Choose the default charge currency for your PayPal payments. You can override this while setting up the PayPal field in your forms.', Forminator::DOMAIN ); ?></span>
152
 
153
+ <div style="max-width: 240px; display: block; margin-top: 10px;">
154
 
155
+ <select class="sui-select" id="forminator-paypal-currency" name="paypal-default-currency">
156
  <?php foreach ( $forminator_currencies as $currency => $currency_nice ) : ?>
157
+ <option value="<?php echo esc_attr( $currency ); ?>" <?php echo selected( $currency, $paypal_default_currency ); ?>><?php echo esc_html( $currency ); ?></option>
158
  <?php endforeach; ?>
159
+ </select>
160
 
161
+ </div>
162
 
163
+ </div>
164
  <?php } ?>
165
  <?php endif; ?>
166
 
admin/views/settings/payments/section-stripe.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  $plugin_url = forminator_plugin_url();
3
- $stripe_min_php_version = apply_filters( 'forminator_payments_stripe_min_php_version', '5.4.0' );
4
  $stripe_loaded = forminator_payment_lib_stripe_version_loaded();
5
  $stripe_is_configured = false;
6
  $forminator_currencies = forminator_currency_list();
@@ -35,7 +35,7 @@ if ( $stripe_loaded ) {
35
 
36
  <div class="sui-notice sui-notice-warning">
37
 
38
- <p><?php printf( esc_html__( 'To be able to use Stripe Payments feature please upgrade your PHP to %1$sversion %2$s%3$s or above.', Forminator::DOMAIN ), '<strong>', esc_html( $stripe_min_php_version ), '</strong>' ); ?></p>
39
 
40
  </div>
41
 
@@ -60,8 +60,8 @@ if ( $stripe_loaded ) {
60
  <button
61
  class="sui-button stripe-connect-modal"
62
  type="button"
63
- data-modal-image="<?php echo $plugin_url . 'assets/images/stripe-logo.png'; // WPCS: XSS ok. ?>"
64
- data-modal-image-x2="<?php echo $plugin_url . 'assets/images/stripe-logo@2x.png'; // WPCS: XSS ok. ?>"
65
  data-modal-title="<?php esc_html_e( 'Connect Stripe Account', Forminator::DOMAIN ); ?>"
66
  data-modal-nonce="<?php echo esc_html( wp_create_nonce( 'forminator_stripe_settings_modal' ) ); ?>"
67
  >
@@ -73,7 +73,8 @@ if ( $stripe_loaded ) {
73
  <?php } else { ?>
74
 
75
  <?php
76
- // SETTINGS: Authorization ?>
 
77
  <table class="sui-table" style="margin-top: 10px;">
78
 
79
  <thead>
@@ -114,7 +115,7 @@ if ( $stripe_loaded ) {
114
  data-modal="disconnect-stripe"
115
  data-modal-title="<?php esc_attr_e( 'Disconnect Stripe Account', Forminator::DOMAIN ); ?>"
116
  data-modal-content="<?php esc_attr_e( 'Are you sure you want to disconnect your Stripe Account? This will affect the forms using the Stripe field.', Forminator::DOMAIN ); ?>"
117
- data-nonce="<?php echo wp_create_nonce( 'forminatorSettingsRequest' ); // WPCS: XSS ok. ?>"
118
  >
119
 
120
  <span class="sui-loading-text">
@@ -130,8 +131,8 @@ if ( $stripe_loaded ) {
130
  <button
131
  class="sui-button stripe-connect-modal"
132
  type="button"
133
- data-modal-image="<?php echo $plugin_url . 'assets/images/stripe-logo.png'; // WPCS: XSS ok. ?>"
134
- data-modal-image-x2="<?php echo $plugin_url . 'assets/images/stripe-logo@2x.png'; // WPCS: XSS ok. ?>"
135
  data-modal-title="<?php esc_html_e( 'Connect Stripe Account', Forminator::DOMAIN ); ?>"
136
  data-modal-nonce="<?php echo esc_html( wp_create_nonce( 'forminator_stripe_settings_modal' ) ); ?>"
137
  >
1
  <?php
2
  $plugin_url = forminator_plugin_url();
3
+ $stripe_min_php_version = apply_filters( 'forminator_payments_stripe_min_php_version', '5.6.0' );
4
  $stripe_loaded = forminator_payment_lib_stripe_version_loaded();
5
  $stripe_is_configured = false;
6
  $forminator_currencies = forminator_currency_list();
35
 
36
  <div class="sui-notice sui-notice-warning">
37
 
38
+ <p><?php /* translators: ... */ printf( esc_html__( 'To be able to use Stripe Payments feature please upgrade your PHP to %1$sversion %2$s%3$s or above.', Forminator::DOMAIN ), '<strong>', esc_html( $stripe_min_php_version ), '</strong>' ); ?></p>
39
 
40
  </div>
41
 
60
  <button
61
  class="sui-button stripe-connect-modal"
62
  type="button"
63
+ data-modal-image="<?php echo esc_url( $plugin_url . 'assets/images/stripe-logo.png' ); ?>"
64
+ data-modal-image-x2="<?php echo esc_url( $plugin_url . 'assets/images/stripe-logo@2x.png' ); ?>"
65
  data-modal-title="<?php esc_html_e( 'Connect Stripe Account', Forminator::DOMAIN ); ?>"
66
  data-modal-nonce="<?php echo esc_html( wp_create_nonce( 'forminator_stripe_settings_modal' ) ); ?>"
67
  >
73
  <?php } else { ?>
74
 
75
  <?php
76
+ // SETTINGS: Authorization
77
+ ?>
78
  <table class="sui-table" style="margin-top: 10px;">
79
 
80
  <thead>
115
  data-modal="disconnect-stripe"
116
  data-modal-title="<?php esc_attr_e( 'Disconnect Stripe Account', Forminator::DOMAIN ); ?>"
117
  data-modal-content="<?php esc_attr_e( 'Are you sure you want to disconnect your Stripe Account? This will affect the forms using the Stripe field.', Forminator::DOMAIN ); ?>"
118
+ data-nonce="<?php echo esc_attr( wp_create_nonce( 'forminatorSettingsRequest' ) ); ?>"
119
  >
120
 
121
  <span class="sui-loading-text">
131
  <button
132
  class="sui-button stripe-connect-modal"
133
  type="button"
134
+ data-modal-image="<?php echo esc_url( $plugin_url . 'assets/images/stripe-logo.png' ); ?>"
135
+ data-modal-image-x2="<?php echo esc_url( $plugin_url . 'assets/images/stripe-logo@2x.png' ); ?>"
136
  data-modal-title="<?php esc_html_e( 'Connect Stripe Account', Forminator::DOMAIN ); ?>"
137
  data-modal-nonce="<?php echo esc_html( wp_create_nonce( 'forminator_stripe_settings_modal' ) ); ?>"
138
  >
admin/views/settings/payments/stripe.php CHANGED
@@ -18,7 +18,7 @@ foreach ( $template_vars as $key => $val ) {
18
  }
19
  ?>
20
 
21
- <span class="sui-description"><?php printf( esc_html__( 'Enter your Stripe API keys below to connect your account. You can grab your API keys from %1$shere%2$s.' ), '<a href="https://dashboard.stripe.com/account/apikeys" target="_blank">', '</a>' ); ?></span>
22
 
23
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
24
 
18
  }
19
  ?>
20
 
21
+ <span class="sui-description"><?php /* translators: ... */ printf( esc_html__( 'Enter your Stripe API keys below to connect your account. You can grab your API keys from %1$shere%2$s.' ), '<a href="https://dashboard.stripe.com/account/apikeys" target="_blank">', '</a>' ); ?></span>
22
 
23
  <?php if ( ! empty( $vars['error_message'] ) ) : ?>
24
 
admin/views/settings/tab-accessibility.php CHANGED
@@ -1,6 +1,5 @@
1
  <?php
2
  $section = isset( $_GET['section'] ) ? sanitize_text_field( $_GET['section'] ) : 'dashboard';
3
-
4
  $nonce = wp_create_nonce( 'forminator_save_accessibility_settings' );
5
  $accessibility_enabled = get_option( 'forminator_enable_accessibility', false );
6
  $accessibility_enabled = filter_var( $accessibility_enabled, FILTER_VALIDATE_BOOLEAN );
@@ -17,9 +16,9 @@ $accessibility_enabled = filter_var( $accessibility_enabled, FILTER_VALIDATE_BOO
17
 
18
  <div class="sui-box-body">
19
 
20
- <div class="sui-box-settings-row">
21
- <p><?php esc_html_e( 'Enable support for any accessibility enhancements available in the plugin interface.', Forminator::DOMAIN ); ?></p>
22
- </div>
23
  <div class="sui-box-settings-row">
24
 
25
  <div class="sui-box-settings-col-1">
@@ -33,9 +32,9 @@ $accessibility_enabled = filter_var( $accessibility_enabled, FILTER_VALIDATE_BOO
33
 
34
  <label for="forminator-color-accessibility" class="sui-toggle">
35
  <input type="checkbox"
36
- name="enable_accessibility"
37
- value="true"
38
- id="forminator-color-accessibility" <?php checked( $accessibility_enabled ); ?>/>
39
  <span class="sui-toggle-slider" aria-hidden="true"></span>
40
  </label>
41
 
@@ -54,10 +53,10 @@ $accessibility_enabled = filter_var( $accessibility_enabled, FILTER_VALIDATE_BOO
54
  <div class="sui-actions-right">
55
 
56
  <button class="sui-button sui-button-blue wpmudev-action-done"
57
- data-title="<?php esc_attr_e( "Accessibility settings", Forminator::DOMAIN ); ?>"
58
- data-action="accessibility_settings"
59
- data-nonce="<?php echo esc_attr( $nonce ); ?>"
60
- data-is-reload="true">
61
  <span class="sui-loading-text"><?php esc_html_e( 'Save Settings', Forminator::DOMAIN ); ?></span>
62
  <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
63
  </button>
1
  <?php
2
  $section = isset( $_GET['section'] ) ? sanitize_text_field( $_GET['section'] ) : 'dashboard';
 
3
  $nonce = wp_create_nonce( 'forminator_save_accessibility_settings' );
4
  $accessibility_enabled = get_option( 'forminator_enable_accessibility', false );
5
  $accessibility_enabled = filter_var( $accessibility_enabled, FILTER_VALIDATE_BOOLEAN );
16
 
17
  <div class="sui-box-body">
18
 
19
+ <div class="sui-box-settings-row">
20
+ <p><?php esc_html_e( 'Enable support for any accessibility enhancements available in the plugin interface.', Forminator::DOMAIN ); ?></p>
21
+ </div>
22
  <div class="sui-box-settings-row">
23
 
24
  <div class="sui-box-settings-col-1">
32
 
33
  <label for="forminator-color-accessibility" class="sui-toggle">
34
  <input type="checkbox"
35
+ name="enable_accessibility"
36
+ value="true"
37
+ id="forminator-color-accessibility" <?php checked( $accessibility_enabled ); ?>/>
38
  <span class="sui-toggle-slider" aria-hidden="true"></span>
39
  </label>
40
 
53
  <div class="sui-actions-right">
54
 
55
  <button class="sui-button sui-button-blue wpmudev-action-done"
56
+ data-title="<?php esc_attr_e( 'Accessibility settings', Forminator::DOMAIN ); ?>"
57
+ data-action="accessibility_settings"
58
+ data-nonce="<?php echo esc_attr( $nonce ); ?>"
59
+ data-is-reload="true">
60
  <span class="sui-loading-text"><?php esc_html_e( 'Save Settings', Forminator::DOMAIN ); ?></span>
61
  <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
62
  </button>
admin/views/settings/tab-dashboard.php CHANGED
@@ -1,6 +1,5 @@
1
  <?php
2
  $section = isset( $_GET['section'] ) ? sanitize_text_field( $_GET['section'] ) : 'dashboard';
3
-
4
  $nonce = wp_create_nonce( 'forminator_save_dashboard_settings' );
5
  ?>
6
 
@@ -71,7 +70,7 @@ $nonce = wp_create_nonce( 'forminator_save_dashboard_settings' );
71
 
72
  <div class="sui-actions-right">
73
 
74
- <button class="sui-button sui-button-blue wpmudev-action-done" data-title="<?php esc_attr_e( "General settings", Forminator::DOMAIN ); ?>" data-action="dashboard_settings" data-nonce="<?php echo esc_attr( $nonce ); ?>">
75
  <span class="sui-loading-text"><?php esc_html_e( 'Save Settings', Forminator::DOMAIN ); ?></span>
76
  <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
77
  </button>
1
  <?php
2
  $section = isset( $_GET['section'] ) ? sanitize_text_field( $_GET['section'] ) : 'dashboard';
 
3
  $nonce = wp_create_nonce( 'forminator_save_dashboard_settings' );
4
  ?>
5
 
70
 
71
  <div class="sui-actions-right">
72
 
73
+ <button class="sui-button sui-button-blue wpmudev-action-done" data-title="<?php esc_attr_e( 'General settings', Forminator::DOMAIN ); ?>" data-action="dashboard_settings" data-nonce="<?php echo esc_attr( $nonce ); ?>">
74
  <span class="sui-loading-text"><?php esc_html_e( 'Save Settings', Forminator::DOMAIN ); ?></span>
75
  <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
76
  </button>
admin/views/settings/tab-data.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  $section = isset( $_GET['section'] ) ? sanitize_text_field( $_GET['section'] ) : 'dashboard';
3
  $nonce = wp_create_nonce( 'forminator_save_popup_uninstall_settings' );
4
- $forminator_uninstall = get_option( "forminator_uninstall_clear_data", false );
5
 
6
  ?>
7
 
@@ -28,18 +28,18 @@ $forminator_uninstall = get_option( "forminator_uninstall_clear_data", false );
28
 
29
  <label for="delete_uninstall-false" class="sui-tab-item<?php echo $forminator_uninstall ? '' : ' active'; ?>">
30
  <input type="radio"
31
- name="delete_uninstall"
32
- value="false"
33
- id="delete_uninstall-false"
34
  <?php echo esc_attr( checked( $forminator_uninstall, false ) ); ?> />
35
  <?php esc_html_e( 'Preserve', Forminator::DOMAIN ); ?>
36
  </label>
37
 
38
  <label for="delete_uninstall-true" class="sui-tab-item<?php echo $forminator_uninstall ? ' active' : ''; ?>">
39
  <input type="radio"
40
- name="delete_uninstall"
41
- value="true"
42
- id="delete_uninstall-true"
43
  <?php echo esc_attr( checked( $forminator_uninstall, true ) ); ?> />
44
  <?php esc_html_e( 'Reset', Forminator::DOMAIN ); ?>
45
  </label>
@@ -64,7 +64,7 @@ $forminator_uninstall = get_option( "forminator_uninstall_clear_data", false );
64
  data-modal="reset-plugin-settings"
65
  data-modal-title="<?php esc_attr_e( 'Reset Plugin', Forminator::DOMAIN ); ?>"
66
  data-modal-content="<?php esc_attr_e( 'Are you sure you want to reset the plugin to its default state?', Forminator::DOMAIN ); ?>"
67
- data-nonce="<?php echo wp_create_nonce( 'forminatorSettingsRequest' ); // WPCS: XSS ok. ?>"
68
  >
69
 
70
  <span class="sui-loading-text">
@@ -74,10 +74,12 @@ $forminator_uninstall = get_option( "forminator_uninstall_clear_data", false );
74
 
75
  </button>
76
  <span class="sui-description">
77
- <?php esc_html_e(
 
78
  'Note: This will delete all the form/polls/quizzes you currently have and revert all settings to their default state.',
79
  Forminator::DOMAIN
80
- ); ?>
 
81
  </span>
82
  </div>
83
 
@@ -89,8 +91,8 @@ $forminator_uninstall = get_option( "forminator_uninstall_clear_data", false );
89
 
90
  <div class="sui-actions-right">
91
 
92
- <button class="sui-button sui-button-blue wpmudev-action-done" data-title="<?php esc_attr_e( "Data settings", Forminator::DOMAIN ); ?>" data-action="uninstall_settings"
93
- data-nonce="<?php echo esc_attr( $nonce ); ?>">
94
  <span class="sui-loading-text"><?php esc_html_e( 'Save Settings', Forminator::DOMAIN ); ?></span>
95
  <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
96
  </button>
1
  <?php
2
  $section = isset( $_GET['section'] ) ? sanitize_text_field( $_GET['section'] ) : 'dashboard';
3
  $nonce = wp_create_nonce( 'forminator_save_popup_uninstall_settings' );
4
+ $forminator_uninstall = get_option( 'forminator_uninstall_clear_data', false );
5
 
6
  ?>
7
 
28
 
29
  <label for="delete_uninstall-false" class="sui-tab-item<?php echo $forminator_uninstall ? '' : ' active'; ?>">
30
  <input type="radio"
31
+ name="delete_uninstall"
32
+ value="false"
33
+ id="delete_uninstall-false"
34
  <?php echo esc_attr( checked( $forminator_uninstall, false ) ); ?> />
35
  <?php esc_html_e( 'Preserve', Forminator::DOMAIN ); ?>
36
  </label>
37
 
38
  <label for="delete_uninstall-true" class="sui-tab-item<?php echo $forminator_uninstall ? ' active' : ''; ?>">
39
  <input type="radio"
40
+ name="delete_uninstall"
41
+ value="true"
42
+ id="delete_uninstall-true"
43
  <?php echo esc_attr( checked( $forminator_uninstall, true ) ); ?> />
44
  <?php esc_html_e( 'Reset', Forminator::DOMAIN ); ?>
45
  </label>
64
  data-modal="reset-plugin-settings"
65
  data-modal-title="<?php esc_attr_e( 'Reset Plugin', Forminator::DOMAIN ); ?>"
66
  data-modal-content="<?php esc_attr_e( 'Are you sure you want to reset the plugin to its default state?', Forminator::DOMAIN ); ?>"
67
+ data-nonce="<?php echo esc_attr( wp_create_nonce( 'forminatorSettingsRequest' ) ); ?>"
68
  >
69
 
70
  <span class="sui-loading-text">
74
 
75
  </button>
76
  <span class="sui-description">
77
+ <?php
78
+ esc_html_e(
79
  'Note: This will delete all the form/polls/quizzes you currently have and revert all settings to their default state.',
80
  Forminator::DOMAIN
81
+ );
82
+ ?>
83
  </span>
84
  </div>
85
 
91
 
92
  <div class="sui-actions-right">
93
 
94
+ <button class="sui-button sui-button-blue wpmudev-action-done" data-title="<?php esc_attr_e( 'Data settings', Forminator::DOMAIN ); ?>" data-action="uninstall_settings"
95
+ data-nonce="<?php echo esc_attr( $nonce ); ?>">
96
  <span class="sui-loading-text"><?php esc_html_e( 'Save Settings', Forminator::DOMAIN ); ?></span>
97
  <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
98
  </button>
admin/views/settings/tab-emails.php CHANGED
@@ -5,43 +5,43 @@ $sender_name = get_global_sender_name();
5
 
6
  <div class="sui-box-settings-row">
7
 
8
- <div class="sui-box-settings-col-1">
9
- <span class="sui-settings-label"><?php esc_html_e( 'From Headers', Forminator::DOMAIN ); ?></span>
10
- <span class="sui-description"><?php esc_html_e( 'Choose the default sender name and sender email address for all of your outgoing emails from Forminator.', Forminator::DOMAIN ); ?></span>
11
- </div>
12
-
13
- <div class="sui-box-settings-col-2">
14
-
15
- <div class="sui-form-field">
16
-
17
- <label for="forminator-settings--sender-email"
18
- class="sui-label"><?php esc_html_e( 'Sender email address', Forminator::DOMAIN ); ?></label>
19
- <input type="email"
20
- name="sender_email"
21
- placeholder="<?php esc_html_e( 'Enter email', Forminator::DOMAIN ); ?>"
22
- value="<?php echo esc_html( $sender_email_address ); ?>"
23
- id="forminator-settings--sender-email"
24
- class="sui-form-control forminator-required"/>
25
- <span class="sui-error-message"
26
- style="display: none;"><?php esc_html_e( 'Please, enter a valid email address.', Forminator::DOMAIN ); ?></span>
27
-
28
- </div>
29
-
30
- <div class="sui-form-field">
31
-
32
- <label for="forminator-settings--sender-name"
33
- class="sui-label"><?php esc_html_e( 'Sender name', Forminator::DOMAIN ); ?></label>
34
- <input type="text"
35
- name="sender_name"
36
- placeholder="<?php esc_html_e( 'Enter name', Forminator::DOMAIN ); ?>"
37
- value="<?php echo esc_html( $sender_name ); ?>"
38
- id="forminator-settings--sender-name"
39
- class="sui-form-control forminator-required"/>
40
- <span class="sui-error-message"
41
- style="display: none;"><?php esc_html_e( 'The sender email cannot be empty.', Forminator::DOMAIN ); ?></span>
42
-
43
- </div>
44
-
45
- </div>
46
-
47
- </div>
5
 
6
  <div class="sui-box-settings-row">
7
 
8
+ <div class="sui-box-settings-col-1">
9
+ <span class="sui-settings-label"><?php esc_html_e( 'From Headers', Forminator::DOMAIN ); ?></span>
10
+ <span class="sui-description"><?php esc_html_e( 'Choose the default sender name and sender email address for all of your outgoing emails from Forminator.', Forminator::DOMAIN ); ?></span>
11
+ </div>
12
+
13
+ <div class="sui-box-settings-col-2">
14
+
15
+ <div class="sui-form-field">
16
+
17
+ <label for="forminator-settings--sender-email"
18
+ class="sui-label"><?php esc_html_e( 'Sender email address', Forminator::DOMAIN ); ?></label>
19
+ <input type="email"
20
+ name="sender_email"
21
+ placeholder="<?php esc_html_e( 'Enter email', Forminator::DOMAIN ); ?>"
22
+ value="<?php echo esc_html( $sender_email_address ); ?>"
23
+ id="forminator-settings--sender-email"
24
+ class="sui-form-control forminator-required"/>
25
+ <span class="sui-error-message"
26
+ style="display: none;"><?php esc_html_e( 'Please, enter a valid email address.', Forminator::DOMAIN ); ?></span>
27
+
28
+ </div>
29
+
30
+ <div class="sui-form-field">
31
+
32
+ <label for="forminator-settings--sender-name"
33
+ class="sui-label"><?php esc_html_e( 'Sender name', Forminator::DOMAIN ); ?></label>
34
+ <input type="text"
35
+ name="sender_name"
36
+ placeholder="<?php esc_html_e( 'Enter name', Forminator::DOMAIN ); ?>"
37
+ value="<?php echo esc_html( $sender_name ); ?>"
38
+ id="forminator-settings--sender-name"
39
+ class="sui-form-control forminator-required"/>
40
+ <span class="sui-error-message"
41
+ style="display: none;"><?php esc_html_e( 'The sender email cannot be empty.', Forminator::DOMAIN ); ?></span>
42
+
43
+ </div>
44
+
45
+ </div>
46
+
47
+ </div>
admin/views/settings/tab-pagination.php CHANGED
@@ -1,54 +1,54 @@
1
  <?php
2
- $entries_per_page = get_option( "forminator_pagination_entries", 10 );
3
- $module_per_page = get_option( "forminator_pagination_listings", 10 );
4
  ?>
5
  <div class="sui-box-settings-row">
6
 
7
- <div class="sui-box-settings-col-1">
8
- <span class="sui-settings-label"><?php esc_html_e( 'Pagination', Forminator::DOMAIN ); ?></span>
9
- <span class="sui-description"><?php esc_html_e( 'Choose the number of items to show per page on your submissions or modules listing pages.', Forminator::DOMAIN ); ?></span>
10
- </div>
11
 
12
- <div class="sui-box-settings-col-2">
13
 
14
- <label class="sui-settings-label"><?php esc_html_e( 'Modules', Forminator::DOMAIN ); ?></label>
15
 
16
- <span class="sui-description"
17
- style="margin-bottom: 10px;"><?php esc_html_e( 'Choose the number of forms, polls, and quizzes to show on each listing page.', Forminator::DOMAIN ); ?></span>
18
 
19
- <div class="sui-form-field">
20
- <input type="number"
21
- name="pagination_listings"
22
- placeholder="<?php esc_html_e( '10', Forminator::DOMAIN ); ?>"
23
- value="<?php echo esc_attr( $module_per_page ); ?>"
24
- min="1"
25
- id="forminator-limit-listing"
26
- class="sui-form-control forminator-required sui-input-sm sui-field-has-suffix"/>
27
 
28
- <span class="sui-field-suffix"><?php esc_html_e( 'modules per page', Forminator::DOMAIN ); ?></span>
29
- <span class="sui-error-message"
30
- style="display: none;"><?php esc_html_e( 'This field cannot be empty.', Forminator::DOMAIN ); ?></span>
31
 
32
- </div>
33
- <label class="sui-settings-label"><?php esc_html_e( 'Submissions', Forminator::DOMAIN ); ?></label>
34
 
35
- <span class="sui-description"
36
- style="margin-bottom: 10px;"><?php esc_html_e( 'Choose the number of submissions to show per page.', Forminator::DOMAIN ); ?></span>
37
 
38
- <div class="sui-form-field">
39
- <input type="number"
40
- name="pagination_entries"
41
- placeholder="<?php esc_html_e( '10', Forminator::DOMAIN ); ?>"
42
- value="<?php echo esc_attr( $entries_per_page ); ?>"
43
- min="1"
44
- id="forminator-limit-entries"
45
- class="sui-form-control forminator-required sui-input-sm sui-field-has-suffix"/>
46
- <span class="sui-field-suffix"><?php esc_html_e( 'submissions per page', Forminator::DOMAIN ); ?></span>
47
- <span class="sui-error-message"
48
- style="display: none;"><?php esc_html_e( 'This field cannot be empty.', Forminator::DOMAIN ); ?></span>
49
 
50
- </div>
51
 
52
- </div>
53
 
54
- </div>
1
  <?php
2
+ $entries_per_page = get_option( 'forminator_pagination_entries', 10 );
3
+ $module_per_page = get_option( 'forminator_pagination_listings', 10 );
4
  ?>
5
  <div class="sui-box-settings-row">
6
 
7
+ <div class="sui-box-settings-col-1">
8
+ <span class="sui-settings-label"><?php esc_html_e( 'Pagination', Forminator::DOMAIN ); ?></span>
9
+ <span class="sui-description"><?php esc_html_e( 'Choose the number of items to show per page on your submissions or modules listing pages.', Forminator::DOMAIN ); ?></span>
10
+ </div>
11
 
12
+ <div class="sui-box-settings-col-2">
13
 
14
+ <label class="sui-settings-label"><?php esc_html_e( 'Modules', Forminator::DOMAIN ); ?></label>
15
 
16
+ <span class="sui-description"
17
+ style="margin-bottom: 10px;"><?php esc_html_e( 'Choose the number of forms, polls, and quizzes to show on each listing page.', Forminator::DOMAIN ); ?></span>
18
 
19
+ <div class="sui-form-field">
20
+ <input type="number"
21
+ name="pagination_listings"
22
+ placeholder="<?php esc_html_e( '10', Forminator::DOMAIN ); ?>"
23
+ value="<?php echo esc_attr( $module_per_page ); ?>"
24
+ min="1"
25
+ id="forminator-limit-listing"
26
+ class="sui-form-control forminator-required sui-input-sm sui-field-has-suffix"/>
27
 
28
+ <span class="sui-field-suffix"><?php esc_html_e( 'modules per page', Forminator::DOMAIN ); ?></span>
29
+ <span class="sui-error-message"
30
+ style="display: none;"><?php esc_html_e( 'This field cannot be empty.', Forminator::DOMAIN ); ?></span>
31
 
32
+ </div>
33
+ <label class="sui-settings-label"><?php esc_html_e( 'Submissions', Forminator::DOMAIN ); ?></label>
34
 
35
+ <span class="sui-description"
36
+ style="margin-bottom: 10px;"><?php esc_html_e( 'Choose the number of submissions to show per page.', Forminator::DOMAIN ); ?></span>
37
 
38
+ <div class="sui-form-field">
39
+ <input type="number"
40
+ name="pagination_entries"
41
+ placeholder="<?php esc_html_e( '10', Forminator::DOMAIN ); ?>"
42
+ value="<?php echo esc_attr( $entries_per_page ); ?>"
43
+ min="1"
44
+ id="forminator-limit-entries"
45
+ class="sui-form-control forminator-required sui-input-sm sui-field-has-suffix"/>
46
+ <span class="sui-field-suffix"><?php esc_html_e( 'submissions per page', Forminator::DOMAIN ); ?></span>
47
+ <span class="sui-error-message"
48
+ style="display: none;"><?php esc_html_e( 'This field cannot be empty.', Forminator::DOMAIN ); ?></span>
49
 
50
+ </div>
51
 
52
+ </div>
53
 
54
+ </div>
admin/views/settings/tab-payments.php CHANGED
@@ -32,7 +32,7 @@ $nonce = wp_create_nonce( 'forminator_save_payments_settings' );
32
 
33
  <button
34
  class="sui-button sui-button-blue wpmudev-action-done"
35
- data-title="<?php esc_attr_e( "Payments settings", Forminator::DOMAIN ); ?>"
36
  data-action="payments_settings"
37
  data-nonce="<?php echo esc_attr( $nonce ); ?>"
38
  >
32
 
33
  <button
34
  class="sui-button sui-button-blue wpmudev-action-done"
35
+ data-title="<?php esc_attr_e( 'Payments settings', Forminator::DOMAIN ); ?>"
36
  data-action="payments_settings"
37
  data-nonce="<?php echo esc_attr( $nonce ); ?>"
38
  >
admin/views/settings/tab-recaptcha.php CHANGED
@@ -1,6 +1,5 @@
1
  <?php
2
  $section = isset( $_GET['section'] ) ? sanitize_text_field( $_GET['section'] ) : 'dashboard';
3
-
4
  $v2_captcha_key = get_option( 'forminator_captcha_key', '' );
5
  $v2_captcha_secret = get_option( 'forminator_captcha_secret', '' );
6
  $v2_invisible_captcha_key = get_option( 'forminator_v2_invisible_captcha_key', '' );
@@ -35,7 +34,7 @@ $new = true;
35
  <div class="sui-form-field">
36
 
37
  <span class="sui-settings-label"><?php esc_html_e( 'API Keys', Forminator::DOMAIN ); ?></span>
38
- <span class="sui-description" style="margin-bottom: 10px;"><?php printf( esc_html( __( "Enter the API keys for each reCAPTCHA type you want to use in your forms. Note that each reCAPTCHA type requires a different set of API keys. %1\$sGenerate API keys%2\$s", Forminator::DOMAIN ) ), '<a href="https://www.google.com/recaptcha/admin#list" target="_blank">', '</a>' ); ?></span>
39
 
40
  <div class="sui-tabs sui-tabs-overflow">
41
 
@@ -198,8 +197,8 @@ $new = true;
198
  <select name="captcha_language" id="captcha_language" class="sui-select">
199
  <?php $languages = forminator_get_captcha_languages(); ?>
200
  <option value=""><?php esc_html_e( 'Automatic', Forminator::DOMAIN ); ?></option>
201
- <?php foreach ( $languages as $key => $lang ): ?>
202
- <option value="<?php echo $key; ?>" <?php selected( $captcha_language, $key ); ?>><?php echo esc_html( $lang ); ?></option>
203
  <?php endforeach; ?>
204
  </select>
205
 
@@ -218,7 +217,7 @@ $new = true;
218
 
219
  <button
220
  class="sui-button sui-button-blue wpmudev-action-done"
221
- data-title="<?php esc_attr_e( "reCaptcha settings", Forminator::DOMAIN ); ?>"
222
  data-action="captcha"
223
  data-nonce="<?php echo esc_attr( $nonce ); ?>"
224
  >
1
  <?php
2
  $section = isset( $_GET['section'] ) ? sanitize_text_field( $_GET['section'] ) : 'dashboard';
 
3
  $v2_captcha_key = get_option( 'forminator_captcha_key', '' );
4
  $v2_captcha_secret = get_option( 'forminator_captcha_secret', '' );
5
  $v2_invisible_captcha_key = get_option( 'forminator_v2_invisible_captcha_key', '' );
34
  <div class="sui-form-field">
35
 
36
  <span class="sui-settings-label"><?php esc_html_e( 'API Keys', Forminator::DOMAIN ); ?></span>
37
+ <span class="sui-description" style="margin-bottom: 10px;"><?php /* translators: ... */ printf( esc_html( __( 'Enter the API keys for each reCAPTCHA type you want to use in your forms. Note that each reCAPTCHA type requires a different set of API keys. %1$sGenerate API keys%2$s', Forminator::DOMAIN ) ), '<a href="https://www.google.com/recaptcha/admin#list" target="_blank">', '</a>' ); ?></span>
38
 
39
  <div class="sui-tabs sui-tabs-overflow">
40
 
197
  <select name="captcha_language" id="captcha_language" class="sui-select">
198
  <?php $languages = forminator_get_captcha_languages(); ?>
199
  <option value=""><?php esc_html_e( 'Automatic', Forminator::DOMAIN ); ?></option>
200
+ <?php foreach ( $languages as $key => $lang ) : ?>
201
+ <option value="<?php echo esc_attr( $key ); ?>" <?php selected( $captcha_language, $key ); ?>><?php echo esc_html( $lang ); ?></option>
202
  <?php endforeach; ?>
203
  </select>
204
 
217
 
218
  <button
219
  class="sui-button sui-button-blue wpmudev-action-done"
220
+ data-title="<?php esc_attr_e( 'reCaptcha settings', Forminator::DOMAIN ); ?>"
221
  data-action="captcha"
222
  data-nonce="<?php echo esc_attr( $nonce ); ?>"
223
  >
admin/views/settings/tab-submissions.php CHANGED
@@ -1,6 +1,5 @@
1
  <?php
2
  $section = isset( $_GET['section'] ) ? sanitize_text_field( $_GET['section'] ) : 'dashboard';
3
-
4
  $nonce = wp_create_nonce( 'forminator_save_privacy_settings' );
5
  ?>
6
 
@@ -26,8 +25,8 @@ $nonce = wp_create_nonce( 'forminator_save_privacy_settings' );
26
 
27
  <div class="sui-actions-right">
28
 
29
- <button class="sui-button sui-button-blue wpmudev-action-done" data-title="<?php esc_attr_e( "Submissions settings", Forminator::DOMAIN ); ?>" data-action="privacy_settings"
30
- data-nonce="<?php echo esc_attr( $nonce ); ?>">
31
  <span class="sui-loading-text"><?php esc_html_e( 'Save Settings', Forminator::DOMAIN ); ?></span>
32
  <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
33
  </button>
1
  <?php
2
  $section = isset( $_GET['section'] ) ? sanitize_text_field( $_GET['section'] ) : 'dashboard';
 
3
  $nonce = wp_create_nonce( 'forminator_save_privacy_settings' );
4
  ?>
5
 
25
 
26
  <div class="sui-actions-right">
27
 
28
+ <button class="sui-button sui-button-blue wpmudev-action-done" data-title="<?php esc_attr_e( 'Submissions settings', Forminator::DOMAIN ); ?>" data-action="privacy_settings"
29
+ data-nonce="<?php echo esc_attr( $nonce ); ?>">
30
  <span class="sui-loading-text"><?php esc_html_e( 'Save Settings', Forminator::DOMAIN ); ?></span>
31
  <i class="sui-icon-loader sui-loading" aria-hidden="true"></i>
32
  </button>
assets/css/forminator-scgen.min.css CHANGED
@@ -1,2 +1,2 @@
1
- @import url(https://fonts.googleapis.com/css?family=Roboto:400,500,700);@import url(https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css);.sui-forminator-scgen .sui-wrap .sui-insert-variables .sui-variables+.select2 .select2-selection--single .select2-selection__rendered,.sui-forminator-scgen .sui-wrap .sui-multi-checkbox label input,.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-menu .sui-tab-item input,.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-menu>* input,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-tabs] .sui-tab-item input,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-tabs]>* input,.sui-forminator-scgen[class*=sui-2-] #forminator-generate-shortcode span,.sui-screen-reader-text{border:0;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute!important;width:1px;word-wrap:normal!important}.sui-forminator-scgen .sui-wrap .sui-fade-in{animation:fadeIn .3s ease-in forwards}.sui-forminator-scgen .sui-wrap .sui-fade-out{animation:fadeOut .3s ease-in forwards}.sui-forminator-scgen .sui-wrap .sui-bounce-in{animation:bounceInJiggle .8s ease-in forwards}.sui-forminator-scgen .sui-wrap .sui-bounce-out{animation:bounceOutJiggle .6s ease-out forwards}.sui-forminator-scgen .sui-wrap .sui-content-fade-in{animation:fadeScaleIn .8s ease-in forwards}.sui-forminator-scgen .sui-wrap .sui-content-fade-out{animation:fadeScaleOut .9s ease-in forwards}@keyframes bounceInDown{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes bounceInJiggle{0%{transform:translateY(-200%) scale(1.5);opacity:0}30%{opacity:1}58%{transform:translateY(0) rotate(1deg) scale(1);opacity:1}72%{transform:translateY(-30px) rotate(-1deg)}80%{transform:translateY(0) rotate(.5deg)}to{transform:translateY(0) rotate(0deg)}}@keyframes bounceOutJiggle{0%{transform:translateY(0)}10%{transform:translateY(-10px) rotate(-.5deg)}30%{transform:translateY(20px) rotate(8deg)}70%{opacity:1}90%{transform:translateY(300%) translateX(40px) rotate(35deg);opacity:0}to{display:none}}@keyframes bounceOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes fadeIn{0%{opacity:0}25%{opacity:1}}@keyframes fadeScaleIn{0%{opacity:0}25%{opacity:0;transform:translate3d(0,10px,0) scale(.9)}to{transform:translateZ(0) scale(1)}}@keyframes fadeOut{0%{opacity:1}75%{opacity:1}to{opacity:0}}@keyframes fadeScaleOut{0%{opacity:1;transform:translateZ(0) scale(1)}25%{opacity:0;transform:translate3d(0,10px,0) scale(.9)}to{opacity:0}}@keyframes fadeInLeft{0%{opacity:0;transform:translate3d(-50px,0,0)}to{opacity:1;transform:none}}@keyframes fadeInRight{0%{opacity:0;transform:translate3d(50px,0,0)}to{opacity:1;transform:none}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.sui-forminator-scgen .sui-wrap{font-family:Roboto,Arial,sans-serif;font-weight:400;font-size:15px;line-height:30px;color:#666;letter-spacing:-.25px;margin:30px 30px 0 10px}.sui-forminator-scgen .sui-wrap *{font-variant-ligatures:none;-webkit-font-variant-ligatures:none;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-smoothing:antialiased;-webkit-font-smoothing:antialiased;text-shadow:rgba(0,0,0,.01) 0 0 1px}@media (max-width:782px){.sui-forminator-scgen .sui-wrap{margin:20px 10px 0 0}}.sui-forminator-scgen .sui-wrap h1,.sui-forminator-scgen .sui-wrap h2,.sui-forminator-scgen .sui-wrap h3,.sui-forminator-scgen .sui-wrap h4,.sui-forminator-scgen .sui-wrap h5,.sui-forminator-scgen .sui-wrap h6{display:block;margin:.5em auto;padding:0;line-height:30px;color:#333;font-weight:700;font-family:Roboto,Arial,sans-serif}.sui-forminator-scgen .sui-wrap h1{font-size:32px;line-height:40px;color:#333;margin:0}.sui-forminator-scgen .sui-wrap h2{font-size:22px;line-height:35px}.sui-forminator-scgen .sui-wrap h3{font-size:18px;line-height:40px}.sui-forminator-scgen .sui-wrap h4,.sui-forminator-scgen .sui-wrap h5,.sui-forminator-scgen .sui-wrap h6{font-size:15px}.sui-forminator-scgen .sui-wrap p{font-family:Roboto,Arial,sans-serif;font-weight:400;font-size:15px;line-height:30px;color:#666;letter-spacing:-.25px;text-rendering:optimizeLegibility}.sui-forminator-scgen .sui-wrap p.sui-p-small{font-size:13px;line-height:22px;color:#888;margin:5px 0}.sui-forminator-scgen .sui-wrap p:first-child{margin-top:0}.sui-forminator-scgen .sui-wrap p:last-of-type:not(:last-child){margin-bottom:30px}@media (max-width:782px){.sui-forminator-scgen .sui-wrap p:last-of-type:not(:last-child){margin-bottom:20px}}.sui-forminator-scgen .sui-wrap p:last-child{margin-bottom:0}.sui-forminator-scgen .sui-wrap small{display:inline-block;font-size:13px;line-height:22px;color:#888;margin-bottom:5px}.sui-forminator-scgen .sui-wrap a{text-decoration:none;color:#17a8e3;font-weight:500;outline-color:transparent;outline-style:none;box-shadow:none}.sui-forminator-scgen .sui-wrap a:active:not(.sui-button),.sui-forminator-scgen .sui-wrap a:focus:not(.sui-button),.sui-forminator-scgen .sui-wrap a:hover:not(.sui-button){color:#1286b5}.sui-forminator-scgen .sui-wrap a.disabled{pointer-events:none}.sui-forminator-scgen .sui-wrap a.disabled:active,.sui-forminator-scgen .sui-wrap a.disabled:focus,.sui-forminator-scgen .sui-wrap a.disabled:hover{color:#888;cursor:default}.sui-forminator-scgen .sui-wrap code,.sui-forminator-scgen .sui-wrap pre{font-weight:500;font-size:13px;line-height:18px;color:#333;background-color:#f8f8f8;border:1px solid #e6e6e6;border-radius:4px;margin:0;padding:10px 15px;white-space:pre;overflow:auto;max-width:100%;vertical-align:middle;-moz-tab-size:4;-o-tab-size:4;tab-size:4}.sui-forminator-scgen .sui-wrap code{display:inline-block;padding:2px 5px}.sui-forminator-scgen .sui-wrap b,.sui-forminator-scgen .sui-wrap strong{font-weight:500}.sui-forminator-scgen .sui-wrap dfn{font-style:normal;font-weight:400;border-bottom:1px dotted #888}.sui-forminator-scgen .sui-wrap hr{border:none;display:block;height:1px;background:#e6e6e6;margin:30px 0}.sui-forminator-scgen #forminator-generate-shortcode .forminator-scgen-icon:before,.sui-forminator-scgen .sui-dialog .sui-dialog-back:before,.sui-forminator-scgen .sui-dialog .sui-dialog-close:before,.sui-forminator-scgen .sui-select-dropdown .select2-search--dropdown:after,.sui-forminator-scgen .sui-variables-dropdown .select2-search--dropdown:after,.sui-forminator-scgen .sui-wrap .sui-box-body .sui-upsell-row .sui-upsell-notice p:first-of-type:before,.sui-forminator-scgen .sui-wrap .sui-insert-variables .select-container .select-list-container .list-value:before,.sui-forminator-scgen .sui-wrap .sui-insert-variables .sui-variables+.select2 .select2-selection--single .select2-selection__arrow:before,.sui-forminator-scgen .sui-wrap [class*=sui-icon-]:after,.sui-forminator-scgen .sui-wrap [class*=sui-icon-]:before,.sui-forminator-scgen:not([class*=sui-2-]) #forminator-generate-shortcode .forminator-scgen-icon:before,.sui-forminator-scgen select.sui-select+.select2-container .select2-selection--single .select2-selection__arrow:before{font-family:wpmudev-plugin-icons!important;speak:none;font-size:1em;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;text-rendering:auto;display:inline-block;color:#888;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@font-face{font-family:wpmudev-plugin-icons;src:url(../fonts/wpmudev-plugin-icons.eot);src:url(../fonts/wpmudev-plugin-icons.eot) format("embedded-opentype"),url(../fonts/wpmudev-plugin-icons.ttf) format("truetype"),url(../fonts/wpmudev-plugin-icons.woff) format("woff"),url(../fonts/wpmudev-plugin-icons.woff2) format("woff2"),url(../fonts/wpmudev-plugin-icons.svg) format("svg");font-weight:400;font-style:normal}.sui-forminator-scgen .sui-wrap .sui-loading:before{animation:spin 1.3s linear infinite}.sui-forminator-scgen .sui-wrap [class*=sui-icon-]{display:inline-block}.sui-forminator-scgen .sui-wrap [class*=sui-icon-].sui-xl:before{font-size:30px}.sui-forminator-scgen .sui-wrap [class*=sui-icon-].sui-lg:before{font-size:20px}.sui-forminator-scgen .sui-wrap [class*=sui-icon-].sui-md:before{font-size:16px}.sui-forminator-scgen .sui-wrap [class*=sui-icon-].sui-sm:before{font-size:12px}.sui-forminator-scgen .sui-wrap [class*=sui-icon-].sui-error:before,.sui-forminator-scgen .sui-wrap [class*=sui-icon-].sui-info:before,.sui-forminator-scgen .sui-wrap [class*=sui-icon-].sui-success:before,.sui-forminator-scgen .sui-wrap [class*=sui-icon-].sui-warning:before{color:inherit}.sui-forminator-scgen .sui-wrap [class*=sui-icon-].sui-fw{width:1.8em;text-align:center;min-height:1em}.sui-forminator-scgen .sui-wrap .sui-icon-check:before{content:"("}.sui-forminator-scgen .sui-wrap .sui-icon-close:before{content:")"}.sui-forminator-scgen .sui-wrap .sui-icon-check-tick:before{content:"_"}.sui-forminator-scgen .sui-wrap .sui-icon-cross-close:before{content:"+"}.sui-forminator-scgen .sui-wrap .sui-icon-plus-circle:before{content:"@"}.sui-forminator-scgen .sui-wrap .sui-icon-warning-alert:before{content:"!"}.sui-forminator-scgen .sui-wrap .sui-icon-info:before{content:"I"}.sui-forminator-scgen .sui-wrap .sui-icon-question:before{content:"?"}.sui-forminator-scgen .sui-wrap .sui-icon-trash:before{content:"Q"}.sui-forminator-scgen .sui-wrap .sui-icon-pencil:before{content:"/"}.sui-forminator-scgen .sui-wrap .sui-icon-unlock:before{content:"0"}.sui-forminator-scgen .sui-wrap .sui-icon-lock:before{content:"9"}.sui-forminator-scgen .sui-wrap .sui-icon-key:before{content:"\25CA"}.sui-forminator-scgen .sui-wrap .sui-icon-plus:before{content:"="}.sui-forminator-scgen .sui-wrap .sui-icon-magnifying-glass-search:before{content:"\BA"}.sui-forminator-scgen .sui-wrap .sui-icon-more:before{content:"\2026"}.sui-forminator-scgen .sui-wrap .sui-icon-wrench-tool:before{content:"\2044"}.sui-forminator-scgen .sui-wrap .sui-icon-widget-settings-config:before{content:"x"}.sui-forminator-scgen .sui-wrap .sui-icon-settings-slider-control:before{content:"\153"}.sui-forminator-scgen .sui-wrap .sui-icon-loader:before{content:"N"}.sui-forminator-scgen .sui-wrap .sui-icon-calendar:before{content:"\220F"}.sui-forminator-scgen .sui-wrap .sui-icon-clock:before{content:","}.sui-forminator-scgen .sui-wrap .sui-icon-speed-optimize:before{content:"\F8"}.sui-forminator-scgen .sui-wrap .sui-icon-stopwatch:before{content:"V"}.sui-forminator-scgen .sui-wrap .sui-icon-filter:before{content:"z"}.sui-forminator-scgen .sui-wrap .sui-icon-bookmark:before{content:"\221A"}.sui-forminator-scgen .sui-wrap .sui-icon-chevron-up:before{content:"\2DD"}.sui-forminator-scgen .sui-wrap .sui-icon-chevron-right:before{content:"\2DC"}.sui-forminator-scgen .sui-wrap .sui-icon-chevron-down:before{content:"\131"}.sui-forminator-scgen .sui-wrap .sui-icon-chevron-left:before{content:"\D3"}.sui-forminator-scgen .sui-wrap .sui-icon-arrow-up:before{content:"\D4"}.sui-forminator-scgen .sui-wrap .sui-icon-arrow-right:before{content:"\AF"}.sui-forminator-scgen .sui-wrap .sui-icon-arrow-down:before{content:"\C2"}.sui-forminator-scgen .sui-wrap .sui-icon-arrow-left:before{content:"\F8FF"}.sui-forminator-scgen .sui-wrap .sui-icon-arrow-skip-back:before{content:"{"}.sui-forminator-scgen .sui-wrap .sui-icon-arrow-skip-forward:before{content:"}"}.sui-forminator-scgen .sui-wrap .sui-icon-arrow-skip-start:before{content:":"}.sui-forminator-scgen .sui-wrap .sui-icon-arrow-skip-end:before{content:'"'}.sui-forminator-scgen .sui-wrap .sui-icon-play:before{content:"\B4"}.sui-forminator-scgen .sui-wrap .sui-icon-pause:before{content:"\2020"}.sui-forminator-scgen .sui-wrap .sui-icon-arrows-out:before{content:"\2DA"}.sui-forminator-scgen .sui-wrap .sui-icon-arrows-in:before{content:"\2264"}.sui-forminator-scgen .sui-wrap .sui-icon-arrows-expand:before{content:"\AC"}.sui-forminator-scgen .sui-wrap .sui-icon-arrows-compress:before{content:"\2265"}.sui-forminator-scgen .sui-wrap .sui-icon-refresh2:before{content:"\C1"}.sui-forminator-scgen .sui-wrap .sui-icon-zip:before{content:"a"}.sui-forminator-scgen .sui-wrap .sui-icon-combine:before{content:"o"}.sui-forminator-scgen .sui-wrap .sui-icon-defer:before{content:"p"}.sui-forminator-scgen .sui-wrap .sui-icon-inlinecss:before{content:"c"}.sui-forminator-scgen .sui-wrap .sui-icon-movefooter:before{content:"u"}.sui-forminator-scgen .sui-wrap .sui-icon-popup:before{content:"1"}.sui-forminator-scgen .sui-wrap .sui-icon-slide-in:before{content:"2"}.sui-forminator-scgen .sui-wrap .sui-icon-embed:before{content:"3"}.sui-forminator-scgen .sui-wrap .sui-icon-list:before{content:"`"}.sui-forminator-scgen .sui-wrap .sui-icon-layout-grid:before{content:"\221E"}.sui-forminator-scgen .sui-wrap .sui-icon-layout:before{content:"\A9"}.sui-forminator-scgen .sui-wrap .sui-icon-thumbnails:before{content:"G"}.sui-forminator-scgen .sui-wrap .sui-icon-drag:before{content:"\201E"}.sui-forminator-scgen .sui-wrap .sui-icon-align-left:before{content:"%"}.sui-forminator-scgen .sui-wrap .sui-icon-align-center:before{content:"^"}.sui-forminator-scgen .sui-wrap .sui-icon-align-right:before{content:"&"}.sui-forminator-scgen .sui-wrap .sui-icon-align-justify:before{content:"#"}.sui-forminator-scgen .sui-wrap .sui-icon-indent-more:before{content:"\2019"}.sui-forminator-scgen .sui-wrap .sui-icon-indent-less:before{content:"\201D"}.sui-forminator-scgen .sui-wrap .sui-icon-blog:before{content:"Y"}.sui-forminator-scgen .sui-wrap .sui-icon-list-number:before{content:"7"}.sui-forminator-scgen .sui-wrap .sui-icon-list-bullet:before{content:"8"}.sui-forminator-scgen .sui-wrap .sui-icon-bold:before{content:"B"}.sui-forminator-scgen .sui-wrap .sui-icon-quote-2:before{content:"'"}.sui-forminator-scgen .sui-wrap .sui-icon-style-type:before{content:"<"}.sui-forminator-scgen .sui-wrap .sui-icon-wand-magic:before{content:"Z"}.sui-forminator-scgen .sui-wrap .sui-icon-link:before{content:"5"}.sui-forminator-scgen .sui-wrap .sui-icon-unlink:before{content:"6"}.sui-forminator-scgen .sui-wrap .sui-icon-paperclip:before{content:"A"}.sui-forminator-scgen .sui-wrap .sui-icon-code:before{content:";"}.sui-forminator-scgen .sui-wrap .sui-icon-color-pick-eyedropper:before{content:"\A5"}.sui-forminator-scgen .sui-wrap .sui-icon-crop:before{content:"C"}.sui-forminator-scgen .sui-wrap .sui-icon-paint-bucket:before{content:"\222B"}.sui-forminator-scgen .sui-wrap .sui-icon-camera:before{content:"\D8"}.sui-forminator-scgen .sui-wrap .sui-icon-photo-picture:before{content:"D"}.sui-forminator-scgen .sui-wrap .sui-icon-animation-video:before{content:"F"}.sui-forminator-scgen .sui-wrap .sui-icon-home:before{content:"J"}.sui-forminator-scgen .sui-wrap .sui-icon-mail:before{content:"m"}.sui-forminator-scgen .sui-wrap .sui-icon-send:before{content:"\201C"}.sui-forminator-scgen .sui-wrap .sui-icon-phone:before{content:">"}.sui-forminator-scgen .sui-wrap .sui-icon-pin:before{content:"\152"}.sui-forminator-scgen .sui-wrap .sui-icon-post-pin:before{content:"\2C7"}.sui-forminator-scgen .sui-wrap .sui-icon-calculator:before{content:"\A8"}.sui-forminator-scgen .sui-wrap .sui-icon-element-checkbox:before{content:"\C5"}.sui-forminator-scgen .sui-wrap .sui-icon-element-radio:before{content:"\CD"}.sui-forminator-scgen .sui-wrap .sui-icon-element-select:before{content:"\CF"}.sui-forminator-scgen .sui-wrap .sui-icon-element-number:before{content:"\DA"}.sui-forminator-scgen .sui-wrap .sui-icon-recaptcha:before{content:"\2013"}.sui-forminator-scgen .sui-wrap .sui-icon-folder:before{content:"\2D8"}.sui-forminator-scgen .sui-wrap .sui-icon-folder-open:before{content:"\BB"}.sui-forminator-scgen .sui-wrap .sui-icon-archive:before{content:"b"}.sui-forminator-scgen .sui-wrap .sui-icon-book:before{content:"\2206"}.sui-forminator-scgen .sui-wrap .sui-icon-page-multiple:before{content:"\E7"}.sui-forminator-scgen .sui-wrap .sui-icon-layers:before{content:"\E6"}.sui-forminator-scgen .sui-wrap .sui-icon-copy:before{content:"4"}.sui-forminator-scgen .sui-wrap .sui-icon-graph-bar:before{content:"\C7"}.sui-forminator-scgen .sui-wrap .sui-icon-graph-bar-2:before{content:"\2DB"}.sui-forminator-scgen .sui-wrap .sui-icon-graph-line:before{content:"\A1"}.sui-forminator-scgen .sui-wrap .sui-icon-tracking-disabled:before{content:"\20AC"}.sui-forminator-scgen .sui-wrap .sui-icon-page:before{content:"\D2"}.sui-forminator-scgen .sui-wrap .sui-icon-clipboard-notes:before{content:"\BF"}.sui-forminator-scgen .sui-wrap .sui-icon-page-pdf:before{content:"\C6"}.sui-forminator-scgen .sui-wrap .sui-icon-heart:before{content:"K"}.sui-forminator-scgen .sui-wrap .sui-icon-star:before{content:"S"}.sui-forminator-scgen .sui-wrap .sui-icon-plugin-2:before{content:"O"}.sui-forminator-scgen .sui-wrap .sui-icon-brush:before{content:"~"}.sui-forminator-scgen .sui-wrap .sui-icon-plug-connected:before{content:"R"}.sui-forminator-scgen .sui-wrap .sui-icon-plug-disconnected:before{content:"."}.sui-forminator-scgen .sui-wrap .sui-icon-power-on-off:before{content:"["}.sui-forminator-scgen .sui-wrap .sui-icon-target:before{content:"\2260"}.sui-forminator-scgen .sui-wrap .sui-icon-upload-cloud:before{content:"\A2"}.sui-forminator-scgen .sui-wrap .sui-icon-download-cloud:before{content:"\A3"}.sui-forminator-scgen .sui-wrap .sui-icon-cloud:before{content:"\2122"}.sui-forminator-scgen .sui-wrap .sui-icon-cloud-migration:before{content:"l"}.sui-forminator-scgen .sui-wrap .sui-icon-unpublish:before{content:"\2C6"}.sui-forminator-scgen .sui-wrap .sui-icon-download:before{content:"X"}.sui-forminator-scgen .sui-wrap .sui-icon-save:before{content:"\DF"}.sui-forminator-scgen .sui-wrap .sui-icon-lightbulb:before{content:"L"}.sui-forminator-scgen .sui-wrap .sui-icon-sitemap:before{content:"\B8"}.sui-forminator-scgen .sui-wrap .sui-icon-storage-server-data:before{content:"\CE"}.sui-forminator-scgen .sui-wrap .sui-icon-user-reputation-points:before{content:"E"}.sui-forminator-scgen .sui-wrap .sui-icon-tablet-portrait:before{content:"]"}.sui-forminator-scgen .sui-wrap .sui-icon-laptop:before{content:"\AB"}.sui-forminator-scgen .sui-wrap .sui-icon-monitor:before{content:"$"}.sui-forminator-scgen .sui-wrap .sui-icon-eye:before{content:"e"}.sui-forminator-scgen .sui-wrap .sui-icon-eye-hide:before{content:"q"}.sui-forminator-scgen .sui-wrap .sui-icon-update:before{content:"\AE"}.sui-forminator-scgen .sui-wrap .sui-icon-refresh:before{content:"H"}.sui-forminator-scgen .sui-wrap .sui-icon-undo:before{content:"\2030"}.sui-forminator-scgen .sui-wrap .sui-icon-web-globe-world:before{content:"W"}.sui-forminator-scgen .sui-wrap .sui-icon-flag:before{content:"|"}.sui-forminator-scgen .sui-wrap .sui-icon-academy:before{content:"\3C0"}.sui-forminator-scgen .sui-wrap .sui-icon-profile-male:before{content:"\B5"}.sui-forminator-scgen .sui-wrap .sui-icon-community-people:before{content:"\2018"}.sui-forminator-scgen .sui-wrap .sui-icon-help-support:before{content:"M"}.sui-forminator-scgen .sui-wrap .sui-icon-gdpr:before{content:"\2211"}.sui-forminator-scgen .sui-wrap .sui-icon-like:before{content:"j"}.sui-forminator-scgen .sui-wrap .sui-icon-dislike:before{content:"k"}.sui-forminator-scgen .sui-wrap .sui-icon-finger-point:before{content:"\2248"}.sui-forminator-scgen .sui-wrap .sui-icon-open-new-window:before{content:"n"}.sui-forminator-scgen .sui-wrap .sui-icon-reply:before{content:"r"}.sui-forminator-scgen .sui-wrap .sui-icon-share:before{content:"s"}.sui-forminator-scgen .sui-wrap .sui-icon-wordpress:before{content:"w"}.sui-forminator-scgen .sui-wrap .sui-icon-social-facebook:before{content:"f"}.sui-forminator-scgen .sui-wrap .sui-icon-social-twitter:before{content:"t"}.sui-forminator-scgen .sui-wrap .sui-icon-social-linkedin:before{content:"i"}.sui-forminator-scgen .sui-wrap .sui-icon-social-dropbox:before{content:"d"}.sui-forminator-scgen .sui-wrap .sui-icon-social-drive:before{content:"v"}.sui-forminator-scgen .sui-wrap .sui-icon-social-google-plus:before{content:"g"}.sui-forminator-scgen .sui-wrap .sui-icon-social-youtube:before{content:"y"}.sui-forminator-scgen .sui-wrap .sui-icon-instagram:before{content:"-"}.sui-forminator-scgen .sui-wrap .sui-icon-cloudflare:before{content:"\D0"}.sui-forminator-scgen .sui-wrap .sui-icon-social-github:before{content:"h"}.sui-forminator-scgen .sui-wrap .sui-icon-wpmudev-logo:before{content:"\2039"}.sui-forminator-scgen .sui-wrap .sui-icon-defender:before{content:"\B7"}.sui-forminator-scgen .sui-wrap .sui-icon-smush:before{content:"\2021"}.sui-forminator-scgen .sui-wrap .sui-icon-upfront:before{content:"\201A"}.sui-forminator-scgen .sui-wrap .sui-icon-hummingbird:before{content:"\B0"}.sui-forminator-scgen .sui-wrap .sui-icon-uptime:before{content:"\B1"}.sui-forminator-scgen .sui-wrap .sui-icon-smart-crawl:before{content:"\2202"}.sui-forminator-scgen .sui-wrap .sui-icon-forminator:before{content:"P"}.sui-forminator-scgen .sui-wrap .sui-icon-shipper-anchor:before{content:"T"}.sui-forminator-scgen .sui-wrap .sui-icon-snapshot:before{content:"\FB01"}.sui-forminator-scgen .sui-wrap .sui-icon-hustle:before{content:"\2014"}.sui-forminator-scgen .sui-wrap .sui-icon-performance:before{content:"U"}.sui-forminator-scgen .sui-wrap .sui-icon-hub:before{content:"\FB02"}.sui-forminator-scgen .sui-wrap .sui-icon-automate:before{content:"\2D9"}.sui-forminator-scgen .sui-wrap .sui-icon-align-y-center:before{content:"*"}.sui-forminator-scgen .sui-wrap .sui-icon-align-y-top:before{content:"\A7"}.sui-forminator-scgen .sui-wrap .sui-icon-align-y-bottom:before{content:"\B6"}.sui-forminator-scgen .sui-wrap .sui-icon-align-x-center:before{content:"\192"}.sui-forminator-scgen .sui-wrap .sui-icon-align-x-right:before{content:"\2022"}.sui-forminator-scgen .sui-wrap .sui-icon-align-x-left:before{content:"\E5"}.sui-forminator-scgen .sui-wrap .sui-icon-logout:before{content:"\203A"}.sui-forminator-scgen .sui-wrap .sui-button,.sui-forminator-scgen .sui-wrap .sui-button-icon,.sui-forminator-scgen .sui-wrap a.sui-button,.sui-forminator-scgen .sui-wrap a.sui-button-icon,.sui-forminator-scgen .sui-wrap button.sui-button,.sui-forminator-scgen .sui-wrap button.sui-button-icon{cursor:pointer;display:inline-block;position:relative;margin:0;border:2px solid transparent;border-radius:4px;text-decoration:none;text-align:center;transition:all .3s ease}.sui-forminator-scgen .sui-wrap .sui-button-icon .sui-loading,.sui-forminator-scgen .sui-wrap .sui-button .sui-loading,.sui-forminator-scgen .sui-wrap a.sui-button-icon .sui-loading,.sui-forminator-scgen .sui-wrap a.sui-button .sui-loading,.sui-forminator-scgen .sui-wrap button.sui-button-icon .sui-loading,.sui-forminator-scgen .sui-wrap button.sui-button .sui-loading{width:16px;height:16px;display:none;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;position:absolute;margin:0}.sui-forminator-scgen .sui-wrap .sui-button-icon .sui-loading:before,.sui-forminator-scgen .sui-wrap .sui-button .sui-loading:before,.sui-forminator-scgen .sui-wrap a.sui-button-icon .sui-loading:before,.sui-forminator-scgen .sui-wrap a.sui-button .sui-loading:before,.sui-forminator-scgen .sui-wrap button.sui-button-icon .sui-loading:before,.sui-forminator-scgen .sui-wrap button.sui-button .sui-loading:before{display:block}.sui-forminator-scgen .sui-wrap .sui-button-icon .sui-loading-text,.sui-forminator-scgen .sui-wrap .sui-button .sui-loading-text,.sui-forminator-scgen .sui-wrap a.sui-button-icon .sui-loading-text,.sui-forminator-scgen .sui-wrap a.sui-button .sui-loading-text,.sui-forminator-scgen .sui-wrap button.sui-button-icon .sui-loading-text,.sui-forminator-scgen .sui-wrap button.sui-button .sui-loading-text{display:block;pointer-events:none}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-button-icon .sui-loading-text .sui-loading-text,.sui-forminator-scgen .sui-wrap .sui-button .sui-loading-text .sui-loading-text,.sui-forminator-scgen .sui-wrap a.sui-button-icon .sui-loading-text .sui-loading-text,.sui-forminator-scgen .sui-wrap a.sui-button .sui-loading-text .sui-loading-text,.sui-forminator-scgen .sui-wrap button.sui-button-icon .sui-loading-text .sui-loading-text,.sui-forminator-scgen .sui-wrap button.sui-button .sui-loading-text .sui-loading-text{overflow:hidden;text-overflow:ellipsis}}.sui-forminator-scgen .sui-wrap .sui-button-icon [class*=sui-icon-],.sui-forminator-scgen .sui-wrap .sui-button [class*=sui-icon-],.sui-forminator-scgen .sui-wrap a.sui-button-icon [class*=sui-icon-],.sui-forminator-scgen .sui-wrap a.sui-button [class*=sui-icon-],.sui-forminator-scgen .sui-wrap button.sui-button-icon [class*=sui-icon-],.sui-forminator-scgen .sui-wrap button.sui-button [class*=sui-icon-]{font-size:12px}.sui-forminator-scgen .sui-wrap .sui-button-icon [class*=sui-icon-]:before,.sui-forminator-scgen .sui-wrap .sui-button [class*=sui-icon-]:before,.sui-forminator-scgen .sui-wrap a.sui-button-icon [class*=sui-icon-]:before,.sui-forminator-scgen .sui-wrap a.sui-button [class*=sui-icon-]:before,.sui-forminator-scgen .sui-wrap button.sui-button-icon [class*=sui-icon-]:before,.sui-forminator-scgen .sui-wrap button.sui-button [class*=sui-icon-]:before{display:block;color:inherit}.sui-forminator-scgen .sui-wrap .sui-button,.sui-forminator-scgen .sui-wrap .sui-button-icon,.sui-forminator-scgen .sui-wrap .sui-button-icon:active,.sui-forminator-scgen .sui-wrap .sui-button-icon:focus,.sui-forminator-scgen .sui-wrap .sui-button-icon:hover,.sui-forminator-scgen .sui-wrap .sui-button:active,.sui-forminator-scgen .sui-wrap .sui-button:focus,.sui-forminator-scgen .sui-wrap .sui-button:hover,.sui-forminator-scgen .sui-wrap a.sui-button,.sui-forminator-scgen .sui-wrap a.sui-button-icon,.sui-forminator-scgen .sui-wrap a.sui-button-icon:active,.sui-forminator-scgen .sui-wrap a.sui-button-icon:focus,.sui-forminator-scgen .sui-wrap a.sui-button-icon:hover,.sui-forminator-scgen .sui-wrap a.sui-button:active,.sui-forminator-scgen .sui-wrap a.sui-button:focus,.sui-forminator-scgen .sui-wrap a.sui-button:hover,.sui-forminator-scgen .sui-wrap button.sui-button,.sui-forminator-scgen .sui-wrap button.sui-button-icon,.sui-forminator-scgen .sui-wrap button.sui-button-icon:active,.sui-forminator-scgen .sui-wrap button.sui-button-icon:focus,.sui-forminator-scgen .sui-wrap button.sui-button-icon:hover,.sui-forminator-scgen .sui-wrap button.sui-button:active,.sui-forminator-scgen .sui-wrap button.sui-button:focus,.sui-forminator-scgen .sui-wrap button.sui-button:hover{outline:none;box-shadow:none}.sui-forminator-scgen .sui-wrap .sui-button-icon.disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button-icon:disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon[disabled],.sui-forminator-scgen .sui-wrap .sui-button.disabled,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button:disabled,.sui-forminator-scgen .sui-wrap .sui-button[disabled],.sui-forminator-scgen .sui-wrap a.sui-button-icon.disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button-icon:disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon[disabled],.sui-forminator-scgen .sui-wrap a.sui-button.disabled,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button:disabled,.sui-forminator-scgen .sui-wrap a.sui-button[disabled],.sui-forminator-scgen .sui-wrap button.sui-button-icon.disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button-icon:disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon[disabled],.sui-forminator-scgen .sui-wrap button.sui-button.disabled,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button:disabled,.sui-forminator-scgen .sui-wrap button.sui-button[disabled]{cursor:default;pointer-events:none}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-onload{pointer-events:none;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-onload .sui-loading,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-onload .sui-loading,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-onload .sui-loading,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-onload .sui-loading,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-onload .sui-loading,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-onload .sui-loading{display:-ms-flexbox;display:flex}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-onload .sui-loading-text,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-onload .sui-loading-text,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-onload .sui-loading-text,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-onload .sui-loading-text,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-onload .sui-loading-text,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-onload .sui-loading-text{opacity:0}.sui-forminator-scgen .sui-wrap .sui-button-icon:not(:last-child),.sui-forminator-scgen .sui-wrap .sui-button:not(:last-child),.sui-forminator-scgen .sui-wrap a.sui-button-icon:not(:last-child),.sui-forminator-scgen .sui-wrap a.sui-button:not(:last-child),.sui-forminator-scgen .sui-wrap button.sui-button-icon:not(:last-child),.sui-forminator-scgen .sui-wrap button.sui-button:not(:last-child){margin-right:10px}.sui-forminator-scgen .sui-wrap .sui-button,.sui-forminator-scgen .sui-wrap a.sui-button,.sui-forminator-scgen .sui-wrap button.sui-button{width:auto;min-width:80px;padding:5px 14px;background-color:#888;color:#fff;font:500 12px/16px Roboto,Arial,sans-serif;letter-spacing:-.25px;text-transform:uppercase}.sui-forminator-scgen .sui-wrap .sui-button [class*=sui-icon-],.sui-forminator-scgen .sui-wrap a.sui-button [class*=sui-icon-],.sui-forminator-scgen .sui-wrap button.sui-button [class*=sui-icon-]{vertical-align:middle}.sui-forminator-scgen .sui-wrap .sui-button [class*=sui-icon-]:not(.sui-loading),.sui-forminator-scgen .sui-wrap a.sui-button [class*=sui-icon-]:not(.sui-loading),.sui-forminator-scgen .sui-wrap button.sui-button [class*=sui-icon-]:not(.sui-loading){width:22px;position:relative;top:-1px;margin-left:-7px}.sui-forminator-scgen .sui-wrap .sui-button:active,.sui-forminator-scgen .sui-wrap .sui-button:hover,.sui-forminator-scgen .sui-wrap a.sui-button:active,.sui-forminator-scgen .sui-wrap a.sui-button:hover,.sui-forminator-scgen .sui-wrap button.sui-button:active,.sui-forminator-scgen .sui-wrap button.sui-button:hover{background-color:#6f6f6f}.sui-forminator-scgen .sui-wrap .sui-button.disabled,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button:disabled,.sui-forminator-scgen .sui-wrap .sui-button[disabled],.sui-forminator-scgen .sui-wrap a.sui-button.disabled,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button:disabled,.sui-forminator-scgen .sui-wrap a.sui-button[disabled],.sui-forminator-scgen .sui-wrap button.sui-button.disabled,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button:disabled,.sui-forminator-scgen .sui-wrap button.sui-button[disabled]{background-color:#e6e6e6;color:#aaa}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-icon-right [class*=sui-icon-]:not(.sui-loading),.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-icon-right [class*=sui-icon-]:not(.sui-loading),.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-icon-right [class*=sui-icon-]:not(.sui-loading){margin-right:-7px;margin-left:0}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-blue,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-blue,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-blue{background-color:#17a8e3;color:#fff}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-blue:active,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-blue:hover,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-blue:active,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-blue:hover,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-blue:active,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-blue:hover{background-color:#1286b5}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-blue.disabled,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-blue.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-blue:disabled,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-blue[disabled],.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-blue.disabled,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-blue.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-blue:disabled,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-blue[disabled],.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-blue.disabled,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-blue.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-blue:disabled,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-blue[disabled]{background-color:#e6e6e6;color:#aaa}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-green,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-green,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-green{background-color:#1abc9c;color:#fff}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-green:active,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-green:hover,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-green:active,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-green:hover,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-green:active,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-green:hover{background-color:#148f77}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-green.disabled,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-green.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-green:disabled,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-green[disabled],.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-green.disabled,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-green.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-green:disabled,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-green[disabled],.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-green.disabled,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-green.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-green:disabled,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-green[disabled]{background-color:#e6e6e6;color:#aaa}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-red,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-red,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-red{background-color:#ff6d6d;color:#fff}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-red:active,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-red:hover,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-red:active,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-red:hover,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-red:active,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-red:hover{background-color:#ff3a3a}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-red.disabled,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-red.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-red:disabled,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-red[disabled],.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-red.disabled,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-red.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-red:disabled,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-red[disabled],.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-red.disabled,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-red.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-red:disabled,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-red[disabled]{background-color:#e6e6e6;color:#aaa}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-orange,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-orange,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-orange{background-color:#ff7e41;color:#fff}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-orange:active,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-orange:hover,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-orange:active,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-orange:hover,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-orange:active,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-orange:hover{background-color:#ff5b0e}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-orange.disabled,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-orange.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-orange:disabled,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-orange[disabled],.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-orange.disabled,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-orange.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-orange:disabled,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-orange[disabled],.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-orange.disabled,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-orange.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-orange:disabled,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-orange[disabled]{background-color:#e6e6e6;color:#aaa}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-yellow,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-yellow,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-yellow{background-color:#fecf2f;color:#333}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-yellow:active,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-yellow:hover,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-yellow:active,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-yellow:hover,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-yellow:active,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-yellow:hover{background-color:#f9c101}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-yellow.disabled,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-yellow.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-yellow:disabled,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-yellow[disabled],.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-yellow.disabled,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-yellow.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-yellow:disabled,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-yellow[disabled],.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-yellow.disabled,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-yellow.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-yellow:disabled,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-yellow[disabled]{background-color:#e6e6e6;color:#aaa}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-purple,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-purple,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-purple{background-color:#8d00b1;color:#fff}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-purple:active,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-purple:hover,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-purple:active,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-purple:hover,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-purple:active,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-purple:hover{background-color:#64007e}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-purple.disabled,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-purple.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-purple:disabled,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-purple[disabled],.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-purple.disabled,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-purple.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-purple:disabled,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-purple[disabled],.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-purple.disabled,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-purple.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-purple:disabled,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-purple[disabled]{background-color:#e6e6e6;color:#aaa}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-upsell,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-upsell,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-upsell{width:auto;height:26px;padding:4px 14px;border-color:#d1f1ea;border-radius:14px;background-color:transparent;color:#1abc9c;line-height:14px;text-transform:none}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-upsell:active,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-upsell:hover,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-upsell:active,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-upsell:hover,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-upsell:active,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-upsell:hover{opacity:1;border-color:#1abc9c;background-color:#1abc9c;color:#fff}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-dashed,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-dashed,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-dashed{width:100%;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border:1px dashed #aaa;background-color:transparent;color:#888;line-height:18px}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-dashed.sui-lg,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-dashed.sui-lg,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-dashed.sui-lg{height:70px}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-button.sui-button-dashed,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-dashed.sui-lg,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-dashed,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-dashed.sui-lg,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-dashed,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-dashed.sui-lg{height:50px}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-button.sui-button-dashed,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-dashed,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-dashed{height:60px}}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost{border-color:#ddd;background-color:transparent;color:#888}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost:active,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost:hover,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost:active,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost:hover,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost:active,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost:hover{border-color:#888;background-color:#888;color:#fff}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.disabled,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost:disabled,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost[disabled],.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.disabled,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost:disabled,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost[disabled],.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.disabled,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost:disabled,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost[disabled]{border-color:#e6e6e6;background-color:#e6e6e6;color:#aaa}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-blue,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-blue,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-blue{border-color:#e1f6ff;color:#17a8e3}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-blue:active,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-blue:hover,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-blue:active,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-blue:hover,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-blue:active,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-blue:hover{border-color:#17a8e3;background-color:#17a8e3;color:#fff}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-blue.disabled,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-blue.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-blue:disabled,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-blue[disabled],.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-blue.disabled,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-blue.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-blue:disabled,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-blue[disabled],.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-blue.disabled,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-blue.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-blue:disabled,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-blue[disabled]{border-color:#e6e6e6;background-color:#e6e6e6;color:#aaa}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-green,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-green,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-green{border-color:#d1f1ea;color:#1abc9c}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-green:active,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-green:hover,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-green:active,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-green:hover,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-green:active,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-green:hover{border-color:#1abc9c;background-color:#1abc9c;color:#fff}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-green.disabled,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-green.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-green:disabled,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-green[disabled],.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-green.disabled,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-green.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-green:disabled,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-green[disabled],.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-green.disabled,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-green.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-green:disabled,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-green[disabled]{border-color:#e6e6e6;background-color:#e6e6e6;color:#aaa}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-red,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-red,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-red{border-color:#ffe5e9;color:#ff6d6d}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-red:active,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-red:hover,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-red:active,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-red:hover,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-red:active,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-red:hover{border-color:#ff6d6d;background-color:#ff6d6d;color:#fff}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-red.disabled,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-red.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-red:disabled,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-red[disabled],.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-red.disabled,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-red.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-red:disabled,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-red[disabled],.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-red.disabled,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-red.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-red:disabled,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-red[disabled]{border-color:#e6e6e6;background-color:#e6e6e6;color:#aaa}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-orange,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-orange,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-orange{border-color:#ffe5d9;color:#ff7e41}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-orange:active,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-orange:hover,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-orange:active,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-orange:hover,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-orange:active,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-orange:hover{border-color:#ff7e41;background-color:#ff7e41;color:#fff}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-orange.disabled,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-orange.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-orange:disabled,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-orange[disabled],.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-orange.disabled,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-orange.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-orange:disabled,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-orange[disabled],.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-orange.disabled,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-orange.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-orange:disabled,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-orange[disabled]{border-color:#e6e6e6;background-color:#e6e6e6;color:#aaa}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-yellow,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-yellow,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-yellow{border-color:#fff5d5;color:#fecf2f}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-yellow:active,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-yellow:hover,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-yellow:active,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-yellow:hover,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-yellow:active,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-yellow:hover{border-color:#fecf2f;background-color:#fecf2f;color:#333}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-yellow.disabled,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-yellow.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-yellow:disabled,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-yellow[disabled],.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-yellow.disabled,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-yellow.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-yellow:disabled,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-yellow[disabled],.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-yellow.disabled,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-yellow.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-yellow:disabled,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-yellow[disabled]{border-color:#e6e6e6;background-color:#e6e6e6;color:#aaa}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-purple,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-purple,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-purple{border-color:#f9e1ff;color:#8d00b1}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-purple:active,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-purple:hover,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-purple:active,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-purple:hover,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-purple:active,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-purple:hover{border-color:#8d00b1;background-color:#8d00b1;color:#fff}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-purple.disabled,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-purple.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-purple:disabled,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-ghost.sui-button-purple[disabled],.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-purple.disabled,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-purple.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-purple:disabled,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-ghost.sui-button-purple[disabled],.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-purple.disabled,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-purple.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-purple:disabled,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-ghost.sui-button-purple[disabled]{border-color:#e6e6e6;background-color:#e6e6e6;color:#aaa}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-button.sui-button-compound .sui-compound-desktop,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-compound .sui-compound-desktop,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-compound .sui-compound-desktop{display:none}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-button.sui-button-compound .sui-compound-desktop,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-compound .sui-compound-desktop,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-compound .sui-compound-desktop{display:block}}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-button.sui-button-compound .sui-compound-mobile [class*=sui-icon-],.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-compound .sui-compound-mobile [class*=sui-icon-],.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-compound .sui-compound-mobile [class*=sui-icon-]{margin-right:0;margin-left:0}}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-button.sui-button-compound .sui-compound-mobile,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-compound .sui-compound-mobile,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-compound .sui-compound-mobile{display:block}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-button.sui-button-compound .sui-compound-mobile,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-compound .sui-compound-mobile,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-compound .sui-compound-mobile{display:none}}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-button.sui-button-compound,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-compound,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-compound{min-width:44px;padding-right:5px;padding-left:5px}}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-lg,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-lg,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-lg{padding:8px 20px;font-size:15px;line-height:20px}.sui-forminator-scgen .sui-wrap .sui-button.sui-button-lg [class*=sui-icon-],.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-lg [class*=sui-icon-],.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-lg [class*=sui-icon-]{font-size:16px}.sui-forminator-scgen .sui-wrap .sui-button-icon,.sui-forminator-scgen .sui-wrap a.sui-button-icon,.sui-forminator-scgen .sui-wrap button.sui-button-icon{width:30px;height:30px;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;padding:0 4px;border-width:1px;background-color:transparent;color:#888;text-align:center;white-space:nowrap}.sui-forminator-scgen .sui-wrap .sui-button-icon [class*=sui-icon-]:not(.sui-loading),.sui-forminator-scgen .sui-wrap a.sui-button-icon [class*=sui-icon-]:not(.sui-loading),.sui-forminator-scgen .sui-wrap button.sui-button-icon [class*=sui-icon-]:not(.sui-loading){display:block}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-active,.sui-forminator-scgen .sui-wrap .sui-button-icon:active,.sui-forminator-scgen .sui-wrap .sui-button-icon:hover,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-active,.sui-forminator-scgen .sui-wrap a.sui-button-icon:active,.sui-forminator-scgen .sui-wrap a.sui-button-icon:hover,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-active,.sui-forminator-scgen .sui-wrap button.sui-button-icon:active,.sui-forminator-scgen .sui-wrap button.sui-button-icon:hover{background-color:#f2f2f2;color:#333}.sui-forminator-scgen .sui-wrap .sui-button-icon.disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button-icon:disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon[disabled],.sui-forminator-scgen .sui-wrap a.sui-button-icon.disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button-icon:disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon[disabled],.sui-forminator-scgen .sui-wrap button.sui-button-icon.disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button-icon:disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon[disabled]{color:#aaa;background-color:#e6e6e6}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-blue,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-blue,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-blue{color:#17a8e3}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-blue.sui-active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-blue:active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-blue:hover,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-blue.sui-active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-blue:active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-blue:hover,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-blue.sui-active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-blue:active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-blue:hover{background-color:#e1f6ff;color:#17a8e3}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-blue.disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-blue.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-blue:disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-blue[disabled],.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-blue.disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-blue.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-blue:disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-blue[disabled],.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-blue.disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-blue.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-blue:disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-blue[disabled]{color:#aaa;background-color:#e6e6e6}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-green,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-green,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-green{color:#1abc9c}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-green.sui-active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-green:active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-green:hover,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-green.sui-active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-green:active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-green:hover,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-green.sui-active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-green:active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-green:hover{background-color:#d1f1ea;color:#1abc9c}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-green.disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-green.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-green:disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-green[disabled],.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-green.disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-green.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-green:disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-green[disabled],.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-green.disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-green.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-green:disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-green[disabled]{color:#aaa;background-color:#e6e6e6}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-red,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-red,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-red{color:#ff6d6d}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-red.sui-active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-red:active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-red:hover,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-red.sui-active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-red:active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-red:hover,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-red.sui-active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-red:active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-red:hover{background-color:#ffe5e9;color:#ff6d6d}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-red.disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-red.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-red:disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-red[disabled],.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-red.disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-red.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-red:disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-red[disabled],.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-red.disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-red.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-red:disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-red[disabled]{color:#aaa;background-color:#e6e6e6}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-orange,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-orange,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-orange{color:#ff7e41}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-orange.sui-active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-orange:active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-orange:hover,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-orange.sui-active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-orange:active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-orange:hover,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-orange.sui-active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-orange:active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-orange:hover{background-color:#ffe5d9;color:#ff7e41}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-orange.disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-orange.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-orange:disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-orange[disabled],.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-orange.disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-orange.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-orange:disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-orange[disabled],.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-orange.disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-orange.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-orange:disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-orange[disabled]{color:#aaa;background-color:#e6e6e6}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-yellow,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-yellow,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-yellow{color:#fecf2f}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-yellow.sui-active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-yellow:active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-yellow:hover,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-yellow.sui-active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-yellow:active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-yellow:hover,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-yellow.sui-active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-yellow:active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-yellow:hover{background-color:#fff5d5;color:#fecf2f}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-yellow.disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-yellow.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-yellow:disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-yellow[disabled],.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-yellow.disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-yellow.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-yellow:disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-yellow[disabled],.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-yellow.disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-yellow.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-yellow:disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-yellow[disabled]{color:#aaa;background-color:#e6e6e6}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-purple,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-purple,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-purple{color:#8d00b1}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-purple.sui-active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-purple:active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-purple:hover,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-purple.sui-active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-purple:active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-purple:hover,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-purple.sui-active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-purple:active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-purple:hover{background-color:#f9e1ff;color:#8d00b1}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-purple.disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-purple.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-purple:disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-purple[disabled],.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-purple.disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-purple.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-purple:disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-purple[disabled],.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-purple.disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-purple.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-purple:disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-purple[disabled]{color:#aaa;background-color:#e6e6e6}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined{width:44px;border-color:#ddd}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined:active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined:hover,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined:active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined:hover,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined:active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined:hover{border-color:#888;background-color:#888;color:#fff}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined:disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined[disabled],.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined:disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined[disabled],.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined:disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined[disabled]{border-color:#e6e6e6}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-blue,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-blue,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-blue{border-color:#e1f6ff}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-blue.sui-active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-blue:active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-blue:hover,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-blue.sui-active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-blue:active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-blue:hover,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-blue.sui-active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-blue:active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-blue:hover{border-color:#17a8e3;background-color:#17a8e3;color:#fff}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-blue.disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-blue.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-blue:disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-blue[disabled],.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-blue.disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-blue.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-blue:disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-blue[disabled],.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-blue.disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-blue.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-blue:disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-blue[disabled]{border-color:#e6e6e6}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-green,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-green,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-green{border-color:#d1f1ea}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-green.sui-active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-green:active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-green:hover,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-green.sui-active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-green:active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-green:hover,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-green.sui-active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-green:active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-green:hover{border-color:#1abc9c;background-color:#1abc9c;color:#fff}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-green.disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-green.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-green:disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-green[disabled],.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-green.disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-green.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-green:disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-green[disabled],.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-green.disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-green.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-green:disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-green[disabled]{border-color:#e6e6e6}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-red,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-red,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-red{border-color:#ffe5e9}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-red.sui-active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-red:active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-red:hover,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-red.sui-active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-red:active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-red:hover,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-red.sui-active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-red:active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-red:hover{border-color:#ff6d6d;background-color:#ff6d6d;color:#fff}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-red.disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-red.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-red:disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-red[disabled],.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-red.disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-red.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-red:disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-red[disabled],.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-red.disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-red.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-red:disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-red[disabled]{border-color:#e6e6e6}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-orange,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-orange,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-orange{border-color:#ffe5d9}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-orange.sui-active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-orange:active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-orange:hover,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-orange.sui-active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-orange:active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-orange:hover,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-orange.sui-active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-orange:active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-orange:hover{border-color:#ff7e41;background-color:#ff7e41;color:#fff}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-orange.disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-orange.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-orange:disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-orange[disabled],.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-orange.disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-orange.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-orange:disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-orange[disabled],.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-orange.disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-orange.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-orange:disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-orange[disabled]{border-color:#e6e6e6}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-yellow,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-yellow,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-yellow{border-color:#fff5d5}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-yellow.sui-active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-yellow:active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-yellow:hover,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-yellow.sui-active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-yellow:active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-yellow:hover,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-yellow.sui-active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-yellow:active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-yellow:hover{border-color:#fecf2f;background-color:#fecf2f;color:#333}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-yellow.disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-yellow.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-yellow:disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-yellow[disabled],.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-yellow.disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-yellow.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-yellow:disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-yellow[disabled],.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-yellow.disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-yellow.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-yellow:disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-yellow[disabled]{border-color:#e6e6e6}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-purple,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-purple,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-purple{border-color:#f9e1ff}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-purple.sui-active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-purple:active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-purple:hover,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-purple.sui-active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-purple:active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-purple:hover,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-purple.sui-active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-purple:active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-purple:hover{border-color:#8d00b1;background-color:#8d00b1;color:#fff}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-purple.disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-purple.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-purple:disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-outlined.sui-button-purple[disabled],.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-purple.disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-purple.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-purple:disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-outlined.sui-button-purple[disabled],.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-purple.disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-purple.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-purple:disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-outlined.sui-button-purple[disabled]{border-color:#e6e6e6}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled{background-color:#e6e6e6;color:#aaa}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled:active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled:hover,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled:active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled:hover,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled:active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled:hover{background-color:#d2d2d2}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled:disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled[disabled],.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled:disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled[disabled],.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled:disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled[disabled]{background-color:#e6e6e6;color:#aaa}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-blue,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-blue,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-blue{background-color:#17a8e3;color:#fff}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-blue.sui-active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-blue:active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-blue:hover,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-blue.sui-active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-blue:active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-blue:hover,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-blue.sui-active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-blue:active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-blue:hover{background-color:#1286b5}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-blue.disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-blue.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-blue:disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-blue[disabled],.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-blue.disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-blue.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-blue:disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-blue[disabled],.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-blue.disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-blue.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-blue:disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-blue[disabled]{background-color:#e6e6e6;color:#aaa}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-green,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-green,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-green{background-color:#1abc9c;color:#fff}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-green.sui-active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-green:active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-green:hover,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-green.sui-active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-green:active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-green:hover,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-green.sui-active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-green:active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-green:hover{background-color:#148f77}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-green.disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-green.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-green:disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-green[disabled],.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-green.disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-green.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-green:disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-green[disabled],.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-green.disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-green.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-green:disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-green[disabled]{background-color:#e6e6e6;color:#aaa}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-red,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-red,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-red{background-color:#ff6d6d;color:#fff}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-red.sui-active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-red:active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-red:hover,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-red.sui-active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-red:active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-red:hover,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-red.sui-active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-red:active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-red:hover{background-color:#ff3a3a}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-red.disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-red.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-red:disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-red[disabled],.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-red.disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-red.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-red:disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-red[disabled],.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-red.disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-red.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-red:disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-red[disabled]{background-color:#e6e6e6;color:#aaa}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-orange,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-orange,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-orange{background-color:#ff7e41;color:#fff}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-orange.sui-active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-orange:active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-orange:hover,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-orange.sui-active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-orange:active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-orange:hover,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-orange.sui-active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-orange:active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-orange:hover{background-color:#ff5b0e}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-orange.disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-orange.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-orange:disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-orange[disabled],.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-orange.disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-orange.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-orange:disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-orange[disabled],.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-orange.disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-orange.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-orange:disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-orange[disabled]{background-color:#e6e6e6;color:#aaa}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-yellow,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-yellow,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-yellow{background-color:#fecf2f;color:#333}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-yellow.sui-active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-yellow:active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-yellow:hover,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-yellow.sui-active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-yellow:active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-yellow:hover,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-yellow.sui-active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-yellow:active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-yellow:hover{background-color:#f9c101}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-yellow.disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-yellow.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-yellow:disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-yellow[disabled],.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-yellow.disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-yellow.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-yellow:disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-yellow[disabled],.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-yellow.disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-yellow.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-yellow:disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-yellow[disabled]{background-color:#e6e6e6;color:#aaa}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-purple,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-purple,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-purple{background-color:#8d00b1;color:#fff}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-purple.sui-active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-purple:active,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-purple:hover,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-purple.sui-active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-purple:active,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-purple:hover,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-purple.sui-active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-purple:active,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-purple:hover{background-color:#64007e}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-purple.disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-purple.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-purple:disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-filled.sui-button-purple[disabled],.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-purple.disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-purple.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-purple:disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-filled.sui-button-purple[disabled],.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-purple.disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-purple.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-purple:disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-filled.sui-button-purple[disabled]{background-color:#e6e6e6;color:#aaa}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-lg,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-lg,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-lg{width:50px;height:40px}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-lg [class*=sui-icon-],.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-lg [class*=sui-icon-],.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-lg [class*=sui-icon-]{font-size:13px}.sui-forminator-scgen .sui-wrap .sui-dropdown .sui-button-icon:not(:last-child),.sui-forminator-scgen .sui-wrap .sui-dropdown .sui-button:not(:last-child),.sui-forminator-scgen .sui-wrap .sui-dropdown a.sui-button-icon:not(:last-child),.sui-forminator-scgen .sui-wrap .sui-dropdown a.sui-button:not(:last-child),.sui-forminator-scgen .sui-wrap .sui-dropdown button.sui-button-icon:not(:last-child),.sui-forminator-scgen .sui-wrap .sui-dropdown button.sui-button:not(:last-child){margin-right:0}.sui-forminator-scgen .sui-wrap *,.sui-forminator-scgen .sui-wrap :after,.sui-forminator-scgen .sui-wrap :before{box-sizing:border-box}.sui-forminator-scgen .sui-wrap .sui-box{min-height:20px;position:relative;border-radius:4px;background-color:#fff;box-shadow:0 2px 0 #e6e6e6}.sui-forminator-scgen .sui-wrap .sui-box .sui-box-header{border-bottom:1px solid #e6e6e6;padding:15px 30px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-box .sui-box-header{padding:15px 20px}}.sui-forminator-scgen .sui-wrap .sui-box .sui-box-header>h3>i{line-height:30px}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-box .sui-box-body{padding:20px}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-box .sui-box-body{padding:30px}}.sui-forminator-scgen .sui-wrap .sui-box .sui-box-footer{border-top:1px solid #e6e6e6;padding:30px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.sui-forminator-scgen .sui-wrap .sui-box .sui-box-footer.sui-pull-up{margin-top:-15px}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-box .sui-box-footer{padding:20px}}.sui-forminator-scgen .sui-wrap .sui-box .sui-box-status{padding:15px 20px 20px}.sui-forminator-scgen .sui-wrap .sui-box .sui-box-status .sui-status{display:-ms-flexbox;display:flex}.sui-forminator-scgen .sui-wrap .sui-box .sui-box-status .sui-status [class*=sui-status-]{font-size:12px;line-height:30px;font-family:Roboto,Arial,sans-serif;letter-spacing:-.25px}.sui-forminator-scgen .sui-wrap .sui-box .sui-box-status .sui-status [class*=sui-status-] .sui-tag{margin-left:8px}.sui-forminator-scgen .sui-wrap .sui-box .sui-box-status .sui-status [class*=sui-status-] [class*=sui-icon-]{margin-right:4px;font-size:12px}.sui-forminator-scgen .sui-wrap .sui-box .sui-box-status .sui-status [class*=sui-status-] [class*=sui-icon-]:before{display:block}.sui-forminator-scgen .sui-wrap .sui-box .sui-box-status .sui-status [class*=sui-status-]:not(:last-child){margin-right:20px}.sui-forminator-scgen .sui-wrap .sui-box .sui-box-status .sui-status [class*=sui-status-]:not(:first-child){padding-left:20px;border-left:1px solid #e6e6e6}.sui-forminator-scgen .sui-wrap .sui-box .sui-box-status .sui-status .sui-status-module{color:#888;font-weight:700}.sui-forminator-scgen .sui-wrap .sui-box .sui-box-status .sui-status .sui-status-changes{color:#aaa;font-weight:500;letter-spacing:-.25px}.sui-forminator-scgen .sui-wrap .sui-box .sui-box-status .sui-status .sui-status-changes .sui-icon-check-tick:before{color:#1abc9c}.sui-forminator-scgen .sui-wrap .sui-box .sui-box-status .sui-status .sui-status-changes .sui-icon-update:before{color:#888}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-box .sui-box-status .sui-status+.sui-actions{margin-top:15px}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-box .sui-box-status .sui-status+.sui-actions{margin-left:15px}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-box .sui-box-status .sui-status{-ms-flex:1;flex:1}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-box .sui-box-status .sui-actions{-ms-flex:0 0 auto;flex:0 0 auto}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-box .sui-box-status{display:-ms-flexbox;display:flex;padding:15px 30px}}.sui-forminator-scgen .sui-wrap .sui-box .sui-box-search>*{max-width:100%;-ms-flex:0 1 auto;flex:0 1 auto}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-box .sui-box-search>.sui-search-left:not(:last-child){margin-right:15px}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-box .sui-box-search>.sui-search-left{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-box .sui-box-search>.sui-search-right:only-child{-ms-flex:1;flex:1}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-box .sui-box-search>.sui-search-right:not(:only-child):not(:last-child){margin-right:15px}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-box .sui-box-search>.sui-search-right:not(:only-child){-ms-flex:0 0 auto;flex:0 0 auto}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-box .sui-box-search{display:-ms-flexbox;display:flex}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-box.sui-box-sticky{position:-webkit-sticky!important;position:sticky!important;top:32px;z-index:12}}.sui-forminator-scgen .sui-wrap .sui-box.sui-box-sticky.sui-is-sticky{box-shadow:0 5px 25px rgba(0,0,0,.15)}.sui-forminator-scgen .sui-wrap .sui-box>.sui-box-search{padding-top:15px;padding-bottom:15px}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-box>.sui-box-search{padding-right:20px;padding-left:20px}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-box>.sui-box-search{padding-right:30px;padding-left:30px}}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-box:last-child{margin-bottom:0}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-box:last-child{margin-bottom:0}}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-box{margin-bottom:20px}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-box{margin-bottom:30px}}.sui-forminator-scgen .sui-wrap .sui-message{display:block;text-align:center}.sui-forminator-scgen .sui-wrap .sui-message .sui-message-content{max-width:600px;margin-right:auto;margin-left:auto}.sui-forminator-scgen .sui-wrap .sui-message .sui-message-content h1,.sui-forminator-scgen .sui-wrap .sui-message .sui-message-content h2,.sui-forminator-scgen .sui-wrap .sui-message .sui-message-content h3,.sui-forminator-scgen .sui-wrap .sui-message .sui-message-content h4,.sui-forminator-scgen .sui-wrap .sui-message .sui-message-content h5,.sui-forminator-scgen .sui-wrap .sui-message .sui-message-content h6{margin:0 0 20px}.sui-forminator-scgen .sui-wrap .sui-message .sui-message-content h1:last-child,.sui-forminator-scgen .sui-wrap .sui-message .sui-message-content h2:last-child,.sui-forminator-scgen .sui-wrap .sui-message .sui-message-content h3:last-child,.sui-forminator-scgen .sui-wrap .sui-message .sui-message-content h4:last-child,.sui-forminator-scgen .sui-wrap .sui-message .sui-message-content h5:last-child,.sui-forminator-scgen .sui-wrap .sui-message .sui-message-content h6:last-child{margin-bottom:0}.sui-forminator-scgen .sui-wrap .sui-message .sui-message-content p{margin:0 0 30px;letter-spacing:-.25px}.sui-forminator-scgen .sui-wrap .sui-message .sui-message-content p:last-child{margin-bottom:0}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-message .sui-message-content{margin-top:20px;margin-bottom:20px}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-message .sui-message-content{margin-top:30px;margin-bottom:30px}}.sui-forminator-scgen .sui-wrap .sui-message:not(.sui-message-lg) .sui-image{margin:10px auto}.sui-forminator-scgen .sui-wrap .sui-message:not(.sui-message-lg) .sui-message-content:first-child{margin-top:0}.sui-forminator-scgen .sui-wrap .sui-message:not(.sui-message-lg) .sui-message-content:last-child{margin-bottom:0}.sui-forminator-scgen .sui-wrap .sui-message.sui-message-lg .sui-image{margin:30px auto}.sui-forminator-scgen .sui-wrap .sui-message:first-child{margin-top:0}.sui-forminator-scgen .sui-wrap .sui-message:last-child{margin-bottom:0}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-message{padding:20px}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-message{padding:30px}}.sui-forminator-scgen .sui-wrap .sui-box .sui-box-title{display:block;margin:0;padding:0;border:0;font:700 15px/30px Roboto,Arial,sans-serif;text-transform:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sui-forminator-scgen .sui-wrap .sui-box .sui-box-title *{vertical-align:middle}.sui-forminator-scgen .sui-wrap .sui-box .sui-box-title [class*=sui-icon-]{float:left;display:block;margin-right:10px}.sui-forminator-scgen .sui-wrap .sui-box .sui-box-title [class*=sui-icon-]:before{color:inherit;font-size:20px;vertical-align:text-bottom}.sui-forminator-scgen .sui-wrap .sui-box-body .sui-upsell-row{position:relative}.sui-forminator-scgen .sui-wrap .sui-box-body .sui-upsell-row .sui-upsell-image{width:100px;position:absolute;bottom:0}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-box-body .sui-upsell-row .sui-upsell-image{display:none}}.sui-forminator-scgen .sui-wrap .sui-box-body .sui-upsell-row .sui-upsell-notice p{position:relative;padding:15px 20px 15px 43px;border-radius:4px;color:#333;font-size:13px;line-height:22px;border-top:1px solid #e6e6e6;border-right:1px solid #e6e6e6;border-bottom:1px solid #e6e6e6;border-left:2px solid #8d00b1}.sui-forminator-scgen .sui-wrap .sui-box-body .sui-upsell-row .sui-upsell-notice p a{color:#333;font-weight:500}.sui-forminator-scgen .sui-wrap .sui-box-body .sui-upsell-row .sui-upsell-notice p:first-of-type:before{content:"I";color:#8d00b1;margin-left:-23px;margin-right:10px}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-box-body .sui-upsell-row .sui-upsell-notice{padding-left:130px}}.sui-forminator-scgen .sui-wrap .sui-box-body.sui-upsell-items{padding:0}.sui-forminator-scgen .sui-wrap .sui-box-body .sui-settings-box{padding:20px;border:1px solid #e6e6e6;border-radius:4px}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-box-body .sui-settings-box{padding:30px}}.sui-forminator-scgen .sui-wrap .sui-with-bottom-border{margin-bottom:30px;padding-bottom:30px;border-bottom:1px solid #e6e6e6}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-with-bottom-border{margin-bottom:20px;padding-bottom:20px}}.sui-forminator-scgen .sui-wrap .sui-border-frame{margin:10px 0 0;border:1px solid #e6e6e6;border-radius:4px}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-border-frame:not(:last-child){margin-bottom:20px}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-border-frame:not(:last-child){margin-bottom:30px}}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-border-frame{padding:20px}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-border-frame{padding:30px}}.sui-forminator-scgen .sui-wrap .sui-header{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;position:relative;margin-bottom:30px;line-height:1}.sui-forminator-scgen .sui-wrap .sui-header h1{text-transform:uppercase}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-header h1{-ms-flex:0 0 100%;flex:0 0 100%}}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-header .sui-actions-right{margin-top:10px;margin-right:auto;margin-left:0}}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-header .sui-actions-left{margin-top:10px;margin-right:0;margin-left:0}}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-header.sui-header-inline h1+*{margin-left:10px}}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-header.sui-header-inline h1{-ms-flex:1;flex:1}}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-header.sui-header-inline .sui-actions-left,.sui-forminator-scgen .sui-wrap .sui-header.sui-header-inline .sui-actions-right{-ms-flex:0 0 auto;flex:0 0 auto;margin-top:0;margin-right:0}}@media (min-width:1200px){.sui-forminator-scgen .sui-wrap .sui-header.sui-with-floating-input h1{padding-right:260px}}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-header.sui-with-floating-input{margin-bottom:15px}}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-header{margin-bottom:20px}}.sui-forminator-scgen .sui-wrap .sui-header-title{color:#333;margin:0;text-align:left;text-transform:uppercase;font-weight:700;max-width:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sui-forminator-scgen .sui-wrap .sui-label,.sui-forminator-scgen .sui-wrap .sui-label-inline{display:-ms-inline-flexbox;display:inline-flex;padding:0;border:0;color:#888;font:500 12px/16px Roboto,Arial,sans-serif}.sui-forminator-scgen .sui-wrap .sui-form-control,.sui-forminator-scgen .sui-wrap .sui-multi-checkbox{width:100%;height:40px;margin:0;padding:9px 14px;border:1px solid #ddd;border-radius:4px;background-color:#fafafa;background-image:none;color:#333;font:500 15px/20px Roboto,Arial,sans-serif;letter-spacing:-.25px;transition:.3s ease-in-out}.sui-forminator-scgen .sui-wrap .sui-form-control,.sui-forminator-scgen .sui-wrap .sui-form-control:active,.sui-forminator-scgen .sui-wrap .sui-form-control:focus,.sui-forminator-scgen .sui-wrap .sui-form-control:hover,.sui-forminator-scgen .sui-wrap .sui-multi-checkbox,.sui-forminator-scgen .sui-wrap .sui-multi-checkbox:active,.sui-forminator-scgen .sui-wrap .sui-multi-checkbox:focus,.sui-forminator-scgen .sui-wrap .sui-multi-checkbox:hover{outline:none;box-shadow:none}.sui-forminator-scgen .sui-wrap .sui-form-control:focus,.sui-forminator-scgen .sui-wrap .sui-form-control:hover,.sui-forminator-scgen .sui-wrap .sui-multi-checkbox:focus,.sui-forminator-scgen .sui-wrap .sui-multi-checkbox:hover{border-color:#ddd;background-color:#fff}.sui-forminator-scgen .sui-wrap .sui-form-control:focus,.sui-forminator-scgen .sui-wrap .sui-multi-checkbox:focus{background-color:#fff;color:#333}.sui-forminator-scgen .sui-wrap .sui-form-control::-ms-input-placeholder,.sui-forminator-scgen .sui-wrap .sui-multi-checkbox::-ms-input-placeholder{color:#aaa}.sui-forminator-scgen .sui-wrap .sui-form-control::placeholder,.sui-forminator-scgen .sui-wrap .sui-multi-checkbox::placeholder{color:#aaa}.sui-forminator-scgen .sui-wrap .sui-disabled.sui-form-control,.sui-forminator-scgen .sui-wrap .sui-disabled.sui-multi-checkbox,.sui-forminator-scgen .sui-wrap .sui-form-control[disabled],.sui-forminator-scgen .sui-wrap .sui-multi-checkbox[disabled],fieldset[disabled] .sui-forminator-scgen .sui-wrap .sui-form-control,fieldset[disabled] .sui-forminator-scgen .sui-wrap .sui-multi-checkbox{cursor:not-allowed}.sui-forminator-scgen .sui-wrap .sui-disabled.sui-form-control,.sui-forminator-scgen .sui-wrap .sui-disabled.sui-form-control:focus,.sui-forminator-scgen .sui-wrap .sui-disabled.sui-form-control:hover,.sui-forminator-scgen .sui-wrap .sui-disabled.sui-multi-checkbox,.sui-forminator-scgen .sui-wrap .sui-disabled.sui-multi-checkbox:focus,.sui-forminator-scgen .sui-wrap .sui-disabled.sui-multi-checkbox:hover,.sui-forminator-scgen .sui-wrap .sui-form-control[disabled],.sui-forminator-scgen .sui-wrap .sui-form-control[disabled]:focus,.sui-forminator-scgen .sui-wrap .sui-form-control[disabled]:hover,.sui-forminator-scgen .sui-wrap .sui-multi-checkbox[disabled],.sui-forminator-scgen .sui-wrap .sui-multi-checkbox[disabled]:focus,.sui-forminator-scgen .sui-wrap .sui-multi-checkbox[disabled]:hover,fieldset[disabled] .sui-forminator-scgen .sui-wrap .sui-form-control,fieldset[disabled] .sui-forminator-scgen .sui-wrap .sui-form-control:focus,fieldset[disabled] .sui-forminator-scgen .sui-wrap .sui-form-control:hover,fieldset[disabled] .sui-forminator-scgen .sui-wrap .sui-multi-checkbox,fieldset[disabled] .sui-forminator-scgen .sui-wrap .sui-multi-checkbox:focus,fieldset[disabled] .sui-forminator-scgen .sui-wrap .sui-multi-checkbox:hover{border-color:#f2f2f2;background-color:#f2f2f2;color:#aaa}.sui-forminator-scgen .sui-wrap .sui-form-control::-ms-expand,.sui-forminator-scgen .sui-wrap .sui-multi-checkbox::-ms-expand{border:0;background-color:transparent}.sui-forminator-scgen .sui-wrap label{cursor:default}.sui-forminator-scgen .sui-wrap label[for]{cursor:pointer}.sui-forminator-scgen .sui-wrap .sui-label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;margin:0 0 5px}.sui-forminator-scgen .sui-wrap .sui-label .sui-tag{margin-left:5px}.sui-forminator-scgen .sui-wrap .sui-label .sui-tag.sui-left{margin-right:5px;margin-left:0}.sui-forminator-scgen .sui-wrap .sui-label:last-child{margin:0}.sui-forminator-scgen .sui-wrap .sui-label-link{margin-right:0;margin-left:auto;color:#888;font-weight:400}.sui-forminator-scgen .sui-wrap .sui-label-inline{margin:0}.sui-forminator-scgen .sui-wrap .sui-label-note{margin-right:0;margin-left:auto}.sui-forminator-scgen .sui-wrap .sui-form-control,.sui-forminator-scgen .sui-wrap .sui-multi-checkbox{display:block}.sui-forminator-scgen .sui-wrap .sui-form-control.sui-input-sm,.sui-forminator-scgen .sui-wrap .sui-input-sm.sui-multi-checkbox{max-width:80px}.sui-forminator-scgen .sui-wrap .sui-form-control.sui-input-md,.sui-forminator-scgen .sui-wrap .sui-input-md.sui-multi-checkbox{max-width:240px}.sui-forminator-scgen .sui-wrap .sui-field-has-prefix.sui-multi-checkbox,.sui-forminator-scgen .sui-wrap .sui-field-has-suffix.sui-multi-checkbox,.sui-forminator-scgen .sui-wrap .sui-form-control.sui-field-has-prefix,.sui-forminator-scgen .sui-wrap .sui-form-control.sui-field-has-suffix{width:auto;display:inline-block}.sui-forminator-scgen .sui-wrap .sui-multi-checkbox{height:auto;max-height:114px;overflow-y:auto;padding:1px}.sui-forminator-scgen .sui-wrap .sui-multi-checkbox label{margin:1px 0}.sui-forminator-scgen .sui-wrap .sui-multi-checkbox label input:checked+span{background-color:#17a8e3;color:#fff}.sui-forminator-scgen .sui-wrap .sui-multi-checkbox label span{display:block;padding:10px}.sui-forminator-scgen .sui-wrap .sui-multi-checkbox label:first-child{margin-top:0}.sui-forminator-scgen .sui-wrap .sui-multi-checkbox label:first-child span{border-radius:3px 3px 0 0}.sui-forminator-scgen .sui-wrap .sui-multi-checkbox label:last-child{margin-bottom:0}.sui-forminator-scgen .sui-wrap .sui-multi-checkbox label:last-child span{border-radius:0 0 3px 3px}.sui-forminator-scgen .sui-wrap .sui-description,.sui-forminator-scgen .sui-wrap .sui-multi-checkbox label{display:block;margin-top:5px;color:#888;font-size:13px;line-height:16px;font-weight:400}.sui-forminator-scgen .sui-wrap .sui-description.sui-toggle-description,.sui-forminator-scgen .sui-wrap .sui-multi-checkbox label.sui-toggle-description{margin-left:48px}.sui-forminator-scgen .sui-wrap .sui-description.sui-checkbox-description,.sui-forminator-scgen .sui-wrap .sui-description.sui-radio-description,.sui-forminator-scgen .sui-wrap .sui-multi-checkbox label.sui-checkbox-description,.sui-forminator-scgen .sui-wrap .sui-multi-checkbox label.sui-radio-description{margin:0 27px 5px}.sui-forminator-scgen .sui-wrap .sui-description+.sui-form-field,.sui-forminator-scgen .sui-wrap .sui-description+.sui-form-field-inline,.sui-forminator-scgen .sui-wrap .sui-multi-checkbox label+.sui-form-field,.sui-forminator-scgen .sui-wrap .sui-multi-checkbox label+.sui-form-field-inline{margin-top:20px}.sui-forminator-scgen .sui-wrap .sui-error-message{display:block;margin-top:8px;color:#ff6d6d;font-size:12px;line-height:16px;font-weight:500}.sui-forminator-scgen .sui-wrap .sui-form-field.sui-input-sm{max-width:80px}.sui-forminator-scgen .sui-wrap .sui-form-field.sui-input-md{max-width:240px}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-form-field>.sui-row [class^=sui-col]{padding-right:5px;padding-left:5px}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-form-field>.sui-row:first-child{margin-top:0}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-form-field>.sui-row{margin:10px -5px 0}}.sui-forminator-scgen .sui-wrap .sui-form-field:last-child{margin-bottom:0}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-form-field:last-child{margin-bottom:0}}.sui-forminator-scgen .sui-wrap .sui-form-field.sui-form-field-error .sui-form-control,.sui-forminator-scgen .sui-wrap .sui-form-field.sui-form-field-error .sui-multi-checkbox,.sui-forminator-scgen .sui-wrap .sui-form-field.sui-has_error .sui-form-control,.sui-forminator-scgen .sui-wrap .sui-form-field.sui-has_error .sui-multi-checkbox{border-bottom:2px solid #ff6d6d}.sui-forminator-scgen .sui-wrap .sui-form-field.sui-form-field-error .sui-control-with-icon [class*=sui-icon-]:before,.sui-forminator-scgen .sui-wrap .sui-form-field.sui-has_error .sui-control-with-icon [class*=sui-icon-]:before{color:#ff6d6d}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-form-field{margin-bottom:20px}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-form-field{margin-bottom:30px}}.sui-forminator-scgen .sui-wrap .sui-field-prefix,.sui-forminator-scgen .sui-wrap .sui-field-suffix{display:inline-block;color:#888;font-size:13px;line-height:22px}.sui-forminator-scgen .sui-wrap .sui-field-prefix{margin-right:10px}.sui-forminator-scgen .sui-wrap .sui-field-suffix{margin-left:10px}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-form-field-inline>.select-container:first-child,.sui-forminator-scgen .sui-wrap .sui-form-field-inline>.sui-form-field:first-child{margin-left:0}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-form-field-inline>.select-container:last-child,.sui-forminator-scgen .sui-wrap .sui-form-field-inline>.sui-form-field:last-child{margin-right:0}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-form-field-inline>.select-container,.sui-forminator-scgen .sui-wrap .sui-form-field-inline>.sui-form-field{-ms-flex:0 0 auto;flex:0 0 auto;margin:0 10px}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-form-field-inline>.sui-form-field{-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:0}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-form-field-inline>.sui-label,.sui-forminator-scgen .sui-wrap .sui-form-field-inline>p,.sui-forminator-scgen .sui-wrap .sui-form-field-inline>span{-ms-flex:0 0 auto;flex:0 0 auto;margin:0}}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-form-field-inline:last-child{margin-bottom:0}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-form-field-inline:last-child{margin-bottom:0}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-form-field-inline{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;margin-bottom:30px}}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-form-field-inline{margin-bottom:20px}}.sui-forminator-scgen .sui-wrap .sui-control-with-icon{position:relative}.sui-forminator-scgen .sui-wrap .sui-control-with-icon .sui-form-control,.sui-forminator-scgen .sui-wrap .sui-control-with-icon .sui-multi-checkbox,.sui-forminator-scgen .sui-wrap .sui-control-with-icon select.sui-select+.select2-container .select2-selection__rendered{padding-left:40px}.sui-forminator-scgen .sui-wrap .sui-control-with-icon [class*=sui-icon-]{width:16px;height:16px;pointer-events:none;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;position:absolute;top:11px;left:14px}.sui-forminator-scgen .sui-wrap .sui-control-with-icon [class*=sui-icon-]:before{color:#aaa;display:block}.sui-forminator-scgen .sui-wrap .sui-control-with-icon.sui-right-icon .sui-form-control,.sui-forminator-scgen .sui-wrap .sui-control-with-icon.sui-right-icon .sui-multi-checkbox{padding-right:40px;padding-left:14px}.sui-forminator-scgen .sui-wrap .sui-control-with-icon.sui-right-icon [class*=sui-icon-]{right:14px;left:auto;color:#888}.sui-forminator-scgen .sui-wrap .sui-with-button{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.sui-forminator-scgen .sui-wrap .sui-with-button .sui-button{-ms-flex:0 0 auto;flex:0 0 auto}.sui-forminator-scgen .sui-wrap .sui-with-button .sui-form-control,.sui-forminator-scgen .sui-wrap .sui-with-button .sui-multi-checkbox{-ms-flex:1;flex:1;margin:0 5px}.sui-forminator-scgen .sui-wrap .sui-with-button .sui-form-control:first-child,.sui-forminator-scgen .sui-wrap .sui-with-button .sui-multi-checkbox:first-child{margin-left:0}.sui-forminator-scgen .sui-wrap .sui-with-button .sui-form-control:last-child,.sui-forminator-scgen .sui-wrap .sui-with-button .sui-multi-checkbox:last-child{margin-right:0}.sui-forminator-scgen .sui-wrap .sui-with-button.sui-inside,.sui-forminator-scgen .sui-wrap .sui-with-button.sui-with-button-inside{display:block;position:relative}.sui-forminator-scgen .sui-wrap .sui-with-button.sui-inside .sui-button,.sui-forminator-scgen .sui-wrap .sui-with-button.sui-inside .sui-button-icon,.sui-forminator-scgen .sui-wrap .sui-with-button.sui-with-button-inside .sui-button,.sui-forminator-scgen .sui-wrap .sui-with-button.sui-with-button-inside .sui-button-icon{position:absolute;top:5px;right:5px}.sui-forminator-scgen .sui-wrap .sui-with-button.sui-inside .sui-button-lg,.sui-forminator-scgen .sui-wrap .sui-with-button.sui-with-button-inside .sui-button-lg{top:0;right:0;border-top-left-radius:0;border-bottom-left-radius:0}.sui-forminator-scgen .sui-wrap .sui-with-button.sui-inside .sui-form-control,.sui-forminator-scgen .sui-wrap .sui-with-button.sui-inside .sui-multi-checkbox,.sui-forminator-scgen .sui-wrap .sui-with-button.sui-with-button-inside .sui-form-control,.sui-forminator-scgen .sui-wrap .sui-with-button.sui-with-button-inside .sui-multi-checkbox{margin:0;padding-right:90px}.sui-forminator-scgen .sui-wrap .sui-with-button.sui-with-button-icon{display:block;position:relative}.sui-forminator-scgen .sui-wrap .sui-with-button.sui-with-button-icon .sui-button,.sui-forminator-scgen .sui-wrap .sui-with-button.sui-with-button-icon .sui-button-icon{position:absolute;top:5px;right:5px}.sui-forminator-scgen .sui-wrap .sui-with-button.sui-with-button-icon .sui-button-lg{top:0;right:0}.sui-forminator-scgen .sui-wrap .sui-with-button.sui-with-button-icon .sui-form-control,.sui-forminator-scgen .sui-wrap .sui-with-button.sui-with-button-icon .sui-multi-checkbox{margin:0;padding-right:40px}.sui-forminator-scgen .sui-wrap .sui-input-group{width:100%;display:-ms-flexbox;display:flex;-ms-flex-align:stretch;align-items:stretch;position:relative}.sui-forminator-scgen .sui-wrap .sui-password-group{position:relative}.sui-forminator-scgen .sui-wrap .sui-password-group .sui-password-toggle{width:30px;height:30px;cursor:pointer;position:absolute;top:50%;right:7px;padding:0;border:0;border-radius:4px;background:transparent;color:#888;font-size:15px;line-height:1em;transform:translateY(-50%)}.sui-forminator-scgen .sui-wrap .sui-password-group .sui-password-toggle:active,.sui-forminator-scgen .sui-wrap .sui-password-group .sui-password-toggle:focus,.sui-forminator-scgen .sui-wrap .sui-password-group .sui-password-toggle:hover{outline:0}.sui-forminator-scgen .sui-wrap .sui-password-group .sui-password-toggle:hover{background-color:rgba(0,0,0,.03)}.sui-forminator-scgen .sui-wrap .sui-password-group .sui-password-toggle:hover [class*=sui-icon-]:before{color:#666}.sui-forminator-scgen .sui-wrap .sui-date{position:relative}.sui-forminator-scgen .sui-wrap .sui-date .sui-form-control:first-child,.sui-forminator-scgen .sui-wrap .sui-date .sui-multi-checkbox:first-child{padding-right:40px}.sui-forminator-scgen .sui-wrap .sui-date .sui-form-control:last-child,.sui-forminator-scgen .sui-wrap .sui-date .sui-multi-checkbox:last-child{padding-left:40px}.sui-forminator-scgen .sui-wrap .sui-date [class*=sui-icon-]{width:30px;height:30px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;position:absolute;top:5px}.sui-forminator-scgen .sui-wrap .sui-date [class*=sui-icon-]:before{display:block}.sui-forminator-scgen .sui-wrap .sui-date [class*=sui-icon-]:first-child{left:5px}.sui-forminator-scgen .sui-wrap .sui-date [class*=sui-icon-]:last-child{right:5px}.sui-forminator-scgen .sui-wrap .sui-multi-date{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.sui-forminator-scgen .sui-wrap .sui-multi-date .sui-form-field{-ms-flex:1;flex:1}.sui-forminator-scgen .sui-wrap .sui-multi-date .sui-form-field+button{-ms-flex:0 0 auto;flex:0 0 auto;margin-left:10px}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-multi-date .sui-form-field{margin-bottom:0}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-multi-date .sui-form-field{margin-bottom:0}}.sui-forminator-scgen .sui-wrap .sui-multi-date:not(:last-child){margin-bottom:10px}.sui-forminator-scgen .sui-wrap .sui-insert-variables{position:relative}.sui-forminator-scgen .sui-wrap .sui-insert-variables .sui-form-control,.sui-forminator-scgen .sui-wrap .sui-insert-variables .sui-multi-checkbox{padding-right:53px}.sui-forminator-scgen .sui-wrap .sui-insert-variables .select-container{position:absolute;top:0;right:0;border:0;background-color:transparent;pointer-events:none}.sui-forminator-scgen .sui-wrap .sui-insert-variables .select-container .dropdown-handle{display:none}.sui-forminator-scgen .sui-wrap .sui-insert-variables .select-container .select-list-container{padding-right:0;pointer-events:auto}.sui-forminator-scgen .sui-wrap .sui-insert-variables .select-container .select-list-container .list-value{width:40px;height:40px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;position:relative;padding:0;border:1px solid #ddd;border-left-color:transparent;border-radius:0 4px 4px 0;color:transparent;font-size:16px;transition:.2s ease}.sui-forminator-scgen .sui-wrap .sui-insert-variables .select-container .select-list-container .list-value:hover{border-left-color:#ddd;background-color:#f2f2f2}.sui-forminator-scgen .sui-wrap .sui-insert-variables .select-container .select-list-container .list-value:hover:before{color:#666}.sui-forminator-scgen .sui-wrap .sui-insert-variables .select-container .select-list-container .list-value:before{content:"@";width:16px;height:16px;display:block;position:absolute}.sui-forminator-scgen .sui-wrap .sui-insert-variables .select-container .select-list-container .list-results{width:320px;left:auto;margin-right:0;border-color:#ddd;background-color:#fff}.sui-forminator-scgen .sui-wrap .sui-insert-variables .select-container .select-list-container .list-results li.sui-element-flex{display:-ms-flexbox;display:flex}.sui-forminator-scgen .sui-wrap .sui-insert-variables .select-container .select-list-container .list-results li.sui-element-flex span{pointer-events:none;overflow:hidden;display:block;text-overflow:ellipsis;white-space:nowrap;-ms-flex:1;flex:1}.sui-forminator-scgen .sui-wrap .sui-insert-variables .select-container .select-list-container .list-results li.sui-element-flex span+span{-ms-flex:0 0 auto;flex:0 0 auto;margin-left:5px;color:#aaa;font-size:12px}.sui-forminator-scgen .sui-wrap .sui-insert-variables .select-container .select-list-container .list-results .current{background-color:transparent;color:#888}.sui-forminator-scgen .sui-wrap .sui-insert-variables .select-container .select-list-container .list-results .current:hover{background-color:#f8f8f8;color:#333}.sui-forminator-scgen .sui-wrap .sui-insert-variables .select-container.active .select-list-container .list-value{z-index:1011;border-bottom-color:#fff;border-left-color:#ddd;background-color:#fff;border-bottom-right-radius:0}.sui-forminator-scgen .sui-wrap .sui-insert-variables .select-container.active .select-list-container .list-value:before{color:#333}.sui-forminator-scgen .sui-wrap .sui-insert-variables .select-container.active .select-list-container .list-results{top:38px;border-top-right-radius:0}.sui-forminator-scgen .sui-wrap .sui-insert-variables .sui-variables+.select2{width:auto!important;height:auto!important;display:block;position:absolute;top:0;right:0}.sui-forminator-scgen .sui-wrap .sui-insert-variables .sui-variables+.select2 *{display:block;outline:none}.sui-forminator-scgen .sui-wrap .sui-insert-variables .sui-variables+.select2 .select2-selection--single{height:auto;border:1px solid #ddd;border-left-color:transparent;border-radius:0 4px 4px 0;background-color:transparent;transition:.2s ease}.sui-forminator-scgen .sui-wrap .sui-insert-variables .sui-variables+.select2 .select2-selection--single .select2-selection__arrow{width:38px;height:38px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;position:relative;top:auto;right:auto}.sui-forminator-scgen .sui-wrap .sui-insert-variables .sui-variables+.select2 .select2-selection--single .select2-selection__arrow:before{content:"@";display:block;margin:0 auto;color:#888;font-size:16px}.sui-forminator-scgen .sui-wrap .sui-insert-variables .sui-variables+.select2 .select2-selection--single .select2-selection__arrow b{display:none}.sui-forminator-scgen .sui-wrap .sui-insert-variables .sui-variables+.select2 .select2-selection--single:hover{border-left-color:#ddd;background-color:#f2f2f2}.sui-forminator-scgen .sui-wrap .sui-insert-variables .sui-variables+.select2 .select2-selection--single:hover .select2-selection__arrow:before{color:#666}.sui-forminator-scgen .sui-wrap .sui-insert-variables .sui-variables+.select2.select2-container--open .select2-selection--single{border-left-color:#ddd;background-color:#fff;border-bottom-right-radius:0}.sui-forminator-scgen .sui-wrap .sui-insert-variables .sui-variables+.select2.select2-container--open .select2-selection--single .select2-selection__arrow:before{color:#333}.sui-forminator-scgen .sui-wrap .sui-insert-variables textarea.sui-form-control+.select-container .select-list-container .list-value,.sui-forminator-scgen .sui-wrap .sui-insert-variables textarea.sui-multi-checkbox+.select-container .select-list-container .list-value{border-color:transparent}.sui-forminator-scgen .sui-wrap .sui-insert-variables textarea.sui-form-control+.select-container.active .select-list-container .list-value,.sui-forminator-scgen .sui-wrap .sui-insert-variables textarea.sui-form-control+.select-container .select-list-container .list-value:hover,.sui-forminator-scgen .sui-wrap .sui-insert-variables textarea.sui-multi-checkbox+.select-container.active .select-list-container .list-value,.sui-forminator-scgen .sui-wrap .sui-insert-variables textarea.sui-multi-checkbox+.select-container .select-list-container .list-value:hover{border-left-color:transparent;background-color:transparent}.sui-forminator-scgen .sui-wrap textarea.sui-form-control,.sui-forminator-scgen .sui-wrap textarea.sui-multi-checkbox{max-width:100%;height:auto;resize:vertical;line-height:20px}.sui-forminator-scgen .sui-wrap select.sui-form-control,.sui-forminator-scgen .sui-wrap select.sui-multi-checkbox{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAs0lEQVQ4T6WS2w0CIRBF59KA2oklaAdbgpbgB48SIBThduKWYClrA2CGgEEXNWH5moR7Zu48QJ0PnRytA6WUe67svb//clDrUkWt9UxEMYRw/AYzJIS4sd45t0ugMeZERNcY49yCCwRgS0Rna+346rGGAVz4s06aW0gQx2/DUUoNAEYAG86cxezkAWCw1k5lBoupZltThomhEMLhs/fmOgrM2VvQwmq9in8rWncAPWfXXfEJ6RpWD7sJ1JwAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center right 10px;line-height:1}.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-menu,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-tabs]{display:-ms-flexbox;display:flex;margin:0;padding:0;border-top:1px solid #e6e6e6;list-style:none}.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-menu .sui-tab-item,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-menu>*,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-tabs] .sui-tab-item,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-tabs]>*{cursor:pointer;margin:0 10px;padding:14px 0 12px;border:0;background-color:transparent}.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-menu .sui-tab-item,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-menu .sui-tab-item:active,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-menu .sui-tab-item:focus,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-menu .sui-tab-item:hover,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-menu .sui-tab-item:visited,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-menu>*,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-menu>:active,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-menu>:focus,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-menu>:hover,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-menu>:visited,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-tabs] .sui-tab-item,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-tabs] .sui-tab-item:active,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-tabs] .sui-tab-item:focus,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-tabs] .sui-tab-item:hover,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-tabs] .sui-tab-item:visited,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-tabs]>*,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-tabs]>:active,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-tabs]>:focus,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-tabs]>:hover,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-tabs]>:visited{outline:none;border-bottom:2px solid transparent;font-size:12px;line-height:22px;font-weight:500;text-transform:uppercase;text-decoration:none}.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-menu .sui-tab-item,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-menu .sui-tab-item:visited,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-menu>*,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-menu>:visited,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-tabs] .sui-tab-item,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-tabs] .sui-tab-item:visited,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-tabs]>*,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-tabs]>:visited{color:#888}.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-menu .sui-tab-item:active,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-menu .sui-tab-item:focus,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-menu .sui-tab-item:hover,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-menu>:active,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-menu>:focus,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-menu>:hover,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-tabs] .sui-tab-item:active,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-tabs] .sui-tab-item:focus,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-tabs] .sui-tab-item:hover,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-tabs]>:active,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-tabs]>:focus,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-tabs]>:hover{color:#333}.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-menu .sui-tab-item:first-child,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-menu>:first-child,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-tabs] .sui-tab-item:first-child,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-tabs]>:first-child{margin-left:0}.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-menu .sui-tab-item:last-child,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-menu>:last-child,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-tabs] .sui-tab-item:last-child,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-tabs]>:last-child{margin-right:0}.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-menu .sui-tab-item.active,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-menu>.active,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-tabs] .sui-tab-item.active,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-tabs]>.active{color:#333;border-bottom-color:#333}.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-content>*,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-content>.sui-tab-content,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-panes]>*,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-panes]>.sui-tab-content{display:none;margin-top:-1px;padding:20px 0 0;border-top:1px solid #e6e6e6}.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-content>.active,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-content>.sui-tab-content.active,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-panes]>.active,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-panes]>.sui-tab-content.active{display:block}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-content>*,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>.sui-tabs-content>.sui-tab-content,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-panes]>*,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs)>[data-panes]>.sui-tab-content{padding:30px 0 0}}.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs).sui-tabs-flushed>.sui-tabs-menu,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs).sui-tabs-flushed>[data-tabs]{border-top-width:0}.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs).sui-tabs-overflow{border:1px solid #e6e6e6;border-radius:4px;position:relative}.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs).sui-tabs-overflow>.sui-tabs-menu,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs).sui-tabs-overflow>[data-tabs]{overflow:auto;margin-right:20px;margin-left:20px;border-top-width:0;scrollbar-width:none;scrollbar-height:none}.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs).sui-tabs-overflow>.sui-tabs-menu::-webkit-scrollbar,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs).sui-tabs-overflow>[data-tabs]::-webkit-scrollbar{width:0;height:0;background:transparent}.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs).sui-tabs-overflow>.sui-tabs-menu .sui-tab-item,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs).sui-tabs-overflow>.sui-tabs-menu>*,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs).sui-tabs-overflow>[data-tabs] .sui-tab-item,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs).sui-tabs-overflow>[data-tabs]>*{-ms-flex:0 0 auto;flex:0 0 auto}.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs).sui-tabs-overflow>.sui-tabs-content>*,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs).sui-tabs-overflow>.sui-tabs-content>.sui-tab-content,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs).sui-tabs-overflow>[data-panes]>*,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs).sui-tabs-overflow>[data-panes]>.sui-tab-content{padding-right:20px;padding-bottom:20px;padding-left:20px}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs).sui-tabs-overflow>.sui-tabs-content>*,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs).sui-tabs-overflow>.sui-tabs-content>.sui-tab-content,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs).sui-tabs-overflow>[data-panes]>*,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs).sui-tabs-overflow>[data-panes]>.sui-tab-content{padding-right:30px;padding-bottom:30px;padding-left:30px}}.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs).sui-tabs-overflow .sui-tabs-navigation{position:absolute;width:100%;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;height:50px;-ms-flex-align:center;align-items:center;top:1px;pointer-events:none;opacity:1}.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs).sui-tabs-overflow .sui-tabs-navigation--left,.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs).sui-tabs-overflow .sui-tabs-navigation--right{background:hsla(0,0%,100%,.8);pointer-events:all;transition:all .2s}.sui-forminator-scgen .sui-wrap .sui-tabs:not(.sui-side-tabs).sui-tabs-overflow .sui-tabs-navigation--hidden{visibility:hidden;opacity:0}.sui-forminator-scgen .sui-wrap .sui-side-tabs{margin:0 0 20px}.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-menu,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-tabs]{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0;padding:0;list-style:none}.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-menu .sui-tab-item,.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-menu>*,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-tabs] .sui-tab-item,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-tabs]>*{cursor:pointer;-ms-flex:0 0 auto;flex:0 0 auto;margin:0 1px 0 0;padding:9px 20px;border:0}.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-menu .sui-tab-item,.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-menu .sui-tab-item:active,.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-menu .sui-tab-item:focus,.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-menu .sui-tab-item:hover,.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-menu .sui-tab-item:visited,.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-menu>*,.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-menu>:active,.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-menu>:focus,.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-menu>:hover,.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-menu>:visited,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-tabs] .sui-tab-item,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-tabs] .sui-tab-item:active,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-tabs] .sui-tab-item:focus,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-tabs] .sui-tab-item:hover,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-tabs] .sui-tab-item:visited,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-tabs]>*,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-tabs]>:active,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-tabs]>:focus,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-tabs]>:hover,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-tabs]>:visited{outline:none;background-color:#f8f8f8;color:#666;font-size:13px;line-height:22px;font-weight:500;letter-spacing:-.25px}.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-menu .sui-tab-item:first-child,.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-menu>:first-child,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-tabs] .sui-tab-item:first-child,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-tabs]>:first-child{border-radius:4px 0 0 4px}.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-menu .sui-tab-item:last-child,.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-menu>:last-child,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-tabs] .sui-tab-item:last-child,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-tabs]>:last-child{margin:0;border-radius:0 4px 4px 0}.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-menu .sui-tab-item.active,.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-menu>.active,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-tabs] .sui-tab-item.active,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-tabs]>.active{background-color:#e1f6ff;color:#17a8e3}.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-content>*,.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-content>.sui-tab-content,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-panes]>*,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-panes]>.sui-tab-content{display:none;margin:10px 0 0}.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-content>.sui-tab-boxed,.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-content>.sui-tab-content.sui-tab-boxed,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-panes]>.sui-tab-boxed,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-panes]>.sui-tab-content.sui-tab-boxed{padding:20px;border:1px solid #e6e6e6;border-radius:4px}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-content>.sui-tab-boxed,.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-content>.sui-tab-content.sui-tab-boxed,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-panes]>.sui-tab-boxed,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-panes]>.sui-tab-content.sui-tab-boxed{padding:30px}}.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-content>.active,.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-content>.sui-tab-content.active,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-panes]>.active,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-panes]>.sui-tab-content.active{display:block}.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-content.sui-tabs-content-lg>*,.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-content.sui-tabs-content-lg>.sui-tab-content,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-panes].sui-tabs-content-lg>*,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-panes].sui-tabs-content-lg>.sui-tab-content{margin-top:30px}.sui-forminator-scgen .sui-wrap .sui-side-tabs:last-child{margin:0}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-side-tabs:last-child{margin:0}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-side-tabs{margin:0 0 30px}}.sui-forminator-scgen .sui-wrap .sui-box-body>.sui-tabs-flushed>.sui-tabs-menu,.sui-forminator-scgen .sui-wrap .sui-box-body>.sui-tabs-flushed>[data-tabs]{padding:0 20px}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-box-body>.sui-tabs-flushed>.sui-tabs-menu,.sui-forminator-scgen .sui-wrap .sui-box-body>.sui-tabs-flushed>[data-tabs]{padding:0 30px}}.sui-forminator-scgen .sui-wrap .sui-box-body>.sui-tabs-flushed>.sui-tabs-content>*,.sui-forminator-scgen .sui-wrap .sui-box-body>.sui-tabs-flushed>.sui-tabs-content>.sui-tab-content,.sui-forminator-scgen .sui-wrap .sui-box-body>.sui-tabs-flushed>[data-panes]>*,.sui-forminator-scgen .sui-wrap .sui-box-body>.sui-tabs-flushed>[data-panes]>.sui-tab-content{padding:20px}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-box-body>.sui-tabs-flushed>.sui-tabs-content>*,.sui-forminator-scgen .sui-wrap .sui-box-body>.sui-tabs-flushed>.sui-tabs-content>.sui-tab-content,.sui-forminator-scgen .sui-wrap .sui-box-body>.sui-tabs-flushed>[data-panes]>*,.sui-forminator-scgen .sui-wrap .sui-box-body>.sui-tabs-flushed>[data-panes]>.sui-tab-content{padding:30px}}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-box-body>.sui-tabs-flushed{margin:-20px!important}}@media (min-width:783px){.sui-forminator-scgen .sui-wrap .sui-box-body>.sui-tabs-flushed{margin:-30px!important}}.sui-forminator-scgen .sui-wrap .sui-dropdown{position:relative;display:inline-block;margin:0 10px}.sui-forminator-scgen .sui-wrap .sui-dropdown ul{min-width:170px;display:none;position:absolute;z-index:10;top:100%;right:-10px;left:auto;margin:15px 0 0;padding:10px 0;border:1px solid #ddd;border-radius:4px;background-color:#fff;box-shadow:0 3px 7px 0 rgba(0,0,0,.07);transition:.3s ease}.sui-forminator-scgen .sui-wrap .sui-dropdown ul:after,.sui-forminator-scgen .sui-wrap .sui-dropdown ul:before{content:" ";width:0;position:absolute;right:15px;border-width:0 8px 10px;border-style:solid;border-top-color:#ddd}.sui-forminator-scgen .sui-wrap .sui-dropdown ul:before{z-index:10;top:-10px;border-color:#ddd transparent}.sui-forminator-scgen .sui-wrap .sui-dropdown ul:after{z-index:11;top:-8px;border-color:#fff transparent}.sui-forminator-scgen .sui-wrap .sui-dropdown ul,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li{list-style:none}.sui-forminator-scgen .sui-wrap .sui-dropdown ul li{display:block;margin:0;border:0}.sui-forminator-scgen .sui-wrap .sui-dropdown ul li>span,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li>span:active,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li>span:focus,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li>span:hover,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li a,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li a:active,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li a:focus,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li a:hover,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li button,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li button:active,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li button:focus,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li button:hover{margin:0;padding:0 8px;border:0;outline:none;box-shadow:none}.sui-forminator-scgen .sui-wrap .sui-dropdown ul li a,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li button{width:100%;cursor:pointer;display:block;font:500 13px/30px Roboto,Arial,sans-serif;text-align:left;transition:.3s ease}.sui-forminator-scgen .sui-wrap .sui-dropdown ul li a,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li a:focus,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li a:visited,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li button,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li button:focus,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li button:visited{background-color:transparent;color:#888}.sui-forminator-scgen .sui-wrap .sui-dropdown ul li a:active,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li a:hover,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li button:active,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li button:hover{background-color:#f2f2f2;color:#333}.sui-forminator-scgen .sui-wrap .sui-dropdown ul li a:active [class*=sui-icon-]:before,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li a:hover [class*=sui-icon-]:before,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li button:active [class*=sui-icon-]:before,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li button:hover [class*=sui-icon-]:before{color:#333}.sui-forminator-scgen .sui-wrap .sui-dropdown ul li a.sui-option-red,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li a.sui-option-red:focus,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li a.sui-option-red:visited,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li button.sui-option-red,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li button.sui-option-red:focus,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li button.sui-option-red:visited{background-color:transparent;color:#ff6d6d}.sui-forminator-scgen .sui-wrap .sui-dropdown ul li a.sui-option-red:active,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li a.sui-option-red:hover,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li button.sui-option-red:active,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li button.sui-option-red:hover{background-color:#ffe5e9}.sui-forminator-scgen .sui-wrap .sui-dropdown ul li a.sui-option-red [class*=sui-icon-]:before,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li button.sui-option-red [class*=sui-icon-]:before{color:inherit}.sui-forminator-scgen .sui-wrap .sui-dropdown ul li [class*=sui-icon-]{width:24px;margin-right:4px;font-size:12px;text-align:center}.sui-forminator-scgen .sui-wrap .sui-dropdown ul li [class*=sui-icon-]:before{display:block;color:#888;transition:.3s ease}.sui-forminator-scgen .sui-wrap .sui-dropdown ul li.active,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li.current{background-color:#f2f2f2;color:#333}.sui-forminator-scgen .sui-wrap .sui-dropdown ul li.active [class*=sui-icon-]:before,.sui-forminator-scgen .sui-wrap .sui-dropdown ul li.current [class*=sui-icon-]:before{color:#333}.sui-forminator-scgen .sui-wrap .sui-dropdown ul li.sui-dropdown-label{border-bottom:1px solid #e6e6e6;line-height:30px;cursor:default;color:#666}.sui-forminator-scgen .sui-wrap .sui-dropdown ul li form{display:block;margin:0;padding:0;border:0}.sui-forminator-scgen .sui-wrap .sui-dropdown:first-child{margin-left:0}.sui-forminator-scgen .sui-wrap .sui-dropdown:last-child{margin-right:0}.sui-forminator-scgen .sui-wrap .sui-dropdown.sui-dropdown-right ul{right:unset;left:-10px}.sui-forminator-scgen .sui-wrap .sui-dropdown.sui-dropdown-right ul:after,.sui-forminator-scgen .sui-wrap .sui-dropdown.sui-dropdown-right ul:before{right:unset;left:15px}.sui-forminator-scgen .sui-wrap .sui-dropdown.sui-dropdown-center ul,.sui-forminator-scgen .sui-wrap .sui-dropdown.sui-dropdown-center ul:after,.sui-forminator-scgen .sui-wrap .sui-dropdown.sui-dropdown-center ul:before{right:unset;left:50%;transform:translateX(-50%)}.sui-forminator-scgen .sui-wrap .sui-dropdown.wds-item-loading{font-size:18px}.sui-forminator-scgen .sui-wrap .sui-dropdown.wds-item-loading .sui-dropdown-anchor{visibility:hidden}.sui-forminator-scgen .sui-wrap .sui-dropdown.open .sui-dropdown-anchor,.sui-forminator-scgen .sui-wrap .sui-dropdown.open .sui-dropdown-anchor:active,.sui-forminator-scgen .sui-wrap .sui-dropdown.open .sui-dropdown-anchor:focus,.sui-forminator-scgen .sui-wrap .sui-dropdown.open .sui-dropdown-anchor:hover,.sui-forminator-scgen .sui-wrap .sui-dropdown.open .sui-dropdown-anchor:visited{background-color:#f2f2f2;color:#333}.sui-forminator-scgen .sui-wrap .sui-dropdown.open ul{display:block}.sui-forminator-scgen .sui-dialog{position:fixed;z-index:13;top:0;right:0;bottom:0;left:160px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;overflow:auto;background-color:rgba(51,51,51,.95)}.sui-forminator-scgen .sui-dialog,.sui-forminator-scgen .sui-dialog *{box-sizing:border-box}.sui-forminator-scgen .sui-dialog,.sui-forminator-scgen .sui-dialog:active,.sui-forminator-scgen .sui-dialog:focus,.sui-forminator-scgen .sui-dialog:hover{outline:none;box-shadow:none}.sui-forminator-scgen .sui-dialog .sui-dialog-overlay{position:absolute;z-index:13;top:0;right:0;bottom:0;left:0}@media (max-width:960px){.sui-forminator-scgen .sui-dialog .sui-dialog-overlay{left:36px}}@media (max-width:782px){.sui-forminator-scgen .sui-dialog .sui-dialog-overlay{left:0}}.sui-forminator-scgen .sui-dialog .sui-dialog-content{width:100%;max-width:660px;max-height:85%;position:relative;z-index:13;margin:0 auto;padding:0 30px}.sui-forminator-scgen .sui-dialog .sui-dialog-content>.sui-box{margin:30px 0;box-shadow:0 10px 40px rgba(0,0,0,.2)}.sui-forminator-scgen .sui-dialog .sui-dialog-content>.sui-box .sui-box-body>*{margin-bottom:30px}@media (max-width:782px){.sui-forminator-scgen .sui-dialog .sui-dialog-content>.sui-box .sui-box-body>*{margin-bottom:20px}}.sui-forminator-scgen .sui-dialog .sui-dialog-content>.sui-box .sui-box-body>:last-child{margin-bottom:0}@media (max-width:782px){.sui-forminator-scgen .sui-dialog .sui-dialog-content>.sui-box{margin:20px 0}}@media (max-width:782px){.sui-forminator-scgen .sui-dialog .sui-dialog-content{max-width:640px;padding:0 20px}}.sui-forminator-scgen .sui-dialog .sui-dialog-close{width:30px;height:30px;cursor:pointer;margin:0;padding:0;border:0;outline-style:none;background-image:none;background-color:transparent;transition:.3s ease}.sui-forminator-scgen .sui-dialog .sui-dialog-close:active:before,.sui-forminator-scgen .sui-dialog .sui-dialog-close:hover:before{color:#888}.sui-forminator-scgen .sui-dialog .sui-dialog-close:before{content:")";color:#aaa;font-size:16px;line-height:30px}.sui-forminator-scgen .sui-dialog .sui-dialog-back{width:30px;height:30px;cursor:pointer;margin:0;padding:0;border:0;outline-style:none;background-image:none;background-color:transparent;transition:.3s ease}.sui-forminator-scgen .sui-dialog .sui-dialog-back:active:before,.sui-forminator-scgen .sui-dialog .sui-dialog-back:hover:before{color:#888}.sui-forminator-scgen .sui-dialog .sui-dialog-back:before{content:"\D3";color:#aaa;font-size:16px;line-height:30px}.sui-forminator-scgen .sui-dialog.sui-dialog-alt .sui-dialog-content>.sui-box .sui-box-body.sui-block-content-center .sui-form-field,.sui-forminator-scgen .sui-dialog.sui-dialog-alt .sui-dialog-content>.sui-box .sui-box-body.sui-block-content-center .sui-notice,.sui-forminator-scgen .sui-dialog.sui-dialog-alt .sui-dialog-content>.sui-box .sui-box-footer.sui-block-content-center .sui-form-field,.sui-forminator-scgen .sui-dialog.sui-dialog-alt .sui-dialog-content>.sui-box .sui-box-footer.sui-block-content-center .sui-notice,.sui-forminator-scgen .sui-dialog.sui-dialog-alt .sui-dialog-content>.sui-box .sui-box-header.sui-block-content-center .sui-form-field,.sui-forminator-scgen .sui-dialog.sui-dialog-alt .sui-dialog-content>.sui-box .sui-box-header.sui-block-content-center .sui-notice{text-align:initial}.sui-forminator-scgen .sui-dialog.sui-dialog-alt .sui-dialog-content>.sui-box .sui-box-header{display:block;position:relative;padding-top:40px;padding-bottom:10px;border-bottom:0}.sui-forminator-scgen .sui-dialog.sui-dialog-alt .sui-dialog-content>.sui-box .sui-box-header .sui-dialog-close{position:absolute;top:20px;right:20px}.sui-forminator-scgen .sui-dialog.sui-dialog-alt .sui-dialog-content>.sui-box .sui-box-header .sui-dialog-back{position:absolute;top:20px;left:20px}.sui-forminator-scgen .sui-dialog.sui-dialog-alt .sui-dialog-content>.sui-box .sui-box-header .sui-box-title{font-size:22px;line-height:30px;font-family:Roboto,Arial,sans-serif}.sui-forminator-scgen .sui-dialog.sui-dialog-alt .sui-dialog-content>.sui-box .sui-box-header .sui-box-title+.sui-description{margin-top:20px}.sui-forminator-scgen .sui-dialog.sui-dialog-alt .sui-dialog-content>.sui-box .sui-box-header .sui-dialog-image{width:70px;height:70px;display:block;position:absolute;top:-30px;left:50%;margin-left:-35px;border:5px solid #fff;border-radius:4px;background-color:#fff}.sui-forminator-scgen .sui-dialog.sui-dialog-alt .sui-dialog-content>.sui-box .sui-box-header .sui-dialog-image img{max-width:100%;max-height:100%;display:block;margin:0 auto;border-radius:3px}@media (max-width:782px){.sui-forminator-scgen .sui-dialog.sui-dialog-alt .sui-dialog-content>.sui-box .sui-box-header .sui-dialog-image{display:none}}.sui-forminator-scgen .sui-dialog.sui-dialog-alt .sui-dialog-content>.sui-box .sui-box-header:last-child{padding-bottom:20px}@media (min-width:783px){.sui-forminator-scgen .sui-dialog.sui-dialog-alt .sui-dialog-content>.sui-box .sui-box-header:last-child{padding-bottom:30px}}@media (min-width:783px){.sui-forminator-scgen .sui-dialog.sui-dialog-alt .sui-dialog-content>.sui-box .sui-box-header{padding-top:60px}}.sui-forminator-scgen .sui-dialog.sui-dialog-alt .sui-dialog-content>.sui-box .sui-box-body.sui-box-body-slim{padding-top:10px}.sui-forminator-scgen .sui-dialog.sui-dialog-alt .sui-dialog-content>.sui-box .sui-box-body+.sui-box-footer{padding-top:0}.sui-forminator-scgen .sui-dialog.sui-dialog-alt .sui-dialog-content>.sui-box .sui-box-footer{-ms-flex-pack:justify;justify-content:space-between;border-top:0}.sui-forminator-scgen .sui-dialog.sui-dialog-alt .sui-dialog-content>.sui-box .sui-box-footer.sui-box-footer-center{-ms-flex-pack:center;justify-content:center}.sui-forminator-scgen .sui-dialog.sui-dialog-alt .sui-dialog-content>.sui-box .sui-box-footer.sui-box-footer-right{-ms-flex-pack:end;justify-content:flex-end}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content{pointer-events:none}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider{display:block;position:relative}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content{pointer-events:all;padding:0}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content>li{display:block;margin:0;border:0;list-style:none}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content>li{display:none}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content>li.sui-current{opacity:0;display:block;animation-duration:.7s;animation-fill-mode:both;transform-origin:center;transform-style:preserve-3d}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content>li.sui-current.sui-loaded{opacity:1}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content>li.sui-current.fadeInLeft{opacity:1;animation-name:fadeInLeft}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content>li.sui-current.fadeInRight{opacity:1;animation-name:fadeInRight}@media (max-width:782px){.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content>li{padding:20px 0}}@media (min-width:783px){.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content>li{padding:30px 0}}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-navigation button{cursor:pointer;pointer-events:all;position:absolute;top:50%;border-radius:50%;transform:translateY(-50%);font-size:16px;transition:all .3s ease}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-navigation button,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-navigation button:active,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-navigation button:focus,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-navigation button:hover{margin:0;padding:0;border:0;outline:none;box-shadow:none}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-navigation button:active,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-navigation button:hover{background-color:#fff;color:#666}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-navigation button:disabled{opacity:.3;pointer-events:none}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-navigation button [class*=sui-icon-]{display:block}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-navigation button [class*=sui-icon-]:before{display:block;color:inherit}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-navigation button.sui-prev{left:0}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-navigation button.sui-next{right:0}@media (max-width:782px){.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-navigation button{width:30px;height:30px;background-color:#fff;color:#666}}@media (min-width:783px){.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-navigation button{width:40px;height:40px;background-color:transparent;color:#fff}}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin:0 -5px;padding:20px 0;border:0}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps li{list-style:none}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps:after,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps:before,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps li:after,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps li:before{content:unset}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps li{display:block;-ms-flex:0 0 auto;flex:0 0 auto;margin:0;padding:0 5px}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps li>span,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps li a,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps li button{width:7px;height:7px;display:block;border-radius:14px}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps li>span,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps li>span:active,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps li>span:focus,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps li>span:hover,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps li>span:visited,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps li a,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps li a:active,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps li a:focus,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps li a:hover,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps li a:visited,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps li button,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps li button:active,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps li button:focus,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps li button:hover,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps li button:visited{margin:0;padding:0;border:0;outline:none;box-shadow:none}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps.sui-clickable li>span,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps.sui-clickable li a,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps.sui-clickable li button{background-color:#e6e6e6}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps.sui-clickable li a,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps.sui-clickable li button{cursor:pointer}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps.sui-clickable li.current>span,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps.sui-clickable li.current a,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps.sui-clickable li.current button{background-color:#666}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps.sui-clickable li.current a,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps.sui-clickable li.current button{pointer-events:none}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps:not(.sui-clickable) li>span,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps:not(.sui-clickable) li a,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps:not(.sui-clickable) li button{background-color:#666}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps:not(.sui-clickable) li a,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps:not(.sui-clickable) li button{pointer-events:none}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps:not(.sui-clickable) li.current~li>span,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps:not(.sui-clickable) li.current~li a,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-steps:not(.sui-clickable) li.current~li button{background-color:#e6e6e6}@media (max-width:782px){.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider{padding:0 15px}}@media (min-width:783px){.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider{padding:0 55px}}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content li>.sui-box .sui-box-banner{display:block}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content li>.sui-box .sui-box-banner img{width:auto;max-width:100%;height:auto;display:block;margin:0 auto}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content li>.sui-box .sui-box-banner:first-child{overflow:hidden;border-top-left-radius:4px;border-top-right-radius:4px}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content li>.sui-box .sui-box-banner:last-child{overflow:hidden;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content li>.sui-box .sui-box-banner+[class*=sui-box-]{padding-top:40px}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content li>.sui-box>[class*=sui-box-]:not(.sui-box-selectors)+.sui-box-selectors{margin-top:20px}@media (min-width:783px){.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content li>.sui-box>[class*=sui-box-]:not(.sui-box-selectors)+.sui-box-selectors{margin-top:30px}}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content li>.sui-box>[class*=sui-box-]:not(.sui-box-selectors)+[class*=sui-box-]:not(.sui-box-selectors){padding-top:20px}@media (min-width:783px){.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content li>.sui-box>[class*=sui-box-]:not(.sui-box-selectors)+[class*=sui-box-]:not(.sui-box-selectors){padding-top:30px}}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content li>.sui-box>[class*=sui-box-]:not(.sui-box-selectors).sui-lg{padding-right:20px;padding-left:20px}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content li>.sui-box>[class*=sui-box-]:not(.sui-box-selectors).sui-lg.sui-last,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content li>.sui-box>[class*=sui-box-]:not(.sui-box-selectors).sui-lg:last-child{padding-bottom:40px}@media (min-width:783px){.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content li>.sui-box>[class*=sui-box-]:not(.sui-box-selectors).sui-lg.sui-last,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content li>.sui-box>[class*=sui-box-]:not(.sui-box-selectors).sui-lg:last-child{padding-bottom:60px}}@media (min-width:783px){.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content li>.sui-box>[class*=sui-box-]:not(.sui-box-selectors).sui-lg{padding-right:60px;padding-left:60px}}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content li>.sui-box>[class*=sui-box-]:not(.sui-box-selectors):last-child{padding-bottom:20px}@media (min-width:783px){.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content li>.sui-box>[class*=sui-box-]:not(.sui-box-selectors):last-child{padding-bottom:30px}}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content li>.sui-box>[class*=sui-box-]:not(.sui-box-selectors):not(:last-child){padding-bottom:0}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content li>.sui-box>.sui-box-header{display:block;border-bottom-width:0}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content li>.sui-box>.sui-box-header .sui-box-title{font-size:22px;line-height:30px}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content li>.sui-box>.sui-box-header .sui-box-title+.sui-description{margin-top:10px}@media (min-width:783px){.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content li>.sui-box>.sui-box-header .sui-box-title+.sui-description{margin-top:15px}}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content li>.sui-box>.sui-box-header .sui-description{line-height:22px}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content li>.sui-box>.sui-box-header .sui-dialog-close{position:absolute;top:20px;right:20px}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content li>.sui-box>.sui-box-header .sui-dialog-back{position:absolute;top:20px;left:20px}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-slider .sui-slider-content li>.sui-box>.sui-box-footer{display:block;border-top-width:0}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-onboard-skip{font-size:13px;line-height:22px;letter-spacing:-.25px;text-align:center}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-onboard-skip a{opacity:.7}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-onboard-skip a,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-onboard-skip a:active,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-onboard-skip a:hover,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-onboard-skip a:visited{color:#fff}.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-onboard-skip a:active,.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content .sui-onboard-skip a:hover{opacity:1}@media (max-width:782px){.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content{max-width:640px;padding:0 10px}}@media (min-width:783px){.sui-forminator-scgen .sui-dialog.sui-dialog-onboard .sui-dialog-content{max-width:670px}}.sui-forminator-scgen .sui-dialog.sui-dialog-sm:not(.sui-dialog-alt) .sui-dialog-content>.sui-box .sui-box-header{border:none;text-align:center;display:block;position:relative;padding-top:40px;padding-bottom:10px}.sui-forminator-scgen .sui-dialog.sui-dialog-sm:not(.sui-dialog-alt) .sui-dialog-content>.sui-box .sui-box-header .sui-dialog-close{width:30px;height:30px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;position:absolute;top:15px;right:15px;margin:0;padding:0}.sui-forminator-scgen .sui-dialog.sui-dialog-sm:not(.sui-dialog-alt) .sui-dialog-content>.sui-box .sui-box-header .sui-dialog-close,.sui-forminator-scgen .sui-dialog.sui-dialog-sm:not(.sui-dialog-alt) .sui-dialog-content>.sui-box .sui-box-header .sui-dialog-close:before{color:#888}.sui-forminator-scgen .sui-dialog.sui-dialog-sm:not(.sui-dialog-alt) .sui-dialog-content>.sui-box .sui-box-header .sui-dialog-close:before{font-size:16px}.sui-forminator-scgen .sui-dialog.sui-dialog-sm:not(.sui-dialog-alt) .sui-dialog-content>.sui-box .sui-box-header .sui-dialog-close:focus,.sui-forminator-scgen .sui-dialog.sui-dialog-sm:not(.sui-dialog-alt) .sui-dialog-content>.sui-box .sui-box-header .sui-dialog-close:hover{outline:none}@media (max-width:782px){.sui-forminator-scgen .sui-dialog.sui-dialog-sm:not(.sui-dialog-alt) .sui-dialog-content>.sui-box .sui-box-header .sui-dialog-close{top:20px;right:10px}}.sui-forminator-scgen .sui-dialog.sui-dialog-sm:not(.sui-dialog-alt) .sui-dialog-content>.sui-box .sui-box-header .sui-dialog-image{width:70px;height:70px;display:block;position:absolute;top:-35px;left:50%;margin-left:-35px;border:5px solid #fff;border-radius:4px;background-color:#fff}.sui-forminator-scgen .sui-dialog.sui-dialog-sm:not(.sui-dialog-alt) .sui-dialog-content>.sui-box .sui-box-header .sui-dialog-image img{display:block;border-radius:3px}@media (max-width:782px){.sui-forminator-scgen .sui-dialog.sui-dialog-sm:not(.sui-dialog-alt) .sui-dialog-content>.sui-box .sui-box-header .sui-dialog-image{display:none}}.sui-forminator-scgen .sui-dialog.sui-dialog-sm:not(.sui-dialog-alt) .sui-dialog-content>.sui-box .sui-box-header .sui-box-title{margin:0;color:#333;font:700 22px/30px Roboto,Arial,sans-serif}.sui-forminator-scgen .sui-dialog.sui-dialog-sm:not(.sui-dialog-alt) .sui-dialog-content>.sui-box .sui-box-header p{margin:10px 0 0;color:#666;font-size:13px;line-height:22px}.sui-forminator-scgen .sui-dialog.sui-dialog-sm:not(.sui-dialog-alt) .sui-dialog-content>.sui-box .sui-box-header p:first-child{margin-top:0}.sui-forminator-scgen .sui-dialog.sui-dialog-sm:not(.sui-dialog-alt) .sui-dialog-content>.sui-box .sui-box-header.sui-dialog-with-image{margin-top:35px;padding-top:60px}@media (max-width:782px){.sui-forminator-scgen .sui-dialog.sui-dialog-sm:not(.sui-dialog-alt) .sui-dialog-content>.sui-box .sui-box-header.sui-dialog-with-image{margin-top:0}}.sui-forminator-scgen .sui-dialog.sui-dialog-sm:not(.sui-dialog-alt) .sui-dialog-content>.sui-box .sui-box-body{padding-top:10px;padding-bottom:15px;text-align:center}.sui-forminator-scgen .sui-dialog.sui-dialog-sm:not(.sui-dialog-alt) .sui-dialog-content>.sui-box .sui-box-body p{font-size:13px;line-height:20px}.sui-forminator-scgen .sui-dialog.sui-dialog-sm:not(.sui-dialog-alt) .sui-dialog-content>.sui-box .sui-box-body label{text-align:left}.sui-forminator-scgen .sui-dialog.sui-dialog-sm:not(.sui-dialog-alt) .sui-dialog-content>.sui-box .sui-box-body .sui-label{line-height:22px}.sui-forminator-scgen .sui-dialog.sui-dialog-sm:not(.sui-dialog-alt) .sui-dialog-content>.sui-box .sui-box-body .sui-form-field{margin-bottom:20px}.sui-forminator-scgen .sui-dialog.sui-dialog-sm:not(.sui-dialog-alt) .sui-dialog-content>.sui-box .sui-box-body .sui-form-field:last-child{margin-bottom:0}.sui-forminator-scgen .sui-dialog.sui-dialog-sm:not(.sui-dialog-alt) .sui-dialog-content>.sui-box .sui-box-body:last-child{padding-bottom:40px}@media (max-width:782px){.sui-forminator-scgen .sui-dialog.sui-dialog-sm:not(.sui-dialog-alt) .sui-dialog-content>.sui-box .sui-box-body{padding-bottom:10px}}.sui-forminator-scgen .sui-dialog.sui-dialog-sm:not(.sui-dialog-alt) .sui-dialog-content>.sui-box .sui-box-footer{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;padding-top:15px;padding-bottom:40px;border:0}.sui-forminator-scgen .sui-dialog.sui-dialog-sm:not(.sui-dialog-alt) .sui-dialog-content>.sui-box .sui-box-footer.sui-align-unset{-ms-flex-pack:unset;justify-content:unset}.sui-forminator-scgen .sui-dialog.sui-dialog-sm:not(.sui-dialog-alt) .sui-dialog-content>.sui-box .sui-box-footer.sui-space-between{-ms-flex-pack:justify;justify-content:space-between}@media (max-width:782px){.sui-forminator-scgen .sui-dialog.sui-dialog-sm:not(.sui-dialog-alt) .sui-dialog-content>.sui-box .sui-box-footer{padding-top:10px}}.sui-forminator-scgen .sui-dialog.sui-dialog-reduced .sui-dialog-content{max-width:560px}@media (max-width:500px){.sui-forminator-scgen .sui-dialog.sui-dialog-reduced .sui-dialog-content{max-width:540px}}.sui-forminator-scgen .sui-dialog.sui-dialog-sm .sui-dialog-content{max-width:460px}@media (max-width:400px){.sui-forminator-scgen .sui-dialog.sui-dialog-sm .sui-dialog-content{max-width:440px}}.sui-forminator-scgen .sui-dialog.sui-dialog-lg .sui-dialog-content{max-width:1040px}@media (max-width:1200px){.sui-forminator-scgen .sui-dialog.sui-dialog-lg .sui-dialog-content{max-width:1020px}}.sui-forminator-scgen .sui-dialog[aria-hidden=true]{display:none}@media (max-width:960px){.sui-forminator-scgen .sui-dialog{left:36px}}@media (max-width:782px){.sui-forminator-scgen .sui-dialog{left:0}}.sui-forminator-scgen.wp-admin.folded .sui-dialog{left:36px}@media (max-width:782px){.sui-forminator-scgen.wp-admin.folded .sui-dialog{left:0}}.sui-forminator-scgen.wp-admin.folded .sui-dialog-overlay{left:36px}@media (max-width:782px){.sui-forminator-scgen.wp-admin.folded .sui-dialog-overlay{left:0}}html.sui-has-overlay{overflow:hidden}.sui-forminator-scgen select.sui-select+.select2-container{width:100%!important;display:block}.sui-forminator-scgen select.sui-select+.select2-container .selection{display:block}.sui-forminator-scgen select.sui-select+.select2-container .selection:focus,.sui-forminator-scgen select.sui-select+.select2-container .selection :focus{outline:none}.sui-forminator-scgen select.sui-select+.select2-container .select2-selection--multiple,.sui-forminator-scgen select.sui-select+.select2-container .select2-selection--single{border-radius:4px;border:1px solid #ddd;background-color:#fafafa;transition:.3s ease}.sui-forminator-scgen select.sui-select+.select2-container .select2-selection--multiple:hover,.sui-forminator-scgen select.sui-select+.select2-container .select2-selection--single:hover{background-color:#fff}.sui-forminator-scgen select.sui-select+.select2-container .select2-selection--single{height:auto;display:block;position:relative}.sui-forminator-scgen select.sui-select+.select2-container .select2-selection--single .select2-selection__rendered{padding:7px 28px 6px 15px;color:#333;font:500 15px/25px Roboto,Arial,sans-serif;transition:.3s ease}.sui-forminator-scgen select.sui-select+.select2-container .select2-selection--single .select2-selection__arrow{width:20px;height:20px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;position:absolute;top:9px;right:9px}.sui-forminator-scgen select.sui-select+.select2-container .select2-selection--single .select2-selection__arrow:before{content:"\131";font-size:12px;transition:transform .2s linear}.sui-forminator-scgen select.sui-select+.select2-container .select2-selection--single .select2-selection__arrow b{display:none}.sui-forminator-scgen select.sui-select+.select2-container .select2-selection--multiple{padding:7px 12px}.sui-forminator-scgen select.sui-select+.select2-container .select2-selection--multiple .select2-selection__rendered{display:block;margin:-5px;padding:0}.sui-forminator-scgen select.sui-select+.select2-container .select2-selection--multiple .select2-selection__rendered .select2-selection__clear{display:none}.sui-forminator-scgen select.sui-select+.select2-container .select2-selection--multiple .select2-selection__rendered li{display:-ms-inline-flexbox;display:inline-flex;margin-right:5px;margin-bottom:5px;font:500 15px/24px Roboto,Arial,sans-serif}.sui-forminator-scgen select.sui-select+.select2-container .select2-selection--multiple .select2-selection__rendered li:after,.sui-forminator-scgen select.sui-select+.select2-container .select2-selection--multiple .select2-selection__rendered li:before{content:none}.sui-forminator-scgen select.sui-select+.select2-container .select2-selection--multiple .select2-selection__rendered .select2-selection__choice{padding-left:10px;padding-right:0;border:none;border-radius:4px;background:#666;color:#fff;font-size:12px}.sui-forminator-scgen select.sui-select+.select2-container .select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__remove{margin-left:10px;margin-right:0;padding:0 10px;color:#fff;-ms-flex-order:2;order:2;background-color:#5e5e5e;font-weight:500;font-size:16px;line-height:24px;transition:all .3s ease;border-radius:0 4px 4px 0}.sui-forminator-scgen select.sui-select+.select2-container .select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__remove:hover{color:#fff;background-color:#565656}.sui-forminator-scgen select.sui-select+.select2-container .select2-selection--multiple .select2-selection__rendered .select2-search--inline{margin:0 0 0 8px}.sui-forminator-scgen select.sui-select+.select2-container .select2-selection--multiple .select2-selection__rendered .select2-search--inline .select2-search__field{width:100%!important;height:34px;display:block;margin:0;padding:0;color:#333;font:500 15px/24px Roboto,Arial,sans-serif;transition:.2s ease}.sui-forminator-scgen select.sui-select+.select2-container .select2-selection--multiple .select2-selection__rendered .select2-search--inline .select2-search__field::-ms-input-placeholder{color:#aaa}.sui-forminator-scgen select.sui-select+.select2-container .select2-selection--multiple .select2-selection__rendered .select2-search--inline .select2-search__field::placeholder{color:#aaa}.sui-forminator-scgen select.sui-select+.select2-container.select2-container--open .select2-selection--multiple,.sui-forminator-scgen select.sui-select+.select2-container.select2-container--open .select2-selection--single{background-color:#fff}.sui-forminator-scgen select.sui-select+.select2-container.select2-container--open .select2-selection--single .select2-selection__arrow:before{transform:rotate(180deg)}.sui-forminator-scgen select.sui-select.sui-select-inline+.select2-container{width:auto!important;max-width:100%;min-width:240px;display:-ms-inline-flexbox;display:inline-flex;margin-right:10px}.sui-forminator-scgen select.sui-select.sui-select-inline+.select2-container .selection{min-width:100%;-ms-flex:0 0 100%;flex:0 0 100%}.sui-forminator-scgen select.sui-select.sui-select-inline+.select2-container:last-child{margin-right:0}.sui-forminator-scgen select.sui-select.sui-select-sm+.select2-container .select2-selection--single .select2-selection__rendered{padding-top:6px;padding-left:11px;font-size:13px;line-height:16px}.sui-forminator-scgen select.sui-select.sui-select-sm+.select2-container .select2-selection--single .select2-selection__arrow{top:4px;right:4px}.sui-forminator-scgen select.sui-select.sui-select-lg+.select2-container .select2-selection--multiple{min-height:118px}.sui-forminator-scgen .sui-select-dropdown,.sui-forminator-scgen .sui-variables-dropdown{margin:0;padding:15px 0;border:1px solid #ddd;border-radius:4px;background:#fff}.sui-forminator-scgen .sui-select-dropdown *,.sui-forminator-scgen .sui-variables-dropdown *{box-sizing:border-box;font-variant-ligatures:none;-webkit-font-variant-ligatures:none;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-smoothing:antialiased;-webkit-font-smoothing:antialiased;text-shadow:rgba(0,0,0,.01) 0 0 1px}.sui-forminator-scgen .sui-select-dropdown .select2-search--dropdown,.sui-forminator-scgen .sui-variables-dropdown .select2-search--dropdown{position:relative;margin:0 0 10px;padding:0 14px}.sui-forminator-scgen .sui-select-dropdown .select2-search--dropdown:after,.sui-forminator-scgen .sui-variables-dropdown .select2-search--dropdown:after{content:"\BA";width:20px;height:20px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;position:absolute;top:50%;right:29px;transform:translateY(-50%);font-size:16px}.sui-forminator-scgen .sui-select-dropdown .select2-search--dropdown .select2-search__field,.sui-forminator-scgen .sui-variables-dropdown .select2-search--dropdown .select2-search__field{width:100%;display:block;margin:0;border:1px solid #ddd;padding:9px 40px 9px 14px;border-radius:4px;background-color:#fafafa;color:#333;font:500 15px/20px Roboto,Arial,sans-serif;letter-spacing:-.25px;transition:.3s ease}.sui-forminator-scgen .sui-select-dropdown .select2-search--dropdown .select2-search__field,.sui-forminator-scgen .sui-select-dropdown .select2-search--dropdown .select2-search__field:focus,.sui-forminator-scgen .sui-select-dropdown .select2-search--dropdown .select2-search__field:hover,.sui-forminator-scgen .sui-variables-dropdown .select2-search--dropdown .select2-search__field,.sui-forminator-scgen .sui-variables-dropdown .select2-search--dropdown .select2-search__field:focus,.sui-forminator-scgen .sui-variables-dropdown .select2-search--dropdown .select2-search__field:hover{outline:none;box-shadow:none}.sui-forminator-scgen .sui-select-dropdown .select2-search--dropdown .select2-search__field:focus,.sui-forminator-scgen .sui-select-dropdown .select2-search--dropdown .select2-search__field:hover,.sui-forminator-scgen .sui-variables-dropdown .select2-search--dropdown .select2-search__field:focus,.sui-forminator-scgen .sui-variables-dropdown .select2-search--dropdown .select2-search__field:hover{background-color:#fff}.sui-forminator-scgen .sui-select-dropdown .select2-search--dropdown .select2-search__field::-ms-input-placeholder,.sui-forminator-scgen .sui-variables-dropdown .select2-search--dropdown .select2-search__field::-ms-input-placeholder{color:#aaa}.sui-forminator-scgen .sui-select-dropdown .select2-search--dropdown .select2-search__field::placeholder,.sui-forminator-scgen .sui-variables-dropdown .select2-search--dropdown .select2-search__field::placeholder{color:#aaa}.sui-forminator-scgen .sui-select-dropdown .select2-results,.sui-forminator-scgen .sui-variables-dropdown .select2-results{margin:0;padding:0}.sui-forminator-scgen .sui-select-dropdown .select2-results>.select2-results__options,.sui-forminator-scgen .sui-variables-dropdown .select2-results>.select2-results__options{background-color:transparent}.sui-forminator-scgen .sui-select-dropdown .select2-results>.select2-results__options,.sui-forminator-scgen .sui-select-dropdown .select2-results>.select2-results__options li,.sui-forminator-scgen .sui-variables-dropdown .select2-results>.select2-results__options,.sui-forminator-scgen .sui-variables-dropdown .select2-results>.select2-results__options li{margin:0;padding:0;border:0;list-style:none}.sui-forminator-scgen .sui-select-dropdown .select2-results>.select2-results__options .select2-results__option,.sui-forminator-scgen .sui-variables-dropdown .select2-results>.select2-results__options .select2-results__option{background-color:transparent;padding:5px 14px;font:500 15px/25px Roboto,Arial,sans-serif;color:#888;transition:.3s ease}.sui-forminator-scgen .sui-select-dropdown .select2-results>.select2-results__options .select2-results__option[aria-selected=true],.sui-forminator-scgen .sui-variables-dropdown .select2-results>.select2-results__options .select2-results__option[aria-selected=true]{color:#fff;background-color:#888}.sui-forminator-scgen .sui-select-dropdown .select2-results>.select2-results__options .select2-results__option[aria-disabled=true],.sui-forminator-scgen .sui-variables-dropdown .select2-results>.select2-results__options .select2-results__option[aria-disabled=true]{opacity:.5;cursor:not-allowed;pointer-events:none}.sui-forminator-scgen .sui-select-dropdown .select2-results>.select2-results__options .select2-results__option--highlighted:not([aria-selected=true]),.sui-forminator-scgen .sui-variables-dropdown .select2-results>.select2-results__options .select2-results__option--highlighted:not([aria-selected=true]){background-color:rgba(51,51,51,.05);color:#666}.sui-forminator-scgen .sui-select-dropdown .select2-results>.select2-results__options .select2-results__option .select2-results__options--nested,.sui-forminator-scgen .sui-variables-dropdown .select2-results>.select2-results__options .select2-results__option .select2-results__options--nested{margin:0 -14px}.sui-forminator-scgen .sui-select-dropdown .select2-results>.select2-results__options .select2-results__option .select2-results__options--nested li,.sui-forminator-scgen .sui-variables-dropdown .select2-results>.select2-results__options .select2-results__option .select2-results__options--nested li{padding-left:29px}.sui-forminator-scgen .sui-select-dropdown .select2-results .select2-results__message,.sui-forminator-scgen .sui-variables-dropdown .select2-results .select2-results__message{color:#888;font:700 12px/22px Roboto,Arial,sans-serif;letter-spacing:-.25px}.sui-forminator-scgen .sui-select-dropdown .select2-results .select2-results__group,.sui-forminator-scgen .sui-variables-dropdown .select2-results .select2-results__group{cursor:default;pointer-events:none;padding-left:0;color:#aaa;font-size:12px;line-height:12px;font-weight:500}.sui-forminator-scgen .sui-select-dropdown.select2-dropdown--above{margin-top:1px}.sui-forminator-scgen .sui-select-dropdown.select2-dropdown--below{margin-top:-1px}.sui-forminator-scgen .sui-variables-dropdown{width:320px!important;position:absolute;top:0;right:0;left:auto;margin-right:-40px;margin-top:-1px;border-color:#ddd;border-top-right-radius:0;border-top-left-radius:0}.sui-forminator-scgen .sui-wrap .sui-hidden{display:none}.sui-forminator-scgen .sui-wrap .sui-hidden-important{display:none!important}.sui-forminator-scgen .sui-wrap .sui-block-content-center{text-align:center}.sui-forminator-scgen .sui-wrap .sui-image{display:block;height:auto;max-width:100%}.sui-forminator-scgen .sui-wrap .sui-image-center{margin-right:auto;margin-left:auto}.sui-forminator-scgen .sui-wrap .sui-actions-left{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;margin-left:10px;margin-right:auto}.sui-forminator-scgen .sui-wrap .sui-actions-right{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;margin-left:auto;margin-right:0}.sui-forminator-scgen .sui-wrap .sui-space-between{-ms-flex-pack:justify;justify-content:space-between}.sui-forminator-scgen .sui-wrap .sui-align-start{-ms-flex-pack:start;justify-content:flex-start}.sui-forminator-scgen .sui-wrap .sui-align-end{-ms-flex-pack:end;justify-content:flex-end}.sui-forminator-scgen .sui-wrap .sui-success{color:#1abc9c}.sui-forminator-scgen .sui-wrap .sui-warning{color:#fecf2f}.sui-forminator-scgen .sui-wrap .sui-error{color:#ff6d6d}.sui-forminator-scgen .sui-wrap .sui-info{color:#17a8e3}.sui-forminator-scgen .sui-wrap .sui-no-margin{margin:0!important}.sui-forminator-scgen .sui-wrap .sui-no-margin-top{margin-top:0!important}.sui-forminator-scgen .sui-wrap .sui-no-margin-bottom{margin-bottom:0!important}.sui-forminator-scgen .sui-wrap .sui-no-margin-left{margin-left:0!important}.sui-forminator-scgen .sui-wrap .sui-no-margin-right{margin-right:0!important}.sui-forminator-scgen .sui-wrap .sui-no-padding{padding:0!important}.sui-forminator-scgen .sui-wrap .sui-no-padding-top{padding-top:0!important}.sui-forminator-scgen .sui-wrap .sui-no-padding-bottom{padding-bottom:0!important}.sui-forminator-scgen .sui-wrap .sui-no-padding-left{padding-left:0!important}.sui-forminator-scgen .sui-wrap .sui-no-padding-right{padding-right:0!important}.sui-forminator-scgen .sui-wrap .sui-margin{margin:30px!important}.sui-forminator-scgen .sui-wrap .sui-margin-top{margin-top:30px!important}.sui-forminator-scgen .sui-wrap .sui-margin-bottom{margin-bottom:30px!important}.sui-forminator-scgen .sui-wrap .sui-margin-left{margin-left:30px!important}.sui-forminator-scgen .sui-wrap .sui-margin-right{margin-right:30px!important}.sui-forminator-scgen .sui-wrap .sui-padding{padding:30px!important}.sui-forminator-scgen .sui-wrap .sui-padding-top{padding-top:30px!important}.sui-forminator-scgen .sui-wrap .sui-padding-bottom{padding-bottom:30px!important}.sui-forminator-scgen .sui-wrap .sui-padding-left{padding-left:30px!important}.sui-forminator-scgen .sui-wrap .sui-padding-right{padding-right:30px!important}@media (max-width:479px){.sui-hidden-xs{display:none!important}}@media (min-width:480px) and (max-width:782px){.sui-hidden-sm{display:none!important}}@media (min-width:783px) and (max-width:1199px){.sui-hidden-md{display:none!important}}@media (min-width:1200px){.sui-hidden-lg{display:none!important}}.sui-forminator-scgen .sui-dialog#forminator-popup{z-index:9991}@media (min-width:783px){.sui-forminator-scgen .sui-dialog#forminator-popup .sui-box .sui-box-body .sui-tabs div[data-tabs]{-ms-flex-pack:center;justify-content:center}}.sui-forminator-scgen .sui-dialog#forminator-popup .sui-box .sui-box-body .sui-form-field{margin:0}.sui-forminator-scgen .sui-dialog#forminator-popup .sui-box .sui-box-body .sui-form-field.sui-form-field-error select.sui-select+.select2-container .select2-selection--single{border-bottom-width:2px;border-bottom-color:#ff6d6d}.sui-forminator-scgen .sui-dialog#forminator-popup .sui-box .sui-box-body .fui-simulate-footer{display:block;text-align:center}@media (max-width:782px){.sui-forminator-scgen .sui-dialog#forminator-popup .sui-box .sui-box-body .fui-simulate-footer{margin:0 -20px;padding-top:20px}}@media (min-width:783px){.sui-forminator-scgen .sui-dialog#forminator-popup .sui-box .sui-box-body .fui-simulate-footer{margin:0 -30px;padding-top:30px}}.sui-forminator-scgen>.select2-container{z-index:999991}.sui-forminator-scgen #forminator-generate-shortcode .forminator-scgen-icon:before{content:"P";color:inherit}.sui-forminator-scgen[class*=sui-2-] #forminator-generate-shortcode{width:48px;height:30px;padding:7px 5px;border:0;border-radius:4px;transition:all .3s ease}.sui-forminator-scgen[class*=sui-2-] #forminator-generate-shortcode .forminator-scgen-icon{display:block;text-align:center}.sui-forminator-scgen[class*=sui-2-] #forminator-generate-shortcode .forminator-scgen-icon:before{display:block;font-size:16px;line-height:16px}.sui-forminator-scgen[class*=sui-2-] #forminator-generate-shortcode,.sui-forminator-scgen[class*=sui-2-] #forminator-generate-shortcode:active,.sui-forminator-scgen[class*=sui-2-] #forminator-generate-shortcode:focus,.sui-forminator-scgen[class*=sui-2-] #forminator-generate-shortcode:hover{border:0;outline:none;box-shadow:none;text-decoration:none}.sui-forminator-scgen[class*=sui-2-] #forminator-generate-shortcode,.sui-forminator-scgen[class*=sui-2-] #forminator-generate-shortcode:focus{background-color:#888;color:#fff}.sui-forminator-scgen[class*=sui-2-] #forminator-generate-shortcode:active,.sui-forminator-scgen[class*=sui-2-] #forminator-generate-shortcode:hover{background-color:#17a8e3;color:#fff}.sui-forminator-scgen:not([class*=sui-2-]) #forminator-generate-shortcode .forminator-scgen-icon{width:18px;height:18px;opacity:.7;display:inline-block;vertical-align:middle;margin:0 2px;text-align:center}.sui-forminator-scgen:not([class*=sui-2-]) #forminator-generate-shortcode .forminator-scgen-icon:before{content:"P";display:block;color:inherit;font-size:16px}
1
+ @import url(https://fonts.googleapis.com/css?family=Roboto:400,500,700);@import url(https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css);.sui-forminator-scgen .sui-wrap .sui-insert-variables .sui-variables+.select2 .select2-selection--single .select2-selection__rendered,.sui-forminator-scgen .sui-wrap .sui-multi-checkbox label input,.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-menu .sui-tab-item input,.sui-forminator-scgen .sui-wrap .sui-side-tabs>.sui-tabs-menu>* input,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-tabs] .sui-tab-item input,.sui-forminator-scgen .sui-wrap .sui-side-tabs>[data-tabs]>* input,.sui-forminator-scgen[class*=sui-2-] #forminator-generate-shortcode span,.sui-screen-reader-text{border:0;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute!important;width:1px;word-wrap:normal!important}.sui-forminator-scgen .sui-wrap .sui-fade-in{animation:fadeIn .3s ease-in forwards}.sui-forminator-scgen .sui-wrap .sui-fade-out{animation:fadeOut .3s ease-in forwards}.sui-forminator-scgen .sui-wrap .sui-bounce-in{animation:bounceInJiggle .8s ease-in forwards}.sui-forminator-scgen .sui-wrap .sui-bounce-out{animation:bounceOutJiggle .6s ease-out forwards}.sui-forminator-scgen .sui-wrap .sui-content-fade-in{animation:fadeScaleIn .5s ease-in forwards}.sui-forminator-scgen .sui-wrap .sui-content-fade-out{animation:fadeScaleOut .9s ease-in forwards}@keyframes bounceInDown{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes bounceInJiggle{0%{transform:translateY(-200%) scale(1.5);opacity:0}30%{opacity:1}58%{transform:translateY(0) rotate(1deg) scale(1);opacity:1}72%{transform:translateY(-30px) rotate(-1deg)}80%{transform:translateY(0) rotate(.5deg)}to{transform:translateY(0) rotate(0deg)}}@keyframes bounceOutJiggle{0%{transform:translateY(0)}10%{transform:translateY(-10px) rotate(-.5deg)}30%{transform:translateY(20px) rotate(8deg)}70%{opacity:1}90%{transform:translateY(300%) translateX(40px) rotate(35deg);opacity:0}to{display:none}}@keyframes bounceOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@keyframes fadeIn{0%{opacity:0}25%{opacity:1}}@keyframes fadeScaleIn{0%{opacity:0}25%{opacity:0;transform:translate3d(0,10px,0) scale(.9)}to{transform:translateZ(0) scale(1)}}@keyframes fadeOut{0%{opacity:1}75%{opacity:1}to{opacity:0}}@keyframes fadeScaleOut{0%{opacity:1;transform:translateZ(0) scale(1)}25%{opacity:0;transform:translate3d(0,10px,0) scale(.9)}to{opacity:0}}@keyframes fadeInLeft{0%{opacity:0;transform:translate3d(-50px,0,0)}to{opacity:1;transform:none}}@keyframes fadeInRight{0%{opacity:0;transform:translate3d(50px,0,0)}to{opacity:1;transform:none}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.sui-forminator-scgen .sui-wrap{font-family:Roboto,Arial,sans-serif;font-weight:400;font-size:15px;line-height:30px;color:#666;letter-spacing:-.25px;margin:30px 30px 0 10px}.sui-forminator-scgen .sui-wrap *{font-variant-ligatures:none;-webkit-font-variant-ligatures:none;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-smoothing:antialiased;-webkit-font-smoothing:antialiased;text-shadow:rgba(0,0,0,.01) 0 0 1px}@media (max-width:782px){.sui-forminator-scgen .sui-wrap{margin:20px 10px 0 0}}.sui-forminator-scgen .sui-wrap h1,.sui-forminator-scgen .sui-wrap h2,.sui-forminator-scgen .sui-wrap h3,.sui-forminator-scgen .sui-wrap h4,.sui-forminator-scgen .sui-wrap h5,.sui-forminator-scgen .sui-wrap h6{display:block;margin:.5em auto;padding:0;line-height:30px;color:#333;font-weight:700;font-family:Roboto,Arial,sans-serif}.sui-forminator-scgen .sui-wrap h1{font-size:32px;line-height:40px;color:#333;margin:0}.sui-forminator-scgen .sui-wrap h2{font-size:22px;line-height:35px}.sui-forminator-scgen .sui-wrap h3{font-size:18px;line-height:40px}.sui-forminator-scgen .sui-wrap h4,.sui-forminator-scgen .sui-wrap h5,.sui-forminator-scgen .sui-wrap h6{font-size:15px}.sui-forminator-scgen .sui-wrap p{font-family:Roboto,Arial,sans-serif;font-weight:400;font-size:15px;line-height:30px;color:#666;letter-spacing:-.25px;text-rendering:optimizeLegibility}.sui-forminator-scgen .sui-wrap p.sui-p-small{font-size:13px;line-height:22px;color:#888;margin:5px 0}.sui-forminator-scgen .sui-wrap p:first-child{margin-top:0}.sui-forminator-scgen .sui-wrap p:last-of-type:not(:last-child){margin-bottom:30px}@media (max-width:782px){.sui-forminator-scgen .sui-wrap p:last-of-type:not(:last-child){margin-bottom:20px}}.sui-forminator-scgen .sui-wrap p:last-child{margin-bottom:0}.sui-forminator-scgen .sui-wrap small{display:inline-block;font-size:13px;line-height:22px;color:#888;margin-bottom:5px}.sui-forminator-scgen .sui-wrap a{text-decoration:none;color:#17a8e3;font-weight:500;outline-color:transparent;outline-style:none;box-shadow:none}.sui-forminator-scgen .sui-wrap a:active:not(.sui-button),.sui-forminator-scgen .sui-wrap a:focus:not(.sui-button),.sui-forminator-scgen .sui-wrap a:hover:not(.sui-button){color:#1286b5}.sui-forminator-scgen .sui-wrap a.disabled{pointer-events:none}.sui-forminator-scgen .sui-wrap a.disabled:active,.sui-forminator-scgen .sui-wrap a.disabled:focus,.sui-forminator-scgen .sui-wrap a.disabled:hover{color:#888;cursor:default}.sui-forminator-scgen .sui-wrap code,.sui-forminator-scgen .sui-wrap pre{font-weight:500;font-size:13px;line-height:18px;color:#333;background-color:#f8f8f8;border:1px solid #e6e6e6;border-radius:4px;margin:0;padding:10px 15px;white-space:pre;overflow:auto;max-width:100%;vertical-align:middle;-moz-tab-size:4;-o-tab-size:4;tab-size:4}.sui-forminator-scgen .sui-wrap code{display:inline-block;padding:2px 5px}.sui-forminator-scgen .sui-wrap b,.sui-forminator-scgen .sui-wrap strong{font-weight:500}.sui-forminator-scgen .sui-wrap dfn{font-style:normal;font-weight:400;border-bottom:1px dotted #888}.sui-forminator-scgen .sui-wrap hr{border:none;display:block;height:1px;background:#e6e6e6;margin:30px 0}.sui-forminator-scgen #forminator-generate-shortcode .forminator-scgen-icon:before,.sui-forminator-scgen .sui-dialog .sui-dialog-back:before,.sui-forminator-scgen .sui-dialog .sui-dialog-close:before,.sui-forminator-scgen .sui-select-dropdown .select2-search--dropdown:after,.sui-forminator-scgen .sui-variables-dropdown .select2-search--dropdown:after,.sui-forminator-scgen .sui-wrap .sui-box-body .sui-upsell-row .sui-upsell-notice p:first-of-type:before,.sui-forminator-scgen .sui-wrap .sui-insert-variables .select-container .select-list-container .list-value:before,.sui-forminator-scgen .sui-wrap .sui-insert-variables .sui-variables+.select2 .select2-selection--single .select2-selection__arrow:before,.sui-forminator-scgen .sui-wrap [class*=sui-icon-]:after,.sui-forminator-scgen .sui-wrap [class*=sui-icon-]:before,.sui-forminator-scgen:not([class*=sui-2-]) #forminator-generate-shortcode .forminator-scgen-icon:before,.sui-forminator-scgen select.sui-select+.select2-container .select2-selection--single .select2-selection__arrow:before{font-family:wpmudev-plugin-icons!important;speak:none;font-size:1em;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;text-rendering:auto;display:inline-block;color:#888;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@font-face{font-family:wpmudev-plugin-icons;src:url(../fonts/wpmudev-plugin-icons.eot);src:url(../fonts/wpmudev-plugin-icons.eot) format("embedded-opentype"),url(../fonts/wpmudev-plugin-icons.ttf) format("truetype"),url(../fonts/wpmudev-plugin-icons.woff) format("woff"),url(../fonts/wpmudev-plugin-icons.woff2) format("woff2"),url(../fonts/wpmudev-plugin-icons.svg) format("svg");font-weight:400;font-style:normal}.sui-forminator-scgen .sui-wrap .sui-loading:before{animation:spin 1.3s linear infinite}.sui-forminator-scgen .sui-wrap [class*=sui-icon-]{display:inline-block}.sui-forminator-scgen .sui-wrap [class*=sui-icon-].sui-xl:before{font-size:30px}.sui-forminator-scgen .sui-wrap [class*=sui-icon-].sui-lg:before{font-size:20px}.sui-forminator-scgen .sui-wrap [class*=sui-icon-].sui-md:before{font-size:16px}.sui-forminator-scgen .sui-wrap [class*=sui-icon-].sui-sm:before{font-size:12px}.sui-forminator-scgen .sui-wrap [class*=sui-icon-].sui-error:before,.sui-forminator-scgen .sui-wrap [class*=sui-icon-].sui-info:before,.sui-forminator-scgen .sui-wrap [class*=sui-icon-].sui-success:before,.sui-forminator-scgen .sui-wrap [class*=sui-icon-].sui-warning:before{color:inherit}.sui-forminator-scgen .sui-wrap [class*=sui-icon-].sui-fw{width:1.8em;text-align:center;min-height:1em}.sui-forminator-scgen .sui-wrap .sui-icon-check:before{content:"("}.sui-forminator-scgen .sui-wrap .sui-icon-close:before{content:")"}.sui-forminator-scgen .sui-wrap .sui-icon-check-tick:before{content:"_"}.sui-forminator-scgen .sui-wrap .sui-icon-cross-close:before{content:"+"}.sui-forminator-scgen .sui-wrap .sui-icon-plus-circle:before{content:"@"}.sui-forminator-scgen .sui-wrap .sui-icon-warning-alert:before{content:"!"}.sui-forminator-scgen .sui-wrap .sui-icon-info:before{content:"I"}.sui-forminator-scgen .sui-wrap .sui-icon-question:before{content:"?"}.sui-forminator-scgen .sui-wrap .sui-icon-trash:before{content:"Q"}.sui-forminator-scgen .sui-wrap .sui-icon-pencil:before{content:"/"}.sui-forminator-scgen .sui-wrap .sui-icon-unlock:before{content:"0"}.sui-forminator-scgen .sui-wrap .sui-icon-lock:before{content:"9"}.sui-forminator-scgen .sui-wrap .sui-icon-key:before{content:"\25CA"}.sui-forminator-scgen .sui-wrap .sui-icon-plus:before{content:"="}.sui-forminator-scgen .sui-wrap .sui-icon-magnifying-glass-search:before{content:"\BA"}.sui-forminator-scgen .sui-wrap .sui-icon-more:before{content:"\2026"}.sui-forminator-scgen .sui-wrap .sui-icon-wrench-tool:before{content:"\2044"}.sui-forminator-scgen .sui-wrap .sui-icon-widget-settings-config:before{content:"x"}.sui-forminator-scgen .sui-wrap .sui-icon-settings-slider-control:before{content:"\153"}.sui-forminator-scgen .sui-wrap .sui-icon-loader:before{content:"N"}.sui-forminator-scgen .sui-wrap .sui-icon-calendar:before{content:"\220F"}.sui-forminator-scgen .sui-wrap .sui-icon-clock:before{content:","}.sui-forminator-scgen .sui-wrap .sui-icon-speed-optimize:before{content:"\F8"}.sui-forminator-scgen .sui-wrap .sui-icon-stopwatch:before{content:"V"}.sui-forminator-scgen .sui-wrap .sui-icon-filter:before{content:"z"}.sui-forminator-scgen .sui-wrap .sui-icon-bookmark:before{content:"\221A"}.sui-forminator-scgen .sui-wrap .sui-icon-chevron-up:before{content:"\2DD"}.sui-forminator-scgen .sui-wrap .sui-icon-chevron-right:before{content:"\2DC"}.sui-forminator-scgen .sui-wrap .sui-icon-chevron-down:before{content:"\131"}.sui-forminator-scgen .sui-wrap .sui-icon-chevron-left:before{content:"\D3"}.sui-forminator-scgen .sui-wrap .sui-icon-arrow-up:before{content:"\D4"}.sui-forminator-scgen .sui-wrap .sui-icon-arrow-right:before{content:"\AF"}.sui-forminator-scgen .sui-wrap .sui-icon-arrow-down:before{content:"\C2"}.sui-forminator-scgen .sui-wrap .sui-icon-arrow-left:before{content:"\F8FF"}.sui-forminator-scgen .sui-wrap .sui-icon-arrow-skip-back:before{content:"{"}.sui-forminator-scgen .sui-wrap .sui-icon-arrow-skip-forward:before{content:"}"}.sui-forminator-scgen .sui-wrap .sui-icon-arrow-skip-start:before{content:":"}.sui-forminator-scgen .sui-wrap .sui-icon-arrow-skip-end:before{content:'"'}.sui-forminator-scgen .sui-wrap .sui-icon-play:before{content:"\B4"}.sui-forminator-scgen .sui-wrap .sui-icon-pause:before{content:"\2020"}.sui-forminator-scgen .sui-wrap .sui-icon-arrows-out:before{content:"\2DA"}.sui-forminator-scgen .sui-wrap .sui-icon-arrows-in:before{content:"\2264"}.sui-forminator-scgen .sui-wrap .sui-icon-arrows-expand:before{content:"\AC"}.sui-forminator-scgen .sui-wrap .sui-icon-arrows-compress:before{content:"\2265"}.sui-forminator-scgen .sui-wrap .sui-icon-refresh2:before{content:"\C1"}.sui-forminator-scgen .sui-wrap .sui-icon-zip:before{content:"a"}.sui-forminator-scgen .sui-wrap .sui-icon-combine:before{content:"o"}.sui-forminator-scgen .sui-wrap .sui-icon-defer:before{content:"p"}.sui-forminator-scgen .sui-wrap .sui-icon-inlinecss:before{content:"c"}.sui-forminator-scgen .sui-wrap .sui-icon-movefooter:before{content:"u"}.sui-forminator-scgen .sui-wrap .sui-icon-popup:before{content:"1"}.sui-forminator-scgen .sui-wrap .sui-icon-slide-in:before{content:"2"}.sui-forminator-scgen .sui-wrap .sui-icon-embed:before{content:"3"}.sui-forminator-scgen .sui-wrap .sui-icon-list:before{content:"`"}.sui-forminator-scgen .sui-wrap .sui-icon-layout-grid:before{content:"\221E"}.sui-forminator-scgen .sui-wrap .sui-icon-layout:before{content:"\A9"}.sui-forminator-scgen .sui-wrap .sui-icon-thumbnails:before{content:"G"}.sui-forminator-scgen .sui-wrap .sui-icon-drag:before{content:"\201E"}.sui-forminator-scgen .sui-wrap .sui-icon-align-left:before{content:"%"}.sui-forminator-scgen .sui-wrap .sui-icon-align-center:before{content:"^"}.sui-forminator-scgen .sui-wrap .sui-icon-align-right:before{content:"&"}.sui-forminator-scgen .sui-wrap .sui-icon-align-justify:before{content:"#"}.sui-forminator-scgen .sui-wrap .sui-icon-indent-more:before{content:"\2019"}.sui-forminator-scgen .sui-wrap .sui-icon-indent-less:before{content:"\201D"}.sui-forminator-scgen .sui-wrap .sui-icon-blog:before{content:"Y"}.sui-forminator-scgen .sui-wrap .sui-icon-list-number:before{content:"7"}.sui-forminator-scgen .sui-wrap .sui-icon-list-bullet:before{content:"8"}.sui-forminator-scgen .sui-wrap .sui-icon-bold:before{content:"B"}.sui-forminator-scgen .sui-wrap .sui-icon-quote-2:before{content:"'"}.sui-forminator-scgen .sui-wrap .sui-icon-style-type:before{content:"<"}.sui-forminator-scgen .sui-wrap .sui-icon-wand-magic:before{content:"Z"}.sui-forminator-scgen .sui-wrap .sui-icon-link:before{content:"5"}.sui-forminator-scgen .sui-wrap .sui-icon-unlink:before{content:"6"}.sui-forminator-scgen .sui-wrap .sui-icon-paperclip:before{content:"A"}.sui-forminator-scgen .sui-wrap .sui-icon-code:before{content:";"}.sui-forminator-scgen .sui-wrap .sui-icon-color-pick-eyedropper:before{content:"\A5"}.sui-forminator-scgen .sui-wrap .sui-icon-crop:before{content:"C"}.sui-forminator-scgen .sui-wrap .sui-icon-paint-bucket:before{content:"\222B"}.sui-forminator-scgen .sui-wrap .sui-icon-camera:before{content:"\D8"}.sui-forminator-scgen .sui-wrap .sui-icon-photo-picture:before{content:"D"}.sui-forminator-scgen .sui-wrap .sui-icon-animation-video:before{content:"F"}.sui-forminator-scgen .sui-wrap .sui-icon-home:before{content:"J"}.sui-forminator-scgen .sui-wrap .sui-icon-mail:before{content:"m"}.sui-forminator-scgen .sui-wrap .sui-icon-send:before{content:"\201C"}.sui-forminator-scgen .sui-wrap .sui-icon-phone:before{content:">"}.sui-forminator-scgen .sui-wrap .sui-icon-pin:before{content:"\152"}.sui-forminator-scgen .sui-wrap .sui-icon-post-pin:before{content:"\2C7"}.sui-forminator-scgen .sui-wrap .sui-icon-calculator:before{content:"\A8"}.sui-forminator-scgen .sui-wrap .sui-icon-element-checkbox:before{content:"\C5"}.sui-forminator-scgen .sui-wrap .sui-icon-element-radio:before{content:"\CD"}.sui-forminator-scgen .sui-wrap .sui-icon-element-select:before{content:"\CF"}.sui-forminator-scgen .sui-wrap .sui-icon-element-number:before{content:"\DA"}.sui-forminator-scgen .sui-wrap .sui-icon-recaptcha:before{content:"\2013"}.sui-forminator-scgen .sui-wrap .sui-icon-folder:before{content:"\2D8"}.sui-forminator-scgen .sui-wrap .sui-icon-folder-open:before{content:"\BB"}.sui-forminator-scgen .sui-wrap .sui-icon-archive:before{content:"b"}.sui-forminator-scgen .sui-wrap .sui-icon-book:before{content:"\2206"}.sui-forminator-scgen .sui-wrap .sui-icon-page-multiple:before{content:"\E7"}.sui-forminator-scgen .sui-wrap .sui-icon-layers:before{content:"\E6"}.sui-forminator-scgen .sui-wrap .sui-icon-copy:before{content:"4"}.sui-forminator-scgen .sui-wrap .sui-icon-graph-bar:before{content:"\C7"}.sui-forminator-scgen .sui-wrap .sui-icon-graph-bar-2:before{content:"\2DB"}.sui-forminator-scgen .sui-wrap .sui-icon-graph-line:before{content:"\A1"}.sui-forminator-scgen .sui-wrap .sui-icon-tracking-disabled:before{content:"\20AC"}.sui-forminator-scgen .sui-wrap .sui-icon-page:before{content:"\D2"}.sui-forminator-scgen .sui-wrap .sui-icon-clipboard-notes:before{content:"\BF"}.sui-forminator-scgen .sui-wrap .sui-icon-page-pdf:before{content:"\C6"}.sui-forminator-scgen .sui-wrap .sui-icon-heart:before{content:"K"}.sui-forminator-scgen .sui-wrap .sui-icon-star:before{content:"S"}.sui-forminator-scgen .sui-wrap .sui-icon-plugin-2:before{content:"O"}.sui-forminator-scgen .sui-wrap .sui-icon-brush:before{content:"~"}.sui-forminator-scgen .sui-wrap .sui-icon-plug-connected:before{content:"R"}.sui-forminator-scgen .sui-wrap .sui-icon-plug-disconnected:before{content:"."}.sui-forminator-scgen .sui-wrap .sui-icon-power-on-off:before{content:"["}.sui-forminator-scgen .sui-wrap .sui-icon-target:before{content:"\2260"}.sui-forminator-scgen .sui-wrap .sui-icon-upload-cloud:before{content:"\A2"}.sui-forminator-scgen .sui-wrap .sui-icon-download-cloud:before{content:"\A3"}.sui-forminator-scgen .sui-wrap .sui-icon-cloud:before{content:"\2122"}.sui-forminator-scgen .sui-wrap .sui-icon-cloud-migration:before{content:"l"}.sui-forminator-scgen .sui-wrap .sui-icon-unpublish:before{content:"\2C6"}.sui-forminator-scgen .sui-wrap .sui-icon-download:before{content:"X"}.sui-forminator-scgen .sui-wrap .sui-icon-save:before{content:"\DF"}.sui-forminator-scgen .sui-wrap .sui-icon-lightbulb:before{content:"L"}.sui-forminator-scgen .sui-wrap .sui-icon-sitemap:before{content:"\B8"}.sui-forminator-scgen .sui-wrap .sui-icon-storage-server-data:before{content:"\CE"}.sui-forminator-scgen .sui-wrap .sui-icon-user-reputation-points:before{content:"E"}.sui-forminator-scgen .sui-wrap .sui-icon-tablet-portrait:before{content:"]"}.sui-forminator-scgen .sui-wrap .sui-icon-laptop:before{content:"\AB"}.sui-forminator-scgen .sui-wrap .sui-icon-monitor:before{content:"$"}.sui-forminator-scgen .sui-wrap .sui-icon-eye:before{content:"e"}.sui-forminator-scgen .sui-wrap .sui-icon-eye-hide:before{content:"q"}.sui-forminator-scgen .sui-wrap .sui-icon-update:before{content:"\AE"}.sui-forminator-scgen .sui-wrap .sui-icon-refresh:before{content:"H"}.sui-forminator-scgen .sui-wrap .sui-icon-undo:before{content:"\2030"}.sui-forminator-scgen .sui-wrap .sui-icon-web-globe-world:before{content:"W"}.sui-forminator-scgen .sui-wrap .sui-icon-flag:before{content:"|"}.sui-forminator-scgen .sui-wrap .sui-icon-academy:before{content:"\3C0"}.sui-forminator-scgen .sui-wrap .sui-icon-profile-male:before{content:"\B5"}.sui-forminator-scgen .sui-wrap .sui-icon-community-people:before{content:"\2018"}.sui-forminator-scgen .sui-wrap .sui-icon-help-support:before{content:"M"}.sui-forminator-scgen .sui-wrap .sui-icon-gdpr:before{content:"\2211"}.sui-forminator-scgen .sui-wrap .sui-icon-like:before{content:"j"}.sui-forminator-scgen .sui-wrap .sui-icon-dislike:before{content:"k"}.sui-forminator-scgen .sui-wrap .sui-icon-finger-point:before{content:"\2248"}.sui-forminator-scgen .sui-wrap .sui-icon-open-new-window:before{content:"n"}.sui-forminator-scgen .sui-wrap .sui-icon-reply:before{content:"r"}.sui-forminator-scgen .sui-wrap .sui-icon-share:before{content:"s"}.sui-forminator-scgen .sui-wrap .sui-icon-wordpress:before{content:"w"}.sui-forminator-scgen .sui-wrap .sui-icon-social-facebook:before{content:"f"}.sui-forminator-scgen .sui-wrap .sui-icon-social-twitter:before{content:"t"}.sui-forminator-scgen .sui-wrap .sui-icon-social-linkedin:before{content:"i"}.sui-forminator-scgen .sui-wrap .sui-icon-social-dropbox:before{content:"d"}.sui-forminator-scgen .sui-wrap .sui-icon-social-drive:before{content:"v"}.sui-forminator-scgen .sui-wrap .sui-icon-social-google-plus:before{content:"g"}.sui-forminator-scgen .sui-wrap .sui-icon-social-youtube:before{content:"y"}.sui-forminator-scgen .sui-wrap .sui-icon-instagram:before{content:"-"}.sui-forminator-scgen .sui-wrap .sui-icon-cloudflare:before{content:"\D0"}.sui-forminator-scgen .sui-wrap .sui-icon-social-github:before{content:"h"}.sui-forminator-scgen .sui-wrap .sui-icon-wpmudev-logo:before{content:"\2039"}.sui-forminator-scgen .sui-wrap .sui-icon-defender:before{content:"\B7"}.sui-forminator-scgen .sui-wrap .sui-icon-smush:before{content:"\2021"}.sui-forminator-scgen .sui-wrap .sui-icon-upfront:before{content:"\201A"}.sui-forminator-scgen .sui-wrap .sui-icon-hummingbird:before{content:"\B0"}.sui-forminator-scgen .sui-wrap .sui-icon-uptime:before{content:"\B1"}.sui-forminator-scgen .sui-wrap .sui-icon-smart-crawl:before{content:"\2202"}.sui-forminator-scgen .sui-wrap .sui-icon-forminator:before{content:"P"}.sui-forminator-scgen .sui-wrap .sui-icon-shipper-anchor:before{content:"T"}.sui-forminator-scgen .sui-wrap .sui-icon-snapshot:before{content:"\FB01"}.sui-forminator-scgen .sui-wrap .sui-icon-hustle:before{content:"\2014"}.sui-forminator-scgen .sui-wrap .sui-icon-performance:before{content:"U"}.sui-forminator-scgen .sui-wrap .sui-icon-hub:before{content:"\FB02"}.sui-forminator-scgen .sui-wrap .sui-icon-automate:before{content:"\2D9"}.sui-forminator-scgen .sui-wrap .sui-icon-align-y-center:before{content:"*"}.sui-forminator-scgen .sui-wrap .sui-icon-align-y-top:before{content:"\A7"}.sui-forminator-scgen .sui-wrap .sui-icon-align-y-bottom:before{content:"\B6"}.sui-forminator-scgen .sui-wrap .sui-icon-align-x-center:before{content:"\192"}.sui-forminator-scgen .sui-wrap .sui-icon-align-x-right:before{content:"\2022"}.sui-forminator-scgen .sui-wrap .sui-icon-align-x-left:before{content:"\E5"}.sui-forminator-scgen .sui-wrap .sui-icon-logout:before{content:"\203A"}.sui-forminator-scgen .sui-wrap .sui-button,.sui-forminator-scgen .sui-wrap .sui-button-icon,.sui-forminator-scgen .sui-wrap a.sui-button,.sui-forminator-scgen .sui-wrap a.sui-button-icon,.sui-forminator-scgen .sui-wrap button.sui-button,.sui-forminator-scgen .sui-wrap button.sui-button-icon{cursor:pointer;display:inline-block;position:relative;margin:0;border:2px solid transparent;border-radius:4px;text-decoration:none;text-align:center;transition:all .3s ease}.sui-forminator-scgen .sui-wrap .sui-button-icon .sui-loading,.sui-forminator-scgen .sui-wrap .sui-button .sui-loading,.sui-forminator-scgen .sui-wrap a.sui-button-icon .sui-loading,.sui-forminator-scgen .sui-wrap a.sui-button .sui-loading,.sui-forminator-scgen .sui-wrap button.sui-button-icon .sui-loading,.sui-forminator-scgen .sui-wrap button.sui-button .sui-loading{width:16px;height:16px;display:none;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;position:absolute;margin:0}.sui-forminator-scgen .sui-wrap .sui-button-icon .sui-loading:before,.sui-forminator-scgen .sui-wrap .sui-button .sui-loading:before,.sui-forminator-scgen .sui-wrap a.sui-button-icon .sui-loading:before,.sui-forminator-scgen .sui-wrap a.sui-button .sui-loading:before,.sui-forminator-scgen .sui-wrap button.sui-button-icon .sui-loading:before,.sui-forminator-scgen .sui-wrap button.sui-button .sui-loading:before{display:block}.sui-forminator-scgen .sui-wrap .sui-button-icon .sui-button-text-default,.sui-forminator-scgen .sui-wrap .sui-button-icon .sui-loading-text,.sui-forminator-scgen .sui-wrap .sui-button .sui-button-text-default,.sui-forminator-scgen .sui-wrap .sui-button .sui-loading-text,.sui-forminator-scgen .sui-wrap a.sui-button-icon .sui-button-text-default,.sui-forminator-scgen .sui-wrap a.sui-button-icon .sui-loading-text,.sui-forminator-scgen .sui-wrap a.sui-button .sui-button-text-default,.sui-forminator-scgen .sui-wrap a.sui-button .sui-loading-text,.sui-forminator-scgen .sui-wrap button.sui-button-icon .sui-button-text-default,.sui-forminator-scgen .sui-wrap button.sui-button-icon .sui-loading-text,.sui-forminator-scgen .sui-wrap button.sui-button .sui-button-text-default,.sui-forminator-scgen .sui-wrap button.sui-button .sui-loading-text{display:block;pointer-events:none}@media (max-width:782px){.sui-forminator-scgen .sui-wrap .sui-button-icon .sui-button-text-default .sui-loading-text,.sui-forminator-scgen .sui-wrap .sui-button-icon .sui-loading-text .sui-loading-text,.sui-forminator-scgen .sui-wrap .sui-button .sui-button-text-default .sui-loading-text,.sui-forminator-scgen .sui-wrap .sui-button .sui-loading-text .sui-loading-text,.sui-forminator-scgen .sui-wrap a.sui-button-icon .sui-button-text-default .sui-loading-text,.sui-forminator-scgen .sui-wrap a.sui-button-icon .sui-loading-text .sui-loading-text,.sui-forminator-scgen .sui-wrap a.sui-button .sui-button-text-default .sui-loading-text,.sui-forminator-scgen .sui-wrap a.sui-button .sui-loading-text .sui-loading-text,.sui-forminator-scgen .sui-wrap button.sui-button-icon .sui-button-text-default .sui-loading-text,.sui-forminator-scgen .sui-wrap button.sui-button-icon .sui-loading-text .sui-loading-text,.sui-forminator-scgen .sui-wrap button.sui-button .sui-button-text-default .sui-loading-text,.sui-forminator-scgen .sui-wrap button.sui-button .sui-loading-text .sui-loading-text{overflow:hidden;text-overflow:ellipsis}}.sui-forminator-scgen .sui-wrap .sui-button-icon .sui-button-text-onload,.sui-forminator-scgen .sui-wrap .sui-button .sui-button-text-onload,.sui-forminator-scgen .sui-wrap a.sui-button-icon .sui-button-text-onload,.sui-forminator-scgen .sui-wrap a.sui-button .sui-button-text-onload,.sui-forminator-scgen .sui-wrap button.sui-button-icon .sui-button-text-onload,.sui-forminator-scgen .sui-wrap button.sui-button .sui-button-text-onload{display:none}.sui-forminator-scgen .sui-wrap .sui-button-icon [class*=sui-icon-],.sui-forminator-scgen .sui-wrap .sui-button [class*=sui-icon-],.sui-forminator-scgen .sui-wrap a.sui-button-icon [class*=sui-icon-],.sui-forminator-scgen .sui-wrap a.sui-button [class*=sui-icon-],.sui-forminator-scgen .sui-wrap button.sui-button-icon [class*=sui-icon-],.sui-forminator-scgen .sui-wrap button.sui-button [class*=sui-icon-]{font-size:12px}.sui-forminator-scgen .sui-wrap .sui-button-icon [class*=sui-icon-]:before,.sui-forminator-scgen .sui-wrap .sui-button [class*=sui-icon-]:before,.sui-forminator-scgen .sui-wrap a.sui-button-icon [class*=sui-icon-]:before,.sui-forminator-scgen .sui-wrap a.sui-button [class*=sui-icon-]:before,.sui-forminator-scgen .sui-wrap button.sui-button-icon [class*=sui-icon-]:before,.sui-forminator-scgen .sui-wrap button.sui-button [class*=sui-icon-]:before{display:block;color:inherit}.sui-forminator-scgen .sui-wrap .sui-button,.sui-forminator-scgen .sui-wrap .sui-button-icon,.sui-forminator-scgen .sui-wrap .sui-button-icon:active,.sui-forminator-scgen .sui-wrap .sui-button-icon:focus,.sui-forminator-scgen .sui-wrap .sui-button-icon:hover,.sui-forminator-scgen .sui-wrap .sui-button:active,.sui-forminator-scgen .sui-wrap .sui-button:focus,.sui-forminator-scgen .sui-wrap .sui-button:hover,.sui-forminator-scgen .sui-wrap a.sui-button,.sui-forminator-scgen .sui-wrap a.sui-button-icon,.sui-forminator-scgen .sui-wrap a.sui-button-icon:active,.sui-forminator-scgen .sui-wrap a.sui-button-icon:focus,.sui-forminator-scgen .sui-wrap a.sui-button-icon:hover,.sui-forminator-scgen .sui-wrap a.sui-button:active,.sui-forminator-scgen .sui-wrap a.sui-button:focus,.sui-forminator-scgen .sui-wrap a.sui-button:hover,.sui-forminator-scgen .sui-wrap button.sui-button,.sui-forminator-scgen .sui-wrap button.sui-button-icon,.sui-forminator-scgen .sui-wrap button.sui-button-icon:active,.sui-forminator-scgen .sui-wrap button.sui-button-icon:focus,.sui-forminator-scgen .sui-wrap button.sui-button-icon:hover,.sui-forminator-scgen .sui-wrap button.sui-button:active,.sui-forminator-scgen .sui-wrap button.sui-button:focus,.sui-forminator-scgen .sui-wrap button.sui-button:hover{outline:none;box-shadow:none}.sui-forminator-scgen .sui-wrap .sui-button-icon.disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-onload-text,.sui-forminator-scgen .sui-wrap .sui-button-icon:disabled,.sui-forminator-scgen .sui-wrap .sui-button-icon[disabled],.sui-forminator-scgen .sui-wrap .sui-button.disabled,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-onload-text,.sui-forminator-scgen .sui-wrap .sui-button:disabled,.sui-forminator-scgen .sui-wrap .sui-button[disabled],.sui-forminator-scgen .sui-wrap a.sui-button-icon.disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-onload-text,.sui-forminator-scgen .sui-wrap a.sui-button-icon:disabled,.sui-forminator-scgen .sui-wrap a.sui-button-icon[disabled],.sui-forminator-scgen .sui-wrap a.sui-button.disabled,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-onload-text,.sui-forminator-scgen .sui-wrap a.sui-button:disabled,.sui-forminator-scgen .sui-wrap a.sui-button[disabled],.sui-forminator-scgen .sui-wrap button.sui-button-icon.disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-onload-text,.sui-forminator-scgen .sui-wrap button.sui-button-icon:disabled,.sui-forminator-scgen .sui-wrap button.sui-button-icon[disabled],.sui-forminator-scgen .sui-wrap button.sui-button.disabled,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-onload-text,.sui-forminator-scgen .sui-wrap button.sui-button:disabled,.sui-forminator-scgen .sui-wrap button.sui-button[disabled]{cursor:default;pointer-events:none}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-onload,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-onload,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-onload,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-onload{pointer-events:none;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-onload .sui-loading,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-onload .sui-loading,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-onload .sui-loading,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-onload .sui-loading,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-onload .sui-loading,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-onload .sui-loading{display:-ms-flexbox;display:flex}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-onload .sui-loading-text,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-onload .sui-loading-text,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-onload .sui-loading-text,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-onload .sui-loading-text,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-onload .sui-loading-text,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-onload .sui-loading-text{opacity:0}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-onload-text,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-onload-text,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-onload-text,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-onload-text,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-onload-text,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-onload-text{pointer-events:none}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-onload-text .sui-button-text-default,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-onload-text .sui-button-text-default,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-onload-text .sui-button-text-default,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-onload-text .sui-button-text-default,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-onload-text .sui-button-text-default,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-onload-text .sui-button-text-default{display:none}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-onload-text .sui-button-text-onload,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-onload-text .sui-button-text-onload,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-onload-text .sui-button-text-onload,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-onload-text .sui-button-text-onload,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-onload-text .sui-button-text-onload,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-onload-text .sui-button-text-onload{display:block}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-onload-text .sui-button-text-onload .sui-loading,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-onload-text .sui-button-text-onload .sui-loading,.sui-forminator-scgen .sui-wrap a.sui-button-icon.sui-button-onload-text .sui-button-text-onload .sui-loading,.sui-forminator-scgen .sui-wrap a.sui-button.sui-button-onload-text .sui-button-text-onload .sui-loading,.sui-forminator-scgen .sui-wrap button.sui-button-icon.sui-button-onload-text .sui-button-text-onload .sui-loading,.sui-forminator-scgen .sui-wrap button.sui-button.sui-button-onload-text .sui-button-text-onload .sui-loading{width:auto;height:auto;display:inline-block;position:relative;vertical-align:unset;margin-right:4px}.sui-forminator-scgen .sui-wrap .sui-button-icon.sui-button-onload-text .sui-button-text-onload .sui-loading:before,.sui-forminator-scgen .sui-wrap .sui-button.sui-button-onload-text .sui-button-text