Version Description
- Added more styling options: box-shadow, font-weight, Form Title, and Form Description
- Fixed a couple issues with activating and deactivating licences
- A few improvements for importing styles
- Add a hook for approved theme authors to add affiliate links. If the free version is packaged with a theme, the theme author can get commissions on upgrades.
- Pro Features: *
- Added Parent entry ID to view filters
- Added a button to autofill addon licenses
- Improve accuracy of time_ago for leap years
Download this release
Release Info
Developer | sswells |
Plugin | Formidable Forms – Form Builder for WordPress |
Version | 2.0.20 |
Comparing to | |
See all releases |
Code changes from version 2.0.19 to 2.0.20
- classes/controllers/FrmAddonsController.php +29 -7
- classes/controllers/FrmAppController.php +37 -0
- classes/controllers/FrmEntriesController.php +6 -5
- classes/controllers/FrmFormsController.php +2 -1
- classes/controllers/FrmHooksController.php +2 -1
- classes/controllers/FrmStylesController.php +2 -0
- classes/helpers/FrmAppHelper.php +54 -52
- classes/helpers/FrmFormsHelper.php +1 -1
- classes/helpers/FrmXMLHelper.php +62 -0
- classes/models/FrmAddon.php +6 -3
- classes/models/FrmEDD_SL_Plugin_Updater.php +62 -27
- classes/models/FrmPointers.php +346 -0
- classes/models/FrmStyle.php +7 -0
- classes/views/addons/list.php +5 -2
- classes/views/addons/settings.php +9 -2
- classes/views/frm-settings/license_box.php +2 -2
- classes/views/styles/_field-colors.php +13 -1
- classes/views/styles/_field-sizes.php +9 -0
- classes/views/styles/_form-description.php +17 -0
- classes/views/styles/_form-title.php +17 -0
- classes/views/styles/_general.php +1 -22
- classes/views/styles/_sample_form.php +2 -3
- classes/views/xml/forms_xml.php +1 -1
- css/_single_theme.css.php +16 -4
- css/frm_admin.css +2 -2
- formidable.php +1 -1
- js/formidable_admin.js +28 -3
- languages/formidable-en_US.po +414 -288
- readme.txt +12 -2
classes/controllers/FrmAddonsController.php
CHANGED
@@ -19,7 +19,6 @@ class FrmAddonsController {
|
|
19 |
$addons = $addons['products'];
|
20 |
}
|
21 |
$addons = array_reverse( $addons );
|
22 |
-
$append_affiliate = FrmAppHelper::affiliate();
|
23 |
|
24 |
$plugin_names = array(
|
25 |
'formidable-pro' => 'formidable/pro', 'wp-multilingual' => 'formidable-wpml',
|
@@ -48,6 +47,31 @@ class FrmAddonsController {
|
|
48 |
|
49 |
$url = 'https://formidablepro.com/edd-api/products?number=40';
|
50 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
$arg_array = array(
|
52 |
'body' => array(
|
53 |
'url' => home_url(),
|
@@ -59,14 +83,12 @@ class FrmAddonsController {
|
|
59 |
|
60 |
$response = wp_remote_post( $url, $arg_array );
|
61 |
$body = wp_remote_retrieve_body( $response );
|
|
|
62 |
if ( ! is_wp_error( $response ) && ! is_wp_error( $body ) ) {
|
63 |
-
$
|
64 |
-
set_transient( '
|
65 |
-
if ( is_array( $addons ) ) {
|
66 |
-
return $addons;
|
67 |
-
}
|
68 |
}
|
69 |
|
70 |
-
return
|
71 |
}
|
72 |
}
|
19 |
$addons = $addons['products'];
|
20 |
}
|
21 |
$addons = array_reverse( $addons );
|
|
|
22 |
|
23 |
$plugin_names = array(
|
24 |
'formidable-pro' => 'formidable/pro', 'wp-multilingual' => 'formidable-wpml',
|
47 |
|
48 |
$url = 'https://formidablepro.com/edd-api/products?number=40';
|
49 |
|
50 |
+
// check every 5 days
|
51 |
+
$addons = self::send_api_request( $url, array( 'name' => 'frm_api_addons', 'expires' => 60 * 60 * 24 * 5 ) );
|
52 |
+
if ( is_array( $addons ) ) {
|
53 |
+
return $addons;
|
54 |
+
}
|
55 |
+
|
56 |
+
return false;
|
57 |
+
}
|
58 |
+
|
59 |
+
public static function get_licenses() {
|
60 |
+
$license = get_option('frmpro-credentials');
|
61 |
+
if ( $license && is_array( $license ) && isset( $license['license'] ) ) {
|
62 |
+
$url = 'http://formidablepro.com/frm-edd-api/licenses?l='. urlencode( base64_encode( $license['license'] ) );
|
63 |
+
$licenses = self::send_api_request( $url, array( 'name' => 'frm_api_licence', 'expires' => 60 * 60 * 5 ) );
|
64 |
+
echo json_encode( $licenses );
|
65 |
+
}
|
66 |
+
wp_die();
|
67 |
+
}
|
68 |
+
|
69 |
+
private static function send_api_request( $url, $transient = array() ) {
|
70 |
+
$data = get_transient( $transient['name'] );
|
71 |
+
if ( $data !== false ) {
|
72 |
+
return $data;
|
73 |
+
}
|
74 |
+
|
75 |
$arg_array = array(
|
76 |
'body' => array(
|
77 |
'url' => home_url(),
|
83 |
|
84 |
$response = wp_remote_post( $url, $arg_array );
|
85 |
$body = wp_remote_retrieve_body( $response );
|
86 |
+
$data = false;
|
87 |
if ( ! is_wp_error( $response ) && ! is_wp_error( $body ) ) {
|
88 |
+
$data = json_decode( $body, true );
|
89 |
+
set_transient( $transient['name'], $data, $transient['expires'] );
|
|
|
|
|
|
|
90 |
}
|
91 |
|
92 |
+
return $data;
|
93 |
}
|
94 |
}
|
classes/controllers/FrmAppController.php
CHANGED
@@ -152,10 +152,47 @@ class FrmAppController {
|
|
152 |
$action = FrmAppHelper::simple_get( 'action', 'sanitize_title' );
|
153 |
if ( ! FrmAppHelper::doing_ajax() || $action == 'frm_import_choices' ) {
|
154 |
// don't continue during ajax calls
|
|
|
155 |
self::admin_js();
|
156 |
}
|
157 |
}
|
158 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
159 |
public static function admin_js() {
|
160 |
$version = FrmAppHelper::plugin_version();
|
161 |
FrmAppHelper::load_admin_wide_js( false );
|
152 |
$action = FrmAppHelper::simple_get( 'action', 'sanitize_title' );
|
153 |
if ( ! FrmAppHelper::doing_ajax() || $action == 'frm_import_choices' ) {
|
154 |
// don't continue during ajax calls
|
155 |
+
self::load_tour();
|
156 |
self::admin_js();
|
157 |
}
|
158 |
}
|
159 |
|
160 |
+
/**
|
161 |
+
* See if we should start our tour.
|
162 |
+
* @since 2.0.20
|
163 |
+
*/
|
164 |
+
private static function load_tour() {
|
165 |
+
$restart_tour = filter_input( INPUT_GET, 'frm_restart_tour' );
|
166 |
+
if ( $restart_tour ) {
|
167 |
+
delete_user_meta( get_current_user_id(), 'frm_ignore_tour' );
|
168 |
+
}
|
169 |
+
self::ignore_tour();
|
170 |
+
|
171 |
+
if ( ! self::has_ignored_tour() ) {
|
172 |
+
add_action( 'admin_enqueue_scripts', array( 'FrmPointers', 'get_instance' ) );
|
173 |
+
}
|
174 |
+
}
|
175 |
+
|
176 |
+
/**
|
177 |
+
* Returns the value of the ignore tour.
|
178 |
+
*
|
179 |
+
* @return bool
|
180 |
+
*/
|
181 |
+
private static function has_ignored_tour() {
|
182 |
+
$user_meta = get_user_meta( get_current_user_id(), 'frm_ignore_tour' );
|
183 |
+
|
184 |
+
return ! empty( $user_meta );
|
185 |
+
}
|
186 |
+
|
187 |
+
/**
|
188 |
+
* Listener for the ignore tour GET value. If this one is set, just set the user meta to true.
|
189 |
+
*/
|
190 |
+
private static function ignore_tour() {
|
191 |
+
if ( filter_input( INPUT_GET, 'frm_ignore_tour' ) && wp_verify_nonce( filter_input( INPUT_GET, 'nonce' ), 'frm-ignore-tour' ) ) {
|
192 |
+
update_user_meta( get_current_user_id(), 'frm_ignore_tour', true );
|
193 |
+
}
|
194 |
+
}
|
195 |
+
|
196 |
public static function admin_js() {
|
197 |
$version = FrmAppHelper::plugin_version();
|
198 |
FrmAppHelper::load_admin_wide_js( false );
|
classes/controllers/FrmEntriesController.php
CHANGED
@@ -37,7 +37,7 @@ class FrmEntriesController {
|
|
37 |
|
38 |
public static function contextual_help( $help, $screen_id, $screen ) {
|
39 |
// Only add to certain screens. add_help_tab was introduced in WordPress 3.3
|
40 |
-
if (
|
41 |
return $help;
|
42 |
}
|
43 |
|
@@ -46,6 +46,7 @@ class FrmEntriesController {
|
|
46 |
if ( $page != 'formidable-entries' || ( ! empty( $action ) && $action != 'list' ) ) {
|
47 |
return $help;
|
48 |
}
|
|
|
49 |
unset( $action, $page );
|
50 |
|
51 |
$screen->add_help_tab( array(
|
@@ -56,8 +57,8 @@ class FrmEntriesController {
|
|
56 |
|
57 |
$screen->set_help_sidebar(
|
58 |
'<p><strong>' . esc_html__( 'For more information:', 'formidable' ) . '</strong></p>' .
|
59 |
-
'<p><a href="http://formidablepro.com/knowledgebase/manage-entries-from-the-back-end/'
|
60 |
-
'<p><a href="http://formidablepro.com/help-
|
61 |
);
|
62 |
|
63 |
return $help;
|
@@ -129,8 +130,8 @@ class FrmEntriesController {
|
|
129 |
}
|
130 |
|
131 |
if ( empty( $prev_value ) ) {
|
132 |
-
|
133 |
-
|
134 |
|
135 |
global $frm_vars;
|
136 |
//add a check so we don't create a loop
|
37 |
|
38 |
public static function contextual_help( $help, $screen_id, $screen ) {
|
39 |
// Only add to certain screens. add_help_tab was introduced in WordPress 3.3
|
40 |
+
if ( ! method_exists( $screen, 'add_help_tab' ) ) {
|
41 |
return $help;
|
42 |
}
|
43 |
|
46 |
if ( $page != 'formidable-entries' || ( ! empty( $action ) && $action != 'list' ) ) {
|
47 |
return $help;
|
48 |
}
|
49 |
+
|
50 |
unset( $action, $page );
|
51 |
|
52 |
$screen->add_help_tab( array(
|
57 |
|
58 |
$screen->set_help_sidebar(
|
59 |
'<p><strong>' . esc_html__( 'For more information:', 'formidable' ) . '</strong></p>' .
|
60 |
+
'<p><a href="' . esc_url( FrmAppHelper::make_affiliate_url( 'http://formidablepro.com/knowledgebase/manage-entries-from-the-back-end/' ) ) . '" target="_blank">' . esc_html__( 'Documentation on Entries', 'formidable' ) . '</a></p>' .
|
61 |
+
'<p><a href="'. esc_url( FrmAppHelper::make_affiliate_url( 'http://formidablepro.com/help-desk/' ) ) . '" target="_blank">' . esc_html__( 'Support', 'formidable' ) . '</a></p>'
|
62 |
);
|
63 |
|
64 |
return $help;
|
130 |
}
|
131 |
|
132 |
if ( empty( $prev_value ) ) {
|
133 |
+
$prev_value = get_metadata( 'user', $object_id, $meta_key, true );
|
134 |
+
}
|
135 |
|
136 |
global $frm_vars;
|
137 |
//add a check so we don't create a loop
|
classes/controllers/FrmFormsController.php
CHANGED
@@ -413,7 +413,8 @@ class FrmFormsController {
|
|
413 |
*/
|
414 |
public static function insert_form_button() {
|
415 |
if ( current_user_can('frm_view_forms') ) {
|
416 |
-
$
|
|
|
417 |
echo wp_kses_post( $content );
|
418 |
}
|
419 |
}
|
413 |
*/
|
414 |
public static function insert_form_button() {
|
415 |
if ( current_user_can('frm_view_forms') ) {
|
416 |
+
$frm_settings = FrmAppHelper::get_settings();
|
417 |
+
$content = '<a href="#TB_inline?width=50&height=50&inlineId=frm_insert_form" class="thickbox button add_media frm_insert_form" title="' . esc_attr__( 'Add forms and content', 'formidable' ) . '"><span class="frm-buttons-icon wp-media-buttons-icon"></span> '. $frm_settings->menu .'</a>';
|
418 |
echo wp_kses_post( $content );
|
419 |
}
|
420 |
}
|
classes/controllers/FrmHooksController.php
CHANGED
@@ -140,9 +140,10 @@ class FrmHooksController {
|
|
140 |
add_action( 'wp_ajax_frm_uninstall', 'FrmAppController::uninstall' );
|
141 |
add_action( 'wp_ajax_frm_deauthorize', 'FrmAppController::deauthorize' );
|
142 |
|
143 |
-
// Addons
|
144 |
add_action('wp_ajax_frm_addon_activate', 'FrmAddon::activate' );
|
145 |
add_action('wp_ajax_frm_addon_deactivate', 'FrmAddon::deactivate' );
|
|
|
146 |
|
147 |
// Fields Controller
|
148 |
add_action( 'wp_ajax_frm_load_field', 'FrmFieldsController::load_field' );
|
140 |
add_action( 'wp_ajax_frm_uninstall', 'FrmAppController::uninstall' );
|
141 |
add_action( 'wp_ajax_frm_deauthorize', 'FrmAppController::deauthorize' );
|
142 |
|
143 |
+
// Addons
|
144 |
add_action('wp_ajax_frm_addon_activate', 'FrmAddon::activate' );
|
145 |
add_action('wp_ajax_frm_addon_deactivate', 'FrmAddon::deactivate' );
|
146 |
+
add_action( 'wp_ajax_frm_fill_licenses', 'FrmAddonsController::get_licenses' );
|
147 |
|
148 |
// Fields Controller
|
149 |
add_action( 'wp_ajax_frm_load_field', 'FrmFieldsController::load_field' );
|
classes/controllers/FrmStylesController.php
CHANGED
@@ -317,6 +317,8 @@ class FrmStylesController {
|
|
317 |
// setup meta boxes
|
318 |
$meta_boxes = array(
|
319 |
'general' => __( 'General', 'formidable' ),
|
|
|
|
|
320 |
'field-labels' => __( 'Field Labels', 'formidable' ),
|
321 |
'field-description' => __( 'Field Description', 'formidable' ),
|
322 |
'field-colors' => __( 'Field Colors', 'formidable' ),
|
317 |
// setup meta boxes
|
318 |
$meta_boxes = array(
|
319 |
'general' => __( 'General', 'formidable' ),
|
320 |
+
'form-title' => __( 'Form Title', 'formidable' ),
|
321 |
+
'form-description' => __( 'Form Description', 'formidable' ),
|
322 |
'field-labels' => __( 'Field Labels', 'formidable' ),
|
323 |
'field-description' => __( 'Field Description', 'formidable' ),
|
324 |
'field-colors' => __( 'Field Colors', 'formidable' ),
|
classes/helpers/FrmAppHelper.php
CHANGED
@@ -10,7 +10,7 @@ class FrmAppHelper {
|
|
10 |
/**
|
11 |
* @since 2.0
|
12 |
*/
|
13 |
-
public static $plug_version = '2.0.
|
14 |
|
15 |
/**
|
16 |
* @since 1.07.02
|
@@ -57,8 +57,13 @@ class FrmAppHelper {
|
|
57 |
return get_option('blogname');
|
58 |
}
|
59 |
|
60 |
-
public static function
|
61 |
-
|
|
|
|
|
|
|
|
|
|
|
62 |
}
|
63 |
|
64 |
/**
|
@@ -1229,61 +1234,58 @@ class FrmAppHelper {
|
|
1229 |
return date_i18n( $date_format, strtotime( $date ) );
|
1230 |
}
|
1231 |
|
1232 |
-
|
1233 |
-
|
1234 |
-
|
1235 |
-
|
1236 |
-
|
1237 |
-
|
1238 |
-
|
1239 |
-
|
1240 |
-
|
1241 |
-
|
1242 |
-
|
1243 |
-
|
1244 |
-
|
1245 |
-
|
1246 |
-
|
1247 |
-
array( 60, __( 'minute', 'formidable' ), __( 'minutes', 'formidable' ) ),
|
1248 |
-
array( 1, __( 'second', 'formidable' ), __( 'seconds', 'formidable' ) ),
|
1249 |
-
);
|
1250 |
-
|
1251 |
-
// Difference in seconds
|
1252 |
-
$diff = (int) ($to - $from);
|
1253 |
-
|
1254 |
-
// Something went wrong with date calculation and we ended up with a negative date.
|
1255 |
-
if ( $diff < 1 ) {
|
1256 |
-
return '0 ' . __( 'seconds', 'formidable' );
|
1257 |
-
}
|
1258 |
-
|
1259 |
-
/**
|
1260 |
-
* We only want to output one chunks of time here, eg:
|
1261 |
-
* x years
|
1262 |
-
* xx months
|
1263 |
-
* so there's only one bit of calculation below:
|
1264 |
-
*/
|
1265 |
|
1266 |
-
|
|
|
1267 |
|
1268 |
-
|
1269 |
-
for ( $i = 0, $j = count( $chunks ); $i < $j; $i++ ) {
|
1270 |
-
$seconds = $chunks[ $i ][0];
|
1271 |
|
1272 |
-
|
1273 |
-
|
1274 |
-
|
1275 |
-
|
1276 |
-
|
|
|
|
|
1277 |
|
1278 |
-
|
1279 |
-
|
1280 |
|
1281 |
-
|
1282 |
-
|
1283 |
-
}
|
1284 |
|
1285 |
-
|
1286 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1287 |
|
1288 |
/**
|
1289 |
* Added for < WP 4.0 compatability
|
10 |
/**
|
11 |
* @since 2.0
|
12 |
*/
|
13 |
+
public static $plug_version = '2.0.20';
|
14 |
|
15 |
/**
|
16 |
* @since 1.07.02
|
57 |
return get_option('blogname');
|
58 |
}
|
59 |
|
60 |
+
public static function make_affiliate_url( $url ) {
|
61 |
+
$affiliate_id = apply_filters( 'frm_affiliate_link', get_option('frm_aff') );
|
62 |
+
$allowed_affiliates = array( 'mojo' );
|
63 |
+
if ( in_array( strtolower( $affiliate_id ), $allowed_affiliates ) ) {
|
64 |
+
$url = add_query_arg( 'aff', $affiliate_id, $url );
|
65 |
+
}
|
66 |
+
return $url;
|
67 |
}
|
68 |
|
69 |
/**
|
1234 |
return date_i18n( $date_format, strtotime( $date ) );
|
1235 |
}
|
1236 |
|
1237 |
+
/**
|
1238 |
+
* Gets the time ago in words
|
1239 |
+
*
|
1240 |
+
* @param int $from in seconds
|
1241 |
+
* @param int|string $to in seconds
|
1242 |
+
* @return string $time_ago
|
1243 |
+
*/
|
1244 |
+
public static function human_time_diff( $from, $to = '' ) {
|
1245 |
+
if ( empty( $to ) ) {
|
1246 |
+
$now = new DateTime;
|
1247 |
+
} else {
|
1248 |
+
$now = new DateTime( '@' . $to );
|
1249 |
+
}
|
1250 |
+
$ago = new DateTime( '@' . $from );
|
1251 |
+
$diff = $now->diff( $ago );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1252 |
|
1253 |
+
$diff->w = floor( $diff->d / 7 );
|
1254 |
+
$diff->d -= $diff->w * 7;
|
1255 |
|
1256 |
+
$time_strings = self::get_time_strings();
|
|
|
|
|
1257 |
|
1258 |
+
foreach ( $time_strings as $k => $v ) {
|
1259 |
+
if ( $diff->$k ) {
|
1260 |
+
$time_strings[ $k ] = $diff->$k . ' ' . ( $diff->$k > 1 ? $v[1] : $v[0] );
|
1261 |
+
} else {
|
1262 |
+
unset( $time_strings[ $k ] );
|
1263 |
+
}
|
1264 |
+
}
|
1265 |
|
1266 |
+
$time_strings = array_slice( $time_strings, 0, 1 );
|
1267 |
+
$time_ago_string = $time_strings ? implode( ', ', $time_strings ) : '0 ' . __( 'seconds', 'formidable' );
|
1268 |
|
1269 |
+
return $time_ago_string;
|
1270 |
+
}
|
|
|
1271 |
|
1272 |
+
/**
|
1273 |
+
* Get the translatable time strings
|
1274 |
+
*
|
1275 |
+
* @since 2.0.20
|
1276 |
+
* @return array
|
1277 |
+
*/
|
1278 |
+
private static function get_time_strings() {
|
1279 |
+
return array(
|
1280 |
+
'y' => array( __( 'year', 'formidable' ), __( 'years', 'formidable' ) ),
|
1281 |
+
'm' => array( __( 'month', 'formidable' ), __( 'months', 'formidable' ) ),
|
1282 |
+
'w' => array( __( 'week', 'formidable' ), __( 'weeks', 'formidable' ) ),
|
1283 |
+
'd' => array( __( 'day', 'formidable' ), __( 'days', 'formidable' ) ),
|
1284 |
+
'h' => array( __( 'hour', 'formidable' ), __( 'hours', 'formidable' ) ),
|
1285 |
+
'i' => array( __( 'minute', 'formidable' ), __( 'minutes', 'formidable' ) ),
|
1286 |
+
's' => array( __( 'second', 'formidable' ), __( 'seconds', 'formidable' ) )
|
1287 |
+
);
|
1288 |
+
}
|
1289 |
|
1290 |
/**
|
1291 |
* Added for < WP 4.0 compatability
|
classes/helpers/FrmFormsHelper.php
CHANGED
@@ -263,7 +263,7 @@ SUBMIT_HTML;
|
|
263 |
} else if ( $loc == 'before' ) {
|
264 |
$default_html = <<<BEFORE_HTML
|
265 |
<legend class="frm_hidden">[form_name]</legend>
|
266 |
-
[if form_name]<h3>[form_name]</h3>[/if form_name]
|
267 |
[if form_description]<div class="frm_description">[form_description]</div>[/if form_description]
|
268 |
BEFORE_HTML;
|
269 |
} else {
|
263 |
} else if ( $loc == 'before' ) {
|
264 |
$default_html = <<<BEFORE_HTML
|
265 |
<legend class="frm_hidden">[form_name]</legend>
|
266 |
+
[if form_name]<h3 class="frm_form_title">[form_name]</h3>[/if form_name]
|
267 |
[if form_description]<div class="frm_description">[form_description]</div>[/if form_description]
|
268 |
BEFORE_HTML;
|
269 |
} else {
|
classes/helpers/FrmXMLHelper.php
CHANGED
@@ -145,6 +145,8 @@ class FrmXMLHelper {
|
|
145 |
|
146 |
$form['options'] = FrmAppHelper::maybe_json_decode($form['options']);
|
147 |
|
|
|
|
|
148 |
// if template, allow to edit if form keys match, otherwise, creation date must also match
|
149 |
$edit_query = array( 'form_key' => $form['form_key'], 'is_template' => $form['is_template'] );
|
150 |
if ( ! $form['is_template'] ) {
|
@@ -373,6 +375,38 @@ class FrmXMLHelper {
|
|
373 |
}
|
374 |
}
|
375 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
376 |
public static function import_xml_views( $views, $imported ) {
|
377 |
$imported['posts'] = array();
|
378 |
$form_action_type = FrmFormActionsController::$action_post_type;
|
@@ -683,6 +717,34 @@ class FrmXMLHelper {
|
|
683 |
$s_message[] = isset( $strings[ $type ] ) ? $strings[ $type ] : ' ' . $m . ' ' . ucfirst( $type );
|
684 |
}
|
685 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
686 |
public static function cdata( $str ) {
|
687 |
$str = maybe_unserialize($str);
|
688 |
if ( is_array($str) ) {
|
145 |
|
146 |
$form['options'] = FrmAppHelper::maybe_json_decode($form['options']);
|
147 |
|
148 |
+
self::update_custom_style_setting_on_import( $form );
|
149 |
+
|
150 |
// if template, allow to edit if form keys match, otherwise, creation date must also match
|
151 |
$edit_query = array( 'form_key' => $form['form_key'], 'is_template' => $form['is_template'] );
|
152 |
if ( ! $form['is_template'] ) {
|
375 |
}
|
376 |
}
|
377 |
|
378 |
+
/**
|
379 |
+
* Updates the custom style setting on import
|
380 |
+
*
|
381 |
+
* @since 2.0.19
|
382 |
+
* @param array $form
|
383 |
+
*
|
384 |
+
*/
|
385 |
+
private static function update_custom_style_setting_on_import( &$form ) {
|
386 |
+
if ( is_numeric( $form['options']['custom_style'] ) ) {
|
387 |
+
// Set to default
|
388 |
+
$form['options']['custom_style'] = 1;
|
389 |
+
} else {
|
390 |
+
// Replace the style name with the style ID on import
|
391 |
+
global $wpdb;
|
392 |
+
$table = $wpdb->prefix . 'posts';
|
393 |
+
$where = array(
|
394 |
+
'post_name' => $form['options']['custom_style'],
|
395 |
+
'post_type' => 'frm_styles'
|
396 |
+
);
|
397 |
+
$select = 'ID';
|
398 |
+
$style_id = FrmDb::get_var( $table, $where, $select );
|
399 |
+
|
400 |
+
if ( $style_id ) {
|
401 |
+
$form['options']['custom_style'] = $style_id;
|
402 |
+
} else {
|
403 |
+
// Set to default
|
404 |
+
$form['options']['custom_style'] = 1;
|
405 |
+
}
|
406 |
+
}
|
407 |
+
|
408 |
+
}
|
409 |
+
|
410 |
public static function import_xml_views( $views, $imported ) {
|
411 |
$imported['posts'] = array();
|
412 |
$form_action_type = FrmFormActionsController::$action_post_type;
|
717 |
$s_message[] = isset( $strings[ $type ] ) ? $strings[ $type ] : ' ' . $m . ' ' . ucfirst( $type );
|
718 |
}
|
719 |
|
720 |
+
/**
|
721 |
+
* Prepare the form options for export
|
722 |
+
*
|
723 |
+
* @since 2.0.19
|
724 |
+
* @param string $options
|
725 |
+
* @return string
|
726 |
+
*/
|
727 |
+
public static function prepare_form_options_for_export( $options ) {
|
728 |
+
$options = maybe_unserialize( $options );
|
729 |
+
// Change custom_style to the post_name instead of ID
|
730 |
+
if ( isset( $options['custom_style'] ) && 1 !== $options['custom_style'] ) {
|
731 |
+
global $wpdb;
|
732 |
+
$table = $wpdb->prefix . 'posts';
|
733 |
+
$where = array( 'ID' => $options['custom_style'] );
|
734 |
+
$select = 'post_name';
|
735 |
+
|
736 |
+
$style_name = FrmDb::get_var( $table, $where, $select );
|
737 |
+
|
738 |
+
if ( $style_name ) {
|
739 |
+
$options['custom_style'] = $style_name;
|
740 |
+
} else {
|
741 |
+
$options['custom_style'] = 1;
|
742 |
+
}
|
743 |
+
}
|
744 |
+
$options = serialize( $options );
|
745 |
+
return self::cdata( $options );
|
746 |
+
}
|
747 |
+
|
748 |
public static function cdata( $str ) {
|
749 |
$str = maybe_unserialize($str);
|
750 |
if ( is_array($str) ) {
|
classes/models/FrmAddon.php
CHANGED
@@ -69,7 +69,10 @@ class FrmAddon {
|
|
69 |
$api_data['item_id'] = $this->download_id;
|
70 |
}
|
71 |
|
72 |
-
new FrmEDD_SL_Plugin_Updater( $this->store_url, $this->plugin_file, $api_data );
|
|
|
|
|
|
|
73 |
|
74 |
add_filter( 'site_transient_update_plugins', array( &$this, 'clear_expired_download' ) );
|
75 |
}
|
@@ -202,9 +205,9 @@ class FrmAddon {
|
|
202 |
public static function deactivate() {
|
203 |
check_ajax_referer( 'frm_ajax', 'nonce' );
|
204 |
|
205 |
-
$license = stripslashes( sanitize_text_field( $_POST['license'] ) );
|
206 |
$plugin_slug = sanitize_text_field( $_POST['plugin'] );
|
207 |
$this_plugin = self::get_addon( $plugin_slug );
|
|
|
208 |
|
209 |
$response = array( 'success' => false, 'message' => '' );
|
210 |
try {
|
@@ -212,7 +215,7 @@ class FrmAddon {
|
|
212 |
$license_data = $this_plugin->send_mothership_request( 'deactivate_license', $license );
|
213 |
if ( is_array( $license_data ) && $license_data['license'] == 'deactivated' ) {
|
214 |
$response['success'] = true;
|
215 |
-
$response['message'] = __( 'That license was removed successfully', '
|
216 |
} else {
|
217 |
$response['message'] = __( 'There was an error deactivating your license.', 'formidable' );
|
218 |
}
|
69 |
$api_data['item_id'] = $this->download_id;
|
70 |
}
|
71 |
|
72 |
+
$edd = new FrmEDD_SL_Plugin_Updater( $this->store_url, $this->plugin_file, $api_data );
|
73 |
+
if ( $this->plugin_folder == 'formidable/formidable.php' ) {
|
74 |
+
remove_filter( 'plugins_api', array( $edd, 'plugins_api_filter' ), 10, 3 );
|
75 |
+
}
|
76 |
|
77 |
add_filter( 'site_transient_update_plugins', array( &$this, 'clear_expired_download' ) );
|
78 |
}
|
205 |
public static function deactivate() {
|
206 |
check_ajax_referer( 'frm_ajax', 'nonce' );
|
207 |
|
|
|
208 |
$plugin_slug = sanitize_text_field( $_POST['plugin'] );
|
209 |
$this_plugin = self::get_addon( $plugin_slug );
|
210 |
+
$license = $this_plugin->get_license();
|
211 |
|
212 |
$response = array( 'success' => false, 'message' => '' );
|
213 |
try {
|
215 |
$license_data = $this_plugin->send_mothership_request( 'deactivate_license', $license );
|
216 |
if ( is_array( $license_data ) && $license_data['license'] == 'deactivated' ) {
|
217 |
$response['success'] = true;
|
218 |
+
$response['message'] = __( 'That license was removed successfully', 'formidable' );
|
219 |
} else {
|
220 |
$response['message'] = __( 'There was an error deactivating your license.', 'formidable' );
|
221 |
}
|
classes/models/FrmEDD_SL_Plugin_Updater.php
CHANGED
@@ -12,7 +12,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
12 |
* Allows plugins to use their own update API.
|
13 |
*
|
14 |
* @author Pippin Williamson
|
15 |
-
* @version 1.6
|
16 |
*/
|
17 |
class FrmEDD_SL_Plugin_Updater {
|
18 |
private $api_url = '';
|
@@ -32,15 +32,18 @@ class FrmEDD_SL_Plugin_Updater {
|
|
32 |
* @param array $_api_data Optional data to send with API calls.
|
33 |
*/
|
34 |
public function __construct( $_api_url, $_plugin_file, $_api_data = null ) {
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
|
|
|
|
|
|
44 |
}
|
45 |
|
46 |
/**
|
@@ -53,6 +56,7 @@ class FrmEDD_SL_Plugin_Updater {
|
|
53 |
public function init() {
|
54 |
add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'check_update' ) );
|
55 |
add_filter( 'plugins_api', array( $this, 'plugins_api_filter' ), 10, 3 );
|
|
|
56 |
}
|
57 |
|
58 |
/**
|
@@ -220,28 +224,59 @@ class FrmEDD_SL_Plugin_Updater {
|
|
220 |
|
221 |
public function show_changelog() {
|
222 |
|
223 |
-
|
224 |
-
return;
|
225 |
-
}
|
226 |
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
|
239 |
-
|
|
|
|
|
240 |
|
241 |
-
|
242 |
-
|
243 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
244 |
|
245 |
-
|
246 |
}
|
247 |
}
|
12 |
* Allows plugins to use their own update API.
|
13 |
*
|
14 |
* @author Pippin Williamson
|
15 |
+
* @version 1.6.3
|
16 |
*/
|
17 |
class FrmEDD_SL_Plugin_Updater {
|
18 |
private $api_url = '';
|
32 |
* @param array $_api_data Optional data to send with API calls.
|
33 |
*/
|
34 |
public function __construct( $_api_url, $_plugin_file, $_api_data = null ) {
|
35 |
+
global $frm_edd_plugin_data;
|
36 |
+
|
37 |
+
$this->api_url = trailingslashit( $_api_url );
|
38 |
+
$this->api_data = $_api_data;
|
39 |
+
$this->name = plugin_basename( $_plugin_file );
|
40 |
+
$this->slug = basename( $_plugin_file, '.php' );
|
41 |
+
$this->version = $_api_data['version'];
|
42 |
+
|
43 |
+
$frm_edd_plugin_data[ $this->slug ] = $this->api_data;
|
44 |
+
|
45 |
+
// Set up hooks.
|
46 |
+
$this->init();
|
47 |
}
|
48 |
|
49 |
/**
|
56 |
public function init() {
|
57 |
add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'check_update' ) );
|
58 |
add_filter( 'plugins_api', array( $this, 'plugins_api_filter' ), 10, 3 );
|
59 |
+
add_action( 'admin_init', array( $this, 'show_changelog' ) );
|
60 |
}
|
61 |
|
62 |
/**
|
224 |
|
225 |
public function show_changelog() {
|
226 |
|
227 |
+
global $frm_edd_plugin_data;
|
|
|
|
|
228 |
|
229 |
+
if ( empty( $_REQUEST['edd_sl_action'] ) || 'view_plugin_changelog' != $_REQUEST['edd_sl_action'] ) {
|
230 |
+
return;
|
231 |
+
}
|
232 |
|
233 |
+
if ( empty( $_REQUEST['plugin'] ) ) {
|
234 |
+
return;
|
235 |
+
}
|
236 |
|
237 |
+
if ( empty( $_REQUEST['slug'] ) ) {
|
238 |
+
return;
|
239 |
+
}
|
240 |
|
241 |
+
if ( ! current_user_can( 'update_plugins' ) ) {
|
242 |
+
wp_die( __( 'You do not have permission to install plugin updates', 'formidable' ), __( 'Error', 'formidable' ), array( 'response' => 403 ) );
|
243 |
+
}
|
244 |
|
245 |
+
$data = $frm_edd_plugin_data[ $_REQUEST['slug'] ];
|
246 |
+
$cache_key = md5( 'edd_plugin_' . sanitize_key( $_REQUEST['plugin'] ) . '_version_info' );
|
247 |
+
$version_info = get_transient( $cache_key );
|
248 |
+
|
249 |
+
if ( false === $version_info ) {
|
250 |
+
|
251 |
+
$api_params = array(
|
252 |
+
'edd_action' => 'get_version',
|
253 |
+
'item_name' => isset( $data['item_name'] ) ? $data['item_name'] : false,
|
254 |
+
'item_id' => isset( $data['item_id'] ) ? $data['item_id'] : false,
|
255 |
+
'slug' => $_REQUEST['slug'],
|
256 |
+
'author' => $data['author'],
|
257 |
+
'url' => home_url()
|
258 |
+
);
|
259 |
+
|
260 |
+
$request = wp_remote_post( $this->api_url, array( 'timeout' => 15, 'sslverify' => false, 'body' => $api_params ) );
|
261 |
+
|
262 |
+
if ( ! is_wp_error( $request ) ) {
|
263 |
+
$version_info = json_decode( wp_remote_retrieve_body( $request ) );
|
264 |
+
}
|
265 |
+
|
266 |
+
if ( ! empty( $version_info ) && isset( $version_info->sections ) ) {
|
267 |
+
$version_info->sections = maybe_unserialize( $version_info->sections );
|
268 |
+
} else {
|
269 |
+
$version_info = false;
|
270 |
+
}
|
271 |
+
|
272 |
+
set_transient( $cache_key, $version_info, DAY_IN_SECONDS );
|
273 |
+
|
274 |
+
}
|
275 |
+
|
276 |
+
if( ! empty( $version_info ) && isset( $version_info->sections['changelog'] ) ) {
|
277 |
+
echo '<div style="background:#fff;padding:10px;">' . $version_info->sections['changelog'] . '</div>';
|
278 |
+
}
|
279 |
|
280 |
+
exit;
|
281 |
}
|
282 |
}
|
classes/models/FrmPointers.php
ADDED
@@ -0,0 +1,346 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* This class handles the pointers used in the introduction tour.
|
5 |
+
*/
|
6 |
+
class FrmPointers {
|
7 |
+
|
8 |
+
/**
|
9 |
+
* @var object Instance of this class
|
10 |
+
*/
|
11 |
+
public static $instance;
|
12 |
+
|
13 |
+
/**
|
14 |
+
* @var array Holds the buttons to be put out
|
15 |
+
*/
|
16 |
+
private $button_array;
|
17 |
+
|
18 |
+
/**
|
19 |
+
* @var array Holds the admin pages we have pointers for and the callback that generates the pointers content
|
20 |
+
*/
|
21 |
+
private $admin_pages = array(
|
22 |
+
'' => 'forms_pointer',
|
23 |
+
'entries' => 'entries_pointer',
|
24 |
+
'styles' => 'styles_pointer',
|
25 |
+
'import' => 'import_pointer',
|
26 |
+
'settings' => 'settings_pointer',
|
27 |
+
'addons' => 'addons_pointer',
|
28 |
+
);
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Class constructor.
|
32 |
+
*/
|
33 |
+
private function __construct() {
|
34 |
+
if ( current_user_can( 'manage_options' ) ) {
|
35 |
+
|
36 |
+
if ( ! get_user_meta( get_current_user_id(), 'frm_ignore_tour' ) ) {
|
37 |
+
wp_enqueue_style( 'wp-pointer' );
|
38 |
+
wp_enqueue_script( 'jquery-ui' );
|
39 |
+
wp_enqueue_script( 'wp-pointer' );
|
40 |
+
add_action( 'admin_print_footer_scripts', array( $this, 'intro_tour' ) );
|
41 |
+
}
|
42 |
+
}
|
43 |
+
}
|
44 |
+
|
45 |
+
/**
|
46 |
+
* Get the singleton instance of this class
|
47 |
+
*
|
48 |
+
* @return object
|
49 |
+
*/
|
50 |
+
public static function get_instance() {
|
51 |
+
if ( ! ( self::$instance instanceof self ) ) {
|
52 |
+
self::$instance = new self();
|
53 |
+
}
|
54 |
+
|
55 |
+
return self::$instance;
|
56 |
+
}
|
57 |
+
|
58 |
+
/**
|
59 |
+
* Load the introduction tour
|
60 |
+
*/
|
61 |
+
public function intro_tour() {
|
62 |
+
global $pagenow;
|
63 |
+
|
64 |
+
$page = preg_replace( '/^(formidable[-]?)/', '', filter_input( INPUT_GET, 'page' ) );
|
65 |
+
|
66 |
+
if ( 'admin.php' === $pagenow && array_key_exists( $page, $this->admin_pages ) ) {
|
67 |
+
$this->do_page_pointer( $page );
|
68 |
+
} else {
|
69 |
+
$this->start_tour_pointer();
|
70 |
+
}
|
71 |
+
}
|
72 |
+
|
73 |
+
/**
|
74 |
+
* Prints the pointer script
|
75 |
+
*
|
76 |
+
* @param string $selector The CSS selector the pointer is attached to.
|
77 |
+
* @param array $options The options for the pointer.
|
78 |
+
*/
|
79 |
+
public function print_scripts( $selector, $options ) {
|
80 |
+
// Button1 is the close button, which always exists.
|
81 |
+
$default_button = array(
|
82 |
+
'text' => false,
|
83 |
+
'function' => '',
|
84 |
+
);
|
85 |
+
$button_array_defaults = array(
|
86 |
+
'button2' => $default_button,
|
87 |
+
'button3' => $default_button,
|
88 |
+
);
|
89 |
+
$this->button_array = wp_parse_args( $this->button_array, $button_array_defaults );
|
90 |
+
?>
|
91 |
+
<script type="text/javascript">
|
92 |
+
//<![CDATA[
|
93 |
+
(function ($) {
|
94 |
+
// Don't show the tour on screens with an effective width smaller than 1024px or an effective height smaller than 768px.
|
95 |
+
if (jQuery(window).width() < 1024 || jQuery(window).availWidth < 1024) {
|
96 |
+
return;
|
97 |
+
}
|
98 |
+
|
99 |
+
var frm_pointer_options = <?php echo json_encode( $options ); ?>, setup;
|
100 |
+
|
101 |
+
frm_pointer_options = $.extend(frm_pointer_options, {
|
102 |
+
buttons: function (event, t) {
|
103 |
+
var button = jQuery('<a href="<?php echo $this->get_ignore_url(); ?>" id="pointer-close" style="margin:0 5px;" class="button-secondary">' + '<?php _e( 'Close', 'formidable' ) ?>' + '</a>');
|
104 |
+
button.bind('click.pointer', function () {
|
105 |
+
t.element.pointer('close');
|
106 |
+
});
|
107 |
+
return button;
|
108 |
+
},
|
109 |
+
close: function () {
|
110 |
+
}
|
111 |
+
});
|
112 |
+
|
113 |
+
setup = function () {
|
114 |
+
$('<?php echo $selector; ?>').pointer(frm_pointer_options).pointer('open');
|
115 |
+
var lastOpenedPointer = jQuery( '.wp-pointer').slice( -1 );
|
116 |
+
<?php
|
117 |
+
$this->button2();
|
118 |
+
$this->button3();
|
119 |
+
?>
|
120 |
+
};
|
121 |
+
|
122 |
+
if (frm_pointer_options.position && frm_pointer_options.position.defer_loading)
|
123 |
+
$(window).bind('load.wp-pointers', setup);
|
124 |
+
else
|
125 |
+
$(document).ready(setup);
|
126 |
+
})(jQuery);
|
127 |
+
//]]>
|
128 |
+
</script>
|
129 |
+
<?php
|
130 |
+
}
|
131 |
+
|
132 |
+
/**
|
133 |
+
* Render button 2, if needed
|
134 |
+
*/
|
135 |
+
private function button2() {
|
136 |
+
if ( $this->button_array['button2']['text'] ) {
|
137 |
+
?>
|
138 |
+
lastOpenedPointer.find( '#pointer-close' ).after('<a id="pointer-primary" class="button-primary">' +
|
139 |
+
'<?php echo $this->button_array['button2']['text']; ?>' + '</a>');
|
140 |
+
lastOpenedPointer.find('#pointer-primary').click(function () {
|
141 |
+
<?php echo $this->button_array['button2']['function']; ?>
|
142 |
+
});
|
143 |
+
<?php
|
144 |
+
}
|
145 |
+
}
|
146 |
+
|
147 |
+
/**
|
148 |
+
* Render button 3, if needed. This is the previous button in most cases
|
149 |
+
*/
|
150 |
+
private function button3() {
|
151 |
+
if ( $this->button_array['button3']['text'] ) {
|
152 |
+
?>
|
153 |
+
lastOpenedPointer.find('#pointer-primary').after('<a id="pointer-ternary" style="float: left;" class="button-secondary">' +
|
154 |
+
'<?php echo $this->button_array['button3']['text']; ?>' + '</a>');
|
155 |
+
lastOpenedPointer.find('#pointer-ternary').click(function () {
|
156 |
+
<?php echo $this->button_array['button3']['function']; ?>
|
157 |
+
});
|
158 |
+
<?php }
|
159 |
+
}
|
160 |
+
|
161 |
+
/**
|
162 |
+
* Show a pointer that starts the tour
|
163 |
+
*/
|
164 |
+
private function start_tour_pointer() {
|
165 |
+
$selector = 'li.toplevel_page_formidable';
|
166 |
+
$content = '<h3>' . __( 'Congratulations!', 'formidable' ) . '</h3>'
|
167 |
+
.'<p>' . sprintf( __( 'You’ve just installed new forms! Click “Start Tour” to view a quick introduction of this plugin’s core functionality.' ), 'formidable' ) . '</p>';
|
168 |
+
$opt_arr = array(
|
169 |
+
'content' => $content,
|
170 |
+
'position' => array( 'edge' => 'top', 'align' => 'center' ),
|
171 |
+
);
|
172 |
+
|
173 |
+
$this->button_array['button2']['text'] = __( 'Start Tour', 'formidable' );
|
174 |
+
$this->button_array['button2']['function'] = sprintf( 'document.location="%s";', admin_url( 'admin.php?page=formidable' ) );
|
175 |
+
|
176 |
+
$this->print_scripts( $selector, $opt_arr );
|
177 |
+
}
|
178 |
+
|
179 |
+
/**
|
180 |
+
* Shows a pointer on the proper pages
|
181 |
+
*
|
182 |
+
* @param string $page Admin page key.
|
183 |
+
*/
|
184 |
+
private function do_page_pointer( $page ) {
|
185 |
+
$pointer = call_user_func( array( $this, $this->admin_pages[ $page ] ) );
|
186 |
+
|
187 |
+
$opt_arr = array(
|
188 |
+
'content' => $pointer['content'],
|
189 |
+
'position' => array(
|
190 |
+
'edge' => 'top',
|
191 |
+
'align' => ( is_rtl() ) ? 'right' : 'left',
|
192 |
+
),
|
193 |
+
'pointerWidth' => 450,
|
194 |
+
);
|
195 |
+
|
196 |
+
$selector = 'h2';
|
197 |
+
if ( isset( $pointer['selector'] ) ) {
|
198 |
+
$selector = $pointer['selector'];
|
199 |
+
}
|
200 |
+
|
201 |
+
if ( isset( $pointer['position'] ) ) {
|
202 |
+
$opt_arr['position'] = $pointer['position'];
|
203 |
+
}
|
204 |
+
|
205 |
+
if ( isset( $pointer['next_page'] ) ) {
|
206 |
+
if ( ! empty( $pointer['next_page'] ) ) {
|
207 |
+
$pointer['next_page'] = '-' . $pointer['next_page'];
|
208 |
+
}
|
209 |
+
$this->button_array['button2'] = array(
|
210 |
+
'text' => __( 'Next', 'formidable' ),
|
211 |
+
'function' => 'window.location="' . esc_url_raw( admin_url( 'admin.php?page=formidable' . $pointer['next_page'] ) ) . '";',
|
212 |
+
);
|
213 |
+
}
|
214 |
+
if ( isset( $pointer['prev_page'] ) ) {
|
215 |
+
if ( ! empty( $pointer['prev_page'] ) ) {
|
216 |
+
$pointer['prev_page'] = '-' . $pointer['prev_page'];
|
217 |
+
}
|
218 |
+
$this->button_array['button3'] = array(
|
219 |
+
'text' => __( 'Previous', 'formidable' ),
|
220 |
+
'function' => 'window.location="' . esc_url_raw( admin_url( 'admin.php?page=formidable' . $pointer['prev_page'] ) ) . '";',
|
221 |
+
);
|
222 |
+
}
|
223 |
+
$this->print_scripts( $selector, $opt_arr );
|
224 |
+
}
|
225 |
+
|
226 |
+
/**
|
227 |
+
* Returns the content of the Forms listing page pointer
|
228 |
+
*
|
229 |
+
* @return array
|
230 |
+
*/
|
231 |
+
private function forms_pointer() {
|
232 |
+
global $current_user;
|
233 |
+
|
234 |
+
return array(
|
235 |
+
'content' => '<h3>' . __( 'Forms', 'formidable' ) . '</h3>'
|
236 |
+
. '<p>' . __( 'All your forms will be listed on this page. Create your first form by clicking on the "Add New" button.', 'formidable' ) . '</p>'
|
237 |
+
. '<p><strong>' . __( 'Subscribe to our Newsletter', 'formidable' ) . '</strong><br/>'
|
238 |
+
. sprintf( __( 'If you would like to hear about new features and updates for %1$s, subscribe to our newsletter:', 'formidable' ), 'Formidable' ) . '</p>'
|
239 |
+
. '<form target="_blank" action="//formidablepro.us1.list-manage.com/subscribe/post?u=a4a913790ffb892daacc6f271&id=7e7df15967" method="post" selector="newsletter-form" accept-charset="' . esc_attr( get_bloginfo( 'charset' ) ) . '">'
|
240 |
+
. '<p>'
|
241 |
+
. '<input style="margin: 5px; color:#666" name="EMAIL" value="' . esc_attr( $current_user->user_email ) . '" selector="newsletter-email" placeholder="' . esc_attr__( 'Email', 'formidable' ) . '"/>'
|
242 |
+
. '<input type="hidden" name="group[4505]" value="4" />'
|
243 |
+
. '<button type="submit" class="button-primary">' . esc_html__( 'Subscribe', 'formidable' ) . '</button>'
|
244 |
+
. '</p>'
|
245 |
+
. '</form>',
|
246 |
+
'next_page' => 'entries',
|
247 |
+
);
|
248 |
+
}
|
249 |
+
|
250 |
+
/**
|
251 |
+
* Returns the content of the Entries listing page pointer
|
252 |
+
*
|
253 |
+
* @return array
|
254 |
+
*/
|
255 |
+
private function entries_pointer() {
|
256 |
+
return array(
|
257 |
+
'content' => '<h3>' . __( 'Entries', 'formidable' ) . '</h3>'
|
258 |
+
. '<p>' . __( 'Each time one of your forms is submitted, an entry is created. You will find every form submission listed here so you will always have a backup if an email fails.', 'formidable' ) . '</p>',
|
259 |
+
'prev_page' => '',
|
260 |
+
'next_page' => 'styles',
|
261 |
+
'selector' => '.wp-list-table',
|
262 |
+
'position' => array( 'edge' => 'bottom', 'align' => 'center' ),
|
263 |
+
);
|
264 |
+
}
|
265 |
+
|
266 |
+
/**
|
267 |
+
* Returns the content of the Styles page pointer
|
268 |
+
*
|
269 |
+
* @return array
|
270 |
+
*/
|
271 |
+
private function styles_pointer() {
|
272 |
+
return array(
|
273 |
+
'content' => '<h3>' . __( 'Styles', 'formidable' ) . '</h3>'
|
274 |
+
. '<p>' . __( 'Want to make changes to the way your forms look? Make all the changes you would like right here, and watch the sample form change before your eyes.', 'formidable' ) . '</p>',
|
275 |
+
'prev_page' => 'entries',
|
276 |
+
'next_page' => 'import',
|
277 |
+
'selector' => '.general-style',
|
278 |
+
'position' => array( 'edge' => 'left', 'align' => 'right' ),
|
279 |
+
);
|
280 |
+
}
|
281 |
+
|
282 |
+
/**
|
283 |
+
* Returns the content of the Import/Export page pointer
|
284 |
+
*
|
285 |
+
* @return array
|
286 |
+
*/
|
287 |
+
private function import_pointer() {
|
288 |
+
return array(
|
289 |
+
'content' => '<h3>' . __( 'Import/Export', 'formidable' ) . '</h3>'
|
290 |
+
. '<p>' . __( 'Import and export forms and styles when copying from one site to another or sharing with someone else. Your entries can be exported to a CSV as well. The Premium version also includes the option to import entries to your site from a CSV.', 'formidable' ) . '</p>',
|
291 |
+
'prev_page' => 'styles',
|
292 |
+
'next_page' => 'settings',
|
293 |
+
'selector' => '.inside.with_frm_style',
|
294 |
+
'position' => array( 'edge' => 'bottom', 'align' => 'top' ),
|
295 |
+
);
|
296 |
+
}
|
297 |
+
|
298 |
+
/**
|
299 |
+
* Returns the content of the advanced page pointer
|
300 |
+
*
|
301 |
+
* @return array
|
302 |
+
*/
|
303 |
+
private function settings_pointer() {
|
304 |
+
return array(
|
305 |
+
'content' => '<h3>' . __( 'Global Settings', 'formidable' ) . '</h3>'
|
306 |
+
. '<p><strong>' . __( 'General', 'formidable' ) . '</strong><br/>'
|
307 |
+
. __( 'Turn stylesheets and scripts off, set which user roles have access to change and create forms, setup your reCaptcha, and set default messages for new forms and fields.', 'formidable' )
|
308 |
+
. '<p><strong>' . __( 'Plugin Licenses', 'formidable' ) . '</strong><br/>'
|
309 |
+
. sprintf( __( 'Once you’ve purchased %1$s or any addons, you’ll have to enter a license key to get access to all of their powerful features. A Plugin Licenses tab will appear here for you to enter your license key.', 'formidable' ), 'Formidable Pro' )
|
310 |
+
. '</p>',
|
311 |
+
'prev_page' => 'import',
|
312 |
+
'next_page' => 'addons',
|
313 |
+
);
|
314 |
+
}
|
315 |
+
|
316 |
+
/**
|
317 |
+
* Returns the content of the extensions and licenses page pointer
|
318 |
+
*
|
319 |
+
* @return array
|
320 |
+
*/
|
321 |
+
private function addons_pointer() {
|
322 |
+
return array(
|
323 |
+
'content' => '<h3>' . __( 'Addons', 'formidable' ) . '</h3>'
|
324 |
+
. '<p>' . sprintf( __( 'The powerful functions of %1$s can be extended with %2$spremium plugins%3$s. You can read all about the Formidable Premium Plugins %2$shere%3$s.', 'formidable' ), 'Formidable', '<a target="_blank" href="' . esc_url( FrmAppHelper::make_affiliate_url( 'https://formidablepro.com/' ) ) . '">', '</a>' )
|
325 |
+
. '</p>'
|
326 |
+
. '<p><strong>' . __( 'Like this plugin?', 'formidable' ) . '</strong><br/>' . sprintf( __( 'So, we’ve come to the end of the tour. If you like the plugin, please %srate it 5 stars on WordPress.org%s!', 'formidable' ), '<a target="_blank" href="https://wordpress.org/plugins/formidable/">', '</a>' ) . '</p>'
|
327 |
+
. '<p>' . sprintf( __( 'Thank you for using our plugin and good luck with your forms!<br/><br/>Best,<br/>Team Formidable - %1$sformidablepro.com%2$s', 'formidable' ), '<a target="_blank" href="' . esc_url( FrmAppHelper::make_affiliate_url( 'https://formidablepro.com/' ) ) . '">', '</a>' ) . '</p>',
|
328 |
+
'prev_page' => 'settings',
|
329 |
+
);
|
330 |
+
}
|
331 |
+
|
332 |
+
/**
|
333 |
+
* Extending the current page URL with two params to be able to ignore the tour.
|
334 |
+
*
|
335 |
+
* @return mixed
|
336 |
+
*/
|
337 |
+
private function get_ignore_url() {
|
338 |
+
$arr_params = array(
|
339 |
+
'frm_restart_tour' => false,
|
340 |
+
'frm_ignore_tour' => '1',
|
341 |
+
'nonce' => wp_create_nonce( 'frm-ignore-tour' ),
|
342 |
+
);
|
343 |
+
|
344 |
+
return esc_url( add_query_arg( $arr_params ) );
|
345 |
+
}
|
346 |
+
}
|
classes/models/FrmStyle.php
CHANGED
@@ -371,8 +371,12 @@ class FrmStyle {
|
|
371 |
|
372 |
'title_size' => '20px',
|
373 |
'title_color' => '444444',
|
|
|
|
|
374 |
'form_desc_size' => '14px',
|
375 |
'form_desc_color' => '666666',
|
|
|
|
|
376 |
|
377 |
'font' => '"Lucida Grande","Lucida Sans Unicode",Tahoma,sans-serif',
|
378 |
'font_size' => '14px',
|
@@ -398,6 +402,7 @@ class FrmStyle {
|
|
398 |
'auto_width' => false,
|
399 |
'field_pad' => '6px 10px',
|
400 |
'field_margin' => '20px',
|
|
|
401 |
'text_color' => '555555',
|
402 |
//'border_color_hv' => 'cccccc',
|
403 |
'border_color' => 'cccccc',
|
@@ -406,8 +411,10 @@ class FrmStyle {
|
|
406 |
|
407 |
'bg_color' => 'ffffff',
|
408 |
//'bg_color_hv' => 'ffffff',
|
|
|
409 |
'bg_color_active' => 'ffffff',
|
410 |
'border_color_active' => '66afe9',
|
|
|
411 |
'text_color_error' => '444444',
|
412 |
'bg_color_error' => 'ffffff',
|
413 |
'border_color_error' => 'B94A48',
|
371 |
|
372 |
'title_size' => '20px',
|
373 |
'title_color' => '444444',
|
374 |
+
'title_margin_top' => '10px',
|
375 |
+
'title_margin_bottom' => '10px',
|
376 |
'form_desc_size' => '14px',
|
377 |
'form_desc_color' => '666666',
|
378 |
+
'form_desc_margin_top' => '10px',
|
379 |
+
'form_desc_margin_bottom' => '25px',
|
380 |
|
381 |
'font' => '"Lucida Grande","Lucida Sans Unicode",Tahoma,sans-serif',
|
382 |
'font_size' => '14px',
|
402 |
'auto_width' => false,
|
403 |
'field_pad' => '6px 10px',
|
404 |
'field_margin' => '20px',
|
405 |
+
'field_weight' => 'normal',
|
406 |
'text_color' => '555555',
|
407 |
//'border_color_hv' => 'cccccc',
|
408 |
'border_color' => 'cccccc',
|
411 |
|
412 |
'bg_color' => 'ffffff',
|
413 |
//'bg_color_hv' => 'ffffff',
|
414 |
+
'remove_box_shadow' => '',
|
415 |
'bg_color_active' => 'ffffff',
|
416 |
'border_color_active' => '66afe9',
|
417 |
+
'remove_box_shadow_active' => '',
|
418 |
'text_color_error' => '444444',
|
419 |
'bg_color_error' => 'ffffff',
|
420 |
'border_color_error' => 'B94A48',
|
classes/views/addons/list.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<div class="wrap">
|
2 |
-
<
|
3 |
|
4 |
<div id="the-list" class="frm-addons">
|
5 |
<?php foreach ( $addons as $addon ) {
|
@@ -13,7 +13,10 @@
|
|
13 |
$installed = isset( $installed_addons[ $addon['info']['slug'] ] ) || is_dir( WP_PLUGIN_DIR . '/formidable-' . $addon['info']['slug'] );
|
14 |
}
|
15 |
$has_thumbnail = ! empty( $addon['info']['thumbnail'] );
|
16 |
-
$addon['info']['
|
|
|
|
|
|
|
17 |
|
18 |
?>
|
19 |
<div class="plugin-card <?php echo esc_attr( $has_thumbnail ? '' : 'frm-no-thumb') ?>">
|
1 |
<div class="wrap">
|
2 |
+
<h2><?php _e( 'Formidable AddOns', 'formidable' ) ?></h2>
|
3 |
|
4 |
<div id="the-list" class="frm-addons">
|
5 |
<?php foreach ( $addons as $addon ) {
|
13 |
$installed = isset( $installed_addons[ $addon['info']['slug'] ] ) || is_dir( WP_PLUGIN_DIR . '/formidable-' . $addon['info']['slug'] );
|
14 |
}
|
15 |
$has_thumbnail = ! empty( $addon['info']['thumbnail'] );
|
16 |
+
if ( $addon['info']['slug'] == 'formidable-pro' ) {
|
17 |
+
$addon['info']['link'] = $pro_link;
|
18 |
+
}
|
19 |
+
$addon['info']['link'] = FrmAppHelper::make_affiliate_url( $addon['info']['link'] );
|
20 |
|
21 |
?>
|
22 |
<div class="plugin-card <?php echo esc_attr( $has_thumbnail ? '' : 'frm-no-thumb') ?>">
|
classes/views/addons/settings.php
CHANGED
@@ -3,6 +3,7 @@
|
|
3 |
|
4 |
<?php
|
5 |
|
|
|
6 |
foreach ( $plugins as $slug => $plugin ) {
|
7 |
if ( $slug == 'formidable_pro' ) {
|
8 |
continue;
|
@@ -11,6 +12,9 @@
|
|
11 |
$license = get_option( 'edd_'. $slug .'_license_key' );
|
12 |
$status = get_option( 'edd_'. $slug .'_license_active' );
|
13 |
$activate = ( false !== $license && $status == 'valid' ) ? 'deactivate' : 'activate';
|
|
|
|
|
|
|
14 |
$icon_class = ( empty( $license ) ) ? 'frm_hidden' : '';
|
15 |
?>
|
16 |
|
@@ -23,7 +27,7 @@
|
|
23 |
<p class="frm_license_msg"></p>
|
24 |
</div>
|
25 |
<div class="edd_frm_unauthorized alignleft <?php echo esc_attr( $activate == 'deactivate' ) ? 'frm_hidden' : '' ?>">
|
26 |
-
<input id="edd_<?php echo esc_attr( $slug ) ?>_license_key" name="edd_<?php echo esc_attr( $slug ) ?>_license_key" type="text" class="regular-text" value="" />
|
27 |
<span class="frm_icon_font frm_action_icon frm_error_icon edd_frm_status_icon <?php echo esc_attr( $icon_class ); ?>"></span>
|
28 |
<input type="button" class="button-secondary edd_frm_save_license" data-plugin="<?php echo esc_attr( $slug ) ?>" name="edd_<?php echo esc_attr( $slug ) ?>_license_activate" value="<?php esc_attr_e( 'Activate', 'formidable' ) ?>"/>
|
29 |
<p class="frm_license_msg"></p>
|
@@ -31,5 +35,8 @@
|
|
31 |
|
32 |
</div>
|
33 |
<?php } ?>
|
34 |
-
|
|
|
|
|
|
|
35 |
</div>
|
3 |
|
4 |
<?php
|
5 |
|
6 |
+
$any_unauthorized = false;
|
7 |
foreach ( $plugins as $slug => $plugin ) {
|
8 |
if ( $slug == 'formidable_pro' ) {
|
9 |
continue;
|
12 |
$license = get_option( 'edd_'. $slug .'_license_key' );
|
13 |
$status = get_option( 'edd_'. $slug .'_license_active' );
|
14 |
$activate = ( false !== $license && $status == 'valid' ) ? 'deactivate' : 'activate';
|
15 |
+
if ( $activate == 'activate' ) {
|
16 |
+
$any_unauthorized = true;
|
17 |
+
}
|
18 |
$icon_class = ( empty( $license ) ) ? 'frm_hidden' : '';
|
19 |
?>
|
20 |
|
27 |
<p class="frm_license_msg"></p>
|
28 |
</div>
|
29 |
<div class="edd_frm_unauthorized alignleft <?php echo esc_attr( $activate == 'deactivate' ) ? 'frm_hidden' : '' ?>">
|
30 |
+
<input id="edd_<?php echo esc_attr( $slug ) ?>_license_key" name="edd_<?php echo esc_attr( $slug ) ?>_license_key" type="text" class="regular-text frm_addon_license_key" value="" />
|
31 |
<span class="frm_icon_font frm_action_icon frm_error_icon edd_frm_status_icon <?php echo esc_attr( $icon_class ); ?>"></span>
|
32 |
<input type="button" class="button-secondary edd_frm_save_license" data-plugin="<?php echo esc_attr( $slug ) ?>" name="edd_<?php echo esc_attr( $slug ) ?>_license_activate" value="<?php esc_attr_e( 'Activate', 'formidable' ) ?>"/>
|
33 |
<p class="frm_license_msg"></p>
|
35 |
|
36 |
</div>
|
37 |
<?php } ?>
|
38 |
+
<?php if ( $any_unauthorized && FrmAppHelper::pro_is_installed() ) { ?>
|
39 |
+
<div class="clear"></div>
|
40 |
+
<p><a href="#" class="edd_frm_fill_license button-secondary"><?php _e( 'Autofill Licenses', 'formidable' ) ?></a></p>
|
41 |
+
<?php } ?>
|
42 |
</div>
|
classes/views/frm-settings/license_box.php
CHANGED
@@ -2,10 +2,10 @@
|
|
2 |
<?php if ( ! is_multisite() || is_super_admin() ) { ?>
|
3 |
<div class="postbox">
|
4 |
<div class="inside">
|
5 |
-
<p class="alignright"><?php printf( __( '%1$sClick here%2$s to get it now', 'formidable' ), '<a href="
|
6 |
<p><?php _e( 'Ready to take your forms to the next level?<br/>Formidable Forms will help you create views, manage data, and get reports.', 'formidable' ) ?></p>
|
7 |
|
8 |
-
<p>Already signed up? <a href="https://formidablepro.com/knowledgebase/install-formidable-forms
|
9 |
</div>
|
10 |
</div>
|
11 |
<?php } ?>
|
2 |
<?php if ( ! is_multisite() || is_super_admin() ) { ?>
|
3 |
<div class="postbox">
|
4 |
<div class="inside">
|
5 |
+
<p class="alignright"><?php printf( __( '%1$sClick here%2$s to get it now', 'formidable' ), '<a href="'. esc_url( FrmAppHelper::make_affiliate_url( 'http://formidablepro.com' ) ) . '">', '</a>' ) ?> »</p>
|
6 |
<p><?php _e( 'Ready to take your forms to the next level?<br/>Formidable Forms will help you create views, manage data, and get reports.', 'formidable' ) ?></p>
|
7 |
|
8 |
+
<p>Already signed up? <a href="<?php echo esc_url( FrmAppHelper::make_affiliate_url( 'https://formidablepro.com/knowledgebase/install-formidable-forms/' ) ) ?>" target="_blank"><?php _e( 'Click here', 'formidable' ) ?></a> to get installation instructions and download the pro version.</p>
|
9 |
</div>
|
10 |
</div>
|
11 |
<?php } ?>
|
classes/views/styles/_field-colors.php
CHANGED
@@ -44,6 +44,12 @@
|
|
44 |
</select>
|
45 |
</div>
|
46 |
<div class="clear"></div>
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
</div><!-- /.tabs-panel -->
|
48 |
|
49 |
<div id="tabs-panel-active-color" class="tabs-panel <?php
|
@@ -57,7 +63,13 @@
|
|
57 |
<label><?php _e( 'Border', 'formidable' ) ?></label>
|
58 |
<input type="text" name="<?php echo esc_attr( $frm_style->get_field_name('border_color_active') ) ?>" id="frm_border_color_active" class="hex" value="<?php echo esc_attr( $style->post_content['border_color_active'] ) ?>" />
|
59 |
</div>
|
60 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
</div><!-- /.tabs-panel -->
|
62 |
|
63 |
<div id="tabs-panel-active-error" class="tabs-panel <?php
|
44 |
</select>
|
45 |
</div>
|
46 |
<div class="clear"></div>
|
47 |
+
<p class="frm_no_bottom_margin">
|
48 |
+
<label>
|
49 |
+
<input type="checkbox" name="<?php echo esc_attr( $frm_style->get_field_name('remove_box_shadow') ) ?>" id="frm_remove_box_shadow" value="1" <?php checked($style->post_content['remove_box_shadow'], 1) ?> />
|
50 |
+
<?php _e( 'Remove box shadow', 'formidable' ) ?>
|
51 |
+
</label>
|
52 |
+
</p>
|
53 |
</div><!-- /.tabs-panel -->
|
54 |
|
55 |
<div id="tabs-panel-active-color" class="tabs-panel <?php
|
63 |
<label><?php _e( 'Border', 'formidable' ) ?></label>
|
64 |
<input type="text" name="<?php echo esc_attr( $frm_style->get_field_name('border_color_active') ) ?>" id="frm_border_color_active" class="hex" value="<?php echo esc_attr( $style->post_content['border_color_active'] ) ?>" />
|
65 |
</div>
|
66 |
+
<div class="clear"></div>
|
67 |
+
<p class="frm_no_bottom_margin">
|
68 |
+
<label>
|
69 |
+
<input type="checkbox" name="<?php echo esc_attr( $frm_style->get_field_name('remove_box_shadow_active') ) ?>" id="frm_remove_box_shadow_active" value="1" <?php checked($style->post_content['remove_box_shadow_active'], 1) ?> />
|
70 |
+
<?php _e( 'Remove box shadow', 'formidable' ) ?>
|
71 |
+
</label>
|
72 |
+
</p>
|
73 |
</div><!-- /.tabs-panel -->
|
74 |
|
75 |
<div id="tabs-panel-active-error" class="tabs-panel <?php
|
classes/views/styles/_field-sizes.php
CHANGED
@@ -33,3 +33,12 @@
|
|
33 |
<label><?php _e( 'Corners', 'formidable' ) ?> <span class="frm_help frm_icon_font frm_tooltip_icon" title="<?php esc_attr_e( 'Formidable uses CSS3 border-radius for corner rounding, which is not currently supported by Internet Explorer.', 'formidable' ) ?>" ></span></label>
|
34 |
<input type="text" value="<?php echo esc_attr( $style->post_content['border_radius'] ) ?>" name="<?php echo esc_attr( $frm_style->get_field_name('border_radius') ) ?>" id="frm_border_radius" />
|
35 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
<label><?php _e( 'Corners', 'formidable' ) ?> <span class="frm_help frm_icon_font frm_tooltip_icon" title="<?php esc_attr_e( 'Formidable uses CSS3 border-radius for corner rounding, which is not currently supported by Internet Explorer.', 'formidable' ) ?>" ></span></label>
|
34 |
<input type="text" value="<?php echo esc_attr( $style->post_content['border_radius'] ) ?>" name="<?php echo esc_attr( $frm_style->get_field_name('border_radius') ) ?>" id="frm_border_radius" />
|
35 |
</div>
|
36 |
+
|
37 |
+
<div class="field-group clearfix frm-first-row">
|
38 |
+
<label><?php _e( 'Weight', 'formidable' ) ?></label>
|
39 |
+
<select name="<?php echo esc_attr( $frm_style->get_field_name('field_weight') ) ?>" id="frm_field_weight">
|
40 |
+
<?php foreach ( FrmStyle::get_bold_options() as $value => $name ) { ?>
|
41 |
+
<option value="<?php echo esc_attr( $value ) ?>" <?php selected( $style->post_content['field_weight'], $value ) ?>><?php echo esc_attr( $name ) ?></option>
|
42 |
+
<?php } ?>
|
43 |
+
</select>
|
44 |
+
</div>
|
classes/views/styles/_form-description.php
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div class="field-group clearfix frm-half frm-first-row">
|
2 |
+
<label><?php _e( 'Size', 'formidable' ) ?></label>
|
3 |
+
<input type="text" name="<?php echo esc_attr( $frm_style->get_field_name('form_desc_size') ) ?>" id="frm_form_desc_size" value="<?php echo esc_attr( $style->post_content['form_desc_size'] ) ?>" />
|
4 |
+
</div>
|
5 |
+
|
6 |
+
<div class="field-group clearfix frm-half frm-first-row">
|
7 |
+
<label><?php _e( 'Color', 'formidable' ) ?></label>
|
8 |
+
<input type="text" name="<?php echo esc_attr( $frm_style->get_field_name('form_desc_color') ) ?>" id="frm_form_desc_color" class="hex" value="<?php echo esc_attr( $style->post_content['form_desc_color'] ) ?>" />
|
9 |
+
</div>
|
10 |
+
<div class="field-group clearfix frm-half">
|
11 |
+
<label><?php _e( 'Margin Top', 'formidable' ) ?></label>
|
12 |
+
<input type="text" name="<?php echo esc_attr( $frm_style->get_field_name('form_desc_margin_top') ) ?>" id="frm_form_desc_margin_top" value="<?php echo esc_attr( $style->post_content['form_desc_margin_top'] ) ?>" size="4" />
|
13 |
+
</div>
|
14 |
+
<div class="field-group clearfix frm-half">
|
15 |
+
<label><?php _e( 'Margin Bottom', 'formidable' ) ?></label>
|
16 |
+
<input type="text" name="<?php echo esc_attr( $frm_style->get_field_name('form_desc_margin_bottom') ) ?>" id="frm_form_desc_margin_bottom" value="<?php echo esc_attr( $style->post_content['form_desc_margin_bottom'] ) ?>" size="4" />
|
17 |
+
</div>
|
classes/views/styles/_form-title.php
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div class="field-group clearfix frm-half frm-first-row">
|
2 |
+
<label><?php _e( 'Size', 'formidable' ) ?></label>
|
3 |
+
<input type="text" name="<?php echo esc_attr( $frm_style->get_field_name('title_size') ) ?>" id="frm_title_size" value="<?php echo esc_attr( $style->post_content['title_size'] ) ?>" />
|
4 |
+
</div>
|
5 |
+
|
6 |
+
<div class="field-group clearfix frm-half frm-first-row">
|
7 |
+
<label><?php _e( 'Color', 'formidable' ) ?></label>
|
8 |
+
<input type="text" name="<?php echo esc_attr( $frm_style->get_field_name('title_color') ) ?>" id="frm_title_color" class="hex" value="<?php echo esc_attr( $style->post_content['title_color'] ) ?>" />
|
9 |
+
</div>
|
10 |
+
<div class="field-group clearfix frm-half">
|
11 |
+
<label><?php _e( 'Margin Top', 'formidable' ) ?></label>
|
12 |
+
<input type="text" name="<?php echo esc_attr( $frm_style->get_field_name('title_margin_top') ) ?>" id="frm_title_margin_top" value="<?php echo esc_attr( $style->post_content['title_margin_top'] ) ?>" size="4" />
|
13 |
+
</div>
|
14 |
+
<div class="field-group clearfix frm-half">
|
15 |
+
<label><?php _e( 'Margin Bottom', 'formidable' ) ?></label>
|
16 |
+
<input type="text" name="<?php echo esc_attr( $frm_style->get_field_name('title_margin_bottom') ) ?>" id="frm_title_margin_bottom" value="<?php echo esc_attr( $style->post_content['title_margin_bottom'] ) ?>" size="4" />
|
17 |
+
</div>
|
classes/views/styles/_general.php
CHANGED
@@ -45,33 +45,12 @@
|
|
45 |
|
46 |
<div class="field-group clearfix frm-half">
|
47 |
<label><?php _e( 'Direction', 'formidable' ) ?></label>
|
48 |
-
<select name="<?php echo esc_attr( $frm_style->get_field_name('direction') ) ?>" id="
|
49 |
<option value="ltr" <?php selected($style->post_content['direction'], 'ltr') ?>><?php _e( 'Left to Right', 'formidable' ) ?></option>
|
50 |
<option value="rtl" <?php selected($style->post_content['direction'], 'rtl') ?>><?php _e( 'Right to Left', 'formidable' ) ?></option>
|
51 |
</select>
|
52 |
</div>
|
53 |
|
54 |
-
<div class="clear"></div>
|
55 |
-
<div class="field-group clearfix frm-half">
|
56 |
-
<label><?php _e( 'Title Size', 'formidable' ) ?></label>
|
57 |
-
<input type="text" name="<?php echo esc_attr( $frm_style->get_field_name('title_size') ) ?>" id="frm_title_size" value="<?php echo esc_attr( $style->post_content['title_size'] ) ?>" />
|
58 |
-
</div>
|
59 |
-
|
60 |
-
<div class="field-group clearfix frm-half">
|
61 |
-
<label><?php _e( 'Color', 'formidable' ) ?></label>
|
62 |
-
<input type="text" name="<?php echo esc_attr( $frm_style->get_field_name('title_color') ) ?>" id="frm_title_color" class="hex" value="<?php echo esc_attr( $style->post_content['title_color'] ) ?>" />
|
63 |
-
</div>
|
64 |
-
|
65 |
-
<div class="field-group clearfix frm-half">
|
66 |
-
<label><?php _e( 'Description Size', 'formidable' ) ?></label>
|
67 |
-
<input type="text" name="<?php echo esc_attr( $frm_style->get_field_name('form_desc_size') ) ?>" id="frm_form_desc_size" value="<?php echo esc_attr( $style->post_content['form_desc_size'] ) ?>" />
|
68 |
-
</div>
|
69 |
-
|
70 |
-
<div class="field-group clearfix frm-half">
|
71 |
-
<label><?php _e( 'Color', 'formidable' ) ?></label>
|
72 |
-
<input type="text" name="<?php echo esc_attr( $frm_style->get_field_name('form_desc_color') ) ?>" id="frm_form_desc_color" class="hex" value="<?php echo esc_attr( $style->post_content['form_desc_color'] ) ?>" />
|
73 |
-
</div>
|
74 |
-
|
75 |
<div class="clear"></div>
|
76 |
<p class="frm_no_bottom_margin">
|
77 |
<label><input type="checkbox" name="<?php echo esc_attr( $frm_style->get_field_name('important_style') ) ?>" id="frm_important_style" value="1" <?php checked($style->post_content['important_style'], 1) ?> />
|
45 |
|
46 |
<div class="field-group clearfix frm-half">
|
47 |
<label><?php _e( 'Direction', 'formidable' ) ?></label>
|
48 |
+
<select name="<?php echo esc_attr( $frm_style->get_field_name('direction') ) ?>" id="frm_direction">
|
49 |
<option value="ltr" <?php selected($style->post_content['direction'], 'ltr') ?>><?php _e( 'Left to Right', 'formidable' ) ?></option>
|
50 |
<option value="rtl" <?php selected($style->post_content['direction'], 'rtl') ?>><?php _e( 'Right to Left', 'formidable' ) ?></option>
|
51 |
</select>
|
52 |
</div>
|
53 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
<div class="clear"></div>
|
55 |
<p class="frm_no_bottom_margin">
|
56 |
<label><input type="checkbox" name="<?php echo esc_attr( $frm_style->get_field_name('important_style') ) ?>" id="frm_important_style" value="1" <?php checked($style->post_content['important_style'], 1) ?> />
|
classes/views/styles/_sample_form.php
CHANGED
@@ -8,11 +8,10 @@
|
|
8 |
|
9 |
<?php $pos_class = 'frm_pos_container frm_' . ( $style->post_content['position'] == 'none' ? 'top' : ( $style->post_content['position'] == 'no_label' ? 'none' : $style->post_content['position'] ) ) . '_container'; ?>
|
10 |
|
11 |
-
<h3><?php _e( 'Form Title', 'formidable' ) ?></h3>
|
12 |
-
<div class="frm_description"><p><?php _e( 'This is an example form description for styling purposes.', 'formidable' ) ?></p></div>
|
13 |
-
|
14 |
<div class="frm_form_fields frm_sample_form">
|
15 |
<fieldset>
|
|
|
|
|
16 |
<div class="frm_form_field frm_first frm_half form-field <?php echo esc_attr( $pos_class ) ?>">
|
17 |
<label class="frm_primary_label"><?php _e( 'Text field', 'formidable' ) ?> <span class="frm_required">*</span></label>
|
18 |
<input type="text" value="<?php esc_attr_e( 'This is sample text', 'formidable' ) ?>"/>
|
8 |
|
9 |
<?php $pos_class = 'frm_pos_container frm_' . ( $style->post_content['position'] == 'none' ? 'top' : ( $style->post_content['position'] == 'no_label' ? 'none' : $style->post_content['position'] ) ) . '_container'; ?>
|
10 |
|
|
|
|
|
|
|
11 |
<div class="frm_form_fields frm_sample_form">
|
12 |
<fieldset>
|
13 |
+
<h3 class="frm_form_title"><?php _e( 'Form Title', 'formidable' ) ?></h3>
|
14 |
+
<div class="frm_description"><p><?php _e( 'This is an example form description for styling purposes.', 'formidable' ) ?></p></div>
|
15 |
<div class="frm_form_field frm_first frm_half form-field <?php echo esc_attr( $pos_class ) ?>">
|
16 |
<label class="frm_primary_label"><?php _e( 'Text field', 'formidable' ) ?> <span class="frm_required">*</span></label>
|
17 |
<input type="text" value="<?php esc_attr_e( 'This is sample text', 'formidable' ) ?>"/>
|
classes/views/xml/forms_xml.php
CHANGED
@@ -21,7 +21,7 @@ while ( $next_set = array_splice( $item_ids, 0, 20 ) ) {
|
|
21 |
<is_template><?php echo $form->is_template ?></is_template>
|
22 |
<default_template><?php echo $form->default_template ?></default_template>
|
23 |
<editable><?php echo $form->editable ?></editable>
|
24 |
-
<options><?php echo FrmXMLHelper::
|
25 |
<status><?php echo FrmXMLHelper::cdata($form->status) ?></status>
|
26 |
<parent_form_id><?php echo $form->parent_form_id ?></parent_form_id>
|
27 |
<?php
|
21 |
<is_template><?php echo $form->is_template ?></is_template>
|
22 |
<default_template><?php echo $form->default_template ?></default_template>
|
23 |
<editable><?php echo $form->editable ?></editable>
|
24 |
+
<options><?php echo FrmXMLHelper::prepare_form_options_for_export($form->options) ?></options>
|
25 |
<status><?php echo FrmXMLHelper::cdata($form->status) ?></status>
|
26 |
<parent_form_id><?php echo $form->parent_form_id ?></parent_form_id>
|
27 |
<?php
|
css/_single_theme.css.php
CHANGED
@@ -61,7 +61,8 @@ if ( ! isset( $center_form ) ) {
|
|
61 |
}
|
62 |
|
63 |
.<?php echo esc_html( $style_class ) ?>,
|
64 |
-
.<?php echo esc_html( $style_class ) ?> form
|
|
|
65 |
text-align:<?php echo esc_html( $form_align . $important ) ?>;
|
66 |
}
|
67 |
|
@@ -78,9 +79,13 @@ if ( ! isset( $center_form ) ) {
|
|
78 |
background-color:<?php echo esc_html( empty($fieldset_bg_color) ? 'transparent' : '#'. $fieldset_bg_color ); ?>;
|
79 |
}
|
80 |
|
81 |
-
.<?php echo esc_html( $style_class ) ?>
|
|
|
82 |
font-size:<?php echo esc_html( $title_size . $important ) ?>;
|
83 |
color:#<?php echo esc_html( $title_color . $important ) ?>;
|
|
|
|
|
|
|
84 |
}
|
85 |
|
86 |
.<?php echo esc_html( $style_class ) ?> .frm-show-form .frm_section_heading h3{
|
@@ -189,6 +194,9 @@ if ( ! isset( $center_form ) ) {
|
|
189 |
.<?php echo esc_html( $style_class ) ?> .frm-show-form div.frm_description p{
|
190 |
font-size:<?php echo esc_html( $form_desc_size . $important ) ?>;
|
191 |
color:#<?php echo esc_html( $form_desc_color . $important ) ?>;
|
|
|
|
|
|
|
192 |
}
|
193 |
|
194 |
|
@@ -340,8 +348,8 @@ if ( ! isset( $center_form ) ) {
|
|
340 |
-moz-box-sizing:border-box;
|
341 |
box-sizing:border-box;
|
342 |
outline:none<?php echo esc_html( $important ) ?>;
|
343 |
-
font-weight
|
344 |
-
box-shadow:0 1px 1px rgba(0, 0, 0, 0.075) inset
|
345 |
}
|
346 |
|
347 |
.<?php echo esc_html( $style_class ) ?> input[type=file]::-webkit-file-upload-button{
|
@@ -460,7 +468,11 @@ if ( ! isset( $center_form ) ) {
|
|
460 |
.<?php echo esc_html( $style_class ) ?> .chosen-container-active .chosen-choices{
|
461 |
background-color:#<?php echo esc_html( $bg_color_active . $important ) ?>;
|
462 |
border-color:#<?php echo esc_html( $border_color_active . $important ) ?>;
|
|
|
|
|
|
|
463 |
box-shadow:0 1px 1px rgba(0, 0, 0, 0.075) inset, 0 0 8px rgba(<?php echo esc_html( FrmStylesHelper::hex2rgb( $border_color_active ) ) ?>, 0.6);
|
|
|
464 |
}
|
465 |
|
466 |
<?php
|
61 |
}
|
62 |
|
63 |
.<?php echo esc_html( $style_class ) ?>,
|
64 |
+
.<?php echo esc_html( $style_class ) ?> form,
|
65 |
+
.<?php echo esc_html( $style_class ) ?> .frm-show-form div.frm_description p {
|
66 |
text-align:<?php echo esc_html( $form_align . $important ) ?>;
|
67 |
}
|
68 |
|
79 |
background-color:<?php echo esc_html( empty($fieldset_bg_color) ? 'transparent' : '#'. $fieldset_bg_color ); ?>;
|
80 |
}
|
81 |
|
82 |
+
.<?php echo esc_html( $style_class ) ?> legend + h3,
|
83 |
+
.<?php echo esc_html( $style_class ) ?> h3.frm_form_title{
|
84 |
font-size:<?php echo esc_html( $title_size . $important ) ?>;
|
85 |
color:#<?php echo esc_html( $title_color . $important ) ?>;
|
86 |
+
font-family:<?php echo FrmAppHelper::kses( stripslashes( $font ) ) ?>;
|
87 |
+
margin-top:<?php echo esc_html( $title_margin_top . $important ) ?>;
|
88 |
+
margin-bottom:<?php echo esc_html( $title_margin_bottom . $important ) ?>;
|
89 |
}
|
90 |
|
91 |
.<?php echo esc_html( $style_class ) ?> .frm-show-form .frm_section_heading h3{
|
194 |
.<?php echo esc_html( $style_class ) ?> .frm-show-form div.frm_description p{
|
195 |
font-size:<?php echo esc_html( $form_desc_size . $important ) ?>;
|
196 |
color:#<?php echo esc_html( $form_desc_color . $important ) ?>;
|
197 |
+
margin-top:<?php echo esc_html( $form_desc_margin_top . $important ) ?>;
|
198 |
+
margin-bottom:<?php echo esc_html( $form_desc_margin_bottom . $important ) ?>;
|
199 |
+
|
200 |
}
|
201 |
|
202 |
|
348 |
-moz-box-sizing:border-box;
|
349 |
box-sizing:border-box;
|
350 |
outline:none<?php echo esc_html( $important ) ?>;
|
351 |
+
font-weight:<?php echo esc_html( $field_weight ) ?>;
|
352 |
+
box-shadow:<?php echo esc_html( ( isset( $remove_box_shadow ) && $remove_box_shadow ) ? 'none' : '0 1px 1px rgba(0, 0, 0, 0.075) inset' )?>;
|
353 |
}
|
354 |
|
355 |
.<?php echo esc_html( $style_class ) ?> input[type=file]::-webkit-file-upload-button{
|
468 |
.<?php echo esc_html( $style_class ) ?> .chosen-container-active .chosen-choices{
|
469 |
background-color:#<?php echo esc_html( $bg_color_active . $important ) ?>;
|
470 |
border-color:#<?php echo esc_html( $border_color_active . $important ) ?>;
|
471 |
+
<?php if ( isset( $remove_box_shadow_active ) && $remove_box_shadow_active ) { ?>
|
472 |
+
box-shadow:none;
|
473 |
+
<?php } else { ?>
|
474 |
box-shadow:0 1px 1px rgba(0, 0, 0, 0.075) inset, 0 0 8px rgba(<?php echo esc_html( FrmStylesHelper::hex2rgb( $border_color_active ) ) ?>, 0.6);
|
475 |
+
<?php } ?>
|
476 |
}
|
477 |
|
478 |
<?php
|
css/frm_admin.css
CHANGED
@@ -2171,8 +2171,8 @@ Responsive Design
|
|
2171 |
display:table-cell !important;
|
2172 |
}
|
2173 |
|
2174 |
-
.wp-list-table
|
2175 |
-
.wp-list-table
|
2176 |
display:none !important;
|
2177 |
}
|
2178 |
|
2171 |
display:table-cell !important;
|
2172 |
}
|
2173 |
|
2174 |
+
#form_entries_page .wp-list-table th.frm_hidden,
|
2175 |
+
#form_entries_page .wp-list-table td.frm_hidden{
|
2176 |
display:none !important;
|
2177 |
}
|
2178 |
|
formidable.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/*
|
3 |
Plugin Name: Formidable
|
4 |
Description: Quickly and easily create drag-and-drop forms
|
5 |
-
Version: 2.0.
|
6 |
Plugin URI: http://formidablepro.com/
|
7 |
Author URI: http://strategy11.com
|
8 |
Author: Strategy11
|
2 |
/*
|
3 |
Plugin Name: Formidable
|
4 |
Description: Quickly and easily create drag-and-drop forms
|
5 |
+
Version: 2.0.20
|
6 |
Plugin URI: http://formidablepro.com/
|
7 |
Author URI: http://strategy11.com
|
8 |
Author: Strategy11
|
js/formidable_admin.js
CHANGED
@@ -1744,6 +1744,32 @@ function frmAdminBuildJS(){
|
|
1744 |
});
|
1745 |
}
|
1746 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1747 |
/* Import/Export page */
|
1748 |
function validateExport(e){
|
1749 |
e.preventDefault();
|
@@ -2287,8 +2313,6 @@ function frmAdminBuildJS(){
|
|
2287 |
|
2288 |
wrapper = target.parents('.accordion-section-content').first();
|
2289 |
|
2290 |
-
// upon changing tabs, we want to uncheck all checkboxes
|
2291 |
-
jQuery('input', wrapper).removeAttr('checked');
|
2292 |
|
2293 |
jQuery('.tabs-panel-active', wrapper).removeClass('tabs-panel-active').addClass('tabs-panel-inactive');
|
2294 |
jQuery('#' + panelId, wrapper).removeClass('tabs-panel-inactive').addClass('tabs-panel-active');
|
@@ -2398,8 +2422,9 @@ function frmAdminBuildJS(){
|
|
2398 |
|
2399 |
// activate addon licenses
|
2400 |
jQuery('.edd_frm_save_license').click(saveAddonLicense);
|
|
|
2401 |
},
|
2402 |
-
|
2403 |
exportInit: function(){
|
2404 |
jQuery(document.getElementById('frm_export_xml')).submit(validateExport);
|
2405 |
jQuery('#frm_export_xml input, #frm_export_xml select').change(removeExportError);
|
1744 |
});
|
1745 |
}
|
1746 |
|
1747 |
+
function fillLicenses(){
|
1748 |
+
var emptyFields = jQuery('.frm_addon_license_key:visible');
|
1749 |
+
if ( emptyFields.length < 1 ){
|
1750 |
+
return false;
|
1751 |
+
}
|
1752 |
+
|
1753 |
+
jQuery.ajax({
|
1754 |
+
type:'POST',url:ajaxurl,dataType:'json',
|
1755 |
+
data:{action:'frm_fill_licenses', nonce:frmGlobal.nonce},
|
1756 |
+
success:function(json){
|
1757 |
+
var i;
|
1758 |
+
var licenses = json.licenses;
|
1759 |
+
for ( i in licenses ) {
|
1760 |
+
if (licenses.hasOwnProperty(i)) {
|
1761 |
+
var input = jQuery('#edd_'+ licenses[i].slug +'_license_key');
|
1762 |
+
if ( typeof input !== null && input.is(':visible') ) {
|
1763 |
+
input.val(licenses[i].key);
|
1764 |
+
jQuery('input[name="edd_'+ licenses[i].slug +'_license_activate"]').click();
|
1765 |
+
}
|
1766 |
+
}
|
1767 |
+
}
|
1768 |
+
}
|
1769 |
+
});
|
1770 |
+
return false;
|
1771 |
+
}
|
1772 |
+
|
1773 |
/* Import/Export page */
|
1774 |
function validateExport(e){
|
1775 |
e.preventDefault();
|
2313 |
|
2314 |
wrapper = target.parents('.accordion-section-content').first();
|
2315 |
|
|
|
|
|
2316 |
|
2317 |
jQuery('.tabs-panel-active', wrapper).removeClass('tabs-panel-active').addClass('tabs-panel-inactive');
|
2318 |
jQuery('#' + panelId, wrapper).removeClass('tabs-panel-inactive').addClass('tabs-panel-active');
|
2422 |
|
2423 |
// activate addon licenses
|
2424 |
jQuery('.edd_frm_save_license').click(saveAddonLicense);
|
2425 |
+
jQuery('.edd_frm_fill_license').click(fillLicenses);
|
2426 |
},
|
2427 |
+
|
2428 |
exportInit: function(){
|
2429 |
jQuery(document.getElementById('frm_export_xml')).submit(validateExport);
|
2430 |
jQuery('#frm_export_xml input, #frm_export_xml select').change(removeExportError);
|
languages/formidable-en_US.po
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
-
"Project-Id-Version: Formidable v2.0.
|
4 |
"Report-Msgid-Bugs-To: \n"
|
5 |
"POT-Creation-Date: 2010-12-20\n"
|
6 |
-
"PO-Revision-Date: 2016-01-
|
7 |
"Last-Translator: \n"
|
8 |
"Language-Team: \n"
|
9 |
"MIME-Version: 1.0\n"
|
@@ -23,6 +23,7 @@ msgstr ""
|
|
23 |
#: classes/controllers/FrmFormsController.php:6
|
24 |
#: classes/controllers/FrmFormsController.php:524
|
25 |
#: classes/controllers/FrmXMLController.php:59
|
|
|
26 |
#: classes/models/FrmSettings.php:78
|
27 |
#: classes/views/frm-forms/list.php:5
|
28 |
#@ formidable
|
@@ -80,42 +81,42 @@ msgstr ""
|
|
80 |
msgid "Settings Saved"
|
81 |
msgstr ""
|
82 |
|
83 |
-
#: classes/helpers/FrmAppHelper.php:
|
84 |
#@ formidable
|
85 |
msgid "View Forms and Templates"
|
86 |
msgstr ""
|
87 |
|
88 |
-
#: classes/helpers/FrmAppHelper.php:
|
89 |
#@ formidable
|
90 |
msgid "Delete Forms and Templates"
|
91 |
msgstr ""
|
92 |
|
93 |
-
#: classes/helpers/FrmAppHelper.php:
|
94 |
#@ formidable
|
95 |
msgid "Access this Settings Page"
|
96 |
msgstr ""
|
97 |
|
98 |
-
#: classes/helpers/FrmAppHelper.php:
|
99 |
#@ formidable
|
100 |
msgid "View Entries from Admin Area"
|
101 |
msgstr ""
|
102 |
|
103 |
-
#: classes/helpers/FrmAppHelper.php:
|
104 |
#@ formidable
|
105 |
msgid "Edit Entries from Admin Area"
|
106 |
msgstr ""
|
107 |
|
108 |
-
#: classes/helpers/FrmAppHelper.php:
|
109 |
#@ formidable
|
110 |
msgid "Delete Entries from Admin Area"
|
111 |
msgstr ""
|
112 |
|
113 |
-
#: classes/helpers/FrmAppHelper.php:
|
114 |
#@ formidable
|
115 |
msgid "View Reports"
|
116 |
msgstr ""
|
117 |
|
118 |
-
#: classes/views/styles/_sample_form.php:
|
119 |
#@ formidable
|
120 |
msgid "Section Heading"
|
121 |
msgstr ""
|
@@ -239,7 +240,7 @@ msgid "Your responses were successfully submitted. Thank you!"
|
|
239 |
msgstr ""
|
240 |
|
241 |
#: classes/models/FrmSettings.php:90
|
242 |
-
#: classes/views/styles/_sample_form.php:
|
243 |
#: pro/classes/views/frmpro-entries/show.php:34
|
244 |
#@ formidable
|
245 |
msgid "Submit"
|
@@ -261,6 +262,7 @@ msgstr ""
|
|
261 |
msgid "Name cannot be blank"
|
262 |
msgstr ""
|
263 |
|
|
|
264 |
#: pro/classes/controllers/FrmProFormsController.php:55
|
265 |
#: pro/classes/controllers/FrmProFormsController.php:267
|
266 |
#@ formidable
|
@@ -282,12 +284,11 @@ msgstr ""
|
|
282 |
msgid "Message"
|
283 |
msgstr ""
|
284 |
|
285 |
-
#: classes/controllers/FrmEntriesController.php:
|
286 |
#: classes/controllers/FrmFormsController.php:684
|
287 |
#: classes/views/frm-entries/form.php:48
|
288 |
#: classes/views/frm-entries/sidebar-shared.php:23
|
289 |
#: pro/classes/helpers/FrmProFieldsHelper.php:2815
|
290 |
-
#: pro/classes/views/displays/where_row.php:7
|
291 |
#: pro/classes/views/xml/map_csv_fields.php:57
|
292 |
#@ formidable
|
293 |
msgid "Entry Key"
|
@@ -381,14 +382,14 @@ msgstr ""
|
|
381 |
msgid "Update"
|
382 |
msgstr ""
|
383 |
|
384 |
-
#: pro/classes/controllers/FrmProEddController.php:
|
385 |
#@ formidable
|
386 |
msgid "or"
|
387 |
msgstr ""
|
388 |
|
389 |
-
#: classes/helpers/FrmAppHelper.php:
|
390 |
#: classes/views/frm-forms/_publish_box.php:75
|
391 |
-
#: pro/classes/controllers/FrmProEddController.php:
|
392 |
#: pro/classes/controllers/FrmProEntriesController.php:1999
|
393 |
#: pro/classes/views/frmpro-entries/sidebar-new.php:14
|
394 |
#: pro/classes/views/frmpro-form-actions/_custom_field_row.php:31
|
@@ -422,6 +423,7 @@ msgstr ""
|
|
422 |
msgid "Form Name"
|
423 |
msgstr ""
|
424 |
|
|
|
425 |
#: classes/views/frm-forms/mb_html_tab.php:35
|
426 |
#@ formidable
|
427 |
msgid "Form Description"
|
@@ -438,7 +440,7 @@ msgstr ""
|
|
438 |
msgid "Field Name"
|
439 |
msgstr ""
|
440 |
|
441 |
-
#: classes/controllers/FrmStylesController.php:
|
442 |
#: classes/views/frm-forms/mb_html_tab.php:9
|
443 |
#@ formidable
|
444 |
msgid "Field Description"
|
@@ -474,7 +476,7 @@ msgstr ""
|
|
474 |
msgid "Display form description"
|
475 |
msgstr ""
|
476 |
|
477 |
-
#: classes/helpers/FrmAppHelper.php:
|
478 |
#: classes/helpers/FrmCSVExportHelper.php:111
|
479 |
#: pro/classes/helpers/FrmProFieldsHelper.php:2835
|
480 |
#: pro/classes/helpers/FrmProFieldsHelper.php:2850
|
@@ -486,9 +488,10 @@ msgstr ""
|
|
486 |
|
487 |
#: classes/controllers/FrmAppController.php:74
|
488 |
#: classes/controllers/FrmEntriesController.php:8
|
489 |
-
#: classes/controllers/FrmEntriesController.php:
|
490 |
#: classes/controllers/FrmFormsController.php:517
|
491 |
#: classes/controllers/FrmXMLController.php:59
|
|
|
492 |
#: classes/views/frm-entries/list.php:3
|
493 |
#: pro/classes/views/frmpro-fields/options-form.php:41
|
494 |
#: pro/classes/views/frmpro-statistics/show.php:67
|
@@ -567,7 +570,7 @@ msgid "Create"
|
|
567 |
msgstr ""
|
568 |
|
569 |
#: classes/controllers/FrmFieldsController.php:322
|
570 |
-
#: classes/helpers/FrmAppHelper.php:
|
571 |
#: classes/views/frm-fields/single-option.php:6
|
572 |
#: classes/views/frm-fields/single-option.php:8
|
573 |
#: pro/classes/views/frmpro-fields/other-option.php:10
|
@@ -641,7 +644,7 @@ msgstr ""
|
|
641 |
msgid "Submit Button"
|
642 |
msgstr ""
|
643 |
|
644 |
-
#: classes/helpers/FrmAppHelper.php:
|
645 |
#@ formidable
|
646 |
msgid "Are you sure you want to do this? Clicking OK will delete all forms, form data, and all other Formidable data. There is no Undo."
|
647 |
msgstr ""
|
@@ -693,12 +696,12 @@ msgstr ""
|
|
693 |
msgid "There was a problem duplicating that entry"
|
694 |
msgstr ""
|
695 |
|
696 |
-
#: classes/controllers/FrmEntriesController.php:
|
697 |
#@ formidable
|
698 |
msgid "Entry was Successfully Destroyed"
|
699 |
msgstr ""
|
700 |
|
701 |
-
#: classes/controllers/FrmEntriesController.php:
|
702 |
#: pro/classes/controllers/FrmProEntriesController.php:385
|
703 |
#@ formidable
|
704 |
msgid "No entries were specified"
|
@@ -709,258 +712,258 @@ msgstr ""
|
|
709 |
msgid "Duplicate Field"
|
710 |
msgstr ""
|
711 |
|
712 |
-
#: classes/helpers/FrmAppHelper.php:
|
713 |
#@ formidable
|
714 |
msgid "English/Western"
|
715 |
msgstr ""
|
716 |
|
717 |
-
#: classes/helpers/FrmAppHelper.php:
|
718 |
#@ formidable
|
719 |
msgid "Afrikaans"
|
720 |
msgstr ""
|
721 |
|
722 |
-
#: classes/helpers/FrmAppHelper.php:
|
723 |
#@ formidable
|
724 |
msgid "Albanian"
|
725 |
msgstr ""
|
726 |
|
727 |
-
#: classes/helpers/FrmAppHelper.php:
|
728 |
#@ formidable
|
729 |
msgid "Arabic"
|
730 |
msgstr ""
|
731 |
|
732 |
-
#: classes/helpers/FrmAppHelper.php:
|
733 |
#@ formidable
|
734 |
msgid "Armenian"
|
735 |
msgstr ""
|
736 |
|
737 |
-
#: classes/helpers/FrmAppHelper.php:
|
738 |
#@ formidable
|
739 |
msgid "Azerbaijani"
|
740 |
msgstr ""
|
741 |
|
742 |
-
#: classes/helpers/FrmAppHelper.php:
|
743 |
#@ formidable
|
744 |
msgid "Basque"
|
745 |
msgstr ""
|
746 |
|
747 |
-
#: classes/helpers/FrmAppHelper.php:
|
748 |
#@ formidable
|
749 |
msgid "Bosnian"
|
750 |
msgstr ""
|
751 |
|
752 |
-
#: classes/helpers/FrmAppHelper.php:
|
753 |
#@ formidable
|
754 |
msgid "Bulgarian"
|
755 |
msgstr ""
|
756 |
|
757 |
-
#: classes/helpers/FrmAppHelper.php:
|
758 |
#@ formidable
|
759 |
msgid "Catalan"
|
760 |
msgstr ""
|
761 |
|
762 |
-
#: classes/helpers/FrmAppHelper.php:
|
763 |
#@ formidable
|
764 |
msgid "Chinese Hong Kong"
|
765 |
msgstr ""
|
766 |
|
767 |
-
#: classes/helpers/FrmAppHelper.php:
|
768 |
#@ formidable
|
769 |
msgid "Chinese Simplified"
|
770 |
msgstr ""
|
771 |
|
772 |
-
#: classes/helpers/FrmAppHelper.php:
|
773 |
#@ formidable
|
774 |
msgid "Chinese Traditional"
|
775 |
msgstr ""
|
776 |
|
777 |
-
#: classes/helpers/FrmAppHelper.php:
|
778 |
#@ formidable
|
779 |
msgid "Croatian"
|
780 |
msgstr ""
|
781 |
|
782 |
-
#: classes/helpers/FrmAppHelper.php:
|
783 |
#@ formidable
|
784 |
msgid "Czech"
|
785 |
msgstr ""
|
786 |
|
787 |
-
#: classes/helpers/FrmAppHelper.php:
|
788 |
#@ formidable
|
789 |
msgid "Danish"
|
790 |
msgstr ""
|
791 |
|
792 |
-
#: classes/helpers/FrmAppHelper.php:
|
793 |
#@ formidable
|
794 |
msgid "Dutch"
|
795 |
msgstr ""
|
796 |
|
797 |
-
#: classes/helpers/FrmAppHelper.php:
|
798 |
#@ formidable
|
799 |
msgid "English/UK"
|
800 |
msgstr ""
|
801 |
|
802 |
-
#: classes/helpers/FrmAppHelper.php:
|
803 |
#@ formidable
|
804 |
msgid "Esperanto"
|
805 |
msgstr ""
|
806 |
|
807 |
-
#: classes/helpers/FrmAppHelper.php:
|
808 |
#@ formidable
|
809 |
msgid "Estonian"
|
810 |
msgstr ""
|
811 |
|
812 |
-
#: classes/helpers/FrmAppHelper.php:
|
813 |
#@ formidable
|
814 |
msgid "Faroese"
|
815 |
msgstr ""
|
816 |
|
817 |
-
#: classes/helpers/FrmAppHelper.php:
|
818 |
#@ formidable
|
819 |
msgid "Farsi/Persian"
|
820 |
msgstr ""
|
821 |
|
822 |
-
#: classes/helpers/FrmAppHelper.php:
|
823 |
#@ formidable
|
824 |
msgid "Finnish"
|
825 |
msgstr ""
|
826 |
|
827 |
-
#: classes/helpers/FrmAppHelper.php:
|
828 |
#@ formidable
|
829 |
msgid "French"
|
830 |
msgstr ""
|
831 |
|
832 |
-
#: classes/helpers/FrmAppHelper.php:
|
833 |
#@ formidable
|
834 |
msgid "French/Swiss"
|
835 |
msgstr ""
|
836 |
|
837 |
-
#: classes/helpers/FrmAppHelper.php:
|
838 |
#@ formidable
|
839 |
msgid "German"
|
840 |
msgstr ""
|
841 |
|
842 |
-
#: classes/helpers/FrmAppHelper.php:
|
843 |
#@ formidable
|
844 |
msgid "Greek"
|
845 |
msgstr ""
|
846 |
|
847 |
-
#: classes/helpers/FrmAppHelper.php:
|
848 |
#@ formidable
|
849 |
msgid "Hebrew"
|
850 |
msgstr ""
|
851 |
|
852 |
-
#: classes/helpers/FrmAppHelper.php:
|
853 |
#@ formidable
|
854 |
msgid "Hungarian"
|
855 |
msgstr ""
|
856 |
|
857 |
-
#: classes/helpers/FrmAppHelper.php:
|
858 |
#@ formidable
|
859 |
msgid "Icelandic"
|
860 |
msgstr ""
|
861 |
|
862 |
-
#: classes/helpers/FrmAppHelper.php:
|
863 |
#@ formidable
|
864 |
msgid "Italian"
|
865 |
msgstr ""
|
866 |
|
867 |
-
#: classes/helpers/FrmAppHelper.php:
|
868 |
#@ formidable
|
869 |
msgid "Japanese"
|
870 |
msgstr ""
|
871 |
|
872 |
-
#: classes/helpers/FrmAppHelper.php:
|
873 |
#@ formidable
|
874 |
msgid "Korean"
|
875 |
msgstr ""
|
876 |
|
877 |
-
#: classes/helpers/FrmAppHelper.php:
|
878 |
#@ formidable
|
879 |
msgid "Latvian"
|
880 |
msgstr ""
|
881 |
|
882 |
-
#: classes/helpers/FrmAppHelper.php:
|
883 |
#@ formidable
|
884 |
msgid "Lithuanian"
|
885 |
msgstr ""
|
886 |
|
887 |
-
#: classes/helpers/FrmAppHelper.php:
|
888 |
#@ formidable
|
889 |
msgid "Malaysian"
|
890 |
msgstr ""
|
891 |
|
892 |
-
#: classes/helpers/FrmAppHelper.php:
|
893 |
#@ formidable
|
894 |
msgid "Norwegian"
|
895 |
msgstr ""
|
896 |
|
897 |
-
|