WordPress Page Builder – Beaver Builder - Version 1.6.0.1

Version Description

Download this release

Release Info

Developer justinbusa
Plugin Icon 128x128 WordPress Page Builder – Beaver Builder
Version 1.6.0.1
Comparing to
See all releases

Code changes from version 1.5.9 to 1.6.0.1

Files changed (48) hide show
  1. changelog.txt +30 -0
  2. classes/class-fl-builder-model.php +1 -1
  3. classes/class-fl-builder-service-activecampaign.php +249 -0
  4. classes/class-fl-builder-service-email-address.php +130 -0
  5. classes/class-fl-builder-service-mailchimp.php +134 -3
  6. classes/class-fl-builder-services.php +10 -0
  7. classes/class-fl-builder.php +67 -21
  8. css/fl-builder-layout-rtl.css +6 -0
  9. css/fl-builder.css +4 -0
  10. fl-builder.php +2 -2
  11. includes/column-css.php +54 -9
  12. includes/column-settings.php +24 -0
  13. includes/field-editor.php +1 -1
  14. includes/field-multiple-photos.php +19 -10
  15. includes/field-select.php +16 -6
  16. includes/row-css.php +54 -9
  17. includes/row-settings.php +27 -3
  18. includes/updater-config.php +1 -1
  19. includes/vendor/activecampaign/Account.class.php +73 -0
  20. includes/vendor/activecampaign/ActiveCampaign.class.php +128 -0
  21. includes/vendor/activecampaign/Auth.class.php +25 -0
  22. includes/vendor/activecampaign/Automation.class.php +51 -0
  23. includes/vendor/activecampaign/Campaign.class.php +133 -0
  24. includes/vendor/activecampaign/Connector.class.php +226 -0
  25. includes/vendor/activecampaign/Contact.class.php +121 -0
  26. includes/vendor/activecampaign/Deal.class.php +139 -0
  27. includes/vendor/activecampaign/Design.class.php +31 -0
  28. includes/vendor/activecampaign/Form.class.php +291 -0
  29. includes/vendor/activecampaign/Group.class.php +55 -0
  30. includes/vendor/activecampaign/List.class.php +91 -0
  31. includes/vendor/activecampaign/Message.class.php +103 -0
  32. includes/vendor/activecampaign/Settings.class.php +25 -0
  33. includes/vendor/activecampaign/Subscriber.class.php +6 -0
  34. includes/vendor/activecampaign/Tracking.class.php +118 -0
  35. includes/vendor/activecampaign/User.class.php +71 -0
  36. includes/vendor/activecampaign/Webhook.class.php +84 -0
  37. includes/vendor/activecampaign/config.php +6 -0
  38. includes/vendor/infusionsoft/xmlrpc-3.0/extras/rsakey.pem +0 -9
  39. includes/vendor/infusionsoft/xmlrpc-3.0/extras/test.pl +0 -52
  40. includes/vendor/infusionsoft/xmlrpc-3.0/extras/test.py +0 -37
  41. includes/vendor/infusionsoft/xmlrpc-3.0/extras/workspace.testPhpServer.fttb +0 -2
  42. js/fl-builder-layout.js +53 -0
  43. js/fl-builder-preview.js +73 -25
  44. js/fl-builder-services.js +54 -0
  45. js/fl-builder.js +16 -4
  46. languages/de_DE.po +1 -1
  47. languages/es_ES.mo +0 -0
  48. languages/es_ES.po +151 -151
changelog.txt CHANGED
@@ -1,3 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  <h4>1.5.9 - 06/01/2015</h4>
2
  <p><strong>Enhancements</strong></p>
3
  <ul>
1
+ <h4>1.6.0.1 - 06/28/2015</h4>
2
+ <p><strong>Enhancements</strong></p>
3
+ <ul>
4
+ <li>Added fl_builder_layout_style_dependencies filter.</li>
5
+ </ul>
6
+ <p><strong>Bug Fixes</strong></p>
7
+ <ul>
8
+ <li>Fixed a bug with importing templates that have slideshows or galleries.</li>
9
+ <li>Fixed a bug with row margins when the background is set to a slideshow or video.</li>
10
+ </ul>
11
+
12
+ <h4>1.6.0 - 06/22/2015</h4>
13
+ <p><strong>Enhancements</strong></p>
14
+ <ul>
15
+ <li>Added link, hover and heading color settings to rows and columns.</li>
16
+ <li>Tab and accordion items now open when linked to from another page.</li>
17
+ <li>Accordion items now have an active class when open.</li>
18
+ <li>Column layouts now support RTL languages.</li>
19
+ <li>Added an email address option to the Subscribe Form module so signups can be sent to your email address.</li>
20
+ <li>Added support for MailChimp groups to the Subscribe Form module.</li>
21
+ <li>Added ActiveCampaign integration.</li>
22
+ </ul>
23
+ <p><strong>Bug Fixes</strong></p>
24
+ <ul>
25
+ <li>Fixed a bug with the window closing when publishing changes.</li>
26
+ <li>Fixed a bug with getting the correct ID for the current post.</li>
27
+ <li>Fixed a bug with row borders showing when none are set and the background is a slideshow.</li>
28
+ <li>Fixed a bug with the multiple photos field when used in a nested form.</li>
29
+ </ul>
30
+
31
  <h4>1.5.9 - 06/01/2015</h4>
32
  <p><strong>Enhancements</strong></p>
33
  <ul>
classes/class-fl-builder-model.php CHANGED
@@ -280,7 +280,7 @@ final class FLBuilderModel {
280
  return $post_data['post_id'];
281
  }
282
  // Get a post ID from the main query.
283
- else if ( in_the_loop() && isset( $wp_the_query ) && isset( $wp_the_query->post ) ) {
284
  return $wp_the_query->post->ID;
285
  }
286
  // Get a post ID in a query outside of the main loop.
280
  return $post_data['post_id'];
281
  }
282
  // Get a post ID from the main query.
283
+ else if ( in_the_loop() && is_main_query() && isset( $wp_the_query->post ) ) {
284
  return $wp_the_query->post->ID;
285
  }
286
  // Get a post ID in a query outside of the main loop.
classes/class-fl-builder-service-activecampaign.php ADDED
@@ -0,0 +1,249 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Helper class for the ActiveCampaign API.
5
+ *
6
+ * @since 1.6.0
7
+ */
8
+ final class FLBuilderServiceActiveCampaign extends FLBuilderService {
9
+
10
+ /**
11
+ * The ID for this service.
12
+ *
13
+ * @since 1.6.0
14
+ * @var string $id
15
+ */
16
+ public $id = 'activecampaign';
17
+
18
+ /**
19
+ * @since 1.6.0
20
+ * @var object $api_instance
21
+ * @access private
22
+ */
23
+ private $api_instance = null;
24
+
25
+ /**
26
+ * Get an instance of the API.
27
+ *
28
+ * @since 1.6.0
29
+ * @param string $api_url A valid API url.
30
+ * @param string $api_key A valid API key.
31
+ * @return object The API instance.
32
+ */
33
+ public function get_api( $api_url, $api_key )
34
+ {
35
+ if ( $this->api_instance ) {
36
+ return $this->api_instance;
37
+ }
38
+ if ( ! class_exists( 'ActiveCampaign' ) ) {
39
+ require_once FL_BUILDER_DIR . 'includes/vendor/activecampaign/ActiveCampaign.class.php';
40
+ }
41
+
42
+ $this->api_instance = new ActiveCampaign( $api_url, $api_key );
43
+
44
+ return $this->api_instance;
45
+ }
46
+
47
+ /**
48
+ * Test the API connection.
49
+ *
50
+ * @since 1.6.0
51
+ * @param array $fields {
52
+ * @type string $api_url A valid API url.
53
+ * @type string $api_key A valid API key.
54
+ * }
55
+ * @return array{
56
+ * @type bool|string $error The error message or false if no error.
57
+ * @type array $data An array of data used to make the connection.
58
+ * }
59
+ */
60
+ public function connect( $fields = array() )
61
+ {
62
+ $response = array(
63
+ 'error' => false,
64
+ 'data' => array()
65
+ );
66
+
67
+ // Make sure we have an API url.
68
+ if ( ! isset( $fields['api_url'] ) || empty( $fields['api_url'] ) ) {
69
+ $response['error'] = __( 'Error: You must provide an API URL.', 'fl-builder' );
70
+ }
71
+ // Make sure we have an API key.
72
+ else if ( ! isset( $fields['api_key'] ) || empty( $fields['api_key'] ) ) {
73
+ $response['error'] = __( 'Error: You must provide an API key.', 'fl-builder' );
74
+ }
75
+ // Try to connect and store the connection data.
76
+ else {
77
+
78
+ $api = $this->get_api( $fields['api_url'], $fields['api_key'] );
79
+
80
+ if ( ! (int) $api->credentials_test() ) {
81
+ $response['error'] = __( 'Error: Please check your API URL and API key.', 'fl-builder' );
82
+ }
83
+ else {
84
+ $response['data'] = array(
85
+ 'api_url' => $fields['api_url'],
86
+ 'api_key' => $fields['api_key']
87
+ );
88
+ }
89
+ }
90
+
91
+ return $response;
92
+ }
93
+
94
+ /**
95
+ * Renders the markup for the connection settings.
96
+ *
97
+ * @since 1.6.0
98
+ * @return string The connection settings markup.
99
+ */
100
+ public function render_connect_settings()
101
+ {
102
+ ob_start();
103
+
104
+ FLBuilder::render_settings_field( 'api_url', array(
105
+ 'row_class' => 'fl-builder-service-connect-row',
106
+ 'class' => 'fl-builder-service-connect-input',
107
+ 'type' => 'text',
108
+ 'label' => __( 'API URL', 'fl-builder' ),
109
+ 'help' => __( 'Your API url can be found in your ActiveCampaign account under My Settings > API.', 'fl-builder' ),
110
+ 'preview' => array(
111
+ 'type' => 'none'
112
+ )
113
+ ));
114
+
115
+ FLBuilder::render_settings_field( 'api_key', array(
116
+ 'row_class' => 'fl-builder-service-connect-row',
117
+ 'class' => 'fl-builder-service-connect-input',
118
+ 'type' => 'text',
119
+ 'label' => __( 'API Key', 'fl-builder' ),
120
+ 'help' => __( 'Your API key can be found in your ActiveCampaign account under My Settings > API.', 'fl-builder' ),
121
+ 'preview' => array(
122
+ 'type' => 'none'
123
+ )
124
+ ));
125
+
126
+ return ob_get_clean();
127
+ }
128
+
129
+ /**
130
+ * Render the markup for service specific fields.
131
+ *
132
+ * @since 1.6.0
133
+ * @param string $account The name of the saved account.
134
+ * @param object $settings Saved module settings.
135
+ * @return array {
136
+ * @type bool|string $error The error message or false if no error.
137
+ * @type string $html The field markup.
138
+ * }
139
+ */
140
+ public function render_fields( $account, $settings )
141
+ {
142
+ $post_data = FLBuilderModel::get_post_data();
143
+ $account_data = $this->get_account_data( $account );
144
+ $api = $this->get_api( $account_data['api_url'], $account_data['api_key'] );
145
+ $response = array(
146
+ 'error' => false,
147
+ 'html' => ''
148
+ );
149
+
150
+ $lists = $api->api( 'list/list?ids=all' );
151
+ $response['html'] = $this->render_list_field( $lists, $settings );
152
+
153
+ return $response;
154
+ }
155
+
156
+ /**
157
+ * Render markup for the list field.
158
+ *
159
+ * @since 1.6.0
160
+ * @param array $lists List data from the API.
161
+ * @param object $settings Saved module settings.
162
+ * @return string The markup for the list field.
163
+ * @access private
164
+ */
165
+ private function render_list_field( $lists, $settings )
166
+ {
167
+ ob_start();
168
+
169
+ $options = array( '' => __( 'Choose...', 'fl-builder' ) );
170
+
171
+ foreach ( (array) $lists as $list ) {
172
+ if ( is_object( $list ) && isset( $list->id ) ) {
173
+ $options[ $list->id ] = $list->name;
174
+ }
175
+ }
176
+
177
+ FLBuilder::render_settings_field( 'list_id', array(
178
+ 'row_class' => 'fl-builder-service-field-row',
179
+ 'class' => 'fl-builder-service-list-select',
180
+ 'type' => 'select',
181
+ 'label' => _x( 'List', 'An email list from a third party provider.', 'fl-builder' ),
182
+ 'options' => $options,
183
+ 'preview' => array(
184
+ 'type' => 'none'
185
+ )
186
+ ), $settings);
187
+
188
+ return ob_get_clean();
189
+ }
190
+
191
+ /**
192
+ * Subscribe an email address to ActiveCampaign.
193
+ *
194
+ * @since 1.6.0
195
+ * @param object $settings A module settings object.
196
+ * @param string $email The email to subscribe.
197
+ * @param string $name Optional. The full name of the person subscribing.
198
+ * @return array {
199
+ * @type bool|string $error The error message or false if no error.
200
+ * }
201
+ */
202
+ public function subscribe( $settings, $email, $name = false )
203
+ {
204
+ $account_data = $this->get_account_data( $settings->service_account );
205
+ $response = array( 'error' => false );
206
+
207
+ if ( ! $account_data ) {
208
+ $response['error'] = __( 'There was an error subscribing to ActiveCampaign. The account is no longer connected.', 'fl-builder' );
209
+ }
210
+ else {
211
+
212
+ $api = $this->get_api( $account_data['api_url'], $account_data['api_key'] );
213
+ $data = array(
214
+ 'email' => $email,
215
+ 'p' => array( $settings->list_id ),
216
+ 'status' => 1,
217
+ 'instantresponders' => array( 1 )
218
+ );
219
+
220
+ // Name
221
+ if ( $name ) {
222
+
223
+ $names = explode( ' ', $name );
224
+
225
+ if ( isset( $names[0] ) ) {
226
+ $data['first_name'] = $names[0];
227
+ }
228
+ if ( isset( $names[1] ) ) {
229
+ $data['last_name'] = $names[1];
230
+ }
231
+ }
232
+
233
+ // Subscribe
234
+ $result = $api->api( 'contact/add', $data );
235
+
236
+ if ( ! $result->success && isset( $result->error ) && ! stristr( $result->error, 'duplicate' ) ) {
237
+
238
+ if ( stristr( $result->error, 'access' ) ) {
239
+ $response['error'] = __( 'Error: Invalid API data.', 'fl-builder' );
240
+ }
241
+ else {
242
+ $response['error'] = $result->error;
243
+ }
244
+ }
245
+ }
246
+
247
+ return $response;
248
+ }
249
+ }
classes/class-fl-builder-service-email-address.php ADDED
@@ -0,0 +1,130 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Helper class for adding an email address as a service.
5
+ *
6
+ * @since 1.6.0
7
+ */
8
+ final class FLBuilderServiceEmailAddress extends FLBuilderService {
9
+
10
+ /**
11
+ * The ID for this service.
12
+ *
13
+ * @since 1.6.0
14
+ * @var string $id
15
+ */
16
+ public $id = 'email-address';
17
+
18
+ /**
19
+ * Test the API connection.
20
+ *
21
+ * @since 1.6.0
22
+ * @param array $fields {
23
+ * @type string $email A valid email address.
24
+ * }
25
+ * @return array{
26
+ * @type bool|string $error The error message or false if no error.
27
+ * @type array $data An array of data used to make the connection.
28
+ * }
29
+ */
30
+ public function connect( $fields = array() )
31
+ {
32
+ $response = array(
33
+ 'error' => false,
34
+ 'data' => array()
35
+ );
36
+
37
+ // Make sure we have an email address.
38
+ if ( ! isset( $fields['email'] ) || empty( $fields['email'] ) ) {
39
+ $response['error'] = __( 'Error: You must provide an email address.', 'fl-builder' );
40
+ }
41
+ // Store the connection data.
42
+ else {
43
+ $response['data'] = array( 'email' => $fields['email'] );
44
+ }
45
+
46
+ return $response;
47
+ }
48
+
49
+ /**
50
+ * Renders the markup for the connection settings.
51
+ *
52
+ * @since 1.6.0
53
+ * @return string The connection settings markup.
54
+ */
55
+ public function render_connect_settings()
56
+ {
57
+ ob_start();
58
+
59
+ FLBuilder::render_settings_field( 'email', array(
60
+ 'row_class' => 'fl-builder-service-connect-row',
61
+ 'class' => 'fl-builder-service-connect-input',
62
+ 'type' => 'text',
63
+ 'label' => __( 'Email Address', 'fl-builder' ),
64
+ 'preview' => array(
65
+ 'type' => 'none'
66
+ )
67
+ ));
68
+
69
+ return ob_get_clean();
70
+ }
71
+
72
+ /**
73
+ * Render the markup for service specific fields.
74
+ *
75
+ * @since 1.6.0
76
+ * @param string $account The name of the saved account.
77
+ * @param object $settings Saved module settings.
78
+ * @return array {
79
+ * @type bool|string $error The error message or false if no error.
80
+ * @type string $html The field markup.
81
+ * }
82
+ */
83
+ public function render_fields( $account, $settings )
84
+ {
85
+ $response = array(
86
+ 'error' => false,
87
+ 'html' => ''
88
+ );
89
+
90
+ return $response;
91
+ }
92
+
93
+ /**
94
+ * Send the subscription info to the saved email address.
95
+ *
96
+ * @since 1.6.0
97
+ * @param object $settings A module settings object.
98
+ * @param string $email The email to subscribe.
99
+ * @param string $name Optional. The full name of the person subscribing.
100
+ * @return array {
101
+ * @type bool|string $error The error message or false if no error.
102
+ * }
103
+ */
104
+ public function subscribe( $settings, $email, $name = false )
105
+ {
106
+ $account_data = $this->get_account_data( $settings->service_account );
107
+ $response = array( 'error' => false );
108
+
109
+ if ( ! $account_data ) {
110
+ $response['error'] = __( 'There was an error subscribing. The account is no longer connected.', 'fl-builder' );
111
+ }
112
+ else {
113
+
114
+ $subject = __( 'Subscribe Form Signup', 'fl-builder' );
115
+ $message = __( 'Email', 'fl-builder' ) . ': ' . $email;
116
+
117
+ if ( $name ) {
118
+ $message .= "\n" . __( 'Name', 'fl-builder' ) . ': ' . $name;
119
+ }
120
+
121
+ $result = wp_mail( $account_data['email'], $subject, $message );
122
+
123
+ if ( ! $result ) {
124
+ $response['error'] = __( 'There was an error subscribing. Please try again.', 'fl-builder' );
125
+ }
126
+ }
127
+
128
+ return $response;
129
+ }
130
+ }
classes/class-fl-builder-service-mailchimp.php CHANGED
@@ -120,6 +120,7 @@ final class FLBuilderServiceMailChimp extends FLBuilderService {
120
  */
121
  public function render_fields( $account, $settings )
122
  {
 
123
  $account_data = $this->get_account_data( $account );
124
  $api = $this->get_api( $account_data['api_key'] );
125
  $response = array(
@@ -127,14 +128,36 @@ final class FLBuilderServiceMailChimp extends FLBuilderService {
127
  'html' => ''
128
  );
129
 
 
130
  try {
131
- $lists = $api->lists->getList();
132
- $response['html'] = $this->render_list_field( $lists, $settings );
 
 
 
133
  }
134
  catch ( Mailchimp_Error $e ) {
135
  $response['error'] = $e->getMessage();
136
  }
137
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
138
  return $response;
139
  }
140
 
@@ -159,7 +182,7 @@ final class FLBuilderServiceMailChimp extends FLBuilderService {
159
 
160
  FLBuilder::render_settings_field( 'list_id', array(
161
  'row_class' => 'fl-builder-service-field-row',
162
- 'class' => 'fl-builder-service-list-select',
163
  'type' => 'select',
164
  'label' => _x( 'List', 'An email list from a third party provider.', 'fl-builder' ),
165
  'options' => $options,
@@ -171,6 +194,47 @@ final class FLBuilderServiceMailChimp extends FLBuilderService {
171
  return ob_get_clean();
172
  }
173
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
174
  /**
175
  * Subscribe an email address to MailChimp.
176
  *
@@ -198,6 +262,7 @@ final class FLBuilderServiceMailChimp extends FLBuilderService {
198
  $email = array( 'email' => $email );
199
  $data = array();
200
 
 
201
  if ( $name ) {
202
 
203
  $names = explode( ' ', $name );
@@ -210,6 +275,72 @@ final class FLBuilderServiceMailChimp extends FLBuilderService {
210
  }
211
  }
212
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
213
  try {
214
  $api->lists->subscribe( $settings->list_id, $email, $data, 'html', (bool) $double, true, false, (bool) $welcome );
215
  }
120
  */
121
  public function render_fields( $account, $settings )
122
  {
123
+ $post_data = FLBuilderModel::get_post_data();
124
  $account_data = $this->get_account_data( $account );
125
  $api = $this->get_api( $account_data['api_key'] );
126
  $response = array(
128
  'html' => ''
129
  );
130
 
131
+ // Lists field
132
  try {
133
+
134
+ if ( ! isset( $post_data['list_id'] ) ) {
135
+ $lists = $api->lists->getList();
136
+ $response['html'] .= $this->render_list_field( $lists, $settings );
137
+ }
138
  }
139
  catch ( Mailchimp_Error $e ) {
140
  $response['error'] = $e->getMessage();
141
  }
142
 
143
+ // Groups field
144
+ try {
145
+
146
+ if ( isset( $post_data['list_id'] ) || isset( $settings->list_id ) ) {
147
+
148
+ if ( isset( $post_data['list_id'] ) ) {
149
+ $list_id = $post_data['list_id'];
150
+ }
151
+ else {
152
+ $list_id = $settings->list_id;
153
+ }
154
+
155
+ $groups = $api->lists->interestGroupings( $list_id );
156
+ $response['html'] .= $this->render_groups_field( $list_id, $groups, $settings );
157
+ }
158
+ }
159
+ catch ( Mailchimp_Error $e ) {}
160
+
161
  return $response;
162
  }
163
 
182
 
183
  FLBuilder::render_settings_field( 'list_id', array(
184
  'row_class' => 'fl-builder-service-field-row',
185
+ 'class' => 'fl-builder-service-list-select fl-builder-mailchimp-list-select',
186
  'type' => 'select',
187
  'label' => _x( 'List', 'An email list from a third party provider.', 'fl-builder' ),
188
  'options' => $options,
194
  return ob_get_clean();
195
  }
196
 
197
+ /**
198
+ * Render markup for the groups field.
199
+ *
200
+ * @since 1.6.0
201
+ * @param string $list_id The ID of the list for this groups.
202
+ * @param array $groups An array of group data.
203
+ * @param object $settings Saved module settings.
204
+ * @return string The markup for the group field.
205
+ * @access private
206
+ */
207
+ private function render_groups_field( $list_id, $groups, $settings )
208
+ {
209
+ if ( ! is_array( $groups ) || 0 === count( $groups ) ) {
210
+ return;
211
+ }
212
+
213
+ ob_start();
214
+
215
+ $options = array( '' => __( 'No Group', 'fl-builder' ) );
216
+
217
+ foreach ( $groups as $group ) {
218
+ foreach ( $group['groups'] as $subgroup ) {
219
+ $options[ $list_id . '_' . $group['id'] . '_' . $subgroup['id'] ] = $group['name'] . ' - ' . $subgroup['name'];
220
+ }
221
+ }
222
+
223
+ FLBuilder::render_settings_field( 'groups', array(
224
+ 'row_class' => 'fl-builder-service-field-row',
225
+ 'class' => 'fl-builder-mailchimp-group-select',
226
+ 'type' => 'select',
227
+ 'label' => _x( 'Groups', 'MailChimp list group.', 'fl-builder' ),
228
+ 'multi-select' => true,
229
+ 'options' => $options,
230
+ 'preview' => array(
231
+ 'type' => 'none'
232
+ )
233
+ ), $settings);
234
+
235
+ return ob_get_clean();
236
+ }
237
+
238
  /**
239
  * Subscribe an email address to MailChimp.
240
  *
262
  $email = array( 'email' => $email );
263
  $data = array();
264
 
265
+ // Name
266
  if ( $name ) {
267
 
268
  $names = explode( ' ', $name );
275
  }
276
  }
277
 
278
+ // Groups
279
+ if ( isset( $settings->groups ) && is_array( $settings->groups ) ) {
280
+
281
+ $groups = array();
282
+
283
+ // Build the array of saved group data.
284
+ for ( $i = 0; $i < count( $settings->groups ); $i++ ) {
285
+
286
+ if ( empty( $settings->groups[ $i ] ) ) {
287
+ continue;
288
+ }
289
+
290
+ $group_data = explode( '_', $settings->groups[ $i ] );
291
+
292
+ if ( $group_data[0] != $settings->list_id ) {
293
+ continue;
294
+ }
295
+ if ( ! isset( $groups[ $group_data[1] ] ) ) {
296
+ $groups[ $group_data[1] ] = array();
297
+ }
298
+
299
+ $groups[ $group_data[1] ][] = $group_data[2];
300
+ }
301
+
302
+ // Get the subgroup names from the API and add to the $data array.
303
+ if ( count( $groups ) > 0 ) {
304
+
305
+ $groups_result = $api->lists->interestGroupings( $settings->list_id );
306
+
307
+ if ( is_array( $groups_result ) && count( $groups_result ) > 0 ) {
308
+
309
+ foreach ( $groups_result as $group ) {
310
+
311
+ if ( ! isset( $groups[ $group['id'] ] ) ) {
312
+ continue;
313
+ }
314
+
315
+ $subgroup_names = array();
316
+
317
+ foreach ( $group['groups'] as $subgroup ) {
318
+
319
+ if ( in_array( $subgroup['id'], $groups[ $group['id'] ] ) ) {
320
+ $subgroup_names[] = $subgroup['name'];
321
+ }
322
+ }
323
+
324
+ if ( 0 === count( $subgroup_names ) ) {
325
+ unset( $groups[ $group['id'] ] );
326
+ }
327
+ else {
328
+ $groups[ $group['id'] ] = $subgroup_names;
329
+ }
330
+ }
331
+
332
+ $i = 0;
333
+
334
+ foreach ( $groups as $group_id => $subgroups ) {
335
+ $data['groupings'][ $i ]['id'] = $group_id;
336
+ $data['groupings'][ $i ]['groups'] = $subgroups;
337
+ $i++;
338
+ }
339
+ }
340
+ }
341
+ }
342
+
343
+ // Subscribe
344
  try {
345
  $api->lists->subscribe( $settings->list_id, $email, $data, 'html', (bool) $double, true, false, (bool) $welcome );
346
  }
classes/class-fl-builder-services.php CHANGED
@@ -15,6 +15,11 @@ final class FLBuilderServices {
15
  * @var array $services_data
16
  */
17
  static private $services_data = array(
 
 
 
 
 
18
  'aweber' => array(
19
  'type' => 'autoresponder',
20
  'name' => 'AWeber',
@@ -30,6 +35,11 @@ final class FLBuilderServices {
30
  'name' => 'Constant Contact',
31
  'class' => 'FLBuilderServiceConstantContact'
32
  ),
 
 
 
 
 
33
  'getresponse' => array(
34
  'type' => 'autoresponder',
35
  'name' => 'GetResponse',
15
  * @var array $services_data
16
  */
17
  static private $services_data = array(
18
+ 'activecampaign' => array(
19
+ 'type' => 'autoresponder',
20
+ 'name' => 'ActiveCampaign',
21
+ 'class' => 'FLBuilderServiceActiveCampaign'
22
+ ),
23
  'aweber' => array(
24
  'type' => 'autoresponder',
25
  'name' => 'AWeber',
35
  'name' => 'Constant Contact',
36
  'class' => 'FLBuilderServiceConstantContact'
37
  ),
38
+ 'email-address' => array(
39
+ 'type' => 'autoresponder',
40
+ 'name' => 'Email Address',
41
+ 'class' => 'FLBuilderServiceEmailAddress'
42
+ ),
43
  'getresponse' => array(
44
  'type' => 'autoresponder',
45
  'name' => 'GetResponse',
classes/class-fl-builder.php CHANGED
@@ -378,8 +378,10 @@ final class FLBuilder {
378
  if(!file_exists($asset_info['css'])) {
379
  FLBuilder::render_css();
380
  }
 
 
381
 
382
- wp_enqueue_style('fl-builder-layout-' . $post_id, $asset_info['css_url'], array(), $asset_ver);
383
 
384
  // Enqueue main JS
385
  if(!file_exists($asset_info['js'])) {
@@ -1529,6 +1531,11 @@ final class FLBuilder {
1529
 
1530
  // Global css
1531
  $css = file_get_contents(FL_BUILDER_DIR . '/css/fl-builder-layout.css');
 
 
 
 
 
1532
 
1533
  // Responsive css
1534
  if($global_settings->responsive_enabled) {
@@ -1732,18 +1739,54 @@ final class FLBuilder {
1732
  $settings = $row->settings;
1733
  $positions = '';
1734
  $css = '';
1735
-
1736
- if($settings->margin_top != '' || $settings->border_top != '') {
1737
- $positions .= 'top:' . ($settings->margin_top + $settings->border_top) . 'px;';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1738
  }
1739
- if($settings->margin_bottom != ''|| $settings->border_bottom != '') {
1740
- $positions .= 'bottom:' . ($settings->margin_bottom + $settings->border_bottom) . 'px;';
1741
  }
1742
- if($settings->margin_left != ''|| $settings->border_left != '') {
1743
- $positions .= 'left:' . ($settings->margin_left + $settings->border_left) . 'px;';
1744
  }
1745
- if($settings->margin_right != ''|| $settings->border_right != '') {
1746
- $positions .= 'right:' . ($settings->margin_right + $settings->border_right) . 'px;';
1747
  }
1748
  if($positions != '') {
1749
  $css .= '.fl-node-' . $row->node . ' .fl-bg-video {' . $positions . '}';
@@ -1767,17 +1810,20 @@ final class FLBuilder {
1767
  $positions = '';
1768
  $css = '';
1769
 
1770
- if($settings->border_top != '') {
1771
- $positions .= 'top:' . $settings->border_top . 'px;';
1772
- }
1773
- if($settings->border_bottom != '') {
1774
- $positions .= 'bottom:' . $settings->border_bottom . 'px;';
1775
- }
1776
- if($positions != '') {
1777
- $css .= '@media (max-width: '. $global_settings->responsive_breakpoint .'px) { ';
1778
- $css .= '.fl-node-' . $row->node . ' .fl-bg-video {' . $positions . '}';
1779
- $css .= '.fl-node-' . $row->node . ' .fl-bg-slideshow {' . $positions . '}';
1780
- $css .= ' }';
 
 
 
1781
  }
1782
 
1783
  return $css;
378
  if(!file_exists($asset_info['css'])) {
379
  FLBuilder::render_css();
380
  }
381
+
382
+ $deps = apply_filters( 'fl_builder_layout_style_dependencies', array() );
383
 
384
+ wp_enqueue_style('fl-builder-layout-' . $post_id, $asset_info['css_url'], $deps, $asset_ver);
385
 
386
  // Enqueue main JS
387
  if(!file_exists($asset_info['js'])) {
1531
 
1532
  // Global css
1533
  $css = file_get_contents(FL_BUILDER_DIR . '/css/fl-builder-layout.css');
1534
+
1535
+ // Global RTL css
1536
+ if(is_rtl()) {
1537
+ $css .= file_get_contents(FL_BUILDER_DIR . '/css/fl-builder-layout-rtl.css');
1538
+ }
1539
 
1540
  // Responsive css
1541
  if($global_settings->responsive_enabled) {
1739
  $settings = $row->settings;
1740
  $positions = '';
1741
  $css = '';
1742
+ $top = 0;
1743
+ $bottom = 0;
1744
+ $left = 0;
1745
+ $right = 0;
1746
+
1747
+ // Margins
1748
+ if($settings->margin_top != '') {
1749
+ $top += (int)$settings->margin_top;
1750
+ }
1751
+ if($settings->margin_bottom != '') {
1752
+ $bottom += (int)$settings->margin_bottom;
1753
+ }
1754
+ if($settings->margin_left != '') {
1755
+ $left += (int)$settings->margin_left;
1756
+ }
1757
+ if($settings->margin_right != '') {
1758
+ $right += (int)$settings->margin_right;
1759
+ }
1760
+
1761
+ // Borders
1762
+ if($settings->border_type != '') {
1763
+
1764
+ if($settings->border_top != '') {
1765
+ $top += (int)$settings->border_top;
1766
+ }
1767
+ if($settings->border_bottom != '') {
1768
+ $bottom += (int)$settings->border_bottom;
1769
+ }
1770
+ if($settings->border_left != '') {
1771
+ $left += (int)$settings->border_left;
1772
+ }
1773
+ if($settings->border_right != '') {
1774
+ $right += (int)$settings->border_right;
1775
+ }
1776
+ }
1777
+
1778
+ // CSS
1779
+ if($top > 0) {
1780
+ $positions .= 'top:' . $top . 'px;';
1781
  }
1782
+ if($bottom > 0) {
1783
+ $positions .= 'bottom:' . $bottom . 'px;';
1784
  }
1785
+ if($left > 0) {
1786
+ $positions .= 'left:' . $left . 'px;';
1787
  }
1788
+ if($right > 0) {
1789
+ $positions .= 'right:' . $right . 'px;';
1790
  }
1791
  if($positions != '') {
1792
  $css .= '.fl-node-' . $row->node . ' .fl-bg-video {' . $positions . '}';
1810
  $positions = '';
1811
  $css = '';
1812
 
1813
+ if ($settings->border_type != '') {
1814
+
1815
+ if($settings->border_top != '') {
1816
+ $positions .= 'top:' . $settings->border_top . 'px;';
1817
+ }
1818
+ if($settings->border_bottom != '') {
1819
+ $positions .= 'bottom:' . $settings->border_bottom . 'px;';
1820
+ }
1821
+ if($positions != '') {
1822
+ $css .= '@media (max-width: '. $global_settings->responsive_breakpoint .'px) { ';
1823
+ $css .= '.fl-node-' . $row->node . ' .fl-bg-video {' . $positions . '}';
1824
+ $css .= '.fl-node-' . $row->node . ' .fl-bg-slideshow {' . $positions . '}';
1825
+ $css .= ' }';
1826
+ }
1827
  }
1828
 
1829
  return $css;
css/fl-builder-layout-rtl.css ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ /* Columns
2
+ ------------------------------------------------------ */
3
+
4
+ .fl-col {
5
+ float: right;
6
+ }
css/fl-builder.css CHANGED
@@ -702,6 +702,7 @@ form.fl-builder-settings {
702
  .fl-builder-settings-tabs a {
703
  color: #999;
704
  display: inline-block;
 
705
  padding: 10px 20px;
706
  text-decoration: none;
707
  }
@@ -823,6 +824,9 @@ form.fl-builder-settings {
823
  background: transparent;
824
  border-color: #aaa;
825
  }
 
 
 
826
  .fl-builder-settings-fields ::-webkit-input-placeholder { /* WebKit browsers */
827
  color: #999 !important;
828
  }
702
  .fl-builder-settings-tabs a {
703
  color: #999;
704
  display: inline-block;
705
+ margin: 0;
706
  padding: 10px 20px;
707
  text-decoration: none;
708
  }
824
  background: transparent;
825
  border-color: #aaa;
826
  }
827
+ .fl-builder-settings-fields select[multiple] {
828
+ height: 60px;
829
+ }
830
  .fl-builder-settings-fields ::-webkit-input-placeholder { /* WebKit browsers */
831
  color: #999 !important;
832
  }
fl-builder.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Beaver Builder Plugin (Lite Version)
4
  * Plugin URI: https://www.wpbeaverbuilder.com/?utm_source=external&utm_medium=builder&utm_campaign=plugins-page
5
  * Description: A drag and drop frontend WordPress page builder plugin that works with almost any theme!
6
- * Version: 1.5.9
7
  * Author: The Beaver Builder Team
8
  * Author URI: https://www.wpbeaverbuilder.com/?utm_source=external&utm_medium=builder&utm_campaign=plugins-page
9
  * Copyright: (c) 2014 Beaver Builder
@@ -11,7 +11,7 @@
11
  * License URI: http://www.gnu.org/licenses/gpl-2.0.html
12
  * Text Domain: fl-builder
13
  */
14
- define('FL_BUILDER_VERSION', '1.5.9');
15
  define('FL_BUILDER_DIR', plugin_dir_path(__FILE__));
16
  define('FL_BUILDER_URL', plugins_url('/', __FILE__));
17
  define('FL_BUILDER_LITE', true);
3
  * Plugin Name: Beaver Builder Plugin (Lite Version)
4
  * Plugin URI: https://www.wpbeaverbuilder.com/?utm_source=external&utm_medium=builder&utm_campaign=plugins-page
5
  * Description: A drag and drop frontend WordPress page builder plugin that works with almost any theme!
6
+ * Version: 1.6.0.1
7
  * Author: The Beaver Builder Team
8
  * Author URI: https://www.wpbeaverbuilder.com/?utm_source=external&utm_medium=builder&utm_campaign=plugins-page
9
  * Copyright: (c) 2014 Beaver Builder
11
  * License URI: http://www.gnu.org/licenses/gpl-2.0.html
12
  * Text Domain: fl-builder
13
  */
14
+ define('FL_BUILDER_VERSION', '1.6.0.1');
15
  define('FL_BUILDER_DIR', plugin_dir_path(__FILE__));
16
  define('FL_BUILDER_URL', plugins_url('/', __FILE__));
17
  define('FL_BUILDER_LITE', true);
includes/column-css.php CHANGED
@@ -2,27 +2,72 @@
2
  width: <?php echo $col->settings->size; ?>%;
3
  }
4
 
5
- <?php if(!empty($col->settings->text_color)) : ?>
6
- .fl-node-<?php echo $col->node; ?>,
7
- .fl-node-<?php echo $col->node; ?> a,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  .fl-node-<?php echo $col->node; ?> h1,
9
  .fl-node-<?php echo $col->node; ?> h2,
10
  .fl-node-<?php echo $col->node; ?> h3,
11
  .fl-node-<?php echo $col->node; ?> h4,
12
  .fl-node-<?php echo $col->node; ?> h5,
13
- .fl-node-<?php echo $col->node; ?> h6 {
 
 
 
 
 
 
14
  color: #<?php echo $col->settings->text_color; ?>;
15
  }
16
  <?php endif; ?>
17
 
18
- <?php if($col->settings->bg_type == 'color' && !empty($col->settings->bg_color)) : ?>
19
  .fl-node-<?php echo $col->node; ?> .fl-col-content {
20
  background-color: #<?php echo $col->settings->bg_color; ?>;
21
  background-color: rgba(<?php echo implode(',', FLBuilderColor::hex_to_rgb($col->settings->bg_color)) ?>, <?php echo $col->settings->bg_opacity/100; ?>);
22
  }
23
  <?php endif; ?>
24
 
25
- <?php if($col->settings->bg_type == 'photo' && !empty($col->settings->bg_image)) : ?>
26
  .fl-node-<?php echo $col->node; ?> .fl-col-content {
27
  background-image: url(<?php echo $col->settings->bg_image_src; ?>);
28
  background-repeat: <?php echo $col->settings->bg_repeat; ?>;
@@ -32,14 +77,14 @@
32
  }
33
  <?php endif; ?>
34
 
35
- <?php if( in_array( $col->settings->bg_type, array('photo') ) && ! empty( $col->settings->bg_overlay_color ) ) : ?>
36
  .fl-node-<?php echo $col->node; ?> .fl-col-content:after {
37
  background-color: #<?php echo $col->settings->bg_overlay_color; ?>;
38
  background-color: rgba(<?php echo implode( ',', FLBuilderColor::hex_to_rgb( $col->settings->bg_overlay_color ) ) ?>, <?php echo $col->settings->bg_overlay_opacity/100; ?>);
39
  }
40
  <?php endif; ?>
41
 
42
- <?php if(!empty($col->settings->border_type)) : ?>
43
  .fl-builder-content .fl-node-<?php echo $col->node; ?> .fl-col-content {
44
  border-style: <?php echo $col->settings->border_type; ?>;
45
  border-color: #<?php echo $col->settings->border_color; ?>;
@@ -51,7 +96,7 @@
51
  }
52
  <?php endif; ?>
53
 
54
- <?php if($global_settings->responsive_enabled) : ?>
55
 
56
  <?php if($col->settings->medium_size == 'custom') : ?>
57
  @media(max-width: <?php echo $global_settings->medium_breakpoint; ?>px) {
2
  width: <?php echo $col->settings->size; ?>%;
3
  }
4
 
5
+ <?php if(!empty($col->settings->text_color)) : // Text Color ?>
6
+ .fl-node-<?php echo $col->node; ?> {
7
+ color: #<?php echo $col->settings->text_color; ?>;
8
+ }
9
+ <?php endif; ?>
10
+
11
+ <?php if(!empty($col->settings->link_color)) : // Link Color ?>
12
+ .fl-node-<?php echo $col->node; ?> a {
13
+ color: #<?php echo $col->settings->link_color; ?>;
14
+ }
15
+ <?php elseif(!empty($col->settings->text_color)) : ?>
16
+ .fl-node-<?php echo $col->node; ?> a {
17
+ color: #<?php echo $col->settings->text_color; ?>;
18
+ }
19
+ <?php endif; ?>
20
+
21
+ <?php if(!empty($col->settings->hover_color)) : // Link Hover Color ?>
22
+ .fl-node-<?php echo $col->node; ?> a:hover {
23
+ color: #<?php echo $col->settings->hover_color; ?>;
24
+ }
25
+ <?php elseif(!empty($col->settings->text_color)) : ?>
26
+ .fl-node-<?php echo $col->node; ?> a:hover {
27
+ color: #<?php echo $col->settings->text_color; ?>;
28
+ }
29
+ <?php endif; ?>
30
+
31
+ <?php if(!empty($col->settings->heading_color)) : // Heading Color ?>
32
+ .fl-node-<?php echo $col->node; ?> h1,
33
+ .fl-node-<?php echo $col->node; ?> h2,
34
+ .fl-node-<?php echo $col->node; ?> h3,
35
+ .fl-node-<?php echo $col->node; ?> h4,
36
+ .fl-node-<?php echo $col->node; ?> h5,
37
+ .fl-node-<?php echo $col->node; ?> h6,
38
+ .fl-node-<?php echo $col->node; ?> h1 a,
39
+ .fl-node-<?php echo $col->node; ?> h2 a,
40
+ .fl-node-<?php echo $col->node; ?> h3 a,
41
+ .fl-node-<?php echo $col->node; ?> h4 a,
42
+ .fl-node-<?php echo $col->node; ?> h5 a,
43
+ .fl-node-<?php echo $col->node; ?> h6 a {
44
+ color: #<?php echo $col->settings->heading_color; ?>;
45
+ }
46
+ <?php elseif(!empty($col->settings->text_color)) : ?>
47
  .fl-node-<?php echo $col->node; ?> h1,
48
  .fl-node-<?php echo $col->node; ?> h2,
49
  .fl-node-<?php echo $col->node; ?> h3,
50
  .fl-node-<?php echo $col->node; ?> h4,
51
  .fl-node-<?php echo $col->node; ?> h5,
52
+ .fl-node-<?php echo $col->node; ?> h6,
53
+ .fl-node-<?php echo $col->node; ?> h1 a,
54
+ .fl-node-<?php echo $col->node; ?> h2 a,
55
+ .fl-node-<?php echo $col->node; ?> h3 a,
56
+ .fl-node-<?php echo $col->node; ?> h4 a,
57
+ .fl-node-<?php echo $col->node; ?> h5 a,
58
+ .fl-node-<?php echo $col->node; ?> h6 a {
59
  color: #<?php echo $col->settings->text_color; ?>;
60
  }
61
  <?php endif; ?>
62
 
63
+ <?php if($col->settings->bg_type == 'color' && !empty($col->settings->bg_color)) : // Background Color ?>
64
  .fl-node-<?php echo $col->node; ?> .fl-col-content {
65
  background-color: #<?php echo $col->settings->bg_color; ?>;
66
  background-color: rgba(<?php echo implode(',', FLBuilderColor::hex_to_rgb($col->settings->bg_color)) ?>, <?php echo $col->settings->bg_opacity/100; ?>);
67
  }
68
  <?php endif; ?>
69
 
70
+ <?php if($col->settings->bg_type == 'photo' && !empty($col->settings->bg_image)) : // Background Image ?>
71
  .fl-node-<?php echo $col->node; ?> .fl-col-content {
72
  background-image: url(<?php echo $col->settings->bg_image_src; ?>);
73
  background-repeat: <?php echo $col->settings->bg_repeat; ?>;
77
  }
78
  <?php endif; ?>
79
 
80
+ <?php if( in_array( $col->settings->bg_type, array('photo') ) && ! empty( $col->settings->bg_overlay_color ) ) : // Background Overlay Color ?>
81
  .fl-node-<?php echo $col->node; ?> .fl-col-content:after {
82
  background-color: #<?php echo $col->settings->bg_overlay_color; ?>;
83
  background-color: rgba(<?php echo implode( ',', FLBuilderColor::hex_to_rgb( $col->settings->bg_overlay_color ) ) ?>, <?php echo $col->settings->bg_overlay_opacity/100; ?>);
84
  }
85
  <?php endif; ?>
86
 
87
+ <?php if(!empty($col->settings->border_type)) : // Border ?>
88
  .fl-builder-content .fl-node-<?php echo $col->node; ?> .fl-col-content {
89
  border-style: <?php echo $col->settings->border_type; ?>;
90
  border-color: #<?php echo $col->settings->border_color; ?>;
96
  }
97
  <?php endif; ?>
98
 
99
+ <?php if($global_settings->responsive_enabled) : // Responsive Sizes ?>
100
 
101
  <?php if($col->settings->medium_size == 'custom') : ?>
102
  @media(max-width: <?php echo $global_settings->medium_breakpoint; ?>px) {
includes/column-settings.php CHANGED
@@ -32,6 +32,30 @@ FLBuilder::register_settings_form('col', array(
32
  'preview' => array(
33
  'type' => 'none'
34
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  )
36
  )
37
  ),
32
  'preview' => array(
33
  'type' => 'none'
34
  )
35
+ ),
36
+ 'link_color' => array(
37
+ 'type' => 'color',
38
+ 'label' => __('Link Color', 'fl-builder'),
39
+ 'show_reset' => true,
40
+ 'preview' => array(
41
+ 'type' => 'none'
42
+ )
43
+ ),
44
+ 'hover_color' => array(
45
+ 'type' => 'color',
46
+ 'label' => __('Link Hover Color', 'fl-builder'),
47
+ 'show_reset' => true,
48
+ 'preview' => array(
49
+ 'type' => 'none'
50
+ )
51
+ ),
52
+ 'heading_color' => array(
53
+ 'type' => 'color',
54
+ 'label' => __('Heading Color', 'fl-builder'),
55
+ 'show_reset' => true,
56
+ 'preview' => array(
57
+ 'type' => 'none'
58
+ )
59
  )
60
  )
61
  ),
includes/field-editor.php CHANGED
@@ -8,7 +8,7 @@
8
 
9
  global $wp_version;
10
 
11
- $editor_id = 'flrich' . time() . '_' . $name;;
12
 
13
  wp_editor($value, $editor_id, array(
14
  'media_buttons' => isset($field['media_buttons']) ? $field['media_buttons'] : true,
8
 
9
  global $wp_version;
10
 
11
+ $editor_id = 'flrich' . time() . '_' . $name;
12
 
13
  wp_editor($value, $editor_id, array(
14
  'media_buttons' => isset($field['media_buttons']) ? $field['media_buttons'] : true,
includes/field-multiple-photos.php CHANGED
@@ -1,17 +1,26 @@
1
- <div class="fl-multiple-photos-field fl-builder-custom-field<?php if(empty($value)) echo ' fl-multiple-photos-empty'; if(isset($field['class'])) echo ' ' . $field['class']; ?>">
2
- <div class="fl-multiple-photos-count">
3
- <?php
4
-
5
- $count = is_array($value) ? count($value) : false;
6
 
7
- if ( $count ) {
8
- printf( _n( '1 Photo Selected', '%d Photos Selected', $count, 'fl-builder' ), $count );
 
 
 
 
 
 
9
  }
10
-
11
- ?>
 
 
 
 
 
 
 
12
  </div>
13
  <a class="fl-multiple-photos-select" href="javascript:void(0);" onclick="return false;"><?php _e('Create Gallery', 'fl-builder'); ?></a>
14
  <a class="fl-multiple-photos-edit" href="javascript:void(0);" onclick="return false;"><?php _e('Edit Gallery', 'fl-builder'); ?></a>
15
  <a class="fl-multiple-photos-add" href="javascript:void(0);" onclick="return false;"><?php _e('Add Photos', 'fl-builder'); ?></a>
16
- <input name="<?php echo $name; ?>" type="hidden" value='<?php if(!empty($value)) echo json_encode($value); ?>' />
17
  </div>
1
+ <?php
 
 
 
 
2
 
3
+ // Normalize the value so we have an array.
4
+ if ( ! empty( $value ) && is_string( $value ) ) {
5
+
6
+ $value = json_decode( $value );
7
+
8
+ // Older versions might be double encoded.
9
+ if ( is_string( $value ) ) {
10
+ $value = json_decode( $value );
11
  }
12
+ }
13
+ else if ( empty( $value ) ) {
14
+ $value = array();
15
+ }
16
+
17
+ ?>
18
+ <div class="fl-multiple-photos-field fl-builder-custom-field<?php if ( empty( $value ) ) echo ' fl-multiple-photos-empty'; if ( isset( $field['class'] ) ) echo ' ' . $field['class']; ?>">
19
+ <div class="fl-multiple-photos-count">
20
+ <?php printf( _n( '1 Photo Selected', '%d Photos Selected', count( $value ), 'fl-builder' ), count( $value ) ); ?>
21
  </div>
22
  <a class="fl-multiple-photos-select" href="javascript:void(0);" onclick="return false;"><?php _e('Create Gallery', 'fl-builder'); ?></a>
23
  <a class="fl-multiple-photos-edit" href="javascript:void(0);" onclick="return false;"><?php _e('Edit Gallery', 'fl-builder'); ?></a>
24
  <a class="fl-multiple-photos-add" href="javascript:void(0);" onclick="return false;"><?php _e('Add Photos', 'fl-builder'); ?></a>
25
+ <input name="<?php echo $name; ?>" type="hidden" value='<?php if ( ! empty( $value ) ) echo json_encode( $value ); ?>' />
26
  </div>
includes/field-select.php CHANGED
@@ -1,15 +1,25 @@
1
- <select name="<?php echo $name; ?>"<?php if(isset($field['class'])) echo ' class="'. $field['class'] .'"'; if(isset($field['toggle'])) echo "data-toggle='". json_encode($field['toggle']) ."'"; if(isset($field['hide'])) echo "data-hide='". json_encode($field['hide']) ."'"; if(isset($field['trigger'])) echo "data-trigger='". json_encode($field['trigger']) ."'"; ?>>
2
  <?php
3
 
4
- foreach($field['options'] as $key => $val) :
5
 
6
- $label = is_array($val) ? $val['label'] : $val;
7
-
8
- if(is_array($val) && isset($val['premium']) && $val['premium'] && FL_BUILDER_LITE === true) {
9
  continue;
10
  }
 
 
 
 
 
 
 
 
 
 
 
 
11
 
12
  ?>
13
- <option value="<?php echo $key; ?>" <?php selected($value, $key); ?>><?php echo $label; ?></option>
14
  <?php endforeach; ?>
15
  </select>
1
+ <select name="<?php echo $name; if(isset($field['multi-select'])) echo '[]'; ?>"<?php if(isset($field['class'])) echo ' class="'. $field['class'] .'"'; if(isset($field['multi-select'])) echo ' multiple '; if(isset($field['toggle'])) echo "data-toggle='". json_encode($field['toggle']) ."'"; if(isset($field['hide'])) echo "data-hide='". json_encode($field['hide']) ."'"; if(isset($field['trigger'])) echo "data-trigger='". json_encode($field['trigger']) ."'"; ?>>
2
  <?php
3
 
4
+ foreach ( $field['options'] as $option_key => $option_val ) :
5
 
6
+ if ( is_array( $option_val ) && isset( $option_val['premium' ] ) && $option_val['premium'] && true === FL_BUILDER_LITE ) {
 
 
7
  continue;
8
  }
9
+
10
+ $label = is_array( $option_val ) ? $option_val['label'] : $option_val;
11
+
12
+ if ( is_array( $value ) && in_array( $option_key, $value ) ) {
13
+ $selected = ' selected="selected"';
14
+ }
15
+ else if ( ! is_array( $value ) && selected( $value, $option_key, true ) ) {
16
+ $selected = ' selected="selected"';
17
+ }
18
+ else {
19
+ $selected = '';
20
+ }
21
 
22
  ?>
23
+ <option value="<?php echo $option_key; ?>" <?php echo $selected; ?>><?php echo $label; ?></option>
24
  <?php endforeach; ?>
25
  </select>
includes/row-css.php CHANGED
@@ -1,24 +1,69 @@
1
- <?php if(!empty($row->settings->text_color)) : ?>
2
- .fl-node-<?php echo $row->node; ?>,
3
- .fl-node-<?php echo $row->node; ?> a,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  .fl-node-<?php echo $row->node; ?> h1,
5
  .fl-node-<?php echo $row->node; ?> h2,
6
  .fl-node-<?php echo $row->node; ?> h3,
7
  .fl-node-<?php echo $row->node; ?> h4,
8
  .fl-node-<?php echo $row->node; ?> h5,
9
- .fl-node-<?php echo $row->node; ?> h6 {
 
 
 
 
 
 
10
  color: #<?php echo $row->settings->text_color; ?>;
11
  }
12
  <?php endif; ?>
13
 
14
- <?php if($row->settings->bg_type == 'color' && !empty($row->settings->bg_color)) : ?>
15
  .fl-node-<?php echo $row->node; ?> .fl-row-content-wrap {
16
  background-color: #<?php echo $row->settings->bg_color; ?>;
17
  background-color: rgba(<?php echo implode(',', FLBuilderColor::hex_to_rgb($row->settings->bg_color)) ?>, <?php echo $row->settings->bg_opacity/100; ?>);
18
  }
19
  <?php endif; ?>
20
 
21
- <?php if($row->settings->bg_type == 'photo' && !empty($row->settings->bg_image)) : ?>
22
  .fl-node-<?php echo $row->node; ?> .fl-row-content-wrap {
23
  background-image: url(<?php echo $row->settings->bg_image_src; ?>);
24
  background-repeat: <?php echo $row->settings->bg_repeat; ?>;
@@ -28,14 +73,14 @@
28
  }
29
  <?php endif; ?>
30
 
31
- <?php if( in_array( $row->settings->bg_type, array('photo', 'parallax', 'slideshow', 'video') ) && !empty($row->settings->bg_overlay_color)) : ?>
32
  .fl-node-<?php echo $row->node; ?> .fl-row-content-wrap:after {
33
  background-color: #<?php echo $row->settings->bg_overlay_color; ?>;
34
  background-color: rgba(<?php echo implode(',', FLBuilderColor::hex_to_rgb($row->settings->bg_overlay_color)) ?>, <?php echo $row->settings->bg_overlay_opacity/100; ?>);
35
  }
36
  <?php endif; ?>
37
 
38
- <?php if($row->settings->bg_type == 'parallax' && !empty($row->settings->bg_parallax_image_src)) : ?>
39
  .fl-node-<?php echo $row->node; ?> .fl-row-content-wrap {
40
  background-repeat: no-repeat;
41
  background-position: center center;
@@ -49,7 +94,7 @@
49
  }
50
  <?php endif; ?>
51
 
52
- <?php if(!empty($row->settings->border_type)) : ?>
53
  .fl-node-<?php echo $row->node; ?> .fl-row-content-wrap {
54
  border-style: <?php echo $row->settings->border_type; ?>;
55
  border-color: #<?php echo $row->settings->border_color; ?>;
1
+ <?php if(!empty($row->settings->text_color)) : // Text Color ?>
2
+ .fl-node-<?php echo $row->node; ?> {
3
+ color: #<?php echo $row->settings->text_color; ?>;
4
+ }
5
+ <?php endif; ?>
6
+
7
+ <?php if(!empty($row->settings->link_color)) : // Link Color ?>
8
+ .fl-node-<?php echo $row->node; ?> a {
9
+ color: #<?php echo $row->settings->link_color; ?>;
10
+ }
11
+ <?php elseif(!empty($row->settings->text_color)) : ?>
12
+ .fl-node-<?php echo $row->node; ?> a {
13
+ color: #<?php echo $row->settings->text_color; ?>;
14
+ }
15
+ <?php endif; ?>
16
+
17
+ <?php if(!empty($row->settings->hover_color)) : // Link Hover Color ?>
18
+ .fl-node-<?php echo $row->node; ?> a:hover {
19
+ color: #<?php echo $row->settings->hover_color; ?>;
20
+ }
21
+ <?php elseif(!empty($row->settings->text_color)) : ?>
22
+ .fl-node-<?php echo $row->node; ?> a:hover {
23
+ color: #<?php echo $row->settings->text_color; ?>;
24
+ }
25
+ <?php endif; ?>
26
+
27
+ <?php if(!empty($row->settings->heading_color)) : // Heading Color ?>
28
+ .fl-node-<?php echo $row->node; ?> h1,
29
+ .fl-node-<?php echo $row->node; ?> h2,
30
+ .fl-node-<?php echo $row->node; ?> h3,
31
+ .fl-node-<?php echo $row->node; ?> h4,
32
+ .fl-node-<?php echo $row->node; ?> h5,
33
+ .fl-node-<?php echo $row->node; ?> h6,
34
+ .fl-node-<?php echo $row->node; ?> h1 a,
35
+ .fl-node-<?php echo $row->node; ?> h2 a,
36
+ .fl-node-<?php echo $row->node; ?> h3 a,
37
+ .fl-node-<?php echo $row->node; ?> h4 a,
38
+ .fl-node-<?php echo $row->node; ?> h5 a,
39
+ .fl-node-<?php echo $row->node; ?> h6 a {
40
+ color: #<?php echo $row->settings->heading_color; ?>;
41
+ }
42
+ <?php elseif(!empty($row->settings->text_color)) : ?>
43
  .fl-node-<?php echo $row->node; ?> h1,
44
  .fl-node-<?php echo $row->node; ?> h2,
45
  .fl-node-<?php echo $row->node; ?> h3,
46
  .fl-node-<?php echo $row->node; ?> h4,
47
  .fl-node-<?php echo $row->node; ?> h5,
48
+ .fl-node-<?php echo $row->node; ?> h6,
49
+ .fl-node-<?php echo $row->node; ?> h1 a,
50
+ .fl-node-<?php echo $row->node; ?> h2 a,
51
+ .fl-node-<?php echo $row->node; ?> h3 a,
52
+ .fl-node-<?php echo $row->node; ?> h4 a,
53
+ .fl-node-<?php echo $row->node; ?> h5 a,
54
+ .fl-node-<?php echo $row->node; ?> h6 a {
55
  color: #<?php echo $row->settings->text_color; ?>;
56
  }
57
  <?php endif; ?>
58
 
59
+ <?php if($row->settings->bg_type == 'color' && !empty($row->settings->bg_color)) : // Background Color ?>
60
  .fl-node-<?php echo $row->node; ?> .fl-row-content-wrap {
61
  background-color: #<?php echo $row->settings->bg_color; ?>;
62
  background-color: rgba(<?php echo implode(',', FLBuilderColor::hex_to_rgb($row->settings->bg_color)) ?>, <?php echo $row->settings->bg_opacity/100; ?>);
63
  }
64
  <?php endif; ?>
65
 
66
+ <?php if($row->settings->bg_type == 'photo' && !empty($row->settings->bg_image)) : // Background Photo ?>
67
  .fl-node-<?php echo $row->node; ?> .fl-row-content-wrap {
68
  background-image: url(<?php echo $row->settings->bg_image_src; ?>);
69
  background-repeat: <?php echo $row->settings->bg_repeat; ?>;
73
  }
74
  <?php endif; ?>
75
 
76
+ <?php if( in_array( $row->settings->bg_type, array('photo', 'parallax', 'slideshow', 'video') ) && !empty($row->settings->bg_overlay_color)) : // Background Color Overlay ?>
77
  .fl-node-<?php echo $row->node; ?> .fl-row-content-wrap:after {
78
  background-color: #<?php echo $row->settings->bg_overlay_color; ?>;
79
  background-color: rgba(<?php echo implode(',', FLBuilderColor::hex_to_rgb($row->settings->bg_overlay_color)) ?>, <?php echo $row->settings->bg_overlay_opacity/100; ?>);
80
  }
81
  <?php endif; ?>
82
 
83
+ <?php if($row->settings->bg_type == 'parallax' && !empty($row->settings->bg_parallax_image_src)) : // Parallax Background ?>
84
  .fl-node-<?php echo $row->node; ?> .fl-row-content-wrap {
85
  background-repeat: no-repeat;
86
  background-position: center center;
94
  }
95
  <?php endif; ?>
96
 
97
+ <?php if(!empty($row->settings->border_type)) : // Border ?>
98
  .fl-node-<?php echo $row->node; ?> .fl-row-content-wrap {
99
  border-style: <?php echo $row->settings->border_type; ?>;
100
  border-color: #<?php echo $row->settings->border_color; ?>;
includes/row-settings.php CHANGED
@@ -44,12 +44,36 @@ FLBuilder::register_settings_form('row', array(
44
  ),
45
  )
46
  ),
47
- 'text' => array(
48
- 'title' => __('Text', 'fl-builder'),
49
  'fields' => array(
50
  'text_color' => array(
51
  'type' => 'color',
52
- 'label' => __('Color', 'fl-builder'),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
  'show_reset' => true,
54
  'preview' => array(
55
  'type' => 'none'
44
  ),
45
  )
46
  ),
47
+ 'colors' => array(
48
+ 'title' => __('Colors', 'fl-builder'),
49
  'fields' => array(
50
  'text_color' => array(
51
  'type' => 'color',
52
+ 'label' => __('Text Color', 'fl-builder'),
53
+ 'show_reset' => true,
54
+ 'preview' => array(
55
+ 'type' => 'none'
56
+ )
57
+ ),
58
+ 'link_color' => array(
59
+ 'type' => 'color',
60
+ 'label' => __('Link Color', 'fl-builder'),
61
+ 'show_reset' => true,
62
+ 'preview' => array(
63
+ 'type' => 'none'
64
+ )
65
+ ),
66
+ 'hover_color' => array(
67
+ 'type' => 'color',
68
+ 'label' => __('Link Hover Color', 'fl-builder'),
69
+ 'show_reset' => true,
70
+ 'preview' => array(
71
+ 'type' => 'none'
72
+ )
73
+ ),
74
+ 'heading_color' => array(
75
+ 'type' => 'color',
76
+ 'label' => __('Heading Color', 'fl-builder'),
77
  'show_reset' => true,
78
  'preview' => array(
79
  'type' => 'none'
includes/updater-config.php CHANGED
@@ -3,7 +3,7 @@
3
  if(class_exists('FLUpdater')) {
4
  FLUpdater::add_product(array(
5
  'name' => 'Beaver Builder Plugin (Lite Version)',
6
- 'version' => '1.5.9',
7
  'slug' => 'bb-plugin',
8
  'type' => 'plugin'
9
  ));
3
  if(class_exists('FLUpdater')) {
4
  FLUpdater::add_product(array(
5
  'name' => 'Beaver Builder Plugin (Lite Version)',
6
+ 'version' => '1.6.0.1',
7
  'slug' => 'bb-plugin',
8
  'type' => 'plugin'
9
  ));
includes/vendor/activecampaign/Account.class.php ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class AC_Account extends ActiveCampaign {
4
+
5
+ public $version;
6
+ public $url_base;
7
+ public $url;
8
+ public $api_key;
9
+
10
+ function __construct($version, $url_base, $url, $api_key) {
11
+ $this->version = $version;
12
+ $this->url_base = $url_base;
13
+ $this->url = $url;
14
+ $this->api_key = $api_key;
15
+ }
16
+
17
+ function add($params, $post_data) {
18
+ $request_url = "{$this->url}&api_action=account_add&api_output={$this->output}";
19
+ $response = $this->curl($request_url, $post_data);
20
+ return $response;
21
+ }
22
+
23
+ function cancel($params) {
24
+ $request_url = "{$this->url}&api_action=account_cancel&api_output={$this->output}&{$params}";
25
+ $response = $this->curl($request_url);
26
+ return $response;
27
+ }
28
+
29
+ function edit($params, $post_data) {
30
+ $request_url = "{$this->url}&api_action=account_edit&api_output={$this->output}";
31
+ $response = $this->curl($request_url, $post_data);
32
+ return $response;
33
+ }
34
+
35
+ function list_($params) {
36
+ $request_url = "{$this->url}&api_action=account_list&api_output={$this->output}&{$params}";
37
+ $response = $this->curl($request_url);
38
+ return $response;
39
+ }
40
+
41
+ function name_check($params) {
42
+ $request_url = "{$this->url}&api_action=account_name_check&api_output={$this->output}&{$params}";
43
+ $response = $this->curl($request_url);
44
+ return $response;
45
+ }
46
+
47
+ function plans($params) {
48
+ $request_url = "{$this->url}&api_action=account_plans&api_output={$this->output}&{$params}";
49
+ $response = $this->curl($request_url);
50
+ return $response;
51
+ }
52
+
53
+ function status($params) {
54
+ $request_url = "{$this->url}&api_action=account_status&api_output={$this->output}&{$params}";
55
+ $response = $this->curl($request_url);
56
+ return $response;
57
+ }
58
+
59
+ function status_set($params) {
60
+ $request_url = "{$this->url}&api_action=account_status_set&api_output={$this->output}&{$params}";
61
+ $response = $this->curl($request_url);
62
+ return $response;
63
+ }
64
+
65
+ function view() {
66
+ $request_url = "{$this->url}&api_action=account_view&api_output={$this->output}";
67
+ $response = $this->curl($request_url);
68
+ return $response;
69
+ }
70
+
71
+ }
72
+
73
+ ?>
includes/vendor/activecampaign/ActiveCampaign.class.php ADDED
@@ -0,0 +1,128 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( !defined("ACTIVECAMPAIGN_URL") || (!defined("ACTIVECAMPAIGN_API_KEY") && !defined("ACTIVECAMPAIGN_API_USER") && !defined("ACTIVECAMPAIGN_API_PASS")) ) {
4
+ require_once(dirname(__FILE__) . "/config.php");
5
+ }
6
+
7
+ require_once("Connector.class.php");
8
+
9
+ class ActiveCampaign extends AC_Connector {
10
+
11
+ public $url_base;
12
+ public $url;
13
+ public $api_key;
14
+ public $track_email;
15
+ public $track_actid;
16
+ public $track_key;
17
+ public $version = 1;
18
+ public $debug = false;
19
+
20
+ function __construct($url, $api_key, $api_user = "", $api_pass = "") {
21
+ $this->url_base = $this->url = $url;
22
+ $this->api_key = $api_key;
23
+ parent::__construct($url, $api_key, $api_user, $api_pass);
24
+ }
25
+
26
+ function version($version) {
27
+ $this->version = (int)$version;
28
+ if ($version == 2) {
29
+ $this->url_base = $this->url_base . "/2";
30
+ }
31
+ }
32
+
33
+ function api($path, $post_data = array()) {
34
+ // IE: "contact/view"
35
+ $components = explode("/", $path);
36
+ $component = $components[0];
37
+
38
+ if (count($components) > 2) {
39
+ // IE: "contact/tag/add?whatever"
40
+ // shift off the first item (the component, IE: "contact").
41
+ array_shift($components);
42
+ // IE: convert to "tag_add?whatever"
43
+ $method_str = implode("_", $components);
44
+ $components = array($component, $method_str);
45
+ }
46
+
47
+ if (preg_match("/\?/", $components[1])) {
48
+ // query params appended to method
49
+ // IE: contact/edit?overwrite=0
50
+ $method_arr = explode("?", $components[1]);
51
+ $method = $method_arr[0];
52
+ $params = $method_arr[1];
53
+ }
54
+ else {
55
+ // just a method provided
56
+ // IE: "contact/view
57
+ if ( isset($components[1]) ) {
58
+ $method = $components[1];
59
+ $params = "";
60
+ }
61
+ else {
62
+ return "Invalid method.";
63
+ }
64
+ }
65
+
66
+ // adjustments
67
+ if ($component == "list") {
68
+ // reserved word
69
+ $component = "list_";
70
+ }
71
+ elseif ($component == "branding") {
72
+ $component = "design";
73
+ }
74
+ elseif ($component == "sync") {
75
+ $component = "contact";
76
+ $method = "sync";
77
+ }
78
+ elseif ($component == "singlesignon") {
79
+ $component = "auth";
80
+ }
81
+
82
+ $class = ucwords($component); // IE: "contact" becomes "Contact"
83
+ $class = "AC_" . $class;
84
+ // IE: new Contact();
85
+
86
+ $add_tracking = false;
87
+ if ($class == "AC_Tracking") $add_tracking = true;
88
+
89
+ $class = new $class($this->version, $this->url_base, $this->url, $this->api_key);
90
+ // IE: $contact->view()
91
+
92
+ if ($add_tracking) {
93
+ $class->track_email = $this->track_email;
94
+ $class->track_actid = $this->track_actid;
95
+ $class->track_key = $this->track_key;
96
+ }
97
+
98
+ if ($method == "list") {
99
+ // reserved word
100
+ $method = "list_";
101
+ }
102
+
103
+ $class->debug = $this->debug;
104
+
105
+ $response = $class->$method($params, $post_data);
106
+ return $response;
107
+ }
108
+
109
+ }
110
+
111
+ require_once("Account.class.php");
112
+ require_once("Auth.class.php");
113
+ require_once("Automation.class.php");
114
+ require_once("Campaign.class.php");
115
+ require_once("Contact.class.php");
116
+ require_once("Deal.class.php");
117
+ require_once("Design.class.php");
118
+ require_once("Form.class.php");
119
+ require_once("Group.class.php");
120
+ require_once("List.class.php");
121
+ require_once("Message.class.php");
122
+ require_once("Settings.class.php");
123
+ require_once("Subscriber.class.php");
124
+ require_once("Tracking.class.php");
125
+ require_once("User.class.php");
126
+ require_once("Webhook.class.php");
127
+
128
+ ?>
includes/vendor/activecampaign/Auth.class.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class AC_Auth extends ActiveCampaign {
4
+
5
+ public $version;
6
+ public $url_base;
7
+ public $url;
8
+ public $api_key;
9
+
10
+ function __construct($version, $url_base, $url, $api_key) {
11
+ $this->version = $version;
12
+ $this->url_base = $url_base;
13
+ $this->url = $url;
14
+ $this->api_key = $api_key;
15
+ }
16
+
17
+ function singlesignon($params) {
18
+ $request_url = "{$this->url}&api_action=singlesignon&api_output={$this->output}&{$params}";
19
+ $response = $this->curl($request_url);
20
+ return $response;
21
+ }
22
+
23
+ }
24
+
25
+ ?>
includes/vendor/activecampaign/Automation.class.php ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class AC_Automation extends ActiveCampaign {
4
+
5
+ public $version;
6
+ public $url_base;
7
+ public $url;
8
+ public $api_key;
9
+
10
+ function __construct($version, $url_base, $url, $api_key) {
11
+ $this->version = $version;
12
+ $this->url_base = $url_base;
13
+ $this->url = $url;
14
+ $this->api_key = $api_key;
15
+ }
16
+
17
+ function list_($params) {
18
+ $request_url = "{$this->url}&api_action=automation_list&api_output={$this->output}&{$params}";
19
+ $response = $this->curl($request_url);
20
+ return $response;
21
+ }
22
+
23
+ function contact_add($params, $post_data) {
24
+ $request_url = "{$this->url}&api_action=automation_contact_add&api_output={$this->output}";
25
+ if ($params) $request_url .= "&{$params}";
26
+ $response = $this->curl($request_url, $post_data);
27
+ return $response;
28
+ }
29
+
30
+ function contact_remove($params, $post_data) {
31
+ $request_url = "{$this->url}&api_action=automation_contact_remove&api_output={$this->output}";
32
+ if ($params) $request_url .= "&{$params}";
33
+ $response = $this->curl($request_url, $post_data);
34
+ return $response;
35
+ }
36
+
37
+ function contact_list($params) {
38
+ $request_url = "{$this->url}&api_action=automation_contact_list&api_output={$this->output}&{$params}";
39
+ $response = $this->curl($request_url);
40
+ return $response;
41
+ }
42
+
43
+ function contact_view($params) {
44
+ $request_url = "{$this->url}&api_action=automation_contact_view&api_output={$this->output}&{$params}";
45
+ $response = $this->curl($request_url);
46
+ return $response;
47
+ }
48
+
49
+ }
50
+
51
+ ?>
includes/vendor/activecampaign/Campaign.class.php ADDED
@@ -0,0 +1,133 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class AC_Campaign extends ActiveCampaign {
4
+
5
+ public $version;
6
+ public $url_base;
7
+ public $url;
8
+ public $api_key;
9
+
10
+ function __construct($version, $url_base, $url, $api_key) {
11
+ $this->version = $version;
12
+ $this->url_base = $url_base;
13
+ $this->url = $url;
14
+ $this->api_key = $api_key;
15
+ }
16
+
17
+ function create($params, $post_data) {
18
+ $request_url = "{$this->url}&api_action=campaign_create&api_output={$this->output}";
19
+ $response = $this->curl($request_url, $post_data);
20
+ return $response;
21
+ }
22
+
23
+ function delete_list($params) {
24
+ $request_url = "{$this->url}&api_action=campaign_delete_list&api_output={$this->output}&{$params}";
25
+ $response = $this->curl($request_url);
26
+ return $response;
27
+ }
28
+
29
+ function delete($params) {
30
+ $request_url = "{$this->url}&api_action=campaign_delete&api_output={$this->output}&{$params}";
31
+ $response = $this->curl($request_url);
32
+ return $response;
33
+ }
34
+
35
+ function list_($params) {
36
+ $request_url = "{$this->url}&api_action=campaign_list&api_output={$this->output}&{$params}";
37
+ $response = $this->curl($request_url);
38
+ return $response;
39
+ }
40
+
41
+ function paginator($params) {
42
+ $request_url = "{$this->url}&api_action=campaign_paginator&api_output={$this->output}&{$params}";
43
+ $response = $this->curl($request_url);
44
+ return $response;
45
+ }
46
+
47
+ function report_bounce_list($params) {
48
+ $request_url = "{$this->url}&api_action=campaign_report_bounce_list&api_output={$this->output}&{$params}";
49
+ $response = $this->curl($request_url);
50
+ return $response;
51
+ }
52
+
53
+ function report_bounce_totals($params) {
54
+ $request_url = "{$this->url}&api_action=campaign_report_bounce_totals&api_output={$this->output}&{$params}";
55
+ $response = $this->curl($request_url);
56
+ return $response;
57
+ }
58
+
59
+ function report_forward_list($params) {
60
+ $request_url = "{$this->url}&api_action=campaign_report_forward_list&api_output={$this->output}&{$params}";
61
+ $response = $this->curl($request_url);
62
+ return $response;
63
+ }
64
+
65
+ function report_forward_totals($params) {
66
+ $request_url = "{$this->url}&api_action=campaign_report_forward_totals&api_output={$this->output}&{$params}";
67
+ $response = $this->curl($request_url);
68
+ return $response;
69
+ }
70
+
71
+ function report_link_list($params) {
72
+ $request_url = "{$this->url}&api_action=campaign_report_link_list&api_output={$this->output}&{$params}";
73
+ $response = $this->curl($request_url);
74
+ return $response;
75
+ }
76
+
77
+ function report_link_totals($params) {
78
+ $request_url = "{$this->url}&api_action=campaign_report_link_totals&api_output={$this->output}&{$params}";
79
+ $response = $this->curl($request_url);
80
+ return $response;
81
+ }
82
+
83
+ function report_open_list($params) {
84
+ $request_url = "{$this->url}&api_action=campaign_report_open_list&api_output={$this->output}&{$params}";
85
+ $response = $this->curl($request_url);
86
+ return $response;
87
+ }
88
+
89
+ function report_open_totals($params) {
90
+ $request_url = "{$this->url}&api_action=campaign_report_open_totals&api_output={$this->output}&{$params}";
91
+ $response = $this->curl($request_url);
92
+ return $response;
93
+ }
94
+
95
+ function report_totals($params) {
96
+ $request_url = "{$this->url}&api_action=campaign_report_totals&api_output={$this->output}&{$params}";
97
+ $response = $this->curl($request_url);
98
+ return $response;
99
+ }
100
+
101
+ function report_unopen_list($params) {
102
+ $request_url = "{$this->url}&api_action=campaign_report_unopen_list&api_output={$this->output}&{$params}";
103
+ $response = $this->curl($request_url);
104
+ return $response;
105
+ }
106
+
107
+ function report_unsubscription_list($params) {
108
+ $request_url = "{$this->url}&api_action=campaign_report_unsubscription_list&api_output={$this->output}&{$params}";
109
+ $response = $this->curl($request_url);
110
+ return $response;
111
+ }
112
+
113
+ function report_unsubscription_totals($params) {
114
+ $request_url = "{$this->url}&api_action=campaign_report_unsubscription_totals&api_output={$this->output}&{$params}";
115
+ $response = $this->curl($request_url);
116
+ return $response;
117
+ }
118
+
119
+ function send($params) {
120
+ $request_url = "{$this->url}&api_action=campaign_send&api_output={$this->output}&{$params}";
121
+ $response = $this->curl($request_url);
122
+ return $response;
123
+ }
124
+
125
+ function status($params) {
126
+ $request_url = "{$this->url}&api_action=campaign_status&api_output={$this->output}&{$params}";
127
+ $response = $this->curl($request_url);
128
+ return $response;
129
+ }
130
+
131
+ }
132
+
133
+ ?>
includes/vendor/activecampaign/Connector.class.php ADDED
@@ -0,0 +1,226 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class AC_Connector {
4
+
5
+ public $url;
6
+ public $api_key;
7
+ public $output = "json";
8
+
9
+ function __construct($url, $api_key, $api_user = "", $api_pass = "") {
10
+ // $api_pass should be md5() already
11
+ $base = "";
12
+ if (!preg_match("/https:\/\/www.activecampaign.com/", $url)) {
13
+ // not a reseller
14
+ $base = "/admin";
15
+ }
16
+ if (preg_match("/\/$/", $url)) {
17
+ // remove trailing slash
18
+ $url = substr($url, 0, strlen($url) - 1);
19
+ }
20
+ if ($api_key) {
21
+ $this->url = "{$url}{$base}/api.php?api_key={$api_key}";
22
+ }
23
+ elseif ($api_user && $api_pass) {
24
+ $this->url = "{$url}{$base}/api.php?api_user={$api_user}&api_pass={$api_pass}";
25
+ }
26
+ $this->api_key = $api_key;
27
+ }
28
+
29
+ public function credentials_test() {
30
+ $test_url = "{$this->url}&api_action=user_me&api_output={$this->output}";
31
+ $r = $this->curl($test_url);
32
+ if (is_object($r) && (int)$r->result_code) {
33
+ // successful
34
+ $r = true;
35
+ }
36
+ else {
37
+ // failed
38
+ $r = false;
39
+ }
40
+ return $r;
41
+ }
42
+
43
+ // debug function (nicely outputs variables)
44
+ public function dbg($var, $continue = 0, $element = "pre", $extra = "") {
45
+ echo "<" . $element . ">";
46
+ echo "Vartype: " . gettype($var) . "\n";
47
+ if ( is_array($var) ) echo "Elements: " . count($var) . "\n";
48
+ elseif ( is_string($var) ) echo "Length: " . strlen($var) . "\n";
49
+ if ($extra) {
50
+ echo $extra . "\n";
51
+ }
52
+ echo "\n";
53
+ print_r($var);
54
+ echo "</" . $element . ">";
55
+ if (!$continue) exit();
56
+ }
57
+
58
+ public function curl($url, $params_data = array(), $verb = "", $custom_method = "") {
59
+ if ($this->version == 1) {
60
+ // find the method from the URL.
61
+ $method = preg_match("/api_action=[^&]*/i", $url, $matches);
62
+ if ($matches) {
63
+ $method = preg_match("/[^=]*$/i", $matches[0], $matches2);
64
+ $method = $matches2[0];
65
+ } elseif ($custom_method) {
66
+ $method = $custom_method;
67
+ }
68
+ } elseif ($this->version == 2) {
69
+ $method = $custom_method;
70
+ $url .= "?api_key=" . $this->api_key;
71
+ }
72
+ $debug_str1 = "";
73
+ $request = curl_init();
74
+ $debug_str1 .= "\$ch = curl_init();\n";
75
+ curl_setopt($request, CURLOPT_HEADER, 0);
76
+ curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
77
+ $debug_str1 .= "curl_setopt(\$ch, CURLOPT_HEADER, 0);\n";
78
+ $debug_str1 .= "curl_setopt(\$ch, CURLOPT_RETURNTRANSFER, true);\n";
79
+ if ($params_data && $verb == "GET") {
80
+ if ($this->version == 2) {
81
+ $url .= "&" . $params_data;
82
+ curl_setopt($request, CURLOPT_URL, $url);
83
+ }
84
+ }
85
+ else {
86
+ curl_setopt($request, CURLOPT_URL, $url);
87
+ if ($params_data && !$verb) {
88
+ // if no verb passed but there IS params data, it's likely POST.
89
+ $verb = "POST";
90
+ } elseif ($params_data && $verb) {
91
+ // $verb is likely "POST" or "PUT".
92
+ } else {
93
+ $verb = "GET";
94
+ }
95
+ }
96
+ $debug_str1 .= "curl_setopt(\$ch, CURLOPT_URL, \"" . $url . "\");\n";
97
+ if ($this->debug) {
98
+ $this->dbg($url, 1, "pre", "Description: Request URL");
99
+ }
100
+ if ($verb == "POST" || $verb == "PUT" || $verb == "DELETE") {
101
+ if ($verb == "PUT") {
102
+ curl_setopt($request, CURLOPT_CUSTOMREQUEST, "PUT");
103
+ $debug_str1 .= "curl_setopt(\$ch, CURLOPT_CUSTOMREQUEST, \"PUT\");\n";
104
+ } elseif ($verb == "DELETE") {
105
+ curl_setopt($request, CURLOPT_CUSTOMREQUEST, "DELETE");
106
+ $debug_str1 .= "curl_setopt(\$ch, CURLOPT_CUSTOMREQUEST, \"DELETE\");\n";
107
+ } else {
108
+ $verb = "POST";
109
+ curl_setopt($request, CURLOPT_POST, 1);
110
+ $debug_str1 .= "curl_setopt(\$ch, CURLOPT_POST, 1);\n";
111
+ }
112
+ $data = "";
113
+ if (is_array($params_data)) {
114
+ foreach($params_data as $key => $value) {
115
+ if (is_array($value)) {
116
+
117
+ if (is_int($key)) {
118
+ // array two levels deep
119
+ foreach ($value as $key_ => $value_) {
120
+ if (is_array($value_)) {
121
+ foreach ($value_ as $k => $v) {
122
+ $k = urlencode($k);
123
+ $data .= "{$key_}[{$key}][{$k}]=" . urlencode($v) . "&";
124
+ }
125
+ }
126
+ else {
127
+ $data .= "{$key_}[{$key}]=" . urlencode($value_) . "&";
128
+ }
129
+ }
130
+ }
131
+ else {
132
+ // IE: [group] => array(2 => 2, 3 => 3)
133
+ // normally we just want the key to be a string, IE: ["group[2]"] => 2
134
+ // but we want to allow passing both formats
135
+ foreach ($value as $k => $v) {
136
+ if (!is_array($v)) {
137
+ $k = urlencode($k);
138
+ $data .= "{$key}[{$k}]=" . urlencode($v) . "&";
139
+ }
140
+ }
141
+ }
142
+
143
+ }
144
+ else {
145
+ $data .= "{$key}=" . urlencode($value) . "&";
146
+ }
147
+ }
148
+ }
149
+ else {
150
+ // not an array - perhaps serialized or JSON string?
151
+ // just pass it as data
152
+ $data = "data={$params_data}";
153
+ }
154
+
155
+ $data = rtrim($data, "& ");
156
+ curl_setopt($request, CURLOPT_HTTPHEADER, array("Expect:"));
157
+ $debug_str1 .= "curl_setopt(\$ch, CURLOPT_HTTPHEADER, array(\"Expect:\"));\n";
158
+ if ($this->debug) {
159
+ curl_setopt($request, CURLINFO_HEADER_OUT, 1);
160
+ $debug_str1 .= "curl_setopt(\$ch, CURLINFO_HEADER_OUT, 1);\n";
161
+ $this->dbg($data, 1, "pre", "Description: POST data");
162
+ }
163
+ curl_setopt($request, CURLOPT_POSTFIELDS, $data);
164
+ $debug_str1 .= "curl_setopt(\$ch, CURLOPT_POSTFIELDS, \"" . $data . "\");\n";
165
+ }
166
+ curl_setopt($request, CURLOPT_SSL_VERIFYPEER, false);
167
+ curl_setopt($request, CURLOPT_SSL_VERIFYHOST, 0);
168
+ curl_setopt($request, CURLOPT_FOLLOWLOCATION, true);
169
+ $debug_str1 .= "curl_setopt(\$ch, CURLOPT_SSL_VERIFYPEER, false);\n";
170
+ $debug_str1 .= "curl_setopt(\$ch, CURLOPT_SSL_VERIFYHOST, 0);\n";
171
+ $debug_str1 .= "curl_setopt(\$ch, CURLOPT_FOLLOWLOCATION, true);\n";
172
+ $response = curl_exec($request);
173
+ $debug_str1 .= "curl_exec(\$ch);\n";
174
+ if ($this->debug) {
175
+ $this->dbg($response, 1, "pre", "Description: Raw response");
176
+ }
177
+ $http_code = curl_getinfo($request, CURLINFO_HTTP_CODE);
178
+ $debug_str1 .= "\$http_code = curl_getinfo(\$ch, CURLINFO_HTTP_CODE);\n";
179
+ if ($this->debug) {
180
+ $this->dbg($http_code, 1, "pre", "Description: Response HTTP code");
181
+ $request_headers = curl_getinfo($request, CURLINFO_HEADER_OUT);
182
+ $debug_str1 .= "\$request_headers = curl_getinfo(\$ch, CURLINFO_HEADER_OUT);\n";
183
+ $this->dbg($request_headers, 1, "pre", "Description: Request headers");
184
+ }
185
+ curl_close($request);
186
+ $debug_str1 .= "curl_close(\$ch);\n";
187
+ $object = json_decode($response);
188
+ if ($this->debug) {
189
+ $this->dbg($object, 1, "pre", "Description: Response object (json_decode)");
190
+ }
191
+ if ( !is_object($object) || (!isset($object->result_code) && !isset($object->succeeded) && !isset($object->success)) ) {
192
+ // add methods that only return a string
193
+ $string_responses = array("tracking_event_remove", "contact_list", "form_html", "tracking_site_status", "tracking_event_status", "tracking_whitelist", "tracking_log", "tracking_site_list", "tracking_event_list");
194
+ if (in_array($method, $string_responses)) {
195
+ return $response;
196
+ }
197
+ // something went wrong
198
+ return "An unexpected problem occurred with the API request. Some causes include: invalid JSON or XML returned. Here is the actual response from the server: ---- " . $response;
199
+ }
200
+
201
+ if ($this->debug) {
202
+ echo "<textarea style='height: 300px; width: 600px;'>" . $debug_str1 . "</textarea>";
203
+ }
204
+
205
+ header("HTTP/1.1 " . $http_code);
206
+ $object->http_code = $http_code;
207
+
208
+ if (isset($object->result_code)) {
209
+ $object->success = $object->result_code;
210
+ if (!(int)$object->result_code) {
211
+ $object->error = $object->result_message;
212
+ }
213
+ }
214
+ elseif (isset($object->succeeded)) {
215
+ // some calls return "succeeded" only
216
+ $object->success = $object->succeeded;
217
+ if (!(int)$object->succeeded) {
218
+ $object->error = $object->message;
219
+ }
220
+ }
221
+ return $object;
222
+ }
223
+
224
+ }
225
+
226
+ ?>
includes/vendor/activecampaign/Contact.class.php ADDED
@@ -0,0 +1,121 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class AC_Contact extends ActiveCampaign {
4
+
5
+ public $version;
6
+ public $url_base;
7
+ public $url;
8
+ public $api_key;
9
+
10
+ function __construct($version, $url_base, $url, $api_key) {
11
+ $this->version = $version;
12
+ $this->url_base = $url_base;
13
+ $this->url = $url;
14
+ $this->api_key = $api_key;
15
+ }
16
+
17
+ function add($params, $post_data) {
18
+ $request_url = "{$this->url}&api_action=contact_add&api_output={$this->output}";
19
+ if ($params) $request_url .= "&{$params}";
20
+ $response = $this->curl($request_url, $post_data);
21
+ return $response;
22
+ }
23
+
24
+ function delete_list($params) {
25
+ $request_url = "{$this->url}&api_action=contact_delete_list&api_output={$this->output}&{$params}";
26
+ $response = $this->curl($request_url);
27
+ return $response;
28
+ }
29
+
30
+ function delete($params) {
31
+ $request_url = "{$this->url}&api_action=contact_delete&api_output={$this->output}&{$params}";
32
+ $response = $this->curl($request_url);
33
+ return $response;
34
+ }
35
+
36
+ function edit($params, $post_data) {
37
+ $request_url = "{$this->url}&api_action=contact_edit&api_output={$this->output}&{$params}";
38
+ $response = $this->curl($request_url, $post_data);
39
+ return $response;
40
+ }
41
+
42
+ function list_($params) {
43
+ if ($this->version == 1) {
44
+ $request_url = "{$this->url}&api_action=contact_list&api_output={$this->output}&{$params}";
45
+ $response = $this->curl($request_url);
46
+ } elseif ($this->version == 2) {
47
+ $request_url = "{$this->url_base}/contact/emails";
48
+ // $params example: offset=0&limit=1000&listid=4
49
+ $response = $this->curl($request_url, $params, "GET", "contact_list");
50
+ }
51
+ return $response;
52
+ }
53
+
54
+ function note_add($params, $post_data) {
55
+ $request_url = "{$this->url}&api_action=contact_note_add&api_output={$this->output}&{$params}";
56
+ $response = $this->curl($request_url, $post_data);
57
+ return $response;
58
+ }
59
+
60
+ function note_edit($params, $post_data) {
61
+ $request_url = "{$this->url}&api_action=contact_note_edit&api_output={$this->output}&{$params}";
62
+ $response = $this->curl($request_url, $post_data);
63
+ return $response;
64
+ }
65
+
66
+ function note_delete($params) {
67
+ $request_url = "{$this->url}&api_action=contact_note_delete&api_output={$this->output}&{$params}";
68
+ $response = $this->curl($request_url);
69
+ return $response;
70
+ }
71
+
72
+ function paginator($params) {
73
+ $request_url = "{$this->url}&api_action=contact_paginator&api_output={$this->output}&{$params}";
74
+ $response = $this->curl($request_url);
75
+ return $response;
76
+ }
77
+
78
+ function sync($params, $post_data) {
79
+ $request_url = "{$this->url}&api_action=contact_sync&api_output={$this->output}";
80
+ if ($params) $request_url .= "&{$params}";
81
+ $response = $this->curl($request_url, $post_data);
82
+ return $response;
83
+ }
84
+
85
+ function tag_add($params, $post_data) {
86
+ $request_url = "{$this->url}&api_action=contact_tag_add&api_output={$this->output}";
87
+ if ($params) $request_url .= "&{$params}";
88
+ $response = $this->curl($request_url, $post_data);
89
+ return $response;
90
+ }
91
+
92
+ function tag_remove($params, $post_data) {
93
+ $request_url = "{$this->url}&api_action=contact_tag_remove&api_output={$this->output}";
94
+ if ($params) $request_url .= "&{$params}";
95
+ $response = $this->curl($request_url, $post_data);
96
+ return $response;
97
+ }
98
+
99
+ function view($params) {
100
+ // can be a contact ID, email, or hash
101
+ if (preg_match("/^email=/", $params)) {
102
+ $action = "contact_view_email";
103
+ }
104
+ elseif (preg_match("/^hash=/", $params)) {
105
+ $action = "contact_view_hash";
106
+ }
107
+ elseif (preg_match("/^id=/", $params)) {
108
+ $action = "contact_view";
109
+ }
110
+ else {
111
+ // default
112
+ $action = "contact_view";
113
+ }
114
+ $request_url = "{$this->url}&api_action={$action}&api_output={$this->output}&{$params}";
115
+ $response = $this->curl($request_url);
116
+ return $response;
117
+ }
118
+
119
+ }
120
+
121
+ ?>
includes/vendor/activecampaign/Deal.class.php ADDED
@@ -0,0 +1,139 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class AC_Deal extends ActiveCampaign {
4
+
5
+ public $version;
6
+ public $url_base;
7
+ public $url;
8
+ public $api_key;
9
+
10
+ function __construct($version, $url_base, $url, $api_key) {
11
+ $this->version = $version;
12
+ $this->url_base = $url_base;
13
+ $this->url = $url;
14
+ $this->api_key = $api_key;
15
+ }
16
+
17
+ function add($params, $post_data) {
18
+ $request_url = "{$this->url}&api_action=deal_add&api_output={$this->output}";
19
+ $response = $this->curl($request_url, $post_data);
20
+ return $response;
21
+ }
22
+
23
+ function edit($params, $post_data) {
24
+ $request_url = "{$this->url}&api_action=deal_edit&api_output={$this->output}";
25
+ $response = $this->curl($request_url, $post_data);
26
+ return $response;
27
+ }
28
+
29
+ function delete($params, $post_data) {
30
+ $request_url = "{$this->url}&api_action=deal_delete&api_output={$this->output}";
31
+ $response = $this->curl($request_url, $post_data);
32
+ return $response;
33
+ }
34
+
35
+ function get($params) {
36
+ $request_url = "{$this->url}&api_action=deal_get&api_output={$this->output}&{$params}";
37
+ $response = $this->curl($request_url);
38
+ return $response;
39
+ }
40
+
41
+ function list_($params) {
42
+ $request_url = "{$this->url}&api_action=deal_list&api_output={$this->output}&{$params}";
43
+ $response = $this->curl($request_url);
44
+ return $response;
45
+ }
46
+
47
+ function note_add($params, $post_data) {
48
+ $request_url = "{$this->url}&api_action=deal_note_add&api_output={$this->output}";
49
+ $response = $this->curl($request_url, $post_data);
50
+ return $response;
51
+ }
52
+
53
+ function note_edit($params, $post_data) {
54
+ $request_url = "{$this->url}&api_action=deal_note_edit&api_output={$this->output}";
55
+ $response = $this->curl($request_url, $post_data);
56
+ return $response;
57
+ }
58
+
59
+ function pipeline_add($params, $post_data) {
60
+ $request_url = "{$this->url}&api_action=deal_pipeline_add&api_output={$this->output}";
61
+ $response = $this->curl($request_url, $post_data);
62
+ return $response;
63
+ }
64
+
65
+ function pipeline_edit($params, $post_data) {
66
+ $request_url = "{$this->url}&api_action=deal_pipeline_edit&api_output={$this->output}";
67
+ $response = $this->curl($request_url, $post_data);
68
+ return $response;
69
+ }
70
+
71
+ function pipeline_delete($params, $post_data) {
72
+ $request_url = "{$this->url}&api_action=deal_pipeline_delete&api_output={$this->output}";
73
+ $response = $this->curl($request_url, $post_data);
74
+ return $response;
75
+ }
76
+
77
+ function pipeline_list($params) {
78
+ $request_url = "{$this->url}&api_action=deal_pipeline_list&api_output={$this->output}&{$params}";
79
+ $response = $this->curl($request_url);
80
+ return $response;
81
+ }
82
+
83
+ function stage_add($params, $post_data) {
84
+ $request_url = "{$this->url}&api_action=deal_stage_add&api_output={$this->output}";
85
+ $response = $this->curl($request_url, $post_data);
86
+ return $response;
87
+ }
88
+
89
+ function stage_edit($params, $post_data) {
90
+ $request_url = "{$this->url}&api_action=deal_stage_edit&api_output={$this->output}";
91
+ $response = $this->curl($request_url, $post_data);
92
+ return $response;
93
+ }
94
+
95
+ function stage_delete($params, $post_data) {
96
+ $request_url = "{$this->url}&api_action=deal_stage_delete&api_output={$this->output}";
97
+ $response = $this->curl($request_url, $post_data);
98
+ return $response;
99
+ }
100
+
101
+ function stage_list($params) {
102
+ $request_url = "{$this->url}&api_action=deal_stage_list&api_output={$this->output}&{$params}";
103
+ $response = $this->curl($request_url);
104
+ return $response;
105
+ }
106
+
107
+ function task_add($params, $post_data) {
108
+ $request_url = "{$this->url}&api_action=deal_task_add&api_output={$this->output}";
109
+ $response = $this->curl($request_url, $post_data);
110
+ return $response;
111
+ }
112
+
113
+ function task_edit($params, $post_data) {
114
+ $request_url = "{$this->url}&api_action=deal_task_edit&api_output={$this->output}";
115
+ $response = $this->curl($request_url, $post_data);
116
+ return $response;
117
+ }
118
+
119
+ function tasktype_add($params, $post_data) {
120
+ $request_url = "{$this->url}&api_action=deal_tasktype_add&api_output={$this->output}";
121
+ $response = $this->curl($request_url, $post_data);
122
+ return $response;
123
+ }
124
+
125
+ function tasktype_edit($params, $post_data) {
126
+ $request_url = "{$this->url}&api_action=deal_tasktype_edit&api_output={$this->output}";
127
+ $response = $this->curl($request_url, $post_data);
128
+ return $response;
129
+ }
130
+
131
+ function tasktype_delete($params, $post_data) {
132
+ $request_url = "{$this->url}&api_action=deal_tasktype_delete&api_output={$this->output}";
133
+ $response = $this->curl($request_url, $post_data);
134
+ return $response;
135
+ }
136
+
137
+ }
138
+
139
+ ?>
includes/vendor/activecampaign/Design.class.php ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class AC_Design extends ActiveCampaign {
4
+
5
+ public $version;
6
+ public $url_base;
7
+ public $url;
8
+ public $api_key;
9
+
10
+ function __construct($version, $url_base, $url, $api_key) {
11
+ $this->version = $version;
12
+ $this->url_base = $url_base;
13
+ $this->url = $url;
14
+ $this->api_key = $api_key;
15
+ }
16
+
17
+ function edit($params, $post_data) {
18
+ $request_url = "{$this->url}&api_action=branding_edit&api_output={$this->output}";
19
+ $response = $this->curl($request_url, $post_data);
20
+ return $response;
21
+ }
22
+
23
+ function view($params, $post_data) {
24
+ $request_url = "{$this->url}&api_action=branding_view&api_output={$this->output}";
25
+ $response = $this->curl($request_url, $post_data);
26
+ return $response;
27
+ }
28
+
29
+ }
30
+
31
+ ?>
includes/vendor/activecampaign/Form.class.php ADDED
@@ -0,0 +1,291 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class AC_Form extends ActiveCampaign {
4
+
5
+ public $version;
6
+ public $url_base;
7
+ public $url;
8
+ public $api_key;
9
+
10
+ function __construct($version, $url_base, $url, $api_key) {
11
+ $this->version = $version;
12
+ $this->url_base = $url_base;
13
+ $this->url = $url;
14
+ $this->api_key = $api_key;
15
+ }
16
+
17
+ function getforms($params) {
18
+ $request_url = "{$this->url}&api_action=form_getforms&api_output={$this->output}";
19
+ $response = $this->curl($request_url);
20
+ return $response;
21
+ }
22
+
23
+ function html($params) {
24
+ $request_url = "{$this->url}&api_action=form_html&api_output={$this->output}&{$params}";
25
+ $response = $this->curl($request_url);
26
+ return $response;
27
+ }
28
+
29
+ function embed($params) {
30
+
31
+ $params_array = explode("&", $params);
32
+ $params_ = array();
33
+ foreach ($params_array as $expression) {
34
+ // IE: css=1
35
+ list($var, $val) = explode("=", $expression);
36
+ $params_[$var] = $val;
37
+ }
38
+
39
+ $id = (isset($params_["id"])) ? (int)$params_["id"] : 0;
40
+ $css = (isset($params_["css"])) ? (int)$params_["css"] : 1;
41
+ $ajax = (isset($params_["ajax"])) ? (int)$params_["ajax"] : 0;
42
+ // to set the current page as the action, pass "action=", or "action=[THIS URL]"
43
+ $action = (isset($params_["action"])) ? ($params_["action"] ? $params_["action"] : "this") : "";
44
+
45
+ $html = $this->html("id={$id}");
46
+
47
+ if (is_object($html) && !(int)$html->success) {
48
+ return $html->error;
49
+ }
50
+
51
+ if ($html) {
52
+
53
+ if ($action) {
54
+ if ($action != "this") {
55
+ // replace the action attribute with the one provided
56
+ $action_val = urldecode($action);
57
+ $html = preg_replace("/action=['\"][^'\"]+['\"]/", "action='{$action_val}'", $html);
58
+ }
59
+ else {
60
+ $action_val = "";
61
+ }
62
+ }
63
+ else {
64
+ // find the action attribute value (URL)
65
+ // should be the proc.php URL (at this point in the script)
66
+ $action_val = preg_match("/action=['\"][^'\"]+['\"]/", $html, $m);
67
+ $action_val = $m[0];
68
+ $action_val = substr($action_val, 8, strlen($action_val) - 9);
69
+ }
70
+
71
+ if (!$css) {
72
+ // remove all CSS
73
+ $html = preg_replace("/<style[^>]*>(.*)<\/style>/s", "", $html);
74
+ }
75
+
76
+ if (!$ajax) {
77
+ // replace the Submit button to be an actual submit type
78
+ $html = preg_replace("/input type='button'/", "input type='submit'", $html);
79
+
80
+ // if action = "this", remove the action attribute completely
81
+ if (!$action_val) {
82
+ $html = preg_replace("/action=['\"][^'\"]+['\"]/", "", $html);
83
+ }
84
+ }
85
+ else {
86
+
87
+ // if using Ajax, remove the <form> action attribute completely
88
+ $html = preg_replace("/action=['\"][^'\"]+['\"]/", "", $html);
89
+
90
+ // replace the Submit button to be a button type (for ajax).
91
+ // forms come out of AC now with a "submit" button (it used to be "button").
92
+ $html = preg_replace("/input type='submit'/", "input type='button'", $html);
93
+
94
+ $action_val = urldecode($action_val);
95
+
96
+ // add jQuery stuff
97
+ $extra = "<script type='text/javascript'>
98
+
99
+ var \$j = jQuery.noConflict();
100
+
101
+ \$j(document).ready(function() {
102
+
103
+ \$j('#_form_{$id} input[type*=\"button\"]').click(function() {
104
+
105
+ // rename the radio options for Subscribe/Unsubscribe, since they conflict with the hidden field.
106
+ \$j('input[type=radio][name=act]').attr('name','act_radio');
107
+
108
+ var form_data = {};
109
+ \$j('#_form_{$id}').each(function() {
110
+ form_data = \$j(this).serialize();
111
+ });
112
+
113
+ var geturl;
114
+ geturl = \$j.ajax({
115
+ url: '{$action_val}',
116
+ type: 'POST',
117
+ dataType: 'json',
118
+ data: form_data,
119
+ error: function(jqXHR, textStatus, errorThrown) {
120
+ console.log(errorThrown);
121
+ },
122
+ success: function(data) {
123
+ \$j('#form_result_message').html(data.message);
124
+ var result_class = (data.success) ? 'form_result_success' : 'form_result_error';
125
+ \$j('#form_result_message').removeClass('form_result_success form_result_error').addClass(result_class);
126
+ }
127
+ });
128
+
129
+ });
130
+
131
+ });
132
+
133
+ </script>";
134
+
135
+ $html = $html . $extra;
136
+ }
137
+
138
+ }
139
+
140
+ return $html;
141
+ }
142
+
143
+ function process($params) {
144
+
145
+ $r = array();
146
+ if ($_SERVER["REQUEST_METHOD"] != "POST") return $r;
147
+
148
+ $sync = 0;
149
+ $captcha_in_form = 0;
150
+ if ($params) {
151
+ $params_array = explode("&", $params);
152
+ $params_ = array();
153
+ foreach ($params_array as $expression) {
154
+ // IE: css=1
155
+ list($var, $val) = explode("=", $expression);
156
+ $params_[$var] = $val;
157
+ }
158
+
159
+ $sync = (isset($params_["sync"])) ? (int)$params_["sync"] : 0;
160
+ $captcha_in_form = (isset($params_["captcha"])) ? (int)$params_["captcha"] : 0;
161
+ }
162
+
163
+ $formid = $_POST["f"];
164
+ // sub or unsub
165
+ $act = isset($_POST["act"]) ? $_POST["act"] : "sub";
166
+ if (isset($_POST["act_radio"])) {
167
+ // the radio options for Subscribe/Unsubscribe.
168
+ $act = $_POST["act_radio"];
169
+ }
170
+ $email = $_POST["email"];
171
+ $phone = isset($_POST["phone"]) ? $_POST["phone"] : "";
172
+ $lists = (isset($_POST["nlbox"]) && $_POST["nlbox"]) ? $_POST["nlbox"] : array();
173
+ if ($captcha_in_form) {
174
+ // Captcha is part of the form.
175
+ // Get the captcha value the user entered.
176
+ $captcha = "";
177
+ if (isset($_POST["captcha"])) {
178
+ $captcha = md5(strtoupper((string)$_POST["captcha"]));
179
+ }
180
+ if (!isset($_SESSION["image_random_value"]) || !isset($_SESSION["image_random_value"][$captcha])) {
181
+ return json_encode(array("success" => 0, "message" => "Invalid captcha"));
182
+ }
183
+ }
184
+
185
+ if (isset($_POST["fullname"])) {
186
+ $fullname = explode(" ", $_POST["fullname"]);
187
+ $firstname = array_shift($fullname);
188
+ $lastname = implode(" ", $fullname);
189
+ }
190
+ else {
191
+ $firstname = trim($_POST["firstname"]);
192
+ $lastname = trim($_POST["lastname"]);
193
+ if ($firstname == "" && isset($_POST["first_name"])) $firstname = trim($_POST["first_name"]);
194
+ if ($lastname == "" && isset($_POST["last_name"])) $lastname = trim($_POST["last_name"]);
195
+ }
196
+
197
+ $fields = (isset($_POST["field"])) ? $_POST["field"] : array();
198
+
199
+ $contact = array(
200
+ "form" => $formid,
201
+ "email" => $email,
202
+ "first_name" => $firstname,
203
+ "last_name" => $lastname,
204
+ "phone" => $phone,
205
+ );
206
+
207
+ foreach ($fields as $ac_field_id => $field_value) {
208
+ $contact["field"][$ac_field_id . ",0"] = $field_value;
209
+ }
210
+
211
+ // add lists
212
+ $status = ($act == "unsub") ? 2 : 1;
213
+ foreach ($lists as $listid) {
214
+ $contact["p[{$listid}]"] = $listid;
215
+ $contact["status[{$listid}]"] = $status;
216
+ }
217
+
218
+ if (!$sync) {
219
+
220
+ // do add/edit
221
+
222
+ $contact_exists = $this->api("contact/view?email={$email}", $contact);
223
+
224
+ if ( !isset($contact_exists->id) ) {
225
+
226
+ // contact does not exist - add them
227
+
228
+ $contact_request = $this->api("contact/add", $contact);
229
+
230
+ if ((int)$contact_request->success) {
231
+ // successful request
232
+ $contact_id = (int)$contact_request->subscriber_id;
233
+ $r = array(
234
+ "success" => 1,
235
+ "message" => $contact_request->result_message,
236
+ "contact_id" => $contact_id,
237
+ );
238
+ }
239
+ else {
240
+ // request failed
241
+ $r = array(
242
+ "success" => 0,
243
+ "message" => $contact_request->error,
244
+ );
245
+ }
246
+
247
+ }
248
+ else {
249
+
250
+ // contact already exists - edit them
251
+
252
+ $contact_id = $contact_exists->id;
253
+
254
+ $contact["id"] = $contact_id;
255
+
256
+ $contact_request = $this->api("contact/edit?overwrite=0", $contact);
257
+
258
+ }
259
+
260
+ }
261
+ else {
262
+
263
+ // perform sync (add or edit)
264
+
265
+ $contact_request = $this->api("contact/sync", $contact);
266
+
267
+ }
268
+
269
+ if ((int)$contact_request->success) {
270
+ // successful request
271
+ //$contact_id = (int)$contact_request->contact_id;
272
+ $r = array(
273
+ "success" => 1,
274
+ "message" => $contact_request->result_message,
275
+ //"contact_id" => $contact_id,
276
+ );
277
+ }
278
+ else {
279
+ // request failed
280
+ $r = array(
281
+ "success" => 0,
282
+ "message" => $contact_request->error,
283
+ );
284
+ }
285
+
286
+ return json_encode($r);
287
+ }
288
+
289
+ }
290
+
291
+ ?>
includes/vendor/activecampaign/Group.class.php ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class AC_Group extends ActiveCampaign {
4
+
5
+ public $version;
6
+ public $url_base;
7
+ public $url;
8
+ public $api_key;
9
+
10
+ function __construct($version, $url_base, $url, $api_key) {
11
+ $this->version = $version;
12
+ $this->url_base = $url_base;
13
+ $this->url = $url;
14
+ $this->api_key = $api_key;
15
+ }
16
+
17
+ function add($params, $post_data) {
18
+ $request_url = "{$this->url}&api_action=group_add&api_output={$this->output}";
19
+ $response = $this->curl($request_url, $post_data);
20
+ return $response;
21
+ }
22
+
23
+ function delete_list($params) {
24
+ $request_url = "{$this->url}&api_action=group_delete_list&api_output={$this->output}&{$params}";
25
+ $response = $this->curl($request_url);
26
+ return $response;
27
+ }
28
+
29
+ function delete($params) {
30
+ $request_url = "{$this->url}&api_action=group_delete&api_output={$this->output}&{$params}";
31
+ $response = $this->curl($request_url);
32
+ return $response;
33
+ }
34
+
35
+ function edit($params, $post_data) {
36
+ $request_url = "{$this->url}&api_action=group_edit&api_output={$this->output}";
37
+ $response = $this->curl($request_url, $post_data);
38
+ return $response;
39
+ }
40
+
41
+ function list_($params) {
42
+ $request_url = "{$this->url}&api_action=group_list&api_output={$this->output}&{$params}";
43
+ $response = $this->curl($request_url);
44
+ return $response;
45
+ }
46
+
47
+ function view($params) {
48
+ $request_url = "{$this->url}&api_action=group_view&api_output={$this->output}&{$params}";
49
+ $response = $this->curl($request_url);
50
+ return $response;
51
+ }
52
+
53
+ }
54
+
55
+ ?>
includes/vendor/activecampaign/List.class.php ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class AC_List_ extends ActiveCampaign {
4
+
5
+ public $version;
6
+ public $url_base;
7
+ public $url;
8
+ public $api_key;
9
+
10
+ function __construct($version, $url_base, $url, $api_key) {
11
+ $this->version = $version;
12
+ $this->url_base = $url_base;
13
+ $this->url = $url;
14
+ $this->api_key = $api_key;
15
+ }
16
+
17
+ function add($params, $post_data) {
18
+ $request_url = "{$this->url}&api_action=list_add&api_output={$this->output}";
19
+ $response = $this->curl($request_url, $post_data);
20
+ return $response;
21
+ }
22
+
23
+ function delete_list($params) {
24
+ $request_url = "{$this->url}&api_action=list_delete_list&api_output={$this->output}&{$params}";
25
+ $response = $this->curl($request_url);
26
+ return $response;
27
+ }
28
+
29
+ function delete($params) {
30
+ $request_url = "{$this->url}&api_action=list_delete&api_output={$this->output}&{$params}";
31
+ $response = $this->curl($request_url);
32
+ return $response;
33
+ }
34
+
35
+ function edit($params, $post_data) {
36
+ $request_url = "{$this->url}&api_action=list_edit&api_output={$this->output}";
37
+ $response = $this->curl($request_url, $post_data);
38
+ return $response;
39
+ }
40
+
41
+ function field_add($params, $post_data) {
42
+ $request_url = "{$this->url}&api_action=list_field_add&api_output={$this->output}";
43
+ $response = $this->curl($request_url, $post_data);
44
+ return $response;
45
+ }
46
+
47
+ function field_delete($params) {
48
+ $request_url = "{$this->url}&api_action=list_field_delete&api_output={$this->output}&{$params}";
49
+ $response = $this->curl($request_url);
50
+ return $response;
51
+ }
52
+
53
+ function field_edit($params, $post_data) {
54
+ $request_url = "{$this->url}&api_action=list_field_edit&api_output={$this->output}";
55
+ $response = $this->curl($request_url, $post_data);
56
+ return $response;
57
+ }
58
+
59
+ function field_view($params) {
60
+ $request_url = "{$this->url}&api_action=list_field_view&api_output={$this->output}&{$params}";
61
+ $response = $this->curl($request_url);
62
+ return $response;
63
+ }
64
+
65
+ function list_($params, $post_data) {
66
+ if ($post_data) {
67
+ if (isset($post_data["ids"]) && is_array($post_data["ids"])) {
68
+ // make them comma-separated.
69
+ $post_data["ids"] = implode(",", $post_data["ids"]);
70
+ }
71
+ }
72
+ $request_url = "{$this->url}&api_action=list_list&api_output={$this->output}&{$params}";
73
+ $response = $this->curl($request_url, $post_data);
74
+ return $response;
75
+ }
76
+
77
+ function paginator($params) {
78
+ $request_url = "{$this->url}&api_action=list_paginator&api_output={$this->output}&{$params}";
79
+ $response = $this->curl($request_url);
80
+ return $response;
81
+ }
82
+
83
+ function view($params) {
84
+ $request_url = "{$this->url}&api_action=list_view&api_output={$this->output}&{$params}";
85
+ $response = $this->curl($request_url);
86
+ return $response;
87
+ }
88
+
89
+ }
90
+
91
+ ?>
includes/vendor/activecampaign/Message.class.php ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class AC_Message extends ActiveCampaign {
4
+
5
+ public $version;
6
+ public $url_base;
7
+ public $url;
8
+ public $api_key;
9
+
10
+ function __construct($version, $url_base, $url, $api_key) {
11
+ $this->version = $version;
12
+ $this->url_base = $url_base;
13
+ $this->url = $url;
14
+ $this->api_key = $api_key;
15
+ }
16
+
17
+ function add($params, $post_data) {
18
+ $request_url = "{$this->url}&api_action=message_add&api_output={$this->output}";
19
+ $response = $this->curl($request_url, $post_data);
20
+ return $response;
21
+ }
22
+
23
+ function delete_list($params) {
24
+ $request_url = "{$this->url}&api_action=message_delete_list&api_output={$this->output}&{$params}";
25
+ $response = $this->curl($request_url);
26
+ return $response;
27
+ }
28
+
29
+ function delete($params) {
30
+ $request_url = "{$this->url}&api_action=message_delete&api_output={$this->output}&{$params}";
31
+ $response = $this->curl($request_url);
32
+ return $response;
33
+ }
34
+
35
+ function edit($params, $post_data) {
36
+ $request_url = "{$this->url}&api_action=message_edit&api_output={$this->output}";
37
+ $response = $this->curl($request_url, $post_data);
38
+ return $response;
39
+ }
40
+
41
+ function list_($params) {
42
+ $request_url = "{$this->url}&api_action=message_list&api_output={$this->output}&{$params}";
43
+ $response = $this->curl($request_url);
44
+ return $response;
45
+ }
46
+
47
+ function template_add($params, $post_data) {
48
+ $request_url = "{$this->url}&api_action=message_template_add&api_output={$this->output}";
49
+ $response = $this->curl($request_url, $post_data);
50
+ return $response;
51
+ }
52
+
53
+ function template_delete_list($params) {
54
+ $request_url = "{$this->url}&api_action=message_template_delete_list&api_output={$this->output}&{$params}";
55
+ $response = $this->curl($request_url);
56
+ return $response;
57
+ }
58
+
59
+ function template_delete($params) {
60
+ $request_url = "{$this->url}&api_action=message_template_delete&api_output={$this->output}&{$params}";
61
+ $response = $this->curl($request_url);
62
+ return $response;
63
+ }
64
+
65
+ function template_edit($params, $post_data) {
66
+ $request_url = "{$this->url}&api_action=message_template_edit&api_output={$this->output}";
67
+ $response = $this->curl($request_url, $post_data);
68
+ return $response;
69
+ }
70
+
71
+ function template_export($params) {
72
+ $request_url = "{$this->url}&api_action=message_template_export&api_output={$this->output}&{$params}";
73
+ $response = $this->curl($request_url);
74
+ return $response;
75
+ }
76
+
77
+ function template_import($params, $post_data) {
78
+ $request_url = "{$this->url}&api_action=message_template_import&api_output={$this->output}";
79
+ $response = $this->curl($request_url, $post_data);
80
+ return $response;
81
+ }
82
+
83
+ function template_list($params) {
84
+ $request_url = "{$this->url}&api_action=message_template_list&api_output={$this->output}&{$params}";
85
+ $response = $this->curl($request_url);
86
+ return $response;
87
+ }
88
+
89
+ function template_view($params) {
90
+ $request_url = "{$this->url}&api_action=message_template_view&api_output={$this->output}&{$params}";
91
+ $response = $this->curl($request_url);
92
+ return $response;
93
+ }
94
+
95
+ function view($params) {
96
+ $request_url = "{$this->url}&api_action=message_view&api_output={$this->output}&{$params}";
97
+ $response = $this->curl($request_url);
98
+ return $response;
99
+ }
100
+
101
+ }
102
+
103
+ ?>
includes/vendor/activecampaign/Settings.class.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class AC_Settings extends ActiveCampaign {
4
+
5
+ public $version;
6
+ public $url_base;
7
+ public $url;
8
+ public $api_key;
9
+
10
+ function __construct($version, $url_base, $url, $api_key) {
11
+ $this->version = $version;
12
+ $this->url_base = $url_base;
13
+ $this->url = $url;
14
+ $this->api_key = $api_key;
15
+ }
16
+
17
+ function edit($params, $post_data) {
18
+ $request_url = "{$this->url}&api_action=settings_edit&api_output={$this->output}";
19
+ $response = $this->curl($request_url, $post_data);
20
+ return $response;
21
+ }
22
+
23
+ }
24
+
25
+ ?>
includes/vendor/activecampaign/Subscriber.class.php ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class AC_Subscriber extends AC_Contact {
4
+ }
5
+
6
+ ?>
includes/vendor/activecampaign/Tracking.class.php ADDED
@@ -0,0 +1,118 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class AC_Tracking extends ActiveCampaign {
4
+
5
+ public $version;
6
+ public $url_base;
7
+ public $url;
8
+ public $api_key;
9
+
10
+ function __construct($version, $url_base, $url, $api_key) {
11
+ $this->version = $version;
12
+ $this->url_base = $url_base;
13
+ $this->url = $url;
14
+ $this->api_key = $api_key;
15
+ }
16
+
17
+ /*
18
+ * Update the status (enabled or disabled) for site tracking.
19
+ */
20
+ function site_status($params, $post_data) {
21
+ // version 2 only.
22
+ $request_url = "{$this->url_base}/track/site";
23
+ $response = $this->curl($request_url, $post_data, "POST", "tracking_site_status");
24
+ return $response;
25
+ }
26
+
27
+ /*
28
+ * Update the status (enabled or disabled) for event tracking.
29
+ */
30
+ function event_status($params, $post_data) {
31
+ // version 2 only.
32
+ $request_url = "{$this->url_base}/track/event";
33
+ $response = $this->curl($request_url, $post_data, "POST", "tracking_event_status");
34
+ return $response;
35
+ }
36
+
37
+ /*
38
+ * Returns existing whitelisted domains.
39
+ */
40
+ function site_list($params) {
41
+ if ($this->version == 1) {
42
+ // not supported currently.
43
+ //$request_url = "{$this->url}&api_action=contact_delete_list&api_output={$this->output}&{$params}";
44
+ } elseif ($this->version == 2) {
45
+ $request_url = "{$this->url_base}/track/site";
46
+ }
47
+ $response = $this->curl($request_url, array(), "GET", "tracking_site_list");
48
+ return $response;
49
+ }
50
+
51
+ /*
52
+ * Returns existing tracked events.
53
+ */
54
+ function event_list($params) {
55
+ if ($this->version == 1) {
56
+ // not supported currently.
57
+ //$request_url = "{$this->url}&api_action=contact_delete_list&api_output={$this->output}&{$params}";
58
+ } elseif ($this->version == 2) {
59
+ $request_url = "{$this->url_base}/track/event";
60
+ }
61
+ $response = $this->curl($request_url, array(), "GET", "tracking_event_list");
62
+ return $response;
63
+ }
64
+
65
+ /*
66
+ * Adds a domain to the site tracking whitelist.
67
+ */
68
+ function whitelist($params, $post_data) {
69
+ // version 2 only.
70
+ $request_url = "{$this->url_base}/track/site";
71
+ $response = $this->curl($request_url, $post_data, "PUT", "tracking_whitelist");
72
+ return $response;
73
+ }
74
+
75
+ /*
76
+ * Removes a domain from the site tracking whitelist.
77
+ */
78
+ function whitelist_remove($params, $post_data) {
79
+ // version 2 only.
80
+ $request_url = "{$this->url_base}/track/site";
81
+ $response = $this->curl($request_url, $post_data, "DELETE", "tracking_whitelist");
82
+ return $response;
83
+ }
84
+
85
+ /*
86
+ * Removes an event.
87
+ */
88
+ function event_remove($params, $post_data) {
89
+ // version 2 only.
90
+ $request_url = "{$this->url_base}/track/event";
91
+ $response = $this->curl($request_url, $post_data, "DELETE", "tracking_event_remove");
92
+ return $response;
93
+ }
94
+
95
+ /*
96
+ * Adds a new event.
97
+ */
98
+ function log($params, $post_data) {
99
+ $request_url = "https://trackcmp.net/event";
100
+ $post_data["actid"] = $this->track_actid;
101
+ $post_data["key"] = $this->track_key;
102
+ $visit_data = array();
103
+ if ($this->track_email) {
104
+ $visit_data["email"] = $this->track_email;
105
+ }
106
+ if (isset($post_data["visit"])) {
107
+ $visit_data = array_merge($visit_data, $post_data["visit"]);
108
+ }
109
+ if ($visit_data) {
110
+ $post_data["visit"] = json_encode($visit_data);
111
+ }
112
+ $response = $this->curl($request_url, $post_data, "POST", "tracking_log");
113
+ return $response;
114
+ }
115
+
116
+ }
117
+
118
+ ?>
includes/vendor/activecampaign/User.class.php ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class AC_User extends ActiveCampaign {
4
+
5
+ public $version;
6
+ public $url_base;
7
+ public $url;
8
+ public $api_key;
9
+
10
+ function __construct($version, $url_base, $url, $api_key) {
11
+ $this->version = $version;
12
+ $this->url_base = $url_base;
13
+ $this->url = $url;
14
+ $this->api_key = $api_key;
15
+ }
16
+
17
+ function add($params, $post_data) {
18
+ $request_url = "{$this->url}&api_action=user_add&api_output={$this->output}";
19
+ $response = $this->curl($request_url, $post_data);
20
+ return $response;
21
+ }
22
+
23
+ function delete_list($params) {
24
+ $request_url = "{$this->url}&api_action=user_delete_list&api_output={$this->output}&{$params}";
25
+ $response = $this->curl($request_url);
26
+ return $response;
27
+ }
28
+
29
+ function delete($params) {
30
+ $request_url = "{$this->url}&api_action=user_delete&api_output={$this->output}&{$params}";
31
+ $response = $this->curl($request_url);
32
+ return $response;
33
+ }
34
+
35
+ function edit($params, $post_data) {
36
+ $request_url = "{$this->url}&api_action=user_edit&api_output={$this->output}";
37
+ $response = $this->curl($request_url, $post_data);
38
+ return $response;
39
+ }
40
+
41
+ function list_($params) {
42
+ $request_url = "{$this->url}&api_action=user_list&api_output={$this->output}&{$params}";
43
+ $response = $this->curl($request_url);
44
+ return $response;
45
+ }
46
+
47
+ function me() {
48
+ $request_url = "{$this->url}&api_action=user_me&api_output={$this->output}";
49
+ $response = $this->curl($request_url);
50
+ return $response;
51
+ }
52
+
53
+ function view($params) {
54
+ // can be a user ID, email, or username
55
+ if (preg_match("/^email=/", $params)) {
56
+ $action = "user_view_email";
57
+ }
58
+ elseif (preg_match("/^username=/", $params)) {
59
+ $action = "user_view_username";
60
+ }
61
+ elseif (preg_match("/^id=/", $params)) {
62
+ $action = "user_view";
63
+ }
64
+ $request_url = "{$this->url}&api_action={$action}&api_output={$this->output}&{$params}";
65
+ $response = $this->curl($request_url);
66
+ return $response;
67
+ }
68
+
69
+ }
70
+
71
+ ?>
includes/vendor/activecampaign/Webhook.class.php ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class AC_Webhook extends ActiveCampaign {
4
+
5
+ public $version;
6
+ public $url_base;
7
+ public $url;
8
+ public $api_key;
9
+
10
+ function __construct($version, $url_base, $url, $api_key) {
11
+ $this->version = $version;
12
+ $this->url_base = $url_base;
13
+ $this->url = $url;
14
+ $this->api_key = $api_key;
15
+ }
16
+
17
+ function add($params, $post_data) {
18
+ $request_url = "{$this->url}&api_action=webhook_add&api_output={$this->output}";
19
+ $response = $this->curl($request_url, $post_data);
20
+ return $response;
21
+ }
22
+
23
+ function delete($params) {
24
+ $request_url = "{$this->url}&api_action=webhook_delete&api_output={$this->output}&{$params}";
25
+ $response = $this->curl($request_url);
26
+ return $response;
27
+ }
28
+
29
+ function delete_list($params) {
30
+ $request_url = "{$this->url}&api_action=webhook_delete_list&api_output={$this->output}&{$params}";
31
+ $response = $this->curl($request_url);
32
+ return $response;
33
+ }
34
+
35
+ function edit($params, $post_data) {
36
+ $request_url = "{$this->url}&api_action=webhook_edit&api_output={$this->output}";
37
+ $response = $this->curl($request_url, $post_data);
38
+ return $response;
39
+ }
40
+
41
+ function list_($params) {
42
+ $request_url = "{$this->url}&api_action=webhook_list&api_output={$this->output}&{$params}";
43
+ $response = $this->curl($request_url);
44
+ return $response;
45
+ }
46
+
47
+ function view($params) {
48
+ $request_url = "{$this->url}&api_action=webhook_view&api_output={$this->output}&{$params}";
49
+ $response = $this->curl($request_url);
50
+ return $response;
51
+ }
52
+
53
+ function events($params) {
54
+ $request_url = "{$this->url}&api_action=webhook_events&api_output={$this->output}&{$params}";
55
+ $response = $this->curl($request_url);
56
+ return $response;
57
+ }
58
+
59
+ function process($params) {
60
+ // process an incoming webhook payload (from ActiveCampaign), and format it (or do something with it)
61
+
62
+ $r = array();
63
+ if ($_SERVER["REQUEST_METHOD"] != "POST") return $r;
64
+
65
+ $params_array = explode("&", $params);
66
+ $params_ = array();
67
+ foreach ($params_array as $expression) {
68
+ // IE: css=1
69
+ list($var, $val) = explode("=", $expression);
70
+ $params_[$var] = $val;
71
+ }
72
+
73
+ $event = $params_["event"];
74
+ $format = $params_["output"];
75
+
76
+ if ($format == "json") {
77
+ return json_encode($_POST);
78
+ }
79
+
80
+ }
81
+
82
+ }
83
+
84
+ ?>
includes/vendor/activecampaign/config.php ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <?php
2
+
3
+ define("ACTIVECAMPAIGN_URL", "");
4
+ define("ACTIVECAMPAIGN_API_KEY", "");
5
+
6
+ ?>
includes/vendor/infusionsoft/xmlrpc-3.0/extras/rsakey.pem DELETED
@@ -1,9 +0,0 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- MIIBOgIBAAJBAM12w6/J20HMj0V9VC24xPFQG9RKSDt8vmviM+tnc1BgCrzPyF1v
3
- 3/rWGoWDjkJrE9WFOeqIjJHeEWWT4uKq2ZkCAwEAAQJAZZYJ7Nld+et9DvuHak/H
4
- uBRGnjDYA+mKcObXitWMUzk2ZodL8UoCP1J9kKqV8Zp/l2cBZkLo0aWTN94sWkHy
5
- rQIhAOhxWxRXSZ4kArIQqZnDG9JgtOAeaaFso/zpxIHpN6OrAiEA4klzl+rUc32/
6
- 7SDcJYa9j5vehp1jCTnkN+n0rujTM8sCIAGwMRUovSQk5tAcRt8TB7SzdxzZm7LM
7
- czR3DjJTW1AZAiEAlYN+svPgJ+cAdwdtLgZXHZoZb8xx8Vik6CTXHPKNCf0CIBQL
8
- zF4Qp8/C+gjsXtEZJvhxY7i1luHn6iNwNnE932r3
9
- -----END RSA PRIVATE KEY-----
 
 
 
 
 
 
 
 
 
includes/vendor/infusionsoft/xmlrpc-3.0/extras/test.pl DELETED
@@ -1,52 +0,0 @@
1
- #!/usr/local/bin/perl
2
-
3
- use Frontier::Client;
4
-
5
- my $serverURL='http://phpxmlrpc.sourceforge.net/server.php';
6
-
7
- # try the simplest example
8
-
9
- my $client = Frontier::Client->new( 'url' => $serverURL,
10
- 'debug' => 0, 'encoding' => 'iso-8859-1' );
11
- my $resp = $client->call("examples.getStateName", 32);
12
-
13
- print "Got '${resp}'\n";
14
-
15
- # now send a mail to nobody in particular
16
-
17
- $resp = $client->call("mail.send", ("edd", "Test",
18
- "Bonjour. Je m'appelle G�rard. Ma�ana. ", "freddy", "", "",
19
- 'text/plain; charset="iso-8859-1"'));
20
-
21
- if ($resp->value()) {
22
- print "Mail sent OK.\n";
23
- } else {
24
- print "Error sending mail.\n";
25
- }
26
-
27
- # test echoing of characters works fine
28
-
29
- $resp = $client->call("examples.echo", 'Three "blind" mice - ' .
30
- "See 'how' they run");
31
- print $resp . "\n";
32
-
33
- # test name and age example. this exercises structs and arrays
34
-
35
- $resp = $client->call("examples.sortByAge",
36
- [ { 'name' => 'Dave', 'age' => 35},
37
- { 'name' => 'Edd', 'age' => 45 },
38
- { 'name' => 'Fred', 'age' => 23 },
39
- { 'name' => 'Barney', 'age' => 36 } ] );
40
-
41
- my $e;
42
- foreach $e (@$resp) {
43
- print $$e{'name'} . ", " . $$e{'age'} . "\n";
44
- }
45
-
46
- # test base64
47
-
48
- $resp = $client->call("examples.decode64",
49
- $client->base64("TWFyeSBoYWQgYSBsaXR0bGUgbGFtYiBTaGUgd" .
50
- "GllZCBpdCB0byBhIHB5bG9u"));
51
-
52
- print $resp . "\n";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/vendor/infusionsoft/xmlrpc-3.0/extras/test.py DELETED
@@ -1,37 +0,0 @@
1
- #!/usr/local/bin/python
2
-
3
- from xmlrpclib import *
4
- import sys
5
-
6
- server = Server("http://phpxmlrpc.sourceforge.net/server.php")
7
-
8
- try:
9
- print "Got '" + server.examples.getStateName(32) + "'"
10
-
11
- r = server.mail.send("edd", "Test",
12
- "Bonjour. Je m'appelle G�rard. Ma�ana. ", "freddy", "", "",
13
- 'text/plain; charset="iso-8859-1"')
14
- if r:
15
- print "Mail sent OK"
16
- else:
17
- print "Error sending mail"
18
-
19
-
20
- r = server.examples.echo('Three "blind" mice - ' + "See 'how' they run")
21
- print r
22
-
23
- # name/age example. this exercises structs and arrays
24
-
25
- a = [ {'name': 'Dave', 'age': 35}, {'name': 'Edd', 'age': 45 },
26
- {'name': 'Fred', 'age': 23}, {'name': 'Barney', 'age': 36 }]
27
- r = server.examples.sortByAge(a)
28
- print r
29
-
30
- # test base 64
31
- b = Binary("Mary had a little lamb She tied it to a pylon")
32
- b.encode(sys.stdout)
33
- r = server.examples.decode64(b)
34
- print r
35
-
36
- except Error, v:
37
- print "XML-RPC Error:",v
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/vendor/infusionsoft/xmlrpc-3.0/extras/workspace.testPhpServer.fttb DELETED
@@ -1 +0,0 @@
1
-
2
- ->
 
 
js/fl-builder-layout.js CHANGED
@@ -29,6 +29,9 @@
29
  // Init anchor links.
30
  FLBuilderLayout._initAnchorLinks();
31
 
 
 
 
32
  // Init backgrounds.
33
  FLBuilderLayout._initBackgrounds();
34
 
@@ -289,6 +292,56 @@
289
  }
290
  },
291
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
292
  /**
293
  * Initializes all anchor links on the page for smooth scrolling.
294
  *
29
  // Init anchor links.
30
  FLBuilderLayout._initAnchorLinks();
31
 
32
+ // Init the browser hash.
33
+ FLBuilderLayout._initHash();
34
+
35
  // Init backgrounds.
36
  FLBuilderLayout._initBackgrounds();
37
 
292
  }
293
  },
294
 
295
+ /**
296
+ * Opens a tab or accordion item if the browser hash is set
297
+ * to the ID of one on the page.
298
+ *
299
+ * @since 1.6.0
300
+ * @access private
301
+ * @method _initHash
302
+ */
303
+ _initHash: function()
304
+ {
305
+ var hash = window.location.hash.replace( '#', '' ),
306
+ element = null,
307
+ tabs = null,
308
+ responsiveLabel = null,
309
+ tabIndex = null,
310
+ label = null;
311
+
312
+ if ( '' != hash ) {
313
+
314
+ element = $( '#' + hash );
315
+
316
+ if ( element.length > 0 ) {
317
+
318
+ if ( element.hasClass( 'fl-accordion-item' ) ) {
319
+ setTimeout( function() {
320
+ element.find( '.fl-accordion-button' ).trigger( 'click' );
321
+ }, 100 );
322
+ }
323
+ if ( element.hasClass( 'fl-tabs-panel' ) ) {
324
+
325
+ setTimeout( function() {
326
+
327
+ tabs = element.closest( '.fl-tabs' );
328
+ responsiveLabel = element.find( '.fl-tabs-panel-label' );
329
+ tabIndex = responsiveLabel.data( 'index' );
330
+ label = tabs.find( '.fl-tabs-labels .fl-tabs-label[data-index=' + tabIndex + ']' );
331
+
332
+ if ( responsiveLabel.is( ':visible' ) ) {
333
+ responsiveLabel.trigger( 'click' );
334
+ }
335
+ else {
336
+ label.trigger( 'click' );
337
+ }
338
+
339
+ }, 100 );
340
+ }
341
+ }
342
+ }
343
+ },
344
+
345
  /**
346
  * Initializes all anchor links on the page for smooth scrolling.
347
  *
js/fl-builder-preview.js CHANGED
@@ -442,11 +442,17 @@
442
  {
443
  // Elements
444
  $.extend(this.elements, {
445
- textColor : $(this.classes.settings + ' input[name=text_color]')
 
 
 
446
  });
447
 
448
  // Events
449
  this.elements.textColor.on('change', $.proxy(this._textColorChange, this));
 
 
 
450
  },
451
 
452
  /**
@@ -460,30 +466,72 @@
460
  */
461
  _textColorChange: function(e)
462
  {
463
- var val = this.elements.textColor.val();
464
-
465
- if(val == '') {
466
- this.updateCSSRule(this.classes.node, 'color', 'inherit');
467
- this.updateCSSRule(this.classes.node + ' a', 'color', 'inherit');
468
- this.updateCSSRule(this.classes.node + ' h1', 'color', 'inherit');
469
- this.updateCSSRule(this.classes.node + ' h2', 'color', 'inherit');
470
- this.updateCSSRule(this.classes.node + ' h3', 'color', 'inherit');
471
- this.updateCSSRule(this.classes.node + ' h4', 'color', 'inherit');
472
- this.updateCSSRule(this.classes.node + ' h5', 'color', 'inherit');
473
- this.updateCSSRule(this.classes.node + ' h6', 'color', 'inherit');
474
- }
475
- else {
476
- this.delay(100, $.proxy(function(){
477
- this.updateCSSRule(this.classes.node, 'color', '#' + val);
478
- this.updateCSSRule(this.classes.node + ' a', 'color', '#' + val);
479
- this.updateCSSRule(this.classes.node + ' h1', 'color', '#' + val);
480
- this.updateCSSRule(this.classes.node + ' h2', 'color', '#' + val);
481
- this.updateCSSRule(this.classes.node + ' h3', 'color', '#' + val);
482
- this.updateCSSRule(this.classes.node + ' h4', 'color', '#' + val);
483
- this.updateCSSRule(this.classes.node + ' h5', 'color', '#' + val);
484
- this.updateCSSRule(this.classes.node + ' h6', 'color', '#' + val);
485
- }, this));
486
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
487
  },
488
 
489
  /* Node Bg Settings
442
  {
443
  // Elements
444
  $.extend(this.elements, {
445
+ textColor : $(this.classes.settings + ' input[name=text_color]'),
446
+ linkColor : $(this.classes.settings + ' input[name=link_color]'),
447
+ hoverColor : $(this.classes.settings + ' input[name=hover_color]'),
448
+ headingColor : $(this.classes.settings + ' input[name=heading_color]')
449
  });
450
 
451
  // Events
452
  this.elements.textColor.on('change', $.proxy(this._textColorChange, this));
453
+ this.elements.linkColor.on('change', $.proxy(this._textColorChange, this));
454
+ this.elements.hoverColor.on('change', $.proxy(this._textColorChange, this));
455
+ this.elements.headingColor.on('change', $.proxy(this._textColorChange, this));
456
  },
457
 
458
  /**
466
  */
467
  _textColorChange: function(e)
468
  {
469
+ var textColor = this.elements.textColor.val(),
470
+ linkColor = this.elements.linkColor.val(),
471
+ hoverColor = this.elements.hoverColor.val(),
472
+ headingColor = this.elements.headingColor.val();
473
+
474
+ linkColor = linkColor == '' ? textColor : linkColor;
475
+ hoverColor = hoverColor == '' ? textColor : hoverColor;
476
+ headingColor = headingColor == '' ? textColor : headingColor;
477
+
478
+ this.delay(100, $.proxy(function(){
479
+
480
+ // Update Text color.
481
+ if(textColor == '') {
482
+ this.updateCSSRule(this.classes.node, 'color', 'inherit');
483
+ }
484
+ else {
485
+ this.updateCSSRule(this.classes.node, 'color', '#' + textColor);
486
+ }
487
+
488
+ // Update Link Color
489
+ if ( linkColor == '' ) {
490
+ this.updateCSSRule(this.classes.node + ' a', 'color', 'inherit');
491
+ }
492
+ else {
493
+ this.updateCSSRule(this.classes.node + ' a', 'color', '#' + linkColor);
494
+ }
495
+
496
+ // Hover Color
497
+ if(hoverColor == '') {
498
+ this.updateCSSRule(this.classes.node + ' a:hover', 'color', 'inherit');
499
+ }
500
+ else {
501
+ this.updateCSSRule(this.classes.node + ' a:hover', 'color', '#' + hoverColor);
502
+ }
503
+
504
+ // Heading Color
505
+ if(headingColor == '') {
506
+ this.updateCSSRule(this.classes.node + ' h1', 'color', 'inherit');
507
+ this.updateCSSRule(this.classes.node + ' h2', 'color', 'inherit');
508
+ this.updateCSSRule(this.classes.node + ' h3', 'color', 'inherit');
509
+ this.updateCSSRule(this.classes.node + ' h4', 'color', 'inherit');
510
+ this.updateCSSRule(this.classes.node + ' h5', 'color', 'inherit');
511
+ this.updateCSSRule(this.classes.node + ' h6', 'color', 'inherit');
512
+ this.updateCSSRule(this.classes.node + ' h1 a', 'color', 'inherit');
513
+ this.updateCSSRule(this.classes.node + ' h2 a', 'color', 'inherit');
514
+ this.updateCSSRule(this.classes.node + ' h3 a', 'color', 'inherit');
515
+ this.updateCSSRule(this.classes.node + ' h4 a', 'color', 'inherit');
516
+ this.updateCSSRule(this.classes.node + ' h5 a', 'color', 'inherit');
517
+ this.updateCSSRule(this.classes.node + ' h6 a', 'color', 'inherit');
518
+ }
519
+ else {
520
+ this.updateCSSRule(this.classes.node + ' h1', 'color', '#' + headingColor);
521
+ this.updateCSSRule(this.classes.node + ' h2', 'color', '#' + headingColor);
522
+ this.updateCSSRule(this.classes.node + ' h3', 'color', '#' + headingColor);
523
+ this.updateCSSRule(this.classes.node + ' h4', 'color', '#' + headingColor);
524
+ this.updateCSSRule(this.classes.node + ' h5', 'color', '#' + headingColor);
525
+ this.updateCSSRule(this.classes.node + ' h6', 'color', '#' + headingColor);
526
+ this.updateCSSRule(this.classes.node + ' h1 a', 'color', '#' + headingColor);
527
+ this.updateCSSRule(this.classes.node + ' h2 a', 'color', '#' + headingColor);
528
+ this.updateCSSRule(this.classes.node + ' h3 a', 'color', '#' + headingColor);
529
+ this.updateCSSRule(this.classes.node + ' h4 a', 'color', '#' + headingColor);
530
+ this.updateCSSRule(this.classes.node + ' h5 a', 'color', '#' + headingColor);
531
+ this.updateCSSRule(this.classes.node + ' h6 a', 'color', '#' + headingColor);
532
+ }
533
+
534
+ }, this));
535
  },
536
 
537
  /* Node Bg Settings
js/fl-builder-services.js CHANGED
@@ -25,6 +25,9 @@
25
 
26
  // Campaign Monitor Events
27
  body.delegate( '.fl-builder-campaign-monitor-client-select', 'change', this._campaignMonitorClientChange );
 
 
 
28
  },
29
 
30
  /**
@@ -358,6 +361,57 @@
358
 
359
  client.closest( 'tr' ).after( data.html );
360
  FLBuilderServices._finishSettingsLoading();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
361
  }
362
  };
363
 
25
 
26
  // Campaign Monitor Events
27
  body.delegate( '.fl-builder-campaign-monitor-client-select', 'change', this._campaignMonitorClientChange );
28
+
29
+ // MailChimp Events
30
+ body.delegate( '.fl-builder-mailchimp-list-select', 'change', this._mailChimpListChange );
31
  },
32
 
33
  /**
361
 
362
  client.closest( 'tr' ).after( data.html );
363
  FLBuilderServices._finishSettingsLoading();
364
+ },
365
+
366
+ /* MailChimp
367
+ ----------------------------------------------------------*/
368
+
369
+ /**
370
+ * Fires when the MailChimp list select is changed.
371
+ *
372
+ * @return void
373
+ * @since 1.6.0
374
+ */
375
+ _mailChimpListChange: function()
376
+ {
377
+ var nodeId = $( '.fl-builder-settings' ).data( 'node' ),
378
+ wrap = $( this ).closest( '.fl-builder-service-settings' ),
379
+ select = wrap.find( '.fl-builder-service-select' ),
380
+ account = wrap.find( '.fl-builder-service-account-select' ),
381
+ list = wrap.find( '.fl-builder-service-list-select' );
382
+
383
+ $( '.fl-builder-mailchimp-group-select' ).closest( 'tr' ).remove();
384
+
385
+ if ( '' == list.val() ) {
386
+ return;
387
+ }
388
+
389
+ FLBuilderServices._startSettingsLoading( select );
390
+
391
+ FLBuilder.ajax( {
392
+ action : 'fl_builder_render_service_fields',
393
+ node_id : nodeId,
394
+ service : select.val(),
395
+ account : account.val(),
396
+ list_id : list.val()
397
+ }, FLBuilderServices._mailChimpListChangeComplete );
398
+ },
399
+
400
+ /**
401
+ * AJAX callback for when the MailChimp list select is changed.
402
+ *
403
+ * @param {String} response The JSON response.
404
+ * @return void
405
+ * @since 1.6.0
406
+ */
407
+ _mailChimpListChangeComplete: function( response )
408
+ {
409
+ var data = JSON.parse( response ),
410
+ wrap = $( '.fl-builder-service-settings-loading' ),
411
+ list = wrap.find( '.fl-builder-service-list-select' );
412
+
413
+ list.closest( 'tr' ).after( data.html );
414
+ FLBuilderServices._finishSettingsLoading();
415
  }
416
  };
417
 
js/fl-builder.js CHANGED
@@ -991,9 +991,10 @@
991
  */
992
  _exit: function()
993
  {
994
- var href = window.location.href;
 
995
 
996
- if ( typeof window.opener != 'undefined' && window.opener ) {
997
  window.close();
998
  }
999
  else {
@@ -3373,8 +3374,12 @@
3373
 
3374
  value = data[ i ].value.replace( /\r/gm, '' );
3375
 
 
 
 
 
3376
  // Support foo[] setting keys.
3377
- if ( data[ i ].name.indexOf( '[]' ) > -1 ) {
3378
 
3379
  name = data[ i ].name.replace( '[]', '' );
3380
 
@@ -3419,15 +3424,22 @@
3419
  }
3420
  }
3421
 
3422
- // Replace auto suggest values.
3423
  for ( key in settings ) {
 
3424
  if ( 'undefined' != typeof settings[ 'as_values_' + key ] ) {
 
3425
  settings[ key ] = $.grep(
3426
  settings[ 'as_values_' + key ].split( ',' ),
3427
  function( n ) {
3428
  return n != '';
3429
  }
3430
  ).join( ',' );
 
 
 
 
 
3431
  }
3432
  }
3433
 
991
  */
992
  _exit: function()
993
  {
994
+ var href = window.location.href,
995
+ isTemplate = 'fl-builder-template' == FLBuilderConfig.postType;
996
 
997
+ if ( isTemplate && typeof window.opener != 'undefined' && window.opener ) {
998
  window.close();
999
  }
1000
  else {
3374
 
3375
  value = data[ i ].value.replace( /\r/gm, '' );
3376
 
3377
+ // Don't save text editor textareas.
3378
+ if ( data[ i ].name.indexOf( 'flrich' ) > -1 ) {
3379
+ continue;
3380
+ }
3381
  // Support foo[] setting keys.
3382
+ else if ( data[ i ].name.indexOf( '[]' ) > -1 ) {
3383
 
3384
  name = data[ i ].name.replace( '[]', '' );
3385
 
3424
  }
3425
  }
3426
 
3427
+ // Update auto suggest values.
3428
  for ( key in settings ) {
3429
+
3430
  if ( 'undefined' != typeof settings[ 'as_values_' + key ] ) {
3431
+
3432
  settings[ key ] = $.grep(
3433
  settings[ 'as_values_' + key ].split( ',' ),
3434
  function( n ) {
3435
  return n != '';
3436
  }
3437
  ).join( ',' );
3438
+
3439
+ try {
3440
+ delete settings[ 'as_values_' + key ];
3441
+ }
3442
+ catch( e ) {}
3443
  }
3444
  }
3445
 
languages/de_DE.po CHANGED
@@ -1552,7 +1552,7 @@ msgstr "Forum besuchen"
1552
  # @ fl-builder
1553
  #: includes/js-config.php:96
1554
  msgid "Watch the Video"
1555
- msgstr "Bideo anschauen"
1556
 
1557
  # @ fl-builder
1558
  #: includes/js-config.php:97
1552
  # @ fl-builder
1553
  #: includes/js-config.php:96
1554
  msgid "Watch the Video"
1555
+ msgstr "Video anschauen"
1556
 
1557
  # @ fl-builder
1558
  #: includes/js-config.php:97
languages/es_ES.mo CHANGED
Binary file
languages/es_ES.po CHANGED
@@ -3,14 +3,14 @@ msgstr ""
3
  "Project-Id-Version: {FL_BUILDER_NAME}\n"
4
  "Report-Msgid-Bugs-To: \n"
5
  "POT-Creation-Date: 2015-05-18 10:56-0800\n"
6
- "PO-Revision-Date: 2015-05-21 16:44+0100\n"
7
  "Last-Translator: Roberto Porcar <rporcar@arrakis.es>\n"
8
  "Language-Team: \n"
9
  "Language: es_ES\n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
- "X-Generator: Poedit 1.7.1\n"
14
  "X-Poedit-Basepath: ..\n"
15
  "X-Poedit-SourceCharset: UTF-8\n"
16
  "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
@@ -56,7 +56,7 @@ msgstr "Tipos de Entrada"
56
  #: classes/class-fl-builder-admin-settings.php:167
57
  #: modules/icon-group/icon-group.php:27
58
  msgid "Icons"
59
- msgstr "Iconos"
60
 
61
  #: classes/class-fl-builder-admin-settings.php:171
62
  msgid "Editing"
@@ -84,7 +84,7 @@ msgstr "Desinstalar"
84
 
85
  #: classes/class-fl-builder-admin-settings.php:439
86
  msgid "Error! You must have at least one icon set enabled."
87
- msgstr "Error! Necesitas tener al menos una colección de iconos habilitada."
88
 
89
  #: classes/class-fl-builder-admin-settings.php:481
90
  msgid "Error! Could not unzip file."
@@ -101,8 +101,7 @@ msgstr ""
101
 
102
  #: classes/class-fl-builder-admin-settings.php:636
103
  msgid "Error! You must have at least one feature of the help button enabled."
104
- msgstr ""
105
- "¡Error! Debse tener al menos una característica del botón ayuda habilitada."
106
 
107
  #: classes/class-fl-builder-admin.php:45
108
  #, php-format
@@ -210,7 +209,7 @@ msgstr "Páginas de Contenido"
210
  #: classes/class-fl-builder-photo.php:100
211
  msgctxt "Image size."
212
  msgid "Full Size"
213
- msgstr "Tamaño completo"
214
 
215
  #: classes/class-fl-builder-photo.php:101
216
  msgctxt "Image size."
@@ -229,15 +228,15 @@ msgstr "Miniatura"
229
 
230
  #: classes/class-fl-builder-service-aweber.php:72
231
  msgid "Error: You must provide an Authorization Code."
232
- msgstr "Error: Debse proporcionar un código de autorización."
233
 
234
  #: classes/class-fl-builder-service-aweber.php:76
235
  msgid "Error: Please enter a valid Authorization Code."
236
- msgstr "Error: Por favor, introducd un código de autorización válido."
237
 
238
  #: classes/class-fl-builder-service-aweber.php:127
239
  msgid "Authorization Code"
240
- msgstr "Código Autorización"
241
 
242
  #: classes/class-fl-builder-service-aweber.php:128
243
  #, php-format
@@ -281,7 +280,7 @@ msgstr "Lista"
281
  #: classes/class-fl-builder-service-aweber.php:219
282
  msgid ""
283
  "There was an error subscribing to AWeber. The account is no longer connected."
284
- msgstr "Hubo un error suscribirse a AWeber. La cuenta ya no está conectada."
285
 
286
  #: classes/class-fl-builder-service-aweber.php:242
287
  msgid "There was an error connecting to AWeber. Please try again."
@@ -325,8 +324,8 @@ msgid ""
325
  "Your API key can be found in your Campaign Monitor account under Account "
326
  "Settings > API Key."
327
  msgstr ""
328
- "La clave API puede encontrarse en tu cuenta Campaign Monitor bajo de campaña "
329
- "Monitor bajo Account Settings > API Key."
330
 
331
  #: classes/class-fl-builder-service-campaign-monitor.php:158
332
  msgctxt "A client account in Campaign Monitor."
@@ -338,7 +337,8 @@ msgid ""
338
  "There was an error subscribing to Campaign Monitor. The account is no longer "
339
  "connected."
340
  msgstr ""
341
- "Hubo un error suscribirse a Campaign Monitor. La cuenta ya no está conectada."
 
342
 
343
  #: classes/class-fl-builder-service-campaign-monitor.php:253
344
  msgid "There was an error subscribing to Campaign Monitor."
@@ -356,15 +356,15 @@ msgstr "Error: No se pudo conectar a Constant Contact. %s"
356
 
357
  #: classes/class-fl-builder-service-constant-contact.php:89
358
  msgid "Your Constant Contact API key."
359
- msgstr "Tu API key Constant Contact."
360
 
361
  #: classes/class-fl-builder-service-constant-contact.php:99
362
  msgid "Access Token"
363
- msgstr "Access Token"
364
 
365
  #: classes/class-fl-builder-service-constant-contact.php:100
366
  msgid "Your Constant Contact access token."
367
- msgstr "El token de acceso de contacto permanente."
368
 
369
  #: classes/class-fl-builder-service-constant-contact.php:101
370
  #, php-format
@@ -428,16 +428,17 @@ msgstr "Etiqueta"
428
  msgid ""
429
  "There was an error subscribing to Hatchbuck. The account is no longer "
430
  "connected."
431
- msgstr "Hubo un error suscribirse a Hatchbuck. La cuenta ya no está conectada."
 
432
 
433
  #: classes/class-fl-builder-service-hatchbuck.php:190
434
  msgid "There was an error subscribing to Hatchbuck. The API key is invalid."
435
- msgstr "Hubo un error suscribirse a Hatchbuck. La API key no es válida."
436
 
437
  #: classes/class-fl-builder-service-hatchbuck.php:200
438
  #: classes/class-fl-builder-service-hatchbuck.php:232
439
  msgid "There was an error subscribing to Hatchbuck."
440
- msgstr "Hubo un error suscribirse a Hatchbuck."
441
 
442
  #: classes/class-fl-builder-service-icontact.php:75
443
  msgid "Error: You must provide a username."
@@ -496,12 +497,13 @@ msgstr ""
496
  msgid ""
497
  "There was an error subscribing to iContact. The account is no longer "
498
  "connected."
499
- msgstr "Hubo un error suscribirse a iContact. La cuenta ya no está conectada."
 
500
 
501
  #: classes/class-fl-builder-service-icontact.php:280
502
  #, php-format
503
  msgid "There was an error subscribing to iContact. %s"
504
- msgstr "Hubo un error suscribirse a iContact. %s"
505
 
506
  #: classes/class-fl-builder-service-infusionsoft.php:49
507
  #, php-format
@@ -798,12 +800,12 @@ msgstr "Todas las Categorías"
798
  #: classes/class-fl-builder.php:931
799
  msgctxt "Custom taxonomy label."
800
  msgid "Parent Category"
801
- msgstr "Categoria Padre"
802
 
803
  #: classes/class-fl-builder.php:932
804
  msgctxt "Custom taxonomy label."
805
  msgid "Parent Category:"
806
- msgstr "Categoria Padre:"
807
 
808
  #: classes/class-fl-builder.php:933
809
  msgctxt "Custom taxonomy label."
@@ -847,21 +849,20 @@ msgstr "%s está actualmente activo para este %s."
847
  #, php-format
848
  msgctxt "%s stands for custom branded \"Page Builder\" name."
849
  msgid "Launch %s"
850
- msgstr "Poner en marcha %s"
851
 
852
  #: includes/admin-settings-branding.php:7
853
  msgid "White label the page builder by entering a custom name below."
854
  msgstr ""
855
- "Introduce un nombre personalizado para cambiar la marca de page builder a tu "
856
- "propia marca."
857
 
858
  #: includes/admin-settings-branding.php:10
859
  msgid ""
860
  "Additionally, you may also add a custom icon by entering the URL of an image "
861
  "below. Leave the field blank if you do not wish to use an icon."
862
  msgstr ""
863
- "Además, también puedes añadir un icono personalizado introduciendo la URL de "
864
- "una imagen. Deja el campo vacío si no quieres usar un icono."
865
 
866
  #: includes/admin-settings-branding.php:14
867
  msgid "Save Branding"
@@ -956,11 +957,11 @@ msgstr "Activar Vídeo de Ayuda"
956
 
957
  #: includes/admin-settings-help-button.php:39
958
  msgid "Help Video Embed Code"
959
- msgstr "Ayuda Código Inserción de Vídeo"
960
 
961
  #: includes/admin-settings-help-button.php:45
962
  msgid "Knowledge Base"
963
- msgstr "Base de conocimiento"
964
 
965
  #: includes/admin-settings-help-button.php:49
966
  msgid "Enable Knowledge Base"
@@ -1037,8 +1038,7 @@ msgstr "Módulos habilitados"
1037
  #: includes/admin-settings-modules.php:16
1038
  msgid "Check or uncheck modules below to enable or disable them."
1039
  msgstr ""
1040
- "Selecciona o deshabilita las siguientes opciones para activar o desactivar "
1041
- "los módulos."
1042
 
1043
  #: includes/admin-settings-modules.php:26
1044
  msgctxt "Plugin setup page: Modules."
@@ -1047,7 +1047,7 @@ msgstr "Todo"
1047
 
1048
  #: includes/admin-settings-modules.php:64
1049
  msgid "Save Module Settings"
1050
- msgstr "Guardar Ajustes"
1051
 
1052
  #: includes/admin-settings-post-types.php:18
1053
  msgid ""
@@ -1087,15 +1087,15 @@ msgid ""
1087
  "builder templates. Leave this field blank if you do not wish to override "
1088
  "core templates."
1089
  msgstr ""
1090
- "Introduce el ID del sitio en la red cuyas plantillas base deben "
1091
- "reemplazarse. Deja este campo en blanco si no deseas sobrescribir las "
1092
  "plantillas base."
1093
 
1094
  #: includes/admin-settings-templates-override.php:9
1095
  msgid ""
1096
  "Use this setting to override core builder templates with your templates."
1097
  msgstr ""
1098
- "Usa esta opción para sobrescribir las plantillas base con tus propias "
1099
  "plantillas."
1100
 
1101
  #: includes/admin-settings-templates.php:9 includes/template-settings.php:4
@@ -1137,8 +1137,8 @@ msgstr "Habilitar Plantillas Admin"
1137
  #: includes/admin-settings-templates.php:32
1138
  msgid "Use this setting to edit builder templates in the WordPress admin."
1139
  msgstr ""
1140
- "Usa esta opción para editar las plantillas desde el panel de administración "
1141
- "de WordPress."
1142
 
1143
  #: includes/admin-settings-templates.php:50
1144
  msgid "Save Template Settings"
@@ -1688,7 +1688,7 @@ msgstr "Todas"
1688
  #: includes/column-settings.php:385 includes/module-settings.php:69
1689
  #: includes/row-settings.php:589
1690
  msgid "Large Devices Only"
1691
- msgstr "Sólo dispositivos de tamaño grande"
1692
 
1693
  #: includes/column-settings.php:386 includes/module-settings.php:70
1694
  #: includes/row-settings.php:590
@@ -1718,7 +1718,7 @@ msgstr ""
1718
 
1719
  #: includes/column-settings.php:398
1720
  msgid "Medium Device Width"
1721
- msgstr "Anchura de dispositivo de tamaño mediano"
1722
 
1723
  #: includes/column-settings.php:399
1724
  msgid "The width of this column on medium devices such as tablets."
@@ -1744,11 +1744,11 @@ msgstr "Personalizada"
1744
 
1745
  #: includes/column-settings.php:415
1746
  msgid "Custom Medium Device Width"
1747
- msgstr "Personalizar anchura en dispositivo de tamaño mediano"
1748
 
1749
  #: includes/column-settings.php:426
1750
  msgid "Small Device Width"
1751
- msgstr "Anchura de dispositivo de tamaño pequeño"
1752
 
1753
  #: includes/column-settings.php:427
1754
  msgid "The width of this column on small devices such as phones."
@@ -1757,7 +1757,7 @@ msgstr ""
1757
 
1758
  #: includes/column-settings.php:443
1759
  msgid "Custom Small Device Width"
1760
- msgstr "Personalizar anchura en dispositivo de tamaño pequeño"
1761
 
1762
  #: includes/column-settings.php:455 includes/module-settings.php:115
1763
  #: includes/row-settings.php:603
@@ -1898,7 +1898,7 @@ msgid ""
1898
  "You will also be required to enter some basic CSS for this to work if you "
1899
  "choose no."
1900
  msgstr ""
1901
- "Eligiendo no se ocultá el encabezado por defecto del tema para el tipo "
1902
  "\"Página\". Necesitarás algo de CSS básico para que esto funcione si eliges "
1903
  "no."
1904
 
@@ -1961,14 +1961,14 @@ msgid ""
1961
  "margins and padding in your layout once the small device breakpoint is "
1962
  "reached. Most users will want to leave this enabled."
1963
  msgstr ""
1964
- "Cuando espaciado automático está habilitado, beaver builder ajustará "
1965
  "automáticamente los márgenes y espaciado del diseño una vez se alcance el "
1966
  "breakpoint del dispositivo. La mayoría de usuarios querrán dejar esto "
1967
  "habilitado."
1968
 
1969
  #: includes/global-settings.php:131
1970
  msgid "Medium Device Breakpoint"
1971
- msgstr "Punto de Ruptura para Dispositivos de tamaño medio"
1972
 
1973
  #: includes/global-settings.php:136
1974
  msgid ""
@@ -1980,7 +1980,7 @@ msgstr ""
1980
 
1981
  #: includes/global-settings.php:140
1982
  msgid "Small Device Breakpoint"
1983
- msgstr "Punto de Ruptura para Dispositivos de tamaño pequeño"
1984
 
1985
  #: includes/global-settings.php:145
1986
  msgid ""
@@ -2008,8 +2008,8 @@ msgid ""
2008
  "Warning! Changing the template will replace your existing layout. Do you "
2009
  "really want to do this?"
2010
  msgstr ""
2011
- "¡Advertencia! Cambiando la plantilla reemplazaras tu diseño actual. ¿Quieres "
2012
- "hacer esto?"
2013
 
2014
  #: includes/js-config.php:22
2015
  msgid "Column"
@@ -2031,7 +2031,7 @@ msgid ""
2031
  "Are you sure you want to remove this account? Other modules that are "
2032
  "connected to it will be affected."
2033
  msgstr ""
2034
- "¿Estás seguro que desesa eliminar esta cuenta? Se verán afectados los demás "
2035
  "módulos que estén relacionados con este."
2036
 
2037
  #: includes/js-config.php:27
@@ -2063,8 +2063,8 @@ msgid ""
2063
  "Do you really want to discard these changes? All of your changes that are "
2064
  "not published will be lost."
2065
  msgstr ""
2066
- "¿Quieres descartar estos cambios? Todos los cambios que no se publiquen se "
2067
- "perderán."
2068
 
2069
  #: includes/js-config.php:33 includes/ui.php:20 includes/ui.php:55
2070
  msgid "Done"
@@ -2118,7 +2118,7 @@ msgstr "Obtener Ayuda"
2118
 
2119
  #: includes/js-config.php:43
2120
  msgid "Getting Started Video"
2121
- msgstr "Video Primeros Pasos"
2122
 
2123
  #: includes/js-config.php:44
2124
  msgid "\"{message}\" on line {line} of {file}."
@@ -2162,7 +2162,7 @@ msgstr "No hay resultados."
2162
 
2163
  #: includes/js-config.php:54
2164
  msgid "No Thanks"
2165
- msgstr "No, Gracias"
2166
 
2167
  #: includes/js-config.php:55
2168
  msgid "OK"
@@ -2182,7 +2182,7 @@ msgstr "Fotos Seleccionadas"
2182
 
2183
  #: includes/js-config.php:59 modules/subscribe-form/includes/frontend.php:15
2184
  msgid "Please Wait..."
2185
- msgstr "Por favor espere..."
2186
 
2187
  #: includes/js-config.php:60
2188
  msgid "Publish Changes"
@@ -2262,15 +2262,15 @@ msgstr ""
2262
 
2263
  #: includes/js-config.php:82
2264
  msgid "Add Rows"
2265
- msgstr "Añadir filas"
2266
 
2267
  #: includes/js-config.php:83
2268
  msgid ""
2269
  "Add multi-column rows, adjust spacing, add backgrounds and more by dragging "
2270
  "and dropping row layouts onto the page."
2271
  msgstr ""
2272
- "Añadir filas multi-columna, ajustar espaciado, añadir fundos y más, "
2273
- "arrastrando y soltando diseños de fila en la página."
2274
 
2275
  #: includes/js-config.php:84 includes/ui.php:22 includes/ui.php:60
2276
  msgid "Add Content"
@@ -2281,8 +2281,8 @@ msgid ""
2281
  "Add new content by dragging and dropping modules or widgets into your row "
2282
  "layouts or to create a new row layout."
2283
  msgstr ""
2284
- "Añade contenido nuevo arrastrando y soltando módulos o widgets en tu fila o "
2285
- "bien para crear una nueva distribución de fila."
2286
 
2287
  #: includes/js-config.php:86
2288
  msgid "Edit Content"
@@ -2313,7 +2313,7 @@ msgid ""
2313
  "layouts, modules or widgets."
2314
  msgstr ""
2315
  "Utiliza el botón Añadir Contenido para abrir el panel de contenido y añadir "
2316
- "diseños, módulos o widgets."
2317
 
2318
  #: includes/js-config.php:91
2319
  msgid "Change Templates"
@@ -2325,9 +2325,9 @@ msgid ""
2325
  "layout. Appending will insert a new template at the end of your existing "
2326
  "page content."
2327
  msgstr ""
2328
- "Usa el botón de Plantillas para escoger una nueva plantilla o adjuntar una "
2329
- "plantilla a tú diseño ya existente. Adjuntar insertará una nueva plantilla "
2330
- "al final de tu diseño."
2331
 
2332
  #: includes/js-config.php:93
2333
  msgid "Helpful Tools"
@@ -2355,7 +2355,7 @@ msgstr ""
2355
 
2356
  #: includes/js-config.php:97
2357
  msgid "Let's Get Building!"
2358
- msgstr "Empezar a Diseñar!"
2359
 
2360
  #: includes/js-config.php:98
2361
  msgid ""
@@ -2363,9 +2363,9 @@ msgid ""
2363
  "you need help, click the help icon in the upper right corner to access the "
2364
  "help menu. Happy building!"
2365
  msgstr ""
2366
- "Ahora que ya sabes lo básico, estás listo para empezar a diseñar! Si "
2367
  "necesitas ayuda en cualquier momento, haz clic en el icono de ayuda en la "
2368
- "esquina superior derecha para acceder al menú de ayuda. ¡Happy building!"
2369
 
2370
  #: includes/js-config.php:99
2371
  msgid ""
@@ -2392,11 +2392,11 @@ msgid ""
2392
  "Would you like to take a tour?"
2393
  msgstr ""
2394
  "¡Bienvenido! Parece que es la primera vez que utilizas este editor. ¿Te "
2395
- "gustaría realizar un tour?"
2396
 
2397
  #: includes/js-config.php:104
2398
  msgid "Yes Please!"
2399
- msgstr "Sí, por favor!"
2400
 
2401
  #: includes/loop-settings.php:20
2402
  msgid "Post Type"
@@ -2455,7 +2455,9 @@ msgstr "Offset"
2455
 
2456
  #: includes/loop-settings.php:55
2457
  msgid "Skip this many posts that match the specified criteria."
2458
- msgstr "Omitir entradas que coincidan con los criterios especificados."
 
 
2459
 
2460
  #: includes/loop-settings.php:62
2461
  msgid "Filter"
@@ -2594,9 +2596,9 @@ msgid ""
2594
  "Full width content spans the width of the page from edge to edge. Fixed "
2595
  "content is no wider than the Row Max Width set in the Global Settings."
2596
  msgstr ""
2597
- "Los contenidos a anchura completa abarcan todo el ancho de la página de lado "
2598
- "a lado. El contenido fijo no es más ancho que la Anchura Máxima de la Fila "
2599
- "establecida en la Configuración Global."
2600
 
2601
  #: includes/row-settings.php:71
2602
  msgctxt "Background type."
@@ -2615,7 +2617,7 @@ msgstr "Parallax"
2615
 
2616
  #: includes/row-settings.php:203
2617
  msgid "Background Video"
2618
- msgstr "Fondo de Video"
2619
 
2620
  #: includes/row-settings.php:207 modules/content-slider/content-slider.php:336
2621
  #: modules/video/video.php:19 modules/video/video.php:100
@@ -2694,7 +2696,7 @@ msgstr "Ninguna"
2694
  #: modules/slideshow/slideshow.php:394
2695
  #: modules/testimonials/testimonials.php:103
2696
  msgid "Fade"
2697
- msgstr "Fundido"
2698
 
2699
  #: includes/row-settings.php:278 modules/slideshow/slideshow.php:395
2700
  msgid "Ken Burns"
@@ -2856,15 +2858,15 @@ msgstr "Page Builder Demo"
2856
 
2857
  #: includes/ui.php:51
2858
  msgid "Buy Now!"
2859
- msgstr "Comprar Ahora!"
2860
 
2861
  #: includes/ui.php:53
2862
  msgid "Upgrade!"
2863
- msgstr "Actualizar!"
2864
 
2865
  #: includes/ui.php:78
2866
  msgid "Row Layouts"
2867
- msgstr "Distribución de la Fila"
2868
 
2869
  #: includes/ui.php:82
2870
  msgid "1 Column"
@@ -2900,7 +2902,7 @@ msgstr "Barra Lateral Derecha"
2900
 
2901
  #: includes/ui.php:90
2902
  msgid "Left &amp; Right Sidebar"
2903
- msgstr "Izquierda & Barra Lateral Derecha"
2904
 
2905
  #: includes/updater/classes/class-fl-updater.php:132
2906
  msgid "<strong>UPDATE UNAVAILABLE!</strong>"
@@ -2926,15 +2928,15 @@ msgstr ""
2926
 
2927
  #: includes/updater/includes/form.php:11
2928
  msgid "Updates &amp; Support Subscription"
2929
- msgstr "Suscripción Actualizaciones &amp; Soporte"
2930
 
2931
  #: includes/updater/includes/form.php:14
2932
  msgid "Active!"
2933
- msgstr "Activado!"
2934
 
2935
  #: includes/updater/includes/form.php:16
2936
  msgid "Not Active!"
2937
- msgstr "No activado!"
2938
 
2939
  #: includes/updater/includes/form.php:22
2940
  msgid "Email address saved!"
@@ -2965,7 +2967,7 @@ msgstr "Acordeón"
2965
 
2966
  #: modules/accordion/accordion.php:15
2967
  msgid "Display a collapsible accordion of items."
2968
- msgstr "Mostrar un acordeón plegable de elementos."
2969
 
2970
  #: modules/accordion/accordion.php:28 modules/tabs/tabs.php:28
2971
  msgid "Items"
@@ -3037,7 +3039,7 @@ msgstr "Botón"
3037
 
3038
  #: modules/button/button.php:15
3039
  msgid "A simple call to action button."
3040
- msgstr "Un simple botón de Call to Action"
3041
 
3042
  #: modules/button/button.php:67 modules/cta/cta.php:222
3043
  msgid "Click Here"
@@ -3210,7 +3212,7 @@ msgstr "Alineación"
3210
  #: modules/callout/callout.php:255
3211
  msgid "The alignment that will apply to all elements within the callout."
3212
  msgstr ""
3213
- "La alineación que se aplicará a todos los elementos dentro del callout."
3214
 
3215
  #: modules/callout/callout.php:263 modules/cta/cta.php:147
3216
  msgid "Heading Structure"
@@ -3261,7 +3263,7 @@ msgstr "Panorama"
3261
 
3262
  #: modules/callout/callout.php:346 modules/photo/photo.php:407
3263
  msgid "Portrait"
3264
- msgstr "Vertical"
3265
 
3266
  #: modules/callout/callout.php:347 modules/photo/photo.php:408
3267
  msgid "Square"
@@ -3297,7 +3299,7 @@ msgstr "Derecha del Encabezado"
3297
 
3298
  #: modules/callout/callout.php:387
3299
  msgid "Icon Colors"
3300
- msgstr "Colores de Icono"
3301
 
3302
  #: modules/callout/callout.php:396 modules/icon-group/icon-group.php:56
3303
  #: modules/icon/icon.php:87
@@ -3316,20 +3318,20 @@ msgstr "Tamaño"
3316
  #: modules/callout/callout.php:442
3317
  #: modules/content-slider/content-slider.php:570
3318
  msgid "Call To Action"
3319
- msgstr "Call To Action"
3320
 
3321
  #: modules/callout/callout.php:450
3322
  msgid ""
3323
  "The link applies to the entire module. If choosing a call to action type "
3324
  "below, this link will also be used for the text or button."
3325
  msgstr ""
3326
- "El enlace se aplica para todo el módulo. Si eliges una llamada a la acción "
3327
  "debajo, este enlace también se utilizará para el texto o botón."
3328
 
3329
  #: modules/callout/callout.php:470
3330
  #: modules/content-slider/content-slider.php:592 modules/cta/cta.php:14
3331
  msgid "Call to Action"
3332
- msgstr "Call to Action"
3333
 
3334
  #: modules/callout/callout.php:477
3335
  #: modules/content-slider/content-slider.php:599
@@ -3371,7 +3373,7 @@ msgstr "Formulario de Contacto"
3371
 
3372
  #: modules/contact-form/contact-form.php:15
3373
  msgid "A very simple contact form."
3374
- msgstr "Un formulario de contacto sencillo."
3375
 
3376
  #: modules/contact-form/contact-form.php:31
3377
  msgid "Contact Form Submission"
@@ -3396,7 +3398,7 @@ msgstr "El formulario se enviará a este e-mail"
3396
  #: modules/contact-form/contact-form.php:75
3397
  #: modules/subscribe-form/subscribe-form.php:107
3398
  msgid "Name Field"
3399
- msgstr "Nombre de Campo"
3400
 
3401
  #: modules/contact-form/contact-form.php:78
3402
  #: modules/contact-form/contact-form.php:87
@@ -3422,7 +3424,7 @@ msgstr "Ocultar"
3422
 
3423
  #: modules/contact-form/contact-form.php:84
3424
  msgid "Subject Field"
3425
- msgstr "Campo Asunto"
3426
 
3427
  #: modules/contact-form/contact-form.php:93
3428
  msgid "Email Field"
@@ -3430,7 +3432,7 @@ msgstr "Campo de Email"
3430
 
3431
  #: modules/contact-form/contact-form.php:102
3432
  msgid "Phone Field"
3433
- msgstr "Campo Teléfono"
3434
 
3435
  #: modules/contact-form/includes/frontend.php:5
3436
  msgctxt "Contact form field label."
@@ -3453,7 +3455,7 @@ msgstr "Asunto"
3453
 
3454
  #: modules/contact-form/includes/frontend.php:14
3455
  msgid "Please enter a subject."
3456
- msgstr "Introduce un asunto, por favor."
3457
 
3458
  #: modules/contact-form/includes/frontend.php:21
3459
  msgid "Email"
@@ -3461,7 +3463,7 @@ msgstr "Email"
3461
 
3462
  #: modules/contact-form/includes/frontend.php:22
3463
  msgid "Please enter a valid email."
3464
- msgstr "Introduzca un correo electrónico válido."
3465
 
3466
  #: modules/contact-form/includes/frontend.php:23
3467
  msgid "Your email"
@@ -3473,11 +3475,11 @@ msgstr "Teléfono"
3473
 
3474
  #: modules/contact-form/includes/frontend.php:30
3475
  msgid "Please enter a valid phone number."
3476
- msgstr "Por favor, introduce un teléfono válido."
3477
 
3478
  #: modules/contact-form/includes/frontend.php:31
3479
  msgid "Your phone"
3480
- msgstr "Teléfono"
3481
 
3482
  #: modules/contact-form/includes/frontend.php:36
3483
  msgid "Your Message"
@@ -3497,7 +3499,7 @@ msgstr "Enviar"
3497
 
3498
  #: modules/contact-form/includes/frontend.php:44
3499
  msgid "Message Sent!"
3500
- msgstr "Mensaje Enviado!"
3501
 
3502
  #: modules/contact-form/includes/frontend.php:45
3503
  msgid "Message failed. Please try again."
@@ -3562,11 +3564,11 @@ msgstr "La anchura máxima que tendrá el área de contenido en las diapositivas
3562
 
3563
  #: modules/content-slider/content-slider.php:289
3564
  msgid "Slides"
3565
- msgstr "Slides (Diapositivas)"
3566
 
3567
  #: modules/content-slider/content-slider.php:296
3568
  msgid "Slide"
3569
- msgstr "Diapositiva"
3570
 
3571
  #: modules/content-slider/content-slider.php:311
3572
  msgid "Slide Settings"
@@ -3574,15 +3576,15 @@ msgstr "Configuración de la Diapositiva"
3574
 
3575
  #: modules/content-slider/content-slider.php:321
3576
  msgid "Slide Label"
3577
- msgstr "Etiqueta Slide"
3578
 
3579
  #: modules/content-slider/content-slider.php:322
3580
  msgid ""
3581
  "A label to identify this slide on the Slides tab of the Content Slider "
3582
  "settings."
3583
  msgstr ""
3584
- "Una etiqueta para identificar esta diapositiva en la ficha diapositivas de "
3585
- "la configuración de contenido Slider."
3586
 
3587
  #: modules/content-slider/content-slider.php:327
3588
  msgid "Background Layout"
@@ -3590,11 +3592,11 @@ msgstr "Diseño de Fondo"
3590
 
3591
  #: modules/content-slider/content-slider.php:333
3592
  msgid "This setting is for the entire background of your slide."
3593
- msgstr "Esta configuración es todo el fondo de la diapositiva."
3594
 
3595
  #: modules/content-slider/content-slider.php:368
3596
  msgid "Background Video Code"
3597
- msgstr "Código Video de Fondo"
3598
 
3599
  #: modules/content-slider/content-slider.php:374
3600
  msgid "Content Layout"
@@ -3606,9 +3608,9 @@ msgid ""
3606
  "selection above. The location of the content layout can be selected in the "
3607
  "style tab."
3608
  msgstr ""
3609
- "Permite añadir contenido sobre o además de la selección de fondo anterior. "
3610
- "Puedes seleccionar la ubicación del diseño del contenido en la pestaña "
3611
- "estilo."
3612
 
3613
  #: modules/content-slider/content-slider.php:383
3614
  msgid "Text &amp; Photo"
@@ -3625,7 +3627,7 @@ msgstr "Ninguno"
3625
 
3626
  #: modules/content-slider/content-slider.php:408 modules/video/video.php:132
3627
  msgid "Video Embed Code"
3628
- msgstr "Código Inserción Video"
3629
 
3630
  #: modules/content-slider/content-slider.php:468
3631
  msgid "Text Position"
@@ -3672,16 +3674,16 @@ msgstr "Color de Fondo del Texto"
3672
  msgid ""
3673
  "The color applies to the overlay behind text over the background selections."
3674
  msgstr ""
3675
- "El color se aplica a la superposición detrás de texto sobre las selecciones "
3676
  "de fondo."
3677
 
3678
  #: modules/content-slider/content-slider.php:549
3679
  msgid "Text Background Opacity"
3680
- msgstr "Opacidad Texto del Fondo"
3681
 
3682
  #: modules/content-slider/content-slider.php:557
3683
  msgid "Text Background Height"
3684
- msgstr "Altura Texto del Fondo"
3685
 
3686
  #: modules/content-slider/content-slider.php:559
3687
  msgid ""
@@ -3748,11 +3750,11 @@ msgstr "Mostrar un título, subtítulo y un botón."
3748
 
3749
  #: modules/cta/cta.php:75
3750
  msgid "Ready to find out more?"
3751
- msgstr "¿Intentando convencerme?"
3752
 
3753
  #: modules/cta/cta.php:90
3754
  msgid "Drop us a line today for a free quote!"
3755
- msgstr "¡Lo haré con este Call to Action!"
3756
 
3757
  #: modules/cta/cta.php:108 modules/gallery/gallery.php:220
3758
  #: modules/post-grid/post-grid.php:44
@@ -3780,7 +3782,7 @@ msgstr "Enlace del Botón"
3780
 
3781
  #: modules/gallery/gallery.php:14 modules/post-grid/post-grid.php:55
3782
  msgid "Gallery"
3783
- msgstr "Galeria"
3784
 
3785
  #: modules/gallery/gallery.php:15
3786
  msgid "Display multiple photos in a gallery view."
@@ -3846,7 +3848,7 @@ msgstr ""
3846
 
3847
  #: modules/gallery/gallery.php:289 modules/slideshow/slideshow.php:336
3848
  msgid "Click Action"
3849
- msgstr "Acción del Clic"
3850
 
3851
  #: modules/gallery/gallery.php:292
3852
  msgctxt "Click action."
@@ -3891,19 +3893,19 @@ msgstr "Mostrar código HTML."
3891
 
3892
  #: modules/icon-group/icon-group.php:14
3893
  msgid "Icon Group"
3894
- msgstr "Grupo de Iconos"
3895
 
3896
  #: modules/icon-group/icon-group.php:15
3897
  msgid "Display a group of linked Font Awesome icons."
3898
- msgstr "Muestra un grupo de iconos Font Awesome enlazados."
3899
 
3900
  #: modules/icon-group/icon-group.php:125
3901
  msgid "Add Icon"
3902
- msgstr "Añadir Icono"
3903
 
3904
  #: modules/icon/icon.php:15
3905
  msgid "Display an icon and optional title."
3906
- msgstr "Mostrar un icono y título opcional."
3907
 
3908
  #: modules/map/map.php:14
3909
  msgid "Map"
@@ -3935,7 +3937,7 @@ msgstr "URL"
3935
 
3936
  #: modules/photo/photo.php:396
3937
  msgid "Photo URL"
3938
- msgstr "Foto URL"
3939
 
3940
  #: modules/photo/photo.php:397
3941
  msgid "http://www.example.com/my-photo.jpg"
@@ -3965,7 +3967,7 @@ msgstr "Ninguno"
3965
 
3966
  #: modules/photo/photo.php:453
3967
  msgid "Photo File"
3968
- msgstr "Foto Archivo"
3969
 
3970
  #: modules/photo/photo.php:464
3971
  msgid ""
@@ -3973,12 +3975,12 @@ msgid ""
3973
  "a specific URL, the individual photo or a separate page with the photo."
3974
  msgstr ""
3975
  "Tipo de enlace se aplica a cómo la imagen debería estar vinculada al hacer "
3976
- "clic. Puede elegir una dirección URL específica, la foto individual o una "
3977
  "página separada con la foto."
3978
 
3979
  #: modules/photo/photo.php:471 modules/slideshow/slideshow.php:357
3980
  msgid "Link URL"
3981
- msgstr "Enlace URL"
3982
 
3983
  #: modules/post-grid/includes/frontend.php:41
3984
  msgid "No posts found."
@@ -3997,7 +3999,7 @@ msgstr "Entradas"
3997
 
3998
  #: modules/post-grid/post-grid.php:15
3999
  msgid "Display a grid of your WordPress posts."
4000
- msgstr "Motrar una tabla con tus entradas de WordPress"
4001
 
4002
  #: modules/post-grid/post-grid.php:51
4003
  msgid "Layout Style"
@@ -4115,7 +4117,7 @@ msgstr "Apretado"
4115
 
4116
  #: modules/pricing-table/pricing-table.php:59
4117
  msgid "Features Min Height"
4118
- msgstr "Altura Mínima Características"
4119
 
4120
  #: modules/pricing-table/pricing-table.php:63
4121
  msgid ""
@@ -4145,7 +4147,7 @@ msgstr "Tamaño de Título"
4145
 
4146
  #: modules/pricing-table/pricing-table.php:107
4147
  msgid "Price Box"
4148
- msgstr "Precio"
4149
 
4150
  #: modules/pricing-table/pricing-table.php:111
4151
  #: modules/woocommerce/woocommerce.php:190
@@ -4196,7 +4198,7 @@ msgstr "Color Destacado"
4196
 
4197
  #: modules/pricing-table/pricing-table.php:178
4198
  msgid "Accent Text Color"
4199
- msgstr "Color Texto Destacado"
4200
 
4201
  #: modules/pricing-table/pricing-table.php:182
4202
  msgid "Box Top Margin"
@@ -4230,9 +4232,7 @@ msgstr "Barra Lateral"
4230
  #: modules/sidebar/sidebar.php:15
4231
  msgid ""
4232
  "Display a WordPress sidebar that has been registered by the current theme."
4233
- msgstr ""
4234
- "Muestra una barra lateral de WordPress que ha sido registrada por el tema "
4235
- "actual."
4236
 
4237
  #: modules/slideshow/slideshow.php:14
4238
  msgid "Slideshow"
@@ -4240,11 +4240,11 @@ msgstr "Slideshow"
4240
 
4241
  #: modules/slideshow/slideshow.php:15
4242
  msgid "Display multiple photos in a slideshow view."
4243
- msgstr "Mostrar varias fotos en una vista de presentación ."
4244
 
4245
  #: modules/slideshow/slideshow.php:303
4246
  msgid "Skin Color"
4247
- msgstr "Color del Diseño"
4248
 
4249
  #: modules/slideshow/slideshow.php:306
4250
  msgctxt "Color."
@@ -4336,19 +4336,19 @@ msgstr "Miniaturas"
4336
 
4337
  #: modules/slideshow/slideshow.php:472
4338
  msgid "Nav Position"
4339
- msgstr "Posición Navegación"
4340
 
4341
  #: modules/slideshow/slideshow.php:482
4342
  msgid "Control Bar Buttons"
4343
- msgstr "Botones Barra de Control"
4344
 
4345
  #: modules/slideshow/slideshow.php:495
4346
  msgid "Play Button"
4347
- msgstr "Botón Play"
4348
 
4349
  #: modules/slideshow/slideshow.php:504
4350
  msgid "Fullscreen Button"
4351
- msgstr "Botón Pantalla Completa"
4352
 
4353
  #: modules/slideshow/slideshow.php:513
4354
  msgid "Photo Count"
@@ -4356,11 +4356,11 @@ msgstr "Contador de Fotos"
4356
 
4357
  #: modules/slideshow/slideshow.php:522
4358
  msgid "Thumbs Button"
4359
- msgstr "Botón Miniaturas"
4360
 
4361
  #: modules/slideshow/slideshow.php:531
4362
  msgid "Caption Button"
4363
- msgstr "Botón Caption"
4364
 
4365
  #: modules/slideshow/slideshow.php:540
4366
  msgid "Social Button"
@@ -4397,7 +4397,7 @@ msgstr ""
4397
 
4398
  #: modules/slideshow/slideshow.php:579
4399
  msgid "Overlay Hide Delay"
4400
- msgstr "Retardo Ocultar Superposición"
4401
 
4402
  #: modules/slideshow/slideshow.php:591
4403
  msgid "Thumbs Size"
@@ -4421,7 +4421,7 @@ msgstr "Botón de Google Plus"
4421
 
4422
  #: modules/slideshow/slideshow.php:640
4423
  msgid "Pinterest Button"
4424
- msgstr "Botón Pinterest"
4425
 
4426
  #: modules/social-buttons/social-buttons.php:14
4427
  msgid "Social Buttons"
@@ -4446,7 +4446,7 @@ msgid ""
4446
  "whatever you put in this field."
4447
  msgstr ""
4448
  "El campo de dirección URL de destino se correlaciona con la página con la "
4449
- "que deseas que tus iconos sociales que interactúen. Por ejemplo, si muestras "
4450
  "Facebook, el usuario hará un \"Me gusta\" a lo que sea que hayas puesto en "
4451
  "este campo."
4452
 
@@ -4473,11 +4473,11 @@ msgstr "Nombre"
4473
 
4474
  #: modules/subscribe-form/includes/frontend.php:12
4475
  msgid "Please enter a valid email address."
4476
- msgstr "Por favor, introduce una dirección de email válida."
4477
 
4478
  #: modules/subscribe-form/includes/frontend.php:40
4479
  msgid "Something went wrong. Please check your entries and try again."
4480
- msgstr "Algo salió mal. Por favor revisa las entradas e inténtalo de nuevo."
4481
 
4482
  #: modules/subscribe-form/subscribe-form.php:18
4483
  msgid "Subscribe Form"
@@ -4490,7 +4490,7 @@ msgstr "Añade un formulario simple de suscripción a tu diseño."
4490
  #: modules/subscribe-form/subscribe-form.php:72
4491
  msgid "There was an error subscribing. Please try again."
4492
  msgstr ""
4493
- "Se ha producido un error al realizar la suscripción. Por favor, inténtalo de "
4494
  "nuevo."
4495
 
4496
  #: modules/subscribe-form/subscribe-form.php:117
@@ -4518,7 +4518,7 @@ msgstr ""
4518
 
4519
  #: modules/subscribe-form/subscribe-form.php:150
4520
  msgid "Success URL"
4521
- msgstr "URL Éxito"
4522
 
4523
  #: modules/subscribe-form/subscribe-form.php:168
4524
  msgid "Subscribe!"
@@ -4581,7 +4581,7 @@ msgstr "Agregar Testimonio"
4581
 
4582
  #: modules/video/video.php:20
4583
  msgid "Render a WordPress or embedable video."
4584
- msgstr "Reproducir un video WordPress o un video incrustado."
4585
 
4586
  #: modules/video/video.php:83
4587
  msgid "Video Type"
@@ -4598,7 +4598,7 @@ msgstr "Cartel"
4598
 
4599
  #: modules/video/video.php:120
4600
  msgid "Loop"
4601
- msgstr "Bucle"
4602
 
4603
  #: modules/widget/includes/frontend.php:35
4604
  #: modules/widget/includes/settings-general.php:46
@@ -4741,7 +4741,7 @@ msgstr ""
4741
 
4742
  #: modules/woocommerce/woocommerce.php:160
4743
  msgid "Category Slug"
4744
- msgstr "Categoría Slug"
4745
 
4746
  #: modules/woocommerce/woocommerce.php:162
4747
  msgid ""
3
  "Project-Id-Version: {FL_BUILDER_NAME}\n"
4
  "Report-Msgid-Bugs-To: \n"
5
  "POT-Creation-Date: 2015-05-18 10:56-0800\n"
6
+ "PO-Revision-Date: 2015-06-13 00:23-0600\n"
7
  "Last-Translator: Roberto Porcar <rporcar@arrakis.es>\n"
8
  "Language-Team: \n"
9
  "Language: es_ES\n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
+ "X-Generator: Poedit 1.8.1\n"
14
  "X-Poedit-Basepath: ..\n"
15
  "X-Poedit-SourceCharset: UTF-8\n"
16
  "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
56
  #: classes/class-fl-builder-admin-settings.php:167
57
  #: modules/icon-group/icon-group.php:27
58
  msgid "Icons"
59
+ msgstr "Íconos"
60
 
61
  #: classes/class-fl-builder-admin-settings.php:171
62
  msgid "Editing"
84
 
85
  #: classes/class-fl-builder-admin-settings.php:439
86
  msgid "Error! You must have at least one icon set enabled."
87
+ msgstr "Error! Necesitas tener al menos una colección de íconos habilitada."
88
 
89
  #: classes/class-fl-builder-admin-settings.php:481
90
  msgid "Error! Could not unzip file."
101
 
102
  #: classes/class-fl-builder-admin-settings.php:636
103
  msgid "Error! You must have at least one feature of the help button enabled."
104
+ msgstr "¡Error! Debes tener al menos una opción del botón ayuda habilitada."
 
105
 
106
  #: classes/class-fl-builder-admin.php:45
107
  #, php-format
209
  #: classes/class-fl-builder-photo.php:100
210
  msgctxt "Image size."
211
  msgid "Full Size"
212
+ msgstr "Tamaño Completo"
213
 
214
  #: classes/class-fl-builder-photo.php:101
215
  msgctxt "Image size."
228
 
229
  #: classes/class-fl-builder-service-aweber.php:72
230
  msgid "Error: You must provide an Authorization Code."
231
+ msgstr "Error: Debes proporcionar un código de autorización."
232
 
233
  #: classes/class-fl-builder-service-aweber.php:76
234
  msgid "Error: Please enter a valid Authorization Code."
235
+ msgstr "Error: Por favor, introduce un código de autorización válido."
236
 
237
  #: classes/class-fl-builder-service-aweber.php:127
238
  msgid "Authorization Code"
239
+ msgstr "Código de Autorización"
240
 
241
  #: classes/class-fl-builder-service-aweber.php:128
242
  #, php-format
280
  #: classes/class-fl-builder-service-aweber.php:219
281
  msgid ""
282
  "There was an error subscribing to AWeber. The account is no longer connected."
283
+ msgstr "Hubo un error al suscribirse a AWeber. La cuenta ya no está conectada."
284
 
285
  #: classes/class-fl-builder-service-aweber.php:242
286
  msgid "There was an error connecting to AWeber. Please try again."
324
  "Your API key can be found in your Campaign Monitor account under Account "
325
  "Settings > API Key."
326
  msgstr ""
327
+ "La clave API puede encontrarse en tu cuenta Campaign Monitor bajo Account "
328
+ "Settings > API Key."
329
 
330
  #: classes/class-fl-builder-service-campaign-monitor.php:158
331
  msgctxt "A client account in Campaign Monitor."
337
  "There was an error subscribing to Campaign Monitor. The account is no longer "
338
  "connected."
339
  msgstr ""
340
+ "Hubo un error al suscribirse a Campaign Monitor. La cuenta ya no está "
341
+ "conectada."
342
 
343
  #: classes/class-fl-builder-service-campaign-monitor.php:253
344
  msgid "There was an error subscribing to Campaign Monitor."
356
 
357
  #: classes/class-fl-builder-service-constant-contact.php:89
358
  msgid "Your Constant Contact API key."
359
+ msgstr "Tu API key de Constant Contact."
360
 
361
  #: classes/class-fl-builder-service-constant-contact.php:99
362
  msgid "Access Token"
363
+ msgstr "Token de Acceso"
364
 
365
  #: classes/class-fl-builder-service-constant-contact.php:100
366
  msgid "Your Constant Contact access token."
367
+ msgstr "El token de acceso de Contant Contact."
368
 
369
  #: classes/class-fl-builder-service-constant-contact.php:101
370
  #, php-format
428
  msgid ""
429
  "There was an error subscribing to Hatchbuck. The account is no longer "
430
  "connected."
431
+ msgstr ""
432
+ "Hubo un error al suscribirse a Hatchbuck. La cuenta ya no está conectada."
433
 
434
  #: classes/class-fl-builder-service-hatchbuck.php:190
435
  msgid "There was an error subscribing to Hatchbuck. The API key is invalid."
436
+ msgstr "Hubo un error al suscribirse a Hatchbuck. La API key no es válida."
437
 
438
  #: classes/class-fl-builder-service-hatchbuck.php:200
439
  #: classes/class-fl-builder-service-hatchbuck.php:232
440
  msgid "There was an error subscribing to Hatchbuck."
441
+ msgstr "Hubo un error al suscribirse a Hatchbuck."
442
 
443
  #: classes/class-fl-builder-service-icontact.php:75
444
  msgid "Error: You must provide a username."
497
  msgid ""
498
  "There was an error subscribing to iContact. The account is no longer "
499
  "connected."
500
+ msgstr ""
501
+ "Hubo un error al suscribirse a iContact. La cuenta ya no está conectada."
502
 
503
  #: classes/class-fl-builder-service-icontact.php:280
504
  #, php-format
505
  msgid "There was an error subscribing to iContact. %s"
506
+ msgstr "Hubo un error al suscribirse a iContact. %s"
507
 
508
  #: classes/class-fl-builder-service-infusionsoft.php:49
509
  #, php-format
800
  #: classes/class-fl-builder.php:931
801
  msgctxt "Custom taxonomy label."
802
  msgid "Parent Category"
803
+ msgstr "Categoría Padre"
804
 
805
  #: classes/class-fl-builder.php:932
806
  msgctxt "Custom taxonomy label."
807
  msgid "Parent Category:"
808
+ msgstr "Categoría Padre:"
809
 
810
  #: classes/class-fl-builder.php:933
811
  msgctxt "Custom taxonomy label."
849
  #, php-format
850
  msgctxt "%s stands for custom branded \"Page Builder\" name."
851
  msgid "Launch %s"
852
+ msgstr "Iniciar %s"
853
 
854
  #: includes/admin-settings-branding.php:7
855
  msgid "White label the page builder by entering a custom name below."
856
  msgstr ""
857
+ "Introduce un nombre personalizado para cambiar el nombre de page builder."
 
858
 
859
  #: includes/admin-settings-branding.php:10
860
  msgid ""
861
  "Additionally, you may also add a custom icon by entering the URL of an image "
862
  "below. Leave the field blank if you do not wish to use an icon."
863
  msgstr ""
864
+ "Además, también puedes añadir un ícono personalizado introduciendo la URL de "
865
+ "una imagen. Deja el campo vacío si no quieres usar un ícono."
866
 
867
  #: includes/admin-settings-branding.php:14
868
  msgid "Save Branding"
957
 
958
  #: includes/admin-settings-help-button.php:39
959
  msgid "Help Video Embed Code"
960
+ msgstr "Código de Inserción del Vídeo de Ayuda"
961
 
962
  #: includes/admin-settings-help-button.php:45
963
  msgid "Knowledge Base"
964
+ msgstr "Base de Conocimiento"
965
 
966
  #: includes/admin-settings-help-button.php:49
967
  msgid "Enable Knowledge Base"
1038
  #: includes/admin-settings-modules.php:16
1039
  msgid "Check or uncheck modules below to enable or disable them."
1040
  msgstr ""
1041
+ "Selecciona las siguientes opciones para activar o desactivar los módulos."
 
1042
 
1043
  #: includes/admin-settings-modules.php:26
1044
  msgctxt "Plugin setup page: Modules."
1047
 
1048
  #: includes/admin-settings-modules.php:64
1049
  msgid "Save Module Settings"
1050
+ msgstr "Guardar Ajustes de Módulos"
1051
 
1052
  #: includes/admin-settings-post-types.php:18
1053
  msgid ""
1087
  "builder templates. Leave this field blank if you do not wish to override "
1088
  "core templates."
1089
  msgstr ""
1090
+ "Introduce el ID del sitio en la red cuyas plantillas deben reemplazar las "
1091
+ "plantillas base. Deja este campo en blanco si no deseas sobreescribir las "
1092
  "plantillas base."
1093
 
1094
  #: includes/admin-settings-templates-override.php:9
1095
  msgid ""
1096
  "Use this setting to override core builder templates with your templates."
1097
  msgstr ""
1098
+ "Usa esta opción para sobreescribir las plantillas base con tus propias "
1099
  "plantillas."
1100
 
1101
  #: includes/admin-settings-templates.php:9 includes/template-settings.php:4
1137
  #: includes/admin-settings-templates.php:32
1138
  msgid "Use this setting to edit builder templates in the WordPress admin."
1139
  msgstr ""
1140
+ "Usa esta opción para editar las plantillas desde el escritorio de "
1141
+ "Adminitración."
1142
 
1143
  #: includes/admin-settings-templates.php:50
1144
  msgid "Save Template Settings"
1688
  #: includes/column-settings.php:385 includes/module-settings.php:69
1689
  #: includes/row-settings.php:589
1690
  msgid "Large Devices Only"
1691
+ msgstr "Sólo dispositivos grandes"
1692
 
1693
  #: includes/column-settings.php:386 includes/module-settings.php:70
1694
  #: includes/row-settings.php:590
1718
 
1719
  #: includes/column-settings.php:398
1720
  msgid "Medium Device Width"
1721
+ msgstr "Anchura de dispositivo mediano"
1722
 
1723
  #: includes/column-settings.php:399
1724
  msgid "The width of this column on medium devices such as tablets."
1744
 
1745
  #: includes/column-settings.php:415
1746
  msgid "Custom Medium Device Width"
1747
+ msgstr "Personalizar anchura en dispositivo mediano"
1748
 
1749
  #: includes/column-settings.php:426
1750
  msgid "Small Device Width"
1751
+ msgstr "Anchura de dispositivo pequeño"
1752
 
1753
  #: includes/column-settings.php:427
1754
  msgid "The width of this column on small devices such as phones."
1757
 
1758
  #: includes/column-settings.php:443
1759
  msgid "Custom Small Device Width"
1760
+ msgstr "Personalizar anchura en dispositivo pequeño"
1761
 
1762
  #: includes/column-settings.php:455 includes/module-settings.php:115
1763
  #: includes/row-settings.php:603
1898
  "You will also be required to enter some basic CSS for this to work if you "
1899
  "choose no."
1900
  msgstr ""
1901
+ "Eligiendo no se ocultará el encabezado predeterminado del tema para el tipo "
1902
  "\"Página\". Necesitarás algo de CSS básico para que esto funcione si eliges "
1903
  "no."
1904
 
1961
  "margins and padding in your layout once the small device breakpoint is "
1962
  "reached. Most users will want to leave this enabled."
1963
  msgstr ""
1964
+ "Cuando el auto espaciado está habilitado, beaver builder ajustará "
1965
  "automáticamente los márgenes y espaciado del diseño una vez se alcance el "
1966
  "breakpoint del dispositivo. La mayoría de usuarios querrán dejar esto "
1967
  "habilitado."
1968
 
1969
  #: includes/global-settings.php:131
1970
  msgid "Medium Device Breakpoint"
1971
+ msgstr "Punto de Ruptura para Dispositivo medio"
1972
 
1973
  #: includes/global-settings.php:136
1974
  msgid ""
1980
 
1981
  #: includes/global-settings.php:140
1982
  msgid "Small Device Breakpoint"
1983
+ msgstr "Punto de Ruptura para Dispositivo pequeño"
1984
 
1985
  #: includes/global-settings.php:145
1986
  msgid ""
2008
  "Warning! Changing the template will replace your existing layout. Do you "
2009
  "really want to do this?"
2010
  msgstr ""
2011
+ "¡Advertencia! Cambiando la plantilla reemplazará tu diseño actual. "
2012
+ "¿Realmente quieres hacer esto?"
2013
 
2014
  #: includes/js-config.php:22
2015
  msgid "Column"
2031
  "Are you sure you want to remove this account? Other modules that are "
2032
  "connected to it will be affected."
2033
  msgstr ""
2034
+ "¿Estás seguro que deseas eliminar esta cuenta? Se verán afectados los demás "
2035
  "módulos que estén relacionados con este."
2036
 
2037
  #: includes/js-config.php:27
2063
  "Do you really want to discard these changes? All of your changes that are "
2064
  "not published will be lost."
2065
  msgstr ""
2066
+ "¿Quieres descartar estos cambios? Todos los cambios que no están publicados "
2067
+ "se perderán."
2068
 
2069
  #: includes/js-config.php:33 includes/ui.php:20 includes/ui.php:55
2070
  msgid "Done"
2118
 
2119
  #: includes/js-config.php:43
2120
  msgid "Getting Started Video"
2121
+ msgstr "Video de Primeros Pasos"
2122
 
2123
  #: includes/js-config.php:44
2124
  msgid "\"{message}\" on line {line} of {file}."
2162
 
2163
  #: includes/js-config.php:54
2164
  msgid "No Thanks"
2165
+ msgstr "No, gracias"
2166
 
2167
  #: includes/js-config.php:55
2168
  msgid "OK"
2182
 
2183
  #: includes/js-config.php:59 modules/subscribe-form/includes/frontend.php:15
2184
  msgid "Please Wait..."
2185
+ msgstr "Por favor espera…"
2186
 
2187
  #: includes/js-config.php:60
2188
  msgid "Publish Changes"
2262
 
2263
  #: includes/js-config.php:82
2264
  msgid "Add Rows"
2265
+ msgstr "Añadir Filas"
2266
 
2267
  #: includes/js-config.php:83
2268
  msgid ""
2269
  "Add multi-column rows, adjust spacing, add backgrounds and more by dragging "
2270
  "and dropping row layouts onto the page."
2271
  msgstr ""
2272
+ "Añade filas multi-columna, ajusta el espaciado, añade fondos y más "
2273
+ "simplemente arrastrando y soltando diseños de fila en la página."
2274
 
2275
  #: includes/js-config.php:84 includes/ui.php:22 includes/ui.php:60
2276
  msgid "Add Content"
2281
  "Add new content by dragging and dropping modules or widgets into your row "
2282
  "layouts or to create a new row layout."
2283
  msgstr ""
2284
+ "Añade contenido nuevo arrastrando y soltando módulos o widgets en una fila "
2285
+ "existente, o bien para crear una nueva fila."
2286
 
2287
  #: includes/js-config.php:86
2288
  msgid "Edit Content"
2313
  "layouts, modules or widgets."
2314
  msgstr ""
2315
  "Utiliza el botón Añadir Contenido para abrir el panel de contenido y añadir "
2316
+ "filas, módulos o widgets."
2317
 
2318
  #: includes/js-config.php:91
2319
  msgid "Change Templates"
2325
  "layout. Appending will insert a new template at the end of your existing "
2326
  "page content."
2327
  msgstr ""
2328
+ "Usa el botón de Plantillas para escoger una nueva plantilla o adjuntarla a "
2329
+ "tú diseño ya existente. Adjuntar insertará el contenido de la nueva "
2330
+ "plantilla al final de tu diseño existente."
2331
 
2332
  #: includes/js-config.php:93
2333
  msgid "Helpful Tools"
2355
 
2356
  #: includes/js-config.php:97
2357
  msgid "Let's Get Building!"
2358
+ msgstr "¡Empieza a Diseñar!"
2359
 
2360
  #: includes/js-config.php:98
2361
  msgid ""
2363
  "you need help, click the help icon in the upper right corner to access the "
2364
  "help menu. Happy building!"
2365
  msgstr ""
2366
+ "Ahora que ya sabes lo básico, estás listo para empezar a diseñar. Si "
2367
  "necesitas ayuda en cualquier momento, haz clic en el icono de ayuda en la "
2368
+ "esquina superior derecha para acceder al menú de ayuda. ¡Que te diviertas!"
2369
 
2370
  #: includes/js-config.php:99
2371
  msgid ""
2392
  "Would you like to take a tour?"
2393
  msgstr ""
2394
  "¡Bienvenido! Parece que es la primera vez que utilizas este editor. ¿Te "
2395
+ "gustaría realizar un tour de 2 minutos?"
2396
 
2397
  #: includes/js-config.php:104
2398
  msgid "Yes Please!"
2399
+ msgstr "¡Sí por favor!"
2400
 
2401
  #: includes/loop-settings.php:20
2402
  msgid "Post Type"
2455
 
2456
  #: includes/loop-settings.php:55
2457
  msgid "Skip this many posts that match the specified criteria."
2458
+ msgstr ""
2459
+ "Omitir esta cantidad de entradas que coincidan con los criterios "
2460
+ "especificados."
2461
 
2462
  #: includes/loop-settings.php:62
2463
  msgid "Filter"
2596
  "Full width content spans the width of the page from edge to edge. Fixed "
2597
  "content is no wider than the Row Max Width set in the Global Settings."
2598
  msgstr ""
2599
+ "Los contenidos con anchura completa abarcan todo el ancho de la página de "
2600
+ "lado a lado. El contenido fijo no es más ancho que la Anchura Máxima de la "
2601
+ "Fila establecida en la Configuración Global."
2602
 
2603
  #: includes/row-settings.php:71
2604
  msgctxt "Background type."
2617
 
2618
  #: includes/row-settings.php:203
2619
  msgid "Background Video"
2620
+ msgstr "Fondo con Video"
2621
 
2622
  #: includes/row-settings.php:207 modules/content-slider/content-slider.php:336
2623
  #: modules/video/video.php:19 modules/video/video.php:100
2696
  #: modules/slideshow/slideshow.php:394
2697
  #: modules/testimonials/testimonials.php:103
2698
  msgid "Fade"
2699
+ msgstr "Desvanecer"
2700
 
2701
  #: includes/row-settings.php:278 modules/slideshow/slideshow.php:395
2702
  msgid "Ken Burns"
2858
 
2859
  #: includes/ui.php:51
2860
  msgid "Buy Now!"
2861
+ msgstr "¡Comprar Ahora!"
2862
 
2863
  #: includes/ui.php:53
2864
  msgid "Upgrade!"
2865
+ msgstr "¡Actualizar!"
2866
 
2867
  #: includes/ui.php:78
2868
  msgid "Row Layouts"
2869
+ msgstr "Diseños de Fila"
2870
 
2871
  #: includes/ui.php:82
2872
  msgid "1 Column"
2902
 
2903
  #: includes/ui.php:90
2904
  msgid "Left &amp; Right Sidebar"
2905
+ msgstr "Barra Lateral Derecha & Izquierda"
2906
 
2907
  #: includes/updater/classes/class-fl-updater.php:132
2908
  msgid "<strong>UPDATE UNAVAILABLE!</strong>"
2928
 
2929
  #: includes/updater/includes/form.php:11
2930
  msgid "Updates &amp; Support Subscription"
2931
+ msgstr "Suscripción de Actualizaciones &amp; Soporte"
2932
 
2933
  #: includes/updater/includes/form.php:14
2934
  msgid "Active!"
2935
+ msgstr "¡Activado!"
2936
 
2937
  #: includes/updater/includes/form.php:16
2938
  msgid "Not Active!"
2939
+ msgstr "¡No activado!"
2940
 
2941
  #: includes/updater/includes/form.php:22
2942
  msgid "Email address saved!"
2967
 
2968
  #: modules/accordion/accordion.php:15
2969
  msgid "Display a collapsible accordion of items."
2970
+ msgstr "Mostrar un acordeón desplegable de elementos."
2971
 
2972
  #: modules/accordion/accordion.php:28 modules/tabs/tabs.php:28
2973
  msgid "Items"
3039
 
3040
  #: modules/button/button.php:15
3041
  msgid "A simple call to action button."
3042
+ msgstr "Un simple botón de llamado de acción"
3043
 
3044
  #: modules/button/button.php:67 modules/cta/cta.php:222
3045
  msgid "Click Here"
3212
  #: modules/callout/callout.php:255
3213
  msgid "The alignment that will apply to all elements within the callout."
3214
  msgstr ""
3215
+ "La alineación que se aplicará a todos los elementos dentro de la leyenda."
3216
 
3217
  #: modules/callout/callout.php:263 modules/cta/cta.php:147
3218
  msgid "Heading Structure"
3263
 
3264
  #: modules/callout/callout.php:346 modules/photo/photo.php:407
3265
  msgid "Portrait"
3266
+ msgstr "Retrato"
3267
 
3268
  #: modules/callout/callout.php:347 modules/photo/photo.php:408
3269
  msgid "Square"
3299
 
3300
  #: modules/callout/callout.php:387
3301
  msgid "Icon Colors"
3302
+ msgstr "Colores del Icono"
3303
 
3304
  #: modules/callout/callout.php:396 modules/icon-group/icon-group.php:56
3305
  #: modules/icon/icon.php:87
3318
  #: modules/callout/callout.php:442
3319
  #: modules/content-slider/content-slider.php:570
3320
  msgid "Call To Action"
3321
+ msgstr "Llamado de Acción"
3322
 
3323
  #: modules/callout/callout.php:450
3324
  msgid ""
3325
  "The link applies to the entire module. If choosing a call to action type "
3326
  "below, this link will also be used for the text or button."
3327
  msgstr ""
3328
+ "El enlace se aplica para todo el módulo. Si eliges una llamada de acción "
3329
  "debajo, este enlace también se utilizará para el texto o botón."
3330
 
3331
  #: modules/callout/callout.php:470
3332
  #: modules/content-slider/content-slider.php:592 modules/cta/cta.php:14
3333
  msgid "Call to Action"
3334
+ msgstr "Llamado de Acción"
3335
 
3336
  #: modules/callout/callout.php:477
3337
  #: modules/content-slider/content-slider.php:599
3373
 
3374
  #: modules/contact-form/contact-form.php:15
3375
  msgid "A very simple contact form."
3376
+ msgstr "Un formulario de contacto simple."
3377
 
3378
  #: modules/contact-form/contact-form.php:31
3379
  msgid "Contact Form Submission"
3398
  #: modules/contact-form/contact-form.php:75
3399
  #: modules/subscribe-form/subscribe-form.php:107
3400
  msgid "Name Field"
3401
+ msgstr "Campo de Nombre"
3402
 
3403
  #: modules/contact-form/contact-form.php:78
3404
  #: modules/contact-form/contact-form.php:87
3424
 
3425
  #: modules/contact-form/contact-form.php:84
3426
  msgid "Subject Field"
3427
+ msgstr "Campo de Asunto"
3428
 
3429
  #: modules/contact-form/contact-form.php:93
3430
  msgid "Email Field"
3432
 
3433
  #: modules/contact-form/contact-form.php:102
3434
  msgid "Phone Field"
3435
+ msgstr "Campo de Teléfono"
3436
 
3437
  #: modules/contact-form/includes/frontend.php:5
3438
  msgctxt "Contact form field label."
3455
 
3456
  #: modules/contact-form/includes/frontend.php:14
3457
  msgid "Please enter a subject."
3458
+ msgstr "Por favor introduzca un asunto."
3459
 
3460
  #: modules/contact-form/includes/frontend.php:21
3461
  msgid "Email"
3463
 
3464
  #: modules/contact-form/includes/frontend.php:22
3465
  msgid "Please enter a valid email."
3466
+ msgstr "Por favor introduzca un correo electrónico válido."
3467
 
3468
  #: modules/contact-form/includes/frontend.php:23
3469
  msgid "Your email"
3475
 
3476
  #: modules/contact-form/includes/frontend.php:30
3477
  msgid "Please enter a valid phone number."
3478
+ msgstr "Por favor introduzca un teléfono válido."
3479
 
3480
  #: modules/contact-form/includes/frontend.php:31
3481
  msgid "Your phone"
3482
+ msgstr "Su número de teléfono"
3483
 
3484
  #: modules/contact-form/includes/frontend.php:36
3485
  msgid "Your Message"
3499
 
3500
  #: modules/contact-form/includes/frontend.php:44
3501
  msgid "Message Sent!"
3502
+ msgstr "¡Mensaje Enviado!"
3503
 
3504
  #: modules/contact-form/includes/frontend.php:45
3505
  msgid "Message failed. Please try again."
3564
 
3565
  #: modules/content-slider/content-slider.php:289
3566
  msgid "Slides"
3567
+ msgstr "Diapositivas (slides)"
3568
 
3569
  #: modules/content-slider/content-slider.php:296
3570
  msgid "Slide"
3571
+ msgstr "Diapositiva (slide)"
3572
 
3573
  #: modules/content-slider/content-slider.php:311
3574
  msgid "Slide Settings"
3576
 
3577
  #: modules/content-slider/content-slider.php:321
3578
  msgid "Slide Label"
3579
+ msgstr "Etiqueta de Slide"
3580
 
3581
  #: modules/content-slider/content-slider.php:322
3582
  msgid ""
3583
  "A label to identify this slide on the Slides tab of the Content Slider "
3584
  "settings."
3585
  msgstr ""
3586
+ "Una etiqueta para identificar esta diapositiva en la ficha de diapositivas "
3587
+ "de la configuración del contenido deslizante."
3588
 
3589
  #: modules/content-slider/content-slider.php:327
3590
  msgid "Background Layout"
3592
 
3593
  #: modules/content-slider/content-slider.php:333
3594
  msgid "This setting is for the entire background of your slide."
3595
+ msgstr "Esta configuración es para todo el fondo de la diapositiva."
3596
 
3597
  #: modules/content-slider/content-slider.php:368
3598
  msgid "Background Video Code"
3599
+ msgstr "Código de Video de Fondo"
3600
 
3601
  #: modules/content-slider/content-slider.php:374
3602
  msgid "Content Layout"
3608
  "selection above. The location of the content layout can be selected in the "
3609
  "style tab."
3610
  msgstr ""
3611
+ "Permite añadir contenido sobre, o en adición de la selección de fondo "
3612
+ "anterior. Puedes seleccionar la ubicación del diseño de contenido en la "
3613
+ "pestaña estilo."
3614
 
3615
  #: modules/content-slider/content-slider.php:383
3616
  msgid "Text &amp; Photo"
3627
 
3628
  #: modules/content-slider/content-slider.php:408 modules/video/video.php:132
3629
  msgid "Video Embed Code"
3630
+ msgstr "Código de Inserción del Video"
3631
 
3632
  #: modules/content-slider/content-slider.php:468
3633
  msgid "Text Position"
3674
  msgid ""
3675
  "The color applies to the overlay behind text over the background selections."
3676
  msgstr ""
3677
+ "El color se aplica a la superposición detrás del texto sobre las selecciones "
3678
  "de fondo."
3679
 
3680
  #: modules/content-slider/content-slider.php:549
3681
  msgid "Text Background Opacity"
3682
+ msgstr "Opacidad del fondo del texto"
3683
 
3684
  #: modules/content-slider/content-slider.php:557
3685
  msgid "Text Background Height"
3686
+ msgstr "Altura del fondo del texto"
3687
 
3688
  #: modules/content-slider/content-slider.php:559
3689
  msgid ""
3750
 
3751
  #: modules/cta/cta.php:75
3752
  msgid "Ready to find out more?"
3753
+ msgstr "¿Listo para saber más?"
3754
 
3755
  #: modules/cta/cta.php:90
3756
  msgid "Drop us a line today for a free quote!"
3757
+ msgstr "¡Contáctanos para una cotización!"
3758
 
3759
  #: modules/cta/cta.php:108 modules/gallery/gallery.php:220
3760
  #: modules/post-grid/post-grid.php:44
3782
 
3783
  #: modules/gallery/gallery.php:14 modules/post-grid/post-grid.php:55
3784
  msgid "Gallery"
3785
+ msgstr "Galería"
3786
 
3787
  #: modules/gallery/gallery.php:15
3788
  msgid "Display multiple photos in a gallery view."
3848
 
3849
  #: modules/gallery/gallery.php:289 modules/slideshow/slideshow.php:336
3850
  msgid "Click Action"
3851
+ msgstr "Acción al Clic"
3852
 
3853
  #: modules/gallery/gallery.php:292
3854
  msgctxt "Click action."
3893
 
3894
  #: modules/icon-group/icon-group.php:14
3895
  msgid "Icon Group"
3896
+ msgstr "Grupo de Íconos"
3897
 
3898
  #: modules/icon-group/icon-group.php:15
3899
  msgid "Display a group of linked Font Awesome icons."
3900
+ msgstr "Muestra un grupo de íconos con un enlace."
3901
 
3902
  #: modules/icon-group/icon-group.php:125
3903
  msgid "Add Icon"
3904
+ msgstr "Añadir Ícono"
3905
 
3906
  #: modules/icon/icon.php:15
3907
  msgid "Display an icon and optional title."
3908
+ msgstr "Mostrar un ícono y título opcional."
3909
 
3910
  #: modules/map/map.php:14
3911
  msgid "Map"
3937
 
3938
  #: modules/photo/photo.php:396
3939
  msgid "Photo URL"
3940
+ msgstr "URL de la foto"
3941
 
3942
  #: modules/photo/photo.php:397
3943
  msgid "http://www.example.com/my-photo.jpg"
3967
 
3968
  #: modules/photo/photo.php:453
3969
  msgid "Photo File"
3970
+ msgstr "Archivo de la foto"
3971
 
3972
  #: modules/photo/photo.php:464
3973
  msgid ""
3975
  "a specific URL, the individual photo or a separate page with the photo."
3976
  msgstr ""
3977
  "Tipo de enlace se aplica a cómo la imagen debería estar vinculada al hacer "
3978
+ "clic. Puedes elegir una dirección URL específica, la foto individual o una "
3979
  "página separada con la foto."
3980
 
3981
  #: modules/photo/photo.php:471 modules/slideshow/slideshow.php:357
3982
  msgid "Link URL"
3983
+ msgstr "URL de enlace"
3984
 
3985
  #: modules/post-grid/includes/frontend.php:41
3986
  msgid "No posts found."
3999
 
4000
  #: modules/post-grid/post-grid.php:15
4001
  msgid "Display a grid of your WordPress posts."
4002
+ msgstr "Mostrar una cuadricula con tus entradas."
4003
 
4004
  #: modules/post-grid/post-grid.php:51
4005
  msgid "Layout Style"
4117
 
4118
  #: modules/pricing-table/pricing-table.php:59
4119
  msgid "Features Min Height"
4120
+ msgstr "Altura Mínima de Características"
4121
 
4122
  #: modules/pricing-table/pricing-table.php:63
4123
  msgid ""
4147
 
4148
  #: modules/pricing-table/pricing-table.php:107
4149
  msgid "Price Box"
4150
+ msgstr "Caja de Precio"
4151
 
4152
  #: modules/pricing-table/pricing-table.php:111
4153
  #: modules/woocommerce/woocommerce.php:190
4198
 
4199
  #: modules/pricing-table/pricing-table.php:178
4200
  msgid "Accent Text Color"
4201
+ msgstr "Color del Texto Destacado"
4202
 
4203
  #: modules/pricing-table/pricing-table.php:182
4204
  msgid "Box Top Margin"
4232
  #: modules/sidebar/sidebar.php:15
4233
  msgid ""
4234
  "Display a WordPress sidebar that has been registered by the current theme."
4235
+ msgstr "Muestra una barra lateral que ha sido registrada por el tema actual."
 
 
4236
 
4237
  #: modules/slideshow/slideshow.php:14
4238
  msgid "Slideshow"
4240
 
4241
  #: modules/slideshow/slideshow.php:15
4242
  msgid "Display multiple photos in a slideshow view."
4243
+ msgstr "Mostrar varias fotos en una vista de presentación."
4244
 
4245
  #: modules/slideshow/slideshow.php:303
4246
  msgid "Skin Color"
4247
+ msgstr "Color del Skin"
4248
 
4249
  #: modules/slideshow/slideshow.php:306
4250
  msgctxt "Color."
4336
 
4337
  #: modules/slideshow/slideshow.php:472
4338
  msgid "Nav Position"
4339
+ msgstr "Posición de Navegación"
4340
 
4341
  #: modules/slideshow/slideshow.php:482
4342
  msgid "Control Bar Buttons"
4343
+ msgstr "Botones de Barra de Control"
4344
 
4345
  #: modules/slideshow/slideshow.php:495
4346
  msgid "Play Button"
4347
+ msgstr "Botón de Play"
4348
 
4349
  #: modules/slideshow/slideshow.php:504
4350
  msgid "Fullscreen Button"
4351
+ msgstr "Botón de Pantalla Completa"
4352
 
4353
  #: modules/slideshow/slideshow.php:513
4354
  msgid "Photo Count"
4356
 
4357
  #: modules/slideshow/slideshow.php:522
4358
  msgid "Thumbs Button"
4359
+ msgstr "Botón de Miniaturas"
4360
 
4361
  #: modules/slideshow/slideshow.php:531
4362
  msgid "Caption Button"
4363
+ msgstr "Botón de Caption"
4364
 
4365
  #: modules/slideshow/slideshow.php:540
4366
  msgid "Social Button"
4397
 
4398
  #: modules/slideshow/slideshow.php:579
4399
  msgid "Overlay Hide Delay"
4400
+ msgstr "Retardo en Ocultar Superposición"
4401
 
4402
  #: modules/slideshow/slideshow.php:591
4403
  msgid "Thumbs Size"
4421
 
4422
  #: modules/slideshow/slideshow.php:640
4423
  msgid "Pinterest Button"
4424
+ msgstr "Botón de Pinterest"
4425
 
4426
  #: modules/social-buttons/social-buttons.php:14
4427
  msgid "Social Buttons"
4446
  "whatever you put in this field."
4447
  msgstr ""
4448
  "El campo de dirección URL de destino se correlaciona con la página con la "
4449
+ "que deseas que tus íconos sociales interactúen. Por ejemplo, si muestras "
4450
  "Facebook, el usuario hará un \"Me gusta\" a lo que sea que hayas puesto en "
4451
  "este campo."
4452
 
4473
 
4474
  #: modules/subscribe-form/includes/frontend.php:12
4475
  msgid "Please enter a valid email address."
4476
+ msgstr "Por favor, introduzca una dirección de email válida."
4477
 
4478
  #: modules/subscribe-form/includes/frontend.php:40
4479
  msgid "Something went wrong. Please check your entries and try again."
4480
+ msgstr "Algo salió mal. Por favor revise las entradas e inténtelo de nuevo."
4481
 
4482
  #: modules/subscribe-form/subscribe-form.php:18
4483
  msgid "Subscribe Form"
4490
  #: modules/subscribe-form/subscribe-form.php:72
4491
  msgid "There was an error subscribing. Please try again."
4492
  msgstr ""
4493
+ "Se ha producido un error al realizar la suscripción. Por favor, inténtelo de "
4494
  "nuevo."
4495
 
4496
  #: modules/subscribe-form/subscribe-form.php:117
4518
 
4519
  #: modules/subscribe-form/subscribe-form.php:150
4520
  msgid "Success URL"
4521
+ msgstr "URL de Éxito"
4522
 
4523
  #: modules/subscribe-form/subscribe-form.php:168
4524
  msgid "Subscribe!"
4581
 
4582
  #: modules/video/video.php:20
4583
  msgid "Render a WordPress or embedable video."
4584
+ msgstr "Reproducir un video o un video incrustado."
4585
 
4586
  #: modules/video/video.php:83
4587
  msgid "Video Type"
4598
 
4599
  #: modules/video/video.php:120
4600
  msgid "Loop"
4601
+ msgstr "Loop"
4602
 
4603
  #: modules/widget/includes/frontend.php:35
4604
  #: modules/widget/includes/settings-general.php:46
4741
 
4742
  #: modules/woocommerce/woocommerce.php:160
4743
  msgid "Category Slug"
4744
+ msgstr "Slug de Categoría"
4745
 
4746
  #: modules/woocommerce/woocommerce.php:162
4747
  msgid ""